From 2f8fc48d7520a70afbf7fa76f07820a2493ab2f5 Mon Sep 17 00:00:00 2001 From: ryan-t-christensen Date: Tue, 14 Apr 2026 14:57:17 -0700 Subject: [PATCH 01/29] add gemini vision node --- nodes/src/nodes/llm_vision_gemini/IGlobal.py | 211 ++++++++++++++++++ .../src/nodes/llm_vision_gemini/IInstance.py | 102 +++++++++ nodes/src/nodes/llm_vision_gemini/__init__.py | 38 ++++ .../nodes/llm_vision_gemini/gemini_vision.py | 202 +++++++++++++++++ .../nodes/llm_vision_gemini/requirements.txt | 1 + .../src/nodes/llm_vision_gemini/services.json | 164 ++++++++++++++ 6 files changed, 718 insertions(+) create mode 100644 nodes/src/nodes/llm_vision_gemini/IGlobal.py create mode 100644 nodes/src/nodes/llm_vision_gemini/IInstance.py create mode 100644 nodes/src/nodes/llm_vision_gemini/__init__.py create mode 100644 nodes/src/nodes/llm_vision_gemini/gemini_vision.py create mode 100644 nodes/src/nodes/llm_vision_gemini/requirements.txt create mode 100644 nodes/src/nodes/llm_vision_gemini/services.json diff --git a/nodes/src/nodes/llm_vision_gemini/IGlobal.py b/nodes/src/nodes/llm_vision_gemini/IGlobal.py new file mode 100644 index 000000000..70fb7dcc9 --- /dev/null +++ b/nodes/src/nodes/llm_vision_gemini/IGlobal.py @@ -0,0 +1,211 @@ +# ============================================================================= +# MIT License +# Copyright (c) 2026 Aparavi Software AG +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# ============================================================================= + +import os +import re +import json +import ast +from typing import Optional +from rocketlib import IGlobalBase, OPEN_MODE, warning +from ai.common.config import Config +from ai.common.chat import ChatBase + + +class IGlobal(IGlobalBase): + """Global interface for Gemini Vision node.""" + + _chat: Optional[ChatBase] = None + + VALIDATION_PROMPT = 'Hi' + + def validateConfig(self): + """Validate Gemini configuration at save-time using a minimal API probe.""" + from depends import depends # type: ignore + + requirements = os.path.dirname(os.path.realpath(__file__)) + '/requirements.txt' + depends(requirements) + + try: + from google import genai + + try: + from google.api_core.exceptions import ( + GoogleAPICallError, + ClientError, + BadRequest, + Unauthorized, + Forbidden, + NotFound, + TooManyRequests, + ServiceUnavailable, + InternalServerError, + DeadlineExceeded, + InvalidArgument, + ) + except Exception: + GoogleAPICallError = Exception # type: ignore + ClientError = BadRequest = Unauthorized = Forbidden = NotFound = TooManyRequests = ServiceUnavailable = InternalServerError = DeadlineExceeded = InvalidArgument = Exception # type: ignore + try: + from google.auth.exceptions import GoogleAuthError, RefreshError + except Exception: + GoogleAuthError = RefreshError = Exception # type: ignore + + config = Config.getNodeConfig(self.glb.logicalType, self.glb.connConfig) + apikey = config.get('apikey') + model = config.get('model') + + # Skip probe if key not yet set — UI will prompt for it + if not apikey: + return + + try: + client = genai.Client(api_key=apikey) + client.models.generate_content(model=model, contents=self.VALIDATION_PROMPT) + except (BadRequest, Unauthorized, Forbidden, NotFound, TooManyRequests, ServiceUnavailable, InternalServerError, DeadlineExceeded, InvalidArgument, ClientError, GoogleAPICallError) as e: + try: + prov_code = e.code # type: ignore[attr-defined] + except Exception: + prov_code = None + raw = str(e) + + status = None + emsg = None + code = None + try: + status, emsg, code = self._extract_status_message_code(raw, prov_code) + if isinstance(status, str) and status.upper() == 'INVALID_ARGUMENT' and isinstance(emsg, str) and 'response modalities' in emsg.lower(): + return + except Exception: + pass + + if emsg is None: + m_msg = re.search(r"[\"']message[\"']\s*:\s*[\"']([^\"']+)[\"']", raw) + if m_msg: + emsg = m_msg.group(1) + if status is None: + m_stat = re.search(r'\b(\d{3})\s+([A-Z_]+)\b', raw) + if m_stat: + if code is None: + try: + code = int(m_stat.group(1)) + except Exception: + code = m_stat.group(1) + status = m_stat.group(2) + + display_code = code + if hasattr(display_code, 'value'): + display_code = display_code.value + elif hasattr(display_code, 'name'): + display_code = display_code.name + + message = self._format_error(display_code, status, emsg, raw) + warning(message) + return + except (GoogleAuthError, RefreshError) as e: + warning(str(e)) + return + except Exception as e: + raw = str(e) + status, emsg, code = self._extract_status_message_code(raw, None) + display_code = code + if hasattr(display_code, 'value'): + display_code = display_code.value + elif hasattr(display_code, 'name'): + display_code = display_code.name + message = self._format_error(display_code, status, emsg, raw) + warning(message) + return + + except Exception: + warning('Gemini Vision validation setup error. Please check your configuration.') + + def beginGlobal(self): + """Initialize the global chat instance.""" + if self.IEndpoint.endpoint.openMode == OPEN_MODE.CONFIG: + pass + else: + from depends import depends # type: ignore + + requirements = os.path.dirname(os.path.realpath(__file__)) + '/requirements.txt' + depends(requirements) + + from .gemini_vision import Chat + + bag = self.IEndpoint.endpoint.bag + config = Config.getNodeConfig(self.glb.logicalType, self.glb.connConfig) + self._max_concurrent = config.get('maxConcurrent', 5) + self._chat = Chat(self.glb.logicalType, config, bag) + + def endGlobal(self): + """Clean up the global chat instance.""" + self._chat = None + + def _format_error(self, status_or_code, etype_or_status, emsg, fallback: str) -> str: + parts: list[str] = [] + if status_or_code is not None: + parts.append(f'Error {status_or_code}:') + if etype_or_status: + parts.append(str(etype_or_status)) + if emsg: + if etype_or_status: + parts.append('-') + parts.append(str(emsg)) + message = ' '.join(parts) if parts else fallback + return re.sub(r'\s+', ' ', message).strip() + + def _extract_status_message_code(self, raw: str, prov_code): + status = None + emsg = None + code = None + idx = raw.rfind('{') + if idx != -1: + js = raw[idx:].strip() + data = None + try: + data = json.loads(js) + except Exception: + try: + data = ast.literal_eval(js) + except Exception: + data = None + if isinstance(data, dict): + err = data.get('error') or {} + status = err.get('status') or data.get('status') + emsg = err.get('message') or data.get('message') + code = err.get('code') or data.get('code') or prov_code + + if emsg is None: + m_msg = re.search(r"[\"']message[\"']\s*:\s*[\"']([^\"']+)[\"']", raw) + if m_msg: + emsg = m_msg.group(1) + if status is None or code is None: + m_hdr = re.search(r'\b(\d{3})\s+([A-Z_]+)\b', raw) + if m_hdr: + if code is None: + try: + code = int(m_hdr.group(1)) + except Exception: + code = m_hdr.group(1) + if status is None: + status = m_hdr.group(2) + return status, emsg, code diff --git a/nodes/src/nodes/llm_vision_gemini/IInstance.py b/nodes/src/nodes/llm_vision_gemini/IInstance.py new file mode 100644 index 000000000..d76789f27 --- /dev/null +++ b/nodes/src/nodes/llm_vision_gemini/IInstance.py @@ -0,0 +1,102 @@ +# ============================================================================= +# MIT License +# Copyright (c) 2026 Aparavi Software AG +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# ============================================================================= + +from .IGlobal import IGlobal +from nodes.llm_base import IInstanceGenericLLM +from rocketlib import AVI_ACTION, warning +from ai.common.schema import Doc + + +class IInstance(IInstanceGenericLLM): + """Instance handler for the Gemini Vision node.""" + + IGlobal: IGlobal + + # Raw image data accumulated across AVI_WRITE chunks + image_data: bytearray = None + + # Cached answer text from writeDocuments so writeImage can reuse it without + # a second Gemini call for the same frame. + _cached_answer: str = None + + def writeImage(self, action: int, mimeType: str, buffer: bytes): + """Handle AVI image protocol for streaming image frames.""" + if action == AVI_ACTION.BEGIN: + self.image_data = bytearray() + return self.preventDefault() + elif action == AVI_ACTION.WRITE: + self.image_data += buffer + return self.preventDefault() + elif action == AVI_ACTION.END: + if self._cached_answer is not None: + # writeDocuments already called Gemini for this frame — reuse the result. + self.instance.writeText(self._cached_answer) + self._cached_answer = None + else: + # Only the image lane is connected; call Gemini directly. + from ai.common.schema import Question + import base64 + + question = Question() + image_base64 = base64.b64encode(bytes(self.image_data)).decode('utf-8') + image_data_url = f'data:{mimeType};base64,{image_base64}' + question.addContext(image_data_url) + question.addQuestion(self.IGlobal._chat._prompt) + + answer = self.IGlobal._chat.chat(question) + self.instance.writeText(answer.getText()) + + self.image_data = None + return self.preventDefault() + + def writeDocuments(self, documents: list[Doc]): + """Process incoming image documents inline and emit vision model responses as text documents.""" + from ai.common.schema import Question + + for doc in documents: + if doc.type != 'Image': + warning(f'Gemini Vision: skipping document with unexpected type "{doc.type}"') + continue + if not doc.page_content: + warning('Gemini Vision: skipping Image document with empty content') + continue + + question = Question() + question.addContext(f'data:image/png;base64,{doc.page_content}') + question.addQuestion(self.IGlobal._chat._prompt) + + try: + answer = self.IGlobal._chat.chat(question) + except Exception as e: + warning(f'Gemini Vision: inference failed for chunk {doc.metadata.chunkId}: {e}') + continue + + answer_text = answer.getText() + + # Cache so writeImage can emit the same text without a second API call. + self._cached_answer = answer_text + + self.instance.writeDocuments([Doc(type='Text', page_content=answer_text, metadata=doc.metadata)]) + + # Prevent the original Image docs from flowing downstream. + self.preventDefault() diff --git a/nodes/src/nodes/llm_vision_gemini/__init__.py b/nodes/src/nodes/llm_vision_gemini/__init__.py new file mode 100644 index 000000000..aeee925e3 --- /dev/null +++ b/nodes/src/nodes/llm_vision_gemini/__init__.py @@ -0,0 +1,38 @@ +# ============================================================================= +# MIT License +# Copyright (c) 2026 Aparavi Software AG +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# ============================================================================= + +from .IGlobal import IGlobal +from .IInstance import IInstance + + +def getChat(): + from .gemini_vision import Chat + + return Chat + + +__all__ = [ + 'IGlobal', + 'IInstance', + 'getChat', +] diff --git a/nodes/src/nodes/llm_vision_gemini/gemini_vision.py b/nodes/src/nodes/llm_vision_gemini/gemini_vision.py new file mode 100644 index 000000000..9ffb1d40e --- /dev/null +++ b/nodes/src/nodes/llm_vision_gemini/gemini_vision.py @@ -0,0 +1,202 @@ +# ============================================================================= +# MIT License +# Copyright (c) 2026 Aparavi Software AG +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# ============================================================================= + +import os +import time +import base64 +import threading +from depends import depends # type: ignore +from typing import Any, Dict +from ai.common.schema import Answer, Question +from ai.common.chat import ChatBase +from ai.common.config import Config +from rocketlib import warning + +# Load requirements +requirements = os.path.dirname(os.path.realpath(__file__)) + '/requirements.txt' +depends(requirements) + +from google import genai +from google.genai.types import Part, Content + + +class Chat(ChatBase): + """Google Gemini Vision chat for general-purpose image analysis.""" + + _model: str = '' + _client: genai.Client + _system_prompt: str = '' + _prompt: str = '' + + def __init__(self, provider: str, connConfig: Dict[str, Any], bag: Dict[str, Any]): + """Initialize the Gemini Vision chat instance.""" + super().__init__(provider, connConfig, bag) + config = Config.getNodeConfig(provider, connConfig) + + self._model = config.get('model', 'models/gemini-2.5-flash') + api_key = config.get('apikey') + + self._system_prompt = config.get('vision.systemPrompt') or config.get('systemPrompt') or '' + self._prompt = config.get('vision.prompt') or config.get('prompt') or 'Describe this image in detail.' + + if not api_key: + raise ValueError('Missing Google AI API key. Get one at https://aistudio.google.com/apikey') + if api_key.startswith('sk-'): + raise ValueError('Invalid API key format. This appears to be an OpenAI key. Please provide a Google AI API key.') + if not api_key.startswith('AI'): + raise ValueError('Invalid Gemini API key format. Google AI API keys start with "AI". Please check your API key at https://aistudio.google.com/apikey') + + try: + self._api_key = api_key + self._client = genai.Client(api_key=api_key) + except Exception as e: + raise ValueError(f'Failed to initialize Google AI client: {e!s}') from e + + self._modelTotalTokens = config.get('modelTotalTokens', 1048576) + bag['chat'] = self + + def getTotalTokens(self) -> int: + """Get the total token limit for the current model.""" + return self._modelTotalTokens + + def getTokens(self, value: str) -> int: + """Approximate token count (4 chars per token heuristic).""" + if not value.strip(): + return 0 + return len(value) // 4 + + def _format_user_error(self, error_msg: str) -> str: + """Convert API error messages to user-friendly format.""" + error_lower = error_msg.lower() + if any(p in error_lower for p in ['unauthorized', 'invalid api key', 'authentication', 'api_key']): + return 'Authentication failed. Please check your Google AI API key.' + if any(p in error_lower for p in ['rate limit', 'too many requests', '429', 'quota']): + return 'Rate limit exceeded. Please wait a moment before trying again.' + if any(p in error_lower for p in ['billing', 'insufficient', 'credits']): + return 'API quota exceeded or billing issue. Please check your Google AI account status.' + if any(p in error_lower for p in ['invalid input', 'bad request', '400']): + return 'Invalid input. Please check your image format and prompt.' + if any(p in error_lower for p in ['model not found', 'unavailable', 'not supported']): + return f"Model '{self._model}' is currently unavailable. Please try a different model." + if any(p in error_lower for p in ['timeout', 'timed out']): + return 'Request timed out. Please try again.' + if any(p in error_lower for p in ['content policy', 'safety', 'blocked']): + return 'Image was blocked by safety filters. Please try a different image.' + if any(p in error_lower for p in ['internal server error', '500', '502', '503', '504']): + return 'Google AI vision service is temporarily unavailable. Please try again later.' + return f'Google AI error: {error_msg}' + + def _shouldRetry(self, error: Exception) -> bool: + """Determine if an error is retryable.""" + error_msg = str(error).lower() + retryable = ['timeout', 'timed out', 'connection', '500', '502', '503', '504', 'internal server error', 'service unavailable'] + return any(p in error_msg for p in retryable) + + def chat(self, question: Question) -> Answer: + """Send an image to Gemini Vision and get the response.""" + max_retries = 1 + base_delay = 1.0 + last_error = None + + # Extract image data from context + image_data = None + prompt_text = self._prompt + for context_item in question.context: + if context_item.startswith(('data:image/', 'data:application/')): + image_data = context_item + break + + if question.questions and len(question.questions) > 0: + prompt_text = question.questions[0].text + + if not image_data: + raise ValueError('No image provided. Please connect an image source to this node.') + + # Parse the data URL once outside the retry loop + try: + header, b64_data = image_data.split(',', 1) + mime_type = header.split(':')[1].split(';')[0] + image_bytes = base64.b64decode(b64_data) + except (ValueError, IndexError, base64.binascii.Error) as e: + raise ValueError('Malformed image data URL. Expected format: data:;base64,') from e + + # Build request contents once (deterministic, no need to rebuild per retry) + contents = [ + Content( + role='user', + parts=[ + Part.from_bytes(data=image_bytes, mime_type=mime_type), + Part.from_text(text=prompt_text), + ], + ) + ] + + generate_config: Dict[str, Any] = {} + if self._system_prompt: + generate_config['system_instruction'] = self._system_prompt + + hard_timeout = 30 + + for attempt in range(max_retries + 1): + try: + result = [None] + exc = [None] + + def _invoke(): + try: + # Fresh client per call — isolates the httpx session so concurrent + # calls from multiple threads don't share a non-thread-safe connection + client = genai.Client(api_key=self._api_key) + result[0] = client.models.generate_content( + model=self._model, + contents=contents, + config=generate_config if generate_config else None, + ) + except Exception as e: + exc[0] = e + + t = threading.Thread(target=_invoke, daemon=True) + t.start() + t.join(timeout=hard_timeout) + if t.is_alive(): + warning(f'Gemini Vision: inference timed out after {hard_timeout}s (attempt {attempt + 1}/{max_retries + 1}) — daemon thread still running') + raise TimeoutError(f'Vision inference timed out after {hard_timeout}s (attempt {attempt + 1})') + if exc[0]: + raise exc[0] + + answer = Answer(expectJson=question.expectJson) + answer.setAnswer(result[0].text) + return answer + except Exception as e: + last_error = e + # Don't spin on repeated timeouts — a second 30s wait is enough. + if isinstance(e, TimeoutError) and attempt >= 1: + break + if attempt < max_retries and self._shouldRetry(e): + delay = base_delay * (2**attempt) + time.sleep(delay) + continue + break + + user_friendly_error = self._format_user_error(str(last_error)) + raise Exception(user_friendly_error) from last_error diff --git a/nodes/src/nodes/llm_vision_gemini/requirements.txt b/nodes/src/nodes/llm_vision_gemini/requirements.txt new file mode 100644 index 000000000..1c3d6ee76 --- /dev/null +++ b/nodes/src/nodes/llm_vision_gemini/requirements.txt @@ -0,0 +1 @@ +google-genai>=1.14.0 diff --git a/nodes/src/nodes/llm_vision_gemini/services.json b/nodes/src/nodes/llm_vision_gemini/services.json new file mode 100644 index 000000000..d4c5d4116 --- /dev/null +++ b/nodes/src/nodes/llm_vision_gemini/services.json @@ -0,0 +1,164 @@ +{ + "title": "Gemini Vision", + "protocol": "image_vision_gemini://", + "classType": ["image"], + "capabilities": ["invoke"], + "register": "filter", + "node": "python", + "path": "nodes.llm_vision_gemini", + "prefix": "image_vision_gemini", + "description": ["A component that connects to Google Gemini's vision-capable models for image analysis, ", "OCR, visual understanding, and scene description. Supports Gemini 2.5 and 3.x models ", "with multimodal capabilities. Features robust error handling, automatic image processing, ", "and flexible prompt configuration for a wide range of vision use cases."], + "icon": "gemini.svg", + "documentation": "https://docs.rocketride.org", + "tile": ["Model: ${parameters.image_vision_gemini.profile}"], + "lanes": { + "image": ["text"], + "documents": ["documents"] + }, + "input": [ + { + "lane": "image", + "description": "Image to analyze with Gemini Vision models", + "output": [ + { + "lane": "text", + "description": "Text analysis of the image content" + } + ] + }, + { + "lane": "documents", + "description": "Image documents to analyze with Gemini Vision models", + "output": [ + { + "lane": "documents", + "description": "Text analysis of each image document with original metadata (frame number, timestamp) preserved" + } + ] + } + ], + "preconfig": { + "default": "gemini-2_5-flash", + "profiles": { + "gemini-2_5-flash": { + "title": "Gemini 2.5 Flash - Fast Vision (1M tokens)", + "model": "models/gemini-2.5-flash", + "modelTotalTokens": 1048576, + "apikey": "" + }, + "gemini-2_5-pro": { + "title": "Gemini 2.5 Pro - High Quality Vision (1M tokens)", + "model": "models/gemini-2.5-pro", + "modelTotalTokens": 1048576, + "apikey": "" + }, + "gemini-2_5-flash-lite": { + "title": "Gemini 2.5 Flash Lite - Fastest & Cheapest (1M tokens)", + "model": "models/gemini-2.5-flash-lite", + "modelTotalTokens": 1048576, + "apikey": "" + }, + "gemini-3_1-pro-preview": { + "title": "Gemini 3.1 Pro - Latest Vision (1M tokens)", + "model": "models/gemini-3.1-pro-preview", + "modelTotalTokens": 1048576, + "apikey": "" + }, + "gemini-3_1-flash-image-preview": { + "title": "Gemini 3.1 Flash Image Preview (131k tokens)", + "model": "models/gemini-3.1-flash-image-preview", + "modelTotalTokens": 131072, + "apikey": "" + } + } + }, + "fields": { + "image_vision_gemini.apikey": { + "type": "string", + "title": "API Key", + "description": "Google AI API key. Get one at https://aistudio.google.com/apikey", + "secure": true, + "ui": { + "ui:widget": "ApiKeyWidget" + } + }, + "model": { + "type": "string", + "title": "Model", + "description": "Gemini Vision model" + }, + "modelTotalTokens": { + "type": "number", + "title": "Tokens", + "description": "Maximum context length in tokens" + }, + "vision.systemPrompt": { + "type": "string", + "format": "textarea", + "title": "System Instructions", + "description": "Define the model's role and behavior for image analysis" + }, + "vision.prompt": { + "type": "string", + "format": "textarea", + "title": "Analysis Prompt", + "description": "Describe what you want to analyze or extract from the image" + }, + "image_vision_gemini.gemini-2_5-flash": { + "object": "gemini-2_5-flash", + "properties": ["image_vision_gemini.apikey", "vision.systemPrompt", "vision.prompt"] + }, + "image_vision_gemini.gemini-2_5-pro": { + "object": "gemini-2_5-pro", + "properties": ["image_vision_gemini.apikey", "vision.systemPrompt", "vision.prompt"] + }, + "image_vision_gemini.gemini-2_5-flash-lite": { + "object": "gemini-2_5-flash-lite", + "properties": ["image_vision_gemini.apikey", "vision.systemPrompt", "vision.prompt"] + }, + "image_vision_gemini.gemini-3_1-pro-preview": { + "object": "gemini-3_1-pro-preview", + "properties": ["image_vision_gemini.apikey", "vision.systemPrompt", "vision.prompt"] + }, + "image_vision_gemini.gemini-3_1-flash-image-preview": { + "object": "gemini-3_1-flash-image-preview", + "properties": ["image_vision_gemini.apikey", "vision.systemPrompt", "vision.prompt"] + }, + "image_vision_gemini.profile": { + "title": "Vision Model", + "description": "Select the Gemini vision model to use", + "type": "string", + "default": "gemini-2_5-flash", + "enum": ["*>preconfig.profiles.*.title"], + "conditional": [ + { + "value": "gemini-2_5-flash", + "properties": ["image_vision_gemini.gemini-2_5-flash"] + }, + { + "value": "gemini-2_5-pro", + "properties": ["image_vision_gemini.gemini-2_5-pro"] + }, + { + "value": "gemini-2_5-flash-lite", + "properties": ["image_vision_gemini.gemini-2_5-flash-lite"] + }, + { + "value": "gemini-3_1-pro-preview", + "properties": ["image_vision_gemini.gemini-3_1-pro-preview"] + }, + { + "value": "gemini-3_1-flash-image-preview", + "properties": ["image_vision_gemini.gemini-3_1-flash-image-preview"] + } + ] + } + }, + "shape": [ + { + "section": "Pipe", + "title": "Gemini Vision", + "properties": ["image_vision_gemini.profile"] + } + ] +} From 11cc04039c8b7a08ee02827945ca91728d12adf4 Mon Sep 17 00:00:00 2001 From: ryan-t-christensen Date: Tue, 14 Apr 2026 15:16:23 -0700 Subject: [PATCH 02/29] clear cache to prevent bleed --- nodes/src/nodes/llm_vision_gemini/IInstance.py | 1 + 1 file changed, 1 insertion(+) diff --git a/nodes/src/nodes/llm_vision_gemini/IInstance.py b/nodes/src/nodes/llm_vision_gemini/IInstance.py index d76789f27..274056814 100644 --- a/nodes/src/nodes/llm_vision_gemini/IInstance.py +++ b/nodes/src/nodes/llm_vision_gemini/IInstance.py @@ -43,6 +43,7 @@ def writeImage(self, action: int, mimeType: str, buffer: bytes): """Handle AVI image protocol for streaming image frames.""" if action == AVI_ACTION.BEGIN: self.image_data = bytearray() + self._cached_answer = None return self.preventDefault() elif action == AVI_ACTION.WRITE: self.image_data += buffer From 1cdfb8c810032264905159122ce184f7c7897a7a Mon Sep 17 00:00:00 2001 From: ryan-t-christensen Date: Tue, 14 Apr 2026 18:02:28 -0700 Subject: [PATCH 03/29] error handling + README --- .../src/nodes/llm_vision_gemini/IInstance.py | 10 ++- nodes/src/nodes/llm_vision_gemini/README.md | 67 +++++++++++++++++++ 2 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 nodes/src/nodes/llm_vision_gemini/README.md diff --git a/nodes/src/nodes/llm_vision_gemini/IInstance.py b/nodes/src/nodes/llm_vision_gemini/IInstance.py index 274056814..f5e46bd9c 100644 --- a/nodes/src/nodes/llm_vision_gemini/IInstance.py +++ b/nodes/src/nodes/llm_vision_gemini/IInstance.py @@ -64,8 +64,11 @@ def writeImage(self, action: int, mimeType: str, buffer: bytes): question.addContext(image_data_url) question.addQuestion(self.IGlobal._chat._prompt) - answer = self.IGlobal._chat.chat(question) - self.instance.writeText(answer.getText()) + try: + answer = self.IGlobal._chat.chat(question) + self.instance.writeText(answer.getText()) + except Exception as e: + warning(f'Gemini Vision: inference failed for image frame: {e}') self.image_data = None return self.preventDefault() @@ -89,7 +92,8 @@ def writeDocuments(self, documents: list[Doc]): try: answer = self.IGlobal._chat.chat(question) except Exception as e: - warning(f'Gemini Vision: inference failed for chunk {doc.metadata.chunkId}: {e}') + chunk_id = doc.metadata.chunkId if doc.metadata else 'unknown' + warning(f'Gemini Vision: inference failed for chunk {chunk_id}: {e}') continue answer_text = answer.getText() diff --git a/nodes/src/nodes/llm_vision_gemini/README.md b/nodes/src/nodes/llm_vision_gemini/README.md new file mode 100644 index 000000000..5d34fd247 --- /dev/null +++ b/nodes/src/nodes/llm_vision_gemini/README.md @@ -0,0 +1,67 @@ +--- +title: Gemini Vision +date: 2026-04-14 +sidebar_position: 1 +--- + + + Gemini Vision - RocketRide Documentation + + +## What it does + +Sends images to Google Gemini vision-capable models and returns text analysis. Accepts either a single image or a stream of image documents (e.g. from the frame grabber). Metadata such as frame number and timestamp is preserved on the `documents` output. + +All profiles support a 1M token context window, making Gemini Vision well-suited for high-volume frame analysis pipelines where many images are processed in sequence. + +**Lanes:** + +| Lane in | Lane out | Description | +| ----------- | ----------- | ------------------------------------------------------------------------------ | +| `image` | `text` | Analyze a single image, receive text | +| `documents` | `documents` | Analyze image documents, return text analysis with original metadata preserved | + +## Configuration + +| Field | Description | +| ------------------- | ------------------------------------------------------- | +| Model | Gemini vision model to use (see profiles below) | +| API Key | Google AI API key (see below) | +| System Instructions | Define the model's role and behavior for image analysis | +| Analysis Prompt | Describe what to analyze or extract from the image | + +## API Key + +Get a key at [aistudio.google.com/apikey](https://aistudio.google.com/apikey). Keys are free for development use and grant access to all Gemini models listed below. + +## Profiles + +**Gemini 2.5** + +| Profile | Model | Context | +| ---------------------------- | ------------------------------ | --------- | +| Gemini 2.5 Flash _(default)_ | `models/gemini-2.5-flash` | 1,048,576 | +| Gemini 2.5 Pro | `models/gemini-2.5-pro` | 1,048,576 | +| Gemini 2.5 Flash Lite | `models/gemini-2.5-flash-lite` | 1,048,576 | + +**Gemini 3.1 (Preview)** + +| Profile | Model | Context | +| ------------------------------ | --------------------------------------- | --------- | +| Gemini 3.1 Pro Preview | `models/gemini-3.1-pro-preview` | 1,048,576 | +| Gemini 3.1 Flash Image Preview | `models/gemini-3.1-flash-image-preview` | 131,072 | + +**Custom** — specify any Gemini model ID and token limit directly. + +### Choosing a profile + +- **Flash Lite** — fastest and cheapest; good for high-throughput frame pipelines where speed matters more than detail +- **Flash** — balanced speed and quality; the recommended default for most vision tasks +- **Pro** — highest quality analysis; use when accuracy is critical and latency is acceptable +- **3.1 Pro Preview / Flash Image Preview** — latest generation previews; expect higher capability but potential instability as models are still in preview + +## Upstream docs + +- [Gemini API documentation](https://ai.google.dev/gemini-api/docs) +- [Gemini model overview](https://ai.google.dev/gemini-api/docs/models) +- [Google AI Studio](https://aistudio.google.com/) From d4d84c8b17f54d1af69bafb79f5866ba44247f00 Mon Sep 17 00:00:00 2001 From: ryan-t-christensen Date: Tue, 14 Apr 2026 18:18:56 -0700 Subject: [PATCH 04/29] fix non-symmetric cache + empty frame guard --- .../src/nodes/llm_vision_gemini/IInstance.py | 30 ++++++++++++------- nodes/src/nodes/llm_vision_gemini/README.md | 2 +- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/nodes/src/nodes/llm_vision_gemini/IInstance.py b/nodes/src/nodes/llm_vision_gemini/IInstance.py index f5e46bd9c..aa0f96ec1 100644 --- a/nodes/src/nodes/llm_vision_gemini/IInstance.py +++ b/nodes/src/nodes/llm_vision_gemini/IInstance.py @@ -53,6 +53,8 @@ def writeImage(self, action: int, mimeType: str, buffer: bytes): # writeDocuments already called Gemini for this frame — reuse the result. self.instance.writeText(self._cached_answer) self._cached_answer = None + elif not self.image_data: + warning('Gemini Vision: skipping empty image frame') else: # Only the image lane is connected; call Gemini directly. from ai.common.schema import Question @@ -66,7 +68,9 @@ def writeImage(self, action: int, mimeType: str, buffer: bytes): try: answer = self.IGlobal._chat.chat(question) - self.instance.writeText(answer.getText()) + answer_text = answer.getText() + self._cached_answer = answer_text + self.instance.writeText(answer_text) except Exception as e: warning(f'Gemini Vision: inference failed for image frame: {e}') @@ -89,17 +93,21 @@ def writeDocuments(self, documents: list[Doc]): question.addContext(f'data:image/png;base64,{doc.page_content}') question.addQuestion(self.IGlobal._chat._prompt) - try: - answer = self.IGlobal._chat.chat(question) - except Exception as e: - chunk_id = doc.metadata.chunkId if doc.metadata else 'unknown' - warning(f'Gemini Vision: inference failed for chunk {chunk_id}: {e}') - continue - - answer_text = answer.getText() + if self._cached_answer is not None: + # writeImage already called Gemini for this frame — reuse the result. + answer_text = self._cached_answer + self._cached_answer = None + else: + try: + answer = self.IGlobal._chat.chat(question) + except Exception as e: + chunk_id = doc.metadata.chunkId if doc.metadata else 'unknown' + warning(f'Gemini Vision: inference failed for chunk {chunk_id}: {e}') + continue - # Cache so writeImage can emit the same text without a second API call. - self._cached_answer = answer_text + answer_text = answer.getText() + # Cache so writeImage can reuse it if it fires after us. + self._cached_answer = answer_text self.instance.writeDocuments([Doc(type='Text', page_content=answer_text, metadata=doc.metadata)]) diff --git a/nodes/src/nodes/llm_vision_gemini/README.md b/nodes/src/nodes/llm_vision_gemini/README.md index 5d34fd247..05c1c5a2a 100644 --- a/nodes/src/nodes/llm_vision_gemini/README.md +++ b/nodes/src/nodes/llm_vision_gemini/README.md @@ -12,7 +12,7 @@ sidebar_position: 1 Sends images to Google Gemini vision-capable models and returns text analysis. Accepts either a single image or a stream of image documents (e.g. from the frame grabber). Metadata such as frame number and timestamp is preserved on the `documents` output. -All profiles support a 1M token context window, making Gemini Vision well-suited for high-volume frame analysis pipelines where many images are processed in sequence. +Most profiles support a 1M token context window, making Gemini Vision well-suited for high-volume frame analysis pipelines where many images are processed in sequence. The exception is Gemini 3.1 Flash Image Preview, which has a 131,072 token limit. **Lanes:** From a637a27b0f45cb76865b945b8956507668c8b29f Mon Sep 17 00:00:00 2001 From: ryan-t-christensen Date: Tue, 14 Apr 2026 18:34:58 -0700 Subject: [PATCH 05/29] bug fixes + CR comments --- .../src/nodes/llm_vision_gemini/IInstance.py | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/nodes/src/nodes/llm_vision_gemini/IInstance.py b/nodes/src/nodes/llm_vision_gemini/IInstance.py index aa0f96ec1..06b5dfce9 100644 --- a/nodes/src/nodes/llm_vision_gemini/IInstance.py +++ b/nodes/src/nodes/llm_vision_gemini/IInstance.py @@ -35,17 +35,24 @@ class IInstance(IInstanceGenericLLM): # Raw image data accumulated across AVI_WRITE chunks image_data: bytearray = None - # Cached answer text from writeDocuments so writeImage can reuse it without - # a second Gemini call for the same frame. + # Cached answer text shared between the two lanes to avoid a second Gemini + # call when both lanes are active for the same frame. + # _cache_from_image distinguishes who set it: True = writeImage, False = writeDocuments. + # writeDocuments must only consume the cache when writeImage set it, otherwise a + # cached answer from doc[N] would bleed into doc[N+1] in a multi-doc batch. _cached_answer: str = None + _cache_from_image: bool = False def writeImage(self, action: int, mimeType: str, buffer: bytes): """Handle AVI image protocol for streaming image frames.""" if action == AVI_ACTION.BEGIN: self.image_data = bytearray() self._cached_answer = None + self._cache_from_image = False return self.preventDefault() elif action == AVI_ACTION.WRITE: + if self.image_data is None: + raise RuntimeError('AVI protocol error: WRITE received before BEGIN') self.image_data += buffer return self.preventDefault() elif action == AVI_ACTION.END: @@ -53,6 +60,7 @@ def writeImage(self, action: int, mimeType: str, buffer: bytes): # writeDocuments already called Gemini for this frame — reuse the result. self.instance.writeText(self._cached_answer) self._cached_answer = None + self._cache_from_image = False elif not self.image_data: warning('Gemini Vision: skipping empty image frame') else: @@ -70,12 +78,15 @@ def writeImage(self, action: int, mimeType: str, buffer: bytes): answer = self.IGlobal._chat.chat(question) answer_text = answer.getText() self._cached_answer = answer_text + self._cache_from_image = True self.instance.writeText(answer_text) except Exception as e: warning(f'Gemini Vision: inference failed for image frame: {e}') self.image_data = None return self.preventDefault() + else: + raise RuntimeError(f'AVI protocol error: unknown action {action}') def writeDocuments(self, documents: list[Doc]): """Process incoming image documents inline and emit vision model responses as text documents.""" @@ -93,21 +104,25 @@ def writeDocuments(self, documents: list[Doc]): question.addContext(f'data:image/png;base64,{doc.page_content}') question.addQuestion(self.IGlobal._chat._prompt) - if self._cached_answer is not None: + if self._cached_answer is not None and self._cache_from_image: # writeImage already called Gemini for this frame — reuse the result. answer_text = self._cached_answer self._cached_answer = None + self._cache_from_image = False else: + # Discard any stale doc-sourced cache (multi-doc batch safety). + self._cached_answer = None + self._cache_from_image = False try: answer = self.IGlobal._chat.chat(question) + answer_text = answer.getText() except Exception as e: chunk_id = doc.metadata.chunkId if doc.metadata else 'unknown' warning(f'Gemini Vision: inference failed for chunk {chunk_id}: {e}') continue - - answer_text = answer.getText() # Cache so writeImage can reuse it if it fires after us. self._cached_answer = answer_text + # _cache_from_image stays False — writeImage checks for this. self.instance.writeDocuments([Doc(type='Text', page_content=answer_text, metadata=doc.metadata)]) From 3f95aa1099daf4466526d9efdaf18060ee49b271 Mon Sep 17 00:00:00 2001 From: ryan-t-christensen Date: Tue, 14 Apr 2026 23:25:07 -0700 Subject: [PATCH 06/29] add openai vision node --- nodes/src/nodes/llm_vision_openai/IGlobal.py | 46 ++++ .../src/nodes/llm_vision_openai/IInstance.py | 132 +++++++++++ nodes/src/nodes/llm_vision_openai/README.md | 38 ++++ nodes/src/nodes/llm_vision_openai/__init__.py | 39 ++++ .../nodes/llm_vision_openai/openai_vision.py | 209 ++++++++++++++++++ .../nodes/llm_vision_openai/requirements.txt | 1 + .../src/nodes/llm_vision_openai/services.json | 136 ++++++++++++ 7 files changed, 601 insertions(+) create mode 100644 nodes/src/nodes/llm_vision_openai/IGlobal.py create mode 100644 nodes/src/nodes/llm_vision_openai/IInstance.py create mode 100644 nodes/src/nodes/llm_vision_openai/README.md create mode 100644 nodes/src/nodes/llm_vision_openai/__init__.py create mode 100644 nodes/src/nodes/llm_vision_openai/openai_vision.py create mode 100644 nodes/src/nodes/llm_vision_openai/requirements.txt create mode 100644 nodes/src/nodes/llm_vision_openai/services.json diff --git a/nodes/src/nodes/llm_vision_openai/IGlobal.py b/nodes/src/nodes/llm_vision_openai/IGlobal.py new file mode 100644 index 000000000..5fb244cd0 --- /dev/null +++ b/nodes/src/nodes/llm_vision_openai/IGlobal.py @@ -0,0 +1,46 @@ +# ============================================================================= +# MIT License +# Copyright (c) 2026 Aparavi Software AG +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# ============================================================================= + +import os +from rocketlib import IGlobalBase +from ai.common.chat import ChatBase + + +class IGlobal(IGlobalBase): + """Global lifecycle handler for the OpenAI Vision node.""" + + _chat: ChatBase | None = None + + def beginGlobal(self): + from depends import depends # type: ignore + + requirements = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'requirements.txt') + depends(requirements) + + from .openai_vision import Chat + + bag = self.IEndpoint.endpoint.bag + self._chat = Chat(self.glb.logicalType, self.glb.connConfig, bag) + + def endGlobal(self): + self._chat = None diff --git a/nodes/src/nodes/llm_vision_openai/IInstance.py b/nodes/src/nodes/llm_vision_openai/IInstance.py new file mode 100644 index 000000000..ef750118b --- /dev/null +++ b/nodes/src/nodes/llm_vision_openai/IInstance.py @@ -0,0 +1,132 @@ +# ============================================================================= +# MIT License +# Copyright (c) 2026 Aparavi Software AG +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# ============================================================================= + +from .IGlobal import IGlobal +from nodes.llm_base import IInstanceGenericLLM +from rocketlib import AVI_ACTION, warning +from ai.common.schema import Doc + + +class IInstance(IInstanceGenericLLM): + """Instance handler for the OpenAI Vision node.""" + + IGlobal: IGlobal + + # Raw image data accumulated across AVI_WRITE chunks + image_data: bytearray | None = None + + # Cached answer and its source lane — used to avoid a second API call when both + # image and documents lanes carry the same frame. Cleared at AVI_ACTION.BEGIN so + # a late-arriving writeDocuments from frame N cannot bleed into frame N+1. + _cached_answer: str | None = None + _cache_from_image: bool = False + + def writeImage(self, action: int, mimeType: str, buffer: bytes): + """Handle AVI image protocol for streaming image frames.""" + if action == AVI_ACTION.BEGIN: + self.image_data = bytearray() + self._cached_answer = None + self._cache_from_image = False + return self.preventDefault() + elif action == AVI_ACTION.WRITE: + if self.image_data is None: + raise RuntimeError('AVI protocol error: WRITE received before BEGIN') + self.image_data += buffer + return self.preventDefault() + elif action == AVI_ACTION.END: + if self.image_data is None: + raise RuntimeError('AVI protocol error: END received while there is no data') + + if self._cached_answer is not None: + # writeDocuments already called OpenAI for this frame — reuse the result. + self.instance.writeText(self._cached_answer) + self._cached_answer = None + self._cache_from_image = False + elif not self.image_data: + warning('OpenAI Vision: skipping empty image frame') + else: + # Only the image lane is connected; call OpenAI directly. + from ai.common.schema import Question + import base64 + + question = Question() + image_base64 = base64.b64encode(bytes(self.image_data)).decode('utf-8') + image_data_url = f'data:{mimeType};base64,{image_base64}' + question.addContext(image_data_url) + question.addQuestion(self.IGlobal._chat._prompt) + + try: + answer = self.IGlobal._chat.chat(question) + self._cached_answer = answer.getText() + self._cache_from_image = True + self.instance.writeText(self._cached_answer) + except Exception as e: + warning(f'OpenAI Vision: inference failed on image lane: {e}') + + self.image_data = None + return self.preventDefault() + else: + raise RuntimeError(f'AVI protocol error: Unknown action {action}') + + def writeDocuments(self, documents: list[Doc]): + """Process incoming image documents inline and emit vision model responses as text documents.""" + from ai.common.schema import Question + + for doc in documents: + if doc.type != 'Image': + warning(f'OpenAI Vision: skipping document with unexpected type "{doc.type}"') + continue + if not doc.page_content: + warning('OpenAI Vision: skipping Image document with empty content') + continue + + if self._cached_answer is not None and self._cache_from_image: + # writeImage already called OpenAI for this frame — reuse the result. + answer_text = self._cached_answer + self._cached_answer = None + self._cache_from_image = False + else: + # Discard any stale doc-sourced cache (multi-doc batch safety). + self._cached_answer = None + self._cache_from_image = False + + question = Question() + # All Image doc producers (frame_grabber, thumbnail, embedding_image) normalize to PNG + question.addContext(f'data:image/png;base64,{doc.page_content}') + question.addQuestion(self.IGlobal._chat._prompt) + + try: + answer = self.IGlobal._chat.chat(question) + except Exception as e: + chunk_id = doc.metadata.chunkId if doc.metadata else 'unknown' + warning(f'OpenAI Vision: inference failed for chunk {chunk_id}: {e}') + continue + + answer_text = answer.getText() + self._cached_answer = answer_text + # _cache_from_image stays False — writeImage checks for this. + + self.instance.writeDocuments([Doc(type='Text', page_content=answer_text, metadata=doc.metadata)]) + + # Prevent the original Image docs from flowing downstream. + self.preventDefault() diff --git a/nodes/src/nodes/llm_vision_openai/README.md b/nodes/src/nodes/llm_vision_openai/README.md new file mode 100644 index 000000000..e841cb323 --- /dev/null +++ b/nodes/src/nodes/llm_vision_openai/README.md @@ -0,0 +1,38 @@ +--- +title: OpenAI Vision +date: 2026-04-14 +sidebar_position: 1 +--- + +## What it does + +Sends images to OpenAI vision-capable models and returns text analysis. Accepts either a single image or a stream of image documents (e.g. from the frame grabber). Metadata such as frame number and timestamp is preserved on the `documents` output. + +**Lanes:** + +| Lane in | Lane out | Description | +| ----------- | ----------- | ------------------------------------------------------------------------------ | +| `image` | `text` | Analyze a single image, receive text | +| `documents` | `documents` | Analyze image documents, return text analysis with original metadata preserved | + +## Configuration + +| Field | Description | +| ------------------- | ------------------------------------------------------- | +| Model | Vision model to use (see profiles below) | +| API Key | OpenAI API key (starts with `sk-`) | +| System Instructions | Define the model's role and behavior for image analysis | +| Analysis Prompt | Describe what you want to analyze or extract from image | + +## Profiles + +| Profile | Model | Context | +| ------------------ | ------------- | ------- | +| GPT-4o _(default)_ | `gpt-4o` | 128,000 | +| GPT-4o Mini | `gpt-4o-mini` | 128,000 | +| GPT-4 Turbo | `gpt-4-turbo` | 128,000 | + +## Upstream docs + +- [OpenAI Vision documentation](https://platform.openai.com/docs/guides/vision) +- [OpenAI API keys](https://platform.openai.com/api-keys) diff --git a/nodes/src/nodes/llm_vision_openai/__init__.py b/nodes/src/nodes/llm_vision_openai/__init__.py new file mode 100644 index 000000000..85df8863f --- /dev/null +++ b/nodes/src/nodes/llm_vision_openai/__init__.py @@ -0,0 +1,39 @@ +# ============================================================================= +# MIT License +# Copyright (c) 2026 Aparavi Software AG +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# ============================================================================= + +from .IGlobal import IGlobal +from .IInstance import IInstance + + +def getChat(): + """Get the Chat class from the module.""" + from .openai_vision import Chat + + return Chat + + +__all__ = [ + 'IGlobal', + 'IInstance', + 'getChat', +] diff --git a/nodes/src/nodes/llm_vision_openai/openai_vision.py b/nodes/src/nodes/llm_vision_openai/openai_vision.py new file mode 100644 index 000000000..37ad642ea --- /dev/null +++ b/nodes/src/nodes/llm_vision_openai/openai_vision.py @@ -0,0 +1,209 @@ +# ============================================================================= +# MIT License +# Copyright (c) 2026 Aparavi Software AG +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +# ============================================================================= + +import os +import time +import threading +from depends import depends # type: ignore +from typing import Any, Dict +from ai.common.schema import Answer, Question +from ai.common.chat import ChatBase +from ai.common.config import Config +from rocketlib import warning + +# Load requirements +requirements = os.path.dirname(os.path.realpath(__file__)) + '/requirements.txt' +depends(requirements) + +import openai as openai_sdk + + +class Chat(ChatBase): + """OpenAI Vision chat for general-purpose image analysis.""" + + _model: str = '' + _api_key: str = '' + _system_prompt: str = '' + _prompt: str = '' + + def __init__(self, provider: str, connConfig: Dict[str, Any], bag: Dict[str, Any]): + """Initialize the OpenAI Vision chat instance.""" + super().__init__(provider, connConfig, bag) + config = Config.getNodeConfig(provider, connConfig) + + self._model = config.get('model', 'gpt-4o') + api_key = config.get('apikey') + + self._system_prompt = config.get('vision.systemPrompt') or config.get('systemPrompt') or '' + self._prompt = config.get('vision.prompt') or config.get('prompt') or 'Describe this image in detail.' + + if not api_key: + raise ValueError('Missing OpenAI API key. Get one at https://platform.openai.com/api-keys') + if not api_key.startswith('sk-'): + raise ValueError('Invalid OpenAI API key format. Keys should start with "sk-". Please check your key at https://platform.openai.com/api-keys') + + self._api_key = api_key + self._modelTotalTokens = config.get('modelTotalTokens', 128000) + bag['chat'] = self + + def getTotalTokens(self) -> int: + """Get the total token limit for the current model.""" + return self._modelTotalTokens + + def getTokens(self, value: str) -> int: + """Approximate token count (4 chars per token heuristic).""" + if not value.strip(): + return 0 + return len(value) // 4 + + def _format_user_error(self, error_msg: str) -> str: + """Convert API error messages to user-friendly format.""" + error_lower = error_msg.lower() + if any(p in error_lower for p in ['authentication', 'invalid api key', 'incorrect api key', 'unauthorized']): + return 'Authentication failed. Please check your OpenAI API key.' + if any(p in error_lower for p in ['rate limit', 'too many requests', '429']): + return 'Rate limit exceeded. Please wait a moment before trying again.' + if any(p in error_lower for p in ['quota', 'billing', 'insufficient', 'credit']): + return 'API quota exceeded or billing issue. Please check your OpenAI account status.' + if any(p in error_lower for p in ['invalid request', 'bad request', '400']): + return 'Invalid input. Please check your image format and prompt.' + if any(p in error_lower for p in ['model not found', 'not found', '404']): + return f"Model '{self._model}' not found. Please check the model name." + if any(p in error_lower for p in ['timeout', 'timed out']): + return 'Request timed out. Please try again.' + if any(p in error_lower for p in ['server error', '500', '502', '503', '504']): + return 'OpenAI API is temporarily unavailable. Please try again later.' + return f'OpenAI error: {error_msg}' + + def _shouldRetry(self, error: Exception) -> bool: + """Determine if an error is retryable.""" + # Use typed checks for OpenAI SDK exceptions first — more reliable than string matching + if isinstance(error, openai_sdk.RateLimitError): + return True + if isinstance(error, openai_sdk.APIConnectionError): + return True + error_msg = str(error).lower() + retryable = ['timeout', 'timed out', '500', '502', '503', '504', 'server error'] + return any(p in error_msg for p in retryable) + + def chat(self, question: Question) -> Answer: + """Send an image to OpenAI Vision and get the response.""" + max_retries = 1 + base_delay = 1.0 + last_error = None + + # Extract image data from context + image_data = None + prompt_text = self._prompt + for context_item in question.context: + if context_item.startswith(('data:image/', 'data:application/')): + image_data = context_item + break + + if question.questions and len(question.questions) > 0: + prompt_text = question.questions[0].text + + if not image_data: + raise ValueError('No image provided. Please connect an image source to this node.') + + # Validate the data URL is well-formed before entering the retry loop + try: + _header, _ = image_data.split(',', 1) + _header.split(':')[1].split(';')[0] # ensure mime type segment exists + except (ValueError, IndexError) as e: + raise ValueError('Malformed image data URL. Expected format: data:;base64,') from e + + hard_timeout = 30 + + for attempt in range(max_retries + 1): + try: + result = [None] + exc = [None] + + def _invoke(): + try: + # Fresh client per attempt — avoids exhausting the shared HTTP connection + # pool when daemon threads from prior timed-out attempts are still running + client = openai_sdk.OpenAI(api_key=self._api_key, max_retries=0) + + content = [ + { + 'type': 'image_url', + 'image_url': { + 'url': image_data, + 'detail': 'auto', + }, + }, + {'type': 'text', 'text': prompt_text}, + ] + + messages = [] + if self._system_prompt: + messages.append({'role': 'system', 'content': self._system_prompt}) + messages.append({'role': 'user', 'content': content}) + + result[0] = client.chat.completions.create( + model=self._model, + messages=messages, + ) + except Exception as e: + exc[0] = e + + t = threading.Thread(target=_invoke, daemon=True) + t.start() + t.join(timeout=hard_timeout) + if t.is_alive(): + warning(f'OpenAI Vision: inference timed out after {hard_timeout}s (attempt {attempt + 1}/{max_retries + 1}) — daemon thread still running') + raise TimeoutError(f'Vision inference timed out after {hard_timeout}s (attempt {attempt + 1})') + if exc[0]: + raise exc[0] + + response = result[0] + if not response.choices: + raise ValueError('OpenAI returned an empty response') + text = response.choices[0].message.content or '' + answer = Answer(expectJson=question.expectJson) + answer.setAnswer(text) + return answer + except Exception as e: + last_error = e + # Don't spin on repeated timeouts — a second 30s wait is enough. + if isinstance(e, TimeoutError) and attempt >= 1: + break + if attempt < max_retries and self._shouldRetry(e): + if isinstance(e, openai_sdk.RateLimitError): + # Respect the retry-after header; default to 60s if absent. + retry_after = 60 + try: + retry_after = int(e.response.headers.get('retry-after', 60)) + except Exception: + pass + warning(f'OpenAI Vision: rate limited — waiting {retry_after}s before retry') + time.sleep(retry_after) + else: + time.sleep(base_delay * (2**attempt)) + continue + break + + user_friendly_error = self._format_user_error(str(last_error)) + raise Exception(user_friendly_error) from last_error diff --git a/nodes/src/nodes/llm_vision_openai/requirements.txt b/nodes/src/nodes/llm_vision_openai/requirements.txt new file mode 100644 index 000000000..aa2b70446 --- /dev/null +++ b/nodes/src/nodes/llm_vision_openai/requirements.txt @@ -0,0 +1 @@ +openai>=1.0.0 diff --git a/nodes/src/nodes/llm_vision_openai/services.json b/nodes/src/nodes/llm_vision_openai/services.json new file mode 100644 index 000000000..59159b0a0 --- /dev/null +++ b/nodes/src/nodes/llm_vision_openai/services.json @@ -0,0 +1,136 @@ +{ + "title": "OpenAI Vision", + "protocol": "image_vision_openai://", + "classType": ["image"], + "capabilities": ["invoke"], + "register": "filter", + "node": "python", + "path": "nodes.llm_vision_openai", + "prefix": "image_vision_openai", + "description": ["A component that connects to OpenAI's vision-capable models for image analysis, ", "OCR, visual understanding, and scene description. Supports GPT-4o and GPT-4 Turbo models ", "with multimodal capabilities. Features robust error handling, automatic image processing, ", "and flexible prompt configuration for a wide range of vision use cases."], + "icon": "openai.svg", + "documentation": "https://docs.rocketride.org", + "tile": ["Model: ${parameters.image_vision_openai.profile}"], + "lanes": { + "image": ["text"], + "documents": ["documents"] + }, + "input": [ + { + "lane": "image", + "description": "Image to analyze with OpenAI Vision models", + "output": [ + { + "lane": "text", + "description": "Text analysis of the image content" + } + ] + }, + { + "lane": "documents", + "description": "Image documents to analyze with OpenAI Vision models", + "output": [ + { + "lane": "documents", + "description": "Text analysis of each image document with original metadata (frame number, timestamp) preserved" + } + ] + } + ], + "preconfig": { + "default": "gpt-4o", + "profiles": { + "gpt-4o": { + "title": "GPT-4o - Best Vision Quality (128K tokens)", + "model": "gpt-4o", + "modelTotalTokens": 128000, + "apikey": "" + }, + "gpt-4o-mini": { + "title": "GPT-4o Mini - Fast & Affordable (128K tokens)", + "model": "gpt-4o-mini", + "modelTotalTokens": 128000, + "apikey": "" + }, + "gpt-4-turbo": { + "title": "GPT-4 Turbo - High Quality Vision (128K tokens)", + "model": "gpt-4-turbo", + "modelTotalTokens": 128000, + "apikey": "" + } + } + }, + "fields": { + "image_vision_openai.apikey": { + "type": "string", + "title": "API Key", + "description": "OpenAI API key. Get one at https://platform.openai.com/api-keys", + "secure": true, + "ui": { + "ui:widget": "ApiKeyWidget" + } + }, + "model": { + "type": "string", + "title": "Model", + "description": "OpenAI Vision model" + }, + "modelTotalTokens": { + "type": "number", + "title": "Tokens", + "description": "Maximum context length in tokens" + }, + "vision.systemPrompt": { + "type": "string", + "format": "textarea", + "title": "System Instructions", + "description": "Define the model's role and behavior for image analysis" + }, + "vision.prompt": { + "type": "string", + "format": "textarea", + "title": "Analysis Prompt", + "description": "Describe what you want to analyze or extract from the image" + }, + "image_vision_openai.gpt-4o": { + "object": "gpt-4o", + "properties": ["image_vision_openai.apikey", "vision.systemPrompt", "vision.prompt"] + }, + "image_vision_openai.gpt-4o-mini": { + "object": "gpt-4o-mini", + "properties": ["image_vision_openai.apikey", "vision.systemPrompt", "vision.prompt"] + }, + "image_vision_openai.gpt-4-turbo": { + "object": "gpt-4-turbo", + "properties": ["image_vision_openai.apikey", "vision.systemPrompt", "vision.prompt"] + }, + "image_vision_openai.profile": { + "title": "Vision Model", + "description": "Select the OpenAI vision model to use", + "type": "string", + "default": "gpt-4o", + "enum": ["*>preconfig.profiles.*.title"], + "conditional": [ + { + "value": "gpt-4o", + "properties": ["image_vision_openai.gpt-4o"] + }, + { + "value": "gpt-4o-mini", + "properties": ["image_vision_openai.gpt-4o-mini"] + }, + { + "value": "gpt-4-turbo", + "properties": ["image_vision_openai.gpt-4-turbo"] + } + ] + } + }, + "shape": [ + { + "section": "Pipe", + "title": "OpenAI Vision", + "properties": ["image_vision_openai.profile"] + } + ] +} From 46c87b7aff58e0172ca9ff6249fcf206aff2b3b1 Mon Sep 17 00:00:00 2001 From: ryan-t-christensen Date: Tue, 14 Apr 2026 23:46:29 -0700 Subject: [PATCH 07/29] update README + update models --- nodes/src/nodes/llm_vision_openai/README.md | 12 +-- .../src/nodes/llm_vision_openai/services.json | 78 +++++++++++++------ 2 files changed, 60 insertions(+), 30 deletions(-) diff --git a/nodes/src/nodes/llm_vision_openai/README.md b/nodes/src/nodes/llm_vision_openai/README.md index e841cb323..bf8789056 100644 --- a/nodes/src/nodes/llm_vision_openai/README.md +++ b/nodes/src/nodes/llm_vision_openai/README.md @@ -26,11 +26,13 @@ Sends images to OpenAI vision-capable models and returns text analysis. Accepts ## Profiles -| Profile | Model | Context | -| ------------------ | ------------- | ------- | -| GPT-4o _(default)_ | `gpt-4o` | 128,000 | -| GPT-4o Mini | `gpt-4o-mini` | 128,000 | -| GPT-4 Turbo | `gpt-4-turbo` | 128,000 | +| Profile | Model | Context | +| ------------------- | -------------- | --------- | +| GPT-4.1 _(default)_ | `gpt-4.1` | 1,047,576 | +| GPT-4.1-mini | `gpt-4.1-mini` | 1,047,576 | +| GPT-4.1-nano | `gpt-4.1-nano` | 1,047,576 | +| GPT-4o | `gpt-4o` | 128,000 | +| GPT-4o-mini | `gpt-4o-mini` | 128,000 | ## Upstream docs diff --git a/nodes/src/nodes/llm_vision_openai/services.json b/nodes/src/nodes/llm_vision_openai/services.json index 59159b0a0..9b894a5c3 100644 --- a/nodes/src/nodes/llm_vision_openai/services.json +++ b/nodes/src/nodes/llm_vision_openai/services.json @@ -7,7 +7,7 @@ "node": "python", "path": "nodes.llm_vision_openai", "prefix": "image_vision_openai", - "description": ["A component that connects to OpenAI's vision-capable models for image analysis, ", "OCR, visual understanding, and scene description. Supports GPT-4o and GPT-4 Turbo models ", "with multimodal capabilities. Features robust error handling, automatic image processing, ", "and flexible prompt configuration for a wide range of vision use cases."], + "description": ["A component that connects to OpenAI's vision-capable models for image analysis, ", "OCR, visual understanding, and scene description. Supports GPT-4.1 and GPT-4o model families ", "with multimodal capabilities. Features robust error handling, automatic image processing, ", "and flexible prompt configuration for a wide range of vision use cases."], "icon": "openai.svg", "documentation": "https://docs.rocketride.org", "tile": ["Model: ${parameters.image_vision_openai.profile}"], @@ -38,23 +38,35 @@ } ], "preconfig": { - "default": "gpt-4o", + "default": "openai-4-1", "profiles": { - "gpt-4o": { - "title": "GPT-4o - Best Vision Quality (128K tokens)", - "model": "gpt-4o", - "modelTotalTokens": 128000, + "openai-4-1": { + "title": "GPT-4.1", + "model": "gpt-4.1", + "modelTotalTokens": 1047576, "apikey": "" }, - "gpt-4o-mini": { - "title": "GPT-4o Mini - Fast & Affordable (128K tokens)", - "model": "gpt-4o-mini", + "openai-4-1-mini": { + "title": "GPT-4.1-mini", + "model": "gpt-4.1-mini", + "modelTotalTokens": 1047576, + "apikey": "" + }, + "openai-4-1-nano": { + "title": "GPT-4.1-nano", + "model": "gpt-4.1-nano", + "modelTotalTokens": 1047576, + "apikey": "" + }, + "openai-4o": { + "title": "GPT-4o", + "model": "gpt-4o", "modelTotalTokens": 128000, "apikey": "" }, - "gpt-4-turbo": { - "title": "GPT-4 Turbo - High Quality Vision (128K tokens)", - "model": "gpt-4-turbo", + "openai-4o-mini": { + "title": "GPT-4o-mini", + "model": "gpt-4o-mini", "modelTotalTokens": 128000, "apikey": "" } @@ -92,36 +104,52 @@ "title": "Analysis Prompt", "description": "Describe what you want to analyze or extract from the image" }, - "image_vision_openai.gpt-4o": { - "object": "gpt-4o", + "image_vision_openai.openai-4-1": { + "object": "openai-4-1", "properties": ["image_vision_openai.apikey", "vision.systemPrompt", "vision.prompt"] }, - "image_vision_openai.gpt-4o-mini": { - "object": "gpt-4o-mini", + "image_vision_openai.openai-4-1-mini": { + "object": "openai-4-1-mini", "properties": ["image_vision_openai.apikey", "vision.systemPrompt", "vision.prompt"] }, - "image_vision_openai.gpt-4-turbo": { - "object": "gpt-4-turbo", + "image_vision_openai.openai-4-1-nano": { + "object": "openai-4-1-nano", + "properties": ["image_vision_openai.apikey", "vision.systemPrompt", "vision.prompt"] + }, + "image_vision_openai.openai-4o": { + "object": "openai-4o", + "properties": ["image_vision_openai.apikey", "vision.systemPrompt", "vision.prompt"] + }, + "image_vision_openai.openai-4o-mini": { + "object": "openai-4o-mini", "properties": ["image_vision_openai.apikey", "vision.systemPrompt", "vision.prompt"] }, "image_vision_openai.profile": { "title": "Vision Model", "description": "Select the OpenAI vision model to use", "type": "string", - "default": "gpt-4o", + "default": "openai-4-1", "enum": ["*>preconfig.profiles.*.title"], "conditional": [ { - "value": "gpt-4o", - "properties": ["image_vision_openai.gpt-4o"] + "value": "openai-4-1", + "properties": ["image_vision_openai.openai-4-1"] + }, + { + "value": "openai-4-1-mini", + "properties": ["image_vision_openai.openai-4-1-mini"] + }, + { + "value": "openai-4-1-nano", + "properties": ["image_vision_openai.openai-4-1-nano"] }, { - "value": "gpt-4o-mini", - "properties": ["image_vision_openai.gpt-4o-mini"] + "value": "openai-4o", + "properties": ["image_vision_openai.openai-4o"] }, { - "value": "gpt-4-turbo", - "properties": ["image_vision_openai.gpt-4-turbo"] + "value": "openai-4o-mini", + "properties": ["image_vision_openai.openai-4o-mini"] } ] } From 5459ce069d4875175912417dca50d05c05696b78 Mon Sep 17 00:00:00 2001 From: koushik sreevatsa Date: Thu, 7 May 2026 07:55:03 -0400 Subject: [PATCH 08/29] fix: use chunk reference in _processFullTables to resolve chunkId scoping bug In the second phase of _processFullTables, the code incorrectly used `doc.metadata.chunkId` when initializing a new table entry. `doc` was a stale variable from the outer `for docKey, doc in documents.items()` loop, not the current chunk being processed. Additionally, Doc() was called with invalid constructor params (objectId, chunk) that don't exist on the Pydantic model. Fix mirrors the pattern used in _processFullDocuments: reset page_content on the chunk itself and store it directly, so the subsequent append builds the correct concatenated table content. Resolves #776 --- packages/ai/src/ai/common/store.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/ai/src/ai/common/store.py b/packages/ai/src/ai/common/store.py index 8a1040b70..20601fdb4 100644 --- a/packages/ai/src/ai/common/store.py +++ b/packages/ai/src/ai/common/store.py @@ -182,9 +182,8 @@ def _processFullTables(self, documents: Dict[Tuple[str, int], Doc]) -> Dict[Tupl # If this is the first part of the table if tableKey not in tableDocs: - # Add it to the list - # TODO: Fix this - tableDocs[tableKey] = Doc(objectId=objectId, chunk=doc.metadata.chunkId, score=chunk.score) + chunk.page_content = '' + tableDocs[tableKey] = chunk # Append the text tableDocs[tableKey].page_content += chunk.page_content From 0f268de42fa1ec5739e4e31287a884d0b922ceb8 Mon Sep 17 00:00:00 2001 From: koushik sreevatsa Date: Thu, 7 May 2026 08:06:49 -0400 Subject: [PATCH 09/29] fix: address CodeRabbit review - score assignment and first-chunk aliasing Two follow-up fixes from code review: 1. Line 157: tableDocs[tableKey] = doc.score replaced the Doc object with a raw float, crashing Phase 2 with AttributeError when page_content was accessed. Fixed to tableDocs[tableKey].score = doc.score. 2. Lines 184-189: tableDocs[tableKey] and chunk aliased the same object, so clearing chunk.page_content then appending chunk.page_content accumulated empty string, silently dropping the first chunk's text. Fixed by saving original_content before clearing, restoring it after assignment, and continuing to skip the duplicate append below. --- packages/ai/src/ai/common/store.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/ai/src/ai/common/store.py b/packages/ai/src/ai/common/store.py index 20601fdb4..1f0f997c5 100644 --- a/packages/ai/src/ai/common/store.py +++ b/packages/ai/src/ai/common/store.py @@ -154,7 +154,7 @@ def _processFullTables(self, documents: Dict[Tuple[str, int], Doc]) -> Dict[Tupl # Update the score if this one is higher if doc.score > tableDocs[tableKey].score: - tableDocs[tableKey] = doc.score + tableDocs[tableKey].score = doc.score # If there are no tables, done if not len(tableIds): @@ -182,8 +182,11 @@ def _processFullTables(self, documents: Dict[Tuple[str, int], Doc]) -> Dict[Tupl # If this is the first part of the table if tableKey not in tableDocs: + original_content = chunk.page_content chunk.page_content = '' tableDocs[tableKey] = chunk + tableDocs[tableKey].page_content += original_content + continue # Append the text tableDocs[tableKey].page_content += chunk.page_content From 5f831bb6269281482a09ec15d1d49ca9f3ff395c Mon Sep 17 00:00:00 2001 From: koushik sreevatsa Date: Thu, 7 May 2026 15:06:44 -0400 Subject: [PATCH 10/29] fix: guard against falsy-value traps in psycopg2, chromadb, weaviate mocks Three test mocks mishandled falsy values, causing mock tests to pass while real-service tests would fail: psycopg2: bool is a subclass of int in Python, so isinstance(False, int) returns True. SQL WHERE params like isDeleted=False were incorrectly matched as LIMIT values. Fixed by adding not isinstance(p, bool) guards in _handle_semantic_search and _extract_limit. chromadb: 'if limit and ...' treated limit=0 as falsy, returning all rows instead of zero rows. Fixed with explicit 'limit is not None' check. weaviate: sort key 'distance if distance else 1.0' collapsed 0.0 (exact match, best possible distance) to 1.0, ranking perfect matches last. Fixed with 'distance if distance is not None else 1.0'. Resolves #748 --- nodes/test/mocks/chromadb/__init__.py | 2 +- nodes/test/mocks/psycopg2/__init__.py | 4 ++-- nodes/test/mocks/weaviate/__init__.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/nodes/test/mocks/chromadb/__init__.py b/nodes/test/mocks/chromadb/__init__.py index e3260420f..a6255ee81 100644 --- a/nodes/test/mocks/chromadb/__init__.py +++ b/nodes/test/mocks/chromadb/__init__.py @@ -182,7 +182,7 @@ def get( count += 1 # Apply limit - if limit and len(results['ids']) >= limit: + if limit is not None and len(results['ids']) >= limit: break return results diff --git a/nodes/test/mocks/psycopg2/__init__.py b/nodes/test/mocks/psycopg2/__init__.py index 054d64667..2bc1d874e 100644 --- a/nodes/test/mocks/psycopg2/__init__.py +++ b/nodes/test/mocks/psycopg2/__init__.py @@ -182,7 +182,7 @@ def _handle_semantic_search(self, query: str, params: Tuple): query_vector = p.tolist() elif isinstance(p, (list, tuple)) and len(p) > 3: query_vector = list(p) - elif isinstance(p, int) and p < 1000: + elif isinstance(p, int) and not isinstance(p, bool) and p < 1000: limit = p else: filter_params.append(p) @@ -318,7 +318,7 @@ def _extract_limit(self, query: str, params: Tuple) -> Optional[int]: if 'limit' in query.lower() and params: # Last param is often the limit for p in reversed(params): - if isinstance(p, int) and p < 10000: + if isinstance(p, int) and not isinstance(p, bool) and p < 10000: return p return None diff --git a/nodes/test/mocks/weaviate/__init__.py b/nodes/test/mocks/weaviate/__init__.py index 6c6d44d4e..0662bbc92 100644 --- a/nodes/test/mocks/weaviate/__init__.py +++ b/nodes/test/mocks/weaviate/__init__.py @@ -278,7 +278,7 @@ def near_vector( ) # Sort by distance (lower is better for cosine distance) - results.sort(key=lambda x: x.metadata.distance if x.metadata.distance else 1.0) + results.sort(key=lambda x: x.metadata.distance if x.metadata.distance is not None else 1.0) return QueryResult(objects=results[:limit]) From f0730e195b48005d5103e069f83a7be086f68d12 Mon Sep 17 00:00:00 2001 From: Alexandru Sclearuc Date: Fri, 8 May 2026 18:01:33 +0300 Subject: [PATCH 11/29] fix(client-python): break drain cycle causing RecursionError on disconnect MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary - Fix `RecursionError: maximum recursion depth exceeded` in `_GatheringFuture.cancel` during `/task/service` WebSocket teardown by breaking the cycle between an in-flight message-handler task and the disconnect-drain gather it waits on. - Fix C — `dap_client.request()`'s `ConnectionError` handler now uses fire-and-forget `self._transport.disconnect()` instead of `await self.disconnect()`. Develop's `disconnect()` is sync-returns-`Task`, matching the documented carve-out at `transport_websocket.py:516-517`. - Fix A — `_drain_message_tasks` walks each candidate's `_fut_waiter` chain and excludes tasks that transitively await the drainer itself, so the gather can never close back on itself even if a future caller awaits disconnect from a handler context. ## Type fix ## Testing - [x] Tests added or updated - [x] Tested locally - [ ] `./builder test` passes `packages/client-python/tests/test_drain_cycle_regression.py` adds two regression tests, one pinning each fix: - `test_drain_cycle_does_not_recurse` — builds the smallest task graph that exhibits the cycle (a handler awaiting `transport.disconnect()` while it is itself in `_message_tasks`); fails on pre-fix code via deadlock + recursion, passes after Fix A. - `test_request_does_not_await_self_disconnect_on_connection_error` — asserts `dap_client.request()` does not call `self.disconnect()` on `ConnectionError`; fails pre-fix, passes after Fix C. The pytest teardown after a pre-fix run reproduces the exact `tasks.py:721` recursion as the production trace, confirming the unit test covers the production bug rather than a similar-looking variant. `./builder test` reports one unrelated failure on `test_node_cases[llm_openai:services:test2:openai-4o-mini]` — a live OpenAI call (`avoidMocks: true`, `requires: ['ROCKETRIDE_OPENAI_KEY']`) where the LLM produced no answer for `"What is 5*5?"`. Pre-existing flakiness in the real-API path, unrelated to these changes (transport-layer fixes don't touch LLM provider calls). ## Checklist - [x] Commit messages follow [conventional commits](https://www.conventionalcommits.org/) - [x] No secrets or credentials included - [ ] Wiki updated (if applicable) - [ ] Breaking changes documented (if applicable) ## Linked Issue Fixes #791 --- .../src/rocketride/core/dap_client.py | 8 +- .../rocketride/core/transport_websocket.py | 20 ++- .../tests/test_drain_cycle_regression.py | 134 ++++++++++++++++++ 3 files changed, 159 insertions(+), 3 deletions(-) create mode 100644 packages/client-python/tests/test_drain_cycle_regression.py diff --git a/packages/client-python/src/rocketride/core/dap_client.py b/packages/client-python/src/rocketride/core/dap_client.py index c6e1fc095..769979c78 100644 --- a/packages/client-python/src/rocketride/core/dap_client.py +++ b/packages/client-python/src/rocketride/core/dap_client.py @@ -246,8 +246,12 @@ async def request(self, message: Dict[str, Any], timeout: Optional[float] = None return response except (ConnectionError, ConnectionResetError) as e: - # Connection errors trigger cleanup - await self.disconnect() + # Schedule transport teardown without awaiting it. Awaiting self.disconnect() + # here forms a cycle when request() runs inside a task that is itself a + # member of TransportWebSocket._message_tasks: the drain gather closes back + # on the calling task, and asyncio's cancel propagation recurses on + # _GatheringFuture.cancel until the recursion limit fires. + self._transport.disconnect() self.raise_exception(ConnectionError(f'{e}')) except asyncio.TimeoutError: diff --git a/packages/client-python/src/rocketride/core/transport_websocket.py b/packages/client-python/src/rocketride/core/transport_websocket.py index 8cb12526a..73095db02 100644 --- a/packages/client-python/src/rocketride/core/transport_websocket.py +++ b/packages/client-python/src/rocketride/core/transport_websocket.py @@ -189,8 +189,26 @@ async def _drain_message_tasks(self) -> None: Called during disconnect() after _draining is set, so no new tasks will be added while we wait. Allows in-flight handlers to finish sending their responses before the socket is closed. + + Excludes any task whose await-chain transitively reaches this drain + task itself. Including such a task in the gather would form a cycle + (X awaits us, we await a gather containing X) which asyncio's cancel + propagation recurses on until RecursionError fires. """ - pending = [t for t in self._message_tasks if not t.done()] + me = asyncio.current_task() + + def awaits_me(t: asyncio.Task) -> bool: + seen: set = set() + cur = t + while cur is not None and id(cur) not in seen: + seen.add(id(cur)) + if cur is me: + return True + waiter = getattr(cur, '_fut_waiter', None) + cur = waiter if isinstance(waiter, asyncio.Task) else None + return False + + pending = [t for t in self._message_tasks if not t.done() and not awaits_me(t)] if pending: await asyncio.gather(*pending, return_exceptions=True) diff --git a/packages/client-python/tests/test_drain_cycle_regression.py b/packages/client-python/tests/test_drain_cycle_regression.py new file mode 100644 index 000000000..c7655ca73 --- /dev/null +++ b/packages/client-python/tests/test_drain_cycle_regression.py @@ -0,0 +1,134 @@ +# MIT License +# +# Copyright (c) 2026 Aparavi Software AG +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +"""Regression tests for the disconnect-cycle bug. + +The bug manifests as + RecursionError: maximum recursion depth exceeded +inside _GatheringFuture.cancel during shutdown / cancellation. Root cause is +a cycle in asyncio's await graph formed when a handler awaits the transport +disconnect while it is itself a member of _message_tasks. + +Two complementary regression tests, each pinning a different fix: + +- test_drain_cycle_does_not_recurse: + Builds the smallest task graph that exhibits the cycle. Pinned by Fix A: + `_drain_message_tasks` must filter out tasks whose await-chain reaches + the drainer. + +- test_request_does_not_await_self_disconnect_on_connection_error: + Asserts dap_client.request()'s ConnectionError handler does not await + self.disconnect(). Pinned by Fix C: the line should be the + fire-and-forget self._transport.disconnect() form. + +Both tests are expected to FAIL on current (pre-fix) develop. +""" + +import asyncio +from unittest.mock import AsyncMock, MagicMock + +import pytest + +from rocketride.core.dap_client import DAPClient +from rocketride.core.transport_websocket import TransportWebSocket + + +async def test_drain_cycle_does_not_recurse(): + """A handler awaiting transport.disconnect() must not deadlock or recurse. + + Pre-fix: _drain_message_tasks gathers over _message_tasks without + excluding the task that is awaiting the drainer. The structure + X -> Y -> G -> X forms; cancellation walks it until RecursionError. + + Post-Fix-A: the drain filters X out of `pending`; gather is empty; + Y returns; X resumes; everything completes within milliseconds. + """ + transport = TransportWebSocket() + transport._connected = True + transport._websocket = object() # any truthy placeholder + + async def handler(): + await transport.disconnect() + + X = asyncio.create_task(handler()) + transport._message_tasks.add(X) + X.add_done_callback(transport._on_message_task_done) + + # Poll for completion. Avoid asyncio.wait_for here: when the cycle deadlocks + # the task, wait_for's own cancel-on-timeout walks the same cycle and can + # itself wedge — making the test hang at the harness-level timeout instead + # of failing cleanly. + for _ in range(40): # 40 * 0.05s = 2.0s budget + if X.done(): + # Surface any exception X raised (e.g., RecursionError from the cycle). + X.result() + return + await asyncio.sleep(0.05) + + pytest.fail('drain did not complete within 2s — self-await cycle deadlocked') + + +async def test_request_does_not_await_self_disconnect_on_connection_error(): + """request()'s ConnectionError handler must not await self.disconnect(). + + Pre-fix dap_client.py:250 does `await self.disconnect()` -- this closes + the cycle when request() runs inside a _message_tasks handler. + + Post-Fix-C the line is `self._transport.disconnect()` (fire-and-forget, + relies on develop's sync-returns-Task disconnect). self.disconnect() is + never reached. + """ + client = DAPClient(transport=_make_fake_transport()) + client._authenticated = True + + # Spy on the DAPClient-level disconnect. Pre-fix code awaits this; Fix C + # bypasses it in favour of self._transport.disconnect(). + client.disconnect = AsyncMock(name='DAPClient.disconnect') + + # When request() calls _send, immediately fail the pending future so the + # subsequent `await future` raises ConnectionError, hitting the except + # block under test. + async def fake_send(message): + seq = message['seq'] + fut = client._pending_requests.get(seq) + if fut is not None and not fut.done(): + fut.set_exception(ConnectionError('simulated peer drop')) + + client._send = fake_send + + request = {'command': 'pause', 'type': 'request', 'seq': 42} + + with pytest.raises(ConnectionError): + await client.request(request) + + # Pre-fix: client.disconnect is called. Post-Fix-C: it is not. + client.disconnect.assert_not_called() + + +def _make_fake_transport(): + """Minimal transport mock satisfying DAPClient construction + request().""" + transport = MagicMock(name='FakeTransport') + transport.is_connected = MagicMock(return_value=True) + # develop's transport.disconnect is sync and returns asyncio.Task. + transport.disconnect = MagicMock(return_value=MagicMock(name='FakeDisconnectTask')) + transport.send = AsyncMock() + return transport From e200addff657198b8adcaf9b0703b8ae9cb67a8f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 14 May 2026 20:43:46 +0000 Subject: [PATCH 12/29] chore(deps)(deps): update requests requirement in /nodes/src/nodes Updates the requirements on [requests](https://github.com/psf/requests) to permit the latest version. - [Release notes](https://github.com/psf/requests/releases) - [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md) - [Commits](https://github.com/psf/requests/compare/v2.34.0...v2.34.2) --- updated-dependencies: - dependency-name: requests dependency-version: 2.34.2 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- nodes/src/nodes/tool_github/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nodes/src/nodes/tool_github/requirements.txt b/nodes/src/nodes/tool_github/requirements.txt index cf4e823d1..02fa2ea38 100644 --- a/nodes/src/nodes/tool_github/requirements.txt +++ b/nodes/src/nodes/tool_github/requirements.txt @@ -1 +1 @@ -requests>=2.34.0 +requests>=2.34.2 From 77441938b3f14712d08fca4558fa31933242f329 Mon Sep 17 00:00:00 2001 From: ryan-t-christensen Date: Thu, 14 May 2026 10:37:39 -0700 Subject: [PATCH 13/29] feat(shell-ui): apply saved theme on init to prevent tan loading flash - index.html: inline script sets --rr-bg-default and body background synchronously before React renders, so the page starts dark for users who have a dark preference saved in localStorage (rr:home:theme). - createShellConfig onInit: reads rr:home:theme then rr:theme to apply the user's saved theme instead of always defaulting to rocketride-light, eliminating the tan background during the 1.5s OAuth code-exchange loading window. Co-Authored-By: Claude Sonnet 4.6 (1M context) --- apps/shell-ui/index.html | 1 + apps/shell-ui/src/createShellConfig.ts | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/apps/shell-ui/index.html b/apps/shell-ui/index.html index 1fa219888..a0f716f34 100644 --- a/apps/shell-ui/index.html +++ b/apps/shell-ui/index.html @@ -6,6 +6,7 @@ +
diff --git a/apps/shell-ui/src/createShellConfig.ts b/apps/shell-ui/src/createShellConfig.ts index eaa75b824..226723580 100644 --- a/apps/shell-ui/src/createShellConfig.ts +++ b/apps/shell-ui/src/createShellConfig.ts @@ -110,9 +110,18 @@ export function buildShellConfig(apps: AppManifestEntry[], capabilities: string[ welcomeSubtitle: 'Select an app to get started.', }, - // Apply the default theme on first mount. - // Theme JSON files are served under /shell/themes/ by the shell module. - onInit: () => fetchAndApplyTheme('rocketride-light', '/shell/themes').catch(console.error), + // Apply the user's saved theme on first mount so the loading screen + // background matches their preference instead of always showing light. + // Falls back to rocketride-light if nothing is saved yet. + onInit: () => { + const homeTheme = (() => { try { return localStorage.getItem('rr:home:theme'); } catch { return null; } })(); + const saved = (() => { + if (homeTheme === 'dark') return 'rocketride'; + if (homeTheme === 'light') return 'rocketride-light'; + try { return localStorage.getItem('rr:theme') || 'rocketride-light'; } catch { return 'rocketride-light'; } + })(); + return fetchAndApplyTheme(saved, '/shell/themes').catch(console.error); + }, themeConfig: { options: THEME_OPTIONS, From 599e08b5ec3b2af0eefa9629a1d2da222db5f22d Mon Sep 17 00:00:00 2001 From: Ryan Date: Fri, 15 May 2026 09:40:05 -0700 Subject: [PATCH 14/29] feat(shell-ui): apply saved theme on init to prevent tan loading flash (#878) - index.html: inline script sets --rr-bg-default and body background synchronously before React renders, so the page starts dark for users who have a dark preference saved in localStorage (rr:home:theme). - createShellConfig onInit: reads rr:home:theme then rr:theme to apply the user's saved theme instead of always defaulting to rocketride-light, eliminating the tan background during the 1.5s OAuth code-exchange loading window. Co-authored-by: Claude Sonnet 4.6 (1M context) From c331c4aa489cff15343fef7cfaacb0d7bbaaf9f9 Mon Sep 17 00:00:00 2001 From: Anand Ray Date: Fri, 15 May 2026 09:47:20 -0700 Subject: [PATCH 15/29] chore(deps): pin cryptography==46.0.7 in text_output (#884) Previously unpinned, leaving the resolved version subject to PyPI latest. Three open Dependabot alerts all clear at 46.0.7: - GHSA-r6ph-v2qm-q3c2 (high) subgroup attack on SECT curves - GHSA-p423-j2cm-9vmq (medium) buffer overflow on non-contiguous buffers - GHSA-m959-cc7f-wv43 (low) incomplete DNS name constraint enforcement Exact pin matches the sibling node db_mysql/requirements.txt (also pins ==46.0.7) for reproducible builds and consistent dependency policy across nodes. Future bumps will arrive via Dependabot PRs. --- nodes/src/nodes/text_output/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nodes/src/nodes/text_output/requirements.txt b/nodes/src/nodes/text_output/requirements.txt index 2eefcc1fa..1ef39b0d9 100644 --- a/nodes/src/nodes/text_output/requirements.txt +++ b/nodes/src/nodes/text_output/requirements.txt @@ -1,6 +1,6 @@ # smbprotocol cffi -cryptography +cryptography==46.0.7 pycparser pyspnego smbprotocol From 1649fa2e6ebd94e5a4f20e59d3883b0e68078854 Mon Sep 17 00:00:00 2001 From: Anand Ray Date: Fri, 15 May 2026 09:47:23 -0700 Subject: [PATCH 16/29] chore(deps): patch minimatch ReDoS across all four major lines via overrides (#887) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolves 6 high-severity Dependabot alerts on root pnpm-lock.yaml. (3 additional alerts on packages/shared-ui/pnpm-lock.yaml clear when #886 lands, which deletes that dead sub-lockfile.) Adds four bounded pnpm.overrides entries — one per major — so each transitive caller stays on the API surface it expects, just patched: minimatch@<3.1.4 → >=3.1.4 <4 was 3.1.2, fix 3.1.4* minimatch@5 → >=5.1.8 <6 was 5.1.6, fix 5.1.8 minimatch@9 → >=9.0.7 <10 was 9.0.5, fix 9.0.7 minimatch@10 → >=10.2.3 <11 was 10.1.1, fix 10.2.3 * 3.1.4 covers GHSA-23c5-xmqv-rm74 in the 3.x line (Dependabot only flagged 3.1.3 for GHSA-7r86-cg39-jmmj; the tighter bound pre-empts the second advisory too). Post-install resolves to minimatch@3.1.5, 5.1.9, 9.0.9, 10.2.5. Advisories cleared (all high): GHSA-3ppc-4f35-3m26 minimatch ReDoS: repeated wildcards with non-matching literal in pattern (5.x) GHSA-23c5-xmqv-rm74 minimatch ReDoS: nested *() extglobs generate catastrophically backtracking regex (3.x, 5.x) GHSA-7r86-cg39-jmmj minimatch ReDoS: matchOne() combinatorial backtracking via multiple non-adjacent GLOBSTAR segments (3.x, 5.x, 9.x, 10.x) A single high pin (e.g. minimatch>=10.2.3) was considered and rejected: minimatch had breaking API changes across majors (default vs named exports between 3→5→7); forcing all callers to 10.x risks breaking deps that still rely on 3.x/5.x semantics. The bounded approach matches the existing repo convention (handlebars: >=4.7.9 <5; protobufjs: >=7.5.5 <8). --- package.json | 4 +++ pnpm-lock.yaml | 94 ++++++++++++++++++++++++++------------------------ 2 files changed, 53 insertions(+), 45 deletions(-) diff --git a/package.json b/package.json index 5a4cb99b3..93c24776e 100644 --- a/package.json +++ b/package.json @@ -56,6 +56,10 @@ "glob": ">=11.1.0", "handlebars": ">=4.7.9 <5", "js-yaml": ">=4.1.1", + "minimatch@<3.1.4": ">=3.1.4 <4", + "minimatch@5": ">=5.1.8 <6", + "minimatch@9": ">=9.0.7 <10", + "minimatch@10": ">=10.2.3 <11", "postcss": ">=8.4.31", "protobufjs": ">=7.5.5 <8", "qs": ">=6.14.1" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 93c9ffb59..3a53dc1ef 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,6 +9,10 @@ overrides: glob: '>=11.1.0' handlebars: '>=4.7.9 <5' js-yaml: '>=4.1.1' + minimatch@<3.1.4: '>=3.1.4 <4' + minimatch@5: '>=5.1.8 <6' + minimatch@9: '>=9.0.7 <10' + minimatch@10: '>=10.2.3 <11' postcss: '>=8.4.31' protobufjs: '>=7.5.5 <8' qs: '>=6.14.1' @@ -137,10 +141,10 @@ importers: version: 0.4.15 '@rsbuild/plugin-react': specifier: ^0.4.0 - version: 0.4.15(@rsbuild/core@0.4.15)(@swc/helpers@0.5.18) + version: 0.4.15(@rsbuild/core@0.4.15)(@swc/helpers@0.5.3) '@rsbuild/plugin-type-check': specifier: ^0.4.0 - version: 0.4.15(@rsbuild/core@0.4.15)(@swc/helpers@0.5.18)(typescript@5.9.3) + version: 0.4.15(@rsbuild/core@0.4.15)(@swc/helpers@0.5.3)(typescript@5.9.3) '@tailwindcss/aspect-ratio': specifier: ^0.4.2 version: 0.4.2(tailwindcss@3.4.19) @@ -225,10 +229,10 @@ importers: version: 0.4.15 '@rsbuild/plugin-react': specifier: ^0.4.0 - version: 0.4.15(@rsbuild/core@0.4.15)(@swc/helpers@0.5.3) + version: 0.4.15(@rsbuild/core@0.4.15)(@swc/helpers@0.5.18) '@rsbuild/plugin-type-check': specifier: ^0.4.0 - version: 0.4.15(@rsbuild/core@0.4.15)(@swc/helpers@0.5.3)(typescript@5.9.3) + version: 0.4.15(@rsbuild/core@0.4.15)(@swc/helpers@0.5.18)(typescript@5.9.3) '@tailwindcss/aspect-ratio': specifier: ^0.4.2 version: 0.4.2(tailwindcss@3.4.19) @@ -1443,14 +1447,6 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@isaacs/balanced-match@4.0.1': - resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} - engines: {node: 20 || >=22} - - '@isaacs/brace-expansion@5.0.0': - resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} - engines: {node: 20 || >=22} - '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -3721,6 +3717,10 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + base16@1.0.0: resolution: {integrity: sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==} @@ -3763,6 +3763,10 @@ packages: brace-expansion@2.0.2: resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + brace-expansion@5.0.6: + resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==} + engines: {node: 18 || 20 || >=22} + braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -6333,19 +6337,19 @@ packages: resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} hasBin: true - minimatch@10.1.1: - resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} - engines: {node: 20 || >=22} + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} - minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + minimatch@5.1.9: + resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} engines: {node: '>=10'} - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} engines: {node: '>=16 || 14 >=14.17'} minimist@1.2.8: @@ -9219,7 +9223,7 @@ snapshots: dependencies: '@eslint/object-schema': 2.1.7 debug: 4.4.3(supports-color@8.1.1) - minimatch: 3.1.2 + minimatch: 3.1.5 transitivePeerDependencies: - supports-color @@ -9240,7 +9244,7 @@ snapshots: ignore: 5.3.2 import-fresh: 3.3.1 js-yaml: 4.1.1 - minimatch: 3.1.2 + minimatch: 3.1.5 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color @@ -9303,12 +9307,6 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@isaacs/balanced-match@4.0.1': {} - - '@isaacs/brace-expansion@5.0.0': - dependencies: - '@isaacs/balanced-match': 4.0.1 - '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -11400,7 +11398,7 @@ snapshots: '@typescript-eslint/types': 8.54.0 '@typescript-eslint/visitor-keys': 8.54.0 debug: 4.4.3(supports-color@8.1.1) - minimatch: 9.0.5 + minimatch: 9.0.9 semver: 7.7.3 tinyglobby: 0.2.15 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -11502,7 +11500,7 @@ snapshots: chokidar: 3.6.0 enhanced-resolve: 5.18.4 glob: 11.1.0 - minimatch: 9.0.5 + minimatch: 9.0.9 mocha: 10.8.2 supports-color: 9.4.0 yargs: 17.7.2 @@ -11576,7 +11574,7 @@ snapshots: leven: 3.1.0 markdown-it: 14.1.0 mime: 1.6.0 - minimatch: 3.1.2 + minimatch: 3.1.5 parse-semver: 1.1.1 read: 1.0.7 secretlint: 10.2.2 @@ -11967,6 +11965,8 @@ snapshots: balanced-match@1.0.2: {} + balanced-match@4.0.4: {} + base16@1.0.0: {} base64-js@1.5.1: {} @@ -12006,6 +12006,10 @@ snapshots: dependencies: balanced-match: 1.0.2 + brace-expansion@5.0.6: + dependencies: + balanced-match: 4.0.4 + braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -13055,7 +13059,7 @@ snapshots: estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 + minimatch: 3.1.5 object.entries: 1.1.9 object.fromentries: 2.0.8 object.values: 1.2.1 @@ -13112,7 +13116,7 @@ snapshots: is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 lodash.merge: 4.6.2 - minimatch: 3.1.2 + minimatch: 3.1.5 natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: @@ -13337,7 +13341,7 @@ snapshots: deepmerge: 4.3.1 fs-extra: 10.1.0 memfs: 3.5.3 - minimatch: 3.1.2 + minimatch: 3.1.5 node-abort-controller: 3.1.1 schema-utils: 3.3.0 semver: 7.7.3 @@ -13473,7 +13477,7 @@ snapshots: dependencies: foreground-child: 3.3.1 jackspeak: 4.1.1 - minimatch: 10.1.1 + minimatch: 10.2.5 minipass: 7.1.2 package-json-from-dist: 1.0.1 path-scurry: 2.0.1 @@ -15367,19 +15371,19 @@ snapshots: mini-svg-data-uri@1.4.4: {} - minimatch@10.1.1: + minimatch@10.2.5: dependencies: - '@isaacs/brace-expansion': 5.0.0 + brace-expansion: 5.0.6 - minimatch@3.1.2: + minimatch@3.1.5: dependencies: brace-expansion: 1.1.12 - minimatch@5.1.6: + minimatch@5.1.9: dependencies: brace-expansion: 2.0.2 - minimatch@9.0.5: + minimatch@9.0.9: dependencies: brace-expansion: 2.0.2 @@ -15408,7 +15412,7 @@ snapshots: he: 1.2.0 js-yaml: 4.1.1 log-symbols: 4.1.0 - minimatch: 5.1.6 + minimatch: 5.1.9 ms: 2.1.3 serialize-javascript: 6.0.2 strip-json-comments: 3.1.1 @@ -15502,7 +15506,7 @@ snapshots: chalk: 2.4.2 cross-spawn: 6.0.6 memorystream: 0.3.1 - minimatch: 3.1.2 + minimatch: 3.1.5 pidtree: 0.3.1 read-pkg: 3.0.0 shell-quote: 1.8.3 @@ -17221,7 +17225,7 @@ snapshots: dependencies: '@istanbuljs/schema': 0.1.3 glob: 11.1.0 - minimatch: 3.1.2 + minimatch: 3.1.5 text-table@0.2.0: {} @@ -17297,7 +17301,7 @@ snapshots: chokidar: 3.6.0 is-glob: 4.0.3 memfs: 4.56.10(tslib@2.8.1) - minimatch: 9.0.5 + minimatch: 9.0.9 picocolors: 1.1.1 typescript: 5.9.3 optionalDependencies: From c46f1a9957a7cee20d29c440751f04f3b10b336b Mon Sep 17 00:00:00 2001 From: Anand Ray Date: Fri, 15 May 2026 09:47:38 -0700 Subject: [PATCH 17/29] chore(deps): bump dompurify to 3.4.x in shared-ui, drop dead sub-lockfile (#886) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolves all 16 open Dependabot alerts on dompurify (8 unique GHSAs, all medium severity) ranging in fix versions 3.3.2 → 3.4.0. Changes: - packages/shared-ui/package.json: peerDependency dompurify ~3.2.5 → ~3.4.0 - package.json: add "dompurify": ">=3.4.0" to root pnpm.overrides, matching the existing security-bump convention (cross-spawn, glob, handlebars, js-yaml, postcss, protobufjs, qs). - packages/shared-ui/pnpm-lock.yaml: deleted. This file was a dead artifact — last (and only) touched in the initial commit (81977440), zero references in CI, build scripts, or publish workflows. Its sole effect was duplicating dompurify alerts since Dependabot scans every pnpm-lock.yaml independently. - pnpm-lock.yaml: regenerated. dompurify resolves to 3.4.3 (latest 3.4.x available); no 3.2.x/3.3.x copies remain. Advisories cleared (all medium): GHSA-cj63-jhhr-wcxv GHSA-cjmm-f4jc-qw8r GHSA-h8r8-wccr-v5f2 GHSA-v2wj-7wpq-c8vv GHSA-39q2-94rc-95cp GHSA-crv5-9vww-q3g8 GHSA-h7mw-gpvr-xq4m GHSA-v9jr-rg53-9pgp Call site (packages/shared-ui/src/components/canvas/util/helpers.tsx:228) uses DOMPurify.sanitize(input, { ADD_ATTR: [...] }) — stable across the 3.x line; no API breakage. --- package.json | 1 + packages/shared-ui/package.json | 2 +- packages/shared-ui/pnpm-lock.yaml | 9912 ----------------------------- pnpm-lock.yaml | 11 +- 4 files changed, 8 insertions(+), 9918 deletions(-) delete mode 100644 packages/shared-ui/pnpm-lock.yaml diff --git a/package.json b/package.json index 93c24776e..178af8977 100644 --- a/package.json +++ b/package.json @@ -53,6 +53,7 @@ }, "overrides": { "cross-spawn": ">=6.0.6", + "dompurify": ">=3.4.0 <3.5.0", "glob": ">=11.1.0", "handlebars": ">=4.7.9 <5", "js-yaml": ">=4.1.1", diff --git a/packages/shared-ui/package.json b/packages/shared-ui/package.json index 8b97f5555..a34cd5bcc 100644 --- a/packages/shared-ui/package.json +++ b/packages/shared-ui/package.json @@ -34,7 +34,7 @@ "clsx": "~2.1.1", "d3": "~7.9.0", "dagre": "~0.8.5", - "dompurify": "~3.2.5", + "dompurify": "~3.4.0", "elkjs": "~0.9.3", "fuzzysort": "~3.1.0", "html-react-parser": "~5.2.3", diff --git a/packages/shared-ui/pnpm-lock.yaml b/packages/shared-ui/pnpm-lock.yaml deleted file mode 100644 index 569238c49..000000000 --- a/packages/shared-ui/pnpm-lock.yaml +++ /dev/null @@ -1,9912 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -catalogs: - client: - react: - specifier: ~18.3.1 - version: 18.3.1 - react-dom: - specifier: ~18.3.1 - version: 18.3.1 - -overrides: - glob: '>=11.1.0' - js-yaml: '>=4.1.1' - postcss: '>=8.4.31' - qs: '>=6.14.1' - -importers: - - .: - dependencies: - '@dnd-kit/core': - specifier: ~6.1.0 - version: 6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@dnd-kit/modifiers': - specifier: ~7.0.0 - version: 7.0.0(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) - '@dnd-kit/sortable': - specifier: ~8.0.0 - version: 8.0.0(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) - '@dnd-kit/utilities': - specifier: ~3.2.2 - version: 3.2.2(react@18.3.1) - '@emotion/react': - specifier: ~11.13.0 - version: 11.13.5(@types/react@18.2.79)(react@18.3.1) - '@emotion/styled': - specifier: ~11.13.0 - version: 11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1) - '@fontsource/quicksand': - specifier: ~5.0.18 - version: 5.0.20 - '@fontsource/roboto': - specifier: ~5.0.13 - version: 5.0.15 - '@fontsource/roboto-condensed': - specifier: ~5.0.17 - version: 5.0.18 - '@fontsource/ubuntu-mono': - specifier: ~5.0.20 - version: 5.0.22 - '@mui/icons-material': - specifier: ~5.16.7 - version: 5.16.14(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.2.79)(react@18.3.1) - '@mui/material': - specifier: ~6.1.5 - version: 6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/styles': - specifier: ~5.16.7 - version: 5.16.14(@types/react@18.2.79)(react@18.3.1) - '@mui/x-data-grid': - specifier: ~7.19.0 - version: 7.19.0(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@6.5.0(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/x-date-pickers': - specifier: ~7.18.0 - version: 7.18.0(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@6.5.0(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@rjsf/core': - specifier: ~5.20.1 - version: 5.20.1(@rjsf/utils@5.20.1(react@18.3.1))(react@18.3.1) - '@rjsf/mui': - specifier: ~5.20.1 - version: 5.20.1(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@mui/icons-material@5.16.14(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@rjsf/core@5.20.1(@rjsf/utils@5.20.1(react@18.3.1))(react@18.3.1))(@rjsf/utils@5.20.1(react@18.3.1))(react@18.3.1) - '@rjsf/utils': - specifier: ~5.20.1 - version: 5.20.1(react@18.3.1) - '@rjsf/validator-ajv8': - specifier: ~5.20.1 - version: 5.20.1(@rjsf/utils@5.20.1(react@18.3.1)) - '@xyflow/react': - specifier: ~12.3.4 - version: 12.3.6(@types/react@18.2.79)(immer@9.0.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - clsx: - specifier: ~2.1.1 - version: 2.1.1 - d3: - specifier: ~7.9.0 - version: 7.9.0 - dagre: - specifier: ~0.8.5 - version: 0.8.5 - dompurify: - specifier: ~3.2.5 - version: 3.2.7 - fuzzysort: - specifier: ~3.1.0 - version: 3.1.0 - html-react-parser: - specifier: ~5.2.3 - version: 5.2.7(@types/react@18.2.79)(react@18.3.1) - i18next: - specifier: ~23.11.3 - version: 23.11.5 - immer: - specifier: ~9.0.6 - version: 9.0.21 - is-hotkey: - specifier: ~0.2.0 - version: 0.2.0 - lodash: - specifier: ~4.17.21 - version: 4.17.21 - markdown-to-jsx: - specifier: ~7.7.16 - version: 7.7.16(react@18.3.1) - moment: - specifier: ~2.30.1 - version: 2.30.1 - posthog-js: - specifier: ~1.274.1 - version: 1.274.3 - react: - specifier: catalog:client - version: 18.3.1 - react-device-detect: - specifier: ~2.2.3 - version: 2.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-dom: - specifier: catalog:client - version: 18.3.1(react@18.3.1) - react-i18next: - specifier: ~14.1.1 - version: 14.1.3(i18next@23.11.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-json-view: - specifier: ~1.21.3 - version: 1.21.3(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-router-dom: - specifier: ~6.26.1 - version: 6.26.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-virtualized-auto-sizer: - specifier: ~1.0.24 - version: 1.0.26(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-window: - specifier: ~1.8.10 - version: 1.8.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - devDependencies: - '@chromatic-com/storybook': - specifier: ^1.7.0 - version: 1.9.0(react@18.3.1) - '@eslint/js': - specifier: ~9.9.0 - version: 9.9.1 - '@rollup/plugin-commonjs': - specifier: ~28.0.6 - version: 28.0.8(rollup@4.50.2) - '@rollup/plugin-node-resolve': - specifier: ~16.0.1 - version: 16.0.3(rollup@4.50.2) - '@rollup/plugin-replace': - specifier: ~6.0.2 - version: 6.0.2(rollup@4.50.2) - '@rollup/plugin-terser': - specifier: ~0.4.4 - version: 0.4.4(rollup@4.50.2) - '@rollup/plugin-typescript': - specifier: ~12.1.4 - version: 12.1.4(rollup@4.50.2)(tslib@2.8.1)(typescript@5.9.3) - '@rsbuild/core': - specifier: 1.1.0 - version: 1.1.0 - '@rsbuild/plugin-react': - specifier: 1.0.7 - version: 1.0.7(@rsbuild/core@1.1.0) - '@rsbuild/plugin-sass': - specifier: 1.1.0 - version: 1.1.0(@rsbuild/core@1.1.0) - '@rslib/core': - specifier: ~0.13.3 - version: 0.13.3(typescript@5.9.3) - '@rspack/binding-darwin-arm64': - specifier: 1.1.8 - version: 1.1.8 - '@rspack/binding-darwin-x64': - specifier: 1.1.8 - version: 1.1.8 - '@rspack/binding-win32-arm64-msvc': - specifier: 1.1.8 - version: 1.1.8 - '@rspack/binding-win32-x64-msvc': - specifier: 1.1.8 - version: 1.1.8 - '@storybook/addon-essentials': - specifier: ~8.6.15 - version: 8.6.15(@types/react@18.2.79)(storybook@8.6.15(prettier@3.3.3)) - '@storybook/addon-interactions': - specifier: ~8.6.15 - version: 8.6.15(storybook@8.6.15(prettier@3.3.3)) - '@storybook/addon-links': - specifier: ~8.6.15 - version: 8.6.15(react@18.3.1)(storybook@8.6.15(prettier@3.3.3)) - '@storybook/addon-onboarding': - specifier: ~8.6.15 - version: 8.6.15(storybook@8.6.15(prettier@3.3.3)) - '@storybook/blocks': - specifier: ~8.6.15 - version: 8.6.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.15(prettier@3.3.3)) - '@storybook/react': - specifier: ~8.6.15 - version: 8.6.15(@storybook/test@8.6.15(storybook@8.6.15(prettier@3.3.3)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.15(prettier@3.3.3))(typescript@5.9.3) - '@storybook/react-vite': - specifier: ~8.6.15 - version: 8.6.15(@storybook/test@8.6.15(storybook@8.6.15(prettier@3.3.3)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.50.2)(storybook@8.6.15(prettier@3.3.3))(typescript@5.9.3)(vite@6.4.1(@types/node@24.9.0)(jiti@2.6.1)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)) - '@storybook/test': - specifier: ~8.6.15 - version: 8.6.15(storybook@8.6.15(prettier@3.3.3)) - '@types/react': - specifier: ~18.2.21 - version: 18.2.79 - '@types/react-dom': - specifier: ~18.2.7 - version: 18.2.25 - eslint: - specifier: ~9.9.0 - version: 9.9.1(jiti@2.6.1) - eslint-config-prettier: - specifier: ~9.1.0 - version: 9.1.2(eslint@9.9.1(jiti@2.6.1)) - eslint-plugin-prettier: - specifier: ~5.2.1 - version: 5.2.6(@types/eslint@9.6.1)(eslint-config-prettier@9.1.2(eslint@9.9.1(jiti@2.6.1)))(eslint@9.9.1(jiti@2.6.1))(prettier@3.3.3) - eslint-plugin-react: - specifier: ~7.35.0 - version: 7.35.2(eslint@9.9.1(jiti@2.6.1)) - eslint-plugin-storybook: - specifier: ~0.8.0 - version: 0.8.0(eslint@9.9.1(jiti@2.6.1))(typescript@5.9.3) - globals: - specifier: ~15.9.0 - version: 15.9.0 - prettier: - specifier: ~3.3.3 - version: 3.3.3 - rollup: - specifier: ~4.50.2 - version: 4.50.2 - rollup-plugin-dts: - specifier: ~6.2.3 - version: 6.2.3(rollup@4.50.2)(typescript@5.9.3) - rollup-plugin-peer-deps-external: - specifier: ~2.2.4 - version: 2.2.4(rollup@4.50.2) - rollup-plugin-postcss: - specifier: ~4.0.2 - version: 4.0.2(postcss@8.5.6) - run-script-os: - specifier: ^1.1.6 - version: 1.1.6 - storybook: - specifier: ~8.6.15 - version: 8.6.15(prettier@3.3.3) - storybook-react-rsbuild: - specifier: ~1.0.3 - version: 1.0.3(@rsbuild/core@1.1.0)(@rspack/core@1.5.8(@swc/helpers@0.5.17))(@storybook/test@8.6.15(storybook@8.6.15(prettier@3.3.3)))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.50.2)(storybook@8.6.15(prettier@3.3.3))(typescript@5.9.3)(webpack@5.102.1(esbuild@0.25.11)) - typescript: - specifier: ^5.6.3 - version: 5.9.3 - typescript-eslint: - specifier: ~8.11.0 - version: 8.11.0(eslint@9.9.1(jiti@2.6.1))(typescript@5.9.3) - -packages: - - '@adobe/css-tools@4.4.4': - resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} - - '@ast-grep/napi-darwin-arm64@0.37.0': - resolution: {integrity: sha512-QAiIiaAbLvMEg/yBbyKn+p1gX2/FuaC0SMf7D7capm/oG4xGMzdeaQIcSosF4TCxxV+hIH4Bz9e4/u7w6Bnk3Q==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - '@ast-grep/napi-darwin-x64@0.37.0': - resolution: {integrity: sha512-zvcvdgekd4ySV3zUbUp8HF5nk5zqwiMXTuVzTUdl/w08O7JjM6XPOIVT+d2o/MqwM9rsXdzdergY5oY2RdhSPA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - '@ast-grep/napi-linux-arm64-gnu@0.37.0': - resolution: {integrity: sha512-L7Sj0lXy8X+BqSMgr1LB8cCoWk0rericdeu+dC8/c8zpsav5Oo2IQKY1PmiZ7H8IHoFBbURLf8iklY9wsD+cyA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@ast-grep/napi-linux-arm64-musl@0.37.0': - resolution: {integrity: sha512-LF9sAvYy6es/OdyJDO3RwkX3I82Vkfsng1sqUBcoWC1jVb1wX5YVzHtpQox9JrEhGl+bNp7FYxB4Qba9OdA5GA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@ast-grep/napi-linux-x64-gnu@0.37.0': - resolution: {integrity: sha512-TViz5/klqre6aSmJzswEIjApnGjJzstG/SE8VDWsrftMBMYt2PTu3MeluZVwzSqDao8doT/P+6U11dU05UOgxw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@ast-grep/napi-linux-x64-musl@0.37.0': - resolution: {integrity: sha512-/BcCH33S9E3ovOAEoxYngUNXgb+JLg991sdyiNP2bSoYd30a9RHrG7CYwW6fMgua3ijQ474eV6cq9yZO1bCpXg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@ast-grep/napi-win32-arm64-msvc@0.37.0': - resolution: {integrity: sha512-TjQA4cFoIEW2bgjLkaL9yqT4XWuuLa5MCNd0VCDhGRDMNQ9+rhwi9eLOWRaap3xzT7g+nlbcEHL3AkVCD2+b3A==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@ast-grep/napi-win32-ia32-msvc@0.37.0': - resolution: {integrity: sha512-uNmVka8fJCdYsyOlF9aZqQMLTatEYBynjChVTzUfFMDfmZ0bihs/YTqJVbkSm8TZM7CUX82apvn50z/dX5iWRA==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - - '@ast-grep/napi-win32-x64-msvc@0.37.0': - resolution: {integrity: sha512-vCiFOT3hSCQuHHfZ933GAwnPzmL0G04JxQEsBRfqONywyT8bSdDc/ECpAfr3S9VcS4JZ9/F6tkePKW/Om2Dq2g==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - - '@ast-grep/napi@0.37.0': - resolution: {integrity: sha512-Hb4o6h1Pf6yRUAX07DR4JVY7dmQw+RVQMW5/m55GoiAT/VRoKCWBtIUPPOnqDVhbx1Cjfil9b6EDrgJsUAujEQ==} - engines: {node: '>= 10'} - - '@babel/code-frame@7.27.1': - resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@7.28.4': - resolution: {integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.28.4': - resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.28.3': - resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.27.2': - resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-globals@7.28.0': - resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.27.1': - resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.28.3': - resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-string-parser@7.27.1': - resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@7.27.1': - resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@7.27.1': - resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.28.4': - resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.28.4': - resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/runtime@7.28.4': - resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} - engines: {node: '>=6.9.0'} - - '@babel/template@7.27.2': - resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.28.4': - resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.28.4': - resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} - engines: {node: '>=6.9.0'} - - '@bufbuild/protobuf@2.9.0': - resolution: {integrity: sha512-rnJenoStJ8nvmt9Gzye8nkYd6V22xUAnu4086ER7h1zJ508vStko4pMvDeQ446ilDTFpV5wnoc5YS7XvMwwMqA==} - - '@chromatic-com/storybook@1.9.0': - resolution: {integrity: sha512-vYQ+TcfktEE3GHnLZXHCzXF/sN9dw+KivH8a5cmPyd9YtQs7fZtHrEgsIjWpYycXiweKMo1Lm1RZsjxk8DH3rA==} - engines: {node: '>=16.0.0', yarn: '>=1.22.18'} - - '@dnd-kit/accessibility@3.1.1': - resolution: {integrity: sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw==} - peerDependencies: - react: '>=16.8.0' - - '@dnd-kit/core@6.1.0': - resolution: {integrity: sha512-J3cQBClB4TVxwGo3KEjssGEXNJqGVWx17aRTZ1ob0FliR5IjYgTxl5YJbKTzA6IzrtelotH19v6y7uoIRUZPSg==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@dnd-kit/modifiers@7.0.0': - resolution: {integrity: sha512-BG/ETy3eBjFap7+zIti53f0PCLGDzNXyTmn6fSdrudORf+OH04MxrW4p5+mPu4mgMk9kM41iYONjc3DOUWTcfg==} - peerDependencies: - '@dnd-kit/core': ^6.1.0 - react: '>=16.8.0' - - '@dnd-kit/sortable@8.0.0': - resolution: {integrity: sha512-U3jk5ebVXe1Lr7c2wU7SBZjcWdQP+j7peHJfCspnA81enlu88Mgd7CC8Q+pub9ubP7eKVETzJW+IBAhsqbSu/g==} - peerDependencies: - '@dnd-kit/core': ^6.1.0 - react: '>=16.8.0' - - '@dnd-kit/utilities@3.2.2': - resolution: {integrity: sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==} - peerDependencies: - react: '>=16.8.0' - - '@emnapi/core@1.5.0': - resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==} - - '@emnapi/runtime@1.5.0': - resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} - - '@emnapi/wasi-threads@1.1.0': - resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} - - '@emotion/babel-plugin@11.13.5': - resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} - - '@emotion/cache@11.14.0': - resolution: {integrity: sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==} - - '@emotion/hash@0.9.2': - resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} - - '@emotion/is-prop-valid@1.4.0': - resolution: {integrity: sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw==} - - '@emotion/memoize@0.9.0': - resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} - - '@emotion/react@11.13.5': - resolution: {integrity: sha512-6zeCUxUH+EPF1s+YF/2hPVODeV/7V07YU5x+2tfuRL8MdW6rv5vb2+CBEGTGwBdux0OIERcOS+RzxeK80k2DsQ==} - peerDependencies: - '@types/react': '*' - react: '>=16.8.0' - peerDependenciesMeta: - '@types/react': - optional: true - - '@emotion/serialize@1.3.3': - resolution: {integrity: sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==} - - '@emotion/sheet@1.4.0': - resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} - - '@emotion/styled@11.13.5': - resolution: {integrity: sha512-gnOQ+nGLPvDXgIx119JqGalys64lhMdnNQA9TMxhDA4K0Hq5+++OE20Zs5GxiCV9r814xQ2K5WmtofSpHVW6BQ==} - peerDependencies: - '@emotion/react': ^11.0.0-rc.0 - '@types/react': '*' - react: '>=16.8.0' - peerDependenciesMeta: - '@types/react': - optional: true - - '@emotion/unitless@0.10.0': - resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} - - '@emotion/use-insertion-effect-with-fallbacks@1.2.0': - resolution: {integrity: sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==} - peerDependencies: - react: '>=16.8.0' - - '@emotion/utils@1.4.2': - resolution: {integrity: sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==} - - '@emotion/weak-memoize@0.4.0': - resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} - - '@esbuild/aix-ppc64@0.25.11': - resolution: {integrity: sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.25.11': - resolution: {integrity: sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.25.11': - resolution: {integrity: sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.25.11': - resolution: {integrity: sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.25.11': - resolution: {integrity: sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.25.11': - resolution: {integrity: sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.25.11': - resolution: {integrity: sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.25.11': - resolution: {integrity: sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.25.11': - resolution: {integrity: sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.25.11': - resolution: {integrity: sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.25.11': - resolution: {integrity: sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.25.11': - resolution: {integrity: sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.25.11': - resolution: {integrity: sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.25.11': - resolution: {integrity: sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.25.11': - resolution: {integrity: sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.25.11': - resolution: {integrity: sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.25.11': - resolution: {integrity: sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-arm64@0.25.11': - resolution: {integrity: sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.25.11': - resolution: {integrity: sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.25.11': - resolution: {integrity: sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.25.11': - resolution: {integrity: sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openharmony-arm64@0.25.11': - resolution: {integrity: sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - - '@esbuild/sunos-x64@0.25.11': - resolution: {integrity: sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.25.11': - resolution: {integrity: sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.25.11': - resolution: {integrity: sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.25.11': - resolution: {integrity: sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@eslint-community/eslint-utils@4.9.0': - resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - - '@eslint-community/regexpp@4.12.1': - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/config-array@0.18.0': - resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/eslintrc@3.3.1': - resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/js@9.9.1': - resolution: {integrity: sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/object-schema@2.1.7': - resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@fontsource/quicksand@5.0.20': - resolution: {integrity: sha512-IVNXvnpoJ8AM3vOhlJeRfqYikN+SPicnsTm9mCI/RkLRGti4sdSzkWjrbHsEnr9xkaQ6NSCK+6UhcZySxxPDUw==} - - '@fontsource/roboto-condensed@5.0.18': - resolution: {integrity: sha512-ap8WX8AU18meY0m2rloGYFwILPOd2mzKl3B5Bx53hi651Tvo5/6lDHpS3gjnvhpwK0rBqVKzRcFP7SbK9NZvLA==} - - '@fontsource/roboto@5.0.15': - resolution: {integrity: sha512-352XiID9jfwmYaHpdmS3ocGJi3PA+vOm4HzJIRfSyPEyLP6dZN8iiEKUbdAfB5YXQO3YxO2KZpR+R28q2zMiYw==} - - '@fontsource/ubuntu-mono@5.0.22': - resolution: {integrity: sha512-PslhVVnou8VN9f4K4fIy6ot7fdz2iffP17UcYdPhMttlsaL9a3tE1CWifBKdHm2K0QAHezGlFozWt97h48lJ6A==} - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - '@humanwhocodes/retry@0.3.1': - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} - engines: {node: '>=18.18'} - - '@isaacs/balanced-match@4.0.1': - resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} - engines: {node: 20 || >=22} - - '@isaacs/brace-expansion@5.0.0': - resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} - engines: {node: 20 || >=22} - - '@joshwooding/vite-plugin-react-docgen-typescript@0.5.0': - resolution: {integrity: sha512-qYDdL7fPwLRI+bJNurVcis+tNgJmvWjH4YTBGXTA8xMuxFrnAz6E5o35iyzyKbq5J5Lr8mJGfrR5GXl+WGwhgQ==} - peerDependencies: - typescript: '>= 4.3.x' - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 - peerDependenciesMeta: - typescript: - optional: true - - '@jridgewell/gen-mapping@0.3.13': - resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} - - '@jridgewell/remapping@2.3.5': - resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/source-map@0.3.11': - resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} - - '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - - '@jridgewell/trace-mapping@0.3.31': - resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - - '@jsonjoy.com/base64@1.1.2': - resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/buffers@1.2.1': - resolution: {integrity: sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/codegen@1.0.0': - resolution: {integrity: sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/json-pack@1.21.0': - resolution: {integrity: sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/json-pointer@1.0.2': - resolution: {integrity: sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@jsonjoy.com/util@1.9.0': - resolution: {integrity: sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - '@mdx-js/react@3.1.1': - resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==} - peerDependencies: - '@types/react': '>=16' - react: '>=16' - - '@module-federation/error-codes@0.18.0': - resolution: {integrity: sha512-Woonm8ehyVIUPXChmbu80Zj6uJkC0dD9SJUZ/wOPtO8iiz/m+dkrOugAuKgoiR6qH4F+yorWila954tBz4uKsQ==} - - '@module-federation/runtime-core@0.18.0': - resolution: {integrity: sha512-ZyYhrDyVAhUzriOsVfgL6vwd+5ebYm595Y13KeMf6TKDRoUHBMTLGQ8WM4TDj8JNsy7LigncK8C03fn97of0QQ==} - - '@module-federation/runtime-tools@0.18.0': - resolution: {integrity: sha512-fSga9o4t1UfXNV/Kh6qFvRyZpPp3EHSPRISNeyT8ZoTpzDNiYzhtw0BPUSSD8m6C6XQh2s/11rI4g80UY+d+hA==} - - '@module-federation/runtime-tools@0.5.1': - resolution: {integrity: sha512-nfBedkoZ3/SWyO0hnmaxuz0R0iGPSikHZOAZ0N/dVSQaIzlffUo35B5nlC2wgWIc0JdMZfkwkjZRrnuuDIJbzg==} - - '@module-federation/runtime@0.18.0': - resolution: {integrity: sha512-+C4YtoSztM7nHwNyZl6dQKGUVJdsPrUdaf3HIKReg/GQbrt9uvOlUWo2NXMZ8vDAnf/QRrpSYAwXHmWDn9Obaw==} - - '@module-federation/runtime@0.5.1': - resolution: {integrity: sha512-xgiMUWwGLWDrvZc9JibuEbXIbhXg6z2oUkemogSvQ4LKvrl/n0kbqP1Blk669mXzyWbqtSp6PpvNdwaE1aN5xQ==} - - '@module-federation/sdk@0.18.0': - resolution: {integrity: sha512-Lo/Feq73tO2unjmpRfyyoUkTVoejhItXOk/h5C+4cistnHbTV8XHrW/13fD5e1Iu60heVdAhhelJd6F898Ve9A==} - - '@module-federation/sdk@0.5.1': - resolution: {integrity: sha512-exvchtjNURJJkpqjQ3/opdbfeT2wPKvrbnGnyRkrwW5o3FH1LaST1tkiNviT6OXTexGaVc2DahbdniQHVtQ7pA==} - - '@module-federation/webpack-bundler-runtime@0.18.0': - resolution: {integrity: sha512-TEvErbF+YQ+6IFimhUYKK3a5wapD90d90sLsNpcu2kB3QGT7t4nIluE25duXuZDVUKLz86tEPrza/oaaCWTpvQ==} - - '@module-federation/webpack-bundler-runtime@0.5.1': - resolution: {integrity: sha512-mMhRFH0k2VjwHt3Jol9JkUsmI/4XlrAoBG3E0o7HoyoPYv1UFOWyqAflfANcUPgbYpvqmyLzDcO+3IT36LXnrA==} - - '@mui/core-downloads-tracker@6.5.0': - resolution: {integrity: sha512-LGb8t8i6M2ZtS3Drn3GbTI1DVhDY6FJ9crEey2lZ0aN2EMZo8IZBZj9wRf4vqbZHaWjsYgtbOnJw5V8UWbmK2Q==} - - '@mui/icons-material@5.16.14': - resolution: {integrity: sha512-heL4S+EawrP61xMXBm59QH6HODsu0gxtZi5JtnXF2r+rghzyU/3Uftlt1ij8rmJh+cFdKTQug1L9KkZB5JgpMQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@mui/material': ^5.0.0 - '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@mui/material@6.1.10': - resolution: {integrity: sha512-txnwYObY4N9ugv5T2n5h1KcbISegZ6l65w1/7tpSU5OB6MQCU94YkP8n/3slDw2KcEfRk4+4D8EUGfhSPMODEQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@emotion/react': ^11.5.0 - '@emotion/styled': ^11.3.0 - '@mui/material-pigment-css': ^6.1.10 - '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true - '@mui/material-pigment-css': - optional: true - '@types/react': - optional: true - - '@mui/private-theming@5.17.1': - resolution: {integrity: sha512-XMxU0NTYcKqdsG8LRmSoxERPXwMbp16sIXPcLVgLGII/bVNagX0xaheWAwFv8+zDK7tI3ajllkuD3GZZE++ICQ==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@mui/private-theming@6.4.9': - resolution: {integrity: sha512-LktcVmI5X17/Q5SkwjCcdOLBzt1hXuc14jYa7NPShog0GBDCDvKtcnP0V7a2s6EiVRlv7BzbWEJzH6+l/zaCxw==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@mui/styled-engine@6.5.0': - resolution: {integrity: sha512-8woC2zAqF4qUDSPIBZ8v3sakj+WgweolpyM/FXf8jAx6FMls+IE4Y8VDZc+zS805J7PRz31vz73n2SovKGaYgw==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@emotion/react': ^11.4.1 - '@emotion/styled': ^11.3.0 - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true - - '@mui/styles@5.16.14': - resolution: {integrity: sha512-J3iE718GbU06mnD9qu57/Fx+TosuBlhzs8nk1Q87QRQ76xo6qzLc3ek9n3dUPourGXWVenTxv1YX8lTOAnbHBA==} - engines: {node: '>=12.0.0'} - deprecated: Deprecated, check the migration instruction in https://mui.com/material-ui/migration/migrating-from-jss/ - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@mui/system@6.5.0': - resolution: {integrity: sha512-XcbBYxDS+h/lgsoGe78ExXFZXtuIlSBpn/KsZq8PtZcIkUNJInkuDqcLd2rVBQrDC1u+rvVovdaWPf2FHKJf3w==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@emotion/react': ^11.5.0 - '@emotion/styled': ^11.3.0 - '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true - '@types/react': - optional: true - - '@mui/types@7.2.24': - resolution: {integrity: sha512-3c8tRt/CbWZ+pEg7QpSwbdxOk36EfmhbKf6AGZsD1EcLDLTSZoxxJ86FVtcjxvjuhdyBiWKSTGZFaXCnidO2kw==} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@mui/types@7.4.7': - resolution: {integrity: sha512-8vVje9rdEr1rY8oIkYgP+Su5Kwl6ik7O3jQ0wl78JGSmiZhRHV+vkjooGdKD8pbtZbutXFVTWQYshu2b3sG9zw==} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@mui/utils@5.17.1': - resolution: {integrity: sha512-jEZ8FTqInt2WzxDV8bhImWBqeQRD99c/id/fq83H0ER9tFl+sfZlaAoCdznGvbSQQ9ividMxqSV2c7cC1vBcQg==} - engines: {node: '>=12.0.0'} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@mui/utils@6.4.9': - resolution: {integrity: sha512-Y12Q9hbK9g+ZY0T3Rxrx9m2m10gaphDuUMgWxyV5kNJevVxXYCLclYUCC9vXaIk1/NdNDTcW2Yfr2OGvNFNmHg==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@mui/x-data-grid@7.19.0': - resolution: {integrity: sha512-IcEkcTz8g7TIDxpe+x7ankAHoK5vCOKPYfnMtRD0HiJ1X7ZhK4VCCfpeVFS7v3DNy9qXYvwjDLQcI35W0hi3Og==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@emotion/react': ^11.9.0 - '@emotion/styled': ^11.8.1 - '@mui/material': ^5.15.14 || ^6.0.0 - '@mui/system': ^5.15.14 || ^6.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true - - '@mui/x-date-pickers@7.18.0': - resolution: {integrity: sha512-12tXIoMj9vpS8fS/bS3kWPCoVrH38vNGCxgplI0vOnUrN9rJuYJz3agLPJe1S0xciTw+9W8ZSe3soaW+owoz1Q==} - engines: {node: '>=14.0.0'} - peerDependencies: - '@emotion/react': ^11.9.0 - '@emotion/styled': ^11.8.1 - '@mui/material': ^5.15.14 || ^6.0.0 - '@mui/system': ^5.15.14 || ^6.0.0 - date-fns: ^2.25.0 || ^3.2.0 || ^4.0.0 - date-fns-jalali: ^2.13.0-0 || ^3.2.0-0 - dayjs: ^1.10.7 - luxon: ^3.0.2 - moment: ^2.29.4 - moment-hijri: ^2.1.2 - moment-jalaali: ^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@emotion/react': - optional: true - '@emotion/styled': - optional: true - date-fns: - optional: true - date-fns-jalali: - optional: true - dayjs: - optional: true - luxon: - optional: true - moment: - optional: true - moment-hijri: - optional: true - moment-jalaali: - optional: true - - '@mui/x-internals@7.18.0': - resolution: {integrity: sha512-lzCHOWIR0cAIY1bGrWSprYerahbnH5C31ql/2OWCEjcngL2NAV1M6oKI2Vp4HheqzJ822c60UyWyapvyjSzY/A==} - engines: {node: '>=14.0.0'} - peerDependencies: - react: ^17.0.0 || ^18.0.0 - - '@napi-rs/wasm-runtime@1.0.7': - resolution: {integrity: sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==} - - '@nodelib/fs.scandir@2.1.5': - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - - '@nodelib/fs.stat@2.0.5': - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - '@nodelib/fs.walk@1.2.8': - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - - '@parcel/watcher-android-arm64@2.5.1': - resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [android] - - '@parcel/watcher-darwin-arm64@2.5.1': - resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [darwin] - - '@parcel/watcher-darwin-x64@2.5.1': - resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [darwin] - - '@parcel/watcher-freebsd-x64@2.5.1': - resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [freebsd] - - '@parcel/watcher-linux-arm-glibc@2.5.1': - resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==} - engines: {node: '>= 10.0.0'} - cpu: [arm] - os: [linux] - - '@parcel/watcher-linux-arm-musl@2.5.1': - resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} - engines: {node: '>= 10.0.0'} - cpu: [arm] - os: [linux] - - '@parcel/watcher-linux-arm64-glibc@2.5.1': - resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - - '@parcel/watcher-linux-arm64-musl@2.5.1': - resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [linux] - - '@parcel/watcher-linux-x64-glibc@2.5.1': - resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - - '@parcel/watcher-linux-x64-musl@2.5.1': - resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [linux] - - '@parcel/watcher-win32-arm64@2.5.1': - resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} - engines: {node: '>= 10.0.0'} - cpu: [arm64] - os: [win32] - - '@parcel/watcher-win32-ia32@2.5.1': - resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==} - engines: {node: '>= 10.0.0'} - cpu: [ia32] - os: [win32] - - '@parcel/watcher-win32-x64@2.5.1': - resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==} - engines: {node: '>= 10.0.0'} - cpu: [x64] - os: [win32] - - '@parcel/watcher@2.5.1': - resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} - engines: {node: '>= 10.0.0'} - - '@pkgr/core@0.2.9': - resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - - '@polka/url@1.0.0-next.29': - resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} - - '@popperjs/core@2.11.8': - resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - - '@posthog/core@1.2.4': - resolution: {integrity: sha512-o2TkycuV98PtAkcqE8B1DJv5LBvHEDTWirK5TlkQMeF2MJg0BYliY95CeRZFILNgZJCbI3k/fhahSMRQlpXOMg==} - - '@remix-run/router@1.19.2': - resolution: {integrity: sha512-baiMx18+IMuD1yyvOGaHM9QrVUPGGG0jC+z+IPHnRJWUAUvaKuWKyE8gjDj2rzv3sz9zOGoRSPgeBVHRhZnBlA==} - engines: {node: '>=14.0.0'} - - '@rjsf/core@5.20.1': - resolution: {integrity: sha512-IOeONl5EBco6SunpGeL8yK9VlEypf1fy5RYqVf1pR/vRx7MPSS6H28p/IqkJGwcFqQBeUNjUAlGANYr808EpHA==} - engines: {node: '>=14'} - peerDependencies: - '@rjsf/utils': ^5.20.x - react: ^16.14.0 || >=17 - - '@rjsf/mui@5.20.1': - resolution: {integrity: sha512-KB/ciFdFHVVEmDyvMggczxhbdg8v9em+M2//SklXLM+riW6HHPAhjJ1oGAQ3grO/l+cAMJvl51+cRTHBIFk6GA==} - engines: {node: '>=14'} - peerDependencies: - '@emotion/react': ^11.7.0 - '@emotion/styled': ^11.6.0 - '@mui/icons-material': ^5.2.0 - '@mui/material': ^5.2.2 - '@rjsf/core': ^5.20.x - '@rjsf/utils': ^5.20.x - react: '>=17' - - '@rjsf/utils@5.20.1': - resolution: {integrity: sha512-bQrJt5lsAHbdmivIDDVJPXPCkkXJZvXBx8MrjA5umGO2+tykPcphZx/75+1AY5WhUECSgwBeZe2DEWhPbX46oQ==} - engines: {node: '>=14'} - peerDependencies: - react: ^16.14.0 || >=17 - - '@rjsf/validator-ajv8@5.20.1': - resolution: {integrity: sha512-8uzN3ncMk2G2EQq0bAig2zU2LC482B6KDmDtWlFytlU4GEzczHFTcpjoWU0iT7S+E8LoQiunTv5SBBxAnxSoOw==} - engines: {node: '>=14'} - peerDependencies: - '@rjsf/utils': ^5.20.x - - '@rollup/plugin-commonjs@28.0.8': - resolution: {integrity: sha512-o1Ug9PxYsF61R7/NXO/GgMZZproLd/WH2XA53Tp9ppf6bU1lMlTtC/gUM6zM3mesi2E0rypk+PNtVrELREyWEQ==} - engines: {node: '>=16.0.0 || 14 >= 14.17'} - peerDependencies: - rollup: ^2.68.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-node-resolve@16.0.3': - resolution: {integrity: sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.78.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-replace@6.0.2': - resolution: {integrity: sha512-7QaYCf8bqF04dOy7w/eHmJeNExxTYwvKAmlSAH/EaWWUzbT0h5sbF6bktFoX/0F/0qwng5/dWFMyf3gzaM8DsQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-terser@0.4.4': - resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-typescript@12.1.4': - resolution: {integrity: sha512-s5Hx+EtN60LMlDBvl5f04bEiFZmAepk27Q+mr85L/00zPDn1jtzlTV6FWn81MaIwqfWzKxmOJrBWHU6vtQyedQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.14.0||^3.0.0||^4.0.0 - tslib: '*' - typescript: '>=3.7.0' - peerDependenciesMeta: - rollup: - optional: true - tslib: - optional: true - - '@rollup/pluginutils@5.3.0': - resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/rollup-android-arm-eabi@4.50.2': - resolution: {integrity: sha512-uLN8NAiFVIRKX9ZQha8wy6UUs06UNSZ32xj6giK/rmMXAgKahwExvK6SsmgU5/brh4w/nSgj8e0k3c1HBQpa0A==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.50.2': - resolution: {integrity: sha512-oEouqQk2/zxxj22PNcGSskya+3kV0ZKH+nQxuCCOGJ4oTXBdNTbv+f/E3c74cNLeMO1S5wVWacSws10TTSB77g==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.50.2': - resolution: {integrity: sha512-OZuTVTpj3CDSIxmPgGH8en/XtirV5nfljHZ3wrNwvgkT5DQLhIKAeuFSiwtbMto6oVexV0k1F1zqURPKf5rI1Q==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.50.2': - resolution: {integrity: sha512-Wa/Wn8RFkIkr1vy1k1PB//VYhLnlnn5eaJkfTQKivirOvzu5uVd2It01ukeQstMursuz7S1bU+8WW+1UPXpa8A==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-freebsd-arm64@4.50.2': - resolution: {integrity: sha512-QkzxvH3kYN9J1w7D1A+yIMdI1pPekD+pWx7G5rXgnIlQ1TVYVC6hLl7SOV9pi5q9uIDF9AuIGkuzcbF7+fAhow==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.50.2': - resolution: {integrity: sha512-dkYXB0c2XAS3a3jmyDkX4Jk0m7gWLFzq1C3qUnJJ38AyxIF5G/dyS4N9B30nvFseCfgtCEdbYFhk0ChoCGxPog==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-linux-arm-gnueabihf@4.50.2': - resolution: {integrity: sha512-9VlPY/BN3AgbukfVHAB8zNFWB/lKEuvzRo1NKev0Po8sYFKx0i+AQlCYftgEjcL43F2h9Ui1ZSdVBc4En/sP2w==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.50.2': - resolution: {integrity: sha512-+GdKWOvsifaYNlIVf07QYan1J5F141+vGm5/Y8b9uCZnG/nxoGqgCmR24mv0koIWWuqvFYnbURRqw1lv7IBINw==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.50.2': - resolution: {integrity: sha512-df0Eou14ojtUdLQdPFnymEQteENwSJAdLf5KCDrmZNsy1c3YaCNaJvYsEUHnrg+/DLBH612/R0xd3dD03uz2dg==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.50.2': - resolution: {integrity: sha512-iPeouV0UIDtz8j1YFR4OJ/zf7evjauqv7jQ/EFs0ClIyL+by++hiaDAfFipjOgyz6y6xbDvJuiU4HwpVMpRFDQ==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-loong64-gnu@4.50.2': - resolution: {integrity: sha512-OL6KaNvBopLlj5fTa5D5bau4W82f+1TyTZRr2BdnfsrnQnmdxh4okMxR2DcDkJuh4KeoQZVuvHvzuD/lyLn2Kw==} - cpu: [loong64] - os: [linux] - - '@rollup/rollup-linux-ppc64-gnu@4.50.2': - resolution: {integrity: sha512-I21VJl1w6z/K5OTRl6aS9DDsqezEZ/yKpbqlvfHbW0CEF5IL8ATBMuUx6/mp683rKTK8thjs/0BaNrZLXetLag==} - cpu: [ppc64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.50.2': - resolution: {integrity: sha512-Hq6aQJT/qFFHrYMjS20nV+9SKrXL2lvFBENZoKfoTH2kKDOJqff5OSJr4x72ZaG/uUn+XmBnGhfr4lwMRrmqCQ==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-riscv64-musl@4.50.2': - resolution: {integrity: sha512-82rBSEXRv5qtKyr0xZ/YMF531oj2AIpLZkeNYxmKNN6I2sVE9PGegN99tYDLK2fYHJITL1P2Lgb4ZXnv0PjQvw==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.50.2': - resolution: {integrity: sha512-4Q3S3Hy7pC6uaRo9gtXUTJ+EKo9AKs3BXKc2jYypEcMQ49gDPFU2P1ariX9SEtBzE5egIX6fSUmbmGazwBVF9w==} - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.50.2': - resolution: {integrity: sha512-9Jie/At6qk70dNIcopcL4p+1UirusEtznpNtcq/u/C5cC4HBX7qSGsYIcG6bdxj15EYWhHiu02YvmdPzylIZlA==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.50.2': - resolution: {integrity: sha512-HPNJwxPL3EmhzeAnsWQCM3DcoqOz3/IC6de9rWfGR8ZCuEHETi9km66bH/wG3YH0V3nyzyFEGUZeL5PKyy4xvw==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-openharmony-arm64@4.50.2': - resolution: {integrity: sha512-nMKvq6FRHSzYfKLHZ+cChowlEkR2lj/V0jYj9JnGUVPL2/mIeFGmVM2mLaFeNa5Jev7W7TovXqXIG2d39y1KYA==} - cpu: [arm64] - os: [openharmony] - - '@rollup/rollup-win32-arm64-msvc@4.50.2': - resolution: {integrity: sha512-eFUvvnTYEKeTyHEijQKz81bLrUQOXKZqECeiWH6tb8eXXbZk+CXSG2aFrig2BQ/pjiVRj36zysjgILkqarS2YA==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.50.2': - resolution: {integrity: sha512-cBaWmXqyfRhH8zmUxK3d3sAhEWLrtMjWBRwdMMHJIXSjvjLKvv49adxiEz+FJ8AP90apSDDBx2Tyd/WylV6ikA==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.50.2': - resolution: {integrity: sha512-APwKy6YUhvZaEoHyM+9xqmTpviEI+9eL7LoCH+aLcvWYHJ663qG5zx7WzWZY+a9qkg5JtzcMyJ9z0WtQBMDmgA==} - cpu: [x64] - os: [win32] - - '@rsbuild/core@1.1.0': - resolution: {integrity: sha512-SyQlJjWgR1VwLt4nuiY0g6L9INv2koH232TeDZuopvNgbRytskD3kJ8bbGWBBXsQjZjtqBEh5ishqf8CIfF8dQ==} - engines: {node: '>=16.7.0'} - hasBin: true - - '@rsbuild/core@1.5.17': - resolution: {integrity: sha512-tHa4puv+pEooQvSewu/K5sm270nkVPcP07Ioz1c+fbFCrFpiZWV5XumgznilS80097glUrieN+9xTbIHGXjThQ==} - engines: {node: '>=18.12.0'} - hasBin: true - - '@rsbuild/plugin-react@1.0.7': - resolution: {integrity: sha512-t7T/GqDwodusTAnxGpqVRnQ/G+HYh98zk71qIg19WkjVJJGv57AC1Ppx0/6zzbZAbxU60bfK8TeEEXjhXCdSxA==} - peerDependencies: - '@rsbuild/core': 1.x - - '@rsbuild/plugin-sass@1.1.0': - resolution: {integrity: sha512-7vF1Bygb3R8xd1jHOv1AourxQ/751fkh9gi/WGABVFMde/OxEpw5hDiAY4Wo+zsxLXOEPHB9eUuv/5P7udwFkg==} - peerDependencies: - '@rsbuild/core': 1.x - - '@rsbuild/plugin-type-check@1.2.4': - resolution: {integrity: sha512-0m4TRp9mTgkQ61UWnqE6cOLj/tBltXBWqLYHh8DDz+mk9qabJQ6ilTl8vQbSrg/jYH/3AksQZjlpZMEplUrE2Q==} - peerDependencies: - '@rsbuild/core': 1.x - peerDependenciesMeta: - '@rsbuild/core': - optional: true - - '@rslib/core@0.13.3': - resolution: {integrity: sha512-W9U3KBC3VZbpJSfceRi6UpHFqbwuNGXjrwCuAErxS1YHi1fM0K15xIjQDNMsYoWsAQg0kazFZ5HHAxYUuEkiyA==} - engines: {node: '>=18.12.0'} - hasBin: true - peerDependencies: - '@microsoft/api-extractor': ^7 - typescript: ^5 - peerDependenciesMeta: - '@microsoft/api-extractor': - optional: true - typescript: - optional: true - - '@rspack/binding-darwin-arm64@1.1.8': - resolution: {integrity: sha512-I7avr471ghQ3LAqKm2fuXuJPLgQ9gffn5Q4nHi8rsukuZUtiLDPfYzK1QuupEp2JXRWM1gG5lIbSUOht3cD6Ug==} - cpu: [arm64] - os: [darwin] - - '@rspack/binding-darwin-arm64@1.5.8': - resolution: {integrity: sha512-spJfpOSN3f7V90ic45/ET2NKB2ujAViCNmqb0iGurMNQtFRq+7Kd+jvVKKGXKBHBbsQrFhidSWbbqy2PBPGK8g==} - cpu: [arm64] - os: [darwin] - - '@rspack/binding-darwin-x64@1.1.8': - resolution: {integrity: sha512-vfqf/c+mcx8rr1M8LnqKmzDdnrgguflZnjGerBLjNerAc+dcUp3lCvNxRIvZ2TkSZZBW8BpCMgjj3n70CZ4VLQ==} - cpu: [x64] - os: [darwin] - - '@rspack/binding-darwin-x64@1.5.8': - resolution: {integrity: sha512-YFOzeL1IBknBcri8vjUp43dfUBylCeQnD+9O9p0wZmLAw7DtpN5JEOe2AkGo8kdTqJjYKI+cczJPKIw6lu1LWw==} - cpu: [x64] - os: [darwin] - - '@rspack/binding-linux-arm64-gnu@1.1.8': - resolution: {integrity: sha512-lZlO/rAJSeozi+qtVLkGSXfe+riPawCwM4FsrflELfNlvvEXpANwtrdJ+LsaNVXcgvhh50ZX2KicTdmx9G2b6Q==} - cpu: [arm64] - os: [linux] - - '@rspack/binding-linux-arm64-gnu@1.5.8': - resolution: {integrity: sha512-UAWCsOnpkvy8eAVRo0uipbHXDhnoDq5zmqWTMhpga0/a3yzCp2e+fnjZb/qnFNYb5MeL0O1mwMOYgn1M3oHILQ==} - cpu: [arm64] - os: [linux] - - '@rspack/binding-linux-arm64-musl@1.1.8': - resolution: {integrity: sha512-bX7exULSZwy8xtDh6Z65b6sRC4uSxGuyvSLCEKyhmG6AnJkg0gQMxk3hoO0hWnyGEZgdJEn+jEhk0fjl+6ZRAQ==} - cpu: [arm64] - os: [linux] - - '@rspack/binding-linux-arm64-musl@1.5.8': - resolution: {integrity: sha512-GnSvGT4GjokPSD45cTtE+g7LgghuxSP1MRmvd+Vp/I8pnxTVSTsebRod4TAqyiv+l11nuS8yqNveK9qiOkBLWw==} - cpu: [arm64] - os: [linux] - - '@rspack/binding-linux-x64-gnu@1.1.8': - resolution: {integrity: sha512-2Prw2USgTJ3aLdLExfik8pAwAHbX4MZrACBGEmR7Vbb56kLjC+++fXkciRc50pUDK4JFr1VQ7eNZrJuDR6GG6Q==} - cpu: [x64] - os: [linux] - - '@rspack/binding-linux-x64-gnu@1.5.8': - resolution: {integrity: sha512-XLxh5n/pzUfxsugz/8rVBv+Tx2nqEM+9rharK69kfooDsQNKyz7PANllBQ/v4svJ+W0BRHnDL4qXSGdteZeEjA==} - cpu: [x64] - os: [linux] - - '@rspack/binding-linux-x64-musl@1.1.8': - resolution: {integrity: sha512-bnVGB/mQBKEdzOU/CPmcOE3qEXxGOGGW7/i6iLl2MamVOykJq8fYjL9j86yi6L0r009ja16OgWckykQGc4UqGw==} - cpu: [x64] - os: [linux] - - '@rspack/binding-linux-x64-musl@1.5.8': - resolution: {integrity: sha512-gE0+MZmwF+01p9/svpEESkzkLpBkVUG2o03YMpwXYC/maeRRhWvF8BJ7R3i/Ls/jFGSE87dKX5NbRLVzqksq/w==} - cpu: [x64] - os: [linux] - - '@rspack/binding-wasm32-wasi@1.5.8': - resolution: {integrity: sha512-cfg3niNHeJuxuml1Vy9VvaJrI/5TakzoaZvKX2g5S24wfzR50Eyy4JAsZ+L2voWQQp1yMJbmPYPmnTCTxdJQBQ==} - cpu: [wasm32] - - '@rspack/binding-win32-arm64-msvc@1.1.8': - resolution: {integrity: sha512-u+na3gxhzeksm4xZyAzn1+XWo5a5j7hgWA/KcFPDQ8qQNkRknx4jnQMxVtcZ9pLskAYV4AcOV/AIximx7zvv8A==} - cpu: [arm64] - os: [win32] - - '@rspack/binding-win32-arm64-msvc@1.5.8': - resolution: {integrity: sha512-7i3ZTHFXKfU/9Jm9XhpMkrdkxO7lfeYMNVEGkuU5dyBfRMQj69dRgPL7zJwc2plXiqu9LUOl+TwDNTjap7Q36g==} - cpu: [arm64] - os: [win32] - - '@rspack/binding-win32-ia32-msvc@1.1.8': - resolution: {integrity: sha512-FijUxym1INd5fFHwVCLuVP8XEAb4Sk1sMwEEQUlugiDra9ZsLaPw4OgPGxbxkD6SB0DeUz9Zq46Xbcf6d3OgfA==} - cpu: [ia32] - os: [win32] - - '@rspack/binding-win32-ia32-msvc@1.5.8': - resolution: {integrity: sha512-7ZPPWO11J+soea1+mnfaPpQt7GIodBM7A86dx6PbXgVEoZmetcWPrCF2NBfXxQWOKJ9L3RYltC4z+ZyXRgMOrw==} - cpu: [ia32] - os: [win32] - - '@rspack/binding-win32-x64-msvc@1.1.8': - resolution: {integrity: sha512-SBzIcND4qpDt71jlu1MCDxt335tqInT3YID9V4DoQ4t8wgM/uad7EgKOWKTK6vc2RRaOIShfS2XzqjNUxPXh4w==} - cpu: [x64] - os: [win32] - - '@rspack/binding-win32-x64-msvc@1.5.8': - resolution: {integrity: sha512-N/zXQgzIxME3YUzXT8qnyzxjqcnXudWOeDh8CAG9zqTCnCiy16SFfQ/cQgEoLlD9geQntV6jx2GbDDI5kpDGMQ==} - cpu: [x64] - os: [win32] - - '@rspack/binding@1.1.8': - resolution: {integrity: sha512-+/JzXx1HctfgPj+XtsCTbRkxiaOfAXGZZLEvs7jgp04WgWRSZ5u97WRCePNPvy+sCfOEH/2zw2ZK36Z7oQRGhQ==} - - '@rspack/binding@1.5.8': - resolution: {integrity: sha512-/91CzhRl9r5BIQCgGsS7jA6MDbw1I2BQpbfcUUdkdKl2P79K3Zo/Mw/TvKzS86catwLaUQEgkGRmYawOfPg7ow==} - - '@rspack/core@1.1.8': - resolution: {integrity: sha512-pcZtcj5iXLCuw9oElTYC47bp/RQADm/MMEb3djHdwJuSlFWfWPQi5QFgJ/lJAxIW9UNHnTFrYtytycfjpuoEcA==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@swc/helpers': '>=0.5.1' - peerDependenciesMeta: - '@swc/helpers': - optional: true - - '@rspack/core@1.5.8': - resolution: {integrity: sha512-sUd2LfiDhqYVfvknuoz0+/c+wSpn693xotnG5g1CSWKZArbtwiYzBIVnNlcHGmuoBRsnj/TkSq8dTQ7gwfBroQ==} - engines: {node: '>=18.12.0'} - peerDependencies: - '@swc/helpers': '>=0.5.1' - peerDependenciesMeta: - '@swc/helpers': - optional: true - - '@rspack/lite-tapable@1.0.1': - resolution: {integrity: sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w==} - engines: {node: '>=16.0.0'} - - '@rspack/plugin-react-refresh@1.0.3': - resolution: {integrity: sha512-gGK197oIZaPFOTYZkWHZMWRdDlu03zIA3zcYuTKn5Ru6FyuQQu3KjprwDORTcYNHXZw188Exh3uhplM/d2ltIQ==} - peerDependencies: - react-refresh: '>=0.10.0 <1.0.0' - webpack-hot-middleware: 2.x - peerDependenciesMeta: - webpack-hot-middleware: - optional: true - - '@storybook/addon-actions@8.6.15': - resolution: {integrity: sha512-zc600PBJqP9hCyRY5escKgKf6Zt9kdNZfm+Jwb46k5/NMSO4tNVeOPGBFxW9kSsIYk8j55sNske+Yh60G+8bcw==} - peerDependencies: - storybook: ^8.6.15 - - '@storybook/addon-backgrounds@8.6.15': - resolution: {integrity: sha512-W36uEzMWPO/K3+8vV1R/GozdaFrIix0qqmxX0qoAT6/o4+zqHiloZkTF+2iuUTx/VmuztLcAoSaPDh8UPy3Q+g==} - peerDependencies: - storybook: ^8.6.15 - - '@storybook/addon-controls@8.6.15': - resolution: {integrity: sha512-CgV8WqGxQrqSKs1a/Y1v4mrsBJXGFmO5u4kvdhPbftRVfln11W4Hvc1SFmgXwGvmcwekAKH79Uwwkjhj3l6gzA==} - peerDependencies: - storybook: ^8.6.15 - - '@storybook/addon-docs@8.6.14': - resolution: {integrity: sha512-Obpd0OhAF99JyU5pp5ci17YmpcQtMNgqW2pTXV8jAiiipWpwO++hNDeQmLmlSXB399XjtRDOcDVkoc7rc6JzdQ==} - peerDependencies: - storybook: ^8.6.14 - - '@storybook/addon-docs@8.6.15': - resolution: {integrity: sha512-Nm5LlxwAmGQRkCUY36FhtCLz21C+5XlydF7/bkBOHsf08p2xR5MNLMSPrIhte/PY7ne9viNUCm1d3d3LiWnkKg==} - peerDependencies: - storybook: ^8.6.15 - - '@storybook/addon-essentials@8.6.15': - resolution: {integrity: sha512-BIcE/7t5WXDXs4+zycm7MLNPHA2219ImkKO70IH7uxGM4cm7jDuJ5v0crkAvNeeRVsZixT2P2L9EfUfi1cFCQg==} - peerDependencies: - storybook: ^8.6.15 - - '@storybook/addon-highlight@8.6.15': - resolution: {integrity: sha512-lOu44QTVw5nR8kzag0ukxWnLq48oy2MqMUDuMVFQWPBKX8ayhmgl2OiEcvAOVNsieTHrr2W4CkP7FFvF4D0vlg==} - peerDependencies: - storybook: ^8.6.15 - - '@storybook/addon-interactions@8.6.15': - resolution: {integrity: sha512-9qgu7jbPjzFm44UF57D6puK+/86maE26gY+06Thz1NpTBCjVIl2fTZ/CA00iXb5+12f3JmSF0w3XEjsqcrzd3w==} - peerDependencies: - storybook: ^8.6.15 - - '@storybook/addon-links@8.6.15': - resolution: {integrity: sha512-abRWnDPBTwnj6sQYfAjUnYCNuUQbrVLLOyuormbDUqOcvZ+OqehNYo4BKXx0/lz61h0A2dOD1IuDo40uWyYVFQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.6.15 - peerDependenciesMeta: - react: - optional: true - - '@storybook/addon-measure@8.6.15': - resolution: {integrity: sha512-F78fJlmuXMulTphFp9Iqx7I1GsbmNLboChnW/VqR6nRZx5o9cdGjc8IaEyXVFXZ7k1pnSvdaP5ndFmzkcPxQdg==} - peerDependencies: - storybook: ^8.6.15 - - '@storybook/addon-onboarding@8.6.15': - resolution: {integrity: sha512-HAsGUQxpwP4MoyaCuZcmLpSMVTXC6PSic2QY6156ZfFMiobD+W0vIaxuDw65iBNUJ2vWRmrQsR8YgmfyWMQ7qA==} - peerDependencies: - storybook: ^8.6.15 - - '@storybook/addon-outline@8.6.15': - resolution: {integrity: sha512-rpGRLajsjBdpbggPmdNZbftF68zQwsYLosu7YiUSBaR4dm+gQ+7m5nLLI/MjZDHbt2nJRW94yXpn7dUw2CDF6g==} - peerDependencies: - storybook: ^8.6.15 - - '@storybook/addon-toolbars@8.6.15': - resolution: {integrity: sha512-NfHAbOOu5qI9SQq6jJr2VfinaZpHrmz3bavBeUppxCxM+zfPuNudK8MlMOOuyPBPAoUqcDSoKZgNfCkOBQcyGg==} - peerDependencies: - storybook: ^8.6.15 - - '@storybook/addon-viewport@8.6.15': - resolution: {integrity: sha512-ylTK4sehAeVTwcYMZyisyP3xX+m43NjJrQHKc3DAII3Z3RFqTv9l6CUMogM2/8mysTzoo8xYVtQB6hX7zB8Dew==} - peerDependencies: - storybook: ^8.6.15 - - '@storybook/blocks@8.6.14': - resolution: {integrity: sha512-rBMHAfA39AGHgkrDze4RmsnQTMw1ND5fGWobr9pDcJdnDKWQWNRD7Nrlxj0gFlN3n4D9lEZhWGdFrCbku7FVAQ==} - 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: ^8.6.14 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@storybook/blocks@8.6.15': - resolution: {integrity: sha512-nc5jQkvPo0EirteHsrmcx9on/0lGQ8F4lUNky7kN2I5WM8Frr3cPTeRoAvzjUkOwrqt/vm3g+T4zSbmDq/OEDA==} - 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: ^8.6.15 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - - '@storybook/builder-vite@8.6.15': - resolution: {integrity: sha512-9Y05/ndZE6/eI7ZIUCD/QtH2htRIUs9j1gxE6oW0zRo9TJO1iqxfLNwgzd59KEkId7gdZxPei0l+LGTUGXYKRg==} - peerDependencies: - storybook: ^8.6.15 - vite: ^4.0.0 || ^5.0.0 || ^6.0.0 - - '@storybook/components@8.6.15': - resolution: {integrity: sha512-+9GVKXPEW8Kl9zvNSTm9+VrJtx/puMZiO7gxCML63nK4aTWJXHQr4t9YUoGammSBM3AV1JglsKm6dBgJEeCoiA==} - peerDependencies: - storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - - '@storybook/core-webpack@8.6.14': - resolution: {integrity: sha512-iG7r8osNKabSGBbuJuSeMWKbU+ilt5PvzTYkClcYaagla/DliXkXvfywA6jOugVk/Cpx+c6tVKlPfjLcaQHwmw==} - peerDependencies: - storybook: ^8.6.14 - - '@storybook/core@8.6.15': - resolution: {integrity: sha512-VFpKcphNurJpSC4fpUfKL3GTXVoL53oytghGR30QIw5jKWwaT50HVbTyb41BLOUuZjmMhUQA8weiQEew6RX0gw==} - peerDependencies: - prettier: ^2 || ^3 - peerDependenciesMeta: - prettier: - optional: true - - '@storybook/csf-plugin@8.6.14': - resolution: {integrity: sha512-dErtc9teAuN+eelN8FojzFE635xlq9cNGGGEu0WEmMUQ4iJ8pingvBO1N8X3scz4Ry7KnxX++NNf3J3gpxS8qQ==} - peerDependencies: - storybook: ^8.6.14 - - '@storybook/csf-plugin@8.6.15': - resolution: {integrity: sha512-ZLz/mtOoE1Jj2lE4pK3U7MmYrv5+lot3mGtwxGb832tcABMc97j9O+reCVxZYc7DeFbBuuEdMT9rBL/O3kXYmw==} - peerDependencies: - storybook: ^8.6.15 - - '@storybook/csf@0.0.1': - resolution: {integrity: sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==} - - '@storybook/global@5.0.0': - resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} - - '@storybook/icons@1.6.0': - resolution: {integrity: sha512-hcFZIjW8yQz8O8//2WTIXylm5Xsgc+lW9ISLgUk1xGmptIJQRdlhVIXCpSyLrQaaRiyhQRaVg7l3BD9S216BHw==} - engines: {node: '>=14.0.0'} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - - '@storybook/instrumenter@8.6.15': - resolution: {integrity: sha512-TvHR/+yyIAOp/1bLulFai2kkhIBtAlBw7J6Jd9DKyInoGhTWNE1G1Y61jD5GWXX29AlwaHfzGUaX5NL1K+FJpg==} - peerDependencies: - storybook: ^8.6.15 - - '@storybook/manager-api@8.6.15': - resolution: {integrity: sha512-ZOFtH821vFcwzECbFYFTKtSVO96Cvwwg45dMh3M/9bZIdN7klsloX7YNKw8OKvwE6XLFLsi2OvsNNcmTW6g88w==} - peerDependencies: - storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - - '@storybook/preview-api@8.6.15': - resolution: {integrity: sha512-oqsp8f7QekB9RzpDqOXZQcPPRXXd/mTsnZSdAAQB/pBVqUpC9h/y5hgovbYnJ6DWXcpODbMwH+wbJHZu5lvm+w==} - peerDependencies: - storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - - '@storybook/react-docgen-typescript-plugin@1.0.1': - resolution: {integrity: sha512-dqbHa+5gaxaklFCuV1WTvljVPTo3QIJgpW4Ln+QeME7osPZUnUhjN2/djvo+sxrWUrTTuqX5jkn291aDngu9Tw==} - peerDependencies: - typescript: '>= 3.x' - webpack: '>= 4' - - '@storybook/react-dom-shim@8.6.14': - resolution: {integrity: sha512-0hixr3dOy3f3M+HBofp3jtMQMS+sqzjKNgl7Arfuj3fvjmyXOks/yGjDImySR4imPtEllvPZfhiQNlejheaInw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.6.14 - - '@storybook/react-dom-shim@8.6.15': - resolution: {integrity: sha512-m2trBmmd4iom1qwrp1F109zjRDc0cPaHYhDQxZR4Qqdz8pYevYJTlipDbH/K4NVB6Rn687RT29OoOPfJh6vkFA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.6.15 - - '@storybook/react-vite@8.6.15': - resolution: {integrity: sha512-9st+2NCemzzBwmindpDrRLEqYJmwwd2RnXMoj+Wt4Y1r4MGoRe1l837ciT2tmstaqekY2mVUSYd6879NzeeMYw==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@storybook/test': 8.6.15 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.6.15 - vite: ^4.0.0 || ^5.0.0 || ^6.0.0 - peerDependenciesMeta: - '@storybook/test': - optional: true - - '@storybook/react@8.6.15': - resolution: {integrity: sha512-hdnhlJg+YkpPMOw2hvK7+mhdxAbguA+TFTIAzVV9CeUYoHDIZAsgeKVhRmgZGN20NGjRN5ZcwkplAMJnF9v+6w==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@storybook/test': 8.6.15 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.6.15 - typescript: '>= 4.2.x' - peerDependenciesMeta: - '@storybook/test': - optional: true - typescript: - optional: true - - '@storybook/test@8.6.15': - resolution: {integrity: sha512-EwquDRUDVvWcZds3T2abmB5wSN/Vattal4YtZ6fpBlIUqONV4o/cOBX39cFfQSUCBrIXIjQ6RmapQCHK/PvBYw==} - peerDependencies: - storybook: ^8.6.15 - - '@storybook/theming@8.6.15': - resolution: {integrity: sha512-dAbL0XOekyT6XsF49R6Etj3WxQ/LpdJDIswUUeHgVJ6/yd2opZOGbPxnwA3zlmAh1c0tvpPyhSDXxSG79u8e4Q==} - peerDependencies: - storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - - '@swc/helpers@0.5.17': - resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} - - '@testing-library/dom@10.4.0': - resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} - engines: {node: '>=18'} - - '@testing-library/jest-dom@6.5.0': - resolution: {integrity: sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==} - engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - - '@testing-library/user-event@14.5.2': - resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} - engines: {node: '>=12', npm: '>=6'} - peerDependencies: - '@testing-library/dom': '>=7.21.4' - - '@trysound/sax@0.2.0': - resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} - engines: {node: '>=10.13.0'} - - '@tybys/wasm-util@0.10.1': - resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} - - '@types/aria-query@5.0.4': - resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} - - '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - - '@types/babel__generator@7.27.0': - resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} - - '@types/babel__template@7.4.4': - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - - '@types/babel__traverse@7.28.0': - resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} - - '@types/d3-color@3.1.3': - resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} - - '@types/d3-drag@3.0.7': - resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==} - - '@types/d3-interpolate@3.0.4': - resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} - - '@types/d3-selection@3.0.11': - resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==} - - '@types/d3-transition@3.0.9': - resolution: {integrity: sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==} - - '@types/d3-zoom@3.0.8': - resolution: {integrity: sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==} - - '@types/doctrine@0.0.9': - resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} - - '@types/eslint-scope@3.7.7': - resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} - - '@types/eslint@9.6.1': - resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} - - '@types/estree@1.0.8': - resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - - '@types/html-minifier-terser@7.0.2': - resolution: {integrity: sha512-mm2HqV22l8lFQh4r2oSsOEVea+m0qqxEmwpc9kC1p/XzmjLWrReR9D/GRs8Pex2NX/imyEH9c5IU/7tMBQCHOA==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - '@types/mdx@2.0.13': - resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} - - '@types/node@18.19.130': - resolution: {integrity: sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==} - - '@types/node@24.9.0': - resolution: {integrity: sha512-MKNwXh3seSK8WurXF7erHPJ2AONmMwkI7zAMrXZDPIru8jRqkk6rGDBVbw4mLwfqA+ZZliiDPg05JQ3uW66tKQ==} - - '@types/parse-json@4.0.2': - resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} - - '@types/prop-types@15.7.15': - resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} - - '@types/react-dom@18.2.25': - resolution: {integrity: sha512-o/V48vf4MQh7juIKZU2QGDfli6p1+OOi5oXx36Hffpc9adsHeXjVp8rHuPkjd8VT8sOJ2Zp05HR7CdpGTIUFUA==} - - '@types/react-transition-group@4.4.12': - resolution: {integrity: sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==} - peerDependencies: - '@types/react': '*' - - '@types/react@18.2.79': - resolution: {integrity: sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w==} - - '@types/resolve@1.20.2': - resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - - '@types/resolve@1.20.6': - resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} - - '@types/semver@7.7.1': - resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} - - '@types/trusted-types@2.0.7': - resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - - '@types/uuid@9.0.8': - resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} - - '@typescript-eslint/eslint-plugin@8.11.0': - resolution: {integrity: sha512-KhGn2LjW1PJT2A/GfDpiyOfS4a8xHQv2myUagTM5+zsormOmBlYsnQ6pobJ8XxJmh6hnHwa2Mbe3fPrDJoDhbA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/parser@8.11.0': - resolution: {integrity: sha512-lmt73NeHdy1Q/2ul295Qy3uninSqi6wQI18XwSpm8w0ZbQXUpjCAWP1Vlv/obudoBiIjJVjlztjQ+d/Md98Yxg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/scope-manager@5.62.0': - resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@typescript-eslint/scope-manager@8.11.0': - resolution: {integrity: sha512-Uholz7tWhXmA4r6epo+vaeV7yjdKy5QFCERMjs1kMVsLRKIrSdM6o21W2He9ftp5PP6aWOVpD5zvrvuHZC0bMQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/type-utils@8.11.0': - resolution: {integrity: sha512-ItiMfJS6pQU0NIKAaybBKkuVzo6IdnAhPFZA/2Mba/uBjuPQPet/8+zh5GtLHwmuFRShZx+8lhIs7/QeDHflOg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/types@5.62.0': - resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@typescript-eslint/types@8.11.0': - resolution: {integrity: sha512-tn6sNMHf6EBAYMvmPUaKaVeYvhUsrE6x+bXQTxjQRp360h1giATU0WvgeEys1spbvb5R+VpNOZ+XJmjD8wOUHw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@5.62.0': - resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/typescript-estree@8.11.0': - resolution: {integrity: sha512-yHC3s1z1RCHoCz5t06gf7jH24rr3vns08XXhfEqzYpd6Hll3z/3g23JRi0jM8A47UFKNc3u/y5KIMx8Ynbjohg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/utils@5.62.0': - resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - - '@typescript-eslint/utils@8.11.0': - resolution: {integrity: sha512-CYiX6WZcbXNJV7UNB4PLDIBtSdRmRI/nb0FMyqHPTQD1rMjA0foPLaPUV39C/MxkTd/QKSeX+Gb34PPsDVC35g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - - '@typescript-eslint/visitor-keys@5.62.0': - resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - '@typescript-eslint/visitor-keys@8.11.0': - resolution: {integrity: sha512-EaewX6lxSjRJnc+99+dqzTeoDZUfyrA52d2/HRrkI830kgovWsmIiTfmr0NZorzqic7ga+1bS60lRBUgR3n/Bw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@vitest/expect@2.0.5': - resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} - - '@vitest/pretty-format@2.0.5': - resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} - - '@vitest/pretty-format@2.1.9': - resolution: {integrity: sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==} - - '@vitest/spy@2.0.5': - resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} - - '@vitest/utils@2.0.5': - resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} - - '@vitest/utils@2.1.9': - resolution: {integrity: sha512-v0psaMSkNJ3A2NMrUEHFRzJtDPFn+/VWZ5WxImB21T9fjucJRmS7xCS3ppEnARb9y11OAzaD+P2Ps+b+BGX5iQ==} - - '@webassemblyjs/ast@1.14.1': - resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} - - '@webassemblyjs/floating-point-hex-parser@1.13.2': - resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} - - '@webassemblyjs/helper-api-error@1.13.2': - resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} - - '@webassemblyjs/helper-buffer@1.14.1': - resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} - - '@webassemblyjs/helper-numbers@1.13.2': - resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} - - '@webassemblyjs/helper-wasm-bytecode@1.13.2': - resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} - - '@webassemblyjs/helper-wasm-section@1.14.1': - resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} - - '@webassemblyjs/ieee754@1.13.2': - resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} - - '@webassemblyjs/leb128@1.13.2': - resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} - - '@webassemblyjs/utf8@1.13.2': - resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} - - '@webassemblyjs/wasm-edit@1.14.1': - resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} - - '@webassemblyjs/wasm-gen@1.14.1': - resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} - - '@webassemblyjs/wasm-opt@1.14.1': - resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} - - '@webassemblyjs/wasm-parser@1.14.1': - resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} - - '@webassemblyjs/wast-printer@1.14.1': - resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} - - '@xtuc/ieee754@1.2.0': - resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} - - '@xtuc/long@4.2.2': - resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - - '@xyflow/react@12.3.6': - resolution: {integrity: sha512-9GS+cz8hDZahpvTrVCmySAEgKUL8oN4b2q1DluHrKtkqhAMWfH2s7kblhbM4Y4Y4SUnH2lt4drXKZ/4/Lot/2Q==} - peerDependencies: - react: '>=17' - react-dom: '>=17' - - '@xyflow/system@0.0.47': - resolution: {integrity: sha512-aUXJPIvsCFxGX70ccRG8LPsR+A8ExYXfh/noYNpqn8udKerrLdSHxMG2VsvUrQ1PGex10fOpbJwFU4A+I/Xv8w==} - - acorn-import-phases@1.0.4: - resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==} - engines: {node: '>=10.13.0'} - peerDependencies: - acorn: ^8.14.0 - - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn@8.15.0: - resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} - engines: {node: '>=0.4.0'} - hasBin: true - - ajv-formats@2.1.1: - resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - - ajv-keywords@5.1.0: - resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} - peerDependencies: - ajv: ^8.8.2 - - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - - ajv@8.17.1: - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-regex@6.2.2: - resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} - engines: {node: '>=12'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - - aria-query@5.3.2: - resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} - engines: {node: '>= 0.4'} - - array-buffer-byte-length@1.0.2: - resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} - engines: {node: '>= 0.4'} - - array-includes@3.1.9: - resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} - engines: {node: '>= 0.4'} - - array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - - array.prototype.findlast@1.2.5: - resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} - engines: {node: '>= 0.4'} - - array.prototype.flat@1.3.3: - resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} - engines: {node: '>= 0.4'} - - array.prototype.flatmap@1.3.3: - resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} - engines: {node: '>= 0.4'} - - array.prototype.tosorted@1.1.4: - resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} - engines: {node: '>= 0.4'} - - arraybuffer.prototype.slice@1.0.4: - resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} - engines: {node: '>= 0.4'} - - asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - - assertion-error@2.0.1: - resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} - engines: {node: '>=12'} - - ast-types@0.16.1: - resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} - engines: {node: '>=4'} - - async-function@1.0.0: - resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} - engines: {node: '>= 0.4'} - - available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - - babel-plugin-macros@3.1.0: - resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} - engines: {node: '>=10', npm: '>=6'} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - base16@1.0.0: - resolution: {integrity: sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==} - - baseline-browser-mapping@2.8.18: - resolution: {integrity: sha512-UYmTpOBwgPScZpS4A+YbapwWuBwasxvO/2IOHArSsAhL/+ZdmATBXTex3t+l2hXwLVYK382ibr/nKoY9GKe86w==} - hasBin: true - - better-opn@3.0.2: - resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} - engines: {node: '>=12.0.0'} - - big.js@5.2.2: - resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - - brace-expansion@1.1.12: - resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} - - brace-expansion@2.0.2: - resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - browser-assert@1.2.1: - resolution: {integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==} - - browserslist@4.26.3: - resolution: {integrity: sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - buffer-builder@0.2.0: - resolution: {integrity: sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==} - - buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - - call-bind-apply-helpers@1.0.2: - resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} - engines: {node: '>= 0.4'} - - call-bind@1.0.8: - resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} - engines: {node: '>= 0.4'} - - call-bound@1.0.4: - resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} - engines: {node: '>= 0.4'} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - camel-case@4.1.2: - resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} - - caniuse-api@3.0.0: - resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - - caniuse-lite@1.0.30001751: - resolution: {integrity: sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==} - - case-sensitive-paths-webpack-plugin@2.4.0: - resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} - engines: {node: '>=4'} - - chai@5.3.3: - resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} - engines: {node: '>=18'} - - chalk@3.0.0: - resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} - engines: {node: '>=8'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - check-error@2.1.1: - resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} - engines: {node: '>= 16'} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - chokidar@4.0.3: - resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} - engines: {node: '>= 14.16.0'} - - chromatic@11.29.0: - resolution: {integrity: sha512-yisBlntp9hHVj19lIQdpTlcYIXuU9H/DbFuu6tyWHmj6hWT2EtukCCcxYXL78XdQt1vm2GfIrtgtKpj/Rzmo4A==} - hasBin: true - peerDependencies: - '@chromatic-com/cypress': ^0.*.* || ^1.0.0 - '@chromatic-com/playwright': ^0.*.* || ^1.0.0 - peerDependenciesMeta: - '@chromatic-com/cypress': - optional: true - '@chromatic-com/playwright': - optional: true - - chrome-trace-event@1.0.4: - resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} - engines: {node: '>=6.0'} - - cjs-module-lexer@1.4.3: - resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} - - classcat@5.0.5: - resolution: {integrity: sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w==} - - clean-css@5.3.3: - resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} - engines: {node: '>= 10.0'} - - clsx@2.1.1: - resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} - engines: {node: '>=6'} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - colord@2.9.3: - resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} - - colorjs.io@0.5.2: - resolution: {integrity: sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==} - - commander@10.0.1: - resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} - engines: {node: '>=14'} - - commander@2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - - commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} - - compute-gcd@1.2.1: - resolution: {integrity: sha512-TwMbxBNz0l71+8Sc4czv13h4kEqnchV9igQZBi6QUaz09dnz13juGnnaWWJTRsP3brxOoxeB4SA2WELLw1hCtg==} - - compute-lcm@1.1.2: - resolution: {integrity: sha512-OFNPdQAXnQhDSKioX8/XYT6sdUlXwpeMjfd6ApxMJfyZ4GxmLR1xvMERctlYhlHwIiz6CSpBc2+qYKjHGZw4TQ==} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - concat-with-sourcemaps@1.1.0: - resolution: {integrity: sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==} - - constants-browserify@1.0.0: - resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} - - convert-source-map@1.9.0: - resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - - core-js@3.39.0: - resolution: {integrity: sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==} - - core-js@3.46.0: - resolution: {integrity: sha512-vDMm9B0xnqqZ8uSBpZ8sNtRtOdmfShrvT6h2TuQGLs0Is+cR0DYbj/KWP6ALVNbWPpqA/qPLoOuppJN07humpA==} - - cosmiconfig@7.1.0: - resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} - engines: {node: '>=10'} - - cross-fetch@3.2.0: - resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} - - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - - css-declaration-sorter@6.4.1: - resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} - engines: {node: ^10 || ^12 || >=14} - peerDependencies: - postcss: '>=8.4.31' - - css-select@4.3.0: - resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} - - css-tree@1.1.3: - resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} - engines: {node: '>=8.0.0'} - - css-vendor@2.0.8: - resolution: {integrity: sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==} - - css-what@6.2.2: - resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} - engines: {node: '>= 6'} - - css.escape@1.5.1: - resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} - - cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} - engines: {node: '>=4'} - hasBin: true - - cssnano-preset-default@5.2.14: - resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - cssnano-utils@3.1.0: - resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - cssnano@5.1.15: - resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - csso@4.2.0: - resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} - engines: {node: '>=8.0.0'} - - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - - d3-array@3.2.4: - resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} - engines: {node: '>=12'} - - d3-axis@3.0.0: - resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} - engines: {node: '>=12'} - - d3-brush@3.0.0: - resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} - engines: {node: '>=12'} - - d3-chord@3.0.1: - resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} - engines: {node: '>=12'} - - d3-color@3.1.0: - resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} - engines: {node: '>=12'} - - d3-contour@4.0.2: - resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} - engines: {node: '>=12'} - - d3-delaunay@6.0.4: - resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} - engines: {node: '>=12'} - - d3-dispatch@3.0.1: - resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} - engines: {node: '>=12'} - - d3-drag@3.0.0: - resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} - engines: {node: '>=12'} - - d3-dsv@3.0.1: - resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} - engines: {node: '>=12'} - hasBin: true - - d3-ease@3.0.1: - resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} - engines: {node: '>=12'} - - d3-fetch@3.0.1: - resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} - engines: {node: '>=12'} - - d3-force@3.0.0: - resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} - engines: {node: '>=12'} - - d3-format@3.1.0: - resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} - engines: {node: '>=12'} - - d3-geo@3.1.1: - resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} - engines: {node: '>=12'} - - d3-hierarchy@3.1.2: - resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} - engines: {node: '>=12'} - - d3-interpolate@3.0.1: - resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} - engines: {node: '>=12'} - - d3-path@3.1.0: - resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} - engines: {node: '>=12'} - - d3-polygon@3.0.1: - resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} - engines: {node: '>=12'} - - d3-quadtree@3.0.1: - resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} - engines: {node: '>=12'} - - d3-random@3.0.1: - resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} - engines: {node: '>=12'} - - d3-scale-chromatic@3.1.0: - resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} - engines: {node: '>=12'} - - d3-scale@4.0.2: - resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} - engines: {node: '>=12'} - - d3-selection@3.0.0: - resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} - engines: {node: '>=12'} - - d3-shape@3.2.0: - resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} - engines: {node: '>=12'} - - d3-time-format@4.1.0: - resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} - engines: {node: '>=12'} - - d3-time@3.1.0: - resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} - engines: {node: '>=12'} - - d3-timer@3.0.1: - resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} - engines: {node: '>=12'} - - d3-transition@3.0.1: - resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} - engines: {node: '>=12'} - peerDependencies: - d3-selection: 2 - 3 - - d3-zoom@3.0.0: - resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} - engines: {node: '>=12'} - - d3@7.9.0: - resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} - engines: {node: '>=12'} - - dagre@0.8.5: - resolution: {integrity: sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==} - - data-view-buffer@1.0.2: - resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} - engines: {node: '>= 0.4'} - - data-view-byte-length@1.0.2: - resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} - engines: {node: '>= 0.4'} - - data-view-byte-offset@1.0.1: - resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} - engines: {node: '>= 0.4'} - - debug@4.4.3: - resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - dedent@0.7.0: - resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - - deep-eql@5.0.2: - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} - engines: {node: '>=6'} - - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - - define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - - define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - - delaunator@5.0.1: - resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} - - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - - detect-libc@1.0.3: - resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} - engines: {node: '>=0.10'} - hasBin: true - - dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - - doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - - doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - - dom-accessibility-api@0.5.16: - resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} - - dom-accessibility-api@0.6.3: - resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} - - dom-helpers@5.2.1: - resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} - - dom-serializer@1.4.1: - resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} - - dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - - domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - - domhandler@4.3.1: - resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} - engines: {node: '>= 4'} - - domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - - dompurify@3.2.7: - resolution: {integrity: sha512-WhL/YuveyGXJaerVlMYGWhvQswa7myDG17P7Vu65EWC05o8vfeNbvNf4d/BOvH99+ZW+LlQsc1GDKMa1vNK6dw==} - - domutils@2.8.0: - resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} - - domutils@3.2.2: - resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} - - dot-case@3.0.4: - resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} - - dunder-proto@1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} - engines: {node: '>= 0.4'} - - electron-to-chromium@1.5.237: - resolution: {integrity: sha512-icUt1NvfhGLar5lSWH3tHNzablaA5js3HVHacQimfP8ViEBOQv+L7DKEuHdbTZ0SKCO1ogTJTIL1Gwk9S6Qvcg==} - - emojis-list@3.0.0: - resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} - engines: {node: '>= 4'} - - endent@2.1.0: - resolution: {integrity: sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==} - - enhanced-resolve@5.18.3: - resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} - engines: {node: '>=10.13.0'} - - entities@2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - - entities@6.0.1: - resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} - engines: {node: '>=0.12'} - - error-ex@1.3.4: - resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} - - error-stack-parser@2.1.4: - resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} - - es-abstract@1.24.0: - resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} - engines: {node: '>= 0.4'} - - es-define-property@1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - es-iterator-helpers@1.2.1: - resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} - engines: {node: '>= 0.4'} - - es-module-lexer@1.7.0: - resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} - - es-object-atoms@1.1.1: - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} - engines: {node: '>= 0.4'} - - es-set-tostringtag@2.1.0: - resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} - engines: {node: '>= 0.4'} - - es-shim-unscopables@1.1.0: - resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} - engines: {node: '>= 0.4'} - - es-to-primitive@1.3.0: - resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} - engines: {node: '>= 0.4'} - - esbuild-register@3.6.0: - resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} - peerDependencies: - esbuild: '>=0.12 <1' - - esbuild@0.25.11: - resolution: {integrity: sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==} - engines: {node: '>=18'} - hasBin: true - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - eslint-config-prettier@9.1.2: - resolution: {integrity: sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - - eslint-plugin-prettier@5.2.6: - resolution: {integrity: sha512-mUcf7QG2Tjk7H055Jk0lGBjbgDnfrvqjhXh9t2xLMSCjZVcw9Rb1V6sVNXO0th3jgeO7zllWPTNRil3JW94TnQ==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0' - prettier: '>=3.0.0' - peerDependenciesMeta: - '@types/eslint': - optional: true - eslint-config-prettier: - optional: true - - eslint-plugin-react@7.35.2: - resolution: {integrity: sha512-Rbj2R9zwP2GYNcIak4xoAMV57hrBh3hTaR0k7hVjwCQgryE/pw5px4b13EYjduOI0hfXyZhwBxaGpOTbWSGzKQ==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - - eslint-plugin-storybook@0.8.0: - resolution: {integrity: sha512-CZeVO5EzmPY7qghO2t64oaFM+8FTaD4uzOEjHKp516exyTKo+skKAL9GI3QALS2BXhyALJjNtwbmr1XinGE8bA==} - engines: {node: '>= 18'} - peerDependencies: - eslint: '>=6' - - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - - eslint-scope@8.4.0: - resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-visitor-keys@4.2.1: - resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint@9.9.1: - resolution: {integrity: sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true - - espree@10.4.0: - resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - - esquery@1.6.0: - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} - engines: {node: '>=0.10'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - estree-walker@0.6.1: - resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} - - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - eventemitter3@4.0.7: - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - - events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - - fast-glob@3.3.3: - resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} - engines: {node: '>=8.6.0'} - - fast-json-parse@1.0.3: - resolution: {integrity: sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - fast-uri@3.1.0: - resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} - - fastq@1.19.1: - resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} - - fbemitter@3.0.0: - resolution: {integrity: sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==} - - fbjs-css-vars@1.0.2: - resolution: {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==} - - fbjs@3.0.5: - resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} - - fdir@6.5.0: - resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} - engines: {node: '>=12.0.0'} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - - fflate@0.4.8: - resolution: {integrity: sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==} - - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - - filesize@10.1.6: - resolution: {integrity: sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==} - engines: {node: '>= 10.4.0'} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - find-cache-dir@3.3.2: - resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} - engines: {node: '>=8'} - - find-root@1.1.0: - resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} - - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} - - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} - - flatted@3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - - flux@4.0.4: - resolution: {integrity: sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw==} - peerDependencies: - react: ^15.0.2 || ^16.0.0 || ^17.0.0 - - for-each@0.3.5: - resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} - engines: {node: '>= 0.4'} - - fs-extra@11.3.2: - resolution: {integrity: sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==} - engines: {node: '>=14.14'} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - function.prototype.name@1.1.8: - resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} - engines: {node: '>= 0.4'} - - functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - - fuzzysort@3.1.0: - resolution: {integrity: sha512-sR9BNCjBg6LNgwvxlBd0sBABvQitkLzoVY9MYYROQVX/FvfJ4Mai9LsGhDgd8qYdds0bY77VzYd5iuB+v5rwQQ==} - - generator-function@2.0.1: - resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} - engines: {node: '>= 0.4'} - - generic-names@4.0.0: - resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==} - - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - - get-intrinsic@1.3.0: - resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} - engines: {node: '>= 0.4'} - - get-proto@1.0.1: - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} - engines: {node: '>= 0.4'} - - get-symbol-description@1.1.0: - resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} - engines: {node: '>= 0.4'} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - glob-to-regex.js@1.2.0: - resolution: {integrity: sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - - glob@13.0.0: - resolution: {integrity: sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==} - engines: {node: 20 || >=22} - - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - - globals@15.9.0: - resolution: {integrity: sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==} - engines: {node: '>=18'} - - globalthis@1.0.4: - resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} - engines: {node: '>= 0.4'} - - globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - - gopd@1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - - graphlib@2.1.8: - resolution: {integrity: sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==} - - has-bigints@1.1.0: - resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} - engines: {node: '>= 0.4'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-proto@1.2.0: - resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} - engines: {node: '>= 0.4'} - - has-symbols@1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - hoist-non-react-statics@3.3.2: - resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} - - html-dom-parser@5.1.1: - resolution: {integrity: sha512-+o4Y4Z0CLuyemeccvGN4bAO20aauB2N9tFEAep5x4OW34kV4PTarBHm6RL02afYt2BMKcr0D2Agep8S3nJPIBg==} - - html-entities@2.6.0: - resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} - - html-minifier-terser@7.2.0: - resolution: {integrity: sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==} - engines: {node: ^14.13.1 || >=16.0.0} - hasBin: true - - html-parse-stringify@3.0.1: - resolution: {integrity: sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==} - - html-react-parser@5.2.7: - resolution: {integrity: sha512-WzIAcqQoZoF49J9aev8NBDLz9TJvt2RmipeYA+/5+5x0sWCwFxqKiq0lysieiSA/G6dbUZ6KGGy65Cx2fjie5Q==} - peerDependencies: - '@types/react': 0.14 || 15 || 16 || 17 || 18 || 19 - react: 0.14 || 15 || 16 || 17 || 18 || 19 - peerDependenciesMeta: - '@types/react': - optional: true - - htmlparser2@10.0.0: - resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} - - hyperdyperid@1.2.0: - resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} - engines: {node: '>=10.18'} - - hyphenate-style-name@1.1.0: - resolution: {integrity: sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==} - - i18next@23.11.5: - resolution: {integrity: sha512-41pvpVbW9rhZPk5xjCX2TPJi2861LEig/YRhUkY+1FQ2IQPS0bKUDYnEqY8XPPbB48h1uIwLnP9iiEfuSl20CA==} - - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - - icss-replace-symbols@1.1.0: - resolution: {integrity: sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==} - - icss-utils@5.1.0: - resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: '>=8.4.31' - - ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} - - immer@9.0.21: - resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} - - immutable@5.1.4: - resolution: {integrity: sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==} - - import-cwd@3.0.0: - resolution: {integrity: sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==} - engines: {node: '>=8'} - - import-fresh@3.3.1: - resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} - engines: {node: '>=6'} - - import-from@3.0.0: - resolution: {integrity: sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==} - engines: {node: '>=8'} - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - - inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - inline-style-parser@0.2.4: - resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} - - internal-slot@1.1.0: - resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} - engines: {node: '>= 0.4'} - - internmap@2.0.3: - resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} - engines: {node: '>=12'} - - is-arguments@1.2.0: - resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} - engines: {node: '>= 0.4'} - - is-array-buffer@3.0.5: - resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} - engines: {node: '>= 0.4'} - - is-arrayish@0.2.1: - resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} - - is-async-function@2.1.1: - resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} - engines: {node: '>= 0.4'} - - is-bigint@1.1.0: - resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} - engines: {node: '>= 0.4'} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-boolean-object@1.2.2: - resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} - engines: {node: '>= 0.4'} - - is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - - is-core-module@2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} - engines: {node: '>= 0.4'} - - is-data-view@1.0.2: - resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} - engines: {node: '>= 0.4'} - - is-date-object@1.1.0: - resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} - engines: {node: '>= 0.4'} - - is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-finalizationregistry@1.1.1: - resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} - engines: {node: '>= 0.4'} - - is-generator-function@1.1.2: - resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} - engines: {node: '>= 0.4'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-hotkey@0.2.0: - resolution: {integrity: sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==} - - is-in-browser@1.1.3: - resolution: {integrity: sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==} - - is-map@2.0.3: - resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} - engines: {node: '>= 0.4'} - - is-module@1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - - is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - - is-number-object@1.1.1: - resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} - engines: {node: '>= 0.4'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - - is-reference@1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} - - is-regex@1.2.1: - resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} - engines: {node: '>= 0.4'} - - is-set@2.0.3: - resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} - engines: {node: '>= 0.4'} - - is-shared-array-buffer@1.0.4: - resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} - engines: {node: '>= 0.4'} - - is-string@1.1.1: - resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} - engines: {node: '>= 0.4'} - - is-symbol@1.1.1: - resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} - engines: {node: '>= 0.4'} - - is-typed-array@1.1.15: - resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} - engines: {node: '>= 0.4'} - - is-weakmap@2.0.2: - resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} - engines: {node: '>= 0.4'} - - is-weakref@1.1.1: - resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} - engines: {node: '>= 0.4'} - - is-weakset@2.0.4: - resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} - engines: {node: '>= 0.4'} - - is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - - isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - iterator.prototype@1.1.5: - resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} - engines: {node: '>= 0.4'} - - jest-worker@27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - - jiti@2.6.1: - resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} - hasBin: true - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - js-yaml@4.1.1: - resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} - hasBin: true - - jsdoc-type-pratt-parser@4.8.0: - resolution: {integrity: sha512-iZ8Bdb84lWRuGHamRXFyML07r21pcwBrLkHEuHgEY5UbCouBwv7ECknDRKzsQIXMiqpPymqtIf8TC/shYKB5rw==} - engines: {node: '>=12.0.0'} - - jsesc@3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} - engines: {node: '>=6'} - hasBin: true - - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - - json-parse-even-better-errors@2.3.1: - resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - - json-schema-compare@0.2.2: - resolution: {integrity: sha512-c4WYmDKyJXhs7WWvAWm3uIYnfyWFoIp+JEoX34rctVvEkMYCPGhXtvmFFXiffBbxfZsvQ0RNnV5H7GvDF5HCqQ==} - - json-schema-merge-allof@0.8.1: - resolution: {integrity: sha512-CTUKmIlPJbsWfzRRnOXz+0MjIqvnleIXwFTzz+t9T86HnYX/Rozria6ZVGLktAU9e+NygNljveP+yxqtQp/Q4w==} - engines: {node: '>=12.0.0'} - - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - json-schema-traverse@1.0.0: - resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - jsonfile@6.2.0: - resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} - - jsonpointer@5.0.1: - resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} - engines: {node: '>=0.10.0'} - - jss-plugin-camel-case@10.10.0: - resolution: {integrity: sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==} - - jss-plugin-default-unit@10.10.0: - resolution: {integrity: sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==} - - jss-plugin-global@10.10.0: - resolution: {integrity: sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==} - - jss-plugin-nested@10.10.0: - resolution: {integrity: sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==} - - jss-plugin-props-sort@10.10.0: - resolution: {integrity: sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==} - - jss-plugin-rule-value-function@10.10.0: - resolution: {integrity: sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==} - - jss-plugin-vendor-prefixer@10.10.0: - resolution: {integrity: sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==} - - jss@10.10.0: - resolution: {integrity: sha512-cqsOTS7jqPsPMjtKYDUpdFC0AbhYFLTcuGRqymgmdJIeQ8cH7+AgX7YSgQy79wXloZq2VvATYxUOUQEvS1V/Zw==} - - jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} - - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - - lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - - loader-runner@4.3.1: - resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} - engines: {node: '>=6.11.5'} - - loader-utils@2.0.4: - resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} - engines: {node: '>=8.9.0'} - - loader-utils@3.3.1: - resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} - engines: {node: '>= 12.13.0'} - - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - lodash-es@4.17.21: - resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} - - lodash.camelcase@4.3.0: - resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - - lodash.curry@4.1.1: - resolution: {integrity: sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==} - - lodash.flow@3.5.0: - resolution: {integrity: sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==} - - lodash.memoize@4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - lodash.uniq@4.5.0: - resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - - loupe@3.2.1: - resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} - - lower-case@2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - - lru-cache@11.2.4: - resolution: {integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==} - engines: {node: 20 || >=22} - - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - - lz-string@1.5.0: - resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} - hasBin: true - - magic-string@0.27.0: - resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} - engines: {node: '>=12'} - - magic-string@0.30.19: - resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} - - make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - - map-or-similar@1.5.0: - resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} - - markdown-to-jsx@7.7.16: - resolution: {integrity: sha512-2YLPWjSAdJqVCTIQtP3zPPYfLUWuu74Ms7E9vr/RqLTWzPT5clZWNIlgxyzUKD/Gv+P12TNgpnRgtaNNj/vn8A==} - engines: {node: '>= 10'} - peerDependencies: - react: '>= 0.14.0' - peerDependenciesMeta: - react: - optional: true - - math-intrinsics@1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} - engines: {node: '>= 0.4'} - - mdn-data@2.0.14: - resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} - - memfs@4.49.0: - resolution: {integrity: sha512-L9uC9vGuc4xFybbdOpRLoOAOq1YEBBsocCs5NVW32DfU+CZWWIn3OVF+lB8Gp4ttBVSMazwrTrjv8ussX/e3VQ==} - - memoize-one@5.2.1: - resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} - - memoizerific@1.11.3: - resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} - - merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - - micromatch@4.0.8: - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} - engines: {node: '>=8.6'} - - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - - minimatch@10.1.1: - resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} - engines: {node: 20 || >=22} - - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - - moment@2.30.1: - resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} - - mrmime@2.0.1: - resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} - engines: {node: '>=10'} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - neo-async@2.6.2: - resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - - no-case@3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - - node-addon-api@7.1.1: - resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - - node-releases@2.0.25: - resolution: {integrity: sha512-4auku8B/vw5psvTiiN9j1dAOsXvMoGqJuKJcR+dTdqiXEK20mMTk1UEo3HS16LeGQsVG6+qKTPM9u/qQ2LqATA==} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - normalize-url@6.1.0: - resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} - engines: {node: '>=10'} - - nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-inspect@1.13.4: - resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} - engines: {node: '>= 0.4'} - - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - - object.assign@4.1.7: - resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} - engines: {node: '>= 0.4'} - - object.entries@1.1.9: - resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} - engines: {node: '>= 0.4'} - - object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} - - object.values@1.2.1: - resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} - engines: {node: '>= 0.4'} - - objectorarray@1.0.5: - resolution: {integrity: sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==} - - open@8.4.2: - resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} - engines: {node: '>=12'} - - optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} - - own-keys@1.0.1: - resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} - engines: {node: '>= 0.4'} - - p-finally@1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} - engines: {node: '>=4'} - - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - p-queue@6.6.2: - resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} - engines: {node: '>=8'} - - p-timeout@3.2.0: - resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} - engines: {node: '>=8'} - - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - - param-case@3.0.4: - resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} - - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - - parse-json@5.2.0: - resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} - engines: {node: '>=8'} - - pascal-case@3.1.2: - resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} - - path-browserify@1.0.1: - resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - path-scurry@2.0.1: - resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==} - engines: {node: 20 || >=22} - - path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - - pathval@2.0.1: - resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} - engines: {node: '>= 14.16'} - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} - engines: {node: '>=12'} - - pify@5.0.0: - resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==} - engines: {node: '>=10'} - - pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - - polished@4.3.1: - resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} - engines: {node: '>=10'} - - possible-typed-array-names@1.1.0: - resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} - engines: {node: '>= 0.4'} - - postcss-calc@8.2.4: - resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} - peerDependencies: - postcss: '>=8.4.31' - - postcss-colormin@5.3.1: - resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - postcss-convert-values@5.1.3: - resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - postcss-discard-comments@5.1.2: - resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - postcss-discard-duplicates@5.1.0: - resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - postcss-discard-empty@5.1.1: - resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - postcss-discard-overridden@5.1.0: - resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - postcss-load-config@3.1.4: - resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} - engines: {node: '>= 10'} - peerDependencies: - postcss: '>=8.4.31' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - - postcss-merge-longhand@5.1.7: - resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - postcss-merge-rules@5.1.4: - resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - postcss-minify-font-values@5.1.0: - resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - postcss-minify-gradients@5.1.1: - resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - postcss-minify-params@5.1.4: - resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - postcss-minify-selectors@5.2.1: - resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - postcss-modules-extract-imports@3.1.0: - resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: '>=8.4.31' - - postcss-modules-local-by-default@4.2.0: - resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: '>=8.4.31' - - postcss-modules-scope@3.2.1: - resolution: {integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: '>=8.4.31' - - postcss-modules-values@4.0.0: - resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} - engines: {node: ^10 || ^12 || >= 14} - peerDependencies: - postcss: '>=8.4.31' - - postcss-modules@4.3.1: - resolution: {integrity: sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==} - peerDependencies: - postcss: '>=8.4.31' - - postcss-normalize-charset@5.1.0: - resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - postcss-normalize-display-values@5.1.0: - resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - postcss-normalize-positions@5.1.1: - resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - postcss-normalize-repeat-style@5.1.1: - resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - postcss-normalize-string@5.1.0: - resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - postcss-normalize-timing-functions@5.1.0: - resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - postcss-normalize-unicode@5.1.1: - resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - postcss-normalize-url@5.1.0: - resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - postcss-normalize-whitespace@5.1.1: - resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - postcss-ordered-values@5.1.3: - resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - postcss-reduce-initial@5.1.2: - resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - postcss-reduce-transforms@5.1.0: - resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - postcss-selector-parser@6.1.2: - resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} - engines: {node: '>=4'} - - postcss-selector-parser@7.1.0: - resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} - engines: {node: '>=4'} - - postcss-svgo@5.1.0: - resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - postcss-unique-selectors@5.1.1: - resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss@8.5.6: - resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} - engines: {node: ^10 || ^12 || >=14} - - posthog-js@1.274.3: - resolution: {integrity: sha512-w+xS+g/waoa2d2t9mHfO0q6/r9jZU/ISgHFgz+Sk6fxqmJdMuZnXAoOwjN0C2SS1PetJREaQx0K7czTisufjgw==} - peerDependencies: - '@rrweb/types': 2.0.0-alpha.17 - rrweb-snapshot: 2.0.0-alpha.17 - peerDependenciesMeta: - '@rrweb/types': - optional: true - rrweb-snapshot: - optional: true - - preact@10.27.2: - resolution: {integrity: sha512-5SYSgFKSyhCbk6SrXyMpqjb5+MQBgfvEKE/OC+PujcY34sOpqtr+0AZQtPYx5IA6VxynQ7rUPCtKzyovpj9Bpg==} - - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - prettier-linter-helpers@1.0.0: - resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} - engines: {node: '>=6.0.0'} - - prettier@3.3.3: - resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} - engines: {node: '>=14'} - hasBin: true - - pretty-format@27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - - process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - - promise.series@0.2.0: - resolution: {integrity: sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==} - engines: {node: '>=0.12'} - - promise@7.3.1: - resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} - - prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - - punycode@1.4.1: - resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} - - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - pure-color@1.3.0: - resolution: {integrity: sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==} - - qs@6.14.1: - resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==} - engines: {node: '>=0.6'} - - queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - - react-base16-styling@0.6.0: - resolution: {integrity: sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==} - - react-confetti@6.4.0: - resolution: {integrity: sha512-5MdGUcqxrTU26I2EU7ltkWPwxvucQTuqMm8dUz72z2YMqTD6s9vMcDUysk7n9jnC+lXuCPeJJ7Knf98VEYE9Rg==} - engines: {node: '>=16'} - peerDependencies: - react: ^16.3.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 - - react-device-detect@2.2.3: - resolution: {integrity: sha512-buYY3qrCnQVlIFHrC5UcUoAj7iANs/+srdkwsnNjI7anr3Tt7UY6MqNxtMLlr0tMBied0O49UZVK8XKs3ZIiPw==} - peerDependencies: - react: '>= 0.14.0' - react-dom: '>= 0.14.0' - - react-docgen-typescript@2.4.0: - resolution: {integrity: sha512-ZtAp5XTO5HRzQctjPU0ybY0RRCQO19X/8fxn3w7y2VVTUbGHDKULPTL4ky3vB05euSgG5NpALhEhDPvQ56wvXg==} - peerDependencies: - typescript: '>= 4.3.x' - - react-docgen@7.1.1: - resolution: {integrity: sha512-hlSJDQ2synMPKFZOsKo9Hi8WWZTC7POR8EmWvTSjow+VDgKzkmjQvFm2fk0tmRw+f0vTOIYKlarR0iL4996pdg==} - engines: {node: '>=16.14.0'} - - react-dom@18.3.1: - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} - peerDependencies: - react: ^18.3.1 - - react-i18next@14.1.3: - resolution: {integrity: sha512-wZnpfunU6UIAiJ+bxwOiTmBOAaB14ha97MjOEnLGac2RJ+h/maIYXZuTHlmyqQVX1UVHmU1YDTQ5vxLmwfXTjw==} - peerDependencies: - i18next: '>= 23.2.3' - react: '>= 16.8.0' - react-dom: '*' - react-native: '*' - peerDependenciesMeta: - react-dom: - optional: true - react-native: - optional: true - - react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - - react-is@17.0.2: - resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} - - react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - - react-is@19.2.0: - resolution: {integrity: sha512-x3Ax3kNSMIIkyVYhWPyO09bu0uttcAIoecO/um/rKGQ4EltYWVYtyiGkS/3xMynrbVQdS69Jhlv8FXUEZehlzA==} - - react-json-view@1.21.3: - resolution: {integrity: sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==} - peerDependencies: - react: ^17.0.0 || ^16.3.0 || ^15.5.4 - react-dom: ^17.0.0 || ^16.3.0 || ^15.5.4 - - react-lifecycles-compat@3.0.4: - resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} - - react-property@2.0.2: - resolution: {integrity: sha512-+PbtI3VuDV0l6CleQMsx2gtK0JZbZKbpdu5ynr+lbsuvtmgbNcS3VM0tuY2QjFNOcWxvXeHjDpy42RO+4U2rug==} - - react-refresh@0.14.2: - resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} - engines: {node: '>=0.10.0'} - - react-router-dom@6.26.2: - resolution: {integrity: sha512-z7YkaEW0Dy35T3/QKPYB1LjMK2R1fxnHO8kWpUMTBdfVzZrWOiY9a7CtN8HqdWtDUWd5FY6Dl8HFsqVwH4uOtQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - react-router@6.26.2: - resolution: {integrity: sha512-tvN1iuT03kHgOFnLPfLJ8V95eijteveqdOSk+srqfePtQvqCExB8eHOYnlilbOcyJyKnYkr1vJvf7YqotAJu1A==} - engines: {node: '>=14.0.0'} - peerDependencies: - react: '>=16.8' - - react-textarea-autosize@8.5.9: - resolution: {integrity: sha512-U1DGlIQN5AwgjTyOEnI1oCcMuEr1pv1qOtklB2l4nyMGbHzWrI0eFsYK0zos2YWqAolJyG0IWJaqWmWj5ETh0A==} - engines: {node: '>=10'} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - react-transition-group@4.4.5: - resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} - peerDependencies: - react: '>=16.6.0' - react-dom: '>=16.6.0' - - react-virtualized-auto-sizer@1.0.26: - resolution: {integrity: sha512-CblNyiNVw2o+hsa5/49NH2ogGxZ+t+3aweRvNSq7TVjDIlwk7ir4lencEg5HxHeSzwNarSkNkiu0qJSOXtxm5A==} - peerDependencies: - react: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0 || ^19.0.0 - - react-window@1.8.11: - resolution: {integrity: sha512-+SRbUVT2scadgFSWx+R1P754xHPEqvcfSfVX10QYg6POOz+WNgkN48pS+BtZNIMGiL1HYrSEiCkwsMS15QogEQ==} - engines: {node: '>8.0.0'} - peerDependencies: - react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} - engines: {node: '>=0.10.0'} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - readdirp@4.1.2: - resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} - engines: {node: '>= 14.18.0'} - - recast@0.23.11: - resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} - engines: {node: '>= 4'} - - redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} - - reduce-configs@1.1.1: - resolution: {integrity: sha512-EYtsVGAQarE8daT54cnaY1PIknF2VB78ug6Zre2rs36EsJfC40EG6hmTU2A2P1ZuXnKAt2KI0fzOGHcX7wzdPw==} - - reflect.getprototypeof@1.0.10: - resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} - engines: {node: '>= 0.4'} - - regexp.prototype.flags@1.5.4: - resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} - engines: {node: '>= 0.4'} - - relateurl@0.2.7: - resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} - engines: {node: '>= 0.10'} - - require-from-string@2.0.2: - resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} - engines: {node: '>=0.10.0'} - - requireindex@1.2.0: - resolution: {integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==} - engines: {node: '>=0.10.5'} - - reselect@5.1.1: - resolution: {integrity: sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - - resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} - engines: {node: '>= 0.4'} - hasBin: true - - resolve@2.0.0-next.5: - resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} - hasBin: true - - reusify@1.1.0: - resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true - - robust-predicates@3.0.2: - resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} - - rollup-plugin-dts@6.2.3: - resolution: {integrity: sha512-UgnEsfciXSPpASuOelix7m4DrmyQgiaWBnvI0TM4GxuDh5FkqW8E5hu57bCxXB90VvR1WNfLV80yEDN18UogSA==} - engines: {node: '>=16'} - peerDependencies: - rollup: ^3.29.4 || ^4 - typescript: ^4.5 || ^5.0 - - rollup-plugin-peer-deps-external@2.2.4: - resolution: {integrity: sha512-AWdukIM1+k5JDdAqV/Cxd+nejvno2FVLVeZ74NKggm3Q5s9cbbcOgUPGdbxPi4BXu7xGaZ8HG12F+thImYu/0g==} - peerDependencies: - rollup: '*' - - rollup-plugin-postcss@4.0.2: - resolution: {integrity: sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w==} - engines: {node: '>=10'} - peerDependencies: - postcss: '>=8.4.31' - - rollup-pluginutils@2.8.2: - resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} - - rollup@4.50.2: - resolution: {integrity: sha512-BgLRGy7tNS9H66aIMASq1qSYbAAJV6Z6WR4QYTvj5FgF15rZ/ympT1uixHXwzbZUBDbkvqUI1KR0fH1FhMaQ9w==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - rsbuild-plugin-dts@0.13.3: - resolution: {integrity: sha512-clPsUpLq4URqntM0xCF6WMBBx+iTxU0z2mkdJNLnWEx7qPjxAEiHOqFYPQsvaHxNkKRan6Yb75I7XhRMjo0Vrg==} - engines: {node: '>=18.12.0'} - peerDependencies: - '@microsoft/api-extractor': ^7 - '@rsbuild/core': 1.x - '@typescript/native-preview': 7.x - typescript: ^5 - peerDependenciesMeta: - '@microsoft/api-extractor': - optional: true - '@typescript/native-preview': - optional: true - typescript: - optional: true - - rsbuild-plugin-html-minifier-terser@1.1.2: - resolution: {integrity: sha512-8RyDdz30TlwcHFMOL/2rEMlkffY8CVaxcj3jqZvNTlIZjr5rNLWPAN2h6dAe0Gp+dh94Sl192IACO/nwgtoOfQ==} - peerDependencies: - '@rsbuild/core': 1.x - peerDependenciesMeta: - '@rsbuild/core': - optional: true - - run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - - run-script-os@1.1.6: - resolution: {integrity: sha512-ql6P2LzhBTTDfzKts+Qo4H94VUKpxKDFz6QxxwaUZN0mwvi7L3lpOI7BqPCq7lgDh3XLl0dpeXwfcVIitlrYrw==} - hasBin: true - - rw@1.3.3: - resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} - - rxjs@7.8.2: - resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} - - safe-array-concat@1.1.3: - resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} - engines: {node: '>=0.4'} - - safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - safe-identifier@0.4.2: - resolution: {integrity: sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==} - - safe-push-apply@1.0.0: - resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} - engines: {node: '>= 0.4'} - - safe-regex-test@1.1.0: - resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} - engines: {node: '>= 0.4'} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - sass-embedded-all-unknown@1.93.2: - resolution: {integrity: sha512-GdEuPXIzmhRS5J7UKAwEvtk8YyHQuFZRcpnEnkA3rwRUI27kwjyXkNeIj38XjUQ3DzrfMe8HcKFaqWGHvblS7Q==} - cpu: ['!arm', '!arm64', '!riscv64', '!x64'] - - sass-embedded-android-arm64@1.93.2: - resolution: {integrity: sha512-346f4iVGAPGcNP6V6IOOFkN5qnArAoXNTPr5eA/rmNpeGwomdb7kJyQ717r9rbJXxOG8OAAUado6J0qLsjnjXQ==} - engines: {node: '>=14.0.0'} - cpu: [arm64] - os: [android] - - sass-embedded-android-arm@1.93.2: - resolution: {integrity: sha512-I8bpO8meZNo5FvFx5FIiE7DGPVOYft0WjuwcCCdeJ6duwfkl6tZdatex1GrSigvTsuz9L0m4ngDcX/Tj/8yMow==} - engines: {node: '>=14.0.0'} - cpu: [arm] - os: [android] - - sass-embedded-android-riscv64@1.93.2: - resolution: {integrity: sha512-hSMW1s4yJf5guT9mrdkumluqrwh7BjbZ4MbBW9tmi1DRDdlw1Wh9Oy1HnnmOG8x9XcI1qkojtPL6LUuEJmsiDg==} - engines: {node: '>=14.0.0'} - cpu: [riscv64] - os: [android] - - sass-embedded-android-x64@1.93.2: - resolution: {integrity: sha512-JqktiHZduvn+ldGBosE40ALgQ//tGCVNAObgcQ6UIZznEJbsHegqStqhRo8UW3x2cgOO2XYJcrInH6cc7wdKbw==} - engines: {node: '>=14.0.0'} - cpu: [x64] - os: [android] - - sass-embedded-darwin-arm64@1.93.2: - resolution: {integrity: sha512-qI1X16qKNeBJp+M/5BNW7v/JHCDYWr1/mdoJ7+UMHmP0b5AVudIZtimtK0hnjrLnBECURifd6IkulybR+h+4UA==} - engines: {node: '>=14.0.0'} - cpu: [arm64] - os: [darwin] - - sass-embedded-darwin-x64@1.93.2: - resolution: {integrity: sha512-4KeAvlkQ0m0enKUnDGQJZwpovYw99iiMb8CTZRSsQm8Eh7halbJZVmx67f4heFY/zISgVOCcxNg19GrM5NTwtA==} - engines: {node: '>=14.0.0'} - cpu: [x64] - os: [darwin] - - sass-embedded-linux-arm64@1.93.2: - resolution: {integrity: sha512-9ftX6nd5CsShJqJ2WRg+ptaYvUW+spqZfJ88FbcKQBNFQm6L87luj3UI1rB6cP5EWrLwHA754OKxRJyzWiaN6g==} - engines: {node: '>=14.0.0'} - cpu: [arm64] - os: [linux] - - sass-embedded-linux-arm@1.93.2: - resolution: {integrity: sha512-N3+D/ToHtzwLDO+lSH05Wo6/KRxFBPnbjVHASOlHzqJnK+g5cqex7IFAp6ozzlRStySk61Rp6d+YGrqZ6/P0PA==} - engines: {node: '>=14.0.0'} - cpu: [arm] - os: [linux] - - sass-embedded-linux-musl-arm64@1.93.2: - resolution: {integrity: sha512-+3EHuDPkMiAX5kytsjEC1bKZCawB9J6pm2eBIzzLMPWbf5xdx++vO1DpT7hD4bm4ZGn0eVHgSOKIfP6CVz6tVg==} - engines: {node: '>=14.0.0'} - cpu: [arm64] - os: [linux] - - sass-embedded-linux-musl-arm@1.93.2: - resolution: {integrity: sha512-XBTvx66yRenvEsp3VaJCb3HQSyqCsUh7R+pbxcN5TuzueybZi0LXvn9zneksdXcmjACMlMpIVXi6LyHPQkYc8A==} - engines: {node: '>=14.0.0'} - cpu: [arm] - os: [linux] - - sass-embedded-linux-musl-riscv64@1.93.2: - resolution: {integrity: sha512-0sB5kmVZDKTYzmCSlTUnjh6mzOhzmQiW/NNI5g8JS4JiHw2sDNTvt1dsFTuqFkUHyEOY3ESTsfHHBQV8Ip4bEA==} - engines: {node: '>=14.0.0'} - cpu: [riscv64] - os: [linux] - - sass-embedded-linux-musl-x64@1.93.2: - resolution: {integrity: sha512-t3ejQ+1LEVuHy7JHBI2tWHhoMfhedUNDjGJR2FKaLgrtJntGnyD1RyX0xb3nuqL/UXiEAtmTmZY+Uh3SLUe1Hg==} - engines: {node: '>=14.0.0'} - cpu: [x64] - os: [linux] - - sass-embedded-linux-riscv64@1.93.2: - resolution: {integrity: sha512-e7AndEwAbFtXaLy6on4BfNGTr3wtGZQmypUgYpSNVcYDO+CWxatKVY4cxbehMPhxG9g5ru+eaMfynvhZt7fLaA==} - engines: {node: '>=14.0.0'} - cpu: [riscv64] - os: [linux] - - sass-embedded-linux-x64@1.93.2: - resolution: {integrity: sha512-U3EIUZQL11DU0xDDHXexd4PYPHQaSQa2hzc4EzmhHqrAj+TyfYO94htjWOd+DdTPtSwmLp+9cTWwPZBODzC96w==} - engines: {node: '>=14.0.0'} - cpu: [x64] - os: [linux] - - sass-embedded-unknown-all@1.93.2: - resolution: {integrity: sha512-7VnaOmyewcXohiuoFagJ3SK5ddP9yXpU0rzz+pZQmS1/+5O6vzyFCUoEt3HDRaLctH4GT3nUGoK1jg0ae62IfQ==} - os: ['!android', '!darwin', '!linux', '!win32'] - - sass-embedded-win32-arm64@1.93.2: - resolution: {integrity: sha512-Y90DZDbQvtv4Bt0GTXKlcT9pn4pz8AObEjFF8eyul+/boXwyptPZ/A1EyziAeNaIEIfxyy87z78PUgCeGHsx3Q==} - engines: {node: '>=14.0.0'} - cpu: [arm64] - os: [win32] - - sass-embedded-win32-x64@1.93.2: - resolution: {integrity: sha512-BbSucRP6PVRZGIwlEBkp+6VQl2GWdkWFMN+9EuOTPrLxCJZoq+yhzmbjspd3PeM8+7WJ7AdFu/uRYdO8tor1iQ==} - engines: {node: '>=14.0.0'} - cpu: [x64] - os: [win32] - - sass-embedded@1.93.2: - resolution: {integrity: sha512-FvQdkn2dZ8DGiLgi0Uf4zsj7r/BsiLImNa5QJ10eZalY6NfZyjrmWGFcuCN5jNwlDlXFJnftauv+UtvBKLvepQ==} - engines: {node: '>=16.0.0'} - hasBin: true - - sass@1.93.2: - resolution: {integrity: sha512-t+YPtOQHpGW1QWsh1CHQ5cPIr9lbbGZLZnbihP/D/qZj/yuV68m8qarcV17nvkOX81BCrvzAlq2klCQFZghyTg==} - engines: {node: '>=14.0.0'} - hasBin: true - - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - - schema-utils@4.3.3: - resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} - engines: {node: '>= 10.13.0'} - - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - semver@7.7.3: - resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} - engines: {node: '>=10'} - hasBin: true - - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - - set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - - set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} - - set-proto@1.0.0: - resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} - engines: {node: '>= 0.4'} - - setimmediate@1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - side-channel-list@1.0.0: - resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} - engines: {node: '>= 0.4'} - - side-channel-map@1.0.1: - resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} - engines: {node: '>= 0.4'} - - side-channel-weakmap@1.0.2: - resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} - engines: {node: '>= 0.4'} - - side-channel@1.1.0: - resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} - engines: {node: '>= 0.4'} - - sirv@2.0.4: - resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} - engines: {node: '>= 10'} - - slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - smob@1.5.0: - resolution: {integrity: sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==} - - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - - source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - - source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - stable@0.1.8: - resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} - deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' - - stackframe@1.3.4: - resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - - stop-iteration-iterator@1.1.0: - resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} - engines: {node: '>= 0.4'} - - storybook-builder-rsbuild@1.0.3: - resolution: {integrity: sha512-kooRswiovYRG2nzckbGRV3SRWZk4+ycC5hqx6yCxrcvUgDuurjVrYmStlFd3J8NEKiyxNYl+ZrUkTbC8+MqUJg==} - peerDependencies: - '@rsbuild/core': ^1.0.1 - storybook: ^8.2.1 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - storybook-react-rsbuild@1.0.3: - resolution: {integrity: sha512-4pJPrQ/860Jp2WghQEFPCcwLa53M8h9qMy+qOCgubUBrxo8+66AMEQlIUO+lYFfSD1NkoxG3krgjiNmoSAoQww==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@rsbuild/core': ^1.0.1 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.2.1 - typescript: '>= 4.2.x' - peerDependenciesMeta: - typescript: - optional: true - - storybook@8.6.15: - resolution: {integrity: sha512-Ob7DMlwWx8s7dMvcQ3xPc02TvUeralb+xX3oaPRk9wY9Hc6M1IBC/7cEoITkSmRS2v38DHubC+mtEKNc1u2gQg==} - hasBin: true - peerDependencies: - prettier: ^2 || ^3 - peerDependenciesMeta: - prettier: - optional: true - - string-hash@1.1.3: - resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} - - string.prototype.matchall@4.0.12: - resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} - engines: {node: '>= 0.4'} - - string.prototype.repeat@1.0.0: - resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} - - string.prototype.trim@1.2.10: - resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} - engines: {node: '>= 0.4'} - - string.prototype.trimend@1.0.9: - resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} - engines: {node: '>= 0.4'} - - string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - strip-ansi@7.1.2: - resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} - engines: {node: '>=12'} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} - - strip-indent@4.1.1: - resolution: {integrity: sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==} - engines: {node: '>=12'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - style-inject@0.3.0: - resolution: {integrity: sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==} - - style-to-js@1.1.18: - resolution: {integrity: sha512-JFPn62D4kJaPTnhFUI244MThx+FEGbi+9dw1b9yBBQ+1CZpV7QAT8kUtJ7b7EUNdHajjF/0x8fT+16oLJoojLg==} - - style-to-object@1.0.11: - resolution: {integrity: sha512-5A560JmXr7wDyGLK12Nq/EYS38VkGlglVzkis1JEdbGWSnbQIEhZzTJhzURXN5/8WwwFCs/f/VVcmkTppbXLow==} - - stylehacks@5.1.1: - resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} - engines: {node: ^10 || ^12 || >=14.0} - peerDependencies: - postcss: '>=8.4.31' - - stylis@4.2.0: - resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-color@8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - svgo@2.8.0: - resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} - engines: {node: '>=10.13.0'} - hasBin: true - - sync-child-process@1.0.2: - resolution: {integrity: sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==} - engines: {node: '>=16.0.0'} - - sync-message-port@1.1.3: - resolution: {integrity: sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==} - engines: {node: '>=16.0.0'} - - synckit@0.11.11: - resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} - engines: {node: ^14.18.0 || >=16.0.0} - - tapable@2.3.0: - resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} - engines: {node: '>=6'} - - terser-webpack-plugin@5.3.14: - resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - - terser@5.44.0: - resolution: {integrity: sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==} - engines: {node: '>=10'} - hasBin: true - - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - - thingies@2.5.0: - resolution: {integrity: sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==} - engines: {node: '>=10.18'} - peerDependencies: - tslib: ^2 - - tiny-invariant@1.3.3: - resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - - tiny-warning@1.0.3: - resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} - - tinyglobby@0.2.15: - resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} - engines: {node: '>=12.0.0'} - - tinyrainbow@1.2.0: - resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} - engines: {node: '>=14.0.0'} - - tinyspy@3.0.2: - resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} - engines: {node: '>=14.0.0'} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - totalist@3.0.1: - resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} - engines: {node: '>=6'} - - tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - - tree-dump@1.1.0: - resolution: {integrity: sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==} - engines: {node: '>=10.0'} - peerDependencies: - tslib: '2' - - ts-api-utils@1.4.3: - resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} - engines: {node: '>=16'} - peerDependencies: - typescript: '>=4.2.0' - - ts-checker-rspack-plugin@1.1.6: - resolution: {integrity: sha512-DjSnkHzPMQegh8FHOKXFx3u5yCO8U9Mt0EubJBcEFd95rcgo9Xs1FWREeFX3iFMCF8hFyAFVitvkruR4iwH31g==} - peerDependencies: - '@rspack/core': ^1.0.0 - typescript: '>=3.8.0' - peerDependenciesMeta: - '@rspack/core': - optional: true - - ts-dedent@2.2.0: - resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} - engines: {node: '>=6.10'} - - tsconfig-paths@4.2.0: - resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} - engines: {node: '>=6'} - - tslib@1.14.1: - resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - - tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - - tsutils@3.21.0: - resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} - engines: {node: '>= 6'} - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - - tween-functions@1.2.0: - resolution: {integrity: sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA==} - - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - typed-array-buffer@1.0.3: - resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} - engines: {node: '>= 0.4'} - - typed-array-byte-length@1.0.3: - resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} - engines: {node: '>= 0.4'} - - typed-array-byte-offset@1.0.4: - resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} - engines: {node: '>= 0.4'} - - typed-array-length@1.0.7: - resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} - engines: {node: '>= 0.4'} - - typescript-eslint@8.11.0: - resolution: {integrity: sha512-cBRGnW3FSlxaYwU8KfAewxFK5uzeOAp0l2KebIlPDOT5olVi65KDG/yjBooPBG0kGW/HLkoz1c/iuBFehcS3IA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} - engines: {node: '>=14.17'} - hasBin: true - - ua-parser-js@1.0.41: - resolution: {integrity: sha512-LbBDqdIC5s8iROCUjMbW1f5dJQTEFB1+KO9ogbvlb3nm9n4YHa5p4KTvFPWvh2Hs8gZMBuiB1/8+pdfe/tDPug==} - hasBin: true - - unbox-primitive@1.1.0: - resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} - engines: {node: '>= 0.4'} - - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - undici-types@7.16.0: - resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} - - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - - unplugin@1.16.1: - resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==} - engines: {node: '>=14.0.0'} - - update-browserslist-db@1.1.3: - resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - url@0.11.4: - resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} - engines: {node: '>= 0.4'} - - use-composed-ref@1.4.0: - resolution: {integrity: sha512-djviaxuOOh7wkj0paeO1Q/4wMZ8Zrnag5H6yBvzN7AKKe8beOaED9SF5/ByLqsku8NP4zQqsvM2u3ew/tJK8/w==} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - use-isomorphic-layout-effect@1.2.1: - resolution: {integrity: sha512-tpZZ+EX0gaghDAiFR37hj5MgY6ZN55kLiPkJsKxBMZ6GZdOSPJXiOzPM984oPYZ5AnehYx5WQp1+ME8I/P/pRA==} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - use-latest@1.3.0: - resolution: {integrity: sha512-mhg3xdm9NaM8q+gLT8KryJPnRFOz1/5XPBhmDEVZK1webPzDjrPk7f/mbpeLqTgB9msytYWANxgALOCJKnLvcQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - use-sync-external-store@1.6.0: - resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - util@0.12.5: - resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} - - uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - - validate.io-array@1.0.6: - resolution: {integrity: sha512-DeOy7CnPEziggrOO5CZhVKJw6S3Yi7e9e65R1Nl/RTN1vTQKnzjfvks0/8kQ40FP/dsjRAOd4hxmJ7uLa6vxkg==} - - validate.io-function@1.0.2: - resolution: {integrity: sha512-LlFybRJEriSuBnUhQyG5bwglhh50EpTL2ul23MPIuR1odjO7XaMLFV8vHGwp7AZciFxtYOeiSCT5st+XSPONiQ==} - - validate.io-integer-array@1.0.0: - resolution: {integrity: sha512-mTrMk/1ytQHtCY0oNO3dztafHYyGU88KL+jRxWuzfOmQb+4qqnWmI+gykvGp8usKZOM0H7keJHEbRaFiYA0VrA==} - - validate.io-integer@1.0.5: - resolution: {integrity: sha512-22izsYSLojN/P6bppBqhgUDjCkr5RY2jd+N2a3DCAUey8ydvrZ/OkGvFPR7qfOpwR2LC5p4Ngzxz36g5Vgr/hQ==} - - validate.io-number@1.0.3: - resolution: {integrity: sha512-kRAyotcbNaSYoDnXvb4MHg/0a1egJdLwS6oJ38TJY7aw9n93Fl/3blIXdyYvPOp55CNxywooG/3BcrwNrBpcSg==} - - varint@6.0.0: - resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==} - - vite@6.4.1: - resolution: {integrity: sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - jiti: '>=1.21.0' - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - - void-elements@3.1.0: - resolution: {integrity: sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==} - engines: {node: '>=0.10.0'} - - watchpack@2.4.4: - resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} - engines: {node: '>=10.13.0'} - - web-vitals@4.2.4: - resolution: {integrity: sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==} - - webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - - webpack-sources@3.3.3: - resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} - engines: {node: '>=10.13.0'} - - webpack-virtual-modules@0.6.2: - resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - - webpack@5.102.1: - resolution: {integrity: sha512-7h/weGm9d/ywQ6qzJ+Xy+r9n/3qgp/thalBbpOi5i223dPXKi04IBtqPN9nTd+jBc7QKfvDbaBnFipYp4sJAUQ==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - - whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - - which-boxed-primitive@1.1.1: - resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} - engines: {node: '>= 0.4'} - - which-builtin-type@1.2.1: - resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} - engines: {node: '>= 0.4'} - - which-collection@1.0.2: - resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} - engines: {node: '>= 0.4'} - - which-typed-array@1.1.19: - resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} - engines: {node: '>= 0.4'} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - - ws@8.18.3: - resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - - yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - zustand@4.5.7: - resolution: {integrity: sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==} - engines: {node: '>=12.7.0'} - peerDependencies: - '@types/react': '>=16.8' - immer: '>=9.0.6' - react: '>=16.8' - peerDependenciesMeta: - '@types/react': - optional: true - immer: - optional: true - react: - optional: true - -snapshots: - - '@adobe/css-tools@4.4.4': {} - - '@ast-grep/napi-darwin-arm64@0.37.0': - optional: true - - '@ast-grep/napi-darwin-x64@0.37.0': - optional: true - - '@ast-grep/napi-linux-arm64-gnu@0.37.0': - optional: true - - '@ast-grep/napi-linux-arm64-musl@0.37.0': - optional: true - - '@ast-grep/napi-linux-x64-gnu@0.37.0': - optional: true - - '@ast-grep/napi-linux-x64-musl@0.37.0': - optional: true - - '@ast-grep/napi-win32-arm64-msvc@0.37.0': - optional: true - - '@ast-grep/napi-win32-ia32-msvc@0.37.0': - optional: true - - '@ast-grep/napi-win32-x64-msvc@0.37.0': - optional: true - - '@ast-grep/napi@0.37.0': - optionalDependencies: - '@ast-grep/napi-darwin-arm64': 0.37.0 - '@ast-grep/napi-darwin-x64': 0.37.0 - '@ast-grep/napi-linux-arm64-gnu': 0.37.0 - '@ast-grep/napi-linux-arm64-musl': 0.37.0 - '@ast-grep/napi-linux-x64-gnu': 0.37.0 - '@ast-grep/napi-linux-x64-musl': 0.37.0 - '@ast-grep/napi-win32-arm64-msvc': 0.37.0 - '@ast-grep/napi-win32-ia32-msvc': 0.37.0 - '@ast-grep/napi-win32-x64-msvc': 0.37.0 - - '@babel/code-frame@7.27.1': - dependencies: - '@babel/helper-validator-identifier': 7.27.1 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - '@babel/compat-data@7.28.4': {} - - '@babel/core@7.28.4': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.3 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) - '@babel/helpers': 7.28.4 - '@babel/parser': 7.28.4 - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 - '@jridgewell/remapping': 2.3.5 - convert-source-map: 2.0.0 - debug: 4.4.3 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.28.3': - dependencies: - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - jsesc: 3.1.0 - - '@babel/helper-compilation-targets@7.27.2': - dependencies: - '@babel/compat-data': 7.28.4 - '@babel/helper-validator-option': 7.27.1 - browserslist: 4.26.3 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-globals@7.28.0': {} - - '@babel/helper-module-imports@7.27.1': - dependencies: - '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4)': - dependencies: - '@babel/core': 7.28.4 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.4 - transitivePeerDependencies: - - supports-color - - '@babel/helper-string-parser@7.27.1': {} - - '@babel/helper-validator-identifier@7.27.1': {} - - '@babel/helper-validator-option@7.27.1': {} - - '@babel/helpers@7.28.4': - dependencies: - '@babel/template': 7.27.2 - '@babel/types': 7.28.4 - - '@babel/parser@7.28.4': - dependencies: - '@babel/types': 7.28.4 - - '@babel/runtime@7.28.4': {} - - '@babel/template@7.27.2': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 - - '@babel/traverse@7.28.4': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.3 - '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.4 - '@babel/template': 7.27.2 - '@babel/types': 7.28.4 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - - '@babel/types@7.28.4': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - - '@bufbuild/protobuf@2.9.0': {} - - '@chromatic-com/storybook@1.9.0(react@18.3.1)': - dependencies: - chromatic: 11.29.0 - filesize: 10.1.6 - jsonfile: 6.2.0 - react-confetti: 6.4.0(react@18.3.1) - strip-ansi: 7.1.2 - transitivePeerDependencies: - - '@chromatic-com/cypress' - - '@chromatic-com/playwright' - - react - - '@dnd-kit/accessibility@3.1.1(react@18.3.1)': - dependencies: - react: 18.3.1 - tslib: 2.8.1 - - '@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@dnd-kit/accessibility': 3.1.1(react@18.3.1) - '@dnd-kit/utilities': 3.2.2(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - tslib: 2.8.1 - - '@dnd-kit/modifiers@7.0.0(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': - dependencies: - '@dnd-kit/core': 6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@dnd-kit/utilities': 3.2.2(react@18.3.1) - react: 18.3.1 - tslib: 2.8.1 - - '@dnd-kit/sortable@8.0.0(@dnd-kit/core@6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': - dependencies: - '@dnd-kit/core': 6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@dnd-kit/utilities': 3.2.2(react@18.3.1) - react: 18.3.1 - tslib: 2.8.1 - - '@dnd-kit/utilities@3.2.2(react@18.3.1)': - dependencies: - react: 18.3.1 - tslib: 2.8.1 - - '@emnapi/core@1.5.0': - dependencies: - '@emnapi/wasi-threads': 1.1.0 - tslib: 2.8.1 - optional: true - - '@emnapi/runtime@1.5.0': - dependencies: - tslib: 2.8.1 - optional: true - - '@emnapi/wasi-threads@1.1.0': - dependencies: - tslib: 2.8.1 - optional: true - - '@emotion/babel-plugin@11.13.5': - dependencies: - '@babel/helper-module-imports': 7.27.1 - '@babel/runtime': 7.28.4 - '@emotion/hash': 0.9.2 - '@emotion/memoize': 0.9.0 - '@emotion/serialize': 1.3.3 - babel-plugin-macros: 3.1.0 - convert-source-map: 1.9.0 - escape-string-regexp: 4.0.0 - find-root: 1.1.0 - source-map: 0.5.7 - stylis: 4.2.0 - transitivePeerDependencies: - - supports-color - - '@emotion/cache@11.14.0': - dependencies: - '@emotion/memoize': 0.9.0 - '@emotion/sheet': 1.4.0 - '@emotion/utils': 1.4.2 - '@emotion/weak-memoize': 0.4.0 - stylis: 4.2.0 - - '@emotion/hash@0.9.2': {} - - '@emotion/is-prop-valid@1.4.0': - dependencies: - '@emotion/memoize': 0.9.0 - - '@emotion/memoize@0.9.0': {} - - '@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.28.4 - '@emotion/babel-plugin': 11.13.5 - '@emotion/cache': 11.14.0 - '@emotion/serialize': 1.3.3 - '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@18.3.1) - '@emotion/utils': 1.4.2 - '@emotion/weak-memoize': 0.4.0 - hoist-non-react-statics: 3.3.2 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.2.79 - transitivePeerDependencies: - - supports-color - - '@emotion/serialize@1.3.3': - dependencies: - '@emotion/hash': 0.9.2 - '@emotion/memoize': 0.9.0 - '@emotion/unitless': 0.10.0 - '@emotion/utils': 1.4.2 - csstype: 3.1.3 - - '@emotion/sheet@1.4.0': {} - - '@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.28.4 - '@emotion/babel-plugin': 11.13.5 - '@emotion/is-prop-valid': 1.4.0 - '@emotion/react': 11.13.5(@types/react@18.2.79)(react@18.3.1) - '@emotion/serialize': 1.3.3 - '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@18.3.1) - '@emotion/utils': 1.4.2 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.2.79 - transitivePeerDependencies: - - supports-color - - '@emotion/unitless@0.10.0': {} - - '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@18.3.1)': - dependencies: - react: 18.3.1 - - '@emotion/utils@1.4.2': {} - - '@emotion/weak-memoize@0.4.0': {} - - '@esbuild/aix-ppc64@0.25.11': - optional: true - - '@esbuild/android-arm64@0.25.11': - optional: true - - '@esbuild/android-arm@0.25.11': - optional: true - - '@esbuild/android-x64@0.25.11': - optional: true - - '@esbuild/darwin-arm64@0.25.11': - optional: true - - '@esbuild/darwin-x64@0.25.11': - optional: true - - '@esbuild/freebsd-arm64@0.25.11': - optional: true - - '@esbuild/freebsd-x64@0.25.11': - optional: true - - '@esbuild/linux-arm64@0.25.11': - optional: true - - '@esbuild/linux-arm@0.25.11': - optional: true - - '@esbuild/linux-ia32@0.25.11': - optional: true - - '@esbuild/linux-loong64@0.25.11': - optional: true - - '@esbuild/linux-mips64el@0.25.11': - optional: true - - '@esbuild/linux-ppc64@0.25.11': - optional: true - - '@esbuild/linux-riscv64@0.25.11': - optional: true - - '@esbuild/linux-s390x@0.25.11': - optional: true - - '@esbuild/linux-x64@0.25.11': - optional: true - - '@esbuild/netbsd-arm64@0.25.11': - optional: true - - '@esbuild/netbsd-x64@0.25.11': - optional: true - - '@esbuild/openbsd-arm64@0.25.11': - optional: true - - '@esbuild/openbsd-x64@0.25.11': - optional: true - - '@esbuild/openharmony-arm64@0.25.11': - optional: true - - '@esbuild/sunos-x64@0.25.11': - optional: true - - '@esbuild/win32-arm64@0.25.11': - optional: true - - '@esbuild/win32-ia32@0.25.11': - optional: true - - '@esbuild/win32-x64@0.25.11': - optional: true - - '@eslint-community/eslint-utils@4.9.0(eslint@9.9.1(jiti@2.6.1))': - dependencies: - eslint: 9.9.1(jiti@2.6.1) - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.12.1': {} - - '@eslint/config-array@0.18.0': - dependencies: - '@eslint/object-schema': 2.1.7 - debug: 4.4.3 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - '@eslint/eslintrc@3.3.1': - dependencies: - ajv: 6.12.6 - debug: 4.4.3 - espree: 10.4.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.1 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@9.9.1': {} - - '@eslint/object-schema@2.1.7': {} - - '@fontsource/quicksand@5.0.20': {} - - '@fontsource/roboto-condensed@5.0.18': {} - - '@fontsource/roboto@5.0.15': {} - - '@fontsource/ubuntu-mono@5.0.22': {} - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/retry@0.3.1': {} - - '@isaacs/balanced-match@4.0.1': {} - - '@isaacs/brace-expansion@5.0.0': - dependencies: - '@isaacs/balanced-match': 4.0.1 - - '@joshwooding/vite-plugin-react-docgen-typescript@0.5.0(typescript@5.9.3)(vite@6.4.1(@types/node@24.9.0)(jiti@2.6.1)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))': - dependencies: - glob: 13.0.0 - magic-string: 0.27.0 - react-docgen-typescript: 2.4.0(typescript@5.9.3) - vite: 6.4.1(@types/node@24.9.0)(jiti@2.6.1)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0) - optionalDependencies: - typescript: 5.9.3 - - '@jridgewell/gen-mapping@0.3.13': - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.31 - - '@jridgewell/remapping@2.3.5': - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/source-map@0.3.11': - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - - '@jridgewell/sourcemap-codec@1.5.5': {} - - '@jridgewell/trace-mapping@0.3.31': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 - - '@jsonjoy.com/base64@1.1.2(tslib@2.8.1)': - dependencies: - tslib: 2.8.1 - - '@jsonjoy.com/buffers@1.2.1(tslib@2.8.1)': - dependencies: - tslib: 2.8.1 - - '@jsonjoy.com/codegen@1.0.0(tslib@2.8.1)': - dependencies: - tslib: 2.8.1 - - '@jsonjoy.com/json-pack@1.21.0(tslib@2.8.1)': - dependencies: - '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) - '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) - '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) - '@jsonjoy.com/json-pointer': 1.0.2(tslib@2.8.1) - '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) - hyperdyperid: 1.2.0 - thingies: 2.5.0(tslib@2.8.1) - tree-dump: 1.1.0(tslib@2.8.1) - tslib: 2.8.1 - - '@jsonjoy.com/json-pointer@1.0.2(tslib@2.8.1)': - dependencies: - '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) - '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) - tslib: 2.8.1 - - '@jsonjoy.com/util@1.9.0(tslib@2.8.1)': - dependencies: - '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) - '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) - tslib: 2.8.1 - - '@mdx-js/react@3.1.1(@types/react@18.2.79)(react@18.3.1)': - dependencies: - '@types/mdx': 2.0.13 - '@types/react': 18.2.79 - react: 18.3.1 - - '@module-federation/error-codes@0.18.0': {} - - '@module-federation/runtime-core@0.18.0': - dependencies: - '@module-federation/error-codes': 0.18.0 - '@module-federation/sdk': 0.18.0 - - '@module-federation/runtime-tools@0.18.0': - dependencies: - '@module-federation/runtime': 0.18.0 - '@module-federation/webpack-bundler-runtime': 0.18.0 - - '@module-federation/runtime-tools@0.5.1': - dependencies: - '@module-federation/runtime': 0.5.1 - '@module-federation/webpack-bundler-runtime': 0.5.1 - - '@module-federation/runtime@0.18.0': - dependencies: - '@module-federation/error-codes': 0.18.0 - '@module-federation/runtime-core': 0.18.0 - '@module-federation/sdk': 0.18.0 - - '@module-federation/runtime@0.5.1': - dependencies: - '@module-federation/sdk': 0.5.1 - - '@module-federation/sdk@0.18.0': {} - - '@module-federation/sdk@0.5.1': {} - - '@module-federation/webpack-bundler-runtime@0.18.0': - dependencies: - '@module-federation/runtime': 0.18.0 - '@module-federation/sdk': 0.18.0 - - '@module-federation/webpack-bundler-runtime@0.5.1': - dependencies: - '@module-federation/runtime': 0.5.1 - '@module-federation/sdk': 0.5.1 - - '@mui/core-downloads-tracker@6.5.0': {} - - '@mui/icons-material@5.16.14(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.2.79)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.28.4 - '@mui/material': 6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.2.79 - - '@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.28.4 - '@mui/core-downloads-tracker': 6.5.0 - '@mui/system': 6.5.0(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1) - '@mui/types': 7.4.7(@types/react@18.2.79) - '@mui/utils': 6.4.9(@types/react@18.2.79)(react@18.3.1) - '@popperjs/core': 2.11.8 - '@types/react-transition-group': 4.4.12(@types/react@18.2.79) - clsx: 2.1.1 - csstype: 3.1.3 - prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-is: 18.3.1 - react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - optionalDependencies: - '@emotion/react': 11.13.5(@types/react@18.2.79)(react@18.3.1) - '@emotion/styled': 11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1) - '@types/react': 18.2.79 - - '@mui/private-theming@5.17.1(@types/react@18.2.79)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.28.4 - '@mui/utils': 5.17.1(@types/react@18.2.79)(react@18.3.1) - prop-types: 15.8.1 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.2.79 - - '@mui/private-theming@6.4.9(@types/react@18.2.79)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.28.4 - '@mui/utils': 6.4.9(@types/react@18.2.79)(react@18.3.1) - prop-types: 15.8.1 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.2.79 - - '@mui/styled-engine@6.5.0(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.28.4 - '@emotion/cache': 11.14.0 - '@emotion/serialize': 1.3.3 - '@emotion/sheet': 1.4.0 - csstype: 3.1.3 - prop-types: 15.8.1 - react: 18.3.1 - optionalDependencies: - '@emotion/react': 11.13.5(@types/react@18.2.79)(react@18.3.1) - '@emotion/styled': 11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1) - - '@mui/styles@5.16.14(@types/react@18.2.79)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.28.4 - '@emotion/hash': 0.9.2 - '@mui/private-theming': 5.17.1(@types/react@18.2.79)(react@18.3.1) - '@mui/types': 7.4.7(@types/react@18.2.79) - '@mui/utils': 5.17.1(@types/react@18.2.79)(react@18.3.1) - clsx: 2.1.1 - csstype: 3.1.3 - hoist-non-react-statics: 3.3.2 - jss: 10.10.0 - jss-plugin-camel-case: 10.10.0 - jss-plugin-default-unit: 10.10.0 - jss-plugin-global: 10.10.0 - jss-plugin-nested: 10.10.0 - jss-plugin-props-sort: 10.10.0 - jss-plugin-rule-value-function: 10.10.0 - jss-plugin-vendor-prefixer: 10.10.0 - prop-types: 15.8.1 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.2.79 - - '@mui/system@6.5.0(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.28.4 - '@mui/private-theming': 6.4.9(@types/react@18.2.79)(react@18.3.1) - '@mui/styled-engine': 6.5.0(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(react@18.3.1) - '@mui/types': 7.2.24(@types/react@18.2.79) - '@mui/utils': 6.4.9(@types/react@18.2.79)(react@18.3.1) - clsx: 2.1.1 - csstype: 3.1.3 - prop-types: 15.8.1 - react: 18.3.1 - optionalDependencies: - '@emotion/react': 11.13.5(@types/react@18.2.79)(react@18.3.1) - '@emotion/styled': 11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1) - '@types/react': 18.2.79 - - '@mui/types@7.2.24(@types/react@18.2.79)': - optionalDependencies: - '@types/react': 18.2.79 - - '@mui/types@7.4.7(@types/react@18.2.79)': - dependencies: - '@babel/runtime': 7.28.4 - optionalDependencies: - '@types/react': 18.2.79 - - '@mui/utils@5.17.1(@types/react@18.2.79)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.28.4 - '@mui/types': 7.2.24(@types/react@18.2.79) - '@types/prop-types': 15.7.15 - clsx: 2.1.1 - prop-types: 15.8.1 - react: 18.3.1 - react-is: 19.2.0 - optionalDependencies: - '@types/react': 18.2.79 - - '@mui/utils@6.4.9(@types/react@18.2.79)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.28.4 - '@mui/types': 7.2.24(@types/react@18.2.79) - '@types/prop-types': 15.7.15 - clsx: 2.1.1 - prop-types: 15.8.1 - react: 18.3.1 - react-is: 19.2.0 - optionalDependencies: - '@types/react': 18.2.79 - - '@mui/x-data-grid@7.19.0(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@6.5.0(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.28.4 - '@mui/material': 6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/system': 6.5.0(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1) - '@mui/utils': 5.17.1(@types/react@18.2.79)(react@18.3.1) - '@mui/x-internals': 7.18.0(@types/react@18.2.79)(react@18.3.1) - clsx: 2.1.1 - prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reselect: 5.1.1 - optionalDependencies: - '@emotion/react': 11.13.5(@types/react@18.2.79)(react@18.3.1) - '@emotion/styled': 11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1) - transitivePeerDependencies: - - '@types/react' - - '@mui/x-date-pickers@7.18.0(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@6.5.0(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.28.4 - '@mui/material': 6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/system': 6.5.0(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1) - '@mui/utils': 5.17.1(@types/react@18.2.79)(react@18.3.1) - '@mui/x-internals': 7.18.0(@types/react@18.2.79)(react@18.3.1) - '@types/react-transition-group': 4.4.12(@types/react@18.2.79) - clsx: 2.1.1 - prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - optionalDependencies: - '@emotion/react': 11.13.5(@types/react@18.2.79)(react@18.3.1) - '@emotion/styled': 11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1) - moment: 2.30.1 - transitivePeerDependencies: - - '@types/react' - - '@mui/x-internals@7.18.0(@types/react@18.2.79)(react@18.3.1)': - dependencies: - '@babel/runtime': 7.28.4 - '@mui/utils': 5.17.1(@types/react@18.2.79)(react@18.3.1) - react: 18.3.1 - transitivePeerDependencies: - - '@types/react' - - '@napi-rs/wasm-runtime@1.0.7': - dependencies: - '@emnapi/core': 1.5.0 - '@emnapi/runtime': 1.5.0 - '@tybys/wasm-util': 0.10.1 - optional: true - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.1 - - '@parcel/watcher-android-arm64@2.5.1': - optional: true - - '@parcel/watcher-darwin-arm64@2.5.1': - optional: true - - '@parcel/watcher-darwin-x64@2.5.1': - optional: true - - '@parcel/watcher-freebsd-x64@2.5.1': - optional: true - - '@parcel/watcher-linux-arm-glibc@2.5.1': - optional: true - - '@parcel/watcher-linux-arm-musl@2.5.1': - optional: true - - '@parcel/watcher-linux-arm64-glibc@2.5.1': - optional: true - - '@parcel/watcher-linux-arm64-musl@2.5.1': - optional: true - - '@parcel/watcher-linux-x64-glibc@2.5.1': - optional: true - - '@parcel/watcher-linux-x64-musl@2.5.1': - optional: true - - '@parcel/watcher-win32-arm64@2.5.1': - optional: true - - '@parcel/watcher-win32-ia32@2.5.1': - optional: true - - '@parcel/watcher-win32-x64@2.5.1': - optional: true - - '@parcel/watcher@2.5.1': - dependencies: - detect-libc: 1.0.3 - is-glob: 4.0.3 - micromatch: 4.0.8 - node-addon-api: 7.1.1 - optionalDependencies: - '@parcel/watcher-android-arm64': 2.5.1 - '@parcel/watcher-darwin-arm64': 2.5.1 - '@parcel/watcher-darwin-x64': 2.5.1 - '@parcel/watcher-freebsd-x64': 2.5.1 - '@parcel/watcher-linux-arm-glibc': 2.5.1 - '@parcel/watcher-linux-arm-musl': 2.5.1 - '@parcel/watcher-linux-arm64-glibc': 2.5.1 - '@parcel/watcher-linux-arm64-musl': 2.5.1 - '@parcel/watcher-linux-x64-glibc': 2.5.1 - '@parcel/watcher-linux-x64-musl': 2.5.1 - '@parcel/watcher-win32-arm64': 2.5.1 - '@parcel/watcher-win32-ia32': 2.5.1 - '@parcel/watcher-win32-x64': 2.5.1 - optional: true - - '@pkgr/core@0.2.9': {} - - '@polka/url@1.0.0-next.29': {} - - '@popperjs/core@2.11.8': {} - - '@posthog/core@1.2.4': {} - - '@remix-run/router@1.19.2': {} - - '@rjsf/core@5.20.1(@rjsf/utils@5.20.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@rjsf/utils': 5.20.1(react@18.3.1) - lodash: 4.17.21 - lodash-es: 4.17.21 - markdown-to-jsx: 7.7.16(react@18.3.1) - nanoid: 3.3.11 - prop-types: 15.8.1 - react: 18.3.1 - - '@rjsf/mui@5.20.1(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@mui/icons-material@5.16.14(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@rjsf/core@5.20.1(@rjsf/utils@5.20.1(react@18.3.1))(react@18.3.1))(@rjsf/utils@5.20.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@emotion/react': 11.13.5(@types/react@18.2.79)(react@18.3.1) - '@emotion/styled': 11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1) - '@mui/icons-material': 5.16.14(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.2.79)(react@18.3.1) - '@mui/material': 6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@rjsf/core': 5.20.1(@rjsf/utils@5.20.1(react@18.3.1))(react@18.3.1) - '@rjsf/utils': 5.20.1(react@18.3.1) - react: 18.3.1 - - '@rjsf/utils@5.20.1(react@18.3.1)': - dependencies: - json-schema-merge-allof: 0.8.1 - jsonpointer: 5.0.1 - lodash: 4.17.21 - lodash-es: 4.17.21 - react: 18.3.1 - react-is: 18.3.1 - - '@rjsf/validator-ajv8@5.20.1(@rjsf/utils@5.20.1(react@18.3.1))': - dependencies: - '@rjsf/utils': 5.20.1(react@18.3.1) - ajv: 8.17.1 - ajv-formats: 2.1.1(ajv@8.17.1) - lodash: 4.17.21 - lodash-es: 4.17.21 - - '@rollup/plugin-commonjs@28.0.8(rollup@4.50.2)': - dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.50.2) - commondir: 1.0.1 - estree-walker: 2.0.2 - fdir: 6.5.0(picomatch@4.0.3) - is-reference: 1.2.1 - magic-string: 0.30.19 - picomatch: 4.0.3 - optionalDependencies: - rollup: 4.50.2 - - '@rollup/plugin-node-resolve@16.0.3(rollup@4.50.2)': - dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.50.2) - '@types/resolve': 1.20.2 - deepmerge: 4.3.1 - is-module: 1.0.0 - resolve: 1.22.10 - optionalDependencies: - rollup: 4.50.2 - - '@rollup/plugin-replace@6.0.2(rollup@4.50.2)': - dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.50.2) - magic-string: 0.30.19 - optionalDependencies: - rollup: 4.50.2 - - '@rollup/plugin-terser@0.4.4(rollup@4.50.2)': - dependencies: - serialize-javascript: 6.0.2 - smob: 1.5.0 - terser: 5.44.0 - optionalDependencies: - rollup: 4.50.2 - - '@rollup/plugin-typescript@12.1.4(rollup@4.50.2)(tslib@2.8.1)(typescript@5.9.3)': - dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.50.2) - resolve: 1.22.10 - typescript: 5.9.3 - optionalDependencies: - rollup: 4.50.2 - tslib: 2.8.1 - - '@rollup/pluginutils@5.3.0(rollup@4.50.2)': - dependencies: - '@types/estree': 1.0.8 - estree-walker: 2.0.2 - picomatch: 4.0.3 - optionalDependencies: - rollup: 4.50.2 - - '@rollup/rollup-android-arm-eabi@4.50.2': - optional: true - - '@rollup/rollup-android-arm64@4.50.2': - optional: true - - '@rollup/rollup-darwin-arm64@4.50.2': - optional: true - - '@rollup/rollup-darwin-x64@4.50.2': - optional: true - - '@rollup/rollup-freebsd-arm64@4.50.2': - optional: true - - '@rollup/rollup-freebsd-x64@4.50.2': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.50.2': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.50.2': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.50.2': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.50.2': - optional: true - - '@rollup/rollup-linux-loong64-gnu@4.50.2': - optional: true - - '@rollup/rollup-linux-ppc64-gnu@4.50.2': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.50.2': - optional: true - - '@rollup/rollup-linux-riscv64-musl@4.50.2': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.50.2': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.50.2': - optional: true - - '@rollup/rollup-linux-x64-musl@4.50.2': - optional: true - - '@rollup/rollup-openharmony-arm64@4.50.2': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.50.2': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.50.2': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.50.2': - optional: true - - '@rsbuild/core@1.1.0': - dependencies: - '@rspack/core': 1.1.8(@swc/helpers@0.5.17) - '@rspack/lite-tapable': 1.0.1 - '@swc/helpers': 0.5.17 - core-js: 3.39.0 - optionalDependencies: - fsevents: 2.3.3 - - '@rsbuild/core@1.5.17': - dependencies: - '@rspack/core': 1.5.8(@swc/helpers@0.5.17) - '@rspack/lite-tapable': 1.0.1 - '@swc/helpers': 0.5.17 - core-js: 3.46.0 - jiti: 2.6.1 - - '@rsbuild/plugin-react@1.0.7(@rsbuild/core@1.1.0)': - dependencies: - '@rsbuild/core': 1.1.0 - '@rspack/plugin-react-refresh': 1.0.3(react-refresh@0.14.2) - react-refresh: 0.14.2 - transitivePeerDependencies: - - webpack-hot-middleware - - '@rsbuild/plugin-sass@1.1.0(@rsbuild/core@1.1.0)': - dependencies: - '@rsbuild/core': 1.1.0 - deepmerge: 4.3.1 - loader-utils: 2.0.4 - postcss: 8.5.6 - reduce-configs: 1.1.1 - sass-embedded: 1.93.2 - - '@rsbuild/plugin-type-check@1.2.4(@rsbuild/core@1.1.0)(@rspack/core@1.5.8(@swc/helpers@0.5.17))(typescript@5.9.3)': - dependencies: - deepmerge: 4.3.1 - json5: 2.2.3 - reduce-configs: 1.1.1 - ts-checker-rspack-plugin: 1.1.6(@rspack/core@1.5.8(@swc/helpers@0.5.17))(typescript@5.9.3) - optionalDependencies: - '@rsbuild/core': 1.1.0 - transitivePeerDependencies: - - '@rspack/core' - - typescript - - '@rslib/core@0.13.3(typescript@5.9.3)': - dependencies: - '@rsbuild/core': 1.5.17 - rsbuild-plugin-dts: 0.13.3(@rsbuild/core@1.5.17)(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - '@typescript/native-preview' - - '@rspack/binding-darwin-arm64@1.1.8': {} - - '@rspack/binding-darwin-arm64@1.5.8': - optional: true - - '@rspack/binding-darwin-x64@1.1.8': {} - - '@rspack/binding-darwin-x64@1.5.8': - optional: true - - '@rspack/binding-linux-arm64-gnu@1.1.8': - optional: true - - '@rspack/binding-linux-arm64-gnu@1.5.8': - optional: true - - '@rspack/binding-linux-arm64-musl@1.1.8': - optional: true - - '@rspack/binding-linux-arm64-musl@1.5.8': - optional: true - - '@rspack/binding-linux-x64-gnu@1.1.8': - optional: true - - '@rspack/binding-linux-x64-gnu@1.5.8': - optional: true - - '@rspack/binding-linux-x64-musl@1.1.8': - optional: true - - '@rspack/binding-linux-x64-musl@1.5.8': - optional: true - - '@rspack/binding-wasm32-wasi@1.5.8': - dependencies: - '@napi-rs/wasm-runtime': 1.0.7 - optional: true - - '@rspack/binding-win32-arm64-msvc@1.1.8': {} - - '@rspack/binding-win32-arm64-msvc@1.5.8': - optional: true - - '@rspack/binding-win32-ia32-msvc@1.1.8': - optional: true - - '@rspack/binding-win32-ia32-msvc@1.5.8': - optional: true - - '@rspack/binding-win32-x64-msvc@1.1.8': {} - - '@rspack/binding-win32-x64-msvc@1.5.8': - optional: true - - '@rspack/binding@1.1.8': - optionalDependencies: - '@rspack/binding-darwin-arm64': 1.1.8 - '@rspack/binding-darwin-x64': 1.1.8 - '@rspack/binding-linux-arm64-gnu': 1.1.8 - '@rspack/binding-linux-arm64-musl': 1.1.8 - '@rspack/binding-linux-x64-gnu': 1.1.8 - '@rspack/binding-linux-x64-musl': 1.1.8 - '@rspack/binding-win32-arm64-msvc': 1.1.8 - '@rspack/binding-win32-ia32-msvc': 1.1.8 - '@rspack/binding-win32-x64-msvc': 1.1.8 - - '@rspack/binding@1.5.8': - optionalDependencies: - '@rspack/binding-darwin-arm64': 1.5.8 - '@rspack/binding-darwin-x64': 1.5.8 - '@rspack/binding-linux-arm64-gnu': 1.5.8 - '@rspack/binding-linux-arm64-musl': 1.5.8 - '@rspack/binding-linux-x64-gnu': 1.5.8 - '@rspack/binding-linux-x64-musl': 1.5.8 - '@rspack/binding-wasm32-wasi': 1.5.8 - '@rspack/binding-win32-arm64-msvc': 1.5.8 - '@rspack/binding-win32-ia32-msvc': 1.5.8 - '@rspack/binding-win32-x64-msvc': 1.5.8 - - '@rspack/core@1.1.8(@swc/helpers@0.5.17)': - dependencies: - '@module-federation/runtime-tools': 0.5.1 - '@rspack/binding': 1.1.8 - '@rspack/lite-tapable': 1.0.1 - caniuse-lite: 1.0.30001751 - optionalDependencies: - '@swc/helpers': 0.5.17 - - '@rspack/core@1.5.8(@swc/helpers@0.5.17)': - dependencies: - '@module-federation/runtime-tools': 0.18.0 - '@rspack/binding': 1.5.8 - '@rspack/lite-tapable': 1.0.1 - optionalDependencies: - '@swc/helpers': 0.5.17 - - '@rspack/lite-tapable@1.0.1': {} - - '@rspack/plugin-react-refresh@1.0.3(react-refresh@0.14.2)': - dependencies: - error-stack-parser: 2.1.4 - html-entities: 2.6.0 - react-refresh: 0.14.2 - - '@storybook/addon-actions@8.6.15(storybook@8.6.15(prettier@3.3.3))': - dependencies: - '@storybook/global': 5.0.0 - '@types/uuid': 9.0.8 - dequal: 2.0.3 - polished: 4.3.1 - storybook: 8.6.15(prettier@3.3.3) - uuid: 9.0.1 - - '@storybook/addon-backgrounds@8.6.15(storybook@8.6.15(prettier@3.3.3))': - dependencies: - '@storybook/global': 5.0.0 - memoizerific: 1.11.3 - storybook: 8.6.15(prettier@3.3.3) - ts-dedent: 2.2.0 - - '@storybook/addon-controls@8.6.15(storybook@8.6.15(prettier@3.3.3))': - dependencies: - '@storybook/global': 5.0.0 - dequal: 2.0.3 - storybook: 8.6.15(prettier@3.3.3) - ts-dedent: 2.2.0 - - '@storybook/addon-docs@8.6.14(@types/react@18.2.79)(storybook@8.6.15(prettier@3.3.3))': - dependencies: - '@mdx-js/react': 3.1.1(@types/react@18.2.79)(react@18.3.1) - '@storybook/blocks': 8.6.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.15(prettier@3.3.3)) - '@storybook/csf-plugin': 8.6.14(storybook@8.6.15(prettier@3.3.3)) - '@storybook/react-dom-shim': 8.6.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.15(prettier@3.3.3)) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - storybook: 8.6.15(prettier@3.3.3) - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@types/react' - - '@storybook/addon-docs@8.6.15(@types/react@18.2.79)(storybook@8.6.15(prettier@3.3.3))': - dependencies: - '@mdx-js/react': 3.1.1(@types/react@18.2.79)(react@18.3.1) - '@storybook/blocks': 8.6.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.15(prettier@3.3.3)) - '@storybook/csf-plugin': 8.6.15(storybook@8.6.15(prettier@3.3.3)) - '@storybook/react-dom-shim': 8.6.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.15(prettier@3.3.3)) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - storybook: 8.6.15(prettier@3.3.3) - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@types/react' - - '@storybook/addon-essentials@8.6.15(@types/react@18.2.79)(storybook@8.6.15(prettier@3.3.3))': - dependencies: - '@storybook/addon-actions': 8.6.15(storybook@8.6.15(prettier@3.3.3)) - '@storybook/addon-backgrounds': 8.6.15(storybook@8.6.15(prettier@3.3.3)) - '@storybook/addon-controls': 8.6.15(storybook@8.6.15(prettier@3.3.3)) - '@storybook/addon-docs': 8.6.15(@types/react@18.2.79)(storybook@8.6.15(prettier@3.3.3)) - '@storybook/addon-highlight': 8.6.15(storybook@8.6.15(prettier@3.3.3)) - '@storybook/addon-measure': 8.6.15(storybook@8.6.15(prettier@3.3.3)) - '@storybook/addon-outline': 8.6.15(storybook@8.6.15(prettier@3.3.3)) - '@storybook/addon-toolbars': 8.6.15(storybook@8.6.15(prettier@3.3.3)) - '@storybook/addon-viewport': 8.6.15(storybook@8.6.15(prettier@3.3.3)) - storybook: 8.6.15(prettier@3.3.3) - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@types/react' - - '@storybook/addon-highlight@8.6.15(storybook@8.6.15(prettier@3.3.3))': - dependencies: - '@storybook/global': 5.0.0 - storybook: 8.6.15(prettier@3.3.3) - - '@storybook/addon-interactions@8.6.15(storybook@8.6.15(prettier@3.3.3))': - dependencies: - '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.6.15(storybook@8.6.15(prettier@3.3.3)) - '@storybook/test': 8.6.15(storybook@8.6.15(prettier@3.3.3)) - polished: 4.3.1 - storybook: 8.6.15(prettier@3.3.3) - ts-dedent: 2.2.0 - - '@storybook/addon-links@8.6.15(react@18.3.1)(storybook@8.6.15(prettier@3.3.3))': - dependencies: - '@storybook/global': 5.0.0 - storybook: 8.6.15(prettier@3.3.3) - ts-dedent: 2.2.0 - optionalDependencies: - react: 18.3.1 - - '@storybook/addon-measure@8.6.15(storybook@8.6.15(prettier@3.3.3))': - dependencies: - '@storybook/global': 5.0.0 - storybook: 8.6.15(prettier@3.3.3) - tiny-invariant: 1.3.3 - - '@storybook/addon-onboarding@8.6.15(storybook@8.6.15(prettier@3.3.3))': - dependencies: - storybook: 8.6.15(prettier@3.3.3) - - '@storybook/addon-outline@8.6.15(storybook@8.6.15(prettier@3.3.3))': - dependencies: - '@storybook/global': 5.0.0 - storybook: 8.6.15(prettier@3.3.3) - ts-dedent: 2.2.0 - - '@storybook/addon-toolbars@8.6.15(storybook@8.6.15(prettier@3.3.3))': - dependencies: - storybook: 8.6.15(prettier@3.3.3) - - '@storybook/addon-viewport@8.6.15(storybook@8.6.15(prettier@3.3.3))': - dependencies: - memoizerific: 1.11.3 - storybook: 8.6.15(prettier@3.3.3) - - '@storybook/blocks@8.6.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.15(prettier@3.3.3))': - dependencies: - '@storybook/icons': 1.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - storybook: 8.6.15(prettier@3.3.3) - ts-dedent: 2.2.0 - optionalDependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - '@storybook/blocks@8.6.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.15(prettier@3.3.3))': - dependencies: - '@storybook/icons': 1.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - storybook: 8.6.15(prettier@3.3.3) - ts-dedent: 2.2.0 - optionalDependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - '@storybook/builder-vite@8.6.15(storybook@8.6.15(prettier@3.3.3))(vite@6.4.1(@types/node@24.9.0)(jiti@2.6.1)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))': - dependencies: - '@storybook/csf-plugin': 8.6.15(storybook@8.6.15(prettier@3.3.3)) - browser-assert: 1.2.1 - storybook: 8.6.15(prettier@3.3.3) - ts-dedent: 2.2.0 - vite: 6.4.1(@types/node@24.9.0)(jiti@2.6.1)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0) - - '@storybook/components@8.6.15(storybook@8.6.15(prettier@3.3.3))': - dependencies: - storybook: 8.6.15(prettier@3.3.3) - - '@storybook/core-webpack@8.6.14(storybook@8.6.15(prettier@3.3.3))': - dependencies: - storybook: 8.6.15(prettier@3.3.3) - ts-dedent: 2.2.0 - - '@storybook/core@8.6.15(prettier@3.3.3)(storybook@8.6.15(prettier@3.3.3))': - dependencies: - '@storybook/theming': 8.6.15(storybook@8.6.15(prettier@3.3.3)) - better-opn: 3.0.2 - browser-assert: 1.2.1 - esbuild: 0.25.11 - esbuild-register: 3.6.0(esbuild@0.25.11) - jsdoc-type-pratt-parser: 4.8.0 - process: 0.11.10 - recast: 0.23.11 - semver: 7.7.3 - util: 0.12.5 - ws: 8.18.3 - optionalDependencies: - prettier: 3.3.3 - transitivePeerDependencies: - - bufferutil - - storybook - - supports-color - - utf-8-validate - - '@storybook/csf-plugin@8.6.14(storybook@8.6.15(prettier@3.3.3))': - dependencies: - storybook: 8.6.15(prettier@3.3.3) - unplugin: 1.16.1 - - '@storybook/csf-plugin@8.6.15(storybook@8.6.15(prettier@3.3.3))': - dependencies: - storybook: 8.6.15(prettier@3.3.3) - unplugin: 1.16.1 - - '@storybook/csf@0.0.1': - dependencies: - lodash: 4.17.21 - - '@storybook/global@5.0.0': {} - - '@storybook/icons@1.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - '@storybook/instrumenter@8.6.15(storybook@8.6.15(prettier@3.3.3))': - dependencies: - '@storybook/global': 5.0.0 - '@vitest/utils': 2.1.9 - storybook: 8.6.15(prettier@3.3.3) - - '@storybook/manager-api@8.6.15(storybook@8.6.15(prettier@3.3.3))': - dependencies: - storybook: 8.6.15(prettier@3.3.3) - - '@storybook/preview-api@8.6.15(storybook@8.6.15(prettier@3.3.3))': - dependencies: - storybook: 8.6.15(prettier@3.3.3) - - '@storybook/react-docgen-typescript-plugin@1.0.1(typescript@5.9.3)(webpack@5.102.1(esbuild@0.25.11))': - dependencies: - debug: 4.4.3 - endent: 2.1.0 - find-cache-dir: 3.3.2 - flat-cache: 3.2.0 - micromatch: 4.0.8 - react-docgen-typescript: 2.4.0(typescript@5.9.3) - tslib: 2.8.1 - typescript: 5.9.3 - webpack: 5.102.1(esbuild@0.25.11) - transitivePeerDependencies: - - supports-color - - '@storybook/react-dom-shim@8.6.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.15(prettier@3.3.3))': - dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - storybook: 8.6.15(prettier@3.3.3) - - '@storybook/react-dom-shim@8.6.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.15(prettier@3.3.3))': - dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - storybook: 8.6.15(prettier@3.3.3) - - '@storybook/react-vite@8.6.15(@storybook/test@8.6.15(storybook@8.6.15(prettier@3.3.3)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.50.2)(storybook@8.6.15(prettier@3.3.3))(typescript@5.9.3)(vite@6.4.1(@types/node@24.9.0)(jiti@2.6.1)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0))': - dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.5.0(typescript@5.9.3)(vite@6.4.1(@types/node@24.9.0)(jiti@2.6.1)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)) - '@rollup/pluginutils': 5.3.0(rollup@4.50.2) - '@storybook/builder-vite': 8.6.15(storybook@8.6.15(prettier@3.3.3))(vite@6.4.1(@types/node@24.9.0)(jiti@2.6.1)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0)) - '@storybook/react': 8.6.15(@storybook/test@8.6.15(storybook@8.6.15(prettier@3.3.3)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.15(prettier@3.3.3))(typescript@5.9.3) - find-up: 5.0.0 - magic-string: 0.30.19 - react: 18.3.1 - react-docgen: 7.1.1 - react-dom: 18.3.1(react@18.3.1) - resolve: 1.22.10 - storybook: 8.6.15(prettier@3.3.3) - tsconfig-paths: 4.2.0 - vite: 6.4.1(@types/node@24.9.0)(jiti@2.6.1)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0) - optionalDependencies: - '@storybook/test': 8.6.15(storybook@8.6.15(prettier@3.3.3)) - transitivePeerDependencies: - - rollup - - supports-color - - typescript - - '@storybook/react@8.6.15(@storybook/test@8.6.15(storybook@8.6.15(prettier@3.3.3)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.15(prettier@3.3.3))(typescript@5.9.3)': - dependencies: - '@storybook/components': 8.6.15(storybook@8.6.15(prettier@3.3.3)) - '@storybook/global': 5.0.0 - '@storybook/manager-api': 8.6.15(storybook@8.6.15(prettier@3.3.3)) - '@storybook/preview-api': 8.6.15(storybook@8.6.15(prettier@3.3.3)) - '@storybook/react-dom-shim': 8.6.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.15(prettier@3.3.3)) - '@storybook/theming': 8.6.15(storybook@8.6.15(prettier@3.3.3)) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - storybook: 8.6.15(prettier@3.3.3) - optionalDependencies: - '@storybook/test': 8.6.15(storybook@8.6.15(prettier@3.3.3)) - typescript: 5.9.3 - - '@storybook/test@8.6.15(storybook@8.6.15(prettier@3.3.3))': - dependencies: - '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.6.15(storybook@8.6.15(prettier@3.3.3)) - '@testing-library/dom': 10.4.0 - '@testing-library/jest-dom': 6.5.0 - '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) - '@vitest/expect': 2.0.5 - '@vitest/spy': 2.0.5 - storybook: 8.6.15(prettier@3.3.3) - - '@storybook/theming@8.6.15(storybook@8.6.15(prettier@3.3.3))': - dependencies: - storybook: 8.6.15(prettier@3.3.3) - - '@swc/helpers@0.5.17': - dependencies: - tslib: 2.8.1 - - '@testing-library/dom@10.4.0': - dependencies: - '@babel/code-frame': 7.27.1 - '@babel/runtime': 7.28.4 - '@types/aria-query': 5.0.4 - aria-query: 5.3.0 - chalk: 4.1.2 - dom-accessibility-api: 0.5.16 - lz-string: 1.5.0 - pretty-format: 27.5.1 - - '@testing-library/jest-dom@6.5.0': - dependencies: - '@adobe/css-tools': 4.4.4 - aria-query: 5.3.2 - chalk: 3.0.0 - css.escape: 1.5.1 - dom-accessibility-api: 0.6.3 - lodash: 4.17.21 - redent: 3.0.0 - - '@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0)': - dependencies: - '@testing-library/dom': 10.4.0 - - '@trysound/sax@0.2.0': {} - - '@tybys/wasm-util@0.10.1': - dependencies: - tslib: 2.8.1 - optional: true - - '@types/aria-query@5.0.4': {} - - '@types/babel__core@7.20.5': - dependencies: - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 - '@types/babel__generator': 7.27.0 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.28.0 - - '@types/babel__generator@7.27.0': - dependencies: - '@babel/types': 7.28.4 - - '@types/babel__template@7.4.4': - dependencies: - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 - - '@types/babel__traverse@7.28.0': - dependencies: - '@babel/types': 7.28.4 - - '@types/d3-color@3.1.3': {} - - '@types/d3-drag@3.0.7': - dependencies: - '@types/d3-selection': 3.0.11 - - '@types/d3-interpolate@3.0.4': - dependencies: - '@types/d3-color': 3.1.3 - - '@types/d3-selection@3.0.11': {} - - '@types/d3-transition@3.0.9': - dependencies: - '@types/d3-selection': 3.0.11 - - '@types/d3-zoom@3.0.8': - dependencies: - '@types/d3-interpolate': 3.0.4 - '@types/d3-selection': 3.0.11 - - '@types/doctrine@0.0.9': {} - - '@types/eslint-scope@3.7.7': - dependencies: - '@types/eslint': 9.6.1 - '@types/estree': 1.0.8 - - '@types/eslint@9.6.1': - dependencies: - '@types/estree': 1.0.8 - '@types/json-schema': 7.0.15 - - '@types/estree@1.0.8': {} - - '@types/html-minifier-terser@7.0.2': {} - - '@types/json-schema@7.0.15': {} - - '@types/mdx@2.0.13': {} - - '@types/node@18.19.130': - dependencies: - undici-types: 5.26.5 - - '@types/node@24.9.0': - dependencies: - undici-types: 7.16.0 - - '@types/parse-json@4.0.2': {} - - '@types/prop-types@15.7.15': {} - - '@types/react-dom@18.2.25': - dependencies: - '@types/react': 18.2.79 - - '@types/react-transition-group@4.4.12(@types/react@18.2.79)': - dependencies: - '@types/react': 18.2.79 - - '@types/react@18.2.79': - dependencies: - '@types/prop-types': 15.7.15 - csstype: 3.1.3 - - '@types/resolve@1.20.2': {} - - '@types/resolve@1.20.6': {} - - '@types/semver@7.7.1': {} - - '@types/trusted-types@2.0.7': - optional: true - - '@types/uuid@9.0.8': {} - - '@typescript-eslint/eslint-plugin@8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.9.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.9.1(jiti@2.6.1))(typescript@5.9.3)': - dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.11.0(eslint@9.9.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.11.0 - '@typescript-eslint/type-utils': 8.11.0(eslint@9.9.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.11.0(eslint@9.9.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.11.0 - eslint: 9.9.1(jiti@2.6.1) - graphemer: 1.4.0 - ignore: 5.3.2 - natural-compare: 1.4.0 - ts-api-utils: 1.4.3(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.11.0(eslint@9.9.1(jiti@2.6.1))(typescript@5.9.3)': - dependencies: - '@typescript-eslint/scope-manager': 8.11.0 - '@typescript-eslint/types': 8.11.0 - '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.11.0 - debug: 4.4.3 - eslint: 9.9.1(jiti@2.6.1) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/scope-manager@5.62.0': - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - - '@typescript-eslint/scope-manager@8.11.0': - dependencies: - '@typescript-eslint/types': 8.11.0 - '@typescript-eslint/visitor-keys': 8.11.0 - - '@typescript-eslint/type-utils@8.11.0(eslint@9.9.1(jiti@2.6.1))(typescript@5.9.3)': - dependencies: - '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.11.0(eslint@9.9.1(jiti@2.6.1))(typescript@5.9.3) - debug: 4.4.3 - ts-api-utils: 1.4.3(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - eslint - - supports-color - - '@typescript-eslint/types@5.62.0': {} - - '@typescript-eslint/types@8.11.0': {} - - '@typescript-eslint/typescript-estree@5.62.0(typescript@5.9.3)': - dependencies: - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.4.3 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.7.3 - tsutils: 3.21.0(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/typescript-estree@8.11.0(typescript@5.9.3)': - dependencies: - '@typescript-eslint/types': 8.11.0 - '@typescript-eslint/visitor-keys': 8.11.0 - debug: 4.4.3 - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.3 - ts-api-utils: 1.4.3(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@5.62.0(eslint@9.9.1(jiti@2.6.1))(typescript@5.9.3)': - dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.9.1(jiti@2.6.1)) - '@types/json-schema': 7.0.15 - '@types/semver': 7.7.1 - '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.9.3) - eslint: 9.9.1(jiti@2.6.1) - eslint-scope: 5.1.1 - semver: 7.7.3 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/utils@8.11.0(eslint@9.9.1(jiti@2.6.1))(typescript@5.9.3)': - dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.9.1(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.11.0 - '@typescript-eslint/types': 8.11.0 - '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.9.3) - eslint: 9.9.1(jiti@2.6.1) - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/visitor-keys@5.62.0': - dependencies: - '@typescript-eslint/types': 5.62.0 - eslint-visitor-keys: 3.4.3 - - '@typescript-eslint/visitor-keys@8.11.0': - dependencies: - '@typescript-eslint/types': 8.11.0 - eslint-visitor-keys: 3.4.3 - - '@vitest/expect@2.0.5': - dependencies: - '@vitest/spy': 2.0.5 - '@vitest/utils': 2.0.5 - chai: 5.3.3 - tinyrainbow: 1.2.0 - - '@vitest/pretty-format@2.0.5': - dependencies: - tinyrainbow: 1.2.0 - - '@vitest/pretty-format@2.1.9': - dependencies: - tinyrainbow: 1.2.0 - - '@vitest/spy@2.0.5': - dependencies: - tinyspy: 3.0.2 - - '@vitest/utils@2.0.5': - dependencies: - '@vitest/pretty-format': 2.0.5 - estree-walker: 3.0.3 - loupe: 3.2.1 - tinyrainbow: 1.2.0 - - '@vitest/utils@2.1.9': - dependencies: - '@vitest/pretty-format': 2.1.9 - loupe: 3.2.1 - tinyrainbow: 1.2.0 - - '@webassemblyjs/ast@1.14.1': - dependencies: - '@webassemblyjs/helper-numbers': 1.13.2 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - - '@webassemblyjs/floating-point-hex-parser@1.13.2': {} - - '@webassemblyjs/helper-api-error@1.13.2': {} - - '@webassemblyjs/helper-buffer@1.14.1': {} - - '@webassemblyjs/helper-numbers@1.13.2': - dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.13.2 - '@webassemblyjs/helper-api-error': 1.13.2 - '@xtuc/long': 4.2.2 - - '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} - - '@webassemblyjs/helper-wasm-section@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/wasm-gen': 1.14.1 - - '@webassemblyjs/ieee754@1.13.2': - dependencies: - '@xtuc/ieee754': 1.2.0 - - '@webassemblyjs/leb128@1.13.2': - dependencies: - '@xtuc/long': 4.2.2 - - '@webassemblyjs/utf8@1.13.2': {} - - '@webassemblyjs/wasm-edit@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/helper-wasm-section': 1.14.1 - '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/wasm-opt': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - '@webassemblyjs/wast-printer': 1.14.1 - - '@webassemblyjs/wasm-gen@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/ieee754': 1.13.2 - '@webassemblyjs/leb128': 1.13.2 - '@webassemblyjs/utf8': 1.13.2 - - '@webassemblyjs/wasm-opt@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-buffer': 1.14.1 - '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - - '@webassemblyjs/wasm-parser@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/helper-api-error': 1.13.2 - '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/ieee754': 1.13.2 - '@webassemblyjs/leb128': 1.13.2 - '@webassemblyjs/utf8': 1.13.2 - - '@webassemblyjs/wast-printer@1.14.1': - dependencies: - '@webassemblyjs/ast': 1.14.1 - '@xtuc/long': 4.2.2 - - '@xtuc/ieee754@1.2.0': {} - - '@xtuc/long@4.2.2': {} - - '@xyflow/react@12.3.6(@types/react@18.2.79)(immer@9.0.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@xyflow/system': 0.0.47 - classcat: 5.0.5 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - zustand: 4.5.7(@types/react@18.2.79)(immer@9.0.21)(react@18.3.1) - transitivePeerDependencies: - - '@types/react' - - immer - - '@xyflow/system@0.0.47': - dependencies: - '@types/d3-drag': 3.0.7 - '@types/d3-selection': 3.0.11 - '@types/d3-transition': 3.0.9 - '@types/d3-zoom': 3.0.8 - d3-drag: 3.0.0 - d3-selection: 3.0.0 - d3-zoom: 3.0.0 - - acorn-import-phases@1.0.4(acorn@8.15.0): - dependencies: - acorn: 8.15.0 - - acorn-jsx@5.3.2(acorn@8.15.0): - dependencies: - acorn: 8.15.0 - - acorn@8.15.0: {} - - ajv-formats@2.1.1(ajv@8.17.1): - optionalDependencies: - ajv: 8.17.1 - - ajv-keywords@5.1.0(ajv@8.17.1): - dependencies: - ajv: 8.17.1 - fast-deep-equal: 3.1.3 - - ajv@6.12.6: - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - - ajv@8.17.1: - dependencies: - fast-deep-equal: 3.1.3 - fast-uri: 3.1.0 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - - ansi-regex@5.0.1: {} - - ansi-regex@6.2.2: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@5.2.0: {} - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - argparse@2.0.1: {} - - aria-query@5.3.0: - dependencies: - dequal: 2.0.3 - - aria-query@5.3.2: {} - - array-buffer-byte-length@1.0.2: - dependencies: - call-bound: 1.0.4 - is-array-buffer: 3.0.5 - - array-includes@3.1.9: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - is-string: 1.1.1 - math-intrinsics: 1.1.0 - - array-union@2.1.0: {} - - array.prototype.findlast@1.2.5: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - es-shim-unscopables: 1.1.0 - - array.prototype.flat@1.3.3: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-shim-unscopables: 1.1.0 - - array.prototype.flatmap@1.3.3: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-shim-unscopables: 1.1.0 - - array.prototype.tosorted@1.1.4: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-errors: 1.3.0 - es-shim-unscopables: 1.1.0 - - arraybuffer.prototype.slice@1.0.4: - dependencies: - array-buffer-byte-length: 1.0.2 - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - is-array-buffer: 3.0.5 - - asap@2.0.6: {} - - assertion-error@2.0.1: {} - - ast-types@0.16.1: - dependencies: - tslib: 2.8.1 - - async-function@1.0.0: {} - - available-typed-arrays@1.0.7: - dependencies: - possible-typed-array-names: 1.1.0 - - babel-plugin-macros@3.1.0: - dependencies: - '@babel/runtime': 7.28.4 - cosmiconfig: 7.1.0 - resolve: 1.22.10 - - balanced-match@1.0.2: {} - - base16@1.0.0: {} - - baseline-browser-mapping@2.8.18: {} - - better-opn@3.0.2: - dependencies: - open: 8.4.2 - - big.js@5.2.2: {} - - binary-extensions@2.3.0: {} - - boolbase@1.0.0: {} - - brace-expansion@1.1.12: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - brace-expansion@2.0.2: - dependencies: - balanced-match: 1.0.2 - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - browser-assert@1.2.1: {} - - browserslist@4.26.3: - dependencies: - baseline-browser-mapping: 2.8.18 - caniuse-lite: 1.0.30001751 - electron-to-chromium: 1.5.237 - node-releases: 2.0.25 - update-browserslist-db: 1.1.3(browserslist@4.26.3) - - buffer-builder@0.2.0: {} - - buffer-from@1.1.2: {} - - call-bind-apply-helpers@1.0.2: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - - call-bind@1.0.8: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - get-intrinsic: 1.3.0 - set-function-length: 1.2.2 - - call-bound@1.0.4: - dependencies: - call-bind-apply-helpers: 1.0.2 - get-intrinsic: 1.3.0 - - callsites@3.1.0: {} - - camel-case@4.1.2: - dependencies: - pascal-case: 3.1.2 - tslib: 2.8.1 - - caniuse-api@3.0.0: - dependencies: - browserslist: 4.26.3 - caniuse-lite: 1.0.30001751 - lodash.memoize: 4.1.2 - lodash.uniq: 4.5.0 - - caniuse-lite@1.0.30001751: {} - - case-sensitive-paths-webpack-plugin@2.4.0: {} - - chai@5.3.3: - dependencies: - assertion-error: 2.0.1 - check-error: 2.1.1 - deep-eql: 5.0.2 - loupe: 3.2.1 - pathval: 2.0.1 - - chalk@3.0.0: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - check-error@2.1.1: {} - - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - - chokidar@4.0.3: - dependencies: - readdirp: 4.1.2 - optional: true - - chromatic@11.29.0: {} - - chrome-trace-event@1.0.4: {} - - cjs-module-lexer@1.4.3: {} - - classcat@5.0.5: {} - - clean-css@5.3.3: - dependencies: - source-map: 0.6.1 - - clsx@2.1.1: {} - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - colord@2.9.3: {} - - colorjs.io@0.5.2: {} - - commander@10.0.1: {} - - commander@2.20.3: {} - - commander@7.2.0: {} - - commondir@1.0.1: {} - - compute-gcd@1.2.1: - dependencies: - validate.io-array: 1.0.6 - validate.io-function: 1.0.2 - validate.io-integer-array: 1.0.0 - - compute-lcm@1.1.2: - dependencies: - compute-gcd: 1.2.1 - validate.io-array: 1.0.6 - validate.io-function: 1.0.2 - validate.io-integer-array: 1.0.0 - - concat-map@0.0.1: {} - - concat-with-sourcemaps@1.1.0: - dependencies: - source-map: 0.6.1 - - constants-browserify@1.0.0: {} - - convert-source-map@1.9.0: {} - - convert-source-map@2.0.0: {} - - core-js@3.39.0: {} - - core-js@3.46.0: {} - - cosmiconfig@7.1.0: - dependencies: - '@types/parse-json': 4.0.2 - import-fresh: 3.3.1 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.2 - - cross-fetch@3.2.0: - dependencies: - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding - - cross-spawn@7.0.6: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - css-declaration-sorter@6.4.1(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - - css-select@4.3.0: - dependencies: - boolbase: 1.0.0 - css-what: 6.2.2 - domhandler: 4.3.1 - domutils: 2.8.0 - nth-check: 2.1.1 - - css-tree@1.1.3: - dependencies: - mdn-data: 2.0.14 - source-map: 0.6.1 - - css-vendor@2.0.8: - dependencies: - '@babel/runtime': 7.28.4 - is-in-browser: 1.1.3 - - css-what@6.2.2: {} - - css.escape@1.5.1: {} - - cssesc@3.0.0: {} - - cssnano-preset-default@5.2.14(postcss@8.5.6): - dependencies: - css-declaration-sorter: 6.4.1(postcss@8.5.6) - cssnano-utils: 3.1.0(postcss@8.5.6) - postcss: 8.5.6 - postcss-calc: 8.2.4(postcss@8.5.6) - postcss-colormin: 5.3.1(postcss@8.5.6) - postcss-convert-values: 5.1.3(postcss@8.5.6) - postcss-discard-comments: 5.1.2(postcss@8.5.6) - postcss-discard-duplicates: 5.1.0(postcss@8.5.6) - postcss-discard-empty: 5.1.1(postcss@8.5.6) - postcss-discard-overridden: 5.1.0(postcss@8.5.6) - postcss-merge-longhand: 5.1.7(postcss@8.5.6) - postcss-merge-rules: 5.1.4(postcss@8.5.6) - postcss-minify-font-values: 5.1.0(postcss@8.5.6) - postcss-minify-gradients: 5.1.1(postcss@8.5.6) - postcss-minify-params: 5.1.4(postcss@8.5.6) - postcss-minify-selectors: 5.2.1(postcss@8.5.6) - postcss-normalize-charset: 5.1.0(postcss@8.5.6) - postcss-normalize-display-values: 5.1.0(postcss@8.5.6) - postcss-normalize-positions: 5.1.1(postcss@8.5.6) - postcss-normalize-repeat-style: 5.1.1(postcss@8.5.6) - postcss-normalize-string: 5.1.0(postcss@8.5.6) - postcss-normalize-timing-functions: 5.1.0(postcss@8.5.6) - postcss-normalize-unicode: 5.1.1(postcss@8.5.6) - postcss-normalize-url: 5.1.0(postcss@8.5.6) - postcss-normalize-whitespace: 5.1.1(postcss@8.5.6) - postcss-ordered-values: 5.1.3(postcss@8.5.6) - postcss-reduce-initial: 5.1.2(postcss@8.5.6) - postcss-reduce-transforms: 5.1.0(postcss@8.5.6) - postcss-svgo: 5.1.0(postcss@8.5.6) - postcss-unique-selectors: 5.1.1(postcss@8.5.6) - - cssnano-utils@3.1.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - - cssnano@5.1.15(postcss@8.5.6): - dependencies: - cssnano-preset-default: 5.2.14(postcss@8.5.6) - lilconfig: 2.1.0 - postcss: 8.5.6 - yaml: 1.10.2 - - csso@4.2.0: - dependencies: - css-tree: 1.1.3 - - csstype@3.1.3: {} - - d3-array@3.2.4: - dependencies: - internmap: 2.0.3 - - d3-axis@3.0.0: {} - - d3-brush@3.0.0: - dependencies: - d3-dispatch: 3.0.1 - d3-drag: 3.0.0 - d3-interpolate: 3.0.1 - d3-selection: 3.0.0 - d3-transition: 3.0.1(d3-selection@3.0.0) - - d3-chord@3.0.1: - dependencies: - d3-path: 3.1.0 - - d3-color@3.1.0: {} - - d3-contour@4.0.2: - dependencies: - d3-array: 3.2.4 - - d3-delaunay@6.0.4: - dependencies: - delaunator: 5.0.1 - - d3-dispatch@3.0.1: {} - - d3-drag@3.0.0: - dependencies: - d3-dispatch: 3.0.1 - d3-selection: 3.0.0 - - d3-dsv@3.0.1: - dependencies: - commander: 7.2.0 - iconv-lite: 0.6.3 - rw: 1.3.3 - - d3-ease@3.0.1: {} - - d3-fetch@3.0.1: - dependencies: - d3-dsv: 3.0.1 - - d3-force@3.0.0: - dependencies: - d3-dispatch: 3.0.1 - d3-quadtree: 3.0.1 - d3-timer: 3.0.1 - - d3-format@3.1.0: {} - - d3-geo@3.1.1: - dependencies: - d3-array: 3.2.4 - - d3-hierarchy@3.1.2: {} - - d3-interpolate@3.0.1: - dependencies: - d3-color: 3.1.0 - - d3-path@3.1.0: {} - - d3-polygon@3.0.1: {} - - d3-quadtree@3.0.1: {} - - d3-random@3.0.1: {} - - d3-scale-chromatic@3.1.0: - dependencies: - d3-color: 3.1.0 - d3-interpolate: 3.0.1 - - d3-scale@4.0.2: - dependencies: - d3-array: 3.2.4 - d3-format: 3.1.0 - d3-interpolate: 3.0.1 - d3-time: 3.1.0 - d3-time-format: 4.1.0 - - d3-selection@3.0.0: {} - - d3-shape@3.2.0: - dependencies: - d3-path: 3.1.0 - - d3-time-format@4.1.0: - dependencies: - d3-time: 3.1.0 - - d3-time@3.1.0: - dependencies: - d3-array: 3.2.4 - - d3-timer@3.0.1: {} - - d3-transition@3.0.1(d3-selection@3.0.0): - dependencies: - d3-color: 3.1.0 - d3-dispatch: 3.0.1 - d3-ease: 3.0.1 - d3-interpolate: 3.0.1 - d3-selection: 3.0.0 - d3-timer: 3.0.1 - - d3-zoom@3.0.0: - dependencies: - d3-dispatch: 3.0.1 - d3-drag: 3.0.0 - d3-interpolate: 3.0.1 - d3-selection: 3.0.0 - d3-transition: 3.0.1(d3-selection@3.0.0) - - d3@7.9.0: - dependencies: - d3-array: 3.2.4 - d3-axis: 3.0.0 - d3-brush: 3.0.0 - d3-chord: 3.0.1 - d3-color: 3.1.0 - d3-contour: 4.0.2 - d3-delaunay: 6.0.4 - d3-dispatch: 3.0.1 - d3-drag: 3.0.0 - d3-dsv: 3.0.1 - d3-ease: 3.0.1 - d3-fetch: 3.0.1 - d3-force: 3.0.0 - d3-format: 3.1.0 - d3-geo: 3.1.1 - d3-hierarchy: 3.1.2 - d3-interpolate: 3.0.1 - d3-path: 3.1.0 - d3-polygon: 3.0.1 - d3-quadtree: 3.0.1 - d3-random: 3.0.1 - d3-scale: 4.0.2 - d3-scale-chromatic: 3.1.0 - d3-selection: 3.0.0 - d3-shape: 3.2.0 - d3-time: 3.1.0 - d3-time-format: 4.1.0 - d3-timer: 3.0.1 - d3-transition: 3.0.1(d3-selection@3.0.0) - d3-zoom: 3.0.0 - - dagre@0.8.5: - dependencies: - graphlib: 2.1.8 - lodash: 4.17.21 - - data-view-buffer@1.0.2: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - - data-view-byte-length@1.0.2: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - - data-view-byte-offset@1.0.1: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - - debug@4.4.3: - dependencies: - ms: 2.1.3 - - dedent@0.7.0: {} - - deep-eql@5.0.2: {} - - deep-is@0.1.4: {} - - deepmerge@4.3.1: {} - - define-data-property@1.1.4: - dependencies: - es-define-property: 1.0.1 - es-errors: 1.3.0 - gopd: 1.2.0 - - define-lazy-prop@2.0.0: {} - - define-properties@1.2.1: - dependencies: - define-data-property: 1.1.4 - has-property-descriptors: 1.0.2 - object-keys: 1.1.1 - - delaunator@5.0.1: - dependencies: - robust-predicates: 3.0.2 - - dequal@2.0.3: {} - - detect-libc@1.0.3: - optional: true - - dir-glob@3.0.1: - dependencies: - path-type: 4.0.0 - - doctrine@2.1.0: - dependencies: - esutils: 2.0.3 - - doctrine@3.0.0: - dependencies: - esutils: 2.0.3 - - dom-accessibility-api@0.5.16: {} - - dom-accessibility-api@0.6.3: {} - - dom-helpers@5.2.1: - dependencies: - '@babel/runtime': 7.28.4 - csstype: 3.1.3 - - dom-serializer@1.4.1: - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - entities: 2.2.0 - - dom-serializer@2.0.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - entities: 4.5.0 - - domelementtype@2.3.0: {} - - domhandler@4.3.1: - dependencies: - domelementtype: 2.3.0 - - domhandler@5.0.3: - dependencies: - domelementtype: 2.3.0 - - dompurify@3.2.7: - optionalDependencies: - '@types/trusted-types': 2.0.7 - - domutils@2.8.0: - dependencies: - dom-serializer: 1.4.1 - domelementtype: 2.3.0 - domhandler: 4.3.1 - - domutils@3.2.2: - dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - - dot-case@3.0.4: - dependencies: - no-case: 3.0.4 - tslib: 2.8.1 - - dunder-proto@1.0.1: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-errors: 1.3.0 - gopd: 1.2.0 - - electron-to-chromium@1.5.237: {} - - emojis-list@3.0.0: {} - - endent@2.1.0: - dependencies: - dedent: 0.7.0 - fast-json-parse: 1.0.3 - objectorarray: 1.0.5 - - enhanced-resolve@5.18.3: - dependencies: - graceful-fs: 4.2.11 - tapable: 2.3.0 - - entities@2.2.0: {} - - entities@4.5.0: {} - - entities@6.0.1: {} - - error-ex@1.3.4: - dependencies: - is-arrayish: 0.2.1 - - error-stack-parser@2.1.4: - dependencies: - stackframe: 1.3.4 - - es-abstract@1.24.0: - dependencies: - array-buffer-byte-length: 1.0.2 - arraybuffer.prototype.slice: 1.0.4 - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - call-bound: 1.0.4 - data-view-buffer: 1.0.2 - data-view-byte-length: 1.0.2 - data-view-byte-offset: 1.0.1 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - es-set-tostringtag: 2.1.0 - es-to-primitive: 1.3.0 - function.prototype.name: 1.1.8 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - get-symbol-description: 1.1.0 - globalthis: 1.0.4 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - has-proto: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - internal-slot: 1.1.0 - is-array-buffer: 3.0.5 - is-callable: 1.2.7 - is-data-view: 1.0.2 - is-negative-zero: 2.0.3 - is-regex: 1.2.1 - is-set: 2.0.3 - is-shared-array-buffer: 1.0.4 - is-string: 1.1.1 - is-typed-array: 1.1.15 - is-weakref: 1.1.1 - math-intrinsics: 1.1.0 - object-inspect: 1.13.4 - object-keys: 1.1.1 - object.assign: 4.1.7 - own-keys: 1.0.1 - regexp.prototype.flags: 1.5.4 - safe-array-concat: 1.1.3 - safe-push-apply: 1.0.0 - safe-regex-test: 1.1.0 - set-proto: 1.0.0 - stop-iteration-iterator: 1.1.0 - string.prototype.trim: 1.2.10 - string.prototype.trimend: 1.0.9 - string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.3 - typed-array-byte-length: 1.0.3 - typed-array-byte-offset: 1.0.4 - typed-array-length: 1.0.7 - unbox-primitive: 1.1.0 - which-typed-array: 1.1.19 - - es-define-property@1.0.1: {} - - es-errors@1.3.0: {} - - es-iterator-helpers@1.2.1: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-errors: 1.3.0 - es-set-tostringtag: 2.1.0 - function-bind: 1.1.2 - get-intrinsic: 1.3.0 - globalthis: 1.0.4 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - has-proto: 1.2.0 - has-symbols: 1.1.0 - internal-slot: 1.1.0 - iterator.prototype: 1.1.5 - safe-array-concat: 1.1.3 - - es-module-lexer@1.7.0: {} - - es-object-atoms@1.1.1: - dependencies: - es-errors: 1.3.0 - - es-set-tostringtag@2.1.0: - dependencies: - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - - es-shim-unscopables@1.1.0: - dependencies: - hasown: 2.0.2 - - es-to-primitive@1.3.0: - dependencies: - is-callable: 1.2.7 - is-date-object: 1.1.0 - is-symbol: 1.1.1 - - esbuild-register@3.6.0(esbuild@0.25.11): - dependencies: - debug: 4.4.3 - esbuild: 0.25.11 - transitivePeerDependencies: - - supports-color - - esbuild@0.25.11: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.11 - '@esbuild/android-arm': 0.25.11 - '@esbuild/android-arm64': 0.25.11 - '@esbuild/android-x64': 0.25.11 - '@esbuild/darwin-arm64': 0.25.11 - '@esbuild/darwin-x64': 0.25.11 - '@esbuild/freebsd-arm64': 0.25.11 - '@esbuild/freebsd-x64': 0.25.11 - '@esbuild/linux-arm': 0.25.11 - '@esbuild/linux-arm64': 0.25.11 - '@esbuild/linux-ia32': 0.25.11 - '@esbuild/linux-loong64': 0.25.11 - '@esbuild/linux-mips64el': 0.25.11 - '@esbuild/linux-ppc64': 0.25.11 - '@esbuild/linux-riscv64': 0.25.11 - '@esbuild/linux-s390x': 0.25.11 - '@esbuild/linux-x64': 0.25.11 - '@esbuild/netbsd-arm64': 0.25.11 - '@esbuild/netbsd-x64': 0.25.11 - '@esbuild/openbsd-arm64': 0.25.11 - '@esbuild/openbsd-x64': 0.25.11 - '@esbuild/openharmony-arm64': 0.25.11 - '@esbuild/sunos-x64': 0.25.11 - '@esbuild/win32-arm64': 0.25.11 - '@esbuild/win32-ia32': 0.25.11 - '@esbuild/win32-x64': 0.25.11 - - escalade@3.2.0: {} - - escape-string-regexp@4.0.0: {} - - eslint-config-prettier@9.1.2(eslint@9.9.1(jiti@2.6.1)): - dependencies: - eslint: 9.9.1(jiti@2.6.1) - - eslint-plugin-prettier@5.2.6(@types/eslint@9.6.1)(eslint-config-prettier@9.1.2(eslint@9.9.1(jiti@2.6.1)))(eslint@9.9.1(jiti@2.6.1))(prettier@3.3.3): - dependencies: - eslint: 9.9.1(jiti@2.6.1) - prettier: 3.3.3 - prettier-linter-helpers: 1.0.0 - synckit: 0.11.11 - optionalDependencies: - '@types/eslint': 9.6.1 - eslint-config-prettier: 9.1.2(eslint@9.9.1(jiti@2.6.1)) - - eslint-plugin-react@7.35.2(eslint@9.9.1(jiti@2.6.1)): - dependencies: - array-includes: 3.1.9 - array.prototype.findlast: 1.2.5 - array.prototype.flatmap: 1.3.3 - array.prototype.tosorted: 1.1.4 - doctrine: 2.1.0 - es-iterator-helpers: 1.2.1 - eslint: 9.9.1(jiti@2.6.1) - estraverse: 5.3.0 - hasown: 2.0.2 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 - object.entries: 1.1.9 - object.fromentries: 2.0.8 - object.values: 1.2.1 - prop-types: 15.8.1 - resolve: 2.0.0-next.5 - semver: 6.3.1 - string.prototype.matchall: 4.0.12 - string.prototype.repeat: 1.0.0 - - eslint-plugin-storybook@0.8.0(eslint@9.9.1(jiti@2.6.1))(typescript@5.9.3): - dependencies: - '@storybook/csf': 0.0.1 - '@typescript-eslint/utils': 5.62.0(eslint@9.9.1(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.9.1(jiti@2.6.1) - requireindex: 1.2.0 - ts-dedent: 2.2.0 - transitivePeerDependencies: - - supports-color - - typescript - - eslint-scope@5.1.1: - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - - eslint-scope@8.4.0: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-visitor-keys@3.4.3: {} - - eslint-visitor-keys@4.2.1: {} - - eslint@9.9.1(jiti@2.6.1): - dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.9.1(jiti@2.6.1)) - '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.18.0 - '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.9.1 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.3.1 - '@nodelib/fs.walk': 1.2.8 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.3 - escape-string-regexp: 4.0.0 - eslint-scope: 8.4.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 - esquery: 1.6.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - strip-ansi: 6.0.1 - text-table: 0.2.0 - optionalDependencies: - jiti: 2.6.1 - transitivePeerDependencies: - - supports-color - - espree@10.4.0: - dependencies: - acorn: 8.15.0 - acorn-jsx: 5.3.2(acorn@8.15.0) - eslint-visitor-keys: 4.2.1 - - esprima@4.0.1: {} - - esquery@1.6.0: - dependencies: - estraverse: 5.3.0 - - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 - - estraverse@4.3.0: {} - - estraverse@5.3.0: {} - - estree-walker@0.6.1: {} - - estree-walker@2.0.2: {} - - estree-walker@3.0.3: - dependencies: - '@types/estree': 1.0.8 - - esutils@2.0.3: {} - - eventemitter3@4.0.7: {} - - events@3.3.0: {} - - fast-deep-equal@3.1.3: {} - - fast-diff@1.3.0: {} - - fast-glob@3.3.3: - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.8 - - fast-json-parse@1.0.3: {} - - fast-json-stable-stringify@2.1.0: {} - - fast-levenshtein@2.0.6: {} - - fast-uri@3.1.0: {} - - fastq@1.19.1: - dependencies: - reusify: 1.1.0 - - fbemitter@3.0.0: - dependencies: - fbjs: 3.0.5 - transitivePeerDependencies: - - encoding - - fbjs-css-vars@1.0.2: {} - - fbjs@3.0.5: - dependencies: - cross-fetch: 3.2.0 - fbjs-css-vars: 1.0.2 - loose-envify: 1.4.0 - object-assign: 4.1.1 - promise: 7.3.1 - setimmediate: 1.0.5 - ua-parser-js: 1.0.41 - transitivePeerDependencies: - - encoding - - fdir@6.5.0(picomatch@4.0.3): - optionalDependencies: - picomatch: 4.0.3 - - fflate@0.4.8: {} - - file-entry-cache@8.0.0: - dependencies: - flat-cache: 4.0.1 - - filesize@10.1.6: {} - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - find-cache-dir@3.3.2: - dependencies: - commondir: 1.0.1 - make-dir: 3.1.0 - pkg-dir: 4.2.0 - - find-root@1.1.0: {} - - find-up@4.1.0: - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat-cache@3.2.0: - dependencies: - flatted: 3.3.3 - keyv: 4.5.4 - rimraf: 3.0.2 - - flat-cache@4.0.1: - dependencies: - flatted: 3.3.3 - keyv: 4.5.4 - - flatted@3.3.3: {} - - flux@4.0.4(react@18.3.1): - dependencies: - fbemitter: 3.0.0 - fbjs: 3.0.5 - react: 18.3.1 - transitivePeerDependencies: - - encoding - - for-each@0.3.5: - dependencies: - is-callable: 1.2.7 - - fs-extra@11.3.2: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.2.0 - universalify: 2.0.1 - - fsevents@2.3.3: - optional: true - - function-bind@1.1.2: {} - - function.prototype.name@1.1.8: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - functions-have-names: 1.2.3 - hasown: 2.0.2 - is-callable: 1.2.7 - - functions-have-names@1.2.3: {} - - fuzzysort@3.1.0: {} - - generator-function@2.0.1: {} - - generic-names@4.0.0: - dependencies: - loader-utils: 3.3.1 - - gensync@1.0.0-beta.2: {} - - get-intrinsic@1.3.0: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - function-bind: 1.1.2 - get-proto: 1.0.1 - gopd: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - math-intrinsics: 1.1.0 - - get-proto@1.0.1: - dependencies: - dunder-proto: 1.0.1 - es-object-atoms: 1.1.1 - - get-symbol-description@1.1.0: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - - glob-to-regex.js@1.2.0(tslib@2.8.1): - dependencies: - tslib: 2.8.1 - - glob-to-regexp@0.4.1: {} - - glob@13.0.0: - dependencies: - minimatch: 10.1.1 - minipass: 7.1.2 - path-scurry: 2.0.1 - - globals@14.0.0: {} - - globals@15.9.0: {} - - globalthis@1.0.4: - dependencies: - define-properties: 1.2.1 - gopd: 1.2.0 - - globby@11.1.0: - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.3 - ignore: 5.3.2 - merge2: 1.4.1 - slash: 3.0.0 - - gopd@1.2.0: {} - - graceful-fs@4.2.11: {} - - graphemer@1.4.0: {} - - graphlib@2.1.8: - dependencies: - lodash: 4.17.21 - - has-bigints@1.1.0: {} - - has-flag@4.0.0: {} - - has-property-descriptors@1.0.2: - dependencies: - es-define-property: 1.0.1 - - has-proto@1.2.0: - dependencies: - dunder-proto: 1.0.1 - - has-symbols@1.1.0: {} - - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.1.0 - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - hoist-non-react-statics@3.3.2: - dependencies: - react-is: 16.13.1 - - html-dom-parser@5.1.1: - dependencies: - domhandler: 5.0.3 - htmlparser2: 10.0.0 - - html-entities@2.6.0: {} - - html-minifier-terser@7.2.0: - dependencies: - camel-case: 4.1.2 - clean-css: 5.3.3 - commander: 10.0.1 - entities: 4.5.0 - param-case: 3.0.4 - relateurl: 0.2.7 - terser: 5.44.0 - - html-parse-stringify@3.0.1: - dependencies: - void-elements: 3.1.0 - - html-react-parser@5.2.7(@types/react@18.2.79)(react@18.3.1): - dependencies: - domhandler: 5.0.3 - html-dom-parser: 5.1.1 - react: 18.3.1 - react-property: 2.0.2 - style-to-js: 1.1.18 - optionalDependencies: - '@types/react': 18.2.79 - - htmlparser2@10.0.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.2.2 - entities: 6.0.1 - - hyperdyperid@1.2.0: {} - - hyphenate-style-name@1.1.0: {} - - i18next@23.11.5: - dependencies: - '@babel/runtime': 7.28.4 - - iconv-lite@0.6.3: - dependencies: - safer-buffer: 2.1.2 - - icss-replace-symbols@1.1.0: {} - - icss-utils@5.1.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - - ignore@5.3.2: {} - - immer@9.0.21: {} - - immutable@5.1.4: {} - - import-cwd@3.0.0: - dependencies: - import-from: 3.0.0 - - import-fresh@3.3.1: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - import-from@3.0.0: - dependencies: - resolve-from: 5.0.0 - - imurmurhash@0.1.4: {} - - indent-string@4.0.0: {} - - inherits@2.0.4: {} - - inline-style-parser@0.2.4: {} - - internal-slot@1.1.0: - dependencies: - es-errors: 1.3.0 - hasown: 2.0.2 - side-channel: 1.1.0 - - internmap@2.0.3: {} - - is-arguments@1.2.0: - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - - is-array-buffer@3.0.5: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - - is-arrayish@0.2.1: {} - - is-async-function@2.1.1: - dependencies: - async-function: 1.0.0 - call-bound: 1.0.4 - get-proto: 1.0.1 - has-tostringtag: 1.0.2 - safe-regex-test: 1.1.0 - - is-bigint@1.1.0: - dependencies: - has-bigints: 1.1.0 - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-boolean-object@1.2.2: - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - - is-callable@1.2.7: {} - - is-core-module@2.16.1: - dependencies: - hasown: 2.0.2 - - is-data-view@1.0.2: - dependencies: - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - is-typed-array: 1.1.15 - - is-date-object@1.1.0: - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - - is-docker@2.2.1: {} - - is-extglob@2.1.1: {} - - is-finalizationregistry@1.1.1: - dependencies: - call-bound: 1.0.4 - - is-generator-function@1.1.2: - dependencies: - call-bound: 1.0.4 - generator-function: 2.0.1 - get-proto: 1.0.1 - has-tostringtag: 1.0.2 - safe-regex-test: 1.1.0 - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-hotkey@0.2.0: {} - - is-in-browser@1.1.3: {} - - is-map@2.0.3: {} - - is-module@1.0.0: {} - - is-negative-zero@2.0.3: {} - - is-number-object@1.1.1: - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - - is-number@7.0.0: {} - - is-path-inside@3.0.3: {} - - is-reference@1.2.1: - dependencies: - '@types/estree': 1.0.8 - - is-regex@1.2.1: - dependencies: - call-bound: 1.0.4 - gopd: 1.2.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - - is-set@2.0.3: {} - - is-shared-array-buffer@1.0.4: - dependencies: - call-bound: 1.0.4 - - is-string@1.1.1: - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - - is-symbol@1.1.1: - dependencies: - call-bound: 1.0.4 - has-symbols: 1.1.0 - safe-regex-test: 1.1.0 - - is-typed-array@1.1.15: - dependencies: - which-typed-array: 1.1.19 - - is-weakmap@2.0.2: {} - - is-weakref@1.1.1: - dependencies: - call-bound: 1.0.4 - - is-weakset@2.0.4: - dependencies: - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - - is-wsl@2.2.0: - dependencies: - is-docker: 2.2.1 - - isarray@2.0.5: {} - - isexe@2.0.0: {} - - iterator.prototype@1.1.5: - dependencies: - define-data-property: 1.1.4 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - has-symbols: 1.1.0 - set-function-name: 2.0.2 - - jest-worker@27.5.1: - dependencies: - '@types/node': 24.9.0 - merge-stream: 2.0.0 - supports-color: 8.1.1 - - jiti@2.6.1: {} - - js-tokens@4.0.0: {} - - js-yaml@4.1.1: - dependencies: - argparse: 2.0.1 - - jsdoc-type-pratt-parser@4.8.0: {} - - jsesc@3.1.0: {} - - json-buffer@3.0.1: {} - - json-parse-even-better-errors@2.3.1: {} - - json-schema-compare@0.2.2: - dependencies: - lodash: 4.17.21 - - json-schema-merge-allof@0.8.1: - dependencies: - compute-lcm: 1.1.2 - json-schema-compare: 0.2.2 - lodash: 4.17.21 - - json-schema-traverse@0.4.1: {} - - json-schema-traverse@1.0.0: {} - - json-stable-stringify-without-jsonify@1.0.1: {} - - json5@2.2.3: {} - - jsonfile@6.2.0: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - - jsonpointer@5.0.1: {} - - jss-plugin-camel-case@10.10.0: - dependencies: - '@babel/runtime': 7.28.4 - hyphenate-style-name: 1.1.0 - jss: 10.10.0 - - jss-plugin-default-unit@10.10.0: - dependencies: - '@babel/runtime': 7.28.4 - jss: 10.10.0 - - jss-plugin-global@10.10.0: - dependencies: - '@babel/runtime': 7.28.4 - jss: 10.10.0 - - jss-plugin-nested@10.10.0: - dependencies: - '@babel/runtime': 7.28.4 - jss: 10.10.0 - tiny-warning: 1.0.3 - - jss-plugin-props-sort@10.10.0: - dependencies: - '@babel/runtime': 7.28.4 - jss: 10.10.0 - - jss-plugin-rule-value-function@10.10.0: - dependencies: - '@babel/runtime': 7.28.4 - jss: 10.10.0 - tiny-warning: 1.0.3 - - jss-plugin-vendor-prefixer@10.10.0: - dependencies: - '@babel/runtime': 7.28.4 - css-vendor: 2.0.8 - jss: 10.10.0 - - jss@10.10.0: - dependencies: - '@babel/runtime': 7.28.4 - csstype: 3.1.3 - is-in-browser: 1.1.3 - tiny-warning: 1.0.3 - - jsx-ast-utils@3.3.5: - dependencies: - array-includes: 3.1.9 - array.prototype.flat: 1.3.3 - object.assign: 4.1.7 - object.values: 1.2.1 - - keyv@4.5.4: - dependencies: - json-buffer: 3.0.1 - - levn@0.4.1: - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - - lilconfig@2.1.0: {} - - lines-and-columns@1.2.4: {} - - loader-runner@4.3.1: {} - - loader-utils@2.0.4: - dependencies: - big.js: 5.2.2 - emojis-list: 3.0.0 - json5: 2.2.3 - - loader-utils@3.3.1: {} - - locate-path@5.0.0: - dependencies: - p-locate: 4.1.0 - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - lodash-es@4.17.21: {} - - lodash.camelcase@4.3.0: {} - - lodash.curry@4.1.1: {} - - lodash.flow@3.5.0: {} - - lodash.memoize@4.1.2: {} - - lodash.merge@4.6.2: {} - - lodash.uniq@4.5.0: {} - - lodash@4.17.21: {} - - loose-envify@1.4.0: - dependencies: - js-tokens: 4.0.0 - - loupe@3.2.1: {} - - lower-case@2.0.2: - dependencies: - tslib: 2.8.1 - - lru-cache@11.2.4: {} - - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 - - lz-string@1.5.0: {} - - magic-string@0.27.0: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - - magic-string@0.30.19: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - - make-dir@3.1.0: - dependencies: - semver: 6.3.1 - - map-or-similar@1.5.0: {} - - markdown-to-jsx@7.7.16(react@18.3.1): - optionalDependencies: - react: 18.3.1 - - math-intrinsics@1.1.0: {} - - mdn-data@2.0.14: {} - - memfs@4.49.0: - dependencies: - '@jsonjoy.com/json-pack': 1.21.0(tslib@2.8.1) - '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) - glob-to-regex.js: 1.2.0(tslib@2.8.1) - thingies: 2.5.0(tslib@2.8.1) - tree-dump: 1.1.0(tslib@2.8.1) - tslib: 2.8.1 - - memoize-one@5.2.1: {} - - memoizerific@1.11.3: - dependencies: - map-or-similar: 1.5.0 - - merge-stream@2.0.0: {} - - merge2@1.4.1: {} - - micromatch@4.0.8: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - - mime-db@1.52.0: {} - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - - min-indent@1.0.1: {} - - minimatch@10.1.1: - dependencies: - '@isaacs/brace-expansion': 5.0.0 - - minimatch@3.1.2: - dependencies: - brace-expansion: 1.1.12 - - minimatch@9.0.5: - dependencies: - brace-expansion: 2.0.2 - - minimist@1.2.8: {} - - minipass@7.1.2: {} - - moment@2.30.1: {} - - mrmime@2.0.1: {} - - ms@2.1.3: {} - - nanoid@3.3.11: {} - - natural-compare@1.4.0: {} - - neo-async@2.6.2: {} - - no-case@3.0.4: - dependencies: - lower-case: 2.0.2 - tslib: 2.8.1 - - node-addon-api@7.1.1: - optional: true - - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - - node-releases@2.0.25: {} - - normalize-path@3.0.0: {} - - normalize-url@6.1.0: {} - - nth-check@2.1.1: - dependencies: - boolbase: 1.0.0 - - object-assign@4.1.1: {} - - object-inspect@1.13.4: {} - - object-keys@1.1.1: {} - - object.assign@4.1.7: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - has-symbols: 1.1.0 - object-keys: 1.1.1 - - object.entries@1.1.9: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - - object.fromentries@2.0.8: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-object-atoms: 1.1.1 - - object.values@1.2.1: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - - objectorarray@1.0.5: {} - - open@8.4.2: - dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - - optionator@0.9.4: - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.5 - - own-keys@1.0.1: - dependencies: - get-intrinsic: 1.3.0 - object-keys: 1.1.1 - safe-push-apply: 1.0.0 - - p-finally@1.0.0: {} - - p-limit@2.3.0: - dependencies: - p-try: 2.2.0 - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@4.1.0: - dependencies: - p-limit: 2.3.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - p-queue@6.6.2: - dependencies: - eventemitter3: 4.0.7 - p-timeout: 3.2.0 - - p-timeout@3.2.0: - dependencies: - p-finally: 1.0.0 - - p-try@2.2.0: {} - - param-case@3.0.4: - dependencies: - dot-case: 3.0.4 - tslib: 2.8.1 - - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - - parse-json@5.2.0: - dependencies: - '@babel/code-frame': 7.27.1 - error-ex: 1.3.4 - json-parse-even-better-errors: 2.3.1 - lines-and-columns: 1.2.4 - - pascal-case@3.1.2: - dependencies: - no-case: 3.0.4 - tslib: 2.8.1 - - path-browserify@1.0.1: {} - - path-exists@4.0.0: {} - - path-key@3.1.1: {} - - path-parse@1.0.7: {} - - path-scurry@2.0.1: - dependencies: - lru-cache: 11.2.4 - minipass: 7.1.2 - - path-type@4.0.0: {} - - pathval@2.0.1: {} - - picocolors@1.1.1: {} - - picomatch@2.3.1: {} - - picomatch@4.0.3: {} - - pify@5.0.0: {} - - pkg-dir@4.2.0: - dependencies: - find-up: 4.1.0 - - polished@4.3.1: - dependencies: - '@babel/runtime': 7.28.4 - - possible-typed-array-names@1.1.0: {} - - postcss-calc@8.2.4(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-selector-parser: 6.1.2 - postcss-value-parser: 4.2.0 - - postcss-colormin@5.3.1(postcss@8.5.6): - dependencies: - browserslist: 4.26.3 - caniuse-api: 3.0.0 - colord: 2.9.3 - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-convert-values@5.1.3(postcss@8.5.6): - dependencies: - browserslist: 4.26.3 - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-discard-comments@5.1.2(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - - postcss-discard-duplicates@5.1.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - - postcss-discard-empty@5.1.1(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - - postcss-discard-overridden@5.1.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - - postcss-load-config@3.1.4(postcss@8.5.6): - dependencies: - lilconfig: 2.1.0 - yaml: 1.10.2 - optionalDependencies: - postcss: 8.5.6 - - postcss-merge-longhand@5.1.7(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - stylehacks: 5.1.1(postcss@8.5.6) - - postcss-merge-rules@5.1.4(postcss@8.5.6): - dependencies: - browserslist: 4.26.3 - caniuse-api: 3.0.0 - cssnano-utils: 3.1.0(postcss@8.5.6) - postcss: 8.5.6 - postcss-selector-parser: 6.1.2 - - postcss-minify-font-values@5.1.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-minify-gradients@5.1.1(postcss@8.5.6): - dependencies: - colord: 2.9.3 - cssnano-utils: 3.1.0(postcss@8.5.6) - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-minify-params@5.1.4(postcss@8.5.6): - dependencies: - browserslist: 4.26.3 - cssnano-utils: 3.1.0(postcss@8.5.6) - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-minify-selectors@5.2.1(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-selector-parser: 6.1.2 - - postcss-modules-extract-imports@3.1.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - - postcss-modules-local-by-default@4.2.0(postcss@8.5.6): - dependencies: - icss-utils: 5.1.0(postcss@8.5.6) - postcss: 8.5.6 - postcss-selector-parser: 7.1.0 - postcss-value-parser: 4.2.0 - - postcss-modules-scope@3.2.1(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-selector-parser: 7.1.0 - - postcss-modules-values@4.0.0(postcss@8.5.6): - dependencies: - icss-utils: 5.1.0(postcss@8.5.6) - postcss: 8.5.6 - - postcss-modules@4.3.1(postcss@8.5.6): - dependencies: - generic-names: 4.0.0 - icss-replace-symbols: 1.1.0 - lodash.camelcase: 4.3.0 - postcss: 8.5.6 - postcss-modules-extract-imports: 3.1.0(postcss@8.5.6) - postcss-modules-local-by-default: 4.2.0(postcss@8.5.6) - postcss-modules-scope: 3.2.1(postcss@8.5.6) - postcss-modules-values: 4.0.0(postcss@8.5.6) - string-hash: 1.1.3 - - postcss-normalize-charset@5.1.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - - postcss-normalize-display-values@5.1.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-normalize-positions@5.1.1(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-normalize-repeat-style@5.1.1(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-normalize-string@5.1.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-normalize-timing-functions@5.1.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-normalize-unicode@5.1.1(postcss@8.5.6): - dependencies: - browserslist: 4.26.3 - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-normalize-url@5.1.0(postcss@8.5.6): - dependencies: - normalize-url: 6.1.0 - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-normalize-whitespace@5.1.1(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-ordered-values@5.1.3(postcss@8.5.6): - dependencies: - cssnano-utils: 3.1.0(postcss@8.5.6) - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-reduce-initial@5.1.2(postcss@8.5.6): - dependencies: - browserslist: 4.26.3 - caniuse-api: 3.0.0 - postcss: 8.5.6 - - postcss-reduce-transforms@5.1.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - - postcss-selector-parser@6.1.2: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-selector-parser@7.1.0: - dependencies: - cssesc: 3.0.0 - util-deprecate: 1.0.2 - - postcss-svgo@5.1.0(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-value-parser: 4.2.0 - svgo: 2.8.0 - - postcss-unique-selectors@5.1.1(postcss@8.5.6): - dependencies: - postcss: 8.5.6 - postcss-selector-parser: 6.1.2 - - postcss-value-parser@4.2.0: {} - - postcss@8.5.6: - dependencies: - nanoid: 3.3.11 - picocolors: 1.1.1 - source-map-js: 1.2.1 - - posthog-js@1.274.3: - dependencies: - '@posthog/core': 1.2.4 - core-js: 3.46.0 - fflate: 0.4.8 - preact: 10.27.2 - web-vitals: 4.2.4 - - preact@10.27.2: {} - - prelude-ls@1.2.1: {} - - prettier-linter-helpers@1.0.0: - dependencies: - fast-diff: 1.3.0 - - prettier@3.3.3: {} - - pretty-format@27.5.1: - dependencies: - ansi-regex: 5.0.1 - ansi-styles: 5.2.0 - react-is: 17.0.2 - - process@0.11.10: {} - - promise.series@0.2.0: {} - - promise@7.3.1: - dependencies: - asap: 2.0.6 - - prop-types@15.8.1: - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - - punycode@1.4.1: {} - - punycode@2.3.1: {} - - pure-color@1.3.0: {} - - qs@6.14.1: - dependencies: - side-channel: 1.1.0 - - queue-microtask@1.2.3: {} - - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - - react-base16-styling@0.6.0: - dependencies: - base16: 1.0.0 - lodash.curry: 4.1.1 - lodash.flow: 3.5.0 - pure-color: 1.3.0 - - react-confetti@6.4.0(react@18.3.1): - dependencies: - react: 18.3.1 - tween-functions: 1.2.0 - - react-device-detect@2.2.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - ua-parser-js: 1.0.41 - - react-docgen-typescript@2.4.0(typescript@5.9.3): - dependencies: - typescript: 5.9.3 - - react-docgen@7.1.1: - dependencies: - '@babel/core': 7.28.4 - '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 - '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.28.0 - '@types/doctrine': 0.0.9 - '@types/resolve': 1.20.6 - doctrine: 3.0.0 - resolve: 1.22.10 - strip-indent: 4.1.1 - transitivePeerDependencies: - - supports-color - - react-dom@18.3.1(react@18.3.1): - dependencies: - loose-envify: 1.4.0 - react: 18.3.1 - scheduler: 0.23.2 - - react-i18next@14.1.3(i18next@23.11.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - '@babel/runtime': 7.28.4 - html-parse-stringify: 3.0.1 - i18next: 23.11.5 - react: 18.3.1 - optionalDependencies: - react-dom: 18.3.1(react@18.3.1) - - react-is@16.13.1: {} - - react-is@17.0.2: {} - - react-is@18.3.1: {} - - react-is@19.2.0: {} - - react-json-view@1.21.3(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - flux: 4.0.4(react@18.3.1) - react: 18.3.1 - react-base16-styling: 0.6.0 - react-dom: 18.3.1(react@18.3.1) - react-lifecycles-compat: 3.0.4 - react-textarea-autosize: 8.5.9(@types/react@18.2.79)(react@18.3.1) - transitivePeerDependencies: - - '@types/react' - - encoding - - react-lifecycles-compat@3.0.4: {} - - react-property@2.0.2: {} - - react-refresh@0.14.2: {} - - react-router-dom@6.26.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - '@remix-run/router': 1.19.2 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-router: 6.26.2(react@18.3.1) - - react-router@6.26.2(react@18.3.1): - dependencies: - '@remix-run/router': 1.19.2 - react: 18.3.1 - - react-textarea-autosize@8.5.9(@types/react@18.2.79)(react@18.3.1): - dependencies: - '@babel/runtime': 7.28.4 - react: 18.3.1 - use-composed-ref: 1.4.0(@types/react@18.2.79)(react@18.3.1) - use-latest: 1.3.0(@types/react@18.2.79)(react@18.3.1) - transitivePeerDependencies: - - '@types/react' - - react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - '@babel/runtime': 7.28.4 - dom-helpers: 5.2.1 - loose-envify: 1.4.0 - prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - react-virtualized-auto-sizer@1.0.26(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - react-window@1.8.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - '@babel/runtime': 7.28.4 - memoize-one: 5.2.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - react@18.3.1: - dependencies: - loose-envify: 1.4.0 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - readdirp@4.1.2: - optional: true - - recast@0.23.11: - dependencies: - ast-types: 0.16.1 - esprima: 4.0.1 - source-map: 0.6.1 - tiny-invariant: 1.3.3 - tslib: 2.8.1 - - redent@3.0.0: - dependencies: - indent-string: 4.0.0 - strip-indent: 3.0.0 - - reduce-configs@1.1.1: {} - - reflect.getprototypeof@1.0.10: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - which-builtin-type: 1.2.1 - - regexp.prototype.flags@1.5.4: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-errors: 1.3.0 - get-proto: 1.0.1 - gopd: 1.2.0 - set-function-name: 2.0.2 - - relateurl@0.2.7: {} - - require-from-string@2.0.2: {} - - requireindex@1.2.0: {} - - reselect@5.1.1: {} - - resolve-from@4.0.0: {} - - resolve-from@5.0.0: {} - - resolve@1.22.10: - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - resolve@2.0.0-next.5: - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - reusify@1.1.0: {} - - rimraf@3.0.2: - dependencies: - glob: 13.0.0 - - robust-predicates@3.0.2: {} - - rollup-plugin-dts@6.2.3(rollup@4.50.2)(typescript@5.9.3): - dependencies: - magic-string: 0.30.19 - rollup: 4.50.2 - typescript: 5.9.3 - optionalDependencies: - '@babel/code-frame': 7.27.1 - - rollup-plugin-peer-deps-external@2.2.4(rollup@4.50.2): - dependencies: - rollup: 4.50.2 - - rollup-plugin-postcss@4.0.2(postcss@8.5.6): - dependencies: - chalk: 4.1.2 - concat-with-sourcemaps: 1.1.0 - cssnano: 5.1.15(postcss@8.5.6) - import-cwd: 3.0.0 - p-queue: 6.6.2 - pify: 5.0.0 - postcss: 8.5.6 - postcss-load-config: 3.1.4(postcss@8.5.6) - postcss-modules: 4.3.1(postcss@8.5.6) - promise.series: 0.2.0 - resolve: 1.22.10 - rollup-pluginutils: 2.8.2 - safe-identifier: 0.4.2 - style-inject: 0.3.0 - transitivePeerDependencies: - - ts-node - - rollup-pluginutils@2.8.2: - dependencies: - estree-walker: 0.6.1 - - rollup@4.50.2: - dependencies: - '@types/estree': 1.0.8 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.50.2 - '@rollup/rollup-android-arm64': 4.50.2 - '@rollup/rollup-darwin-arm64': 4.50.2 - '@rollup/rollup-darwin-x64': 4.50.2 - '@rollup/rollup-freebsd-arm64': 4.50.2 - '@rollup/rollup-freebsd-x64': 4.50.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.50.2 - '@rollup/rollup-linux-arm-musleabihf': 4.50.2 - '@rollup/rollup-linux-arm64-gnu': 4.50.2 - '@rollup/rollup-linux-arm64-musl': 4.50.2 - '@rollup/rollup-linux-loong64-gnu': 4.50.2 - '@rollup/rollup-linux-ppc64-gnu': 4.50.2 - '@rollup/rollup-linux-riscv64-gnu': 4.50.2 - '@rollup/rollup-linux-riscv64-musl': 4.50.2 - '@rollup/rollup-linux-s390x-gnu': 4.50.2 - '@rollup/rollup-linux-x64-gnu': 4.50.2 - '@rollup/rollup-linux-x64-musl': 4.50.2 - '@rollup/rollup-openharmony-arm64': 4.50.2 - '@rollup/rollup-win32-arm64-msvc': 4.50.2 - '@rollup/rollup-win32-ia32-msvc': 4.50.2 - '@rollup/rollup-win32-x64-msvc': 4.50.2 - fsevents: 2.3.3 - - rsbuild-plugin-dts@0.13.3(@rsbuild/core@1.5.17)(typescript@5.9.3): - dependencies: - '@ast-grep/napi': 0.37.0 - '@rsbuild/core': 1.5.17 - optionalDependencies: - typescript: 5.9.3 - - rsbuild-plugin-html-minifier-terser@1.1.2(@rsbuild/core@1.1.0): - dependencies: - '@types/html-minifier-terser': 7.0.2 - html-minifier-terser: 7.2.0 - optionalDependencies: - '@rsbuild/core': 1.1.0 - - run-parallel@1.2.0: - dependencies: - queue-microtask: 1.2.3 - - run-script-os@1.1.6: {} - - rw@1.3.3: {} - - rxjs@7.8.2: - dependencies: - tslib: 2.8.1 - - safe-array-concat@1.1.3: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - has-symbols: 1.1.0 - isarray: 2.0.5 - - safe-buffer@5.2.1: {} - - safe-identifier@0.4.2: {} - - safe-push-apply@1.0.0: - dependencies: - es-errors: 1.3.0 - isarray: 2.0.5 - - safe-regex-test@1.1.0: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-regex: 1.2.1 - - safer-buffer@2.1.2: {} - - sass-embedded-all-unknown@1.93.2: - dependencies: - sass: 1.93.2 - optional: true - - sass-embedded-android-arm64@1.93.2: - optional: true - - sass-embedded-android-arm@1.93.2: - optional: true - - sass-embedded-android-riscv64@1.93.2: - optional: true - - sass-embedded-android-x64@1.93.2: - optional: true - - sass-embedded-darwin-arm64@1.93.2: - optional: true - - sass-embedded-darwin-x64@1.93.2: - optional: true - - sass-embedded-linux-arm64@1.93.2: - optional: true - - sass-embedded-linux-arm@1.93.2: - optional: true - - sass-embedded-linux-musl-arm64@1.93.2: - optional: true - - sass-embedded-linux-musl-arm@1.93.2: - optional: true - - sass-embedded-linux-musl-riscv64@1.93.2: - optional: true - - sass-embedded-linux-musl-x64@1.93.2: - optional: true - - sass-embedded-linux-riscv64@1.93.2: - optional: true - - sass-embedded-linux-x64@1.93.2: - optional: true - - sass-embedded-unknown-all@1.93.2: - dependencies: - sass: 1.93.2 - optional: true - - sass-embedded-win32-arm64@1.93.2: - optional: true - - sass-embedded-win32-x64@1.93.2: - optional: true - - sass-embedded@1.93.2: - dependencies: - '@bufbuild/protobuf': 2.9.0 - buffer-builder: 0.2.0 - colorjs.io: 0.5.2 - immutable: 5.1.4 - rxjs: 7.8.2 - supports-color: 8.1.1 - sync-child-process: 1.0.2 - varint: 6.0.0 - optionalDependencies: - sass-embedded-all-unknown: 1.93.2 - sass-embedded-android-arm: 1.93.2 - sass-embedded-android-arm64: 1.93.2 - sass-embedded-android-riscv64: 1.93.2 - sass-embedded-android-x64: 1.93.2 - sass-embedded-darwin-arm64: 1.93.2 - sass-embedded-darwin-x64: 1.93.2 - sass-embedded-linux-arm: 1.93.2 - sass-embedded-linux-arm64: 1.93.2 - sass-embedded-linux-musl-arm: 1.93.2 - sass-embedded-linux-musl-arm64: 1.93.2 - sass-embedded-linux-musl-riscv64: 1.93.2 - sass-embedded-linux-musl-x64: 1.93.2 - sass-embedded-linux-riscv64: 1.93.2 - sass-embedded-linux-x64: 1.93.2 - sass-embedded-unknown-all: 1.93.2 - sass-embedded-win32-arm64: 1.93.2 - sass-embedded-win32-x64: 1.93.2 - - sass@1.93.2: - dependencies: - chokidar: 4.0.3 - immutable: 5.1.4 - source-map-js: 1.2.1 - optionalDependencies: - '@parcel/watcher': 2.5.1 - optional: true - - scheduler@0.23.2: - dependencies: - loose-envify: 1.4.0 - - schema-utils@4.3.3: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 8.17.1 - ajv-formats: 2.1.1(ajv@8.17.1) - ajv-keywords: 5.1.0(ajv@8.17.1) - - semver@6.3.1: {} - - semver@7.7.3: {} - - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - - set-function-length@1.2.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.3.0 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - - set-function-name@2.0.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.2 - - set-proto@1.0.0: - dependencies: - dunder-proto: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - - setimmediate@1.0.5: {} - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - side-channel-list@1.0.0: - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.4 - - side-channel-map@1.0.1: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - object-inspect: 1.13.4 - - side-channel-weakmap@1.0.2: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - object-inspect: 1.13.4 - side-channel-map: 1.0.1 - - side-channel@1.1.0: - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.4 - side-channel-list: 1.0.0 - side-channel-map: 1.0.1 - side-channel-weakmap: 1.0.2 - - sirv@2.0.4: - dependencies: - '@polka/url': 1.0.0-next.29 - mrmime: 2.0.1 - totalist: 3.0.1 - - slash@3.0.0: {} - - smob@1.5.0: {} - - source-map-js@1.2.1: {} - - source-map-support@0.5.21: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - - source-map@0.5.7: {} - - source-map@0.6.1: {} - - stable@0.1.8: {} - - stackframe@1.3.4: {} - - stop-iteration-iterator@1.1.0: - dependencies: - es-errors: 1.3.0 - internal-slot: 1.1.0 - - storybook-builder-rsbuild@1.0.3(@rsbuild/core@1.1.0)(@rspack/core@1.5.8(@swc/helpers@0.5.17))(@types/react@18.2.79)(storybook@8.6.15(prettier@3.3.3))(typescript@5.9.3): - dependencies: - '@rsbuild/core': 1.1.0 - '@rsbuild/plugin-type-check': 1.2.4(@rsbuild/core@1.1.0)(@rspack/core@1.5.8(@swc/helpers@0.5.17))(typescript@5.9.3) - '@storybook/addon-docs': 8.6.14(@types/react@18.2.79)(storybook@8.6.15(prettier@3.3.3)) - '@storybook/core-webpack': 8.6.14(storybook@8.6.15(prettier@3.3.3)) - browser-assert: 1.2.1 - case-sensitive-paths-webpack-plugin: 2.4.0 - cjs-module-lexer: 1.4.3 - constants-browserify: 1.0.0 - es-module-lexer: 1.7.0 - fs-extra: 11.3.2 - magic-string: 0.30.19 - path-browserify: 1.0.1 - process: 0.11.10 - rsbuild-plugin-html-minifier-terser: 1.1.2(@rsbuild/core@1.1.0) - sirv: 2.0.4 - storybook: 8.6.15(prettier@3.3.3) - ts-dedent: 2.2.0 - url: 0.11.4 - util: 0.12.5 - util-deprecate: 1.0.2 - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - '@rspack/core' - - '@types/react' - - storybook-react-rsbuild@1.0.3(@rsbuild/core@1.1.0)(@rspack/core@1.5.8(@swc/helpers@0.5.17))(@storybook/test@8.6.15(storybook@8.6.15(prettier@3.3.3)))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.50.2)(storybook@8.6.15(prettier@3.3.3))(typescript@5.9.3)(webpack@5.102.1(esbuild@0.25.11)): - dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.50.2) - '@rsbuild/core': 1.1.0 - '@storybook/react': 8.6.15(@storybook/test@8.6.15(storybook@8.6.15(prettier@3.3.3)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@8.6.15(prettier@3.3.3))(typescript@5.9.3) - '@storybook/react-docgen-typescript-plugin': 1.0.1(typescript@5.9.3)(webpack@5.102.1(esbuild@0.25.11)) - '@types/node': 18.19.130 - find-up: 5.0.0 - magic-string: 0.30.19 - react: 18.3.1 - react-docgen: 7.1.1 - react-docgen-typescript: 2.4.0(typescript@5.9.3) - react-dom: 18.3.1(react@18.3.1) - resolve: 1.22.10 - storybook: 8.6.15(prettier@3.3.3) - storybook-builder-rsbuild: 1.0.3(@rsbuild/core@1.1.0)(@rspack/core@1.5.8(@swc/helpers@0.5.17))(@types/react@18.2.79)(storybook@8.6.15(prettier@3.3.3))(typescript@5.9.3) - tsconfig-paths: 4.2.0 - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - '@rspack/core' - - '@storybook/test' - - '@types/react' - - rollup - - supports-color - - webpack - - storybook@8.6.15(prettier@3.3.3): - dependencies: - '@storybook/core': 8.6.15(prettier@3.3.3)(storybook@8.6.15(prettier@3.3.3)) - optionalDependencies: - prettier: 3.3.3 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - string-hash@1.1.3: {} - - string.prototype.matchall@4.0.12: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - get-intrinsic: 1.3.0 - gopd: 1.2.0 - has-symbols: 1.1.0 - internal-slot: 1.1.0 - regexp.prototype.flags: 1.5.4 - set-function-name: 2.0.2 - side-channel: 1.1.0 - - string.prototype.repeat@1.0.0: - dependencies: - define-properties: 1.2.1 - es-abstract: 1.24.0 - - string.prototype.trim@1.2.10: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-data-property: 1.1.4 - define-properties: 1.2.1 - es-abstract: 1.24.0 - es-object-atoms: 1.1.1 - has-property-descriptors: 1.0.2 - - string.prototype.trimend@1.0.9: - dependencies: - call-bind: 1.0.8 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - - string.prototype.trimstart@1.0.8: - dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-object-atoms: 1.1.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - strip-ansi@7.1.2: - dependencies: - ansi-regex: 6.2.2 - - strip-bom@3.0.0: {} - - strip-indent@3.0.0: - dependencies: - min-indent: 1.0.1 - - strip-indent@4.1.1: {} - - strip-json-comments@3.1.1: {} - - style-inject@0.3.0: {} - - style-to-js@1.1.18: - dependencies: - style-to-object: 1.0.11 - - style-to-object@1.0.11: - dependencies: - inline-style-parser: 0.2.4 - - stylehacks@5.1.1(postcss@8.5.6): - dependencies: - browserslist: 4.26.3 - postcss: 8.5.6 - postcss-selector-parser: 6.1.2 - - stylis@4.2.0: {} - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-color@8.1.1: - dependencies: - has-flag: 4.0.0 - - supports-preserve-symlinks-flag@1.0.0: {} - - svgo@2.8.0: - dependencies: - '@trysound/sax': 0.2.0 - commander: 7.2.0 - css-select: 4.3.0 - css-tree: 1.1.3 - csso: 4.2.0 - picocolors: 1.1.1 - stable: 0.1.8 - - sync-child-process@1.0.2: - dependencies: - sync-message-port: 1.1.3 - - sync-message-port@1.1.3: {} - - synckit@0.11.11: - dependencies: - '@pkgr/core': 0.2.9 - - tapable@2.3.0: {} - - terser-webpack-plugin@5.3.14(esbuild@0.25.11)(webpack@5.102.1(esbuild@0.25.11)): - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - jest-worker: 27.5.1 - schema-utils: 4.3.3 - serialize-javascript: 6.0.2 - terser: 5.44.0 - webpack: 5.102.1(esbuild@0.25.11) - optionalDependencies: - esbuild: 0.25.11 - - terser@5.44.0: - dependencies: - '@jridgewell/source-map': 0.3.11 - acorn: 8.15.0 - commander: 2.20.3 - source-map-support: 0.5.21 - - text-table@0.2.0: {} - - thingies@2.5.0(tslib@2.8.1): - dependencies: - tslib: 2.8.1 - - tiny-invariant@1.3.3: {} - - tiny-warning@1.0.3: {} - - tinyglobby@0.2.15: - dependencies: - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - - tinyrainbow@1.2.0: {} - - tinyspy@3.0.2: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - totalist@3.0.1: {} - - tr46@0.0.3: {} - - tree-dump@1.1.0(tslib@2.8.1): - dependencies: - tslib: 2.8.1 - - ts-api-utils@1.4.3(typescript@5.9.3): - dependencies: - typescript: 5.9.3 - - ts-checker-rspack-plugin@1.1.6(@rspack/core@1.5.8(@swc/helpers@0.5.17))(typescript@5.9.3): - dependencies: - '@babel/code-frame': 7.27.1 - '@rspack/lite-tapable': 1.0.1 - chokidar: 3.6.0 - is-glob: 4.0.3 - memfs: 4.49.0 - minimatch: 9.0.5 - picocolors: 1.1.1 - typescript: 5.9.3 - optionalDependencies: - '@rspack/core': 1.5.8(@swc/helpers@0.5.17) - - ts-dedent@2.2.0: {} - - tsconfig-paths@4.2.0: - dependencies: - json5: 2.2.3 - minimist: 1.2.8 - strip-bom: 3.0.0 - - tslib@1.14.1: {} - - tslib@2.8.1: {} - - tsutils@3.21.0(typescript@5.9.3): - dependencies: - tslib: 1.14.1 - typescript: 5.9.3 - - tween-functions@1.2.0: {} - - type-check@0.4.0: - dependencies: - prelude-ls: 1.2.1 - - typed-array-buffer@1.0.3: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-typed-array: 1.1.15 - - typed-array-byte-length@1.0.3: - dependencies: - call-bind: 1.0.8 - for-each: 0.3.5 - gopd: 1.2.0 - has-proto: 1.2.0 - is-typed-array: 1.1.15 - - typed-array-byte-offset@1.0.4: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - for-each: 0.3.5 - gopd: 1.2.0 - has-proto: 1.2.0 - is-typed-array: 1.1.15 - reflect.getprototypeof: 1.0.10 - - typed-array-length@1.0.7: - dependencies: - call-bind: 1.0.8 - for-each: 0.3.5 - gopd: 1.2.0 - is-typed-array: 1.1.15 - possible-typed-array-names: 1.1.0 - reflect.getprototypeof: 1.0.10 - - typescript-eslint@8.11.0(eslint@9.9.1(jiti@2.6.1))(typescript@5.9.3): - dependencies: - '@typescript-eslint/eslint-plugin': 8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.9.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.9.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.11.0(eslint@9.9.1(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.11.0(eslint@9.9.1(jiti@2.6.1))(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - eslint - - supports-color - - typescript@5.9.3: {} - - ua-parser-js@1.0.41: {} - - unbox-primitive@1.1.0: - dependencies: - call-bound: 1.0.4 - has-bigints: 1.1.0 - has-symbols: 1.1.0 - which-boxed-primitive: 1.1.1 - - undici-types@5.26.5: {} - - undici-types@7.16.0: {} - - universalify@2.0.1: {} - - unplugin@1.16.1: - dependencies: - acorn: 8.15.0 - webpack-virtual-modules: 0.6.2 - - update-browserslist-db@1.1.3(browserslist@4.26.3): - dependencies: - browserslist: 4.26.3 - escalade: 3.2.0 - picocolors: 1.1.1 - - uri-js@4.4.1: - dependencies: - punycode: 2.3.1 - - url@0.11.4: - dependencies: - punycode: 1.4.1 - qs: 6.14.1 - - use-composed-ref@1.4.0(@types/react@18.2.79)(react@18.3.1): - dependencies: - react: 18.3.1 - optionalDependencies: - '@types/react': 18.2.79 - - use-isomorphic-layout-effect@1.2.1(@types/react@18.2.79)(react@18.3.1): - dependencies: - react: 18.3.1 - optionalDependencies: - '@types/react': 18.2.79 - - use-latest@1.3.0(@types/react@18.2.79)(react@18.3.1): - dependencies: - react: 18.3.1 - use-isomorphic-layout-effect: 1.2.1(@types/react@18.2.79)(react@18.3.1) - optionalDependencies: - '@types/react': 18.2.79 - - use-sync-external-store@1.6.0(react@18.3.1): - dependencies: - react: 18.3.1 - - util-deprecate@1.0.2: {} - - util@0.12.5: - dependencies: - inherits: 2.0.4 - is-arguments: 1.2.0 - is-generator-function: 1.1.2 - is-typed-array: 1.1.15 - which-typed-array: 1.1.19 - - uuid@9.0.1: {} - - validate.io-array@1.0.6: {} - - validate.io-function@1.0.2: {} - - validate.io-integer-array@1.0.0: - dependencies: - validate.io-array: 1.0.6 - validate.io-integer: 1.0.5 - - validate.io-integer@1.0.5: - dependencies: - validate.io-number: 1.0.3 - - validate.io-number@1.0.3: {} - - varint@6.0.0: {} - - vite@6.4.1(@types/node@24.9.0)(jiti@2.6.1)(sass-embedded@1.93.2)(sass@1.93.2)(terser@5.44.0): - dependencies: - esbuild: 0.25.11 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.50.2 - tinyglobby: 0.2.15 - optionalDependencies: - '@types/node': 24.9.0 - fsevents: 2.3.3 - jiti: 2.6.1 - sass: 1.93.2 - sass-embedded: 1.93.2 - terser: 5.44.0 - - void-elements@3.1.0: {} - - watchpack@2.4.4: - dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - - web-vitals@4.2.4: {} - - webidl-conversions@3.0.1: {} - - webpack-sources@3.3.3: {} - - webpack-virtual-modules@0.6.2: {} - - webpack@5.102.1(esbuild@0.25.11): - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.8 - '@types/json-schema': 7.0.15 - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/wasm-edit': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.15.0 - acorn-import-phases: 1.0.4(acorn@8.15.0) - browserslist: 4.26.3 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.3 - es-module-lexer: 1.7.0 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.1 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 4.3.3 - tapable: 2.3.0 - terser-webpack-plugin: 5.3.14(esbuild@0.25.11)(webpack@5.102.1(esbuild@0.25.11)) - watchpack: 2.4.4 - webpack-sources: 3.3.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - whatwg-url@5.0.0: - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - - which-boxed-primitive@1.1.1: - dependencies: - is-bigint: 1.1.0 - is-boolean-object: 1.2.2 - is-number-object: 1.1.1 - is-string: 1.1.1 - is-symbol: 1.1.1 - - which-builtin-type@1.2.1: - dependencies: - call-bound: 1.0.4 - function.prototype.name: 1.1.8 - has-tostringtag: 1.0.2 - is-async-function: 2.1.1 - is-date-object: 1.1.0 - is-finalizationregistry: 1.1.1 - is-generator-function: 1.1.2 - is-regex: 1.2.1 - is-weakref: 1.1.1 - isarray: 2.0.5 - which-boxed-primitive: 1.1.1 - which-collection: 1.0.2 - which-typed-array: 1.1.19 - - which-collection@1.0.2: - dependencies: - is-map: 2.0.3 - is-set: 2.0.3 - is-weakmap: 2.0.2 - is-weakset: 2.0.4 - - which-typed-array@1.1.19: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.8 - call-bound: 1.0.4 - for-each: 0.3.5 - get-proto: 1.0.1 - gopd: 1.2.0 - has-tostringtag: 1.0.2 - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - word-wrap@1.2.5: {} - - ws@8.18.3: {} - - yallist@3.1.1: {} - - yaml@1.10.2: {} - - yocto-queue@0.1.0: {} - - zustand@4.5.7(@types/react@18.2.79)(immer@9.0.21)(react@18.3.1): - dependencies: - use-sync-external-store: 1.6.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.2.79 - immer: 9.0.21 - react: 18.3.1 diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3a53dc1ef..ac3e37824 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,6 +6,7 @@ settings: overrides: cross-spawn: '>=6.0.6' + dompurify: '>=3.4.0 <3.5.0' glob: '>=11.1.0' handlebars: '>=4.7.9 <5' js-yaml: '>=4.1.1' @@ -653,8 +654,8 @@ importers: specifier: ~0.8.5 version: 0.8.5 dompurify: - specifier: ~3.2.5 - version: 3.2.7 + specifier: '>=3.4.0 <3.5.0' + version: 3.4.3 elkjs: specifier: ~0.9.3 version: 0.9.3 @@ -4487,8 +4488,8 @@ packages: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} - dompurify@3.2.7: - resolution: {integrity: sha512-WhL/YuveyGXJaerVlMYGWhvQswa7myDG17P7Vu65EWC05o8vfeNbvNf4d/BOvH99+ZW+LlQsc1GDKMa1vNK6dw==} + dompurify@3.4.3: + resolution: {integrity: sha512-VVwJidIJcp1hpg2OMXML3ZVRPYSZiq4aX7qBh83BSIpOaRDqI+qxhXjjIWnpzkOXhmp0L81lnoME1mnCc9H48A==} domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} @@ -12802,7 +12803,7 @@ snapshots: dependencies: domelementtype: 2.3.0 - dompurify@3.2.7: + dompurify@3.4.3: optionalDependencies: '@types/trusted-types': 2.0.7 From efcc3449956a2d0434eaee3a8ee3f4ddb316c1bd Mon Sep 17 00:00:00 2001 From: Joshua Phillips Date: Fri, 15 May 2026 11:56:53 -0500 Subject: [PATCH 18/29] docs(agents): add observability & tracing integration guide (#716) * docs(agents): add observability & tracing integration guide Documents how external services consume runtime logs, lifecycle events, and pipeline traces over the WebSocket DAP channel so integrators have a single source of truth on what the server actually exposes (no OTel, Prometheus, or audit-log DB). Wires the new doc into the .rocketride/docs sync list and lists it in every agent stub (Claude Code, CLAUDE.md, AGENTS.md, Cursor, Windsurf, Copilot) so installed workspaces surface it alongside the existing README/quickstart/API references. Co-Authored-By: Claude * docs(agents): tag observability doc websocket fence with language Adds the `text` language identifier to the WebSocket URL fenced code block so markdownlint MD040 stops flagging it, per CodeRabbit review on PR #716. Co-Authored-By: Claude * docs(agents): remove HTTP transport from observability guide Co-Authored-By: Claude Opus 4.7 (1M context) --------- Co-authored-by: Claude Co-authored-by: Dmitrii Karataev --- apps/vscode/src/agents/agent-manager.ts | 2 +- docs/agents/ROCKETRIDE_OBSERVABILITY.md | 452 ++++++++++++++++++++++++ docs/stubs/AGENTS.md | 1 + docs/stubs/CLAUDE.md | 1 + docs/stubs/claude-code.md | 1 + docs/stubs/copilot-instructions.md | 1 + docs/stubs/cursor.mdc | 1 + docs/stubs/windsurf.md | 1 + 8 files changed, 459 insertions(+), 1 deletion(-) create mode 100644 docs/agents/ROCKETRIDE_OBSERVABILITY.md diff --git a/apps/vscode/src/agents/agent-manager.ts b/apps/vscode/src/agents/agent-manager.ts index 975fee643..c9a6a499b 100644 --- a/apps/vscode/src/agents/agent-manager.ts +++ b/apps/vscode/src/agents/agent-manager.ts @@ -49,7 +49,7 @@ const DOCS_DIR = '.rocketride/docs'; const GITIGNORE_ENTRY = '.rocketride/'; /** Doc files shipped in the extension's docs/ directory. */ -const DOC_FILES = ['ROCKETRIDE_README.md', 'ROCKETRIDE_QUICKSTART.md', 'ROCKETRIDE_PIPELINE_RULES.md', 'ROCKETRIDE_COMPONENT_REFERENCE.md', 'ROCKETRIDE_COMMON_MISTAKES.md', 'ROCKETRIDE_python_API.md', 'ROCKETRIDE_typescript_API.md']; +const DOC_FILES = ['ROCKETRIDE_README.md', 'ROCKETRIDE_QUICKSTART.md', 'ROCKETRIDE_PIPELINE_RULES.md', 'ROCKETRIDE_COMPONENT_REFERENCE.md', 'ROCKETRIDE_COMMON_MISTAKES.md', 'ROCKETRIDE_python_API.md', 'ROCKETRIDE_typescript_API.md', 'ROCKETRIDE_OBSERVABILITY.md']; /** Map from installer name to the VS Code config key under rocketride.integrations.* */ const INTEGRATION_CONFIG_KEYS: Record = { diff --git a/docs/agents/ROCKETRIDE_OBSERVABILITY.md b/docs/agents/ROCKETRIDE_OBSERVABILITY.md new file mode 100644 index 000000000..fd3106830 --- /dev/null +++ b/docs/agents/ROCKETRIDE_OBSERVABILITY.md @@ -0,0 +1,452 @@ +# RocketRide Observability & Tracing Integration Guide + +This document describes how an external service (e.g. an "agents database") consumes +runtime logs, lifecycle events, and pipeline tracing data from a RocketRide server. + +It reflects the actual server implementation, not aspirational features. If a feature +is not listed here, it likely does not exist in the server. + +--- + +## 1. What RocketRide ships for observability + +RocketRide does **not** expose OpenTelemetry, Jaeger, Prometheus `/metrics`, +Sentry, webhook registration, audit-log tables, or a queryable history database. +There is no SQL store of past runs to read from. + +Everything is delivered live over a single channel: a **WebSocket Debug Adapter +Protocol (DAP) connection** on which the server emits typed events. To capture +historical data, your service must connect, subscribe, and write the events to +its own database as they arrive. + +The features that _do_ exist: + +| Feature | Surface | Granularity | +| ------------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------ | +| Task lifecycle events (`begin` / `end` / `running` / `restart`) | DAP event `apaevt_task` | Per task | +| Periodic full task status (counts, rates, errors, metrics, tokens) | DAP event `apaevt_status_update` | Per task, periodic | +| Pipeline flow / component traces (op, lane, input/output, result, error) | DAP event `apaevt_flow` | Per pipe, per op | +| Engine stdout/stderr-style log lines | DAP event with `event: 'output'` (forwarded as `EVENT_TYPE.OUTPUT`) | Per task | +| Real-time node→UI custom messages (`monitorSSE`) | DAP event `apaevt_sse` | Per pipe | +| File upload progress | DAP event `apaevt_status_upload` | Per upload | +| Server/admin dashboard events (connection added/removed, monitor changes) | DAP event `apaevt_dashboard` | Server-wide | + +--- + +## 2. Connection & authentication + +### 2.1 Endpoints + +The RocketRide server is a FastAPI app bound by default to: + +- Host: `0.0.0.0` +- Port: `5565` (constant `CONST_DEFAULT_WEB_PORT`) + +Observability uses a single transport: a WebSocket DAP connection at +`/task/service`. All events, commands, and status queries flow over this socket. + +The WebSocket URL is: + +```text +ws://:5565/task/service +``` + +(or `wss://` when TLS is enabled via `tlsCertFile` / `tlsKeyFile` config). + +### 2.2 Auth + +All connections require an API key. The _first_ DAP request you send after the +socket opens must be the `auth` command: + +```json +{ + "type": "request", + "seq": 1, + "command": "auth", + "arguments": { + "auth": "${ROCKETRIDE_APIKEY}", + "clientName": "agents-db", + "clientVersion": "1.0.0" + } +} +``` + +If `success: false` comes back, the server closes the socket. Do not retry blindly +on auth failure. + +Tenant scoping: events are only delivered to connections whose authenticated API +key matches the API key that started the task. You will only see your own runs. + +### 2.3 Environment variables + +Variables the server reads: + +- `ROCKETRIDE_APIKEY` — server-side API key (also expected client-side). +- `ROCKETRIDE_URI` — default URI used by the SDK if not passed in code. +- `ROCKETRIDE_CORS_ORIGINS` — comma-separated CORS allow-list. + +--- + +## 3. The DAP wire protocol (what you send and receive) + +DAP is JSON-over-WebSocket. Three message types: `request`, `response`, `event`. + +```jsonc +// Outbound request from your service +{ + "type": "request", + "seq": 42, // unique correlation id you generate + "command": "rrext_monitor", + "arguments": { ... }, + "token": "${TASK_TOKEN}" // optional, command-dependent +} + +// Inbound response (matches request_seq → seq) +{ + "type": "response", + "request_seq": 42, + "command": "rrext_monitor", + "success": true, + "body": { ... }, + "message": "..." // present when success=false +} + +// Inbound event (no request) +{ + "type": "event", + "seq": 1234, + "event": "apaevt_flow", // event-type discriminator + "body": { ... } +} +``` + +You correlate responses to requests by matching `request_seq` to the `seq` you sent. + +--- + +## 4. Subscribing to events: `rrext_monitor` + +Subscriptions are managed with the `rrext_monitor` DAP command. The server keeps +a per-connection registry keyed by **token** (resolved to project+source) or +**project+source** directly, optionally narrowed to a `pipe_id` or widened to +`*` (all your tasks). + +### 4.1 Request shape + +```json +{ + "type": "request", + "seq": 2, + "command": "rrext_monitor", + "arguments": { + "types": ["TASK", "SUMMARY", "FLOW", "OUTPUT", "SSE"], + "projectId": "", // OR omit and use token below + "source": "", // pairs with projectId + "pipeId": 0 // optional, narrows to one pipe + }, + "token": "${TASK_TOKEN}" // OR use projectId+source above +} +``` + +The `types` array accepts case-insensitive strings of the `EVENT_TYPE` enum. +Valid values: + +| String | Bit | What you get | +| ----------- | --- | --------------------------------------------------------------------------------- | +| `NONE` | 0 | Unsubscribe (clears the registry entry) | +| `DEBUGGER` | 1 | DAP debug protocol passthrough (stopped, threads, etc.) | +| `DETAIL` | 2 | Real-time per-object processing updates | +| `SUMMARY` | 4 | Periodic full `TASK_STATUS` snapshots — best for dashboards | +| `OUTPUT` | 8 | Engine log/output lines | +| `FLOW` | 16 | Pipeline component flow events (requires `pipelineTraceLevel` on execute, see §5) | +| `TASK` | 32 | Lifecycle: `running`, `begin`, `end`, `restart` | +| `SSE` | 64 | Custom node-to-UI messages emitted by nodes via `monitorSSE()` | +| `DASHBOARD` | 128 | Server-level events (connections, monitor changes) | +| `ALL` | 255 | Everything above | + +You may also send the bitmask as an integer (`"types": 36` = SUMMARY|TASK). + +### 4.2 Subscription scopes + +| Scope | Set with | Receives | +| -------------------------- | --------------------------------- | --------------------------------------------------------- | +| One running task | `token` | Events for that task only | +| One pipeline (any run) | `projectId` + `source` | Events for that project+source, even across restarts | +| One pipe within a pipeline | `projectId` + `source` + `pipeId` | Events for that one pipe | +| All sources in a project | `projectId` + `source: "*"` | Project-wide | +| All your tasks | `token: "*"` | Everything you own (recommended for an ingestion service) | + +### 4.3 Recommended subscription for an agents-database ingester + +```json +{ + "type": "request", + "seq": 2, + "command": "rrext_monitor", + "token": "*", + "arguments": { + "types": ["TASK", "SUMMARY", "FLOW", "OUTPUT", "SSE"] + } +} +``` + +This gives you lifecycle, full status snapshots, component traces, log lines, +and node-emitted events for every pipeline your API key triggers. + +### 4.4 Replay-on-subscribe behavior + +When you turn on `TASK`, the server immediately replies with one +`apaevt_task` event with `action: "running"` listing currently-active tasks. + +When you turn on `SUMMARY`, the server immediately sends an `apaevt_status_update` +with the current `TASK_STATUS` (or an empty "Not running" placeholder). + +So you do not need to poll for initial state — subscribing seeds it. + +### 4.5 Important: enabling FLOW traces + +`apaevt_flow` events are only forwarded when the _task_ was started with a +`pipelineTraceLevel`. If you don't control the executor, FLOW events for that +run will be silent. Possible values when starting a pipeline (`execute` / +`use`): + +| Level | Captured | +| ---------------- | -------------------------------- | +| `none` (default) | No flow traces | +| `metadata` | Component/lane structure only | +| `summary` | Lane writes and final results | +| `full` | Every lane write and invoke call | + +If your service is the executor, pass `pipelineTraceLevel: "summary"` (good +default — captures inputs/outputs without per-call noise). + +--- + +## 5. Event payload schemas + +Authoritative type definitions live at: + +- Python: `packages/client-python/src/rocketride/types/events.py` +- Python: `packages/client-python/src/rocketride/types/task.py` +- TypeScript: `packages/client-typescript/src/client/types/events.ts` +- TypeScript: `packages/client-typescript/src/client/types/task.ts` + +### 5.1 `apaevt_task` — lifecycle (subscribe to `TASK`) + +`body` is one of: + +```ts +// Initial snapshot, sent once on subscription +{ action: "running", tasks: [{ id: string, projectId: string, source: string }] } + +// Task started +{ action: "begin", name: string, projectId: string, source: string } + +// Task ended (completed or terminated) +{ action: "end", name: string, projectId: string, source: string } + +// Task restarted +{ action: "restart", name: string, projectId: string, source: string } +``` + +There is **no per-event task `id` or token in begin/end** — correlate by +`projectId` + `source`. Use `running` for the id↔project+source map at +subscription time. + +### 5.2 `apaevt_status_update` — periodic full status (subscribe to `SUMMARY`) + +`body` is a `TASK_STATUS` (Pydantic model). Key fields: + +```ts +{ + // Identity + name: string, + project_id: string, + source: string, + + // Lifecycle + state: 0 | 1 | 2 | 3 | 4 | 5 | 6, // NONE/STARTING/INITIALIZING/RUNNING/STOPPING/COMPLETED/CANCELLED + completed: boolean, + startTime: number, // unix seconds, float + endTime: number, // unix seconds, float + debuggerAttached: boolean, + serviceUp: boolean, + + // Current activity + status: string, // human-readable status line + currentObject: string, + currentSize: number, + + // Counts + totalCount: number, completedCount: number, failedCount: number, + totalSize: number, completedSize: number, failedSize: number, + wordsCount: number, wordsSize: number, + + // Rates (instantaneous) + rateCount: number, rateSize: number, + + // History (last 50 each) + errors: string[], + warnings: string[], + notes: (string | object)[], + + // Termination + exitCode: number, exitMessage: string, + + // Pipeline flow snapshot + pipeflow: { + totalPipes: number, + byPipe: { [pipeId: number]: string[] } // active component stack per pipe + }, + + // Resource metrics (per-process, normalized) + metrics: { + cpu_percent: number, cpu_memory_mb: number, gpu_memory_mb: number, + peak_cpu_percent: number, peak_cpu_memory_mb: number, peak_gpu_memory_mb: number, + avg_cpu_percent: number, avg_cpu_memory_mb: number, avg_gpu_memory_mb: number + }, + + // Cumulative billing tokens (100 tokens = $1) + tokens: { + cpu_utilization: number, cpu_memory: number, gpu_memory: number, total: number + } +} +``` + +`state` enum mapping: +`0=NONE, 1=STARTING, 2=INITIALIZING, 3=RUNNING, 4=STOPPING, 5=COMPLETED, 6=CANCELLED`. + +### 5.3 `apaevt_flow` — per-pipe execution trace (subscribe to `FLOW`) + +```ts +{ + id: number, // pipe index within the pipeline + op: "begin" | "enter" | "leave" | "end", + pipes: string[], // current component stack for this pipe + trace: { // shape depends on pipelineTraceLevel + lane?: string, + data?: object, // input/intermediate data + result?: string, // output data / serialized result + error?: string + }, + result?: PIPELINE_RESULT, // present when op==="end" and level >= summary + project_id: string, + source: string +} +``` + +This is the data that lets you reconstruct _why_ a pipeline produced what it +produced: each component entry/exit with its lane data and any error. + +### 5.4 `apaevt_sse` — node-to-UI passthrough (subscribe to `SSE`) + +Nodes can call `monitorSSE(pipe_id, type, data)` to broadcast custom updates +("thinking", "tool_call", progress, etc.). Body shape: + +```ts +{ + pipe_id: number, + type: string, // node-defined event type + data: object // node-defined payload +} +``` + +Schema is intentionally open — interpret per node type. + +### 5.5 Output / log lines (subscribe to `OUTPUT`) + +The original DAP `output` events from the engine are re-emitted to subscribers +under `EVENT_TYPE.OUTPUT`. The body carries an `output` string field plus +DAP-standard fields (`category`, etc., from the underlying debugger output +event). + +### 5.6 `apaevt_status_upload` — file upload progress + +```ts +{ + action: "begin" | "write" | "complete" | "error", + filepath: string, + bytes_sent?: number, + file_size?: number, + ... +} +``` + +### 5.7 `apaevt_dashboard` — server admin events (subscribe to `DASHBOARD`) + +Connection lifecycle, monitor-change audit events, etc. Useful if you want to +record _who_ subscribed/unsubscribed to monitors (operator-level audit). + +--- + +## 6. DAP commands you may need (besides `rrext_monitor`) + +Sent the same way as `rrext_monitor`: + +| Command | `arguments` | Returns | Purpose | +| ----------------------- | -------------------------------------------------------------------------------- | ---------------- | ---------------------------------- | +| `auth` | `{ auth, clientName?, clientVersion? }` | `{ success }` | Required first message | +| `rrext_get_task_status` | — (uses `token`) | `TASK_STATUS` | Fetch current status synchronously | +| `rrext_get_token` | `{ projectId, source }` | `{ token }` | Resolve a running task's token | +| `execute` | `{ pipeline, token?, threads?, args?, useExisting?, ttl?, pipelineTraceLevel? }` | `{ token, ... }` | Start a pipeline | +| `terminate` | — (uses `token`) | — | Stop a running pipeline | + +--- + +## 7. Reference SDKs + +If you'd rather not implement DAP-over-WebSocket from scratch, two first-party +clients exist in this repo and ship to npm/PyPI: + +- Python: `pip install rocketride` — `RocketRideClient(uri, auth, on_event=...)`, + then `await client.add_monitor(key={'token': '*'}, types=['summary','flow','task','output','sse'])`. +- TypeScript: `@rocketride/client` — same shape. + +Both let you pass an `on_event` async callback that fires for every inbound +event message. Source: `packages/client-python/src/rocketride/` and +`packages/client-typescript/src/client/`. + +--- + +## 8. Recommended ingestion design for the agents database + +1. Open one long-lived WebSocket to `ws://:5565/task/service`. +2. Send `auth` with the service-account API key. +3. Send `rrext_monitor` with `token: "*"` and + `types: ["TASK", "SUMMARY", "FLOW", "OUTPUT", "SSE"]`. +4. For every inbound `event` message, switch on `event` and write to your DB: + - `apaevt_task` → `pipeline_runs` (insert on `begin`, update on `end`, + reconcile from `running` snapshot at startup). + by `(project_id, source, startTime)`. + - `apaevt_flow` → append to `pipeline_run_traces` keyed by + `(project_id, source, id /*pipe*/, op, seq)`. Store `trace.data`, + `trace.result`, `trace.error` as JSONB. + - `apaevt_sse` → append to `pipeline_run_node_events`. + - `output` events → append to `pipeline_run_logs`. +5. Correlate runs: there is no global run-id. Use + `(project_id, source, startTime)` from `TASK_STATUS` as the run key, or + capture the `token` from `running`/`apaevt_task` and your own `execute` + responses. +6. Reconnect on disconnect; the SDK handles auto-resubscribe of monitors, + and the next `running` snapshot will let you reconcile any missed + `begin`/`end` you slept through. +7. If you need full per-component data flow, ensure pipelines are launched + with `pipelineTraceLevel: "summary"` (or `"full"` for debugging). Without + it `apaevt_flow` does not fire. + +--- + +## 9. Things to NOT assume + +- There is no built-in dead-letter queue — if your ingester is offline, you + miss events for that window. The next `apaevt_task` `running` snapshot is + your only crash-recovery handle. +- There is no `event_id` / global ordering key. Use the DAP envelope `seq` + (per-connection monotonic) plus your own ingest timestamp. +- `apaevt_flow` `trace` is a free-form dict; schema varies by node and trace + level. Store as JSONB, do not flatten. +- `errors` and `warnings` arrays in `TASK_STATUS` are capped at 50 entries + each — you must persist them as they appear or you'll lose older ones on + long runs. +- Monitor subscriptions are per-connection, not durable server-side. Reconnect + → resubscribe. diff --git a/docs/stubs/AGENTS.md b/docs/stubs/AGENTS.md index b6748bc12..194a1d941 100644 --- a/docs/stubs/AGENTS.md +++ b/docs/stubs/AGENTS.md @@ -19,6 +19,7 @@ Full docs: `.rocketride/docs/` | ROCKETRIDE_COMMON_MISTAKES.md | Before finalizing — known pitfalls to avoid | | ROCKETRIDE_python_API.md | Python SDK — client methods, types, patterns | | ROCKETRIDE_typescript_API.md | TypeScript SDK — client methods, types, patterns | +| ROCKETRIDE_OBSERVABILITY.md | Consuming runtime logs, lifecycle events, and pipeline traces | ## Before Writing ANY RocketRide Code diff --git a/docs/stubs/CLAUDE.md b/docs/stubs/CLAUDE.md index b6748bc12..194a1d941 100644 --- a/docs/stubs/CLAUDE.md +++ b/docs/stubs/CLAUDE.md @@ -19,6 +19,7 @@ Full docs: `.rocketride/docs/` | ROCKETRIDE_COMMON_MISTAKES.md | Before finalizing — known pitfalls to avoid | | ROCKETRIDE_python_API.md | Python SDK — client methods, types, patterns | | ROCKETRIDE_typescript_API.md | TypeScript SDK — client methods, types, patterns | +| ROCKETRIDE_OBSERVABILITY.md | Consuming runtime logs, lifecycle events, and pipeline traces | ## Before Writing ANY RocketRide Code diff --git a/docs/stubs/claude-code.md b/docs/stubs/claude-code.md index 61234d770..828694d6d 100644 --- a/docs/stubs/claude-code.md +++ b/docs/stubs/claude-code.md @@ -24,6 +24,7 @@ Full docs: `.rocketride/docs/` | ROCKETRIDE_COMMON_MISTAKES.md | Before finalizing — known pitfalls to avoid | | ROCKETRIDE_python_API.md | Python SDK — client methods, types, patterns | | ROCKETRIDE_typescript_API.md | TypeScript SDK — client methods, types, patterns | +| ROCKETRIDE_OBSERVABILITY.md | Consuming runtime logs, lifecycle events, and pipeline traces | ## Before Writing ANY RocketRide Code diff --git a/docs/stubs/copilot-instructions.md b/docs/stubs/copilot-instructions.md index b6748bc12..194a1d941 100644 --- a/docs/stubs/copilot-instructions.md +++ b/docs/stubs/copilot-instructions.md @@ -19,6 +19,7 @@ Full docs: `.rocketride/docs/` | ROCKETRIDE_COMMON_MISTAKES.md | Before finalizing — known pitfalls to avoid | | ROCKETRIDE_python_API.md | Python SDK — client methods, types, patterns | | ROCKETRIDE_typescript_API.md | TypeScript SDK — client methods, types, patterns | +| ROCKETRIDE_OBSERVABILITY.md | Consuming runtime logs, lifecycle events, and pipeline traces | ## Before Writing ANY RocketRide Code diff --git a/docs/stubs/cursor.mdc b/docs/stubs/cursor.mdc index 3f9606781..93d6ff31a 100644 --- a/docs/stubs/cursor.mdc +++ b/docs/stubs/cursor.mdc @@ -23,6 +23,7 @@ Full docs: `.rocketride/docs/` | ROCKETRIDE_COMMON_MISTAKES.md | Before finalizing — known pitfalls to avoid | | ROCKETRIDE_python_API.md | Python SDK — client methods, types, patterns | | ROCKETRIDE_typescript_API.md | TypeScript SDK — client methods, types, patterns | +| ROCKETRIDE_OBSERVABILITY.md | Consuming runtime logs, lifecycle events, and pipeline traces | ## Before Writing ANY RocketRide Code 1. Read `.rocketride/docs/ROCKETRIDE_README.md` for mandatory setup requirements diff --git a/docs/stubs/windsurf.md b/docs/stubs/windsurf.md index dd07e155d..0cd5c64e5 100644 --- a/docs/stubs/windsurf.md +++ b/docs/stubs/windsurf.md @@ -24,6 +24,7 @@ Full docs: `.rocketride/docs/` | ROCKETRIDE_COMMON_MISTAKES.md | Before finalizing — known pitfalls to avoid | | ROCKETRIDE_python_API.md | Python SDK — client methods, types, patterns | | ROCKETRIDE_typescript_API.md | TypeScript SDK — client methods, types, patterns | +| ROCKETRIDE_OBSERVABILITY.md | Consuming runtime logs, lifecycle events, and pipeline traces | ## Before Writing ANY RocketRide Code From 2798d6d1c4043b129c6a3ad50ff8b264e3e89c06 Mon Sep 17 00:00:00 2001 From: Rod-Christensen <98939082+Rod-Christensen@users.noreply.github.com> Date: Fri, 15 May 2026 10:26:29 -0700 Subject: [PATCH 19/29] fix(cli): implement signal handlers for graceful shutdown (RR-655) (#891) This is from an already approved PR Rebased onto current develop, dropping changes already merged separately (redaction regex, CSS comment fix, PageStatus UI, upload math fix). Only the signal handler work remains: - SIGINT/SIGTERM handlers with proper exit codes (130/143) - Double-signal force exit, 5s cleanup timeout - Idempotent cleanupClient via dedup promise - isCancelled guards on command actions to prevent exit races - run()/main() shutdown awareness via awaitShutdown() Co-authored-by: Claude Opus 4.6 (1M context) --- .../client-typescript/src/cli/rocketride.ts | 129 ++++++++++++++---- 1 file changed, 102 insertions(+), 27 deletions(-) diff --git a/packages/client-typescript/src/cli/rocketride.ts b/packages/client-typescript/src/cli/rocketride.ts index 7e9a7ad04..cb378e6bd 100644 --- a/packages/client-typescript/src/cli/rocketride.ts +++ b/packages/client-typescript/src/cli/rocketride.ts @@ -801,6 +801,7 @@ export class RocketRideCLI { private connected: boolean = false; private attempt: number = 0; private cancelled: boolean = false; + private signalShutdownPromise?: Promise; constructor() { this.setupSignalHandlers(); @@ -814,13 +815,53 @@ export class RocketRideCLI { return this.cancelled; } + isShuttingDown(): boolean { + return this.signalShutdownPromise !== undefined; + } + + // Resolves only when the signal handler calls process.exit, so any + // command/run/main flow that awaits this will stand down and let the + // signal handler own the exit code. + awaitShutdown(): Promise { + return this.signalShutdownPromise ?? new Promise(() => {}); + } + private setupSignalHandlers(): void { - // TODO: Enable proper signal handling - // const signalHandler = () => { - // this.cancel(); - // }; - // process.on('SIGINT', signalHandler); - // process.on('SIGTERM', signalHandler); + const FORCE_EXIT_TIMEOUT_MS = 5000; + + const signalHandler = async (signal: string) => { + const exitCode = 128 + (signal === 'SIGINT' ? 2 : 15); + + if (this.signalShutdownPromise) { + // Second signal: force exit immediately + process.exit(exitCode); + } + + // Park a promise that never resolves; other flows await it to + // stand down while the signal handler drives the exit. + this.signalShutdownPromise = new Promise(() => {}); + + this.cancel(); + + // Force exit if cleanup hangs + const forceExitTimer = setTimeout(() => { + console.error(`\nCleanup timed out after ${FORCE_EXIT_TIMEOUT_MS}ms, forcing exit`); + process.exit(exitCode); + }, FORCE_EXIT_TIMEOUT_MS); + + try { + await this.cleanupClient(); + } catch { + // Ignore cleanup errors during signal handling + } finally { + clearTimeout(forceExitTimer); + } + + process.exit(exitCode); + }; + + process.on('SIGINT', () => signalHandler('SIGINT')); + process.on('SIGTERM', () => signalHandler('SIGTERM')); } private createProgram(): Command { @@ -858,10 +899,14 @@ export class RocketRideCLI { try { const exitCode = await this.cmdStart(); - process.exit(exitCode); + if (!this.isCancelled()) { + process.exit(exitCode); + } } finally { - this.cancel(); - await this.cleanupClient(); + if (!this.isCancelled()) { + this.cancel(); + await this.cleanupClient(); + } } }); @@ -896,10 +941,14 @@ export class RocketRideCLI { try { const exitCode = await this.cmdUpload(); - process.exit(exitCode); + if (!this.isCancelled()) { + process.exit(exitCode); + } } finally { - this.cancel(); - await this.cleanupClient(); + if (!this.isCancelled()) { + this.cancel(); + await this.cleanupClient(); + } } }); @@ -925,10 +974,14 @@ export class RocketRideCLI { try { const exitCode = await this.cmdStatus(); - process.exit(exitCode); + if (!this.isCancelled()) { + process.exit(exitCode); + } } finally { - this.cancel(); - await this.cleanupClient(); + if (!this.isCancelled()) { + this.cancel(); + await this.cleanupClient(); + } } }); @@ -954,10 +1007,14 @@ export class RocketRideCLI { try { const exitCode = await this.cmdStop(); - process.exit(exitCode); + if (!this.isCancelled()) { + process.exit(exitCode); + } } finally { - this.cancel(); - await this.cleanupClient(); + if (!this.isCancelled()) { + this.cancel(); + await this.cleanupClient(); + } } }); @@ -1188,16 +1245,20 @@ export class RocketRideCLI { } } + private _cleanupPromise?: Promise; + private async cleanupClient(): Promise { - if (this.client) { - try { - await this.client.disconnect(); - } catch { - // Ignore cleanup errors - } finally { - this.client = undefined; - } + if (this._cleanupPromise) { + return this._cleanupPromise; } + const client = this.client; + if (!client) { + return; + } + this.client = undefined; + this._cleanupPromise = client.disconnect().catch(() => {}); + await this._cleanupPromise; + this._cleanupPromise = undefined; } private loadPipelineConfig(pipelineFile: string): PipelineConfig { @@ -1693,8 +1754,15 @@ export class RocketRideCLI { // Parse command line arguments - commander will handle command routing try { await program.parseAsync(process.argv); + if (this.isShuttingDown()) { + // Signal handler owns the exit; park until it calls process.exit. + await this.awaitShutdown(); + } return 0; // If we get here, a command was executed successfully } catch (error) { + if (this.isShuttingDown()) { + await this.awaitShutdown(); + } if (error instanceof Error && error.message.includes('interrupted')) { console.log('\nOperation interrupted by user'); return 1; @@ -1721,11 +1789,18 @@ function formatError(e: Error): string { } export async function main(): Promise { + const cli = new RocketRideCLI(); try { - const cli = new RocketRideCLI(); const exitCode = await cli.run(); + if (cli.isShuttingDown()) { + // Signal handler owns the exit code; never race it to process.exit. + await cli.awaitShutdown(); + } process.exit(exitCode); } catch (error) { + if (cli.isShuttingDown()) { + await cli.awaitShutdown(); + } if (error instanceof Error && error.message.includes('interrupted')) { console.log('\n\nOperation interrupted by user'); } else { From 11fd44e7db7216057f48959ecb783a6b0864e8fe Mon Sep 17 00:00:00 2001 From: Anand Ray Date: Fri, 15 May 2026 11:11:16 -0700 Subject: [PATCH 20/29] chore(deps): patch undici + lodash family ReDoS/RCE via overrides (#888) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolves 16 open Dependabot alerts (6 undici, 5 lodash, 5 lodash-es) in a single PR. Affected manifests: root pnpm-lock.yaml (8 alerts) and packages/shared-ui/pnpm-lock.yaml (8 alerts, all clear once #886 lands deleting that dead sub-lockfile). Changes: - package.json: add three bounded entries to pnpm.overrides "lodash": ">=4.18.0 <5" was 4.17.23 "lodash-es": ">=4.18.0 <5" was 4.17.23 "undici": ">=7.24.0 <8" was 7.20.0 - packages/shared-ui/package.json: bump lodash peerDep ~4.17.21 → ~4.18.0 (declaration alignment; shared-ui has zero direct lodash imports in src/, so this is purely a doc-correctness fix). Post-install resolves to lodash@4.18.1, lodash-es@4.18.1, undici@7.25.0. Advisories cleared: undici (all in 7.0.0..<7.24.0): GHSA-f269-vfmq-vjvj (high) WebSocket 64-bit length parser overflow / crash GHSA-v9p9-hfj2-hcw8 (high) WebSocket unhandled exception via server_max_win GHSA-vrm6-8vpv-qv8q (high) WebSocket permessage-deflate unbounded memory GHSA-2mjp-6q6p-2qxm (medium) HTTP request/response smuggling GHSA-phc3-fgpg-7m6h (medium) DeduplicationHandler unbounded memory GHSA-4992-7rv2-5pvq (medium) CRLF injection via `upgrade` option lodash + lodash-es (<= 4.17.23): GHSA-r5fr-rjxr-66jc (high) Code injection via _.template imports key names GHSA-f23m-r3pf-42rh (medium) Prototype pollution via _.unset / array path bypass Note: GHSA-xxjr-mmjv-4gpg (medium, fix=4.17.23) was already covered by the prior dependabot-bumped 4.17.23 and will auto-close when Dependabot rescans. Bounded ranges match the existing repo convention (handlebars: ">=4.7.9 <5", protobufjs: ">=7.5.5 <8") and avoid pulling in unreleased lodash 5.x or undici 8.x majors that would carry breaking changes. --- package.json | 5 ++- packages/shared-ui/package.json | 2 +- pnpm-lock.yaml | 55 +++++++++++++++++---------------- 3 files changed, 34 insertions(+), 28 deletions(-) diff --git a/package.json b/package.json index 178af8977..0750a04de 100644 --- a/package.json +++ b/package.json @@ -57,13 +57,16 @@ "glob": ">=11.1.0", "handlebars": ">=4.7.9 <5", "js-yaml": ">=4.1.1", + "lodash": ">=4.18.1 <5", + "lodash-es": ">=4.18.1 <5", "minimatch@<3.1.4": ">=3.1.4 <4", "minimatch@5": ">=5.1.8 <6", "minimatch@9": ">=9.0.7 <10", "minimatch@10": ">=10.2.3 <11", "postcss": ">=8.4.31", "protobufjs": ">=7.5.5 <8", - "qs": ">=6.14.1" + "qs": ">=6.14.1", + "undici": ">=7.24.0 <8" }, "supportedArchitectures": { "os": [ diff --git a/packages/shared-ui/package.json b/packages/shared-ui/package.json index a34cd5bcc..c1dcc7315 100644 --- a/packages/shared-ui/package.json +++ b/packages/shared-ui/package.json @@ -41,7 +41,7 @@ "i18next": "~23.11.3", "immer": "~9.0.6", "is-hotkey": "~0.2.0", - "lodash": "~4.17.21", + "lodash": "~4.18.1", "moment": "~2.30.1", "react": "^18.2.0", "react-device-detect": "~2.2.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ac3e37824..601001dbd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,6 +10,8 @@ overrides: glob: '>=11.1.0' handlebars: '>=4.7.9 <5' js-yaml: '>=4.1.1' + lodash: '>=4.18.1 <5' + lodash-es: '>=4.18.1 <5' minimatch@<3.1.4: '>=3.1.4 <4' minimatch@5: '>=5.1.8 <6' minimatch@9: '>=9.0.7 <10' @@ -17,6 +19,7 @@ overrides: postcss: '>=8.4.31' protobufjs: '>=7.5.5 <8' qs: '>=6.14.1' + undici: '>=7.24.0 <8' importers: @@ -675,8 +678,8 @@ importers: specifier: ~0.2.0 version: 0.2.0 lodash: - specifier: ~4.17.21 - version: 4.17.23 + specifier: '>=4.18.1 <5' + version: 4.18.1 lucide-react: specifier: ^0.577.0 version: 0.577.0(react@18.3.1) @@ -5993,8 +5996,8 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - lodash-es@4.17.23: - resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==} + lodash-es@4.18.1: + resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==} lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} @@ -6047,8 +6050,8 @@ packages: lodash.uniq@4.5.0: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} - lodash@4.17.23: - resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} @@ -8273,8 +8276,8 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - undici@7.20.0: - resolution: {integrity: sha512-MJZrkjyd7DeC+uPZh+5/YaMDxFiiEEaDgbUSVMXayofAkDWF1088CDo+2RPg7B1BuS1qf1vgNE7xqwPxE0DuSQ==} + undici@7.25.0: + resolution: {integrity: sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ==} engines: {node: '>=20.18.1'} unicorn-magic@0.1.0: @@ -10380,8 +10383,8 @@ snapshots: '@rjsf/core@5.20.1(@rjsf/utils@5.20.1(react@18.3.1))(react@18.3.1)': dependencies: '@rjsf/utils': 5.20.1(react@18.3.1) - lodash: 4.17.23 - lodash-es: 4.17.23 + lodash: 4.18.1 + lodash-es: 4.18.1 markdown-to-jsx: 7.7.17(react@18.3.1) nanoid: 3.3.11 prop-types: 15.8.1 @@ -10401,8 +10404,8 @@ snapshots: dependencies: json-schema-merge-allof: 0.8.1 jsonpointer: 5.0.1 - lodash: 4.17.23 - lodash-es: 4.17.23 + lodash: 4.18.1 + lodash-es: 4.18.1 react: 18.3.1 react-is: 18.3.1 @@ -10411,8 +10414,8 @@ snapshots: '@rjsf/utils': 5.20.1(react@18.3.1) ajv: 8.17.1 ajv-formats: 2.1.1(ajv@8.17.1) - lodash: 4.17.23 - lodash-es: 4.17.23 + lodash: 4.18.1 + lodash-es: 4.18.1 '@rollup/plugin-commonjs@28.0.9(rollup@4.59.0)': dependencies: @@ -11090,7 +11093,7 @@ snapshots: chalk: 4.1.2 debug: 4.4.3(supports-color@8.1.1) js-yaml: 4.1.1 - lodash: 4.17.23 + lodash: 4.18.1 pluralize: 2.0.0 string-width: 4.2.3 strip-ansi: 6.0.1 @@ -12166,7 +12169,7 @@ snapshots: parse5: 7.3.0 parse5-htmlparser2-tree-adapter: 7.1.0 parse5-parser-stream: 7.1.2 - undici: 7.20.0 + undici: 7.25.0 whatwg-mimetype: 4.0.0 chokidar@3.6.0: @@ -12294,7 +12297,7 @@ snapshots: dependencies: chalk: 4.1.2 date-fns: 2.30.0 - lodash: 4.17.23 + lodash: 4.18.1 rxjs: 7.8.2 shell-quote: 1.8.3 spawn-command: 0.0.2 @@ -12637,7 +12640,7 @@ snapshots: dagre@0.8.5: dependencies: graphlib: 2.1.8 - lodash: 4.17.23 + lodash: 4.18.1 data-view-buffer@1.0.2: dependencies: @@ -13523,7 +13526,7 @@ snapshots: graphlib@2.1.8: dependencies: - lodash: 4.17.23 + lodash: 4.18.1 handlebars@4.7.9: dependencies: @@ -13696,7 +13699,7 @@ snapshots: html-rspack-plugin@5.6.2(@rspack/core@0.5.7(@swc/helpers@0.5.3)): dependencies: - lodash: 4.17.23 + lodash: 4.18.1 tapable: 2.3.0 optionalDependencies: '@rspack/core': 0.5.7(@swc/helpers@0.5.3) @@ -14575,13 +14578,13 @@ snapshots: json-schema-compare@0.2.2: dependencies: - lodash: 4.17.23 + lodash: 4.18.1 json-schema-merge-allof@0.8.1: dependencies: compute-lcm: 1.1.2 json-schema-compare: 0.2.2 - lodash: 4.17.23 + lodash: 4.18.1 json-schema-traverse@0.4.1: {} @@ -14838,7 +14841,7 @@ snapshots: dependencies: p-locate: 5.0.0 - lodash-es@4.17.23: {} + lodash-es@4.18.1: {} lodash.camelcase@4.3.0: {} @@ -14874,7 +14877,7 @@ snapshots: lodash.uniq@4.5.0: {} - lodash@4.17.23: {} + lodash@4.18.1: {} log-symbols@4.1.0: dependencies: @@ -16373,7 +16376,7 @@ snapshots: dependencies: clsx: 2.1.1 eventemitter3: 4.0.7 - lodash: 4.17.23 + lodash: 4.18.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-is: 18.3.1 @@ -17450,7 +17453,7 @@ snapshots: undici-types@6.21.0: {} - undici@7.20.0: {} + undici@7.25.0: {} unicorn-magic@0.1.0: {} From ed597501a5414e33816cf3816bf6a6cda193849e Mon Sep 17 00:00:00 2001 From: "Rod.Christensen" Date: Fri, 15 May 2026 11:23:26 -0700 Subject: [PATCH 21/29] chore(deps): bump shared-ui devDependencies MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - @rollup/plugin-commonjs 28.0.6 → 28.0.9 - @rollup/plugin-replace 6.0.2 → 6.0.3 - @rollup/plugin-typescript 12.1.4 → 12.3.0 - @types/react 18.2.21 → 18.3.28 - @types/react-dom 18.2.7 → 18.3.7 - rollup 4.59.0 → 4.60.4 - rollup-plugin-dts 6.2.3 → 6.4.1 Replaces Dependabot PR #881 which failed due to stale pnpm-lock.yaml. Co-Authored-By: Claude Opus 4.6 (1M context) --- packages/shared-ui/package.json | 14 +- pnpm-lock.yaml | 596 ++++++++++++++++++++------------ 2 files changed, 386 insertions(+), 224 deletions(-) diff --git a/packages/shared-ui/package.json b/packages/shared-ui/package.json index c1dcc7315..6e5e1a585 100644 --- a/packages/shared-ui/package.json +++ b/packages/shared-ui/package.json @@ -63,19 +63,19 @@ }, "devDependencies": { "@types/react-syntax-highlighter": "^15.5.13", - "@rollup/plugin-commonjs": "~28.0.6", + "@rollup/plugin-commonjs": "~28.0.9", "@rollup/plugin-node-resolve": "~16.0.1", - "@rollup/plugin-replace": "~6.0.2", + "@rollup/plugin-replace": "~6.0.3", "@rollup/plugin-terser": "~0.4.4", - "@rollup/plugin-typescript": "~12.1.4", + "@rollup/plugin-typescript": "~12.3.0", "@rsbuild/core": "1.1.0", "@rsbuild/plugin-react": "1.0.7", "@rsbuild/plugin-sass": "1.1.0", "@rslib/core": "~0.13.3", - "@types/react": "~18.2.21", - "@types/react-dom": "~18.2.7", - "rollup": "~4.59.0", - "rollup-plugin-dts": "~6.2.3", + "@types/react": "~18.3.28", + "@types/react-dom": "~18.3.7", + "rollup": "~4.60.4", + "rollup-plugin-dts": "~6.4.1", "rollup-plugin-peer-deps-external": "~2.2.4", "rollup-plugin-postcss": "~4.0.2", "run-script-os": "^1.1.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 601001dbd..70a9cf93b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -592,10 +592,10 @@ importers: version: 3.2.2(react@18.3.1) '@emotion/react': specifier: ~11.13.0 - version: 11.13.5(@types/react@18.2.79)(react@18.3.1) + version: 11.13.5(@types/react@18.3.28)(react@18.3.1) '@emotion/styled': specifier: ~11.13.0 - version: 11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1) + version: 11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) '@fontsource/quicksand': specifier: ~5.0.18 version: 5.0.20 @@ -610,25 +610,25 @@ importers: version: 5.0.22 '@mui/icons-material': specifier: ~6.1.5 - version: 6.1.10(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.2.79)(react@18.3.1) + version: 6.1.10(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) '@mui/material': specifier: ~6.1.5 - version: 6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 6.1.10(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/styles': specifier: ~5.16.7 - version: 5.16.14(@types/react@18.2.79)(react@18.3.1) + version: 5.16.14(@types/react@18.3.28)(react@18.3.1) '@mui/x-data-grid': specifier: ~7.19.0 - version: 7.19.0(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@6.5.0(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 7.19.0(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@6.5.0(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mui/x-date-pickers': specifier: ~7.18.0 - version: 7.18.0(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@6.5.0(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(date-fns@2.30.0)(luxon@3.7.2)(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 7.18.0(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@6.5.0(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(date-fns@2.30.0)(luxon@3.7.2)(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@rjsf/core': specifier: ~5.20.1 version: 5.20.1(@rjsf/utils@5.20.1(react@18.3.1))(react@18.3.1) '@rjsf/mui': specifier: ~5.20.1 - version: 5.20.1(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@mui/icons-material@6.1.10(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@rjsf/core@5.20.1(@rjsf/utils@5.20.1(react@18.3.1))(react@18.3.1))(@rjsf/utils@5.20.1(react@18.3.1))(react@18.3.1) + version: 5.20.1(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@mui/icons-material@6.1.10(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@rjsf/core@5.20.1(@rjsf/utils@5.20.1(react@18.3.1))(react@18.3.1))(@rjsf/utils@5.20.1(react@18.3.1))(react@18.3.1) '@rjsf/utils': specifier: ~5.20.1 version: 5.20.1(react@18.3.1) @@ -643,7 +643,7 @@ importers: version: 5.10.0 '@xyflow/react': specifier: ~12.3.4 - version: 12.3.6(@types/react@18.2.79)(immer@9.0.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 12.3.6(@types/react@18.3.28)(immer@9.0.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) chart.js: specifier: ^4.4.0 version: 4.5.1 @@ -667,7 +667,7 @@ importers: version: 3.1.0 html-react-parser: specifier: ~5.2.3 - version: 5.2.15(@types/react@18.2.79)(react@18.3.1) + version: 5.2.15(@types/react@18.3.28)(react@18.3.1) i18next: specifier: ~23.11.3 version: 23.11.5 @@ -712,13 +712,13 @@ importers: version: 14.1.3(i18next@23.11.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-joyride: specifier: ~2.9.3 - version: 2.9.3(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 2.9.3(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-json-view: specifier: ~1.21.3 - version: 1.21.3(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 1.21.3(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react-markdown: specifier: ^10.1.0 - version: 10.1.0(@types/react@18.2.79)(react@18.3.1) + version: 10.1.0(@types/react@18.3.28)(react@18.3.1) react-router-dom: specifier: ~6.26.1 version: 6.26.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -745,20 +745,20 @@ importers: version: link:../client-typescript devDependencies: '@rollup/plugin-commonjs': - specifier: ~28.0.6 - version: 28.0.9(rollup@4.59.0) + specifier: ~28.0.9 + version: 28.0.9(rollup@4.60.4) '@rollup/plugin-node-resolve': specifier: ~16.0.1 - version: 16.0.3(rollup@4.59.0) + version: 16.0.3(rollup@4.60.4) '@rollup/plugin-replace': - specifier: ~6.0.2 - version: 6.0.3(rollup@4.59.0) + specifier: ~6.0.3 + version: 6.0.3(rollup@4.60.4) '@rollup/plugin-terser': specifier: ~0.4.4 - version: 0.4.4(rollup@4.59.0) + version: 0.4.4(rollup@4.60.4) '@rollup/plugin-typescript': - specifier: ~12.1.4 - version: 12.1.4(rollup@4.59.0)(tslib@2.8.1)(typescript@5.9.3) + specifier: ~12.3.0 + version: 12.3.0(rollup@4.60.4)(tslib@2.8.1)(typescript@5.9.3) '@rsbuild/core': specifier: 1.1.0 version: 1.1.0 @@ -784,23 +784,23 @@ importers: specifier: 1.1.8 version: 1.1.8 '@types/react': - specifier: ~18.2.21 - version: 18.2.79 + specifier: ~18.3.28 + version: 18.3.28 '@types/react-dom': - specifier: ~18.2.7 - version: 18.2.25 + specifier: ~18.3.7 + version: 18.3.7(@types/react@18.3.28) '@types/react-syntax-highlighter': specifier: ^15.5.13 version: 15.5.13 rollup: - specifier: ~4.59.0 - version: 4.59.0 + specifier: ~4.60.4 + version: 4.60.4 rollup-plugin-dts: - specifier: ~6.2.3 - version: 6.2.3(rollup@4.59.0)(typescript@5.9.3) + specifier: ~6.4.1 + version: 6.4.1(rollup@4.60.4)(typescript@5.9.3) rollup-plugin-peer-deps-external: specifier: ~2.2.4 - version: 2.2.4(rollup@4.59.0) + version: 2.2.4(rollup@4.60.4) rollup-plugin-postcss: specifier: ~4.0.2 version: 4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@20.19.30)(typescript@5.9.3)) @@ -2355,8 +2355,8 @@ packages: rollup: optional: true - '@rollup/plugin-typescript@12.1.4': - resolution: {integrity: sha512-s5Hx+EtN60LMlDBvl5f04bEiFZmAepk27Q+mr85L/00zPDn1jtzlTV6FWn81MaIwqfWzKxmOJrBWHU6vtQyedQ==} + '@rollup/plugin-typescript@12.3.0': + resolution: {integrity: sha512-7DP0/p7y3t67+NabT9f8oTBFE6gGkto4SA6Np2oudYmZE/m1dt8RB0SjL1msMxFpLo631qjRCcBlAbq1ml/Big==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.14.0||^3.0.0||^4.0.0 @@ -2377,141 +2377,141 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.59.0': - resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==} + '@rollup/rollup-android-arm-eabi@4.60.4': + resolution: {integrity: sha512-F5QXMSiFebS9hKZj02XhWLLnRpJ3B3AROP0tWbFBSj+6kCbg5m9j5JoHKd4mmSVy5mS/IMQloYgYxCuJC0fxEQ==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.59.0': - resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==} + '@rollup/rollup-android-arm64@4.60.4': + resolution: {integrity: sha512-GxxTKApUpzRhof7poWvCJHRF51C67u1R7D6DiluBE8wKU1u5GWE8t+v81JvJYtbawoBFX1hLv5Ei4eVjkWokaw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.59.0': - resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==} + '@rollup/rollup-darwin-arm64@4.60.4': + resolution: {integrity: sha512-tua0TaJxMOB1R0V0RS1jFZ/RpURFDJIOR2A6jWwQeawuFyS4gBW+rntLRaQd0EQ4bd6Vp44Z2rXW+YYDBsj6IA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.59.0': - resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==} + '@rollup/rollup-darwin-x64@4.60.4': + resolution: {integrity: sha512-CSKq7MsP+5PFIcydhAiR1K0UhEI1A2jWXVKHPCBZ151yOutENwvnPocgVHkivu2kviURtCEB6zUQw0vs8RrhMg==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.59.0': - resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==} + '@rollup/rollup-freebsd-arm64@4.60.4': + resolution: {integrity: sha512-+O8OkVdyvXMtJEciu2wS/pzm1IxntEEQx3z5TAVy4l32G0etZn+RsA48ARRrFm6Ri8fvqPQfgrvNxSjKAbnd3g==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.59.0': - resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==} + '@rollup/rollup-freebsd-x64@4.60.4': + resolution: {integrity: sha512-Iw3oMskH3AfNuhU0MSN7vNbdi4me/NiYo2azqPz/Le16zHSa+3RRmliCMWWQmh4lcndccU40xcJuTYJZxNo/lw==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.59.0': - resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==} + '@rollup/rollup-linux-arm-gnueabihf@4.60.4': + resolution: {integrity: sha512-EIPRXTVQpHyF8WOo219AD2yEltPehLTcTMz2fn6JsatLYSzQf00hj3rulF+yauOlF9/FtM2WpkT/hJh/KJFGhA==} cpu: [arm] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm-musleabihf@4.59.0': - resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==} + '@rollup/rollup-linux-arm-musleabihf@4.60.4': + resolution: {integrity: sha512-J3Yh9PzzF1Ovah2At+lHiGQdsYgArxBbXv/zHfSyaiFQEqvNv7DcW98pCrmdjCZBrqBiKrKKe2V+aaSGWuBe/w==} cpu: [arm] os: [linux] libc: [musl] - '@rollup/rollup-linux-arm64-gnu@4.59.0': - resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==} + '@rollup/rollup-linux-arm64-gnu@4.60.4': + resolution: {integrity: sha512-BFDEZMYfUvLn37ONE1yMBojPxnMlTFsdyNoqncT0qFq1mAfllL+ATMMJd8TeuVMiX84s1KbcxcZbXInmcO2mRg==} cpu: [arm64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-arm64-musl@4.59.0': - resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==} + '@rollup/rollup-linux-arm64-musl@4.60.4': + resolution: {integrity: sha512-pc9EYOSlOgdQ2uPl1o9PF6/kLSgaUosia7gOuS8mB69IxJvlclko1MECXysjs5ryez1/5zjYqx3+xYU0TU6R1A==} cpu: [arm64] os: [linux] libc: [musl] - '@rollup/rollup-linux-loong64-gnu@4.59.0': - resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==} + '@rollup/rollup-linux-loong64-gnu@4.60.4': + resolution: {integrity: sha512-NxnomyxYerDh5n4iLrNa+sH+Z+U4BMEE46V2PgQ/hoB909i8gV1M5wPojWg9fk1jWpO3IQnOs20K4wyZuFLEFQ==} cpu: [loong64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-loong64-musl@4.59.0': - resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==} + '@rollup/rollup-linux-loong64-musl@4.60.4': + resolution: {integrity: sha512-nbJnQ8a3z1mtmrwImCYhc6BGpThAyYVRQxw9uKSKG4wR6aAYno9sVjJ0zaZcW9BPJX1GbrDPf+SvdWjgTuDmnw==} cpu: [loong64] os: [linux] libc: [musl] - '@rollup/rollup-linux-ppc64-gnu@4.59.0': - resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==} + '@rollup/rollup-linux-ppc64-gnu@4.60.4': + resolution: {integrity: sha512-2EU6acNrQLd8tYvo/LXW535wupT3m6fo7HKo6lr7ktQoItxTyOL1ZCR/GfGCuXl2vR+zmfI6eRXkSemafv+iVg==} cpu: [ppc64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-ppc64-musl@4.59.0': - resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==} + '@rollup/rollup-linux-ppc64-musl@4.60.4': + resolution: {integrity: sha512-WeBtoMuaMxiiIrO2IYP3xs6GMWkJP2C0EoT8beTLkUPmzV1i/UcOSVw1d5r9KBODtHKilG5yFxsGRnBbK3wJ4A==} cpu: [ppc64] os: [linux] libc: [musl] - '@rollup/rollup-linux-riscv64-gnu@4.59.0': - resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==} + '@rollup/rollup-linux-riscv64-gnu@4.60.4': + resolution: {integrity: sha512-FJHFfqpKUI3A10WrWKiFbBZ7yVbGT4q4B5o1qKFFojqpaYoh9LrQgqWCmmcxQzVSXYtyB5bzkXrYzlHTs21MYA==} cpu: [riscv64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-riscv64-musl@4.59.0': - resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==} + '@rollup/rollup-linux-riscv64-musl@4.60.4': + resolution: {integrity: sha512-mcEl6CUT5IAUmQf1m9FYSmVqCJlpQ8r8eyftFUHG8i9OhY7BkBXSUdnLH5DOf0wCOjcP9v/QO93zpmF1SptCCw==} cpu: [riscv64] os: [linux] libc: [musl] - '@rollup/rollup-linux-s390x-gnu@4.59.0': - resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==} + '@rollup/rollup-linux-s390x-gnu@4.60.4': + resolution: {integrity: sha512-ynt3JxVd2w2buzoKDWIyiV1pJW93xlQic1THVLXilz429oijRpSHivZAgp65KBu+cMcgf1eVVjdnTLvPxgCuoQ==} cpu: [s390x] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-gnu@4.59.0': - resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==} + '@rollup/rollup-linux-x64-gnu@4.60.4': + resolution: {integrity: sha512-Boiz5+MsaROEWDf+GGEwF8VMHGhlUoQMtIPjOgA5fv4osupqTVnJteQNKJwUcnUog2G55jYXH7KZFFiJe0TEzQ==} cpu: [x64] os: [linux] libc: [glibc] - '@rollup/rollup-linux-x64-musl@4.59.0': - resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==} + '@rollup/rollup-linux-x64-musl@4.60.4': + resolution: {integrity: sha512-+qfSY27qIrFfI/Hom04KYFw3GKZSGU4lXus51wsb5EuySfFlWRwjkKWoE9emgRw/ukoT4Udsj4W/+xxG8VbPKg==} cpu: [x64] os: [linux] libc: [musl] - '@rollup/rollup-openbsd-x64@4.59.0': - resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==} + '@rollup/rollup-openbsd-x64@4.60.4': + resolution: {integrity: sha512-VpTfOPHgVXEBeeR8hZ2O0F3aSso+JDWqTWmTmzcQKted54IAdUVbxE+j/MVxUsKa8L20HJhv3vUezVPoquqWjA==} cpu: [x64] os: [openbsd] - '@rollup/rollup-openharmony-arm64@4.59.0': - resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==} + '@rollup/rollup-openharmony-arm64@4.60.4': + resolution: {integrity: sha512-IPOsh5aRYuLv/nkU51X10Bf75Bsf6+gZdx1X+QP5QM6lIJFHHqbHLG0uJn/hWthzo13UAc2umiUorqZy3axoZg==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.59.0': - resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==} + '@rollup/rollup-win32-arm64-msvc@4.60.4': + resolution: {integrity: sha512-4QzE9E81OohJ/HKzHhsqU+zcYYojVOXlFMs1DdyMT6qXl/niOH7AVElmmEdUNHHS/oRkc++d5k6Vy85zFs0DEw==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.59.0': - resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==} + '@rollup/rollup-win32-ia32-msvc@4.60.4': + resolution: {integrity: sha512-zTPgT1YuHHcd+Tmx7h8aml0FWFVelV5N54oHow9SLj+GfoDy/huQ+UV396N/C7KpMDMiPspRktzM1/0r1usYEA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.59.0': - resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==} + '@rollup/rollup-win32-x64-gnu@4.60.4': + resolution: {integrity: sha512-DRS4G7mi9lJxqEDezIkKCaUIKCrLUUDCUaCsTPCi/rtqaC6D/jjwslMQyiDU50Ka0JKpeXeRBFBAXwArY52vBw==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.59.0': - resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==} + '@rollup/rollup-win32-x64-msvc@4.60.4': + resolution: {integrity: sha512-QVTUovf40zgTqlFVrKA1uXMVvU2QWEFWfAH8Wdc48IxLvrJMQVMBRjuQyUpzZCDkakImib9eVazbWlC6ksWtJw==} cpu: [x64] os: [win32] @@ -3155,6 +3155,11 @@ packages: '@types/react-dom@18.2.25': resolution: {integrity: sha512-o/V48vf4MQh7juIKZU2QGDfli6p1+OOi5oXx36Hffpc9adsHeXjVp8rHuPkjd8VT8sOJ2Zp05HR7CdpGTIUFUA==} + '@types/react-dom@18.3.7': + resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==} + peerDependencies: + '@types/react': ^18.0.0 + '@types/react-syntax-highlighter@15.5.13': resolution: {integrity: sha512-uLGJ87j6Sz8UaBAooU0T6lWJ0dBmjZgN1PZTrj05TNql2/XpC6+4HhMT5syIdFUUt+FASfCeLLv4kBygNU+8qA==} @@ -3166,6 +3171,9 @@ packages: '@types/react@18.2.79': resolution: {integrity: sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w==} + '@types/react@18.3.28': + resolution: {integrity: sha512-z9VXpC7MWrhfWipitjNdgCauoMLRdIILQsAEV+ZesIzBq/oUlxk0m3ApZuMFCXdnS4U7KrI+l3WRUEGQ8K1QKw==} + '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} @@ -7393,12 +7401,12 @@ packages: robust-predicates@3.0.2: resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} - rollup-plugin-dts@6.2.3: - resolution: {integrity: sha512-UgnEsfciXSPpASuOelix7m4DrmyQgiaWBnvI0TM4GxuDh5FkqW8E5hu57bCxXB90VvR1WNfLV80yEDN18UogSA==} - engines: {node: '>=16'} + rollup-plugin-dts@6.4.1: + resolution: {integrity: sha512-l//F3Zf7ID5GoOfLfD8kroBjQKEKpy1qfhtAdnpibFZMffPaylrg1CoDC2vGkPeTeyxUe4bVFCln2EFuL7IGGg==} + engines: {node: '>=20'} peerDependencies: rollup: ^3.29.4 || ^4 - typescript: ^4.5 || ^5.0 + typescript: ^4.5 || ^5.0 || ^6.0 rollup-plugin-peer-deps-external@2.2.4: resolution: {integrity: sha512-AWdukIM1+k5JDdAqV/Cxd+nejvno2FVLVeZ74NKggm3Q5s9cbbcOgUPGdbxPi4BXu7xGaZ8HG12F+thImYu/0g==} @@ -7414,8 +7422,8 @@ packages: rollup-pluginutils@2.8.2: resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} - rollup@4.59.0: - resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==} + rollup@4.60.4: + resolution: {integrity: sha512-WHeFSbZYsPu3+bLoNRUuAO+wavNlocOPf3wSHTP7hcFKVnJeWsYlCDbr3mTS14FCizf9ccIxXA8sGL8zKeQN3g==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -9103,6 +9111,22 @@ snapshots: transitivePeerDependencies: - supports-color + '@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.6 + '@emotion/babel-plugin': 11.13.5 + '@emotion/cache': 11.14.0 + '@emotion/serialize': 1.3.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@18.3.1) + '@emotion/utils': 1.4.2 + '@emotion/weak-memoize': 0.4.0 + hoist-non-react-statics: 3.3.2 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + transitivePeerDependencies: + - supports-color + '@emotion/serialize@1.3.3': dependencies: '@emotion/hash': 0.9.2 @@ -9128,6 +9152,21 @@ snapshots: transitivePeerDependencies: - supports-color + '@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.6 + '@emotion/babel-plugin': 11.13.5 + '@emotion/is-prop-valid': 1.4.0 + '@emotion/react': 11.13.5(@types/react@18.3.28)(react@18.3.1) + '@emotion/serialize': 1.3.3 + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@18.3.1) + '@emotion/utils': 1.4.2 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + transitivePeerDependencies: + - supports-color + '@emotion/unitless@0.10.0': {} '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@18.3.1)': @@ -10006,13 +10045,13 @@ snapshots: '@mui/core-downloads-tracker@6.5.0': {} - '@mui/icons-material@6.1.10(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.2.79)(react@18.3.1)': + '@mui/icons-material@6.1.10(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.28)(react@18.3.1)': dependencies: '@babel/runtime': 7.28.6 - '@mui/material': 6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/material': 6.1.10(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 optionalDependencies: - '@types/react': 18.2.79 + '@types/react': 18.3.28 '@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: @@ -10035,14 +10074,35 @@ snapshots: '@emotion/styled': 11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1) '@types/react': 18.2.79 - '@mui/private-theming@5.17.1(@types/react@18.2.79)(react@18.3.1)': + '@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.28.6 - '@mui/utils': 5.17.1(@types/react@18.2.79)(react@18.3.1) + '@mui/core-downloads-tracker': 6.5.0 + '@mui/system': 6.5.0(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) + '@mui/types': 7.4.11(@types/react@18.3.28) + '@mui/utils': 6.4.9(@types/react@18.3.28)(react@18.3.1) + '@popperjs/core': 2.11.8 + '@types/react-transition-group': 4.4.12(@types/react@18.3.28) + clsx: 2.1.1 + csstype: 3.2.3 prop-types: 15.8.1 react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-is: 18.3.1 + react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) optionalDependencies: - '@types/react': 18.2.79 + '@emotion/react': 11.13.5(@types/react@18.3.28)(react@18.3.1) + '@emotion/styled': 11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) + '@types/react': 18.3.28 + + '@mui/private-theming@5.17.1(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.6 + '@mui/utils': 5.17.1(@types/react@18.3.28)(react@18.3.1) + prop-types: 15.8.1 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 '@mui/private-theming@6.4.9(@types/react@18.2.79)(react@18.3.1)': dependencies: @@ -10053,6 +10113,15 @@ snapshots: optionalDependencies: '@types/react': 18.2.79 + '@mui/private-theming@6.4.9(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.6 + '@mui/utils': 6.4.9(@types/react@18.3.28)(react@18.3.1) + prop-types: 15.8.1 + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.28 + '@mui/styled-engine@6.5.0(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.28.6 @@ -10066,13 +10135,26 @@ snapshots: '@emotion/react': 11.13.5(@types/react@18.2.79)(react@18.3.1) '@emotion/styled': 11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1) - '@mui/styles@5.16.14(@types/react@18.2.79)(react@18.3.1)': + '@mui/styled-engine@6.5.0(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.6 + '@emotion/cache': 11.14.0 + '@emotion/serialize': 1.3.3 + '@emotion/sheet': 1.4.0 + csstype: 3.2.3 + prop-types: 15.8.1 + react: 18.3.1 + optionalDependencies: + '@emotion/react': 11.13.5(@types/react@18.3.28)(react@18.3.1) + '@emotion/styled': 11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) + + '@mui/styles@5.16.14(@types/react@18.3.28)(react@18.3.1)': dependencies: '@babel/runtime': 7.28.6 '@emotion/hash': 0.9.2 - '@mui/private-theming': 5.17.1(@types/react@18.2.79)(react@18.3.1) - '@mui/types': 7.4.10(@types/react@18.2.79) - '@mui/utils': 5.17.1(@types/react@18.2.79)(react@18.3.1) + '@mui/private-theming': 5.17.1(@types/react@18.3.28)(react@18.3.1) + '@mui/types': 7.4.10(@types/react@18.3.28) + '@mui/utils': 5.17.1(@types/react@18.3.28)(react@18.3.1) clsx: 2.1.1 csstype: 3.2.3 hoist-non-react-statics: 3.3.2 @@ -10087,7 +10169,7 @@ snapshots: prop-types: 15.8.1 react: 18.3.1 optionalDependencies: - '@types/react': 18.2.79 + '@types/react': 18.3.28 '@mui/system@6.5.0(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1)': dependencies: @@ -10105,15 +10187,35 @@ snapshots: '@emotion/styled': 11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1) '@types/react': 18.2.79 + '@mui/system@6.5.0(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.6 + '@mui/private-theming': 6.4.9(@types/react@18.3.28)(react@18.3.1) + '@mui/styled-engine': 6.5.0(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(react@18.3.1) + '@mui/types': 7.2.24(@types/react@18.3.28) + '@mui/utils': 6.4.9(@types/react@18.3.28)(react@18.3.1) + clsx: 2.1.1 + csstype: 3.2.3 + prop-types: 15.8.1 + react: 18.3.1 + optionalDependencies: + '@emotion/react': 11.13.5(@types/react@18.3.28)(react@18.3.1) + '@emotion/styled': 11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) + '@types/react': 18.3.28 + '@mui/types@7.2.24(@types/react@18.2.79)': optionalDependencies: '@types/react': 18.2.79 - '@mui/types@7.4.10(@types/react@18.2.79)': + '@mui/types@7.2.24(@types/react@18.3.28)': + optionalDependencies: + '@types/react': 18.3.28 + + '@mui/types@7.4.10(@types/react@18.3.28)': dependencies: '@babel/runtime': 7.28.6 optionalDependencies: - '@types/react': 18.2.79 + '@types/react': 18.3.28 '@mui/types@7.4.11(@types/react@18.2.79)': dependencies: @@ -10121,17 +10223,23 @@ snapshots: optionalDependencies: '@types/react': 18.2.79 - '@mui/utils@5.17.1(@types/react@18.2.79)(react@18.3.1)': + '@mui/types@7.4.11(@types/react@18.3.28)': dependencies: '@babel/runtime': 7.28.6 - '@mui/types': 7.2.24(@types/react@18.2.79) + optionalDependencies: + '@types/react': 18.3.28 + + '@mui/utils@5.17.1(@types/react@18.3.28)(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.6 + '@mui/types': 7.2.24(@types/react@18.3.28) '@types/prop-types': 15.7.15 clsx: 2.1.1 prop-types: 15.8.1 react: 18.3.1 react-is: 19.2.4 optionalDependencies: - '@types/react': 18.2.79 + '@types/react': 18.3.28 '@mui/utils@6.4.9(@types/react@18.2.79)(react@18.3.1)': dependencies: @@ -10145,50 +10253,62 @@ snapshots: optionalDependencies: '@types/react': 18.2.79 - '@mui/x-data-grid@7.19.0(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@6.5.0(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/utils@6.4.9(@types/react@18.3.28)(react@18.3.1)': dependencies: '@babel/runtime': 7.28.6 - '@mui/material': 6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/system': 6.5.0(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1) - '@mui/utils': 5.17.1(@types/react@18.2.79)(react@18.3.1) - '@mui/x-internals': 7.18.0(@types/react@18.2.79)(react@18.3.1) + '@mui/types': 7.2.24(@types/react@18.3.28) + '@types/prop-types': 15.7.15 + clsx: 2.1.1 + prop-types: 15.8.1 + react: 18.3.1 + react-is: 19.2.4 + optionalDependencies: + '@types/react': 18.3.28 + + '@mui/x-data-grid@7.19.0(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@6.5.0(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@babel/runtime': 7.28.6 + '@mui/material': 6.1.10(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/system': 6.5.0(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) + '@mui/utils': 5.17.1(@types/react@18.3.28)(react@18.3.1) + '@mui/x-internals': 7.18.0(@types/react@18.3.28)(react@18.3.1) clsx: 2.1.1 prop-types: 15.8.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) reselect: 5.1.1 optionalDependencies: - '@emotion/react': 11.13.5(@types/react@18.2.79)(react@18.3.1) - '@emotion/styled': 11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1) + '@emotion/react': 11.13.5(@types/react@18.3.28)(react@18.3.1) + '@emotion/styled': 11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) transitivePeerDependencies: - '@types/react' - '@mui/x-date-pickers@7.18.0(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@6.5.0(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(date-fns@2.30.0)(luxon@3.7.2)(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/x-date-pickers@7.18.0(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@6.5.0(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(date-fns@2.30.0)(luxon@3.7.2)(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.28.6 - '@mui/material': 6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@mui/system': 6.5.0(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1) - '@mui/utils': 5.17.1(@types/react@18.2.79)(react@18.3.1) - '@mui/x-internals': 7.18.0(@types/react@18.2.79)(react@18.3.1) - '@types/react-transition-group': 4.4.12(@types/react@18.2.79) + '@mui/material': 6.1.10(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@mui/system': 6.5.0(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) + '@mui/utils': 5.17.1(@types/react@18.3.28)(react@18.3.1) + '@mui/x-internals': 7.18.0(@types/react@18.3.28)(react@18.3.1) + '@types/react-transition-group': 4.4.12(@types/react@18.3.28) clsx: 2.1.1 prop-types: 15.8.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) optionalDependencies: - '@emotion/react': 11.13.5(@types/react@18.2.79)(react@18.3.1) - '@emotion/styled': 11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1) + '@emotion/react': 11.13.5(@types/react@18.3.28)(react@18.3.1) + '@emotion/styled': 11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) date-fns: 2.30.0 luxon: 3.7.2 moment: 2.30.1 transitivePeerDependencies: - '@types/react' - '@mui/x-internals@7.18.0(@types/react@18.2.79)(react@18.3.1)': + '@mui/x-internals@7.18.0(@types/react@18.3.28)(react@18.3.1)': dependencies: '@babel/runtime': 7.28.6 - '@mui/utils': 5.17.1(@types/react@18.2.79)(react@18.3.1) + '@mui/utils': 5.17.1(@types/react@18.3.28)(react@18.3.1) react: 18.3.1 transitivePeerDependencies: - '@types/react' @@ -10390,12 +10510,12 @@ snapshots: prop-types: 15.8.1 react: 18.3.1 - '@rjsf/mui@5.20.1(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@mui/icons-material@6.1.10(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@rjsf/core@5.20.1(@rjsf/utils@5.20.1(react@18.3.1))(react@18.3.1))(@rjsf/utils@5.20.1(react@18.3.1))(react@18.3.1)': + '@rjsf/mui@5.20.1(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@mui/icons-material@6.1.10(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@rjsf/core@5.20.1(@rjsf/utils@5.20.1(react@18.3.1))(react@18.3.1))(@rjsf/utils@5.20.1(react@18.3.1))(react@18.3.1)': dependencies: - '@emotion/react': 11.13.5(@types/react@18.2.79)(react@18.3.1) - '@emotion/styled': 11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1) - '@mui/icons-material': 6.1.10(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.2.79)(react@18.3.1) - '@mui/material': 6.1.10(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react@18.3.1))(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@emotion/react': 11.13.5(@types/react@18.3.28)(react@18.3.1) + '@emotion/styled': 11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) + '@mui/icons-material': 6.1.10(@mui/material@6.1.10(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.28)(react@18.3.1) + '@mui/material': 6.1.10(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@emotion/styled@11.13.5(@emotion/react@11.13.5(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react@18.3.1))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@rjsf/core': 5.20.1(@rjsf/utils@5.20.1(react@18.3.1))(react@18.3.1) '@rjsf/utils': 5.20.1(react@18.3.1) react: 18.3.1 @@ -10417,9 +10537,9 @@ snapshots: lodash: 4.18.1 lodash-es: 4.18.1 - '@rollup/plugin-commonjs@28.0.9(rollup@4.59.0)': + '@rollup/plugin-commonjs@28.0.9(rollup@4.60.4)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + '@rollup/pluginutils': 5.3.0(rollup@4.60.4) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.5.0(picomatch@4.0.3) @@ -10427,123 +10547,123 @@ snapshots: magic-string: 0.30.21 picomatch: 4.0.3 optionalDependencies: - rollup: 4.59.0 + rollup: 4.60.4 - '@rollup/plugin-node-resolve@16.0.3(rollup@4.59.0)': + '@rollup/plugin-node-resolve@16.0.3(rollup@4.60.4)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + '@rollup/pluginutils': 5.3.0(rollup@4.60.4) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.11 optionalDependencies: - rollup: 4.59.0 + rollup: 4.60.4 - '@rollup/plugin-replace@6.0.3(rollup@4.59.0)': + '@rollup/plugin-replace@6.0.3(rollup@4.60.4)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + '@rollup/pluginutils': 5.3.0(rollup@4.60.4) magic-string: 0.30.21 optionalDependencies: - rollup: 4.59.0 + rollup: 4.60.4 - '@rollup/plugin-terser@0.4.4(rollup@4.59.0)': + '@rollup/plugin-terser@0.4.4(rollup@4.60.4)': dependencies: serialize-javascript: 6.0.2 smob: 1.5.0 terser: 5.46.0 optionalDependencies: - rollup: 4.59.0 + rollup: 4.60.4 - '@rollup/plugin-typescript@12.1.4(rollup@4.59.0)(tslib@2.8.1)(typescript@5.9.3)': + '@rollup/plugin-typescript@12.3.0(rollup@4.60.4)(tslib@2.8.1)(typescript@5.9.3)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + '@rollup/pluginutils': 5.3.0(rollup@4.60.4) resolve: 1.22.11 typescript: 5.9.3 optionalDependencies: - rollup: 4.59.0 + rollup: 4.60.4 tslib: 2.8.1 - '@rollup/pluginutils@5.3.0(rollup@4.59.0)': + '@rollup/pluginutils@5.3.0(rollup@4.60.4)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.59.0 + rollup: 4.60.4 - '@rollup/rollup-android-arm-eabi@4.59.0': + '@rollup/rollup-android-arm-eabi@4.60.4': optional: true - '@rollup/rollup-android-arm64@4.59.0': + '@rollup/rollup-android-arm64@4.60.4': optional: true - '@rollup/rollup-darwin-arm64@4.59.0': + '@rollup/rollup-darwin-arm64@4.60.4': optional: true - '@rollup/rollup-darwin-x64@4.59.0': + '@rollup/rollup-darwin-x64@4.60.4': optional: true - '@rollup/rollup-freebsd-arm64@4.59.0': + '@rollup/rollup-freebsd-arm64@4.60.4': optional: true - '@rollup/rollup-freebsd-x64@4.59.0': + '@rollup/rollup-freebsd-x64@4.60.4': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.59.0': + '@rollup/rollup-linux-arm-gnueabihf@4.60.4': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.59.0': + '@rollup/rollup-linux-arm-musleabihf@4.60.4': optional: true - '@rollup/rollup-linux-arm64-gnu@4.59.0': + '@rollup/rollup-linux-arm64-gnu@4.60.4': optional: true - '@rollup/rollup-linux-arm64-musl@4.59.0': + '@rollup/rollup-linux-arm64-musl@4.60.4': optional: true - '@rollup/rollup-linux-loong64-gnu@4.59.0': + '@rollup/rollup-linux-loong64-gnu@4.60.4': optional: true - '@rollup/rollup-linux-loong64-musl@4.59.0': + '@rollup/rollup-linux-loong64-musl@4.60.4': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.59.0': + '@rollup/rollup-linux-ppc64-gnu@4.60.4': optional: true - '@rollup/rollup-linux-ppc64-musl@4.59.0': + '@rollup/rollup-linux-ppc64-musl@4.60.4': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.59.0': + '@rollup/rollup-linux-riscv64-gnu@4.60.4': optional: true - '@rollup/rollup-linux-riscv64-musl@4.59.0': + '@rollup/rollup-linux-riscv64-musl@4.60.4': optional: true - '@rollup/rollup-linux-s390x-gnu@4.59.0': + '@rollup/rollup-linux-s390x-gnu@4.60.4': optional: true - '@rollup/rollup-linux-x64-gnu@4.59.0': + '@rollup/rollup-linux-x64-gnu@4.60.4': optional: true - '@rollup/rollup-linux-x64-musl@4.59.0': + '@rollup/rollup-linux-x64-musl@4.60.4': optional: true - '@rollup/rollup-openbsd-x64@4.59.0': + '@rollup/rollup-openbsd-x64@4.60.4': optional: true - '@rollup/rollup-openharmony-arm64@4.59.0': + '@rollup/rollup-openharmony-arm64@4.60.4': optional: true - '@rollup/rollup-win32-arm64-msvc@4.59.0': + '@rollup/rollup-win32-arm64-msvc@4.60.4': optional: true - '@rollup/rollup-win32-ia32-msvc@4.59.0': + '@rollup/rollup-win32-ia32-msvc@4.60.4': optional: true - '@rollup/rollup-win32-x64-gnu@4.59.0': + '@rollup/rollup-win32-x64-gnu@4.60.4': optional: true - '@rollup/rollup-win32-x64-msvc@4.59.0': + '@rollup/rollup-win32-x64-msvc@4.60.4': optional: true '@rsbuild/core@0.4.15': @@ -11287,6 +11407,10 @@ snapshots: dependencies: '@types/react': 18.2.79 + '@types/react-dom@18.3.7(@types/react@18.3.28)': + dependencies: + '@types/react': 18.3.28 + '@types/react-syntax-highlighter@15.5.13': dependencies: '@types/react': 18.2.79 @@ -11295,11 +11419,20 @@ snapshots: dependencies: '@types/react': 18.2.79 + '@types/react-transition-group@4.4.12(@types/react@18.3.28)': + dependencies: + '@types/react': 18.3.28 + '@types/react@18.2.79': dependencies: '@types/prop-types': 15.7.15 csstype: 3.2.3 + '@types/react@18.3.28': + dependencies: + '@types/prop-types': 15.7.15 + csstype: 3.2.3 + '@types/resolve@1.20.2': {} '@types/retry@0.12.5': {} @@ -11674,13 +11807,13 @@ snapshots: '@xtuc/long@4.2.2': {} - '@xyflow/react@12.3.6(@types/react@18.2.79)(immer@9.0.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@xyflow/react@12.3.6(@types/react@18.3.28)(immer@9.0.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@xyflow/system': 0.0.47 classcat: 5.0.5 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - zustand: 4.5.7(@types/react@18.2.79)(immer@9.0.21)(react@18.3.1) + zustand: 4.5.7(@types/react@18.3.28)(immer@9.0.21)(react@18.3.1) transitivePeerDependencies: - '@types/react' - immer @@ -13687,7 +13820,7 @@ snapshots: dependencies: void-elements: 3.1.0 - html-react-parser@5.2.15(@types/react@18.2.79)(react@18.3.1): + html-react-parser@5.2.15(@types/react@18.3.28)(react@18.3.1): dependencies: domhandler: 5.0.3 html-dom-parser: 5.1.4 @@ -13695,7 +13828,7 @@ snapshots: react-property: 2.0.2 style-to-js: 1.1.21 optionalDependencies: - '@types/react': 18.2.79 + '@types/react': 18.3.28 html-rspack-plugin@5.6.2(@rspack/core@0.5.7(@swc/helpers@0.5.3)): dependencies: @@ -16192,9 +16325,9 @@ snapshots: optionalDependencies: react-dom: 18.3.1(react@18.3.1) - react-innertext@1.1.5(@types/react@18.2.79)(react@18.3.1): + react-innertext@1.1.5(@types/react@18.3.28)(react@18.3.1): dependencies: - '@types/react': 18.2.79 + '@types/react': 18.3.28 react: 18.3.1 react-is@16.13.1: {} @@ -16203,7 +16336,7 @@ snapshots: react-is@19.2.4: {} - react-joyride@2.9.3(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-joyride@2.9.3(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@gilbarbara/deep-equal': 0.3.1 deep-diff: 1.0.2 @@ -16212,7 +16345,7 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-floater: 0.7.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-innertext: 1.1.5(@types/react@18.2.79)(react@18.3.1) + react-innertext: 1.1.5(@types/react@18.3.28)(react@18.3.1) react-is: 16.13.1 scroll: 3.0.1 scrollparent: 2.1.0 @@ -16221,14 +16354,14 @@ snapshots: transitivePeerDependencies: - '@types/react' - react-json-view@1.21.3(@types/react@18.2.79)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + react-json-view@1.21.3(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: flux: 4.0.4(react@18.3.1) react: 18.3.1 react-base16-styling: 0.6.0 react-dom: 18.3.1(react@18.3.1) react-lifecycles-compat: 3.0.4 - react-textarea-autosize: 8.5.9(@types/react@18.2.79)(react@18.3.1) + react-textarea-autosize: 8.5.9(@types/react@18.3.28)(react@18.3.1) transitivePeerDependencies: - '@types/react' - encoding @@ -16253,6 +16386,24 @@ snapshots: transitivePeerDependencies: - supports-color + react-markdown@10.1.0(@types/react@18.3.28)(react@18.3.1): + dependencies: + '@types/hast': 3.0.4 + '@types/mdast': 4.0.4 + '@types/react': 18.3.28 + devlop: 1.1.0 + hast-util-to-jsx-runtime: 2.3.6 + html-url-attributes: 3.0.1 + mdast-util-to-hast: 13.2.1 + react: 18.3.1 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + unified: 11.0.5 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + transitivePeerDependencies: + - supports-color + react-property@2.0.2: {} react-refresh@0.14.2: {} @@ -16289,12 +16440,12 @@ snapshots: react: 18.3.1 refractor: 3.6.0 - react-textarea-autosize@8.5.9(@types/react@18.2.79)(react@18.3.1): + react-textarea-autosize@8.5.9(@types/react@18.3.28)(react@18.3.1): dependencies: '@babel/runtime': 7.28.6 react: 18.3.1 - use-composed-ref: 1.4.0(@types/react@18.2.79)(react@18.3.1) - use-latest: 1.3.0(@types/react@18.2.79)(react@18.3.1) + use-composed-ref: 1.4.0(@types/react@18.3.28)(react@18.3.1) + use-latest: 1.3.0(@types/react@18.3.28)(react@18.3.1) transitivePeerDependencies: - '@types/react' @@ -16514,17 +16665,20 @@ snapshots: robust-predicates@3.0.2: {} - rollup-plugin-dts@6.2.3(rollup@4.59.0)(typescript@5.9.3): + rollup-plugin-dts@6.4.1(rollup@4.60.4)(typescript@5.9.3): dependencies: + '@jridgewell/remapping': 2.3.5 + '@jridgewell/sourcemap-codec': 1.5.5 + convert-source-map: 2.0.0 magic-string: 0.30.21 - rollup: 4.59.0 + rollup: 4.60.4 typescript: 5.9.3 optionalDependencies: '@babel/code-frame': 7.29.0 - rollup-plugin-peer-deps-external@2.2.4(rollup@4.59.0): + rollup-plugin-peer-deps-external@2.2.4(rollup@4.60.4): dependencies: - rollup: 4.59.0 + rollup: 4.60.4 rollup-plugin-postcss@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@types/node@20.19.30)(typescript@5.9.3)): dependencies: @@ -16549,35 +16703,35 @@ snapshots: dependencies: estree-walker: 0.6.1 - rollup@4.59.0: + rollup@4.60.4: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.59.0 - '@rollup/rollup-android-arm64': 4.59.0 - '@rollup/rollup-darwin-arm64': 4.59.0 - '@rollup/rollup-darwin-x64': 4.59.0 - '@rollup/rollup-freebsd-arm64': 4.59.0 - '@rollup/rollup-freebsd-x64': 4.59.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.59.0 - '@rollup/rollup-linux-arm-musleabihf': 4.59.0 - '@rollup/rollup-linux-arm64-gnu': 4.59.0 - '@rollup/rollup-linux-arm64-musl': 4.59.0 - '@rollup/rollup-linux-loong64-gnu': 4.59.0 - '@rollup/rollup-linux-loong64-musl': 4.59.0 - '@rollup/rollup-linux-ppc64-gnu': 4.59.0 - '@rollup/rollup-linux-ppc64-musl': 4.59.0 - '@rollup/rollup-linux-riscv64-gnu': 4.59.0 - '@rollup/rollup-linux-riscv64-musl': 4.59.0 - '@rollup/rollup-linux-s390x-gnu': 4.59.0 - '@rollup/rollup-linux-x64-gnu': 4.59.0 - '@rollup/rollup-linux-x64-musl': 4.59.0 - '@rollup/rollup-openbsd-x64': 4.59.0 - '@rollup/rollup-openharmony-arm64': 4.59.0 - '@rollup/rollup-win32-arm64-msvc': 4.59.0 - '@rollup/rollup-win32-ia32-msvc': 4.59.0 - '@rollup/rollup-win32-x64-gnu': 4.59.0 - '@rollup/rollup-win32-x64-msvc': 4.59.0 + '@rollup/rollup-android-arm-eabi': 4.60.4 + '@rollup/rollup-android-arm64': 4.60.4 + '@rollup/rollup-darwin-arm64': 4.60.4 + '@rollup/rollup-darwin-x64': 4.60.4 + '@rollup/rollup-freebsd-arm64': 4.60.4 + '@rollup/rollup-freebsd-x64': 4.60.4 + '@rollup/rollup-linux-arm-gnueabihf': 4.60.4 + '@rollup/rollup-linux-arm-musleabihf': 4.60.4 + '@rollup/rollup-linux-arm64-gnu': 4.60.4 + '@rollup/rollup-linux-arm64-musl': 4.60.4 + '@rollup/rollup-linux-loong64-gnu': 4.60.4 + '@rollup/rollup-linux-loong64-musl': 4.60.4 + '@rollup/rollup-linux-ppc64-gnu': 4.60.4 + '@rollup/rollup-linux-ppc64-musl': 4.60.4 + '@rollup/rollup-linux-riscv64-gnu': 4.60.4 + '@rollup/rollup-linux-riscv64-musl': 4.60.4 + '@rollup/rollup-linux-s390x-gnu': 4.60.4 + '@rollup/rollup-linux-x64-gnu': 4.60.4 + '@rollup/rollup-linux-x64-musl': 4.60.4 + '@rollup/rollup-openbsd-x64': 4.60.4 + '@rollup/rollup-openharmony-arm64': 4.60.4 + '@rollup/rollup-win32-arm64-msvc': 4.60.4 + '@rollup/rollup-win32-ia32-msvc': 4.60.4 + '@rollup/rollup-win32-x64-gnu': 4.60.4 + '@rollup/rollup-win32-x64-msvc': 4.60.4 fsevents: 2.3.3 rsbuild-plugin-dts@0.13.3(@rsbuild/core@1.5.17)(typescript@5.9.3): @@ -17536,24 +17690,24 @@ snapshots: url-join@4.0.1: {} - use-composed-ref@1.4.0(@types/react@18.2.79)(react@18.3.1): + use-composed-ref@1.4.0(@types/react@18.3.28)(react@18.3.1): dependencies: react: 18.3.1 optionalDependencies: - '@types/react': 18.2.79 + '@types/react': 18.3.28 - use-isomorphic-layout-effect@1.2.1(@types/react@18.2.79)(react@18.3.1): + use-isomorphic-layout-effect@1.2.1(@types/react@18.3.28)(react@18.3.1): dependencies: react: 18.3.1 optionalDependencies: - '@types/react': 18.2.79 + '@types/react': 18.3.28 - use-latest@1.3.0(@types/react@18.2.79)(react@18.3.1): + use-latest@1.3.0(@types/react@18.3.28)(react@18.3.1): dependencies: react: 18.3.1 - use-isomorphic-layout-effect: 1.2.1(@types/react@18.2.79)(react@18.3.1) + use-isomorphic-layout-effect: 1.2.1(@types/react@18.3.28)(react@18.3.1) optionalDependencies: - '@types/react': 18.2.79 + '@types/react': 18.3.28 use-sync-external-store@1.6.0(react@18.3.1): dependencies: @@ -17878,4 +18032,12 @@ snapshots: immer: 9.0.21 react: 18.3.1 + zustand@4.5.7(@types/react@18.3.28)(immer@9.0.21)(react@18.3.1): + dependencies: + use-sync-external-store: 1.6.0(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.28 + immer: 9.0.21 + react: 18.3.1 + zwitch@2.0.4: {} From 4332a7bd660fc9fdb5e9e8fceb983745d25e1e71 Mon Sep 17 00:00:00 2001 From: Dylan Savage Date: Thu, 7 May 2026 15:00:22 -0700 Subject: [PATCH 22/29] feat(database): add QuestionType.EXECUTE for direct SQL/Cypher execution Add a new QuestionType.EXECUTE value plus a `client.database.query()` namespace on both the Python and TypeScript SDKs so trusted callers can issue raw SQL or Cypher against database pipelines without paying the LLM-translation tax. db_postgres / db_mysql / db_neo4j skip both the LLM call and the is_sql_safe / _is_cypher_safe gating when the question arrives with type=EXECUTE. End-to-end verified against local Postgres + Neo4j with the matching SDK on both languages (8/8 cases pass; nodes contract suite 733/733). Co-Authored-By: Claude Opus 4.7 (1M context) --- nodes/src/nodes/db_neo4j/IGlobal.py | 25 ++++++ nodes/src/nodes/db_neo4j/IInstance.py | 25 ++++++ .../ai/common/database/db_instance_base.py | 45 ++++++++++ .../client-python/src/rocketride/client.py | 6 ++ .../client-python/src/rocketride/database.py | 82 +++++++++++++++++++ .../src/rocketride/schema/question.py | 2 + .../client-typescript/src/client/client.ts | 22 +++++ .../client-typescript/src/client/database.ts | 73 +++++++++++++++++ .../src/client/schema/Question.ts | 3 +- 9 files changed, 282 insertions(+), 1 deletion(-) create mode 100644 packages/client-python/src/rocketride/database.py create mode 100644 packages/client-typescript/src/client/database.ts diff --git a/nodes/src/nodes/db_neo4j/IGlobal.py b/nodes/src/nodes/db_neo4j/IGlobal.py index db483db72..ffad990ad 100644 --- a/nodes/src/nodes/db_neo4j/IGlobal.py +++ b/nodes/src/nodes/db_neo4j/IGlobal.py @@ -137,6 +137,31 @@ def _run_query(self, cypher: str, params: Optional[Dict] = None, *, timeout: flo result = session.run(neo4j.Query(cypher, timeout=timeout), params) return [_record_to_dict(record) for record in result] + def _run_query_raw(self, cypher: str, *, timeout: float = QUERY_TIMEOUT) -> Dict[str, Any]: + """Execute a raw Cypher statement without the ``_is_cypher_safe`` gate. + + Used by the EXECUTE path where the caller has accepted the risk of running + write/admin Cypher directly. Returns ``{'rows': [...], 'affected_rows': N}`` + to mirror the SQL ``_executeRawQuery`` shape — ``affected_rows`` is derived + from the result summary counters when no rows are returned (e.g. CREATE + without RETURN, DELETE). + + Raises: + neo4j.exceptions.Neo4jError: Caught at the IInstance handler per precedent. + """ + with self.driver.session(database=self.database) as session: + result = session.run(neo4j.Query(cypher, timeout=timeout)) + rows = [_record_to_dict(record) for record in result] + counters = result.consume().counters + affected = ( + counters.nodes_created + + counters.nodes_deleted + + counters.relationships_created + + counters.relationships_deleted + + counters.properties_set + ) + return {'rows': rows, 'affected_rows': 0 if rows else affected} + def _validate_query(self, cypher: str) -> Tuple[bool, str]: """Run EXPLAIN on a Cypher statement to check syntax without executing it. diff --git a/nodes/src/nodes/db_neo4j/IInstance.py b/nodes/src/nodes/db_neo4j/IInstance.py index 14306d944..4fed45120 100644 --- a/nodes/src/nodes/db_neo4j/IInstance.py +++ b/nodes/src/nodes/db_neo4j/IInstance.py @@ -13,6 +13,7 @@ from __future__ import annotations +import json from typing import Any, Dict, Optional from rocketlib import IInstanceBase, tool_function, error, warning @@ -205,6 +206,30 @@ def writeQuestions(self, question: Question) -> None: lanes = self.instance.getListeners() + # EXECUTE: caller passes raw Cypher; bypass LLM translation + safety check. + if question.type == QuestionType.EXECUTE: + try: + execute_result = self.IGlobal._run_query_raw(question_text) + except Exception as e: + error(f'Error executing raw Cypher query: {e}') + return + + rows = execute_result['rows'] + affected = execute_result['affected_rows'] + markdown = self._formatResultAsMarkdown(rows) if rows else None + + if 'text' in lanes: + self.instance.writeText(markdown if markdown else f'{affected} rows affected') + + if 'table' in lanes and rows: + self.instance.writeTable(markdown) + + if 'answers' in lanes: + answer = Answer() + answer.setAnswer(json.dumps(execute_result)) + self.instance.writeAnswers(answer) + return + try: query_json = self._buildCypherQuery(question_text) is_valid = _parse_is_valid(query_json.get('isValid', False)) diff --git a/packages/ai/src/ai/common/database/db_instance_base.py b/packages/ai/src/ai/common/database/db_instance_base.py index 22602d87b..02313fdca 100644 --- a/packages/ai/src/ai/common/database/db_instance_base.py +++ b/packages/ai/src/ai/common/database/db_instance_base.py @@ -428,6 +428,29 @@ def _executeSQLQuery(self, query: str) -> list[dict] | None: error(f'Error executing SQL query: {e}') return None + def _executeRawQuery(self, query: str) -> dict | None: + """Execute a raw SQL statement (read or write) without LLM or safety gating. + + Uses ``engine.begin()`` so writes auto-commit. Returns + ``{'rows': [...], 'affected_rows': N}`` on success or ``None`` on error + (logged via ``error()`` to match the ``_executeSQLQuery`` precedent). + """ + try: + with self.IGlobal.engine.begin() as conn: + result = conn.execute(text(query)) + if result.returns_rows: + rows = result.fetchall() + column_names = result.keys() + return { + 'rows': [dict(zip(column_names, row)) for row in rows], + 'affected_rows': 0, + } + return {'rows': [], 'affected_rows': result.rowcount} + + except SQLAlchemyError as e: + error(f'Error executing raw SQL query: {e}') + return None + def _formatResultAsMarkdown(self, result: Any) -> str: """Convert a query result to a markdown table string.""" headers = None @@ -464,6 +487,28 @@ def writeQuestions(self, question: Question) -> None: lanes = self.instance.getListeners() + # EXECUTE: caller passes raw SQL; bypass LLM translation + safety check. + if question.type == QuestionType.EXECUTE: + execute_result = self._executeRawQuery(question_text) + if execute_result is None: + return + + rows = execute_result['rows'] + affected = execute_result['affected_rows'] + markdown = self._formatResultAsMarkdown(rows) if rows else None + + if 'text' in lanes: + self.instance.writeText(markdown if markdown else f'{affected} rows affected') + + if 'table' in lanes and rows: + self.instance.writeTable(markdown) + + if 'answers' in lanes: + answer = Answer() + answer.setAnswer(json.dumps(execute_result)) + self.instance.writeAnswers(answer) + return + try: # Ask the LLM to translate the natural-language question into SQL. query_json = self._buildSQLQuery(question_text) diff --git a/packages/client-python/src/rocketride/client.py b/packages/client-python/src/rocketride/client.py index 1548bcd53..2a7c207de 100644 --- a/packages/client-python/src/rocketride/client.py +++ b/packages/client-python/src/rocketride/client.py @@ -46,6 +46,7 @@ from .core import DAPClient, RocketRideException, CONST_DEFAULT_WEB_CLOUD from .account import AccountApi from .billing import BillingApi +from .database import DatabaseApi from .mixins.connection import ConnectionMixin from .mixins.execution import ExecutionMixin from .mixins.data import DataMixin @@ -318,6 +319,11 @@ def billing(self) -> BillingApi: """Billing and subscription operations (plans, checkout, credits).""" return BillingApi(self) + @cached_property + def database(self) -> DatabaseApi: + """Direct database query operations (raw SQL/Cypher execution).""" + return DatabaseApi(self) + # ========================================================================= # TASK METHODS # ========================================================================= diff --git a/packages/client-python/src/rocketride/database.py b/packages/client-python/src/rocketride/database.py new file mode 100644 index 000000000..b60719ba1 --- /dev/null +++ b/packages/client-python/src/rocketride/database.py @@ -0,0 +1,82 @@ +# MIT License +# +# Copyright (c) 2026 Aparavi Software AG +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +""" +Database API namespace for the RocketRide Python SDK. + +Exposes ``client.database.query(...)`` for issuing raw SQL or Cypher directly +against a database pipeline, bypassing the LLM translation layer that the +default ``client.chat(...)`` flow uses. + +Usage: + rows = await client.database.query(token=t, sql='SELECT 1 AS one') +""" + +from __future__ import annotations + +from typing import TYPE_CHECKING, Optional + +from .schema.question import Question, QuestionType +from .types.data import PIPELINE_RESULT + +if TYPE_CHECKING: + from .client import RocketRideClient + + +class DatabaseApi: + """ + Direct database-query namespace on RocketRideClient. + + Accessed via ``client.database`` -- not instantiated directly. Statements + submitted through this namespace bypass the LLM translation layer and + safety checks, so the caller is responsible for the SQL/Cypher they pass. + """ + + def __init__(self, client: 'RocketRideClient') -> None: + self._client = client + + async def query( + self, + *, + token: str, + sql: str, + on_sse: Optional[object] = None, + ) -> PIPELINE_RESULT: + """ + Execute a raw SQL or Cypher statement against a database pipeline. + + Sends a Question with ``type=QuestionType.EXECUTE`` so the database + node treats ``sql`` as the literal statement to run -- no LLM call, + no ``is_sql_safe`` / ``_is_cypher_safe`` gating. + + Args: + token: Pipeline token for authentication and resource access. + sql: Raw SQL or Cypher statement to execute. + on_sse: Optional callback for streaming events (matches ``chat``). + + Returns: + PIPELINE_RESULT: The pipeline response. The ``answers`` lane carries + a JSON-encoded payload of shape ``{"rows": [...], "affected_rows": N}``. + """ + question = Question(type=QuestionType.EXECUTE) + question.addQuestion(sql) + return await self._client.chat(token=token, question=question, on_sse=on_sse) diff --git a/packages/client-python/src/rocketride/schema/question.py b/packages/client-python/src/rocketride/schema/question.py index 3c7ab265c..138ed0bcf 100644 --- a/packages/client-python/src/rocketride/schema/question.py +++ b/packages/client-python/src/rocketride/schema/question.py @@ -294,6 +294,7 @@ class QuestionType(str, Enum): KEYWORD: Uses keyword matching and text search GET: Retrieves specific information or data PROMPT: Raw prompt without additional processing + EXECUTE: Direct query execution against database nodes (bypasses LLM + safety checks) """ QUESTION = 'question' # Basic question-answering @@ -301,6 +302,7 @@ class QuestionType(str, Enum): KEYWORD = 'keyword' # Keyword-based search GET = 'get' # Information retrieval PROMPT = 'prompt' # Raw prompt processing + EXECUTE = 'execute' # Direct DB query execution (no LLM, no safety check) class Question(BaseModel): diff --git a/packages/client-typescript/src/client/client.ts b/packages/client-typescript/src/client/client.ts index 92fee5344..0ecba3b7f 100644 --- a/packages/client-typescript/src/client/client.ts +++ b/packages/client-typescript/src/client/client.ts @@ -30,6 +30,7 @@ import { CONST_DEFAULT_WEB_CLOUD, CONST_DEFAULT_WEB_PROTOCOL, CONST_DEFAULT_WEB_ import { Question } from './schema/Question.js'; import { AccountApi } from './account.js'; import { BillingApi } from './billing.js'; +import { DatabaseApi } from './database.js'; import { AuthenticationException, ConnectionException, PipeException } from './exceptions/index.js'; // Global counter for generating unique client IDs @@ -318,6 +319,9 @@ export class RocketRideClient extends DAPClient { /** Lazily-created billing API namespace. */ private _billing?: BillingApi; + /** Lazily-created database API namespace. */ + private _database?: DatabaseApi; + /** Optional trace callback for observing all call() traffic. */ private _onTrace?: (traceType: TraceType, message: DAPMessage) => void; @@ -2482,6 +2486,24 @@ export class RocketRideClient extends DAPClient { return this._billing; } + /** + * Lazily-initialised database API namespace. + * + * Provides direct SQL/Cypher execution against database pipelines, bypassing + * the LLM translation layer that {@link RocketRideClient.chat} uses. + * + * @example + * ```typescript + * const result = await client.database.query({ token, sql: 'SELECT 1' }); + * ``` + */ + get database(): DatabaseApi { + if (!this._database) { + this._database = new DatabaseApi(this); + } + return this._database; + } + // ============================================================================ // CALL — PUBLIC DAP COMMAND INTERFACE // ============================================================================ diff --git a/packages/client-typescript/src/client/database.ts b/packages/client-typescript/src/client/database.ts new file mode 100644 index 000000000..939528f51 --- /dev/null +++ b/packages/client-typescript/src/client/database.ts @@ -0,0 +1,73 @@ +/** + * MIT License + * + * Copyright (c) 2026 Aparavi Software AG + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +/** + * Database API namespace for the RocketRide TypeScript SDK. + * + * Exposes `client.database.query(...)` for issuing raw SQL or Cypher directly + * against a database pipeline, bypassing the LLM translation layer that the + * default `client.chat(...)` flow uses. + */ + +import type { RocketRideClient } from './client.js'; +import type { PIPELINE_RESULT } from './types/index.js'; +import { Question, QuestionType } from './schema/Question.js'; + +// ============================================================================= +// DATABASE API CLASS +// ============================================================================= + +/** + * Direct database-query namespace on RocketRideClient. + * + * Accessed via `client.database` — not instantiated directly. Statements + * submitted through this namespace bypass the LLM translation layer and + * safety checks, so the caller is responsible for the SQL/Cypher they pass. + */ +export class DatabaseApi { + constructor(private readonly client: RocketRideClient) {} + + /** + * Execute a raw SQL or Cypher statement against a database pipeline. + * + * Sends a Question with `type=QuestionType.EXECUTE` so the database node + * treats `sql` as the literal statement to run — no LLM call, no + * `is_sql_safe` / `_is_cypher_safe` gating. + * + * @param options.token - Pipeline token for authentication and resource access. + * @param options.sql - Raw SQL or Cypher statement to execute. + * @param options.onSSE - Optional streaming callback (matches `chat`). + * @returns The pipeline response. The `answers` lane carries a JSON-encoded + * payload of shape `{"rows": [...], "affected_rows": N}`. + */ + async query(options: { + token: string; + sql: string; + onSSE?: (type: string, data: Record) => Promise; + }): Promise { + const question = new Question({ type: QuestionType.EXECUTE }); + question.addQuestion(options.sql); + return this.client.chat({ token: options.token, question, onSSE: options.onSSE }); + } +} diff --git a/packages/client-typescript/src/client/schema/Question.ts b/packages/client-typescript/src/client/schema/Question.ts index 096e956f7..6f572cddf 100644 --- a/packages/client-typescript/src/client/schema/Question.ts +++ b/packages/client-typescript/src/client/schema/Question.ts @@ -33,7 +33,8 @@ export enum QuestionType { SEMANTIC = 'semantic', KEYWORD = 'keyword', GET = 'get', - PROMPT = 'prompt' + PROMPT = 'prompt', + EXECUTE = 'execute' } /** From 64feefde6922936b44b0ed1a0d01b54a46c8157c Mon Sep 17 00:00:00 2001 From: Dylan Savage Date: Mon, 11 May 2026 11:44:33 -0700 Subject: [PATCH 23/29] fix(database): gate EXECUTE path, bound results, validate SDK inputs Addresses CodeRabbit review on PR #782: - Gate QuestionType.EXECUTE behind opt-in allow_execute config (default off) on both SQL (DatabaseGlobalBase) and Neo4j (db_neo4j.IGlobal) backends so arbitrary write/admin SQL/Cypher cannot run without explicit operator consent. - Bound _executeRawQuery SELECT results with fetchmany(max_execute_rows+1) to avoid memory blowups on large reads; normalize negative rowcount to 0. - Wrap EXECUTE output blocks (SQL + Neo4j) in try/except so formatting and lane writes can't escape writeQuestions; serialize with default=str and sanitize SQL rows before json.dumps to handle non-serializable DB values. - Validate non-empty token/sql in client.database.query() for both Python and TypeScript SDKs; raise ValueError / throw Error instead of dispatching. Co-Authored-By: Claude Opus 4.7 (1M context) --- nodes/src/nodes/db_neo4j/IGlobal.py | 6 +++ nodes/src/nodes/db_neo4j/IInstance.py | 31 ++++++------ .../src/ai/common/database/db_global_base.py | 11 +++++ .../ai/common/database/db_instance_base.py | 47 +++++++++++++------ .../client-python/src/rocketride/database.py | 8 ++++ .../client-typescript/src/client/database.ts | 7 +++ 6 files changed, 80 insertions(+), 30 deletions(-) diff --git a/nodes/src/nodes/db_neo4j/IGlobal.py b/nodes/src/nodes/db_neo4j/IGlobal.py index ffad990ad..e0cb93d7b 100644 --- a/nodes/src/nodes/db_neo4j/IGlobal.py +++ b/nodes/src/nodes/db_neo4j/IGlobal.py @@ -60,6 +60,7 @@ class IGlobal(IGlobalBase): # label: str = 'Row' db_description: str = '' max_validation_attempts: int = 5 + allow_execute: bool = False # ------------------------------------------------------------------ # Lifecycle @@ -80,6 +81,11 @@ def beginGlobal(self) -> None: except (ValueError, TypeError): self.max_validation_attempts = 5 + # EXECUTE path is opt-in: a caller passing QuestionType.EXECUTE bypasses + # the LLM translation + _is_cypher_safe gate, so the node owner must + # explicitly enable the capability. + self.allow_execute = bool(config.get('allow_execute', False)) + auth = self._build_auth(config) try: diff --git a/nodes/src/nodes/db_neo4j/IInstance.py b/nodes/src/nodes/db_neo4j/IInstance.py index 4fed45120..ab9775f5f 100644 --- a/nodes/src/nodes/db_neo4j/IInstance.py +++ b/nodes/src/nodes/db_neo4j/IInstance.py @@ -208,26 +208,27 @@ def writeQuestions(self, question: Question) -> None: # EXECUTE: caller passes raw Cypher; bypass LLM translation + safety check. if question.type == QuestionType.EXECUTE: + if not self.IGlobal.allow_execute: + warning('QuestionType.EXECUTE is disabled for this node (set allow_execute=true to enable).') + return try: execute_result = self.IGlobal._run_query_raw(question_text) - except Exception as e: - error(f'Error executing raw Cypher query: {e}') - return + rows = execute_result['rows'] + affected = execute_result['affected_rows'] + markdown = self._formatResultAsMarkdown(rows) if rows else None - rows = execute_result['rows'] - affected = execute_result['affected_rows'] - markdown = self._formatResultAsMarkdown(rows) if rows else None - - if 'text' in lanes: - self.instance.writeText(markdown if markdown else f'{affected} rows affected') + if 'text' in lanes: + self.instance.writeText(markdown if markdown else f'{affected} rows affected') - if 'table' in lanes and rows: - self.instance.writeTable(markdown) + if 'table' in lanes and rows: + self.instance.writeTable(markdown) - if 'answers' in lanes: - answer = Answer() - answer.setAnswer(json.dumps(execute_result)) - self.instance.writeAnswers(answer) + if 'answers' in lanes: + answer = Answer() + answer.setAnswer(json.dumps(execute_result, default=str)) + self.instance.writeAnswers(answer) + except Exception as e: + error(f'Error handling execute question: {e}') return try: diff --git a/packages/ai/src/ai/common/database/db_global_base.py b/packages/ai/src/ai/common/database/db_global_base.py index 640afb4d2..ba12780a9 100644 --- a/packages/ai/src/ai/common/database/db_global_base.py +++ b/packages/ai/src/ai/common/database/db_global_base.py @@ -71,6 +71,8 @@ class DatabaseGlobalBase(IGlobalBase, ABC): schema: Dict[str, Tuple[str, str]] = {} db_schema: Dict[str, Dict] = {} max_validation_attempts: int = 5 + allow_execute: bool = False + max_execute_rows: int = 25000 # ------------------------------------------------------------------ # Abstract interface — derived classes MUST implement these two methods @@ -443,6 +445,15 @@ def beginGlobal(self) -> None: self.max_validation_attempts = max(1, self._max_validation_attempts(raw)) self.db_description = (self._db_description(raw) or '').strip() + # EXECUTE path is opt-in: a caller passing QuestionType.EXECUTE bypasses + # the LLM translation + is_sql_safe gate, so the node owner must + # explicitly enable the capability. + self.allow_execute = bool(raw.get('allow_execute', False)) + try: + self.max_execute_rows = max(1, int(raw.get('max_execute_rows', 25000))) + except (TypeError, ValueError): + self.max_execute_rows = 25000 + self.database = params['database'] self.table = params['table'] diff --git a/packages/ai/src/ai/common/database/db_instance_base.py b/packages/ai/src/ai/common/database/db_instance_base.py index 02313fdca..718536889 100644 --- a/packages/ai/src/ai/common/database/db_instance_base.py +++ b/packages/ai/src/ai/common/database/db_instance_base.py @@ -434,18 +434,28 @@ def _executeRawQuery(self, query: str) -> dict | None: Uses ``engine.begin()`` so writes auto-commit. Returns ``{'rows': [...], 'affected_rows': N}`` on success or ``None`` on error (logged via ``error()`` to match the ``_executeSQLQuery`` precedent). + + SELECT results are bounded by ``IGlobal.max_execute_rows`` to keep a + large query from exhausting worker memory. ``rowcount`` is normalized + to a non-negative int — some dialects return -1 when unknown. """ try: with self.IGlobal.engine.begin() as conn: result = conn.execute(text(query)) if result.returns_rows: - rows = result.fetchall() + max_rows = self.IGlobal.max_execute_rows + rows = result.fetchmany(max_rows + 1) + if len(rows) > max_rows: + error(f'EXECUTE query exceeded max_execute_rows={max_rows}') + return None column_names = result.keys() return { 'rows': [dict(zip(column_names, row)) for row in rows], 'affected_rows': 0, } - return {'rows': [], 'affected_rows': result.rowcount} + rowcount = result.rowcount + affected = rowcount if isinstance(rowcount, int) and rowcount >= 0 else 0 + return {'rows': [], 'affected_rows': affected} except SQLAlchemyError as e: error(f'Error executing raw SQL query: {e}') @@ -489,24 +499,31 @@ def writeQuestions(self, question: Question) -> None: # EXECUTE: caller passes raw SQL; bypass LLM translation + safety check. if question.type == QuestionType.EXECUTE: - execute_result = self._executeRawQuery(question_text) - if execute_result is None: + if not self.IGlobal.allow_execute: + warning('QuestionType.EXECUTE is disabled for this node (set allow_execute=true to enable).') return + try: + execute_result = self._executeRawQuery(question_text) + if execute_result is None: + return - rows = execute_result['rows'] - affected = execute_result['affected_rows'] - markdown = self._formatResultAsMarkdown(rows) if rows else None + rows = [self._sanitize_row(row) for row in execute_result['rows']] + affected = execute_result['affected_rows'] + payload = {'rows': rows, 'affected_rows': affected} + markdown = self._formatResultAsMarkdown(rows) if rows else None - if 'text' in lanes: - self.instance.writeText(markdown if markdown else f'{affected} rows affected') + if 'text' in lanes: + self.instance.writeText(markdown if markdown else f'{affected} rows affected') - if 'table' in lanes and rows: - self.instance.writeTable(markdown) + if 'table' in lanes and rows: + self.instance.writeTable(markdown) - if 'answers' in lanes: - answer = Answer() - answer.setAnswer(json.dumps(execute_result)) - self.instance.writeAnswers(answer) + if 'answers' in lanes: + answer = Answer() + answer.setAnswer(json.dumps(payload, default=str)) + self.instance.writeAnswers(answer) + except Exception as e: + error(f'Error handling execute question: {e}') return try: diff --git a/packages/client-python/src/rocketride/database.py b/packages/client-python/src/rocketride/database.py index b60719ba1..fa4001f2d 100644 --- a/packages/client-python/src/rocketride/database.py +++ b/packages/client-python/src/rocketride/database.py @@ -76,7 +76,15 @@ async def query( Returns: PIPELINE_RESULT: The pipeline response. The ``answers`` lane carries a JSON-encoded payload of shape ``{"rows": [...], "affected_rows": N}``. + + Raises: + ValueError: If ``token`` or ``sql`` is empty or whitespace-only. """ + if not isinstance(token, str) or not token.strip(): + raise ValueError('token must be a non-empty string') + if not isinstance(sql, str) or not sql.strip(): + raise ValueError('sql must be a non-empty string') + question = Question(type=QuestionType.EXECUTE) question.addQuestion(sql) return await self._client.chat(token=token, question=question, on_sse=on_sse) diff --git a/packages/client-typescript/src/client/database.ts b/packages/client-typescript/src/client/database.ts index 939528f51..3120d9a1f 100644 --- a/packages/client-typescript/src/client/database.ts +++ b/packages/client-typescript/src/client/database.ts @@ -66,6 +66,13 @@ export class DatabaseApi { sql: string; onSSE?: (type: string, data: Record) => Promise; }): Promise { + if (typeof options.token !== 'string' || options.token.trim() === '') { + throw new Error('token must be a non-empty string'); + } + if (typeof options.sql !== 'string' || options.sql.trim() === '') { + throw new Error('sql must be a non-empty string'); + } + const question = new Question({ type: QuestionType.EXECUTE }); question.addQuestion(options.sql); return this.client.chat({ token: options.token, question, onSSE: options.onSSE }); From 2531f4720feff87671f6c9d80a6fde75db894793 Mon Sep 17 00:00:00 2001 From: Dylan Savage Date: Tue, 12 May 2026 10:34:29 -0700 Subject: [PATCH 24/29] fix(database): bound Neo4j EXECUTE rows, parse allow_execute strictly Addresses second CodeRabbit review on PR #782: - _run_query_raw now caps result collection at max_execute_rows (default 25000), mirroring the SQL path, so a large EXECUTE MATCH...RETURN cannot exhaust the worker. Overflow raises ValueError, caught at the IInstance handler. - allow_execute config now parses strings explicitly: only '1', 'true', 'yes', 'on' (case-insensitive) enable EXECUTE. Plain bool() would have let 'false' or '0' weaken the opt-in gate. Co-Authored-By: Claude Opus 4.7 (1M context) --- nodes/src/nodes/db_neo4j/IGlobal.py | 20 ++++++++++++++++--- .../src/ai/common/database/db_global_base.py | 9 +++++++-- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/nodes/src/nodes/db_neo4j/IGlobal.py b/nodes/src/nodes/db_neo4j/IGlobal.py index e0cb93d7b..d093d2595 100644 --- a/nodes/src/nodes/db_neo4j/IGlobal.py +++ b/nodes/src/nodes/db_neo4j/IGlobal.py @@ -61,6 +61,7 @@ class IGlobal(IGlobalBase): db_description: str = '' max_validation_attempts: int = 5 allow_execute: bool = False + max_execute_rows: int = 25000 # ------------------------------------------------------------------ # Lifecycle @@ -83,8 +84,18 @@ def beginGlobal(self) -> None: # EXECUTE path is opt-in: a caller passing QuestionType.EXECUTE bypasses # the LLM translation + _is_cypher_safe gate, so the node owner must - # explicitly enable the capability. - self.allow_execute = bool(config.get('allow_execute', False)) + # explicitly enable the capability. Strings like 'false' / '0' must + # not be truthy here, so don't use bool() directly. + allow_execute = config.get('allow_execute', False) + if isinstance(allow_execute, str): + self.allow_execute = allow_execute.strip().lower() in {'1', 'true', 'yes', 'on'} + else: + self.allow_execute = bool(allow_execute) + + try: + self.max_execute_rows = max(1, int(config.get('max_execute_rows', 25000))) + except (TypeError, ValueError): + self.max_execute_rows = 25000 auth = self._build_auth(config) @@ -155,9 +166,12 @@ def _run_query_raw(self, cypher: str, *, timeout: float = QUERY_TIMEOUT) -> Dict Raises: neo4j.exceptions.Neo4jError: Caught at the IInstance handler per precedent. """ + max_rows = self.max_execute_rows with self.driver.session(database=self.database) as session: result = session.run(neo4j.Query(cypher, timeout=timeout)) - rows = [_record_to_dict(record) for record in result] + rows = [_record_to_dict(record) for _, record in zip(range(max_rows + 1), result)] + if len(rows) > max_rows: + raise ValueError(f'EXECUTE query exceeded max_execute_rows={max_rows}') counters = result.consume().counters affected = ( counters.nodes_created diff --git a/packages/ai/src/ai/common/database/db_global_base.py b/packages/ai/src/ai/common/database/db_global_base.py index ba12780a9..c816b448d 100644 --- a/packages/ai/src/ai/common/database/db_global_base.py +++ b/packages/ai/src/ai/common/database/db_global_base.py @@ -447,8 +447,13 @@ def beginGlobal(self) -> None: # EXECUTE path is opt-in: a caller passing QuestionType.EXECUTE bypasses # the LLM translation + is_sql_safe gate, so the node owner must - # explicitly enable the capability. - self.allow_execute = bool(raw.get('allow_execute', False)) + # explicitly enable the capability. Strings like 'false' / '0' must + # not be truthy here, so don't use bool() directly. + allow_execute = raw.get('allow_execute', False) + if isinstance(allow_execute, str): + self.allow_execute = allow_execute.strip().lower() in {'1', 'true', 'yes', 'on'} + else: + self.allow_execute = bool(allow_execute) try: self.max_execute_rows = max(1, int(raw.get('max_execute_rows', 25000))) except (TypeError, ValueError): From 16319c451566de677b27a3f4b6ca19ebf1ce25cd Mon Sep 17 00:00:00 2001 From: Dylan Savage Date: Tue, 12 May 2026 15:31:32 -0700 Subject: [PATCH 25/29] refactor(database): hoist max_execute_rows default to a single constant per module Replace the three repeated 25000 literals in each of db_global_base.py and db_neo4j/IGlobal.py with a module-level DEFAULT_MAX_EXECUTE_ROWS constant. Co-Authored-By: Claude Opus 4.7 (1M context) --- nodes/src/nodes/db_neo4j/IGlobal.py | 8 +++++--- packages/ai/src/ai/common/database/db_global_base.py | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/nodes/src/nodes/db_neo4j/IGlobal.py b/nodes/src/nodes/db_neo4j/IGlobal.py index d093d2595..ad2c8512a 100644 --- a/nodes/src/nodes/db_neo4j/IGlobal.py +++ b/nodes/src/nodes/db_neo4j/IGlobal.py @@ -41,6 +41,8 @@ from .utils import _is_cypher_safe +DEFAULT_MAX_EXECUTE_ROWS = 25000 + class IGlobal(IGlobalBase): """Neo4J-specific global connection state.""" @@ -61,7 +63,7 @@ class IGlobal(IGlobalBase): db_description: str = '' max_validation_attempts: int = 5 allow_execute: bool = False - max_execute_rows: int = 25000 + max_execute_rows: int = DEFAULT_MAX_EXECUTE_ROWS # ------------------------------------------------------------------ # Lifecycle @@ -93,9 +95,9 @@ def beginGlobal(self) -> None: self.allow_execute = bool(allow_execute) try: - self.max_execute_rows = max(1, int(config.get('max_execute_rows', 25000))) + self.max_execute_rows = max(1, int(config.get('max_execute_rows', DEFAULT_MAX_EXECUTE_ROWS))) except (TypeError, ValueError): - self.max_execute_rows = 25000 + self.max_execute_rows = DEFAULT_MAX_EXECUTE_ROWS auth = self._build_auth(config) diff --git a/packages/ai/src/ai/common/database/db_global_base.py b/packages/ai/src/ai/common/database/db_global_base.py index c816b448d..c6a3c7edc 100644 --- a/packages/ai/src/ai/common/database/db_global_base.py +++ b/packages/ai/src/ai/common/database/db_global_base.py @@ -60,6 +60,8 @@ from rocketlib import IGlobalBase, error, warning from ai.common.config import Config +DEFAULT_MAX_EXECUTE_ROWS = 25000 + class DatabaseGlobalBase(IGlobalBase, ABC): """Abstract base for the IGlobal layer of any relational database node.""" @@ -72,7 +74,7 @@ class DatabaseGlobalBase(IGlobalBase, ABC): db_schema: Dict[str, Dict] = {} max_validation_attempts: int = 5 allow_execute: bool = False - max_execute_rows: int = 25000 + max_execute_rows: int = DEFAULT_MAX_EXECUTE_ROWS # ------------------------------------------------------------------ # Abstract interface — derived classes MUST implement these two methods @@ -455,9 +457,9 @@ def beginGlobal(self) -> None: else: self.allow_execute = bool(allow_execute) try: - self.max_execute_rows = max(1, int(raw.get('max_execute_rows', 25000))) + self.max_execute_rows = max(1, int(raw.get('max_execute_rows', DEFAULT_MAX_EXECUTE_ROWS))) except (TypeError, ValueError): - self.max_execute_rows = 25000 + self.max_execute_rows = DEFAULT_MAX_EXECUTE_ROWS self.database = params['database'] self.table = params['table'] From 794c9eebb0b1e2f69287e90f733c4ac5f2a2e00b Mon Sep 17 00:00:00 2001 From: Dylan Savage Date: Wed, 13 May 2026 13:16:01 -0700 Subject: [PATCH 26/29] refactor(database): reference DEFAULT_MAX_EXECUTE_ROWS in get_data limits Replace the remaining 25000 literals in the get_data tool description and _clamp_limit / inline limit clamp with the existing DEFAULT_MAX_EXECUTE_ROWS constant. Single source of truth across the EXECUTE path and the non-EXECUTE get_data path within each module. Co-Authored-By: Claude Opus 4.7 (1M context) --- nodes/src/nodes/db_neo4j/IInstance.py | 8 ++++---- packages/ai/src/ai/common/database/db_instance_base.py | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/nodes/src/nodes/db_neo4j/IInstance.py b/nodes/src/nodes/db_neo4j/IInstance.py index ab9775f5f..1bc9a57d6 100644 --- a/nodes/src/nodes/db_neo4j/IInstance.py +++ b/nodes/src/nodes/db_neo4j/IInstance.py @@ -21,7 +21,7 @@ from ai.common.table import Table from rocketlib.types import IInvokeLLM -from .IGlobal import IGlobal +from .IGlobal import DEFAULT_MAX_EXECUTE_ROWS, IGlobal from .utils import _is_cypher_safe, _parse_is_valid @@ -45,7 +45,7 @@ class IInstance(IInstanceBase): }, 'limit': { 'type': 'integer', - 'description': 'Maximum number of rows to return (default 250, max 25000).', + 'description': f'Maximum number of rows to return (default 250, max {DEFAULT_MAX_EXECUTE_ROWS}).', }, }, }, @@ -414,8 +414,8 @@ def _formatResultAsMarkdown(self, result: Any) -> str: def _clamp_limit(raw_limit) -> int: - """Clamp a user-supplied limit to [1, 25000].""" + """Clamp a user-supplied limit to [1, DEFAULT_MAX_EXECUTE_ROWS].""" try: - return max(1, min(int(raw_limit), 25000)) if raw_limit is not None else 250 + return max(1, min(int(raw_limit), DEFAULT_MAX_EXECUTE_ROWS)) if raw_limit is not None else 250 except (ValueError, TypeError): return 250 diff --git a/packages/ai/src/ai/common/database/db_instance_base.py b/packages/ai/src/ai/common/database/db_instance_base.py index 718536889..d0e4a79be 100644 --- a/packages/ai/src/ai/common/database/db_instance_base.py +++ b/packages/ai/src/ai/common/database/db_instance_base.py @@ -49,7 +49,7 @@ from ai.common.table import Table from rocketlib.types import IInvokeLLM -from .db_global_base import DatabaseGlobalBase +from .db_global_base import DEFAULT_MAX_EXECUTE_ROWS, DatabaseGlobalBase from .sql_safety import is_sql_safe @@ -85,7 +85,7 @@ def _db_display_name(self) -> str: }, 'limit': { 'type': 'integer', - 'description': 'Maximum number of rows to return (default 250, max 25000). Increase when you need the full result set.', + 'description': f'Maximum number of rows to return (default 250, max {DEFAULT_MAX_EXECUTE_ROWS}). Increase when you need the full result set.', }, }, }, @@ -127,7 +127,7 @@ def get_data(self, args): question = question.strip() raw_limit = args.get('limit') try: - limit = max(1, min(int(raw_limit), 25000)) if raw_limit is not None else 250 + limit = max(1, min(int(raw_limit), DEFAULT_MAX_EXECUTE_ROWS)) if raw_limit is not None else 250 except (TypeError, ValueError): limit = 250 From f66d1d4b4af74fc64f76e49e19c13255311c88c8 Mon Sep 17 00:00:00 2001 From: Dylan Savage Date: Wed, 13 May 2026 16:16:25 -0700 Subject: [PATCH 27/29] feat(database): add QuestionType.DIALECT for engine discovery Lets SDK callers ask a database pipeline which engine it's connected to so applications can branch on dialect-specific behavior (SQL syntax, type coercion) or assert they aren't pointed at the wrong kind of database. - New QuestionType.DIALECT in both Python and TypeScript client schemas. - DatabaseInstanceBase: new abstract _db_dialect() method + DIALECT branch in writeQuestions that emits {'dialect': '...'} on the answers lane. No gate (the value is metadata, not data). - db_postgres / db_mysql implement _db_dialect() -> 'postgres' / 'mysql'. - db_neo4j handles DIALECT in writeQuestions and emits 'neo4j'. - Python SDK: client.database.dialect(token=...) returns DatabaseDialect enum. - TypeScript SDK: client.database.dialect({token}) returns DatabaseDialect enum; re-export from client/index.ts so callers can import from the package root. - services.json: each db node now exposes a UI-toggleable allow_execute boolean (default false) so operators can opt-in to the EXECUTE path from the Dropper UI instead of hand-editing pipe JSON. Co-Authored-By: Claude Opus 4.7 (1M context) --- nodes/src/nodes/db_mysql/IInstance.py | 3 + nodes/src/nodes/db_mysql/services.json | 8 ++- nodes/src/nodes/db_neo4j/IInstance.py | 10 ++++ nodes/src/nodes/db_neo4j/services.json | 9 ++- nodes/src/nodes/db_postgres/IInstance.py | 3 + nodes/src/nodes/db_postgres/services.json | 8 ++- .../ai/common/database/db_instance_base.py | 19 ++++++ .../client-python/src/rocketride/database.py | 52 +++++++++++++++++ .../src/rocketride/schema/question.py | 2 + .../client-typescript/src/client/database.ts | 58 +++++++++++++++++++ .../client-typescript/src/client/index.ts | 3 + .../src/client/schema/Question.ts | 3 +- 12 files changed, 174 insertions(+), 4 deletions(-) diff --git a/nodes/src/nodes/db_mysql/IInstance.py b/nodes/src/nodes/db_mysql/IInstance.py index 88a511fcc..5c6add5ad 100644 --- a/nodes/src/nodes/db_mysql/IInstance.py +++ b/nodes/src/nodes/db_mysql/IInstance.py @@ -17,3 +17,6 @@ class IInstance(DatabaseInstanceBase): def _db_display_name(self) -> str: return 'MySQL' + + def _db_dialect(self) -> str: + return 'mysql' diff --git a/nodes/src/nodes/db_mysql/services.json b/nodes/src/nodes/db_mysql/services.json index b11eb685e..623eb7d6b 100644 --- a/nodes/src/nodes/db_mysql/services.json +++ b/nodes/src/nodes/db_mysql/services.json @@ -170,9 +170,15 @@ "maximum": 20, "description": "Maximum number of times to re-ask the LLM if EXPLAIN rejects the generated SQL" }, + "mysql.allow_execute": { + "type": "boolean", + "title": "Allow direct query execution", + "default": false, + "description": "Permit QuestionType.EXECUTE callers to run raw SQL without LLM translation or safety checks. Leave OFF unless a trusted application explicitly needs to issue SQL directly." + }, "mysql.default": { "object": "default", - "properties": ["mysql.db_description", "mysql.host", "mysql.user", "mysql.password", "mysql.database", "mysql.table", "mysql.max_attempts"] + "properties": ["mysql.db_description", "mysql.host", "mysql.user", "mysql.password", "mysql.database", "mysql.table", "mysql.max_attempts", "mysql.allow_execute"] }, "mysql.profile": { "hidden": true, diff --git a/nodes/src/nodes/db_neo4j/IInstance.py b/nodes/src/nodes/db_neo4j/IInstance.py index 1bc9a57d6..315ca9f05 100644 --- a/nodes/src/nodes/db_neo4j/IInstance.py +++ b/nodes/src/nodes/db_neo4j/IInstance.py @@ -206,6 +206,16 @@ def writeQuestions(self, question: Question) -> None: lanes = self.instance.getListeners() + # DIALECT: dialect-discovery request — emit {'dialect': 'neo4j'} on the + # answers lane so SDK callers can tell they're talking to a graph DB + # rather than a relational one. + if question.type == QuestionType.DIALECT: + if 'answers' in lanes: + answer = Answer() + answer.setAnswer(json.dumps({'dialect': 'neo4j'})) + self.instance.writeAnswers(answer) + return + # EXECUTE: caller passes raw Cypher; bypass LLM translation + safety check. if question.type == QuestionType.EXECUTE: if not self.IGlobal.allow_execute: diff --git a/nodes/src/nodes/db_neo4j/services.json b/nodes/src/nodes/db_neo4j/services.json index f0940eac5..38197dc49 100644 --- a/nodes/src/nodes/db_neo4j/services.json +++ b/nodes/src/nodes/db_neo4j/services.json @@ -195,6 +195,12 @@ "maximum": 20, "description": "Maximum number of times to re-ask the LLM if EXPLAIN rejects the generated Cypher query" }, + "neo4jdb.allow_execute": { + "type": "boolean", + "title": "Allow direct query execution", + "default": false, + "description": "Permit QuestionType.EXECUTE callers to run raw Cypher without LLM translation or safety checks. Leave OFF unless a trusted application explicitly needs to issue Cypher directly." + }, "neo4jdb.default": { "object": "default", "properties": [ @@ -203,7 +209,8 @@ "neo4jdb.auth_method", "neo4jdb.database", // "neo4jdb.label", - "neo4jdb.max_attempts" + "neo4jdb.max_attempts", + "neo4jdb.allow_execute" ] }, "neo4jdb.profile": { diff --git a/nodes/src/nodes/db_postgres/IInstance.py b/nodes/src/nodes/db_postgres/IInstance.py index a053c3a3f..c1b4f1b9f 100644 --- a/nodes/src/nodes/db_postgres/IInstance.py +++ b/nodes/src/nodes/db_postgres/IInstance.py @@ -17,3 +17,6 @@ class IInstance(DatabaseInstanceBase): def _db_display_name(self) -> str: return 'PostgreSQL' + + def _db_dialect(self) -> str: + return 'postgres' diff --git a/nodes/src/nodes/db_postgres/services.json b/nodes/src/nodes/db_postgres/services.json index 527b08a6c..b2ce689cf 100644 --- a/nodes/src/nodes/db_postgres/services.json +++ b/nodes/src/nodes/db_postgres/services.json @@ -169,9 +169,15 @@ "maximum": 20, "description": "Maximum number of times to re-ask the LLM if EXPLAIN rejects the generated SQL" }, + "postgresdb.allow_execute": { + "type": "boolean", + "title": "Allow direct query execution", + "default": false, + "description": "Permit QuestionType.EXECUTE callers to run raw SQL without LLM translation or safety checks. Leave OFF unless a trusted application explicitly needs to issue SQL directly." + }, "postgresdb.default": { "object": "default", - "properties": ["postgresdb.db_description", "postgresdb.host", "postgresdb.user", "postgresdb.password", "postgresdb.database", "postgresdb.table", "postgresdb.max_attempts"] + "properties": ["postgresdb.db_description", "postgresdb.host", "postgresdb.user", "postgresdb.password", "postgresdb.database", "postgresdb.table", "postgresdb.max_attempts", "postgresdb.allow_execute"] }, "postgresdb.profile": { "hidden": true, diff --git a/packages/ai/src/ai/common/database/db_instance_base.py b/packages/ai/src/ai/common/database/db_instance_base.py index d0e4a79be..b7852c978 100644 --- a/packages/ai/src/ai/common/database/db_instance_base.py +++ b/packages/ai/src/ai/common/database/db_instance_base.py @@ -70,6 +70,14 @@ class DatabaseInstanceBase(IInstanceBase, ABC): def _db_display_name(self) -> str: """Return the human-readable database name (e.g. 'MySQL', 'PostgreSQL').""" + @abstractmethod + def _db_dialect(self) -> str: + """Return the machine-readable dialect identifier (e.g. 'mysql', 'postgres'). + + Surfaced to SDK callers via ``QuestionType.DIALECT`` so applications can + branch on the underlying engine (dialect-specific SQL, type coercion, etc.). + """ + # ------------------------------------------------------------------ # Tool methods — dispatched by IInstanceBase.invoke() via @tool_function # ------------------------------------------------------------------ @@ -497,6 +505,17 @@ def writeQuestions(self, question: Question) -> None: lanes = self.instance.getListeners() + # DIALECT: dialect-discovery request — emit {'dialect': '...'} on the + # answers lane so the SDK can branch on the engine. No gate needed: + # the value is metadata, not data, and the node already exposed itself + # by being connected. + if question.type == QuestionType.DIALECT: + if 'answers' in lanes: + answer = Answer() + answer.setAnswer(json.dumps({'dialect': self._db_dialect()})) + self.instance.writeAnswers(answer) + return + # EXECUTE: caller passes raw SQL; bypass LLM translation + safety check. if question.type == QuestionType.EXECUTE: if not self.IGlobal.allow_execute: diff --git a/packages/client-python/src/rocketride/database.py b/packages/client-python/src/rocketride/database.py index fa4001f2d..c9e135e5d 100644 --- a/packages/client-python/src/rocketride/database.py +++ b/packages/client-python/src/rocketride/database.py @@ -33,6 +33,8 @@ from __future__ import annotations +import json +from enum import Enum from typing import TYPE_CHECKING, Optional from .schema.question import Question, QuestionType @@ -42,6 +44,20 @@ from .client import RocketRideClient +class DatabaseDialect(str, Enum): + """ + Underlying database engine a pipeline is connected to. + + Returned by ``client.database.dialect(...)`` so applications can branch on + dialect-specific behavior (e.g. SQL syntax differences, type coercion) and + detect when they're talking to a graph DB instead of a relational one. + """ + + POSTGRES = 'postgres' + MYSQL = 'mysql' + NEO4J = 'neo4j' + + class DatabaseApi: """ Direct database-query namespace on RocketRideClient. @@ -88,3 +104,39 @@ async def query( question = Question(type=QuestionType.EXECUTE) question.addQuestion(sql) return await self._client.chat(token=token, question=question, on_sse=on_sse) + + async def dialect(self, *, token: str) -> DatabaseDialect: + """ + Discover the underlying database engine for a pipeline. + + Sends a ``Question(type=DIALECT)``; the database node replies on the + ``answers`` lane with ``{"dialect": ""}``. Use this to branch + on dialect-specific SQL or to assert you're not pointed at the wrong + kind of database (e.g. Neo4j when you expected Postgres). + + Args: + token: Pipeline token for authentication and resource access. + + Returns: + DatabaseDialect: The dialect reported by the node. + + Raises: + ValueError: If ``token`` is empty/whitespace, the pipeline returns + no answer, or the response is not a recognized dialect. + """ + if not isinstance(token, str) or not token.strip(): + raise ValueError('token must be a non-empty string') + + question = Question(type=QuestionType.DIALECT) + question.addQuestion('dialect') + result = await self._client.chat(token=token, question=question) + + answers = result.get('answers') if isinstance(result, dict) else None + if not answers: + raise ValueError('Pipeline returned no dialect answer; is the endpoint a database node?') + + try: + payload = json.loads(answers[0]) + return DatabaseDialect(payload['dialect']) + except (TypeError, KeyError, ValueError, json.JSONDecodeError) as e: + raise ValueError(f'Unexpected dialect response from pipeline: {answers[0]!r}') from e diff --git a/packages/client-python/src/rocketride/schema/question.py b/packages/client-python/src/rocketride/schema/question.py index 138ed0bcf..05833e60e 100644 --- a/packages/client-python/src/rocketride/schema/question.py +++ b/packages/client-python/src/rocketride/schema/question.py @@ -295,6 +295,7 @@ class QuestionType(str, Enum): GET: Retrieves specific information or data PROMPT: Raw prompt without additional processing EXECUTE: Direct query execution against database nodes (bypasses LLM + safety checks) + DIALECT: Database-dialect discovery (node responds with its engine name) """ QUESTION = 'question' # Basic question-answering @@ -303,6 +304,7 @@ class QuestionType(str, Enum): GET = 'get' # Information retrieval PROMPT = 'prompt' # Raw prompt processing EXECUTE = 'execute' # Direct DB query execution (no LLM, no safety check) + DIALECT = 'dialect' # Ask a database node which engine it is connected to class Question(BaseModel): diff --git a/packages/client-typescript/src/client/database.ts b/packages/client-typescript/src/client/database.ts index 3120d9a1f..9d592abc7 100644 --- a/packages/client-typescript/src/client/database.ts +++ b/packages/client-typescript/src/client/database.ts @@ -34,6 +34,23 @@ import type { RocketRideClient } from './client.js'; import type { PIPELINE_RESULT } from './types/index.js'; import { Question, QuestionType } from './schema/Question.js'; +// ============================================================================= +// DIALECT ENUM +// ============================================================================= + +/** + * Underlying database engine a pipeline is connected to. + * + * Returned by `client.database.dialect(...)` so applications can branch on + * dialect-specific behavior (e.g. SQL syntax differences, type coercion) and + * detect when they're talking to a graph DB instead of a relational one. + */ +export enum DatabaseDialect { + POSTGRES = 'postgres', + MYSQL = 'mysql', + NEO4J = 'neo4j', +} + // ============================================================================= // DATABASE API CLASS // ============================================================================= @@ -77,4 +94,45 @@ export class DatabaseApi { question.addQuestion(options.sql); return this.client.chat({ token: options.token, question, onSSE: options.onSSE }); } + + /** + * Discover the underlying database engine for a pipeline. + * + * Sends a `Question(type=DIALECT)`; the database node replies on the + * `answers` lane with `{"dialect": ""}`. Use this to branch on + * dialect-specific SQL or to assert you're not pointed at the wrong kind + * of database (e.g. Neo4j when you expected Postgres). + * + * @param options.token - Pipeline token for authentication and resource access. + * @returns The dialect reported by the node. + * @throws If `token` is empty, the pipeline returns no answer, or the + * response is not a recognized dialect. + */ + async dialect(options: { token: string }): Promise { + if (typeof options.token !== 'string' || options.token.trim() === '') { + throw new Error('token must be a non-empty string'); + } + + const question = new Question({ type: QuestionType.DIALECT }); + question.addQuestion('dialect'); + const result = await this.client.chat({ token: options.token, question }); + + const answers = (result as { answers?: string[] })?.answers; + if (!answers || answers.length === 0) { + throw new Error('Pipeline returned no dialect answer; is the endpoint a database node?'); + } + + let payload: { dialect?: string }; + try { + payload = JSON.parse(answers[0]); + } catch { + throw new Error(`Unexpected dialect response from pipeline: ${answers[0]}`); + } + + const known = Object.values(DatabaseDialect) as string[]; + if (!payload.dialect || !known.includes(payload.dialect)) { + throw new Error(`Unexpected dialect response from pipeline: ${answers[0]}`); + } + return payload.dialect as DatabaseDialect; + } } diff --git a/packages/client-typescript/src/client/index.ts b/packages/client-typescript/src/client/index.ts index 882ec1c1c..f42a9e89a 100644 --- a/packages/client-typescript/src/client/index.ts +++ b/packages/client-typescript/src/client/index.ts @@ -45,3 +45,6 @@ export * from './constants.js'; // Export the main client and utilities export * from './client.js'; + +// Export the database API namespace (DatabaseApi class, DatabaseDialect enum) +export * from './database.js'; diff --git a/packages/client-typescript/src/client/schema/Question.ts b/packages/client-typescript/src/client/schema/Question.ts index 6f572cddf..b793d2051 100644 --- a/packages/client-typescript/src/client/schema/Question.ts +++ b/packages/client-typescript/src/client/schema/Question.ts @@ -34,7 +34,8 @@ export enum QuestionType { KEYWORD = 'keyword', GET = 'get', PROMPT = 'prompt', - EXECUTE = 'execute' + EXECUTE = 'execute', + DIALECT = 'dialect' } /** From bc441ca4bf1ed7718075de0ebf8db6cd27f47230 Mon Sep 17 00:00:00 2001 From: wdwd720 Date: Fri, 15 May 2026 12:01:17 -0700 Subject: [PATCH 28/29] fix(client-python): clean pending DAP request on send failure (#736) Co-authored-by: Dmitrii Karataev --- .../src/rocketride/core/dap_client.py | 1 + .../client-python/tests/test_dap_client.py | 35 +++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 packages/client-python/tests/test_dap_client.py diff --git a/packages/client-python/src/rocketride/core/dap_client.py b/packages/client-python/src/rocketride/core/dap_client.py index de3ab313a..b949159d2 100644 --- a/packages/client-python/src/rocketride/core/dap_client.py +++ b/packages/client-python/src/rocketride/core/dap_client.py @@ -225,6 +225,7 @@ async def request(self, message: Dict[str, Any], timeout: Optional[float] = None # Send request through transport await self._send(message) except Exception: + self._pending_requests.pop(seq, None) self.raise_exception(ConnectionError('Could not send request')) try: diff --git a/packages/client-python/tests/test_dap_client.py b/packages/client-python/tests/test_dap_client.py new file mode 100644 index 000000000..add58ddcc --- /dev/null +++ b/packages/client-python/tests/test_dap_client.py @@ -0,0 +1,35 @@ +import asyncio + +import pytest + +from rocketride.core.dap_client import DAPClient + + +class FailingSendTransport: + def __init__(self): + self.send_count = 0 + self.handlers = {} + + def bind(self, **handlers): + self.handlers = handlers + + def is_connected(self): + return True + + async def send(self, message): + self.send_count += 1 + raise RuntimeError('send failed') + + +def test_request_cleans_pending_request_when_send_fails(): + async def run_test(): + transport = FailingSendTransport() + client = DAPClient(module='TEST', transport=transport) + + with pytest.raises(ConnectionError, match='Could not send request'): + await client.request({'type': 'request', 'command': 'example', 'seq': 42}) + + assert transport.send_count == 1 + assert client._pending_requests == {} + + asyncio.run(run_test()) From ae5a735d9a356653f4e8eefb66a27a1dec82bfae Mon Sep 17 00:00:00 2001 From: Nechar KC <126724860+SpeedRelativity@users.noreply.github.com> Date: Fri, 15 May 2026 12:08:02 -0700 Subject: [PATCH 29/29] chore: removed obsolote input section from 72 service configuration files. Input array in services*.jsons were duplicate of lane. Closes #629 (#728) Co-authored-by: Dmitrii Karataev --- .../accessibility_describe/services.json | 12 ------ .../nodes/agent_crewai/services.agent.json | 6 --- .../nodes/agent_crewai/services.manager.json | 6 --- .../nodes/agent_deepagent/services.agent.json | 6 --- nodes/src/nodes/agent_langchain/services.json | 6 --- .../src/nodes/agent_rocketride/services.json | 6 --- nodes/src/nodes/anonymize/services.json | 13 ------- nodes/src/nodes/astra_db/services.json | 28 -------------- nodes/src/nodes/atlas/services.json | 28 -------------- nodes/src/nodes/audio_player/services.json | 12 ------ .../src/nodes/audio_transcribe/services.json | 18 --------- nodes/src/nodes/audio_tts/services.json | 38 ------------------- nodes/src/nodes/chroma/services.json | 28 -------------- nodes/src/nodes/core/services.filesys.json | 11 ------ nodes/src/nodes/core/services.hash.json | 6 --- nodes/src/nodes/core/services.parse.json | 27 ------------- nodes/src/nodes/db_mysql/services.json | 20 ---------- nodes/src/nodes/db_neo4j/services.json | 20 ---------- nodes/src/nodes/db_postgres/services.json | 20 ---------- nodes/src/nodes/dictionary/services.json | 11 ------ nodes/src/nodes/embedding_image/services.json | 22 ----------- .../src/nodes/embedding_openai/services.json | 10 ----- .../nodes/embedding_transformer/services.json | 10 ----- nodes/src/nodes/embedding_video/services.json | 12 ------ nodes/src/nodes/extract_data/services.json | 30 --------------- nodes/src/nodes/frame_grabber/services.json | 20 ---------- nodes/src/nodes/guardrails/services.json | 35 ----------------- .../index_search/services.elasticsearch.json | 38 ------------------- .../index_search/services.opensearch.json | 33 ---------------- nodes/src/nodes/llamaparse/services.json | 13 ------- nodes/src/nodes/llm_anthropic/services.json | 10 ----- nodes/src/nodes/llm_bedrock/services.json | 10 ----- nodes/src/nodes/llm_deepseek/services.json | 10 ----- nodes/src/nodes/llm_gemini/services.json | 10 ----- nodes/src/nodes/llm_gmi_cloud/services.json | 10 ----- nodes/src/nodes/llm_mistral/services.json | 10 ----- nodes/src/nodes/llm_ollama/services.json | 10 ----- nodes/src/nodes/llm_openai/services.json | 10 ----- nodes/src/nodes/llm_openai_api/services.json | 10 ----- nodes/src/nodes/llm_perplexity/services.json | 10 ----- nodes/src/nodes/llm_qwen/services.json | 10 ----- .../nodes/llm_vertex/services.enterprise.json | 10 ----- .../nodes/llm_vertex/services.personal.json | 10 ----- .../nodes/llm_vision_mistral/services.json | 22 ----------- .../src/nodes/llm_vision_ollama/services.json | 22 ----------- nodes/src/nodes/llm_xai/services.json | 10 ----- .../src/nodes/local_text_output/services.json | 6 --- nodes/src/nodes/milvus/services.json | 28 -------------- nodes/src/nodes/ner/services.json | 22 ----------- nodes/src/nodes/ocr/services.json | 21 ---------- nodes/src/nodes/pinecone/services.json | 28 -------------- .../src/nodes/preprocessor_code/services.json | 10 ----- nodes/src/nodes/prompt/services.json | 27 ------------- nodes/src/nodes/qdrant/services.json | 28 -------------- nodes/src/nodes/question/services.json | 10 ----- nodes/src/nodes/reducto/services.json | 13 ------- .../src/nodes/response/services.answers.json | 6 --- nodes/src/nodes/response/services.audio.json | 6 --- .../nodes/response/services.documents.json | 6 --- nodes/src/nodes/response/services.image.json | 6 --- nodes/src/nodes/response/services.json | 34 ----------------- .../nodes/response/services.questions.json | 6 --- nodes/src/nodes/response/services.table.json | 6 --- nodes/src/nodes/response/services.text.json | 6 --- nodes/src/nodes/response/services.video.json | 6 --- nodes/src/nodes/search_exa/services.json | 13 ------- nodes/src/nodes/summarization/services.json | 13 ------- nodes/src/nodes/telegram/services.json | 27 ------------- nodes/src/nodes/thumbnail/services.json | 26 ------------- nodes/src/nodes/tool_pipe/services.json | 6 --- nodes/src/nodes/twelvelabs/services.json | 12 ------ nodes/src/nodes/webhook/services.chat.json | 11 ------ 72 files changed, 1112 deletions(-) diff --git a/nodes/src/nodes/accessibility_describe/services.json b/nodes/src/nodes/accessibility_describe/services.json index 01b459c99..cd810e356 100644 --- a/nodes/src/nodes/accessibility_describe/services.json +++ b/nodes/src/nodes/accessibility_describe/services.json @@ -14,18 +14,6 @@ "lanes": { "image": ["text"] }, - "input": [ - { - "lane": "image", - "description": "Image to analyze for accessibility description (JPEG, PNG, WebP)", - "output": [ - { - "lane": "text", - "description": "Structured accessibility description with hazards, spatial layout, text, and navigation info" - } - ] - } - ], "preconfig": { "default": "gemini-2.5-flash", "profiles": { diff --git a/nodes/src/nodes/agent_crewai/services.agent.json b/nodes/src/nodes/agent_crewai/services.agent.json index b5e636e86..efdbb8d60 100644 --- a/nodes/src/nodes/agent_crewai/services.agent.json +++ b/nodes/src/nodes/agent_crewai/services.agent.json @@ -23,12 +23,6 @@ "lanes": { "questions": ["answers"] }, - "input": [ - { - "lane": "questions", - "output": [{ "lane": "answers" }] - } - ], "preconfig": { "default": "default", "profiles": { diff --git a/nodes/src/nodes/agent_crewai/services.manager.json b/nodes/src/nodes/agent_crewai/services.manager.json index 089edf5cc..8e4784f21 100644 --- a/nodes/src/nodes/agent_crewai/services.manager.json +++ b/nodes/src/nodes/agent_crewai/services.manager.json @@ -22,12 +22,6 @@ "lanes": { "questions": ["answers"] }, - "input": [ - { - "lane": "questions", - "output": [{ "lane": "answers" }] - } - ], "preconfig": { "default": "default", "profiles": { diff --git a/nodes/src/nodes/agent_deepagent/services.agent.json b/nodes/src/nodes/agent_deepagent/services.agent.json index 7025df684..8370622c0 100644 --- a/nodes/src/nodes/agent_deepagent/services.agent.json +++ b/nodes/src/nodes/agent_deepagent/services.agent.json @@ -27,12 +27,6 @@ "lanes": { "questions": ["answers"] }, - "input": [ - { - "lane": "questions", - "output": [{ "lane": "answers" }] - } - ], "preconfig": { "default": "default", "profiles": { diff --git a/nodes/src/nodes/agent_langchain/services.json b/nodes/src/nodes/agent_langchain/services.json index 79bf87cba..85b01e6d8 100644 --- a/nodes/src/nodes/agent_langchain/services.json +++ b/nodes/src/nodes/agent_langchain/services.json @@ -23,12 +23,6 @@ "lanes": { "questions": ["answers"] }, - "input": [ - { - "lane": "questions", - "output": [{ "lane": "answers" }] - } - ], "preconfig": { "default": "default", "profiles": { diff --git a/nodes/src/nodes/agent_rocketride/services.json b/nodes/src/nodes/agent_rocketride/services.json index 2de5a2dd1..a67ceb063 100644 --- a/nodes/src/nodes/agent_rocketride/services.json +++ b/nodes/src/nodes/agent_rocketride/services.json @@ -29,12 +29,6 @@ "lanes": { "questions": ["answers"] }, - "input": [ - { - "lane": "questions", - "output": [{ "lane": "answers" }] - } - ], "preconfig": { "default": "default", "profiles": { diff --git a/nodes/src/nodes/anonymize/services.json b/nodes/src/nodes/anonymize/services.json index 83f358944..0a4f5586b 100644 --- a/nodes/src/nodes/anonymize/services.json +++ b/nodes/src/nodes/anonymize/services.json @@ -63,19 +63,6 @@ "lanes": { "text": ["text"] }, - "input": [ - { - "lane": "text", - "description": "Text with sensitive information", - "min": 1, - "output": [ - { - "lane": "text", - "description": "Anonymized text" - } - ] - } - ], // // Test configuration for automated node testing // diff --git a/nodes/src/nodes/astra_db/services.json b/nodes/src/nodes/astra_db/services.json index 286aab5d4..d1b238a27 100644 --- a/nodes/src/nodes/astra_db/services.json +++ b/nodes/src/nodes/astra_db/services.json @@ -69,34 +69,6 @@ "documents": [], "questions": ["documents", "answers", "questions"] }, - "input": [ - { - "lane": "documents", - "description": ["Stores the documents into the vector database. The documents must be ", "run through an embedding model prior to this step to compute the vectors."], - "output": [] - }, - { - "lane": "questions", - "description": "Searchs the database for documents most similar to the given questions.", - "output": [ - { - "lane": "documents", - "description": ["Produces documents that are most similar to the given question."], - "output": [] - }, - { - "lane": "answers", - "description": ["Produces an answer with the documents that are most similar ", "to the given question."], - "output": [] - }, - { - "lane": "questions", - "description": ["Updates the question with documents most similar to the ", "question and sets up a filter so piping this to another store ", "driver will limit its answers to the given subset of documents."], - "output": [] - } - ] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/atlas/services.json b/nodes/src/nodes/atlas/services.json index 6793ed15f..8dc927d3c 100644 --- a/nodes/src/nodes/atlas/services.json +++ b/nodes/src/nodes/atlas/services.json @@ -69,34 +69,6 @@ "documents": [], "questions": ["documents", "answers", "questions"] }, - "input": [ - { - "lane": "documents", - "description": ["Stores the documents into the MongoDB Atlas vector database. The documents must be ", "run through an embedding model prior to this step to compute the vectors."], - "output": [] - }, - { - "lane": "questions", - "description": "Searchs the database for documents most similar to the given questions.", - "output": [ - { - "lane": "documents", - "description": ["Produces documents that are most similar to the given question."], - "output": [] - }, - { - "lane": "answers", - "description": ["Produces an answer with the documents that are most similar ", "to the given question."], - "output": [] - }, - { - "lane": "questions", - "description": ["Updates the question with documents most similar to the ", "question and sets up a filter so piping this to another store ", "driver will limit its answers to the given subset of documents."], - "output": [] - } - ] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/audio_player/services.json b/nodes/src/nodes/audio_player/services.json index 4b12930fb..29f550fd6 100644 --- a/nodes/src/nodes/audio_player/services.json +++ b/nodes/src/nodes/audio_player/services.json @@ -65,18 +65,6 @@ "audio": [], "video": [] }, - "input": [ - { - "lane": "audio", - "description": "Audio input", - "output": [] - }, - { - "lane": "video", - "description": "Video input", - "output": [] - } - ], // // // Optional: diff --git a/nodes/src/nodes/audio_transcribe/services.json b/nodes/src/nodes/audio_transcribe/services.json index 9c80f7229..09381cb4c 100644 --- a/nodes/src/nodes/audio_transcribe/services.json +++ b/nodes/src/nodes/audio_transcribe/services.json @@ -65,24 +65,6 @@ "audio": ["text"], "video": ["text"] }, - "input": [ - { - "lane": "audio", - "output": [ - { - "lane": "text" - } - ] - }, - { - "lane": "video", - "output": [ - { - "lane": "text" - } - ] - } - ], // // // Optional: diff --git a/nodes/src/nodes/audio_tts/services.json b/nodes/src/nodes/audio_tts/services.json index 6b6e6deb5..cc3b8e540 100644 --- a/nodes/src/nodes/audio_tts/services.json +++ b/nodes/src/nodes/audio_tts/services.json @@ -64,44 +64,6 @@ "questions": ["audio"], "answers": ["audio"] }, - "input": [ - { - "lane": "text", - "description": "Text input for speech synthesis", - "output": [ - { - "lane": "audio" - } - ] - }, - { - "lane": "documents", - "description": "Document input — extracts page_content text for speech synthesis", - "output": [ - { - "lane": "audio" - } - ] - }, - { - "lane": "questions", - "description": "Question input — extracts question text for speech synthesis", - "output": [ - { - "lane": "audio" - } - ] - }, - { - "lane": "answers", - "description": "Answer input — extracts answer text for speech synthesis", - "output": [ - { - "lane": "audio" - } - ] - } - ], // // Optional: // Profile section are configuration options used by the driver diff --git a/nodes/src/nodes/chroma/services.json b/nodes/src/nodes/chroma/services.json index cdc7a77ea..d4e0bbf1f 100644 --- a/nodes/src/nodes/chroma/services.json +++ b/nodes/src/nodes/chroma/services.json @@ -123,34 +123,6 @@ } ] }, - "input": [ - { - "lane": "documents", - "description": ["Stores the documents into the vector database. The documents must be ", "run through an embedding model prior to this step to compute the vectors."], - "output": [] - }, - { - "lane": "questions", - "description": "Searchs the database for documents most similar to the given questions.", - "output": [ - { - "lane": "documents", - "description": ["Produces documents that are most similar to the given question."], - "output": [] - }, - { - "lane": "answers", - "description": ["Produces an answer with the documents that are most similar ", "to the given question."], - "output": [] - }, - { - "lane": "questions", - "description": ["Updates the question with documents most similar to the ", "question and sets up a filter so piping this to another store ", "driver will limit its answers to the given subset of documents."], - "output": [] - } - ] - } - ], // // Optional: // Local fields definitions - these define fields only for the diff --git a/nodes/src/nodes/core/services.filesys.json b/nodes/src/nodes/core/services.filesys.json index 53f889471..cef735cdf 100644 --- a/nodes/src/nodes/core/services.filesys.json +++ b/nodes/src/nodes/core/services.filesys.json @@ -50,17 +50,6 @@ "lanes": { "_source": ["tags"] }, - "input": [ - { - "lane": "_source", - "output": [ - { - "lane": "tags", - "description": "Outputs documents to be processed." - } - ] - } - ], // // Optional: // Local fields definitions - these define fields only for the diff --git a/nodes/src/nodes/core/services.hash.json b/nodes/src/nodes/core/services.hash.json index d30cd0c0d..07029eb1b 100644 --- a/nodes/src/nodes/core/services.hash.json +++ b/nodes/src/nodes/core/services.hash.json @@ -45,12 +45,6 @@ "lanes": { "tags": ["tags"] }, - "input": [ - { - "lane": "tags", - "output": [] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/core/services.parse.json b/nodes/src/nodes/core/services.parse.json index 4d5a04afb..8252c078d 100644 --- a/nodes/src/nodes/core/services.parse.json +++ b/nodes/src/nodes/core/services.parse.json @@ -45,33 +45,6 @@ "lanes": { "tags": ["text", "table", "image", "video", "audio"] }, - "input": [ - { - "lane": "tags", - "output": [ - { - "lane": "text", - "description": "Parses and outputs text." - }, - { - "lane": "table", - "description": "Parses and outputs tables." - }, - { - "lane": "audio", - "description": "Parses and outputs audio streams." - }, - { - "lane": "video", - "description": "Parses and outputs video streams." - }, - { - "lane": "image", - "description": "Parses and outputs images." - } - ] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/db_mysql/services.json b/nodes/src/nodes/db_mysql/services.json index 623eb7d6b..990fddccd 100644 --- a/nodes/src/nodes/db_mysql/services.json +++ b/nodes/src/nodes/db_mysql/services.json @@ -75,26 +75,6 @@ "answers": [], "questions": ["table", "text", "answers"] }, - "input": [ - { - "lane": "answers", - "output": [] - }, - { - "lane": "questions", - "output": [ - { - "lane": "table" - }, - { - "lane": "text" - }, - { - "lane": "answers" - } - ] - } - ], // // Optional: // Profile section are configuration options used by the driver diff --git a/nodes/src/nodes/db_neo4j/services.json b/nodes/src/nodes/db_neo4j/services.json index 38197dc49..99ea6156f 100644 --- a/nodes/src/nodes/db_neo4j/services.json +++ b/nodes/src/nodes/db_neo4j/services.json @@ -74,26 +74,6 @@ // "answers": [], "questions": ["table", "text", "answers"] }, - "input": [ - // { - // "lane": "answers", - // "output": [] - // }, - { - "lane": "questions", - "output": [ - { - "lane": "table" - }, - { - "lane": "text" - }, - { - "lane": "answers" - } - ] - } - ], // // Optional: // Profile section are configuration options used by the driver diff --git a/nodes/src/nodes/db_postgres/services.json b/nodes/src/nodes/db_postgres/services.json index b2ce689cf..9eae5395b 100644 --- a/nodes/src/nodes/db_postgres/services.json +++ b/nodes/src/nodes/db_postgres/services.json @@ -74,26 +74,6 @@ "answers": [], "questions": ["table", "text", "answers"] }, - "input": [ - { - "lane": "answers", - "output": [] - }, - { - "lane": "questions", - "output": [ - { - "lane": "table" - }, - { - "lane": "text" - }, - { - "lane": "answers" - } - ] - } - ], // // Optional: // Profile section are configuration options used by the driver diff --git a/nodes/src/nodes/dictionary/services.json b/nodes/src/nodes/dictionary/services.json index 85d43a083..eb771067d 100644 --- a/nodes/src/nodes/dictionary/services.json +++ b/nodes/src/nodes/dictionary/services.json @@ -69,17 +69,6 @@ "lanes": { "text": ["documents"] }, - "input": [ - { - "lane": "text", - "output": [ - { - "lane": "documents", - "description": "Outputs a series of documents, each one containing a dictionary item." - } - ] - } - ], // // Optional: // Local fields definitions - these define fields only for the diff --git a/nodes/src/nodes/embedding_image/services.json b/nodes/src/nodes/embedding_image/services.json index f0ce98fc8..1fbd85294 100644 --- a/nodes/src/nodes/embedding_image/services.json +++ b/nodes/src/nodes/embedding_image/services.json @@ -64,28 +64,6 @@ "documents": ["documents"], "image": ["documents"] }, - "input": [ - { - "lane": "documents", - "description": "Documents container images to embed.", - "output": [ - { - "lane": "documents", - "description": "Documents containg embeddings." - } - ] - }, - { - "lane": "image", - "description": "Documents container images to embed.", - "output": [ - { - "lane": "documents", - "description": "Documents containg embeddings." - } - ] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/embedding_openai/services.json b/nodes/src/nodes/embedding_openai/services.json index 3b887d394..bfdc7241e 100644 --- a/nodes/src/nodes/embedding_openai/services.json +++ b/nodes/src/nodes/embedding_openai/services.json @@ -64,16 +64,6 @@ "documents": ["documents"], "questions": ["questions"] }, - "input": [ - { - "lane": "documents", - "output": [ - { - "lane": "documents" - } - ] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/embedding_transformer/services.json b/nodes/src/nodes/embedding_transformer/services.json index 9575f5f7c..efb3122ac 100644 --- a/nodes/src/nodes/embedding_transformer/services.json +++ b/nodes/src/nodes/embedding_transformer/services.json @@ -64,16 +64,6 @@ "documents": ["documents"], "questions": ["questions"] }, - "input": [ - { - "lane": "documents", - "output": [ - { - "lane": "documents" - } - ] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/embedding_video/services.json b/nodes/src/nodes/embedding_video/services.json index f1f57fe7f..013e404cc 100644 --- a/nodes/src/nodes/embedding_video/services.json +++ b/nodes/src/nodes/embedding_video/services.json @@ -61,18 +61,6 @@ "lanes": { "video": ["documents"] }, - "input": [ - { - "lane": "video", - "description": "Video to extract frames from and embed.", - "output": [ - { - "lane": "documents", - "description": "Documents containing frame embeddings with timestamp metadata." - } - ] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/extract_data/services.json b/nodes/src/nodes/extract_data/services.json index 3ae63c02b..a1b85711f 100644 --- a/nodes/src/nodes/extract_data/services.json +++ b/nodes/src/nodes/extract_data/services.json @@ -70,36 +70,6 @@ "table": ["answers", "documents"], "text": ["answers", "documents"] }, - "input": [ - { - "description": "Extracts data from an existing table (transformation)", - "lane": "table", - "output": [ - { - "lane": "answers", - "description": "Outputs the extracted data" - }, - { - "lane": "documents", - "description": "Outputs the extracted data" - } - ] - }, - { - "description": "Extracts data from an text", - "lane": "text", - "output": [ - { - "lane": "answers", - "description": "Outputs the extracted data" - }, - { - "lane": "documents", - "description": "Outputs the extracted data" - } - ] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/frame_grabber/services.json b/nodes/src/nodes/frame_grabber/services.json index a4b77c0b1..9f06808fa 100644 --- a/nodes/src/nodes/frame_grabber/services.json +++ b/nodes/src/nodes/frame_grabber/services.json @@ -64,26 +64,6 @@ "lanes": { "video": ["image", "table", "documents"] }, - "input": [ - { - "lane": "video", - "description": "Video to process.", - "output": [ - { - "lane": "image", - "description": "Selected frames of the video." - }, - { - "lane": "table", - "description": "Start times of selected frames of the video." - }, - { - "lane": "documents", - "description": "Selected frames of the video as image documents with frame number and timestamp metadata." - } - ] - } - ], // // // Optional: diff --git a/nodes/src/nodes/guardrails/services.json b/nodes/src/nodes/guardrails/services.json index 9879a630a..0aa1b9593 100644 --- a/nodes/src/nodes/guardrails/services.json +++ b/nodes/src/nodes/guardrails/services.json @@ -85,41 +85,6 @@ "documents" ] }, - "input": [ - { - "lane": "questions", - "description": "Questions to check with input guardrails before forwarding to the LLM", - "min": 0, - "output": [ - { - "lane": "questions", - "description": "Questions that passed guardrails checks" - } - ] - }, - { - "lane": "answers", - "description": "Answers to check with output guardrails before forwarding to the client", - "min": 0, - "output": [ - { - "lane": "answers", - "description": "Answers that passed guardrails checks" - } - ] - }, - { - "lane": "documents", - "description": "Source documents used as ground truth for hallucination detection", - "min": 0, - "output": [ - { - "lane": "documents", - "description": "Source documents passed through" - } - ] - } - ], // // Test configuration for automated node testing // diff --git a/nodes/src/nodes/index_search/services.elasticsearch.json b/nodes/src/nodes/index_search/services.elasticsearch.json index 43603a391..cde9e9c51 100644 --- a/nodes/src/nodes/index_search/services.elasticsearch.json +++ b/nodes/src/nodes/index_search/services.elasticsearch.json @@ -67,44 +67,6 @@ } ] }, - "input": [ - { - "lane": "text", - "description": ["Store text into the Elasticsearch index (index mode only)."], - "output": [] - }, - { - "lane": "documents", - "description": ["Stores the documents into the vector database. The documents must be ", "run through an embedding model prior to this step to compute the vectors. ", "This node supports both storing documents and searching them - you can use ", "the same Elasticsearch node for both upload and retrieve operations."], - "output": [] - }, - { - "lane": "questions", - "description": ["Searches the database for documents most similar to the given questions. ", "This node supports both storing documents and searching them - you can use ", "the same Elasticsearch node for both upload and retrieve operations."], - "output": [ - { - "lane": "text", - "description": ["Produces text that is most similar to the given question."], - "output": [] - }, - { - "lane": "documents", - "description": ["Produces documents that are most similar to the given question."], - "output": [] - }, - { - "lane": "answers", - "description": ["Produces an answer with the documents that are most similar ", "to the given question."], - "output": [] - }, - { - "lane": "questions", - "description": ["Updates the question with documents most similar to the ", "question and sets up a filter so piping this to another store ", "driver will limit its answers to the given subset of documents."], - "output": [] - } - ] - } - ], "preconfig": { "default": "self-managed", "profiles": { diff --git a/nodes/src/nodes/index_search/services.opensearch.json b/nodes/src/nodes/index_search/services.opensearch.json index 42d894194..a0e5bcd9d 100644 --- a/nodes/src/nodes/index_search/services.opensearch.json +++ b/nodes/src/nodes/index_search/services.opensearch.json @@ -77,39 +77,6 @@ } ] }, - "input": [ - { - "lane": "text", - "description": ["Store text into the OpenSearch index. "], - "output": [] - }, - { - "lane": "documents", - "description": ["Ingest documents (embeddings) into the OpenSearch vector store."], - "output": [] - }, - { - "lane": "questions", - "description": "Searches the index for the best matching documents (text or vector).", - "output": [ - { - "lane": "text", - "description": ["Produces text that is most similar to the given question."], - "output": [] - }, - { - "lane": "answers", - "description": ["Produces an answer with the documents that are most similar ", "to the given question."], - "output": [] - }, - { - "lane": "documents", - "description": ["Produces documents that contain the given question, the document id, and the retrieved text, when using index mode."], - "output": [] - } - ] - } - ], "fields": { "opensearch.host": { "title": "Host", diff --git a/nodes/src/nodes/llamaparse/services.json b/nodes/src/nodes/llamaparse/services.json index 36d5bc634..532492009 100644 --- a/nodes/src/nodes/llamaparse/services.json +++ b/nodes/src/nodes/llamaparse/services.json @@ -69,19 +69,6 @@ "lanes": { "tags": ["text", "table"] }, - "input": [ - { - "lane": "tags", - "output": [ - { - "lane": "text" - }, - { - "lane": "table" - } - ] - } - ], // // Optional: // Profile section are configuration options used by the driver diff --git a/nodes/src/nodes/llm_anthropic/services.json b/nodes/src/nodes/llm_anthropic/services.json index 32c023d69..9e488b224 100644 --- a/nodes/src/nodes/llm_anthropic/services.json +++ b/nodes/src/nodes/llm_anthropic/services.json @@ -70,16 +70,6 @@ "lanes": { "questions": ["answers"] }, - "input": [ - { - "lane": "questions", - "output": [ - { - "lane": "answers" - } - ] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/llm_bedrock/services.json b/nodes/src/nodes/llm_bedrock/services.json index bb9b33da1..96f6de31f 100644 --- a/nodes/src/nodes/llm_bedrock/services.json +++ b/nodes/src/nodes/llm_bedrock/services.json @@ -72,16 +72,6 @@ "lanes": { "questions": ["answers"] }, - "input": [ - { - "lane": "questions", - "output": [ - { - "lane": "answers" - } - ] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/llm_deepseek/services.json b/nodes/src/nodes/llm_deepseek/services.json index 07a3d5147..e58397a6e 100644 --- a/nodes/src/nodes/llm_deepseek/services.json +++ b/nodes/src/nodes/llm_deepseek/services.json @@ -77,16 +77,6 @@ "lanes": { "questions": ["answers"] }, - "input": [ - { - "lane": "questions", - "output": [ - { - "lane": "answers" - } - ] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/llm_gemini/services.json b/nodes/src/nodes/llm_gemini/services.json index 91ce91ad1..952b49bc2 100644 --- a/nodes/src/nodes/llm_gemini/services.json +++ b/nodes/src/nodes/llm_gemini/services.json @@ -68,16 +68,6 @@ "lanes": { "questions": ["answers"] }, - "input": [ - { - "lane": "questions", - "output": [ - { - "lane": "answers" - } - ] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/llm_gmi_cloud/services.json b/nodes/src/nodes/llm_gmi_cloud/services.json index 4b84ab379..8047db080 100644 --- a/nodes/src/nodes/llm_gmi_cloud/services.json +++ b/nodes/src/nodes/llm_gmi_cloud/services.json @@ -70,16 +70,6 @@ "lanes": { "questions": ["answers"] }, - "input": [ - { - "lane": "questions", - "output": [ - { - "lane": "answers" - } - ] - } - ], // // Optional: // Profile section are configuration options used by the driver diff --git a/nodes/src/nodes/llm_mistral/services.json b/nodes/src/nodes/llm_mistral/services.json index 50e54e2f4..806948347 100644 --- a/nodes/src/nodes/llm_mistral/services.json +++ b/nodes/src/nodes/llm_mistral/services.json @@ -14,16 +14,6 @@ "lanes": { "questions": ["answers"] }, - "input": [ - { - "lane": "questions", - "output": [ - { - "lane": "answers" - } - ] - } - ], "preconfig": { "default": "mistral-large", "profiles": { diff --git a/nodes/src/nodes/llm_ollama/services.json b/nodes/src/nodes/llm_ollama/services.json index 9f8af8910..fa23609cd 100644 --- a/nodes/src/nodes/llm_ollama/services.json +++ b/nodes/src/nodes/llm_ollama/services.json @@ -69,16 +69,6 @@ "lanes": { "questions": ["answers"] }, - "input": [ - { - "lane": "questions", - "output": [ - { - "lane": "answers" - } - ] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/llm_openai/services.json b/nodes/src/nodes/llm_openai/services.json index 99bd64321..12dcc0ca1 100644 --- a/nodes/src/nodes/llm_openai/services.json +++ b/nodes/src/nodes/llm_openai/services.json @@ -68,16 +68,6 @@ "lanes": { "questions": ["answers"] }, - "input": [ - { - "lane": "questions", - "output": [ - { - "lane": "answers" - } - ] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/llm_openai_api/services.json b/nodes/src/nodes/llm_openai_api/services.json index 90ed11ecc..07bfdc5d4 100644 --- a/nodes/src/nodes/llm_openai_api/services.json +++ b/nodes/src/nodes/llm_openai_api/services.json @@ -68,16 +68,6 @@ "lanes": { "questions": ["answers"] }, - "input": [ - { - "lane": "questions", - "output": [ - { - "lane": "answers" - } - ] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/llm_perplexity/services.json b/nodes/src/nodes/llm_perplexity/services.json index d7156d9c2..ed0a8868e 100644 --- a/nodes/src/nodes/llm_perplexity/services.json +++ b/nodes/src/nodes/llm_perplexity/services.json @@ -14,16 +14,6 @@ "lanes": { "questions": ["answers"] }, - "input": [ - { - "lane": "questions", - "output": [ - { - "lane": "answers" - } - ] - } - ], "preconfig": { "default": "sonar", "profiles": { diff --git a/nodes/src/nodes/llm_qwen/services.json b/nodes/src/nodes/llm_qwen/services.json index 2e3a0d3b0..56d647360 100644 --- a/nodes/src/nodes/llm_qwen/services.json +++ b/nodes/src/nodes/llm_qwen/services.json @@ -69,16 +69,6 @@ "lanes": { "questions": ["answers"] }, - "input": [ - { - "lane": "questions", - "output": [ - { - "lane": "answers" - } - ] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/llm_vertex/services.enterprise.json b/nodes/src/nodes/llm_vertex/services.enterprise.json index 030dac43a..341845ab0 100644 --- a/nodes/src/nodes/llm_vertex/services.enterprise.json +++ b/nodes/src/nodes/llm_vertex/services.enterprise.json @@ -74,16 +74,6 @@ "lanes": { "questions": ["answers"] }, - "input": [ - { - "lane": "questions", - "output": [ - { - "lane": "answers" - } - ] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/llm_vertex/services.personal.json b/nodes/src/nodes/llm_vertex/services.personal.json index a0fd25874..64b9feb6d 100644 --- a/nodes/src/nodes/llm_vertex/services.personal.json +++ b/nodes/src/nodes/llm_vertex/services.personal.json @@ -69,16 +69,6 @@ "lanes": { "questions": ["answers"] }, - "input": [ - { - "lane": "questions", - "output": [ - { - "lane": "answers" - } - ] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/llm_vision_mistral/services.json b/nodes/src/nodes/llm_vision_mistral/services.json index c92f66a43..9511d7dcd 100644 --- a/nodes/src/nodes/llm_vision_mistral/services.json +++ b/nodes/src/nodes/llm_vision_mistral/services.json @@ -15,28 +15,6 @@ "image": ["text"], "documents": ["documents"] }, - "input": [ - { - "lane": "image", - "description": "Image to analyze with Mistral Vision models", - "output": [ - { - "lane": "text", - "description": "Text analysis of the image content" - } - ] - }, - { - "lane": "documents", - "description": "Image documents to analyze with Mistral Vision models", - "output": [ - { - "lane": "documents", - "description": "Text analysis of each image document with original metadata (frame number, timestamp) preserved" - } - ] - } - ], "preconfig": { "default": "mistral-large-3", "profiles": { diff --git a/nodes/src/nodes/llm_vision_ollama/services.json b/nodes/src/nodes/llm_vision_ollama/services.json index 7f0f5cb6b..c14fbc41a 100644 --- a/nodes/src/nodes/llm_vision_ollama/services.json +++ b/nodes/src/nodes/llm_vision_ollama/services.json @@ -70,28 +70,6 @@ "image": ["text"], "documents": ["documents"] }, - "input": [ - { - "lane": "image", - "description": "Image to analyze with a local Ollama vision model", - "output": [ - { - "lane": "text", - "description": "Text analysis of the image content" - } - ] - }, - { - "lane": "documents", - "description": "Image documents to analyze with a local Ollama vision model", - "output": [ - { - "lane": "documents", - "description": "Text analysis of each image document with original metadata (frame number, timestamp) preserved" - } - ] - } - ], // // Optional: // Profile section are configuration options used by the driver diff --git a/nodes/src/nodes/llm_xai/services.json b/nodes/src/nodes/llm_xai/services.json index bc55c25e2..48f880414 100644 --- a/nodes/src/nodes/llm_xai/services.json +++ b/nodes/src/nodes/llm_xai/services.json @@ -69,16 +69,6 @@ "lanes": { "questions": ["answers"] }, - "input": [ - { - "lane": "questions", - "output": [ - { - "lane": "answers" - } - ] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/local_text_output/services.json b/nodes/src/nodes/local_text_output/services.json index f6650cb85..0de50fc6a 100644 --- a/nodes/src/nodes/local_text_output/services.json +++ b/nodes/src/nodes/local_text_output/services.json @@ -60,12 +60,6 @@ "lanes": { "text": [] }, - "input": [ - { - "lane": "text", - "output": [] - } - ], // // Optional: diff --git a/nodes/src/nodes/milvus/services.json b/nodes/src/nodes/milvus/services.json index e9297b16a..92566618f 100644 --- a/nodes/src/nodes/milvus/services.json +++ b/nodes/src/nodes/milvus/services.json @@ -124,34 +124,6 @@ } ] }, - "input": [ - { - "lane": "documents", - "description": ["Stores the documents into the vector database. The documents must be ", "run through an embedding model prior to this step to compute the vectors."], - "output": [] - }, - { - "lane": "questions", - "description": "Searchs the database for documents most similar to the given questions.", - "output": [ - { - "lane": "documents", - "description": ["Produces documents that are most similar to the given question."], - "output": [] - }, - { - "lane": "answers", - "description": ["Produces an answer with the documents that are most similar ", "to the given question."], - "output": [] - }, - { - "lane": "questions", - "description": ["Updates the question with documents most similar to the ", "question and sets up a filter so piping this to another store ", "driver will limit its answers to the given subset of documents."], - "output": [] - } - ] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/ner/services.json b/nodes/src/nodes/ner/services.json index aba168216..7eefe062d 100644 --- a/nodes/src/nodes/ner/services.json +++ b/nodes/src/nodes/ner/services.json @@ -64,28 +64,6 @@ "text": ["text"], "documents": ["documents"] }, - "input": [ - { - "lane": "text", - "description": "Text to extract entities from", - "output": [ - { - "lane": "text", - "description": "Original text (passed through)" - } - ] - }, - { - "lane": "documents", - "description": "Documents to extract entities from", - "output": [ - { - "lane": "documents", - "description": "Documents with entity metadata" - } - ] - } - ], // // Test configuration for automated node testing // diff --git a/nodes/src/nodes/ocr/services.json b/nodes/src/nodes/ocr/services.json index 7f9a05203..220207339 100644 --- a/nodes/src/nodes/ocr/services.json +++ b/nodes/src/nodes/ocr/services.json @@ -70,27 +70,6 @@ "documents": ["text"], "image": ["text", "table"] }, - "input": [ - { - "lane": "documents", - "output": [ - { - "lane": "text" - } - ] - }, - { - "lane": "image", - "output": [ - { - "lane": "text" - }, - { - "lane": "table" - } - ] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/pinecone/services.json b/nodes/src/nodes/pinecone/services.json index 1f0f19ced..70dcd8693 100644 --- a/nodes/src/nodes/pinecone/services.json +++ b/nodes/src/nodes/pinecone/services.json @@ -128,34 +128,6 @@ } ] }, - "input": [ - { - "lane": "documents", - "description": ["Stores the documents into the vector database. The documents must be ", "run through an embedding model prior to this step to compute the vectors."], - "output": [] - }, - { - "lane": "questions", - "description": "Searchs the database for documents most similar to the given questions.", - "output": [ - { - "lane": "documents", - "description": ["Produces documents that are most similar to the given question."], - "output": [] - }, - { - "lane": "answers", - "description": ["Produces an answer with the documents that are most similar ", "to the given question."], - "output": [] - }, - { - "lane": "questions", - "description": ["Updates the question with documents most similar to the ", "question and sets up a filter so piping this to another store ", "driver will limit its answers to the given subset of documents."], - "output": [] - } - ] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/preprocessor_code/services.json b/nodes/src/nodes/preprocessor_code/services.json index 4dc5e664d..0bca8e20f 100644 --- a/nodes/src/nodes/preprocessor_code/services.json +++ b/nodes/src/nodes/preprocessor_code/services.json @@ -68,16 +68,6 @@ "lanes": { "text": ["documents"] }, - "input": [ - { - "lane": "text", - "output": [ - { - "lane": "documents" - } - ] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/prompt/services.json b/nodes/src/nodes/prompt/services.json index 2234aed5a..5187441d4 100644 --- a/nodes/src/nodes/prompt/services.json +++ b/nodes/src/nodes/prompt/services.json @@ -71,33 +71,6 @@ "table": [], "questions": ["questions"] }, - "input": [ - { - "lane": "documents", - "description": "Documents input - collected for merging with prompt", - "output": [] - }, - { - "lane": "text", - "description": "Text input - collected for merging with prompt", - "output": [] - }, - { - "lane": "table", - "description": "Table input - collected for merging with prompt", - "output": [] - }, - { - "lane": "questions", - "description": "Questions input - triggers merging of all collected inputs with prompt", - "output": [ - { - "lane": "questions", - "description": "Enhanced questions with prompt (merged from all input types: questions, documents, text, table)" - } - ] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/qdrant/services.json b/nodes/src/nodes/qdrant/services.json index f450b42f7..e0b1b410c 100644 --- a/nodes/src/nodes/qdrant/services.json +++ b/nodes/src/nodes/qdrant/services.json @@ -123,34 +123,6 @@ } ] }, - "input": [ - { - "lane": "documents", - "description": ["Stores the documents into the vector database. The documents must be ", "run through an embedding model prior to this step to compute the vectors."], - "output": [] - }, - { - "lane": "questions", - "description": "Searchs the database for documents most similar to the given questions.", - "output": [ - { - "lane": "documents", - "description": ["Produces documents that are most similar to the given question."], - "output": [] - }, - { - "lane": "answers", - "description": ["Produces an answer with the documents that are most similar ", "to the given question."], - "output": [] - }, - { - "lane": "questions", - "description": ["Updates the question with documents most similar to the ", "question and sets up a filter so piping this to another store ", "driver will limit its answers to the given subset of documents."], - "output": [] - } - ] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/question/services.json b/nodes/src/nodes/question/services.json index 8fccec14f..a9ffe0102 100644 --- a/nodes/src/nodes/question/services.json +++ b/nodes/src/nodes/question/services.json @@ -68,16 +68,6 @@ "lanes": { "text": ["questions"] }, - "input": [ - { - "lane": "text", - "output": [ - { - "lane": "questions" - } - ] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/reducto/services.json b/nodes/src/nodes/reducto/services.json index adae6b115..6b8bdf6ab 100644 --- a/nodes/src/nodes/reducto/services.json +++ b/nodes/src/nodes/reducto/services.json @@ -63,19 +63,6 @@ "lanes": { "tags": ["text", "table"] }, - "input": [ - { - "lane": "tags", - "output": [ - { - "lane": "text" - }, - { - "lane": "table" - } - ] - } - ], // // Required: diff --git a/nodes/src/nodes/response/services.answers.json b/nodes/src/nodes/response/services.answers.json index 4881f5f58..6f601612a 100644 --- a/nodes/src/nodes/response/services.answers.json +++ b/nodes/src/nodes/response/services.answers.json @@ -67,12 +67,6 @@ "lanes": { "answers": [] }, - "input": [ - { - "lane": "answers", - "output": [] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/response/services.audio.json b/nodes/src/nodes/response/services.audio.json index 2f27d8aaf..e81572cfb 100644 --- a/nodes/src/nodes/response/services.audio.json +++ b/nodes/src/nodes/response/services.audio.json @@ -67,12 +67,6 @@ "lanes": { "audio": [] }, - "input": [ - { - "lane": "audio", - "output": [] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/response/services.documents.json b/nodes/src/nodes/response/services.documents.json index 2301656e0..b34184025 100644 --- a/nodes/src/nodes/response/services.documents.json +++ b/nodes/src/nodes/response/services.documents.json @@ -67,12 +67,6 @@ "lanes": { "documents": [] }, - "input": [ - { - "lane": "documents", - "output": [] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/response/services.image.json b/nodes/src/nodes/response/services.image.json index e4bdce50e..3827efd8d 100644 --- a/nodes/src/nodes/response/services.image.json +++ b/nodes/src/nodes/response/services.image.json @@ -67,12 +67,6 @@ "lanes": { "image": [] }, - "input": [ - { - "lane": "image", - "output": [] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/response/services.json b/nodes/src/nodes/response/services.json index 6e96bcb30..d2a9370d8 100644 --- a/nodes/src/nodes/response/services.json +++ b/nodes/src/nodes/response/services.json @@ -75,40 +75,6 @@ "video": [], "image": [] }, - "input": [ - { - "lane": "text", - "output": [] - }, - { - "lane": "table", - "output": [] - }, - { - "lane": "documents", - "output": [] - }, - { - "lane": "questions", - "output": [] - }, - { - "lane": "answers", - "output": [] - }, - { - "lane": "audio", - "output": [] - }, - { - "lane": "video", - "output": [] - }, - { - "lane": "image", - "output": [] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/response/services.questions.json b/nodes/src/nodes/response/services.questions.json index 10ba50c59..991233bdd 100644 --- a/nodes/src/nodes/response/services.questions.json +++ b/nodes/src/nodes/response/services.questions.json @@ -67,12 +67,6 @@ "lanes": { "questions": [] }, - "input": [ - { - "lane": "questions", - "output": [] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/response/services.table.json b/nodes/src/nodes/response/services.table.json index 7dc053ed2..07de1719f 100644 --- a/nodes/src/nodes/response/services.table.json +++ b/nodes/src/nodes/response/services.table.json @@ -67,12 +67,6 @@ "lanes": { "table": [] }, - "input": [ - { - "lane": "table", - "output": [] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/response/services.text.json b/nodes/src/nodes/response/services.text.json index 33015bf64..81f8919e9 100644 --- a/nodes/src/nodes/response/services.text.json +++ b/nodes/src/nodes/response/services.text.json @@ -67,12 +67,6 @@ "lanes": { "text": [] }, - "input": [ - { - "lane": "text", - "output": [] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/response/services.video.json b/nodes/src/nodes/response/services.video.json index 074617072..5f1bfe10d 100644 --- a/nodes/src/nodes/response/services.video.json +++ b/nodes/src/nodes/response/services.video.json @@ -67,12 +67,6 @@ "lanes": { "video": [] }, - "input": [ - { - "lane": "video", - "output": [] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/search_exa/services.json b/nodes/src/nodes/search_exa/services.json index e40fc2bfe..cdb081851 100644 --- a/nodes/src/nodes/search_exa/services.json +++ b/nodes/src/nodes/search_exa/services.json @@ -67,19 +67,6 @@ "lanes": { "questions": ["answers", "text"] }, - "input": [ - { - "lane": "questions", - "output": [ - { - "lane": "answers" - }, - { - "lane": "text" - } - ] - } - ], // // Optional: // Profile section are configuration options used by the driver diff --git a/nodes/src/nodes/summarization/services.json b/nodes/src/nodes/summarization/services.json index 9ee983cd0..2cd668031 100644 --- a/nodes/src/nodes/summarization/services.json +++ b/nodes/src/nodes/summarization/services.json @@ -79,19 +79,6 @@ "lanes": { "text": ["text", "documents"] }, - "input": [ - { - "lane": "text", - "output": [ - { - "lane": "text" - }, - { - "lane": "documents" - } - ] - } - ], // // Optional: // Profile section are configuration optoins used by the driver diff --git a/nodes/src/nodes/telegram/services.json b/nodes/src/nodes/telegram/services.json index e95a6404f..4a329313e 100644 --- a/nodes/src/nodes/telegram/services.json +++ b/nodes/src/nodes/telegram/services.json @@ -66,33 +66,6 @@ "lanes": { "_source": ["text", "image", "audio", "video", "tags"] }, - "input": [ - { - "lane": "_source", - "output": [ - { - "lane": "text", - "description": "Text messages from Telegram users." - }, - { - "lane": "image", - "description": "Photos sent by Telegram users (JPEG)." - }, - { - "lane": "audio", - "description": "Audio files and voice messages sent by Telegram users." - }, - { - "lane": "video", - "description": "Video clips sent by Telegram users." - }, - { - "lane": "tags", - "description": "Documents (PDF, Word, etc.) sent by Telegram users. Connect to a Parser node." - } - ] - } - ], // // Optional: // Profile section are configuration options used by the driver itself diff --git a/nodes/src/nodes/thumbnail/services.json b/nodes/src/nodes/thumbnail/services.json index 43d0e86b4..e2ff3c9e1 100644 --- a/nodes/src/nodes/thumbnail/services.json +++ b/nodes/src/nodes/thumbnail/services.json @@ -64,32 +64,6 @@ "image": ["documents", "image"], "documents": ["documents"] }, - "input": [ - { - "lane": "image", - "description": "Image data to thumbnail", - "output": [ - { - "lane": "documents", - "description": "Thumbnailed image as document with metadata" - }, - { - "lane": "image", - "description": "Thumbnailed image data" - } - ] - }, - { - "lane": "documents", - "description": "Image documents to thumbnail", - "output": [ - { - "lane": "documents", - "description": "Thumbnailed image documents with original metadata preserved" - } - ] - } - ], // // Optional: // Local fields definitions - these define fields only for the diff --git a/nodes/src/nodes/tool_pipe/services.json b/nodes/src/nodes/tool_pipe/services.json index 3907c12e9..28d4dc780 100644 --- a/nodes/src/nodes/tool_pipe/services.json +++ b/nodes/src/nodes/tool_pipe/services.json @@ -13,12 +13,6 @@ "lanes": { "_source": ["text", "questions", "documents", "table", "answers"] }, - "input": [ - { - "lane": "_source", - "output": [{ "lane": "text" }, { "lane": "questions" }, { "lane": "documents" }, { "lane": "table" }, { "lane": "answers" }] - } - ], "preconfig": { "default": "default", "profiles": { diff --git a/nodes/src/nodes/twelvelabs/services.json b/nodes/src/nodes/twelvelabs/services.json index e8f065a71..6f5848920 100644 --- a/nodes/src/nodes/twelvelabs/services.json +++ b/nodes/src/nodes/twelvelabs/services.json @@ -62,18 +62,6 @@ "lanes": { "video": ["text"] }, - "input": [ - { - "lane": "video", - "description": "Video to analyze.", - "output": [ - { - "lane": "text", - "description": "Text generated by TwelveLabs based on the video and instructions." - } - ] - } - ], // // Optional: // Profile section are configuration options used by the driver diff --git a/nodes/src/nodes/webhook/services.chat.json b/nodes/src/nodes/webhook/services.chat.json index 2337adf47..7c100509b 100644 --- a/nodes/src/nodes/webhook/services.chat.json +++ b/nodes/src/nodes/webhook/services.chat.json @@ -68,17 +68,6 @@ "lanes": { "_source": ["questions"] }, - "input": [ - { - "lane": "_source", - "output": [ - { - "lane": "questions", - "description": "Produces questions to be answered by the pipeline." - } - ] - } - ], // // Optional: // Profile section are configuration optoins used by the driver