mirror of
https://github.com/langgenius/dify.git
synced 2026-04-25 17:47:30 +08:00
Merge branch 'main' into fix/chore-fix
This commit is contained in:
commit
337eff2b79
13
.github/pull_request_template.md
vendored
13
.github/pull_request_template.md
vendored
@ -8,16 +8,9 @@ Please include a summary of the change and which issue is fixed. Please also inc
|
|||||||
|
|
||||||
# Screenshots
|
# Screenshots
|
||||||
|
|
||||||
<table>
|
| Before | After |
|
||||||
<tr>
|
|--------|-------|
|
||||||
<td>Before: </td>
|
| ... | ... |
|
||||||
<td>After: </td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>...</td>
|
|
||||||
<td>...</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
# Checklist
|
# Checklist
|
||||||
|
|
||||||
|
|||||||
@ -260,7 +260,7 @@ def migrate_knowledge_vector_database():
|
|||||||
skipped_count = 0
|
skipped_count = 0
|
||||||
total_count = 0
|
total_count = 0
|
||||||
vector_type = dify_config.VECTOR_STORE
|
vector_type = dify_config.VECTOR_STORE
|
||||||
upper_colletion_vector_types = {
|
upper_collection_vector_types = {
|
||||||
VectorType.MILVUS,
|
VectorType.MILVUS,
|
||||||
VectorType.PGVECTOR,
|
VectorType.PGVECTOR,
|
||||||
VectorType.RELYT,
|
VectorType.RELYT,
|
||||||
@ -268,7 +268,7 @@ def migrate_knowledge_vector_database():
|
|||||||
VectorType.ORACLE,
|
VectorType.ORACLE,
|
||||||
VectorType.ELASTICSEARCH,
|
VectorType.ELASTICSEARCH,
|
||||||
}
|
}
|
||||||
lower_colletion_vector_types = {
|
lower_collection_vector_types = {
|
||||||
VectorType.ANALYTICDB,
|
VectorType.ANALYTICDB,
|
||||||
VectorType.CHROMA,
|
VectorType.CHROMA,
|
||||||
VectorType.MYSCALE,
|
VectorType.MYSCALE,
|
||||||
@ -308,7 +308,7 @@ def migrate_knowledge_vector_database():
|
|||||||
continue
|
continue
|
||||||
collection_name = ""
|
collection_name = ""
|
||||||
dataset_id = dataset.id
|
dataset_id = dataset.id
|
||||||
if vector_type in upper_colletion_vector_types:
|
if vector_type in upper_collection_vector_types:
|
||||||
collection_name = Dataset.gen_collection_name_by_id(dataset_id)
|
collection_name = Dataset.gen_collection_name_by_id(dataset_id)
|
||||||
elif vector_type == VectorType.QDRANT:
|
elif vector_type == VectorType.QDRANT:
|
||||||
if dataset.collection_binding_id:
|
if dataset.collection_binding_id:
|
||||||
@ -324,7 +324,7 @@ def migrate_knowledge_vector_database():
|
|||||||
else:
|
else:
|
||||||
collection_name = Dataset.gen_collection_name_by_id(dataset_id)
|
collection_name = Dataset.gen_collection_name_by_id(dataset_id)
|
||||||
|
|
||||||
elif vector_type in lower_colletion_vector_types:
|
elif vector_type in lower_collection_vector_types:
|
||||||
collection_name = Dataset.gen_collection_name_by_id(dataset_id).lower()
|
collection_name = Dataset.gen_collection_name_by_id(dataset_id).lower()
|
||||||
else:
|
else:
|
||||||
raise ValueError(f"Vector store {vector_type} is not supported.")
|
raise ValueError(f"Vector store {vector_type} is not supported.")
|
||||||
|
|||||||
@ -9,7 +9,7 @@ class PackagingInfo(BaseSettings):
|
|||||||
|
|
||||||
CURRENT_VERSION: str = Field(
|
CURRENT_VERSION: str = Field(
|
||||||
description="Dify version",
|
description="Dify version",
|
||||||
default="0.13.0",
|
default="0.13.1",
|
||||||
)
|
)
|
||||||
|
|
||||||
COMMIT_SHA: str = Field(
|
COMMIT_SHA: str = Field(
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Due to the presence of tasks in App Runner that require long execution times, such as LLM generation and external requests, Flask-Sqlalchemy's strategy for database connection pooling is to allocate one connection (transaction) per request. This approach keeps a connection occupied even during non-DB tasks, leading to the inability to acquire new connections during high concurrency requests due to multiple long-running tasks.
|
Due to the presence of tasks in App Runner that require long execution times, such as LLM generation and external requests, Flask-Sqlalchemy's strategy for database connection pooling is to allocate one connection (transaction) per request. This approach keeps a connection occupied even during non-DB tasks, leading to the inability to acquire new connections during high concurrency requests due to multiple long-running tasks.
|
||||||
|
|
||||||
Therefore, the database operations in App Runner and Task Pipeline must ensure connections are closed immediately after use, and it's better to pass IDs rather than Model objects to avoid deattach errors.
|
Therefore, the database operations in App Runner and Task Pipeline must ensure connections are closed immediately after use, and it's better to pass IDs rather than Model objects to avoid detach errors.
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
|
|||||||
@ -72,7 +72,7 @@ class AppGenerateResponseConverter(ABC):
|
|||||||
for resource in metadata["retriever_resources"]:
|
for resource in metadata["retriever_resources"]:
|
||||||
updated_resources.append(
|
updated_resources.append(
|
||||||
{
|
{
|
||||||
"segment_id": resource["segment_id"],
|
"segment_id": resource.get("segment_id", ""),
|
||||||
"position": resource["position"],
|
"position": resource["position"],
|
||||||
"document_name": resource["document_name"],
|
"document_name": resource["document_name"],
|
||||||
"score": resource["score"],
|
"score": resource["score"],
|
||||||
|
|||||||
@ -91,7 +91,7 @@ class XinferenceProvider(Provider):
|
|||||||
"""
|
"""
|
||||||
```
|
```
|
||||||
|
|
||||||
也可以直接抛出对应Erros,并做如下定义,这样在之后的调用中可以直接抛出`InvokeConnectionError`等异常。
|
也可以直接抛出对应 Errors,并做如下定义,这样在之后的调用中可以直接抛出`InvokeConnectionError`等异常。
|
||||||
|
|
||||||
```python
|
```python
|
||||||
@property
|
@property
|
||||||
|
|||||||
@ -5,7 +5,7 @@ BAICHUAN_CONTEXT = "用户在与一个客观的助手对话。助手会尊重找
|
|||||||
CHAT_APP_COMPLETION_PROMPT_CONFIG = {
|
CHAT_APP_COMPLETION_PROMPT_CONFIG = {
|
||||||
"completion_prompt_config": {
|
"completion_prompt_config": {
|
||||||
"prompt": {
|
"prompt": {
|
||||||
"text": "{{#pre_prompt#}}\nHere is the chat histories between human and assistant, inside <histories></histories> XML tags.\n\n<histories>\n{{#histories#}}\n</histories>\n\n\nHuman: {{#query#}}\n\nAssistant: " # noqa: E501
|
"text": "{{#pre_prompt#}}\nHere are the chat histories between human and assistant, inside <histories></histories> XML tags.\n\n<histories>\n{{#histories#}}\n</histories>\n\n\nHuman: {{#query#}}\n\nAssistant: " # noqa: E501
|
||||||
},
|
},
|
||||||
"conversation_histories_role": {"user_prefix": "Human", "assistant_prefix": "Assistant"},
|
"conversation_histories_role": {"user_prefix": "Human", "assistant_prefix": "Assistant"},
|
||||||
},
|
},
|
||||||
|
|||||||
@ -375,7 +375,6 @@ class TidbOnQdrantVector(BaseVector):
|
|||||||
for result in results:
|
for result in results:
|
||||||
if result:
|
if result:
|
||||||
document = self._document_from_scored_point(result, Field.CONTENT_KEY.value, Field.METADATA_KEY.value)
|
document = self._document_from_scored_point(result, Field.CONTENT_KEY.value, Field.METADATA_KEY.value)
|
||||||
document.metadata["vector"] = result.vector
|
|
||||||
documents.append(document)
|
documents.append(document)
|
||||||
|
|
||||||
return documents
|
return documents
|
||||||
@ -394,6 +393,7 @@ class TidbOnQdrantVector(BaseVector):
|
|||||||
) -> Document:
|
) -> Document:
|
||||||
return Document(
|
return Document(
|
||||||
page_content=scored_point.payload.get(content_payload_key),
|
page_content=scored_point.payload.get(content_payload_key),
|
||||||
|
vector=scored_point.vector,
|
||||||
metadata=scored_point.payload.get(metadata_payload_key) or {},
|
metadata=scored_point.payload.get(metadata_payload_key) or {},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -24,7 +24,7 @@ class IfElseNode(BaseNode[IfElseNodeData]):
|
|||||||
"""
|
"""
|
||||||
node_inputs: dict[str, list] = {"conditions": []}
|
node_inputs: dict[str, list] = {"conditions": []}
|
||||||
|
|
||||||
process_datas: dict[str, list] = {"condition_results": []}
|
process_data: dict[str, list] = {"condition_results": []}
|
||||||
|
|
||||||
input_conditions = []
|
input_conditions = []
|
||||||
final_result = False
|
final_result = False
|
||||||
@ -40,7 +40,7 @@ class IfElseNode(BaseNode[IfElseNodeData]):
|
|||||||
operator=case.logical_operator,
|
operator=case.logical_operator,
|
||||||
)
|
)
|
||||||
|
|
||||||
process_datas["condition_results"].append(
|
process_data["condition_results"].append(
|
||||||
{
|
{
|
||||||
"group": case.model_dump(),
|
"group": case.model_dump(),
|
||||||
"results": group_result,
|
"results": group_result,
|
||||||
@ -65,7 +65,7 @@ class IfElseNode(BaseNode[IfElseNodeData]):
|
|||||||
|
|
||||||
selected_case_id = "true" if final_result else "false"
|
selected_case_id = "true" if final_result else "false"
|
||||||
|
|
||||||
process_datas["condition_results"].append(
|
process_data["condition_results"].append(
|
||||||
{"group": "default", "results": group_result, "final_result": final_result}
|
{"group": "default", "results": group_result, "final_result": final_result}
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -73,7 +73,7 @@ class IfElseNode(BaseNode[IfElseNodeData]):
|
|||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return NodeRunResult(
|
return NodeRunResult(
|
||||||
status=WorkflowNodeExecutionStatus.FAILED, inputs=node_inputs, process_data=process_datas, error=str(e)
|
status=WorkflowNodeExecutionStatus.FAILED, inputs=node_inputs, process_data=process_data, error=str(e)
|
||||||
)
|
)
|
||||||
|
|
||||||
outputs = {"result": final_result, "selected_case_id": selected_case_id}
|
outputs = {"result": final_result, "selected_case_id": selected_case_id}
|
||||||
@ -81,7 +81,7 @@ class IfElseNode(BaseNode[IfElseNodeData]):
|
|||||||
data = NodeRunResult(
|
data = NodeRunResult(
|
||||||
status=WorkflowNodeExecutionStatus.SUCCEEDED,
|
status=WorkflowNodeExecutionStatus.SUCCEEDED,
|
||||||
inputs=node_inputs,
|
inputs=node_inputs,
|
||||||
process_data=process_datas,
|
process_data=process_data,
|
||||||
edge_source_handle=selected_case_id or "false", # Use case ID or 'default'
|
edge_source_handle=selected_case_id or "false", # Use case ID or 'default'
|
||||||
outputs=outputs,
|
outputs=outputs,
|
||||||
)
|
)
|
||||||
|
|||||||
@ -117,7 +117,7 @@ class IterationNode(BaseNode[IterationNodeData]):
|
|||||||
variable_pool.add([self.node_id, "item"], iterator_list_value[0])
|
variable_pool.add([self.node_id, "item"], iterator_list_value[0])
|
||||||
|
|
||||||
# init graph engine
|
# init graph engine
|
||||||
from core.workflow.graph_engine.graph_engine import GraphEngine
|
from core.workflow.graph_engine.graph_engine import GraphEngine, GraphEngineThreadPool
|
||||||
|
|
||||||
graph_engine = GraphEngine(
|
graph_engine = GraphEngine(
|
||||||
tenant_id=self.tenant_id,
|
tenant_id=self.tenant_id,
|
||||||
@ -163,8 +163,7 @@ class IterationNode(BaseNode[IterationNodeData]):
|
|||||||
if self.node_data.is_parallel:
|
if self.node_data.is_parallel:
|
||||||
futures: list[Future] = []
|
futures: list[Future] = []
|
||||||
q = Queue()
|
q = Queue()
|
||||||
thread_pool = graph_engine.workflow_thread_pool_mapping[graph_engine.thread_pool_id]
|
thread_pool = GraphEngineThreadPool(max_workers=self.node_data.parallel_nums, max_submit_count=100)
|
||||||
thread_pool._max_workers = self.node_data.parallel_nums
|
|
||||||
for index, item in enumerate(iterator_list_value):
|
for index, item in enumerate(iterator_list_value):
|
||||||
future: Future = thread_pool.submit(
|
future: Future = thread_pool.submit(
|
||||||
self._run_single_iter_parallel,
|
self._run_single_iter_parallel,
|
||||||
|
|||||||
@ -815,7 +815,7 @@ class LLMNode(BaseNode[LLMNodeData]):
|
|||||||
"completion_model": {
|
"completion_model": {
|
||||||
"conversation_histories_role": {"user_prefix": "Human", "assistant_prefix": "Assistant"},
|
"conversation_histories_role": {"user_prefix": "Human", "assistant_prefix": "Assistant"},
|
||||||
"prompt": {
|
"prompt": {
|
||||||
"text": "Here is the chat histories between human and assistant, inside "
|
"text": "Here are the chat histories between human and assistant, inside "
|
||||||
"<histories></histories> XML tags.\n\n<histories>\n{{"
|
"<histories></histories> XML tags.\n\n<histories>\n{{"
|
||||||
"#histories#}}\n</histories>\n\n\nHuman: {{#sys.query#}}\n\nAssistant:",
|
"#histories#}}\n</histories>\n\n\nHuman: {{#sys.query#}}\n\nAssistant:",
|
||||||
"edition_type": "basic",
|
"edition_type": "basic",
|
||||||
|
|||||||
@ -98,7 +98,7 @@ Step 3: Structure the extracted parameters to JSON object as specified in <struc
|
|||||||
Step 4: Ensure that the JSON object is properly formatted and valid. The output should not contain any XML tags. Only the JSON object should be outputted.
|
Step 4: Ensure that the JSON object is properly formatted and valid. The output should not contain any XML tags. Only the JSON object should be outputted.
|
||||||
|
|
||||||
### Memory
|
### Memory
|
||||||
Here is the chat histories between human and assistant, inside <histories></histories> XML tags.
|
Here are the chat histories between human and assistant, inside <histories></histories> XML tags.
|
||||||
<histories>
|
<histories>
|
||||||
{histories}
|
{histories}
|
||||||
</histories>
|
</histories>
|
||||||
@ -125,7 +125,7 @@ CHAT_GENERATE_JSON_PROMPT = """You should always follow the instructions and out
|
|||||||
The structure of the JSON object you can found in the instructions.
|
The structure of the JSON object you can found in the instructions.
|
||||||
|
|
||||||
### Memory
|
### Memory
|
||||||
Here is the chat histories between human and assistant, inside <histories></histories> XML tags.
|
Here are the chat histories between human and assistant, inside <histories></histories> XML tags.
|
||||||
<histories>
|
<histories>
|
||||||
{histories}
|
{histories}
|
||||||
</histories>
|
</histories>
|
||||||
|
|||||||
@ -8,7 +8,7 @@ QUESTION_CLASSIFIER_SYSTEM_PROMPT = """
|
|||||||
### Constraint
|
### Constraint
|
||||||
DO NOT include anything other than the JSON array in your response.
|
DO NOT include anything other than the JSON array in your response.
|
||||||
### Memory
|
### Memory
|
||||||
Here is the chat histories between human and assistant, inside <histories></histories> XML tags.
|
Here are the chat histories between human and assistant, inside <histories></histories> XML tags.
|
||||||
<histories>
|
<histories>
|
||||||
{histories}
|
{histories}
|
||||||
</histories>
|
</histories>
|
||||||
@ -66,7 +66,7 @@ User:{{"input_text": ["bad service, slow to bring the food"], "categories": [{{"
|
|||||||
Assistant:{{"keywords": ["bad service", "slow", "food", "tip", "terrible", "waitresses"],"category_id": "f6ff5bc3-aca0-4e4a-8627-e760d0aca78f","category_name": "Experience"}}
|
Assistant:{{"keywords": ["bad service", "slow", "food", "tip", "terrible", "waitresses"],"category_id": "f6ff5bc3-aca0-4e4a-8627-e760d0aca78f","category_name": "Experience"}}
|
||||||
</example>
|
</example>
|
||||||
### Memory
|
### Memory
|
||||||
Here is the chat histories between human and assistant, inside <histories></histories> XML tags.
|
Here are the chat histories between human and assistant, inside <histories></histories> XML tags.
|
||||||
<histories>
|
<histories>
|
||||||
{histories}
|
{histories}
|
||||||
</histories>
|
</histories>
|
||||||
|
|||||||
@ -7,8 +7,8 @@ from .enums import InputType, Operation
|
|||||||
|
|
||||||
|
|
||||||
class OperationNotSupportedError(VariableOperatorNodeError):
|
class OperationNotSupportedError(VariableOperatorNodeError):
|
||||||
def __init__(self, *, operation: Operation, varialbe_type: str):
|
def __init__(self, *, operation: Operation, variable_type: str):
|
||||||
super().__init__(f"Operation {operation} is not supported for type {varialbe_type}")
|
super().__init__(f"Operation {operation} is not supported for type {variable_type}")
|
||||||
|
|
||||||
|
|
||||||
class InputTypeNotSupportedError(VariableOperatorNodeError):
|
class InputTypeNotSupportedError(VariableOperatorNodeError):
|
||||||
|
|||||||
@ -45,7 +45,7 @@ class VariableAssignerNode(BaseNode[VariableAssignerNodeData]):
|
|||||||
|
|
||||||
# Check if operation is supported
|
# Check if operation is supported
|
||||||
if not helpers.is_operation_supported(variable_type=variable.value_type, operation=item.operation):
|
if not helpers.is_operation_supported(variable_type=variable.value_type, operation=item.operation):
|
||||||
raise OperationNotSupportedError(operation=item.operation, varialbe_type=variable.value_type)
|
raise OperationNotSupportedError(operation=item.operation, variable_type=variable.value_type)
|
||||||
|
|
||||||
# Check if variable input is supported
|
# Check if variable input is supported
|
||||||
if item.input_type == InputType.VARIABLE and not helpers.is_variable_input_supported(
|
if item.input_type == InputType.VARIABLE and not helpers.is_variable_input_supported(
|
||||||
@ -156,4 +156,4 @@ class VariableAssignerNode(BaseNode[VariableAssignerNodeData]):
|
|||||||
case Operation.DIVIDE:
|
case Operation.DIVIDE:
|
||||||
return variable.value / value
|
return variable.value / value
|
||||||
case _:
|
case _:
|
||||||
raise OperationNotSupportedError(operation=operation, varialbe_type=variable.value_type)
|
raise OperationNotSupportedError(operation=operation, variable_type=variable.value_type)
|
||||||
|
|||||||
1867
api/poetry.lock
generated
1867
api/poetry.lock
generated
File diff suppressed because it is too large
Load Diff
@ -20,7 +20,7 @@ azure-ai-inference = "~1.0.0b3"
|
|||||||
azure-ai-ml = "~1.20.0"
|
azure-ai-ml = "~1.20.0"
|
||||||
azure-identity = "1.16.1"
|
azure-identity = "1.16.1"
|
||||||
beautifulsoup4 = "4.12.2"
|
beautifulsoup4 = "4.12.2"
|
||||||
boto3 = "1.35.17"
|
boto3 = "1.35.74"
|
||||||
bs4 = "~0.0.1"
|
bs4 = "~0.0.1"
|
||||||
cachetools = "~5.3.0"
|
cachetools = "~5.3.0"
|
||||||
celery = "~5.4.0"
|
celery = "~5.4.0"
|
||||||
|
|||||||
@ -5,7 +5,7 @@ import time
|
|||||||
import click
|
import click
|
||||||
from celery import shared_task
|
from celery import shared_task
|
||||||
|
|
||||||
from core.indexing_runner import DocumentIsPausedException
|
from core.indexing_runner import DocumentIsPausedError
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from extensions.ext_storage import storage
|
from extensions.ext_storage import storage
|
||||||
from models.dataset import Dataset, ExternalKnowledgeApis
|
from models.dataset import Dataset, ExternalKnowledgeApis
|
||||||
@ -86,7 +86,7 @@ def external_document_indexing_task(
|
|||||||
fg="green",
|
fg="green",
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
except DocumentIsPausedException as ex:
|
except DocumentIsPausedError as ex:
|
||||||
logging.info(click.style(str(ex), fg="yellow"))
|
logging.info(click.style(str(ex), fg="yellow"))
|
||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
|
|||||||
@ -2,7 +2,7 @@ version: '3'
|
|||||||
services:
|
services:
|
||||||
# API service
|
# API service
|
||||||
api:
|
api:
|
||||||
image: langgenius/dify-api:0.13.0
|
image: langgenius/dify-api:0.13.1
|
||||||
restart: always
|
restart: always
|
||||||
environment:
|
environment:
|
||||||
# Startup mode, 'api' starts the API server.
|
# Startup mode, 'api' starts the API server.
|
||||||
@ -227,7 +227,7 @@ services:
|
|||||||
# worker service
|
# worker service
|
||||||
# The Celery worker for processing the queue.
|
# The Celery worker for processing the queue.
|
||||||
worker:
|
worker:
|
||||||
image: langgenius/dify-api:0.13.0
|
image: langgenius/dify-api:0.13.1
|
||||||
restart: always
|
restart: always
|
||||||
environment:
|
environment:
|
||||||
CONSOLE_WEB_URL: ''
|
CONSOLE_WEB_URL: ''
|
||||||
@ -397,7 +397,7 @@ services:
|
|||||||
|
|
||||||
# Frontend web application.
|
# Frontend web application.
|
||||||
web:
|
web:
|
||||||
image: langgenius/dify-web:0.13.0
|
image: langgenius/dify-web:0.13.1
|
||||||
restart: always
|
restart: always
|
||||||
environment:
|
environment:
|
||||||
# The base URL of console application api server, refers to the Console base URL of WEB service if console domain is
|
# The base URL of console application api server, refers to the Console base URL of WEB service if console domain is
|
||||||
|
|||||||
@ -292,7 +292,7 @@ x-shared-env: &shared-api-worker-env
|
|||||||
services:
|
services:
|
||||||
# API service
|
# API service
|
||||||
api:
|
api:
|
||||||
image: langgenius/dify-api:0.13.0
|
image: langgenius/dify-api:0.13.1
|
||||||
restart: always
|
restart: always
|
||||||
environment:
|
environment:
|
||||||
# Use the shared environment variables.
|
# Use the shared environment variables.
|
||||||
@ -312,7 +312,7 @@ services:
|
|||||||
# worker service
|
# worker service
|
||||||
# The Celery worker for processing the queue.
|
# The Celery worker for processing the queue.
|
||||||
worker:
|
worker:
|
||||||
image: langgenius/dify-api:0.13.0
|
image: langgenius/dify-api:0.13.1
|
||||||
restart: always
|
restart: always
|
||||||
environment:
|
environment:
|
||||||
# Use the shared environment variables.
|
# Use the shared environment variables.
|
||||||
@ -331,7 +331,7 @@ services:
|
|||||||
|
|
||||||
# Frontend web application.
|
# Frontend web application.
|
||||||
web:
|
web:
|
||||||
image: langgenius/dify-web:0.13.0
|
image: langgenius/dify-web:0.13.1
|
||||||
restart: always
|
restart: always
|
||||||
environment:
|
environment:
|
||||||
CONSOLE_API_URL: ${CONSOLE_API_URL:-}
|
CONSOLE_API_URL: ${CONSOLE_API_URL:-}
|
||||||
|
|||||||
@ -166,7 +166,7 @@ const ExtraInfo = ({ isMobile, relatedApps }: IExtraInfoProps) => {
|
|||||||
className='inline-flex items-center text-xs text-primary-600 mt-2 cursor-pointer'
|
className='inline-flex items-center text-xs text-primary-600 mt-2 cursor-pointer'
|
||||||
href={
|
href={
|
||||||
locale === LanguagesSupported[1]
|
locale === LanguagesSupported[1]
|
||||||
? 'https://docs.dify.ai/v/zh-hans/guides/knowledge-base/integrate_knowledge_within_application'
|
? 'https://docs.dify.ai/v/zh-hans/guides/knowledge-base/integrate-knowledge-within-application'
|
||||||
: 'https://docs.dify.ai/guides/knowledge-base/integrate-knowledge-within-application'
|
: 'https://docs.dify.ai/guides/knowledge-base/integrate-knowledge-within-application'
|
||||||
}
|
}
|
||||||
target='_blank' rel='noopener noreferrer'
|
target='_blank' rel='noopener noreferrer'
|
||||||
|
|||||||
@ -29,6 +29,7 @@ import { useAppContext } from '@/context/app-context'
|
|||||||
import { ModelFeatureEnum } from '@/app/components/header/account-setting/model-provider-page/declarations'
|
import { ModelFeatureEnum } from '@/app/components/header/account-setting/model-provider-page/declarations'
|
||||||
import { useFeatures } from '@/app/components/base/features/hooks'
|
import { useFeatures } from '@/app/components/base/features/hooks'
|
||||||
import type { InputForm } from '@/app/components/base/chat/chat/type'
|
import type { InputForm } from '@/app/components/base/chat/chat/type'
|
||||||
|
import { getLastAnswer } from '@/app/components/base/chat/utils'
|
||||||
|
|
||||||
type ChatItemProps = {
|
type ChatItemProps = {
|
||||||
modelAndParameter: ModelAndParameter
|
modelAndParameter: ModelAndParameter
|
||||||
@ -101,7 +102,7 @@ const ChatItem: FC<ChatItemProps> = ({
|
|||||||
query: message,
|
query: message,
|
||||||
inputs,
|
inputs,
|
||||||
model_config: configData,
|
model_config: configData,
|
||||||
parent_message_id: chatListRef.current.at(-1)?.id || null,
|
parent_message_id: getLastAnswer(chatListRef.current)?.id || null,
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((config.file_upload as any).enabled && files?.length && supportVision)
|
if ((config.file_upload as any).enabled && files?.length && supportVision)
|
||||||
|
|||||||
@ -334,7 +334,7 @@ const GenerationItem: FC<IGenerationItemProps> = ({
|
|||||||
</SimpleBtn>
|
</SimpleBtn>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
{(currentTab === 'RESULT' || !isWorkflow) && (
|
{((currentTab === 'RESULT' && workflowProcessData?.resultText) || !isWorkflow) && (
|
||||||
<SimpleBtn
|
<SimpleBtn
|
||||||
isDisabled={isError || !messageId}
|
isDisabled={isError || !messageId}
|
||||||
className={cn(isMobile && '!px-1.5', 'space-x-1')}
|
className={cn(isMobile && '!px-1.5', 'space-x-1')}
|
||||||
|
|||||||
@ -27,15 +27,15 @@ const ResultTab = ({
|
|||||||
onCurrentTabChange(tab)
|
onCurrentTabChange(tab)
|
||||||
}
|
}
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (data?.resultText)
|
if (data?.resultText || !!data?.files?.length)
|
||||||
switchTab('RESULT')
|
switchTab('RESULT')
|
||||||
else
|
else
|
||||||
switchTab('DETAIL')
|
switchTab('DETAIL')
|
||||||
}, [data?.resultText])
|
}, [data?.files?.length, data?.resultText])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='grow relative flex flex-col'>
|
<div className='grow relative flex flex-col'>
|
||||||
{data?.resultText && (
|
{(data?.resultText || !!data?.files?.length) && (
|
||||||
<div className='shrink-0 flex items-center mb-2 border-b-[0.5px] border-[rgba(0,0,0,0.05)]'>
|
<div className='shrink-0 flex items-center mb-2 border-b-[0.5px] border-[rgba(0,0,0,0.05)]'>
|
||||||
<div
|
<div
|
||||||
className={cn(
|
className={cn(
|
||||||
@ -56,14 +56,21 @@ const ResultTab = ({
|
|||||||
<div className={cn('grow bg-white')}>
|
<div className={cn('grow bg-white')}>
|
||||||
{currentTab === 'RESULT' && (
|
{currentTab === 'RESULT' && (
|
||||||
<>
|
<>
|
||||||
<Markdown content={data?.resultText || ''} />
|
{data?.resultText && <Markdown content={data?.resultText || ''} />}
|
||||||
{!!data?.files?.length && (
|
{!!data?.files?.length && (
|
||||||
<FileList
|
<div className='flex flex-col gap-2'>
|
||||||
files={data?.files}
|
{data?.files.map((item: any) => (
|
||||||
showDeleteAction={false}
|
<div key={item.varName} className='flex flex-col gap-1 system-xs-regular'>
|
||||||
showDownloadAction
|
<div className='py-1 text-text-tertiary '>{item.varName}</div>
|
||||||
canPreview
|
<FileList
|
||||||
/>
|
files={item.list}
|
||||||
|
showDeleteAction={false}
|
||||||
|
showDownloadAction
|
||||||
|
canPreview
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
)}
|
)}
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
import React, { useState } from 'react'
|
import React, { useMemo, useState } from 'react'
|
||||||
|
import { useTranslation } from 'react-i18next'
|
||||||
import { RiArrowRightSLine } from '@remixicon/react'
|
import { RiArrowRightSLine } from '@remixicon/react'
|
||||||
import FileImageRender from './file-image-render'
|
import FileImageRender from './file-image-render'
|
||||||
import FileTypeIcon from './file-type-icon'
|
import FileTypeIcon from './file-type-icon'
|
||||||
@ -12,23 +13,36 @@ import { SupportUploadFileTypes } from '@/app/components/workflow/types'
|
|||||||
import cn from '@/utils/classnames'
|
import cn from '@/utils/classnames'
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
fileList: FileEntity[]
|
fileList: {
|
||||||
|
varName: string
|
||||||
|
list: FileEntity[]
|
||||||
|
}[]
|
||||||
|
isExpanded?: boolean
|
||||||
|
noBorder?: boolean
|
||||||
|
noPadding?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
const FileListInLog = ({ fileList }: Props) => {
|
const FileListInLog = ({ fileList, isExpanded = false, noBorder = false, noPadding = false }: Props) => {
|
||||||
const [expanded, setExpanded] = useState(false)
|
const { t } = useTranslation()
|
||||||
|
const [expanded, setExpanded] = useState(isExpanded)
|
||||||
|
const fullList = useMemo(() => {
|
||||||
|
return fileList.reduce((acc: FileEntity[], { list }) => {
|
||||||
|
return [...acc, ...list]
|
||||||
|
}, [])
|
||||||
|
}, [fileList])
|
||||||
|
|
||||||
if (!fileList.length)
|
if (!fileList.length)
|
||||||
return null
|
return null
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={cn('border-t border-divider-subtle px-3 py-2', expanded && 'py-3')}>
|
<div className={cn('px-3 py-2', expanded && 'py-3', !noBorder && 'border-t border-divider-subtle', noPadding && '!p-0')}>
|
||||||
<div className='flex justify-between gap-1'>
|
<div className='flex justify-between gap-1'>
|
||||||
{expanded && (
|
{expanded && (
|
||||||
<div></div>
|
<div className='grow py-1 text-text-secondary system-xs-semibold-uppercase cursor-pointer' onClick={() => setExpanded(!expanded)}>{t('appLog.runDetail.fileListLabel')}</div>
|
||||||
)}
|
)}
|
||||||
{!expanded && (
|
{!expanded && (
|
||||||
<div className='flex'>
|
<div className='flex gap-1'>
|
||||||
{fileList.map((file) => {
|
{fullList.map((file) => {
|
||||||
const { id, name, type, supportFileType, base64Url, url } = file
|
const { id, name, type, supportFileType, base64Url, url } = file
|
||||||
const isImageFile = supportFileType === SupportUploadFileTypes.image
|
const isImageFile = supportFileType === SupportUploadFileTypes.image
|
||||||
return (
|
return (
|
||||||
@ -63,19 +77,25 @@ const FileListInLog = ({ fileList }: Props) => {
|
|||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
<div className='flex items-center gap-1 cursor-pointer' onClick={() => setExpanded(!expanded)}>
|
<div className='flex items-center gap-1 cursor-pointer' onClick={() => setExpanded(!expanded)}>
|
||||||
{!expanded && <div className='text-text-tertiary system-xs-medium-uppercase'>DETAIL</div>}
|
{!expanded && <div className='text-text-tertiary system-xs-medium-uppercase'>{t('appLog.runDetail.fileListDetail')}</div>}
|
||||||
<RiArrowRightSLine className={cn('w-4 h-4 text-text-tertiary', expanded && 'rotate-90')} />
|
<RiArrowRightSLine className={cn('w-4 h-4 text-text-tertiary', expanded && 'rotate-90')} />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{expanded && (
|
{expanded && (
|
||||||
<div className='flex flex-col gap-1'>
|
<div className='flex flex-col gap-3'>
|
||||||
{fileList.map(file => (
|
{fileList.map(item => (
|
||||||
<FileItem
|
<div key={item.varName} className='flex flex-col gap-1 system-xs-regular'>
|
||||||
key={file.id}
|
<div className='py-1 text-text-tertiary '>{item.varName}</div>
|
||||||
file={file}
|
{item.list.map(file => (
|
||||||
showDeleteAction={false}
|
<FileItem
|
||||||
showDownloadAction
|
key={file.id}
|
||||||
/>
|
file={file}
|
||||||
|
showDeleteAction={false}
|
||||||
|
showDownloadAction
|
||||||
|
canPreview
|
||||||
|
/>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@ -1,12 +1,15 @@
|
|||||||
import {
|
import {
|
||||||
memo,
|
memo,
|
||||||
|
useState,
|
||||||
} from 'react'
|
} from 'react'
|
||||||
import {
|
import {
|
||||||
RiDeleteBinLine,
|
RiDeleteBinLine,
|
||||||
RiDownloadLine,
|
RiDownloadLine,
|
||||||
|
RiEyeLine,
|
||||||
} from '@remixicon/react'
|
} from '@remixicon/react'
|
||||||
import FileTypeIcon from '../file-type-icon'
|
import FileTypeIcon from '../file-type-icon'
|
||||||
import {
|
import {
|
||||||
|
downloadFile,
|
||||||
fileIsUploaded,
|
fileIsUploaded,
|
||||||
getFileAppearanceType,
|
getFileAppearanceType,
|
||||||
getFileExtension,
|
getFileExtension,
|
||||||
@ -19,6 +22,7 @@ import { formatFileSize } from '@/utils/format'
|
|||||||
import cn from '@/utils/classnames'
|
import cn from '@/utils/classnames'
|
||||||
import { ReplayLine } from '@/app/components/base/icons/src/vender/other'
|
import { ReplayLine } from '@/app/components/base/icons/src/vender/other'
|
||||||
import { SupportUploadFileTypes } from '@/app/components/workflow/types'
|
import { SupportUploadFileTypes } from '@/app/components/workflow/types'
|
||||||
|
import ImagePreview from '@/app/components/base/image-uploader/image-preview'
|
||||||
|
|
||||||
type FileInAttachmentItemProps = {
|
type FileInAttachmentItemProps = {
|
||||||
file: FileEntity
|
file: FileEntity
|
||||||
@ -26,6 +30,7 @@ type FileInAttachmentItemProps = {
|
|||||||
showDownloadAction?: boolean
|
showDownloadAction?: boolean
|
||||||
onRemove?: (fileId: string) => void
|
onRemove?: (fileId: string) => void
|
||||||
onReUpload?: (fileId: string) => void
|
onReUpload?: (fileId: string) => void
|
||||||
|
canPreview?: boolean
|
||||||
}
|
}
|
||||||
const FileInAttachmentItem = ({
|
const FileInAttachmentItem = ({
|
||||||
file,
|
file,
|
||||||
@ -33,96 +38,116 @@ const FileInAttachmentItem = ({
|
|||||||
showDownloadAction = true,
|
showDownloadAction = true,
|
||||||
onRemove,
|
onRemove,
|
||||||
onReUpload,
|
onReUpload,
|
||||||
|
canPreview,
|
||||||
}: FileInAttachmentItemProps) => {
|
}: FileInAttachmentItemProps) => {
|
||||||
const { id, name, type, progress, supportFileType, base64Url, url, isRemote } = file
|
const { id, name, type, progress, supportFileType, base64Url, url, isRemote } = file
|
||||||
const ext = getFileExtension(name, type, isRemote)
|
const ext = getFileExtension(name, type, isRemote)
|
||||||
const isImageFile = supportFileType === SupportUploadFileTypes.image
|
const isImageFile = supportFileType === SupportUploadFileTypes.image
|
||||||
|
const [imagePreviewUrl, setImagePreviewUrl] = useState('')
|
||||||
return (
|
return (
|
||||||
<div className={cn(
|
<>
|
||||||
'flex items-center pr-3 h-12 rounded-lg border-[0.5px] border-components-panel-border bg-components-panel-on-panel-item-bg shadow-xs',
|
<div className={cn(
|
||||||
progress === -1 && 'bg-state-destructive-hover border-state-destructive-border',
|
'flex items-center pr-3 h-12 rounded-lg border-[0.5px] border-components-panel-border bg-components-panel-on-panel-item-bg shadow-xs',
|
||||||
)}>
|
progress === -1 && 'bg-state-destructive-hover border-state-destructive-border',
|
||||||
<div className='flex items-center justify-center w-12 h-12'>
|
)}>
|
||||||
{
|
<div className='flex items-center justify-center w-12 h-12'>
|
||||||
isImageFile && (
|
{
|
||||||
<FileImageRender
|
isImageFile && (
|
||||||
className='w-8 h-8'
|
<FileImageRender
|
||||||
imageUrl={base64Url || url || ''}
|
className='w-8 h-8'
|
||||||
/>
|
imageUrl={base64Url || url || ''}
|
||||||
)
|
/>
|
||||||
}
|
)
|
||||||
{
|
}
|
||||||
!isImageFile && (
|
{
|
||||||
<FileTypeIcon
|
!isImageFile && (
|
||||||
type={getFileAppearanceType(name, type)}
|
<FileTypeIcon
|
||||||
size='lg'
|
type={getFileAppearanceType(name, type)}
|
||||||
/>
|
size='lg'
|
||||||
)
|
/>
|
||||||
}
|
)
|
||||||
</div>
|
}
|
||||||
<div className='grow w-0 mr-1'>
|
|
||||||
<div
|
|
||||||
className='flex items-center mb-0.5 system-xs-medium text-text-secondary truncate'
|
|
||||||
title={file.name}
|
|
||||||
>
|
|
||||||
<div className='truncate'>{name}</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div className='flex items-center system-2xs-medium-uppercase text-text-tertiary'>
|
<div className='grow w-0 mr-1'>
|
||||||
|
<div
|
||||||
|
className='flex items-center mb-0.5 system-xs-medium text-text-secondary truncate'
|
||||||
|
title={file.name}
|
||||||
|
>
|
||||||
|
<div className='truncate'>{name}</div>
|
||||||
|
</div>
|
||||||
|
<div className='flex items-center system-2xs-medium-uppercase text-text-tertiary'>
|
||||||
|
{
|
||||||
|
ext && (
|
||||||
|
<span>{ext.toLowerCase()}</span>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
{
|
||||||
|
ext && (
|
||||||
|
<span className='mx-1 system-2xs-medium'>•</span>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
{
|
||||||
|
!!file.size && (
|
||||||
|
<span>{formatFileSize(file.size)}</span>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className='shrink-0 flex items-center'>
|
||||||
{
|
{
|
||||||
ext && (
|
progress >= 0 && !fileIsUploaded(file) && (
|
||||||
<span>{ext.toLowerCase()}</span>
|
<ProgressCircle
|
||||||
|
className='mr-2.5'
|
||||||
|
percentage={progress}
|
||||||
|
/>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
ext && (
|
progress === -1 && (
|
||||||
<span className='mx-1 system-2xs-medium'>•</span>
|
<ActionButton
|
||||||
|
className='mr-1'
|
||||||
|
onClick={() => onReUpload?.(id)}
|
||||||
|
>
|
||||||
|
<ReplayLine className='w-4 h-4 text-text-tertiary' />
|
||||||
|
</ActionButton>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
!!file.size && (
|
showDeleteAction && (
|
||||||
<span>{formatFileSize(file.size)}</span>
|
<ActionButton onClick={() => onRemove?.(id)}>
|
||||||
|
<RiDeleteBinLine className='w-4 h-4' />
|
||||||
|
</ActionButton>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
{
|
||||||
|
canPreview && isImageFile && (
|
||||||
|
<ActionButton className='mr-1' onClick={() => setImagePreviewUrl(url || '')}>
|
||||||
|
<RiEyeLine className='w-4 h-4' />
|
||||||
|
</ActionButton>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
{
|
||||||
|
showDownloadAction && (
|
||||||
|
<ActionButton onClick={(e) => {
|
||||||
|
e.stopPropagation()
|
||||||
|
downloadFile(url || base64Url || '', name)
|
||||||
|
}}>
|
||||||
|
<RiDownloadLine className='w-4 h-4' />
|
||||||
|
</ActionButton>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className='shrink-0 flex items-center'>
|
{
|
||||||
{
|
imagePreviewUrl && canPreview && (
|
||||||
progress >= 0 && !fileIsUploaded(file) && (
|
<ImagePreview
|
||||||
<ProgressCircle
|
title={name}
|
||||||
className='mr-2.5'
|
url={imagePreviewUrl}
|
||||||
percentage={progress}
|
onCancel={() => setImagePreviewUrl('')}
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
{
|
</>
|
||||||
progress === -1 && (
|
|
||||||
<ActionButton
|
|
||||||
className='mr-1'
|
|
||||||
onClick={() => onReUpload?.(id)}
|
|
||||||
>
|
|
||||||
<ReplayLine className='w-4 h-4 text-text-tertiary' />
|
|
||||||
</ActionButton>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
{
|
|
||||||
showDeleteAction && (
|
|
||||||
<ActionButton onClick={() => onRemove?.(id)}>
|
|
||||||
<RiDeleteBinLine className='w-4 h-4' />
|
|
||||||
</ActionButton>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
{
|
|
||||||
showDownloadAction && (
|
|
||||||
<ActionButton
|
|
||||||
size='xs'
|
|
||||||
>
|
|
||||||
<RiDownloadLine className='w-3.5 h-3.5 text-text-tertiary' />
|
|
||||||
</ActionButton>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -31,7 +31,7 @@ const FileItem = ({
|
|||||||
onRemove,
|
onRemove,
|
||||||
onReUpload,
|
onReUpload,
|
||||||
}: FileItemProps) => {
|
}: FileItemProps) => {
|
||||||
const { id, name, type, progress, url, isRemote } = file
|
const { id, name, type, progress, url, base64Url, isRemote } = file
|
||||||
const ext = getFileExtension(name, type, isRemote)
|
const ext = getFileExtension(name, type, isRemote)
|
||||||
const uploadError = progress === -1
|
const uploadError = progress === -1
|
||||||
|
|
||||||
@ -86,7 +86,7 @@ const FileItem = ({
|
|||||||
className='hidden group-hover/file-item:flex absolute -right-1 -top-1'
|
className='hidden group-hover/file-item:flex absolute -right-1 -top-1'
|
||||||
onClick={(e) => {
|
onClick={(e) => {
|
||||||
e.stopPropagation()
|
e.stopPropagation()
|
||||||
downloadFile(url || '', name)
|
downloadFile(url || base64Url || '', name)
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<RiDownloadLine className='w-3.5 h-3.5 text-text-tertiary' />
|
<RiDownloadLine className='w-3.5 h-3.5 text-text-tertiary' />
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
import mime from 'mime'
|
import mime from 'mime'
|
||||||
import { flatten } from 'lodash-es'
|
|
||||||
import { FileAppearanceTypeEnum } from './types'
|
import { FileAppearanceTypeEnum } from './types'
|
||||||
import type { FileEntity } from './types'
|
import type { FileEntity } from './types'
|
||||||
import { upload } from '@/service/base'
|
import { upload } from '@/service/base'
|
||||||
@ -158,12 +157,22 @@ export const isAllowedFileExtension = (fileName: string, fileMimetype: string, a
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const getFilesInLogs = (rawData: any) => {
|
export const getFilesInLogs = (rawData: any) => {
|
||||||
const originalFiles = flatten(Object.keys(rawData || {}).map((key) => {
|
const result = Object.keys(rawData || {}).map((key) => {
|
||||||
if (typeof rawData[key] === 'object' || Array.isArray(rawData[key]))
|
if (typeof rawData[key] === 'object' && rawData[key].dify_model_identity === '__dify__file__') {
|
||||||
return rawData[key]
|
return {
|
||||||
|
varName: key,
|
||||||
|
list: getProcessedFilesFromResponse([rawData[key]]),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (Array.isArray(rawData[key]) && rawData[key].some(item => item.dify_model_identity === '__dify__file__')) {
|
||||||
|
return {
|
||||||
|
varName: key,
|
||||||
|
list: getProcessedFilesFromResponse(rawData[key]),
|
||||||
|
}
|
||||||
|
}
|
||||||
return undefined
|
return undefined
|
||||||
}).filter(Boolean)).filter(item => item?.model_identity === '__dify__file__')
|
}).filter(Boolean)
|
||||||
return getProcessedFilesFromResponse(originalFiles)
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
export const fileIsUploaded = (file: FileEntity) => {
|
export const fileIsUploaded = (file: FileEntity) => {
|
||||||
|
|||||||
@ -53,8 +53,7 @@ const ImageGallery: FC<Props> = ({
|
|||||||
imagePreviewUrl && (
|
imagePreviewUrl && (
|
||||||
<ImagePreview
|
<ImagePreview
|
||||||
url={imagePreviewUrl}
|
url={imagePreviewUrl}
|
||||||
onCancel={() => setImagePreviewUrl('')}
|
onCancel={() => setImagePreviewUrl('')} title={''} />
|
||||||
/>
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -8,8 +8,7 @@ import RemarkGfm from 'remark-gfm'
|
|||||||
import RehypeRaw from 'rehype-raw'
|
import RehypeRaw from 'rehype-raw'
|
||||||
import SyntaxHighlighter from 'react-syntax-highlighter'
|
import SyntaxHighlighter from 'react-syntax-highlighter'
|
||||||
import { atelierHeathLight } from 'react-syntax-highlighter/dist/esm/styles/hljs'
|
import { atelierHeathLight } from 'react-syntax-highlighter/dist/esm/styles/hljs'
|
||||||
import type { RefObject } from 'react'
|
import { Component, memo, useMemo, useRef, useState } from 'react'
|
||||||
import { Component, memo, useEffect, useMemo, useRef, useState } from 'react'
|
|
||||||
import type { CodeComponent } from 'react-markdown/lib/ast-to-react'
|
import type { CodeComponent } from 'react-markdown/lib/ast-to-react'
|
||||||
import cn from '@/utils/classnames'
|
import cn from '@/utils/classnames'
|
||||||
import CopyBtn from '@/app/components/base/copy-btn'
|
import CopyBtn from '@/app/components/base/copy-btn'
|
||||||
@ -77,29 +76,6 @@ export function PreCode(props: { children: any }) {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line unused-imports/no-unused-vars
|
|
||||||
const useLazyLoad = (ref: RefObject<Element>): boolean => {
|
|
||||||
const [isIntersecting, setIntersecting] = useState<boolean>(false)
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
const observer = new IntersectionObserver(([entry]) => {
|
|
||||||
if (entry.isIntersecting) {
|
|
||||||
setIntersecting(true)
|
|
||||||
observer.disconnect()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
if (ref.current)
|
|
||||||
observer.observe(ref.current)
|
|
||||||
|
|
||||||
return () => {
|
|
||||||
observer.disconnect()
|
|
||||||
}
|
|
||||||
}, [ref])
|
|
||||||
|
|
||||||
return isIntersecting
|
|
||||||
}
|
|
||||||
|
|
||||||
// **Add code block
|
// **Add code block
|
||||||
// Avoid error #185 (Maximum update depth exceeded.
|
// Avoid error #185 (Maximum update depth exceeded.
|
||||||
// This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate.
|
// This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate.
|
||||||
@ -123,7 +99,7 @@ const CodeBlock: CodeComponent = memo(({ inline, className, children, ...props }
|
|||||||
try {
|
try {
|
||||||
return JSON.parse(String(children).replace(/\n$/, ''))
|
return JSON.parse(String(children).replace(/\n$/, ''))
|
||||||
}
|
}
|
||||||
catch (error) {}
|
catch (error) { }
|
||||||
}
|
}
|
||||||
return JSON.parse('{"title":{"text":"ECharts error - Wrong JSON format."}}')
|
return JSON.parse('{"title":{"text":"ECharts error - Wrong JSON format."}}')
|
||||||
}, [language, children])
|
}, [language, children])
|
||||||
@ -181,7 +157,7 @@ const CodeBlock: CodeComponent = memo(({ inline, className, children, ...props }
|
|||||||
>
|
>
|
||||||
<div className='text-[13px] text-gray-500 font-normal'>{languageShowName}</div>
|
<div className='text-[13px] text-gray-500 font-normal'>{languageShowName}</div>
|
||||||
<div style={{ display: 'flex' }}>
|
<div style={{ display: 'flex' }}>
|
||||||
{(['mermaid', 'svg']).includes(language!) && <SVGBtn isSVG={isSVG} setIsSVG={setIsSVG}/>}
|
{(['mermaid', 'svg']).includes(language!) && <SVGBtn isSVG={isSVG} setIsSVG={setIsSVG} />}
|
||||||
<CopyBtn
|
<CopyBtn
|
||||||
className='mr-1'
|
className='mr-1'
|
||||||
value={String(children).replace(/\n$/, '')}
|
value={String(children).replace(/\n$/, '')}
|
||||||
@ -261,7 +237,7 @@ export function Markdown(props: { content: string; className?: string }) {
|
|||||||
() => {
|
() => {
|
||||||
return (tree) => {
|
return (tree) => {
|
||||||
const iterate = (node: any) => {
|
const iterate = (node: any) => {
|
||||||
if (node.type === 'element' && !node.properties?.src && node.properties?.ref && node.properties.ref.startsWith('{') && node.properties.ref.endsWith('}'))
|
if (node.type === 'element' && node.properties?.ref)
|
||||||
delete node.properties.ref
|
delete node.properties.ref
|
||||||
|
|
||||||
if (node.children)
|
if (node.children)
|
||||||
|
|||||||
@ -1,24 +1,18 @@
|
|||||||
import React, { useEffect, useRef, useState } from 'react'
|
import React, { useCallback, useEffect, useRef, useState } from 'react'
|
||||||
import mermaid from 'mermaid'
|
import mermaid from 'mermaid'
|
||||||
import { usePrevious } from 'ahooks'
|
import { usePrevious } from 'ahooks'
|
||||||
import CryptoJS from 'crypto-js'
|
import CryptoJS from 'crypto-js'
|
||||||
|
import { useTranslation } from 'react-i18next'
|
||||||
import { ExclamationTriangleIcon } from '@heroicons/react/24/outline'
|
import { ExclamationTriangleIcon } from '@heroicons/react/24/outline'
|
||||||
import LoadingAnim from '@/app/components/base/chat/chat/loading-anim'
|
import LoadingAnim from '@/app/components/base/chat/chat/loading-anim'
|
||||||
|
import cn from '@/utils/classnames'
|
||||||
|
import ImagePreview from '@/app/components/base/image-uploader/image-preview'
|
||||||
|
|
||||||
let mermaidAPI: any
|
let mermaidAPI: any
|
||||||
mermaidAPI = null
|
mermaidAPI = null
|
||||||
|
|
||||||
if (typeof window !== 'undefined') {
|
if (typeof window !== 'undefined')
|
||||||
mermaid.initialize({
|
|
||||||
startOnLoad: true,
|
|
||||||
theme: 'default',
|
|
||||||
flowchart: {
|
|
||||||
htmlLabels: true,
|
|
||||||
useMaxWidth: true,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
mermaidAPI = mermaid.mermaidAPI
|
mermaidAPI = mermaid.mermaidAPI
|
||||||
}
|
|
||||||
|
|
||||||
const style = {
|
const style = {
|
||||||
minWidth: '480px',
|
minWidth: '480px',
|
||||||
@ -40,14 +34,21 @@ const svgToBase64 = (svgGraph: string) => {
|
|||||||
const Flowchart = React.forwardRef((props: {
|
const Flowchart = React.forwardRef((props: {
|
||||||
PrimitiveCode: string
|
PrimitiveCode: string
|
||||||
}, ref) => {
|
}, ref) => {
|
||||||
|
const { t } = useTranslation()
|
||||||
const [svgCode, setSvgCode] = useState(null)
|
const [svgCode, setSvgCode] = useState(null)
|
||||||
|
const [look, setLook] = useState<'classic' | 'handDrawn'>('classic')
|
||||||
|
|
||||||
const chartId = useRef(`flowchart_${CryptoJS.MD5(props.PrimitiveCode).toString()}`)
|
const chartId = useRef(`flowchart_${CryptoJS.MD5(props.PrimitiveCode).toString()}`)
|
||||||
const prevPrimitiveCode = usePrevious(props.PrimitiveCode)
|
const prevPrimitiveCode = usePrevious(props.PrimitiveCode)
|
||||||
const [isLoading, setIsLoading] = useState(true)
|
const [isLoading, setIsLoading] = useState(true)
|
||||||
const timeRef = useRef<NodeJS.Timeout>()
|
const timeRef = useRef<NodeJS.Timeout>()
|
||||||
const [errMsg, setErrMsg] = useState('')
|
const [errMsg, setErrMsg] = useState('')
|
||||||
|
const [imagePreviewUrl, setImagePreviewUrl] = useState('')
|
||||||
|
|
||||||
|
const renderFlowchart = useCallback(async (PrimitiveCode: string) => {
|
||||||
|
setSvgCode(null)
|
||||||
|
setIsLoading(true)
|
||||||
|
|
||||||
const renderFlowchart = async (PrimitiveCode: string) => {
|
|
||||||
try {
|
try {
|
||||||
if (typeof window !== 'undefined' && mermaidAPI) {
|
if (typeof window !== 'undefined' && mermaidAPI) {
|
||||||
const svgGraph = await mermaidAPI.render(chartId.current, PrimitiveCode)
|
const svgGraph = await mermaidAPI.render(chartId.current, PrimitiveCode)
|
||||||
@ -64,10 +65,28 @@ const Flowchart = React.forwardRef((props: {
|
|||||||
setErrMsg((error as Error).message)
|
setErrMsg((error as Error).message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}, [props.PrimitiveCode])
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (typeof window !== 'undefined') {
|
||||||
|
mermaid.initialize({
|
||||||
|
startOnLoad: true,
|
||||||
|
theme: 'neutral',
|
||||||
|
look,
|
||||||
|
flowchart: {
|
||||||
|
htmlLabels: true,
|
||||||
|
useMaxWidth: true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
localStorage.removeItem(chartId.current)
|
||||||
|
renderFlowchart(props.PrimitiveCode)
|
||||||
|
}
|
||||||
|
}, [look])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const cachedSvg: any = localStorage.getItem(chartId.current)
|
const cachedSvg: any = localStorage.getItem(chartId.current)
|
||||||
|
|
||||||
if (cachedSvg) {
|
if (cachedSvg) {
|
||||||
setSvgCode(cachedSvg)
|
setSvgCode(cachedSvg)
|
||||||
setIsLoading(false)
|
setIsLoading(false)
|
||||||
@ -85,24 +104,51 @@ const Flowchart = React.forwardRef((props: {
|
|||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
// @ts-expect-error
|
// @ts-expect-error
|
||||||
<div ref={ref}>
|
<div ref={ref}>
|
||||||
|
<div className="msh-segmented msh-segmented-sm css-23bs09 css-var-r1">
|
||||||
|
<div className="msh-segmented-group">
|
||||||
|
<label className="msh-segmented-item flex items-center space-x-1 m-2 w-[200px]">
|
||||||
|
<div key='classic'
|
||||||
|
className={cn('flex items-center justify-center mb-4 w-[calc((100%-8px)/2)] h-8 rounded-lg border border-components-option-card-option-border bg-components-option-card-option-bg cursor-pointer system-sm-medium text-text-secondary',
|
||||||
|
look === 'classic' && 'border-[1.5px] border-components-option-card-option-selected-border bg-components-option-card-option-selected-bg text-text-primary',
|
||||||
|
)}
|
||||||
|
|
||||||
|
onClick={() => setLook('classic')}
|
||||||
|
>
|
||||||
|
<div className="msh-segmented-item-label">{t('app.mermaid.classic')}</div>
|
||||||
|
</div>
|
||||||
|
<div key='handDrawn'
|
||||||
|
className={cn(
|
||||||
|
'flex items-center justify-center mb-4 w-[calc((100%-8px)/2)] h-8 rounded-lg border border-components-option-card-option-border bg-components-option-card-option-bg cursor-pointer system-sm-medium text-text-secondary',
|
||||||
|
look === 'handDrawn' && 'border-[1.5px] border-components-option-card-option-selected-border bg-components-option-card-option-selected-bg text-text-primary',
|
||||||
|
)}
|
||||||
|
onClick={() => setLook('handDrawn')}
|
||||||
|
>
|
||||||
|
<div className="msh-segmented-item-label">{t('app.mermaid.handDrawn')}</div>
|
||||||
|
</div>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{
|
{
|
||||||
svgCode
|
svgCode
|
||||||
&& <div className="mermaid" style={style}>
|
&& <div className="mermaid cursor-pointer" style={style} onClick={() => setImagePreviewUrl(svgCode)}>
|
||||||
{svgCode && <img src={svgCode} style={{ width: '100%', height: 'auto' }} alt="Mermaid chart" />}
|
{svgCode && <img src={svgCode} style={{ width: '100%', height: 'auto' }} alt="mermaid_chart" />}
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
{isLoading
|
{isLoading
|
||||||
&& <div className='py-4 px-[26px]'>
|
&& <div className='py-4 px-[26px]'>
|
||||||
<LoadingAnim type='text' />
|
<LoadingAnim type='text'/>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
errMsg
|
errMsg
|
||||||
&& <div className='py-4 px-[26px]'>
|
&& <div className='py-4 px-[26px]'>
|
||||||
<ExclamationTriangleIcon className='w-6 h-6 text-red-500' />
|
<ExclamationTriangleIcon className='w-6 h-6 text-red-500'/>
|
||||||
|
|
||||||
{errMsg}
|
{errMsg}
|
||||||
</div>
|
</div>
|
||||||
|
}
|
||||||
|
{
|
||||||
|
imagePreviewUrl && (<ImagePreview title='mermaid_chart' url={imagePreviewUrl} onCancel={() => setImagePreviewUrl('')} />)
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
|||||||
47
web/app/components/base/skeleton/index.tsx
Normal file
47
web/app/components/base/skeleton/index.tsx
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
import type { ComponentProps, FC } from 'react'
|
||||||
|
import classNames from '@/utils/classnames'
|
||||||
|
|
||||||
|
type SkeletonProps = ComponentProps<'div'>
|
||||||
|
|
||||||
|
export const SkeletonContanier: FC<SkeletonProps> = (props) => {
|
||||||
|
const { className, children, ...rest } = props
|
||||||
|
return (
|
||||||
|
<div className={classNames('flex flex-col gap-1', className)} {...rest}>
|
||||||
|
{children}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export const SkeletonRow: FC<SkeletonProps> = (props) => {
|
||||||
|
const { className, children, ...rest } = props
|
||||||
|
return (
|
||||||
|
<div className={classNames('flex items-center gap-2', className)} {...rest}>
|
||||||
|
{children}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export const SkeletonRectangle: FC<SkeletonProps> = (props) => {
|
||||||
|
const { className, children, ...rest } = props
|
||||||
|
return (
|
||||||
|
<div className={classNames('h-2 rounded-sm opacity-20 bg-text-tertiary my-1', className)} {...rest}>
|
||||||
|
{children}
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export const SkeletonPoint: FC = () =>
|
||||||
|
<div className='text-text-quaternary text-xs font-medium'>·</div>
|
||||||
|
|
||||||
|
/** Usage
|
||||||
|
* <SkeletonContanier>
|
||||||
|
* <SkeletonRow>
|
||||||
|
* <SkeletonRectangle className="w-96" />
|
||||||
|
* <SkeletonPoint />
|
||||||
|
* <SkeletonRectangle className="w-96" />
|
||||||
|
* </SkeletonRow>
|
||||||
|
* <SkeletonRow>
|
||||||
|
* <SkeletonRectangle className="w-96" />
|
||||||
|
* </SkeletonRow>
|
||||||
|
* <SkeletonRow>
|
||||||
|
*/
|
||||||
@ -21,7 +21,7 @@ import { sleep } from '@/utils'
|
|||||||
import type { SiteInfo } from '@/models/share'
|
import type { SiteInfo } from '@/models/share'
|
||||||
import { TEXT_GENERATION_TIMEOUT_MS } from '@/config'
|
import { TEXT_GENERATION_TIMEOUT_MS } from '@/config'
|
||||||
import {
|
import {
|
||||||
getProcessedFilesFromResponse,
|
getFilesInLogs,
|
||||||
} from '@/app/components/base/file-uploader/utils'
|
} from '@/app/components/base/file-uploader/utils'
|
||||||
|
|
||||||
export type IResultProps = {
|
export type IResultProps = {
|
||||||
@ -288,7 +288,7 @@ const Result: FC<IResultProps> = ({
|
|||||||
}
|
}
|
||||||
setWorkflowProcessData(produce(getWorkflowProcessData()!, (draft) => {
|
setWorkflowProcessData(produce(getWorkflowProcessData()!, (draft) => {
|
||||||
draft.status = WorkflowRunningStatus.Succeeded
|
draft.status = WorkflowRunningStatus.Succeeded
|
||||||
draft.files = getProcessedFilesFromResponse(data.files || [])
|
draft.files = getFilesInLogs(data.outputs || []) as any[]
|
||||||
}))
|
}))
|
||||||
if (!data.outputs) {
|
if (!data.outputs) {
|
||||||
setCompletionRes('')
|
setCompletionRes('')
|
||||||
|
|||||||
@ -26,7 +26,7 @@ import {
|
|||||||
import { useFeaturesStore } from '@/app/components/base/features/hooks'
|
import { useFeaturesStore } from '@/app/components/base/features/hooks'
|
||||||
import { AudioPlayerManager } from '@/app/components/base/audio-btn/audio.player.manager'
|
import { AudioPlayerManager } from '@/app/components/base/audio-btn/audio.player.manager'
|
||||||
import {
|
import {
|
||||||
getProcessedFilesFromResponse,
|
getFilesInLogs,
|
||||||
} from '@/app/components/base/file-uploader/utils'
|
} from '@/app/components/base/file-uploader/utils'
|
||||||
|
|
||||||
export const useWorkflowRun = () => {
|
export const useWorkflowRun = () => {
|
||||||
@ -213,7 +213,7 @@ export const useWorkflowRun = () => {
|
|||||||
draft.result = {
|
draft.result = {
|
||||||
...draft.result,
|
...draft.result,
|
||||||
...data,
|
...data,
|
||||||
files: getProcessedFilesFromResponse(data.files || []),
|
files: getFilesInLogs(data.outputs),
|
||||||
} as any
|
} as any
|
||||||
if (isStringOutput) {
|
if (isStringOutput) {
|
||||||
draft.resultTabActive = true
|
draft.resultTabActive = true
|
||||||
|
|||||||
@ -27,7 +27,10 @@ type Props = {
|
|||||||
isInNode?: boolean
|
isInNode?: boolean
|
||||||
onGenerated?: (prompt: string) => void
|
onGenerated?: (prompt: string) => void
|
||||||
codeLanguages?: CodeLanguage
|
codeLanguages?: CodeLanguage
|
||||||
fileList?: FileEntity[]
|
fileList?: {
|
||||||
|
varName: string
|
||||||
|
list: FileEntity[]
|
||||||
|
}[]
|
||||||
showFileList?: boolean
|
showFileList?: boolean
|
||||||
showCodeGenerator?: boolean
|
showCodeGenerator?: boolean
|
||||||
}
|
}
|
||||||
|
|||||||
@ -208,7 +208,7 @@ const CodeEditor: FC<Props> = ({
|
|||||||
isInNode={isInNode}
|
isInNode={isInNode}
|
||||||
onGenerated={onGenerated}
|
onGenerated={onGenerated}
|
||||||
codeLanguages={language}
|
codeLanguages={language}
|
||||||
fileList={fileList}
|
fileList={fileList as any}
|
||||||
showFileList={showFileList}
|
showFileList={showFileList}
|
||||||
showCodeGenerator={showCodeGenerator}
|
showCodeGenerator={showCodeGenerator}
|
||||||
>
|
>
|
||||||
|
|||||||
@ -30,7 +30,9 @@ const nodeDefault: NodeDefault<AssignerNodeType> = {
|
|||||||
errorMessages = t(`${i18nPrefix}.fieldRequired`, { field: t('workflow.nodes.assigner.assignedVariable') })
|
errorMessages = t(`${i18nPrefix}.fieldRequired`, { field: t('workflow.nodes.assigner.assignedVariable') })
|
||||||
|
|
||||||
if (!errorMessages && value.operation !== WriteMode.clear) {
|
if (!errorMessages && value.operation !== WriteMode.clear) {
|
||||||
if (value.operation === WriteMode.set) {
|
if (value.operation === WriteMode.set || value.operation === WriteMode.increment
|
||||||
|
|| value.operation === WriteMode.decrement || value.operation === WriteMode.multiply
|
||||||
|
|| value.operation === WriteMode.divide) {
|
||||||
if (!value.value && typeof value.value !== 'number')
|
if (!value.value && typeof value.value !== 'number')
|
||||||
errorMessages = t(`${i18nPrefix}.fieldRequired`, { field: t('workflow.nodes.assigner.variable') })
|
errorMessages = t(`${i18nPrefix}.fieldRequired`, { field: t('workflow.nodes.assigner.variable') })
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,7 +33,7 @@ const NodeVariableItem = ({
|
|||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
return (
|
return (
|
||||||
<div className={cn(
|
<div className={cn(
|
||||||
'relative flex items-center p-[3px] pl-[5px] gap-1 self-stretch rounded-md bg-workflow-block-param-bg',
|
'relative flex items-center p-[3px] pl-[5px] gap-1 self-stretch rounded-md bg-workflow-block-parma-bg',
|
||||||
showBorder && '!bg-black/[0.02]',
|
showBorder && '!bg-black/[0.02]',
|
||||||
className,
|
className,
|
||||||
)}>
|
)}>
|
||||||
|
|||||||
@ -97,8 +97,9 @@ const ChatVariableModal = ({
|
|||||||
return objectPlaceholder
|
return objectPlaceholder
|
||||||
}, [type])
|
}, [type])
|
||||||
const getObjectValue = useCallback(() => {
|
const getObjectValue = useCallback(() => {
|
||||||
if (!chatVar)
|
if (!chatVar || Object.keys(chatVar.value).length === 0)
|
||||||
return [DEFAULT_OBJECT_VALUE]
|
return [DEFAULT_OBJECT_VALUE]
|
||||||
|
|
||||||
return Object.keys(chatVar.value).map((key) => {
|
return Object.keys(chatVar.value).map((key) => {
|
||||||
return {
|
return {
|
||||||
key,
|
key,
|
||||||
|
|||||||
@ -48,7 +48,7 @@ const WorkflowPreview = () => {
|
|||||||
}, [showDebugAndPreviewPanel, showInputsPanel])
|
}, [showDebugAndPreviewPanel, showInputsPanel])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if ((workflowRunningData?.result.status === WorkflowRunningStatus.Succeeded || workflowRunningData?.result.status === WorkflowRunningStatus.Failed) && !workflowRunningData.resultText)
|
if ((workflowRunningData?.result.status === WorkflowRunningStatus.Succeeded || workflowRunningData?.result.status === WorkflowRunningStatus.Failed) && !workflowRunningData.resultText && !workflowRunningData.result.files?.length)
|
||||||
switchTab('DETAIL')
|
switchTab('DETAIL')
|
||||||
}, [workflowRunningData])
|
}, [workflowRunningData])
|
||||||
|
|
||||||
|
|||||||
@ -1,10 +1,13 @@
|
|||||||
'use client'
|
'use client'
|
||||||
import type { FC } from 'react'
|
import type { FC } from 'react'
|
||||||
|
import { useMemo } from 'react'
|
||||||
import CodeEditor from '@/app/components/workflow/nodes/_base/components/editor/code-editor'
|
import CodeEditor from '@/app/components/workflow/nodes/_base/components/editor/code-editor'
|
||||||
import { CodeLanguage } from '@/app/components/workflow/nodes/code/types'
|
import { CodeLanguage } from '@/app/components/workflow/nodes/code/types'
|
||||||
import { Markdown } from '@/app/components/base/markdown'
|
import { Markdown } from '@/app/components/base/markdown'
|
||||||
import LoadingAnim from '@/app/components/base/chat/chat/loading-anim'
|
import LoadingAnim from '@/app/components/base/chat/chat/loading-anim'
|
||||||
|
import { FileList } from '@/app/components/base/file-uploader'
|
||||||
import StatusContainer from '@/app/components/workflow/run/status-container'
|
import StatusContainer from '@/app/components/workflow/run/status-container'
|
||||||
|
import { getProcessedFilesFromResponse } from '@/app/components/base/file-uploader/utils'
|
||||||
|
|
||||||
type OutputPanelProps = {
|
type OutputPanelProps = {
|
||||||
isRunning?: boolean
|
isRunning?: boolean
|
||||||
@ -19,6 +22,30 @@ const OutputPanel: FC<OutputPanelProps> = ({
|
|||||||
error,
|
error,
|
||||||
height,
|
height,
|
||||||
}) => {
|
}) => {
|
||||||
|
const isTextOutput = useMemo(() => {
|
||||||
|
return outputs && Object.keys(outputs).length === 1 && typeof outputs[Object.keys(outputs)[0]] === 'string'
|
||||||
|
}, [outputs])
|
||||||
|
|
||||||
|
const fileList = useMemo(() => {
|
||||||
|
const fileList: any[] = []
|
||||||
|
if (!outputs)
|
||||||
|
return fileList
|
||||||
|
if (Object.keys(outputs).length > 1)
|
||||||
|
return fileList
|
||||||
|
for (const key in outputs) {
|
||||||
|
if (Array.isArray(outputs[key])) {
|
||||||
|
outputs[key].map((output: any) => {
|
||||||
|
if (output.dify_model_identity === '__dify__file__')
|
||||||
|
fileList.push(output)
|
||||||
|
return null
|
||||||
|
})
|
||||||
|
}
|
||||||
|
else if (outputs[key].dify_model_identity === '__dify__file__') {
|
||||||
|
fileList.push(outputs[key])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return getProcessedFilesFromResponse(fileList)
|
||||||
|
}, [outputs])
|
||||||
return (
|
return (
|
||||||
<div className='py-2'>
|
<div className='py-2'>
|
||||||
{isRunning && (
|
{isRunning && (
|
||||||
@ -36,20 +63,31 @@ const OutputPanel: FC<OutputPanelProps> = ({
|
|||||||
<Markdown content='No Output' />
|
<Markdown content='No Output' />
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
{outputs && Object.keys(outputs).length === 1 && (
|
{isTextOutput && (
|
||||||
<div className='px-4 py-2'>
|
<div className='px-4 py-2'>
|
||||||
<Markdown content={outputs[Object.keys(outputs)[0]] || ''} />
|
<Markdown content={outputs[Object.keys(outputs)[0]] || ''} />
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
{fileList.length > 0 && (
|
||||||
|
<div className='px-4 py-2'>
|
||||||
|
<FileList
|
||||||
|
files={fileList}
|
||||||
|
showDeleteAction={false}
|
||||||
|
showDownloadAction
|
||||||
|
canPreview
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
{outputs && Object.keys(outputs).length > 1 && height! > 0 && (
|
{outputs && Object.keys(outputs).length > 1 && height! > 0 && (
|
||||||
<div className='px-4 py-2 flex flex-col gap-2'>
|
<div className='flex flex-col gap-2'>
|
||||||
<CodeEditor
|
<CodeEditor
|
||||||
|
showFileList
|
||||||
readOnly
|
readOnly
|
||||||
title={<div></div>}
|
title={<div></div>}
|
||||||
language={CodeLanguage.json}
|
language={CodeLanguage.json}
|
||||||
value={outputs}
|
value={outputs}
|
||||||
isJSONStringifyBeauty
|
isJSONStringifyBeauty
|
||||||
height={height}
|
height={height ? (height - 16) / 2 : undefined}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@ -6,14 +6,13 @@ import { Markdown } from '@/app/components/base/markdown'
|
|||||||
import LoadingAnim from '@/app/components/base/chat/chat/loading-anim'
|
import LoadingAnim from '@/app/components/base/chat/chat/loading-anim'
|
||||||
import StatusContainer from '@/app/components/workflow/run/status-container'
|
import StatusContainer from '@/app/components/workflow/run/status-container'
|
||||||
import { FileList } from '@/app/components/base/file-uploader'
|
import { FileList } from '@/app/components/base/file-uploader'
|
||||||
import type { FileEntity } from '@/app/components/base/file-uploader/types'
|
|
||||||
|
|
||||||
type ResultTextProps = {
|
type ResultTextProps = {
|
||||||
isRunning?: boolean
|
isRunning?: boolean
|
||||||
outputs?: any
|
outputs?: any
|
||||||
error?: string
|
error?: string
|
||||||
onClick?: () => void
|
onClick?: () => void
|
||||||
allFiles?: FileEntity[]
|
allFiles?: any[]
|
||||||
}
|
}
|
||||||
|
|
||||||
const ResultText: FC<ResultTextProps> = ({
|
const ResultText: FC<ResultTextProps> = ({
|
||||||
@ -25,20 +24,20 @@ const ResultText: FC<ResultTextProps> = ({
|
|||||||
}) => {
|
}) => {
|
||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
return (
|
return (
|
||||||
<div className='bg-background-section-burn py-2'>
|
<div className='bg-background-section-burn'>
|
||||||
{isRunning && !outputs && (
|
{isRunning && !outputs && (
|
||||||
<div className='pt-4 pl-[26px]'>
|
<div className='pt-4 pl-[26px]'>
|
||||||
<LoadingAnim type='text' />
|
<LoadingAnim type='text' />
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
{!isRunning && error && (
|
{!isRunning && error && (
|
||||||
<div className='px-4'>
|
<div className='px-4 py-2'>
|
||||||
<StatusContainer status='failed'>
|
<StatusContainer status='failed'>
|
||||||
{error}
|
{error}
|
||||||
</StatusContainer>
|
</StatusContainer>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
{!isRunning && !outputs && !error && (
|
{!isRunning && !outputs && !error && !allFiles?.length && (
|
||||||
<div className='mt-[120px] px-4 py-2 flex flex-col items-center text-[13px] leading-[18px] text-gray-500'>
|
<div className='mt-[120px] px-4 py-2 flex flex-col items-center text-[13px] leading-[18px] text-gray-500'>
|
||||||
<ImageIndentLeft className='w-6 h-6 text-gray-400' />
|
<ImageIndentLeft className='w-6 h-6 text-gray-400' />
|
||||||
<div className='mr-2'>{t('runLog.resultEmpty.title')}</div>
|
<div className='mr-2'>{t('runLog.resultEmpty.title')}</div>
|
||||||
@ -49,18 +48,25 @@ const ResultText: FC<ResultTextProps> = ({
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
{outputs && (
|
{(outputs || !!allFiles?.length) && (
|
||||||
<div className='px-4 py-2'>
|
<>
|
||||||
<Markdown content={outputs} />
|
{outputs && (
|
||||||
{!!allFiles?.length && (
|
<div className='px-4 py-2'>
|
||||||
<FileList
|
<Markdown content={outputs} />
|
||||||
files={allFiles}
|
</div>
|
||||||
showDeleteAction={false}
|
|
||||||
showDownloadAction
|
|
||||||
canPreview
|
|
||||||
/>
|
|
||||||
)}
|
)}
|
||||||
</div>
|
{!!allFiles?.length && allFiles.map(item => (
|
||||||
|
<div key={item.varName} className='px-4 py-2 flex flex-col gap-1 system-xs-regular'>
|
||||||
|
<div className='py-1 text-text-tertiary '>{item.varName}</div>
|
||||||
|
<FileList
|
||||||
|
files={item.list}
|
||||||
|
showDeleteAction={false}
|
||||||
|
showDownloadAction
|
||||||
|
canPreview
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
</>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
|||||||
@ -79,6 +79,8 @@ const translation = {
|
|||||||
runDetail: {
|
runDetail: {
|
||||||
title: 'Konversationsprotokoll',
|
title: 'Konversationsprotokoll',
|
||||||
workflowTitle: 'Protokolldetail',
|
workflowTitle: 'Protokolldetail',
|
||||||
|
fileListLabel: 'Details zur Datei',
|
||||||
|
fileListDetail: 'Detail',
|
||||||
},
|
},
|
||||||
promptLog: 'Prompt-Protokoll',
|
promptLog: 'Prompt-Protokoll',
|
||||||
agentLog: 'Agentenprotokoll',
|
agentLog: 'Agentenprotokoll',
|
||||||
|
|||||||
@ -35,6 +35,8 @@ const translation = {
|
|||||||
Translate: 'Übersetzen',
|
Translate: 'Übersetzen',
|
||||||
Programming: 'Programmieren',
|
Programming: 'Programmieren',
|
||||||
HR: 'Personalwesen',
|
HR: 'Personalwesen',
|
||||||
|
Agent: 'Agent',
|
||||||
|
Workflow: 'Arbeitsablauf',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -79,6 +79,8 @@ const translation = {
|
|||||||
runDetail: {
|
runDetail: {
|
||||||
title: 'Conversation Log',
|
title: 'Conversation Log',
|
||||||
workflowTitle: 'Log Detail',
|
workflowTitle: 'Log Detail',
|
||||||
|
fileListLabel: 'File Details',
|
||||||
|
fileListDetail: 'Detail',
|
||||||
},
|
},
|
||||||
promptLog: 'Prompt Log',
|
promptLog: 'Prompt Log',
|
||||||
agentLog: 'Agent Log',
|
agentLog: 'Agent Log',
|
||||||
|
|||||||
@ -8,6 +8,10 @@ const translation = {
|
|||||||
completion: 'Completion',
|
completion: 'Completion',
|
||||||
},
|
},
|
||||||
duplicate: 'Duplicate',
|
duplicate: 'Duplicate',
|
||||||
|
mermaid: {
|
||||||
|
handDrawn: 'Hand Drawn',
|
||||||
|
classic: 'Classic',
|
||||||
|
},
|
||||||
duplicateTitle: 'Duplicate App',
|
duplicateTitle: 'Duplicate App',
|
||||||
export: 'Export DSL',
|
export: 'Export DSL',
|
||||||
exportFailed: 'Export DSL failed.',
|
exportFailed: 'Export DSL failed.',
|
||||||
|
|||||||
@ -30,11 +30,13 @@ const translation = {
|
|||||||
nameRequired: 'App name is required',
|
nameRequired: 'App name is required',
|
||||||
},
|
},
|
||||||
category: {
|
category: {
|
||||||
|
Agent: 'Agent',
|
||||||
Assistant: 'Assistant',
|
Assistant: 'Assistant',
|
||||||
Writing: 'Writing',
|
Writing: 'Writing',
|
||||||
Translate: 'Translate',
|
Translate: 'Translate',
|
||||||
Programming: 'Programming',
|
Programming: 'Programming',
|
||||||
HR: 'HR',
|
HR: 'HR',
|
||||||
|
Workflow: 'Workflow',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -79,6 +79,8 @@ const translation = {
|
|||||||
runDetail: {
|
runDetail: {
|
||||||
title: 'Registro de Conversación',
|
title: 'Registro de Conversación',
|
||||||
workflowTitle: 'Detalle del Registro',
|
workflowTitle: 'Detalle del Registro',
|
||||||
|
fileListLabel: 'Detalles del archivo',
|
||||||
|
fileListDetail: 'Detalle',
|
||||||
},
|
},
|
||||||
promptLog: 'Registro de Indicación',
|
promptLog: 'Registro de Indicación',
|
||||||
agentLog: 'Registro de Agente',
|
agentLog: 'Registro de Agente',
|
||||||
|
|||||||
@ -35,6 +35,8 @@ const translation = {
|
|||||||
Translate: 'Traducción',
|
Translate: 'Traducción',
|
||||||
Programming: 'Programación',
|
Programming: 'Programación',
|
||||||
HR: 'Recursos Humanos',
|
HR: 'Recursos Humanos',
|
||||||
|
Agent: 'Agente',
|
||||||
|
Workflow: 'Flujo de trabajo',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -79,6 +79,8 @@ const translation = {
|
|||||||
runDetail: {
|
runDetail: {
|
||||||
title: 'لاگ مکالمه',
|
title: 'لاگ مکالمه',
|
||||||
workflowTitle: 'جزئیات لاگ',
|
workflowTitle: 'جزئیات لاگ',
|
||||||
|
fileListLabel: 'جزئیات فایل',
|
||||||
|
fileListDetail: 'جزئیات',
|
||||||
},
|
},
|
||||||
promptLog: 'لاگ درخواست',
|
promptLog: 'لاگ درخواست',
|
||||||
agentLog: 'لاگ عامل',
|
agentLog: 'لاگ عامل',
|
||||||
|
|||||||
@ -35,6 +35,8 @@ const translation = {
|
|||||||
Translate: 'ترجمه',
|
Translate: 'ترجمه',
|
||||||
Programming: 'برنامهنویسی',
|
Programming: 'برنامهنویسی',
|
||||||
HR: 'منابع انسانی',
|
HR: 'منابع انسانی',
|
||||||
|
Agent: 'عامل',
|
||||||
|
Workflow: 'گردش',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -79,6 +79,8 @@ const translation = {
|
|||||||
runDetail: {
|
runDetail: {
|
||||||
title: 'Journal de conversation',
|
title: 'Journal de conversation',
|
||||||
workflowTitle: 'Détail du journal',
|
workflowTitle: 'Détail du journal',
|
||||||
|
fileListDetail: 'Détail',
|
||||||
|
fileListLabel: 'Détails du fichier',
|
||||||
},
|
},
|
||||||
promptLog: 'Journal de consigne',
|
promptLog: 'Journal de consigne',
|
||||||
agentLog: 'Journal des agents',
|
agentLog: 'Journal des agents',
|
||||||
|
|||||||
@ -35,6 +35,8 @@ const translation = {
|
|||||||
Translate: 'Traduire',
|
Translate: 'Traduire',
|
||||||
Programming: 'Programmation',
|
Programming: 'Programmation',
|
||||||
HR: 'RH',
|
HR: 'RH',
|
||||||
|
Agent: 'Agent',
|
||||||
|
Workflow: 'Flux de travail',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -81,6 +81,8 @@ const translation = {
|
|||||||
runDetail: {
|
runDetail: {
|
||||||
title: 'बातचीत लॉग',
|
title: 'बातचीत लॉग',
|
||||||
workflowTitle: 'लॉग विवरण',
|
workflowTitle: 'लॉग विवरण',
|
||||||
|
fileListDetail: 'विस्तार',
|
||||||
|
fileListLabel: 'फ़ाइल विवरण',
|
||||||
},
|
},
|
||||||
promptLog: 'प्रॉम्प्ट लॉग',
|
promptLog: 'प्रॉम्प्ट लॉग',
|
||||||
agentLog: 'एजेंट लॉग',
|
agentLog: 'एजेंट लॉग',
|
||||||
|
|||||||
@ -36,6 +36,8 @@ const translation = {
|
|||||||
Translate: 'अनुवाद',
|
Translate: 'अनुवाद',
|
||||||
Programming: 'प्रोग्रामिंग',
|
Programming: 'प्रोग्रामिंग',
|
||||||
HR: 'मानव संसाधन',
|
HR: 'मानव संसाधन',
|
||||||
|
Workflow: 'कार्यप्रवाह',
|
||||||
|
Agent: 'आढ़तिया',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -83,6 +83,8 @@ const translation = {
|
|||||||
runDetail: {
|
runDetail: {
|
||||||
title: 'Registro Conversazione',
|
title: 'Registro Conversazione',
|
||||||
workflowTitle: 'Dettagli Registro',
|
workflowTitle: 'Dettagli Registro',
|
||||||
|
fileListDetail: 'Dettaglio',
|
||||||
|
fileListLabel: 'Dettagli del file',
|
||||||
},
|
},
|
||||||
promptLog: 'Registro Prompt',
|
promptLog: 'Registro Prompt',
|
||||||
agentLog: 'Registro Agente',
|
agentLog: 'Registro Agente',
|
||||||
|
|||||||
@ -36,6 +36,8 @@ const translation = {
|
|||||||
Translate: 'Traduzione',
|
Translate: 'Traduzione',
|
||||||
Programming: 'Programmazione',
|
Programming: 'Programmazione',
|
||||||
HR: 'Risorse Umane',
|
HR: 'Risorse Umane',
|
||||||
|
Workflow: 'Flusso di lavoro',
|
||||||
|
Agent: 'Agente',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -79,6 +79,8 @@ const translation = {
|
|||||||
runDetail: {
|
runDetail: {
|
||||||
title: '会話ログ',
|
title: '会話ログ',
|
||||||
workflowTitle: 'ログの詳細',
|
workflowTitle: 'ログの詳細',
|
||||||
|
fileListLabel: 'ファイルの詳細',
|
||||||
|
fileListDetail: 'ディテール',
|
||||||
},
|
},
|
||||||
promptLog: 'プロンプトログ',
|
promptLog: 'プロンプトログ',
|
||||||
agentLog: 'エージェントログ',
|
agentLog: 'エージェントログ',
|
||||||
|
|||||||
@ -35,6 +35,8 @@ const translation = {
|
|||||||
Translate: '翻訳',
|
Translate: '翻訳',
|
||||||
Programming: 'プログラミング',
|
Programming: 'プログラミング',
|
||||||
HR: '人事',
|
HR: '人事',
|
||||||
|
Workflow: 'ワークフロー',
|
||||||
|
Agent: 'エージェント',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -80,6 +80,8 @@ const translation = {
|
|||||||
runDetail: {
|
runDetail: {
|
||||||
title: '대화 로그',
|
title: '대화 로그',
|
||||||
workflowTitle: '로그 세부 정보',
|
workflowTitle: '로그 세부 정보',
|
||||||
|
fileListDetail: '세부',
|
||||||
|
fileListLabel: '파일 세부 정보',
|
||||||
},
|
},
|
||||||
promptLog: '프롬프트 로그',
|
promptLog: '프롬프트 로그',
|
||||||
agentLog: '에이전트 로그',
|
agentLog: '에이전트 로그',
|
||||||
|
|||||||
@ -83,6 +83,8 @@ const translation = {
|
|||||||
runDetail: {
|
runDetail: {
|
||||||
title: 'Dziennik rozmowy',
|
title: 'Dziennik rozmowy',
|
||||||
workflowTitle: 'Szczegół dziennika',
|
workflowTitle: 'Szczegół dziennika',
|
||||||
|
fileListDetail: 'Detal',
|
||||||
|
fileListLabel: 'Szczegóły pliku',
|
||||||
},
|
},
|
||||||
promptLog: 'Dziennik monitów',
|
promptLog: 'Dziennik monitów',
|
||||||
agentLog: 'Dziennik agenta',
|
agentLog: 'Dziennik agenta',
|
||||||
|
|||||||
@ -36,6 +36,8 @@ const translation = {
|
|||||||
Translate: 'Tłumaczenie',
|
Translate: 'Tłumaczenie',
|
||||||
Programming: 'Programowanie',
|
Programming: 'Programowanie',
|
||||||
HR: 'HR',
|
HR: 'HR',
|
||||||
|
Agent: 'Agent',
|
||||||
|
Workflow: 'Przepływ pracy',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -79,6 +79,8 @@ const translation = {
|
|||||||
runDetail: {
|
runDetail: {
|
||||||
title: 'Registro de Conversa',
|
title: 'Registro de Conversa',
|
||||||
workflowTitle: 'Detalhes do Registro',
|
workflowTitle: 'Detalhes do Registro',
|
||||||
|
fileListLabel: 'Detalhes do arquivo',
|
||||||
|
fileListDetail: 'Detalhe',
|
||||||
},
|
},
|
||||||
promptLog: 'Registro de Prompt',
|
promptLog: 'Registro de Prompt',
|
||||||
agentLog: 'Registro do agente',
|
agentLog: 'Registro do agente',
|
||||||
|
|||||||
@ -35,6 +35,8 @@ const translation = {
|
|||||||
Translate: 'Traduzir',
|
Translate: 'Traduzir',
|
||||||
Programming: 'Programação',
|
Programming: 'Programação',
|
||||||
HR: 'RH',
|
HR: 'RH',
|
||||||
|
Workflow: 'Fluxo de trabalho',
|
||||||
|
Agent: 'Agente',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -79,6 +79,8 @@ const translation = {
|
|||||||
runDetail: {
|
runDetail: {
|
||||||
title: 'Jurnal de conversație',
|
title: 'Jurnal de conversație',
|
||||||
workflowTitle: 'Detalii jurnal',
|
workflowTitle: 'Detalii jurnal',
|
||||||
|
fileListDetail: 'Amănunt',
|
||||||
|
fileListLabel: 'Detalii fișier',
|
||||||
},
|
},
|
||||||
promptLog: 'Jurnal prompt',
|
promptLog: 'Jurnal prompt',
|
||||||
agentLog: 'Jurnal agent',
|
agentLog: 'Jurnal agent',
|
||||||
|
|||||||
@ -35,6 +35,8 @@ const translation = {
|
|||||||
Translate: 'Traducere',
|
Translate: 'Traducere',
|
||||||
Programming: 'Programare',
|
Programming: 'Programare',
|
||||||
HR: 'Resurse Umane',
|
HR: 'Resurse Umane',
|
||||||
|
Agent: 'Agent',
|
||||||
|
Workflow: 'Flux de lucru',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -79,6 +79,8 @@ const translation = {
|
|||||||
runDetail: {
|
runDetail: {
|
||||||
title: 'Журнал разговоров',
|
title: 'Журнал разговоров',
|
||||||
workflowTitle: 'Подробная информация о журнале',
|
workflowTitle: 'Подробная информация о журнале',
|
||||||
|
fileListLabel: 'Сведения о файле',
|
||||||
|
fileListDetail: 'Подробность',
|
||||||
},
|
},
|
||||||
promptLog: 'Журнал подсказок',
|
promptLog: 'Журнал подсказок',
|
||||||
agentLog: 'Журнал агента',
|
agentLog: 'Журнал агента',
|
||||||
|
|||||||
@ -35,6 +35,8 @@ const translation = {
|
|||||||
Translate: 'Перевод',
|
Translate: 'Перевод',
|
||||||
Programming: 'Программирование',
|
Programming: 'Программирование',
|
||||||
HR: 'HR',
|
HR: 'HR',
|
||||||
|
Agent: 'Агент',
|
||||||
|
Workflow: 'Рабочий процесс',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -79,6 +79,8 @@ const translation = {
|
|||||||
runDetail: {
|
runDetail: {
|
||||||
title: 'Dnevnik pogovora',
|
title: 'Dnevnik pogovora',
|
||||||
workflowTitle: 'Podrobnosti dnevnika',
|
workflowTitle: 'Podrobnosti dnevnika',
|
||||||
|
fileListDetail: 'Podrobnosti',
|
||||||
|
fileListLabel: 'Podrobnosti o datoteki',
|
||||||
},
|
},
|
||||||
promptLog: 'Dnevnik PROMPT-ov',
|
promptLog: 'Dnevnik PROMPT-ov',
|
||||||
agentLog: 'Dnevnik pomočnika',
|
agentLog: 'Dnevnik pomočnika',
|
||||||
|
|||||||
@ -35,6 +35,8 @@ const translation = {
|
|||||||
Translate: 'Prevajanje',
|
Translate: 'Prevajanje',
|
||||||
Programming: 'Programiranje',
|
Programming: 'Programiranje',
|
||||||
HR: 'Kadri',
|
HR: 'Kadri',
|
||||||
|
Workflow: 'Potek dela',
|
||||||
|
Agent: 'Agent',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -79,6 +79,8 @@ const translation = {
|
|||||||
runDetail: {
|
runDetail: {
|
||||||
title: 'บันทึกการสนทนา',
|
title: 'บันทึกการสนทนา',
|
||||||
workflowTitle: 'รายละเอียดบันทึก',
|
workflowTitle: 'รายละเอียดบันทึก',
|
||||||
|
fileListDetail: 'รายละเอียด',
|
||||||
|
fileListLabel: 'รายละเอียดไฟล์',
|
||||||
},
|
},
|
||||||
promptLog: 'บันทึกพร้อมท์',
|
promptLog: 'บันทึกพร้อมท์',
|
||||||
agentLog: 'บันทึกตัวแทน',
|
agentLog: 'บันทึกตัวแทน',
|
||||||
|
|||||||
@ -35,6 +35,8 @@ const translation = {
|
|||||||
Translate: 'แปล',
|
Translate: 'แปล',
|
||||||
Programming: 'โปรแกรม',
|
Programming: 'โปรแกรม',
|
||||||
HR: 'ชั่วโมง',
|
HR: 'ชั่วโมง',
|
||||||
|
Workflow: 'เวิร์กโฟลว์',
|
||||||
|
Agent: 'ตัวแทน',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -79,6 +79,8 @@ const translation = {
|
|||||||
runDetail: {
|
runDetail: {
|
||||||
title: 'Konuşma Günlüğü',
|
title: 'Konuşma Günlüğü',
|
||||||
workflowTitle: 'Günlük Detayı',
|
workflowTitle: 'Günlük Detayı',
|
||||||
|
fileListDetail: 'Ayrıntı',
|
||||||
|
fileListLabel: 'Dosya Detayları',
|
||||||
},
|
},
|
||||||
promptLog: 'Prompt Günlüğü',
|
promptLog: 'Prompt Günlüğü',
|
||||||
agentLog: 'Agent Günlüğü',
|
agentLog: 'Agent Günlüğü',
|
||||||
|
|||||||
@ -35,6 +35,8 @@ const translation = {
|
|||||||
Translate: 'Çeviri',
|
Translate: 'Çeviri',
|
||||||
Programming: 'Programlama',
|
Programming: 'Programlama',
|
||||||
HR: 'İK',
|
HR: 'İK',
|
||||||
|
Agent: 'Aracı',
|
||||||
|
Workflow: 'İş Akışı',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -79,6 +79,8 @@ const translation = {
|
|||||||
runDetail: {
|
runDetail: {
|
||||||
title: 'Журнал Розмови',
|
title: 'Журнал Розмови',
|
||||||
workflowTitle: 'Деталі Журналу',
|
workflowTitle: 'Деталі Журналу',
|
||||||
|
fileListDetail: 'Деталь',
|
||||||
|
fileListLabel: 'Подробиці файлу',
|
||||||
},
|
},
|
||||||
promptLog: 'Журнал Запитань',
|
promptLog: 'Журнал Запитань',
|
||||||
agentLog: 'Журнал агента',
|
agentLog: 'Журнал агента',
|
||||||
|
|||||||
@ -35,6 +35,8 @@ const translation = {
|
|||||||
Translate: 'Переклад',
|
Translate: 'Переклад',
|
||||||
Programming: 'Програмування',
|
Programming: 'Програмування',
|
||||||
HR: 'HR',
|
HR: 'HR',
|
||||||
|
Workflow: 'Робочий процес',
|
||||||
|
Agent: 'Агент',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -79,6 +79,8 @@ const translation = {
|
|||||||
runDetail: {
|
runDetail: {
|
||||||
title: 'Nhật ký cuộc trò chuyện',
|
title: 'Nhật ký cuộc trò chuyện',
|
||||||
workflowTitle: 'Chi tiết nhật ký',
|
workflowTitle: 'Chi tiết nhật ký',
|
||||||
|
fileListDetail: 'Chi tiết',
|
||||||
|
fileListLabel: 'Chi tiết tệp',
|
||||||
},
|
},
|
||||||
promptLog: 'Nhật ký lời nhắc',
|
promptLog: 'Nhật ký lời nhắc',
|
||||||
AgentLog: 'Nhật ký tác nhân',
|
AgentLog: 'Nhật ký tác nhân',
|
||||||
|
|||||||
@ -35,6 +35,8 @@ const translation = {
|
|||||||
Translate: 'Dịch thuật',
|
Translate: 'Dịch thuật',
|
||||||
Programming: 'Lập trình',
|
Programming: 'Lập trình',
|
||||||
HR: 'Nhân sự',
|
HR: 'Nhân sự',
|
||||||
|
Agent: 'Người đại lý',
|
||||||
|
Workflow: 'Quy trình làm việc',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -79,6 +79,8 @@ const translation = {
|
|||||||
runDetail: {
|
runDetail: {
|
||||||
title: '对话日志',
|
title: '对话日志',
|
||||||
workflowTitle: '日志详情',
|
workflowTitle: '日志详情',
|
||||||
|
fileListLabel: '文件详情',
|
||||||
|
fileListDetail: '详情',
|
||||||
},
|
},
|
||||||
promptLog: 'Prompt 日志',
|
promptLog: 'Prompt 日志',
|
||||||
agentLog: 'Agent 日志',
|
agentLog: 'Agent 日志',
|
||||||
|
|||||||
@ -8,6 +8,10 @@ const translation = {
|
|||||||
completion: '文本生成',
|
completion: '文本生成',
|
||||||
},
|
},
|
||||||
duplicate: '复制',
|
duplicate: '复制',
|
||||||
|
mermaid: {
|
||||||
|
handDrawn: '手绘',
|
||||||
|
classic: '经典',
|
||||||
|
},
|
||||||
duplicateTitle: '复制应用',
|
duplicateTitle: '复制应用',
|
||||||
export: '导出 DSL',
|
export: '导出 DSL',
|
||||||
exportFailed: '导出 DSL 失败',
|
exportFailed: '导出 DSL 失败',
|
||||||
|
|||||||
@ -30,11 +30,13 @@ const translation = {
|
|||||||
nameRequired: '应用程序名称不能为空',
|
nameRequired: '应用程序名称不能为空',
|
||||||
},
|
},
|
||||||
category: {
|
category: {
|
||||||
|
Agent: 'Agent',
|
||||||
Assistant: '助手',
|
Assistant: '助手',
|
||||||
Writing: '写作',
|
Writing: '写作',
|
||||||
Translate: '翻译',
|
Translate: '翻译',
|
||||||
Programming: '编程',
|
Programming: '编程',
|
||||||
HR: '人力资源',
|
HR: '人力资源',
|
||||||
|
Workflow: '工作流',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -79,6 +79,8 @@ const translation = {
|
|||||||
runDetail: {
|
runDetail: {
|
||||||
title: '對話日誌',
|
title: '對話日誌',
|
||||||
workflowTitle: '日誌詳情',
|
workflowTitle: '日誌詳情',
|
||||||
|
fileListDetail: '細節',
|
||||||
|
fileListLabel: '檔詳細資訊',
|
||||||
},
|
},
|
||||||
promptLog: 'Prompt 日誌',
|
promptLog: 'Prompt 日誌',
|
||||||
agentLog: 'Agent 日誌',
|
agentLog: 'Agent 日誌',
|
||||||
|
|||||||
@ -35,6 +35,8 @@ const translation = {
|
|||||||
Translate: '翻譯',
|
Translate: '翻譯',
|
||||||
Programming: '程式設計',
|
Programming: '程式設計',
|
||||||
HR: '人力資源',
|
HR: '人力資源',
|
||||||
|
Agent: '代理',
|
||||||
|
Workflow: '工作流',
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "dify-web",
|
"name": "dify-web",
|
||||||
"version": "0.13.0",
|
"version": "0.13.1",
|
||||||
"private": true,
|
"private": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18.17.0"
|
"node": ">=18.17.0"
|
||||||
@ -52,6 +52,7 @@
|
|||||||
"dayjs": "^1.11.7",
|
"dayjs": "^1.11.7",
|
||||||
"echarts": "^5.4.1",
|
"echarts": "^5.4.1",
|
||||||
"echarts-for-react": "^3.0.2",
|
"echarts-for-react": "^3.0.2",
|
||||||
|
"elkjs": "^0.9.3",
|
||||||
"emoji-mart": "^5.5.2",
|
"emoji-mart": "^5.5.2",
|
||||||
"fast-deep-equal": "^3.1.3",
|
"fast-deep-equal": "^3.1.3",
|
||||||
"i18next": "^22.4.13",
|
"i18next": "^22.4.13",
|
||||||
@ -64,7 +65,7 @@
|
|||||||
"lamejs": "^1.2.1",
|
"lamejs": "^1.2.1",
|
||||||
"lexical": "^0.16.0",
|
"lexical": "^0.16.0",
|
||||||
"lodash-es": "^4.17.21",
|
"lodash-es": "^4.17.21",
|
||||||
"mermaid": "10.9.3",
|
"mermaid": "11.4.1",
|
||||||
"mime": "^4.0.4",
|
"mime": "^4.0.4",
|
||||||
"negotiator": "^0.6.3",
|
"negotiator": "^0.6.3",
|
||||||
"next": "^14.2.10",
|
"next": "^14.2.10",
|
||||||
@ -144,7 +145,7 @@
|
|||||||
"@types/uuid": "^9.0.8",
|
"@types/uuid": "^9.0.8",
|
||||||
"autoprefixer": "^10.4.14",
|
"autoprefixer": "^10.4.14",
|
||||||
"bing-translate-api": "^4.0.2",
|
"bing-translate-api": "^4.0.2",
|
||||||
"code-inspector-plugin": "^0.13.0",
|
"code-inspector-plugin": "^0.18.1",
|
||||||
"cross-env": "^7.0.3",
|
"cross-env": "^7.0.3",
|
||||||
"eslint": "^8.36.0",
|
"eslint": "^8.36.0",
|
||||||
"eslint-config-next": "^14.0.4",
|
"eslint-config-next": "^14.0.4",
|
||||||
|
|||||||
461
web/yarn.lock
461
web/yarn.lock
@ -80,6 +80,19 @@
|
|||||||
jsonc-eslint-parser "^2.1.0"
|
jsonc-eslint-parser "^2.1.0"
|
||||||
yaml-eslint-parser "^1.1.0"
|
yaml-eslint-parser "^1.1.0"
|
||||||
|
|
||||||
|
"@antfu/install-pkg@^0.4.0":
|
||||||
|
version "0.4.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@antfu/install-pkg/-/install-pkg-0.4.1.tgz#d1d7f3be96ecdb41581629cafe8626d1748c0cf1"
|
||||||
|
integrity sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==
|
||||||
|
dependencies:
|
||||||
|
package-manager-detector "^0.2.0"
|
||||||
|
tinyexec "^0.3.0"
|
||||||
|
|
||||||
|
"@antfu/utils@^0.7.10":
|
||||||
|
version "0.7.10"
|
||||||
|
resolved "https://registry.yarnpkg.com/@antfu/utils/-/utils-0.7.10.tgz#ae829f170158e297a9b6a28f161a8e487d00814d"
|
||||||
|
integrity sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==
|
||||||
|
|
||||||
"@babel/code-frame@^7.0.0":
|
"@babel/code-frame@^7.0.0":
|
||||||
version "7.21.4"
|
version "7.21.4"
|
||||||
resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz"
|
resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz"
|
||||||
@ -1324,10 +1337,42 @@
|
|||||||
resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
|
resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
|
||||||
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
|
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
|
||||||
|
|
||||||
"@braintree/sanitize-url@^6.0.1":
|
"@braintree/sanitize-url@^7.0.1":
|
||||||
version "6.0.4"
|
version "7.1.0"
|
||||||
resolved "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz"
|
resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-7.1.0.tgz#048e48aab4f1460e3121e22aa62459d16653dc85"
|
||||||
integrity sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==
|
integrity sha512-o+UlMLt49RvtCASlOMW0AkHnabN9wR9rwCCherxO0yG4Npy34GkvrAqdXQvrhNs+jh+gkK8gB8Lf05qL/O7KWg==
|
||||||
|
|
||||||
|
"@chevrotain/cst-dts-gen@11.0.3":
|
||||||
|
version "11.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz#5e0863cc57dc45e204ccfee6303225d15d9d4783"
|
||||||
|
integrity sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==
|
||||||
|
dependencies:
|
||||||
|
"@chevrotain/gast" "11.0.3"
|
||||||
|
"@chevrotain/types" "11.0.3"
|
||||||
|
lodash-es "4.17.21"
|
||||||
|
|
||||||
|
"@chevrotain/gast@11.0.3":
|
||||||
|
version "11.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@chevrotain/gast/-/gast-11.0.3.tgz#e84d8880323fe8cbe792ef69ce3ffd43a936e818"
|
||||||
|
integrity sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==
|
||||||
|
dependencies:
|
||||||
|
"@chevrotain/types" "11.0.3"
|
||||||
|
lodash-es "4.17.21"
|
||||||
|
|
||||||
|
"@chevrotain/regexp-to-ast@11.0.3":
|
||||||
|
version "11.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz#11429a81c74a8e6a829271ce02fc66166d56dcdb"
|
||||||
|
integrity sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==
|
||||||
|
|
||||||
|
"@chevrotain/types@11.0.3":
|
||||||
|
version "11.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@chevrotain/types/-/types-11.0.3.tgz#f8a03914f7b937f594f56eb89312b3b8f1c91848"
|
||||||
|
integrity sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==
|
||||||
|
|
||||||
|
"@chevrotain/utils@11.0.3":
|
||||||
|
version "11.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@chevrotain/utils/-/utils-11.0.3.tgz#e39999307b102cff3645ec4f5b3665f5297a2224"
|
||||||
|
integrity sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==
|
||||||
|
|
||||||
"@chromatic-com/storybook@^1.9.0":
|
"@chromatic-com/storybook@^1.9.0":
|
||||||
version "1.9.0"
|
version "1.9.0"
|
||||||
@ -1621,6 +1666,24 @@
|
|||||||
resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz"
|
resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz"
|
||||||
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
|
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
|
||||||
|
|
||||||
|
"@iconify/types@^2.0.0":
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@iconify/types/-/types-2.0.0.tgz#ab0e9ea681d6c8a1214f30cd741fe3a20cc57f57"
|
||||||
|
integrity sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==
|
||||||
|
|
||||||
|
"@iconify/utils@^2.1.32":
|
||||||
|
version "2.1.33"
|
||||||
|
resolved "https://registry.yarnpkg.com/@iconify/utils/-/utils-2.1.33.tgz#cbf7242a52fd0ec58c42d37d28e4406b5327e8c0"
|
||||||
|
integrity sha512-jP9h6v/g0BIZx0p7XGJJVtkVnydtbgTgt9mVNcGDYwaa7UhdHdI9dvoq+gKj9sijMSJKxUPEG2JyjsgXjxL7Kw==
|
||||||
|
dependencies:
|
||||||
|
"@antfu/install-pkg" "^0.4.0"
|
||||||
|
"@antfu/utils" "^0.7.10"
|
||||||
|
"@iconify/types" "^2.0.0"
|
||||||
|
debug "^4.3.6"
|
||||||
|
kolorist "^1.8.0"
|
||||||
|
local-pkg "^0.5.0"
|
||||||
|
mlly "^1.7.1"
|
||||||
|
|
||||||
"@img/sharp-darwin-arm64@0.33.2":
|
"@img/sharp-darwin-arm64@0.33.2":
|
||||||
version "0.33.2"
|
version "0.33.2"
|
||||||
resolved "https://registry.yarnpkg.com/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.2.tgz#0a52a82c2169112794dac2c71bfba9e90f7c5bd1"
|
resolved "https://registry.yarnpkg.com/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.2.tgz#0a52a82c2169112794dac2c71bfba9e90f7c5bd1"
|
||||||
@ -2372,6 +2435,13 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@types/mdx" "^2.0.0"
|
"@types/mdx" "^2.0.0"
|
||||||
|
|
||||||
|
"@mermaid-js/parser@^0.3.0":
|
||||||
|
version "0.3.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@mermaid-js/parser/-/parser-0.3.0.tgz#7a28714599f692f93df130b299fa1aadc9f9c8ab"
|
||||||
|
integrity sha512-HsvL6zgE5sUPGgkIDlmAWR1HTNHz2Iy11BAWPTa4Jjabkpguy4Ze2gzfLrg6pdRuBvFwgUYyxiaNqZwrEEXepA==
|
||||||
|
dependencies:
|
||||||
|
langium "3.0.0"
|
||||||
|
|
||||||
"@monaco-editor/loader@^1.4.0":
|
"@monaco-editor/loader@^1.4.0":
|
||||||
version "1.4.0"
|
version "1.4.0"
|
||||||
resolved "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.4.0.tgz"
|
resolved "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.4.0.tgz"
|
||||||
@ -3419,12 +3489,12 @@
|
|||||||
resolved "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz"
|
resolved "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz"
|
||||||
integrity sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==
|
integrity sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==
|
||||||
|
|
||||||
"@types/d3-scale-chromatic@*", "@types/d3-scale-chromatic@^3.0.0":
|
"@types/d3-scale-chromatic@*":
|
||||||
version "3.0.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz"
|
resolved "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz"
|
||||||
integrity sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==
|
integrity sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==
|
||||||
|
|
||||||
"@types/d3-scale@*", "@types/d3-scale@^4.0.3":
|
"@types/d3-scale@*":
|
||||||
version "4.0.4"
|
version "4.0.4"
|
||||||
resolved "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.4.tgz"
|
resolved "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.4.tgz"
|
||||||
integrity sha512-eq1ZeTj0yr72L8MQk6N6heP603ubnywSDRfNpi5enouR112HzGLS6RIvExCzZTraFF4HdzNpJMwA/zGiMoHUUw==
|
integrity sha512-eq1ZeTj0yr72L8MQk6N6heP603ubnywSDRfNpi5enouR112HzGLS6RIvExCzZTraFF4HdzNpJMwA/zGiMoHUUw==
|
||||||
@ -3473,9 +3543,9 @@
|
|||||||
"@types/d3-interpolate" "*"
|
"@types/d3-interpolate" "*"
|
||||||
"@types/d3-selection" "*"
|
"@types/d3-selection" "*"
|
||||||
|
|
||||||
"@types/d3@^7.4.0":
|
"@types/d3@^7.4.0", "@types/d3@^7.4.3":
|
||||||
version "7.4.3"
|
version "7.4.3"
|
||||||
resolved "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz"
|
resolved "https://registry.yarnpkg.com/@types/d3/-/d3-7.4.3.tgz#d4550a85d08f4978faf0a4c36b848c61eaac07e2"
|
||||||
integrity sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==
|
integrity sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/d3-array" "*"
|
"@types/d3-array" "*"
|
||||||
@ -3895,6 +3965,11 @@
|
|||||||
resolved "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz#cb6e2a691b70cb177c6e3ae9c1d2e8b2ea8cd304"
|
resolved "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz#cb6e2a691b70cb177c6e3ae9c1d2e8b2ea8cd304"
|
||||||
integrity sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==
|
integrity sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==
|
||||||
|
|
||||||
|
"@types/trusted-types@^2.0.7":
|
||||||
|
version "2.0.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11"
|
||||||
|
integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==
|
||||||
|
|
||||||
"@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2":
|
"@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2":
|
||||||
version "2.0.6"
|
version "2.0.6"
|
||||||
resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz"
|
resolved "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz"
|
||||||
@ -4334,6 +4409,11 @@ acorn@^8.12.1, acorn@^8.7.1, acorn@^8.8.2:
|
|||||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.13.0.tgz#2a30d670818ad16ddd6a35d3842dacec9e5d7ca3"
|
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.13.0.tgz#2a30d670818ad16ddd6a35d3842dacec9e5d7ca3"
|
||||||
integrity sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==
|
integrity sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==
|
||||||
|
|
||||||
|
acorn@^8.14.0:
|
||||||
|
version "8.14.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0"
|
||||||
|
integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==
|
||||||
|
|
||||||
adjust-sourcemap-loader@^4.0.0:
|
adjust-sourcemap-loader@^4.0.0:
|
||||||
version "4.0.0"
|
version "4.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz#fc4a0fd080f7d10471f30a7320f25560ade28c99"
|
resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz#fc4a0fd080f7d10471f30a7320f25560ade28c99"
|
||||||
@ -5240,6 +5320,25 @@ check-error@^2.1.1:
|
|||||||
resolved "https://registry.yarnpkg.com/check-error/-/check-error-2.1.1.tgz#87eb876ae71ee388fa0471fe423f494be1d96ccc"
|
resolved "https://registry.yarnpkg.com/check-error/-/check-error-2.1.1.tgz#87eb876ae71ee388fa0471fe423f494be1d96ccc"
|
||||||
integrity sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==
|
integrity sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==
|
||||||
|
|
||||||
|
chevrotain-allstar@~0.3.0:
|
||||||
|
version "0.3.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz#b7412755f5d83cc139ab65810cdb00d8db40e6ca"
|
||||||
|
integrity sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==
|
||||||
|
dependencies:
|
||||||
|
lodash-es "^4.17.21"
|
||||||
|
|
||||||
|
chevrotain@~11.0.3:
|
||||||
|
version "11.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/chevrotain/-/chevrotain-11.0.3.tgz#88ffc1fb4b5739c715807eaeedbbf200e202fc1b"
|
||||||
|
integrity sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==
|
||||||
|
dependencies:
|
||||||
|
"@chevrotain/cst-dts-gen" "11.0.3"
|
||||||
|
"@chevrotain/gast" "11.0.3"
|
||||||
|
"@chevrotain/regexp-to-ast" "11.0.3"
|
||||||
|
"@chevrotain/types" "11.0.3"
|
||||||
|
"@chevrotain/utils" "11.0.3"
|
||||||
|
lodash-es "4.17.21"
|
||||||
|
|
||||||
"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3:
|
"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3:
|
||||||
version "3.5.3"
|
version "3.5.3"
|
||||||
resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz"
|
resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz"
|
||||||
@ -5388,24 +5487,28 @@ co@^4.6.0:
|
|||||||
resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
|
resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
|
||||||
integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==
|
integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==
|
||||||
|
|
||||||
code-inspector-core@0.13.0:
|
code-inspector-core@0.18.2:
|
||||||
version "0.13.0"
|
version "0.18.2"
|
||||||
resolved "https://registry.npmjs.org/code-inspector-core/-/code-inspector-core-0.13.0.tgz"
|
resolved "https://registry.yarnpkg.com/code-inspector-core/-/code-inspector-core-0.18.2.tgz#5d4845789411d8ce2203a8b92b32d023fe6b0e0b"
|
||||||
integrity sha512-oYPNLdJjn3SY50YtF3IuxZOKLBNwzXSRPOqiXVnZFceMz9Ar6ugP3+zj7HszouxrsLFb2dVtlv//5wr4+cq62A==
|
integrity sha512-2fnBXAF5apwrhvih6mseoklbcveMRulAByZiO2BNdfK77LjaBnbLZAxZqUVdgZhXmewkMBrVrPRQVRoldhdpIQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@vue/compiler-dom" "^3.2.47"
|
"@vue/compiler-dom" "^3.2.47"
|
||||||
chalk "^4.1.1"
|
chalk "^4.1.1"
|
||||||
|
dotenv "^16.1.4"
|
||||||
|
launch-ide "1.0.0"
|
||||||
portfinder "^1.0.28"
|
portfinder "^1.0.28"
|
||||||
|
|
||||||
code-inspector-plugin@^0.13.0:
|
code-inspector-plugin@^0.18.1:
|
||||||
version "0.13.0"
|
version "0.18.2"
|
||||||
resolved "https://registry.npmjs.org/code-inspector-plugin/-/code-inspector-plugin-0.13.0.tgz"
|
resolved "https://registry.yarnpkg.com/code-inspector-plugin/-/code-inspector-plugin-0.18.2.tgz#b604edef92b7eb6654a1a1660b3dfc5831fd7a14"
|
||||||
integrity sha512-v4mq5hhHkyMmutembTzREVsFeZ/+KsCwfx20+0gTqm1Il/M1T4d2BCv9mZ4ivie3GvvDMt/pVz1iBBVP3SuzJA==
|
integrity sha512-LKOhA4YsoUZ6Dq4OQKP7G+kPcfeYGLoIQz7EDG4yoL5mqSu+uWR+0QvzoDc4HGXQ0jpkzEwlatbH6fBlbPiwKQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
chalk "4.1.1"
|
chalk "4.1.1"
|
||||||
code-inspector-core "0.13.0"
|
code-inspector-core "0.18.2"
|
||||||
vite-code-inspector-plugin "0.13.0"
|
dotenv "^16.3.1"
|
||||||
webpack-code-inspector-plugin "0.13.0"
|
esbuild-code-inspector-plugin "0.18.2"
|
||||||
|
vite-code-inspector-plugin "0.18.2"
|
||||||
|
webpack-code-inspector-plugin "0.18.2"
|
||||||
|
|
||||||
collect-v8-coverage@^1.0.0:
|
collect-v8-coverage@^1.0.0:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
@ -5514,6 +5617,11 @@ concat-map@0.0.1:
|
|||||||
resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
|
resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
|
||||||
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
|
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
|
||||||
|
|
||||||
|
confbox@^0.1.8:
|
||||||
|
version "0.1.8"
|
||||||
|
resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.1.8.tgz#820d73d3b3c82d9bd910652c5d4d599ef8ff8b06"
|
||||||
|
integrity sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==
|
||||||
|
|
||||||
console-browserify@^1.2.0:
|
console-browserify@^1.2.0:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336"
|
resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336"
|
||||||
@ -5587,6 +5695,13 @@ cose-base@^1.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
layout-base "^1.0.0"
|
layout-base "^1.0.0"
|
||||||
|
|
||||||
|
cose-base@^2.2.0:
|
||||||
|
version "2.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/cose-base/-/cose-base-2.2.0.tgz#1c395c35b6e10bb83f9769ca8b817d614add5c01"
|
||||||
|
integrity sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==
|
||||||
|
dependencies:
|
||||||
|
layout-base "^2.0.0"
|
||||||
|
|
||||||
cosmiconfig@^7.0.1:
|
cosmiconfig@^7.0.1:
|
||||||
version "7.1.0"
|
version "7.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6"
|
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6"
|
||||||
@ -5764,10 +5879,17 @@ cytoscape-cose-bilkent@^4.1.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
cose-base "^1.0.0"
|
cose-base "^1.0.0"
|
||||||
|
|
||||||
cytoscape@^3.28.1:
|
cytoscape-fcose@^2.2.0:
|
||||||
version "3.30.2"
|
version "2.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/cytoscape/-/cytoscape-3.30.2.tgz#94149707fb6547a55e3b44f03ffe232706212161"
|
resolved "https://registry.yarnpkg.com/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz#e4d6f6490df4fab58ae9cea9e5c3ab8d7472f471"
|
||||||
integrity sha512-oICxQsjW8uSaRmn4UK/jkczKOqTrVqt5/1WL0POiJUT2EKNc9STM4hYFHv917yu55aTBMFNRzymlJhVAiWPCxw==
|
integrity sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==
|
||||||
|
dependencies:
|
||||||
|
cose-base "^2.2.0"
|
||||||
|
|
||||||
|
cytoscape@^3.29.2:
|
||||||
|
version "3.30.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/cytoscape/-/cytoscape-3.30.4.tgz#3404da0a159c00a1a3df2c85b2b43fdc66a0e28e"
|
||||||
|
integrity sha512-OxtlZwQl1WbwMmLiyPSEBuzeTIQnwZhJYYWFzZ2PhEHVFwpeaqNIkUzSiso00D98qk60l8Gwon2RP304d3BJ1A==
|
||||||
|
|
||||||
"d3-array@1 - 2":
|
"d3-array@1 - 2":
|
||||||
version "2.12.1"
|
version "2.12.1"
|
||||||
@ -6004,10 +6126,10 @@ d3-zoom@3, d3-zoom@^3.0.0:
|
|||||||
d3-selection "2 - 3"
|
d3-selection "2 - 3"
|
||||||
d3-transition "2 - 3"
|
d3-transition "2 - 3"
|
||||||
|
|
||||||
d3@^7.4.0, d3@^7.8.2:
|
d3@^7.9.0:
|
||||||
version "7.8.5"
|
version "7.9.0"
|
||||||
resolved "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz"
|
resolved "https://registry.yarnpkg.com/d3/-/d3-7.9.0.tgz#579e7acb3d749caf8860bd1741ae8d371070cd5d"
|
||||||
integrity sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==
|
integrity sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==
|
||||||
dependencies:
|
dependencies:
|
||||||
d3-array "3"
|
d3-array "3"
|
||||||
d3-axis "3"
|
d3-axis "3"
|
||||||
@ -6040,12 +6162,12 @@ d3@^7.4.0, d3@^7.8.2:
|
|||||||
d3-transition "3"
|
d3-transition "3"
|
||||||
d3-zoom "3"
|
d3-zoom "3"
|
||||||
|
|
||||||
dagre-d3-es@7.0.10:
|
dagre-d3-es@7.0.11:
|
||||||
version "7.0.10"
|
version "7.0.11"
|
||||||
resolved "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz"
|
resolved "https://registry.yarnpkg.com/dagre-d3-es/-/dagre-d3-es-7.0.11.tgz#2237e726c0577bfe67d1a7cfd2265b9ab2c15c40"
|
||||||
integrity sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==
|
integrity sha512-tvlJLyQf834SylNKax8Wkzco/1ias1OPw8DcUMDE7oUIoSEW25riQVuiu/0OWEFqT0cxHT3Pa9/D82Jr47IONw==
|
||||||
dependencies:
|
dependencies:
|
||||||
d3 "^7.8.2"
|
d3 "^7.9.0"
|
||||||
lodash-es "^4.17.21"
|
lodash-es "^4.17.21"
|
||||||
|
|
||||||
damerau-levenshtein@^1.0.8:
|
damerau-levenshtein@^1.0.8:
|
||||||
@ -6062,6 +6184,11 @@ data-urls@^3.0.2:
|
|||||||
whatwg-mimetype "^3.0.0"
|
whatwg-mimetype "^3.0.0"
|
||||||
whatwg-url "^11.0.0"
|
whatwg-url "^11.0.0"
|
||||||
|
|
||||||
|
dayjs@^1.11.10:
|
||||||
|
version "1.11.13"
|
||||||
|
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c"
|
||||||
|
integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==
|
||||||
|
|
||||||
dayjs@^1.11.7, dayjs@^1.9.1:
|
dayjs@^1.11.7, dayjs@^1.9.1:
|
||||||
version "1.11.8"
|
version "1.11.8"
|
||||||
resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.8.tgz"
|
resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.8.tgz"
|
||||||
@ -6095,6 +6222,13 @@ debug@^4.0.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4:
|
|||||||
dependencies:
|
dependencies:
|
||||||
ms "2.1.2"
|
ms "2.1.2"
|
||||||
|
|
||||||
|
debug@^4.3.6:
|
||||||
|
version "4.3.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52"
|
||||||
|
integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==
|
||||||
|
dependencies:
|
||||||
|
ms "^2.1.3"
|
||||||
|
|
||||||
decimal.js@^10.4.2:
|
decimal.js@^10.4.2:
|
||||||
version "10.4.3"
|
version "10.4.3"
|
||||||
resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23"
|
resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23"
|
||||||
@ -6401,10 +6535,12 @@ domhandler@^5.0.2, domhandler@^5.0.3:
|
|||||||
dependencies:
|
dependencies:
|
||||||
domelementtype "^2.3.0"
|
domelementtype "^2.3.0"
|
||||||
|
|
||||||
"dompurify@^3.0.5 <3.1.7":
|
dompurify@^3.2.1:
|
||||||
version "3.1.6"
|
version "3.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.1.6.tgz#43c714a94c6a7b8801850f82e756685300a027e2"
|
resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.2.2.tgz#6c0518745e81686c74a684f5af1e5613e7cc0246"
|
||||||
integrity sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ==
|
integrity sha512-YMM+erhdZ2nkZ4fTNRTSI94mb7VG7uVF5vj5Zde7tImgnhZE3R6YW/IACGIHb2ux+QkEXMhe591N+5jWOmL4Zw==
|
||||||
|
optionalDependencies:
|
||||||
|
"@types/trusted-types" "^2.0.7"
|
||||||
|
|
||||||
domutils@^2.5.2, domutils@^2.8.0:
|
domutils@^2.5.2, domutils@^2.8.0:
|
||||||
version "2.8.0"
|
version "2.8.0"
|
||||||
@ -6432,6 +6568,11 @@ dot-case@^3.0.4:
|
|||||||
no-case "^3.0.4"
|
no-case "^3.0.4"
|
||||||
tslib "^2.0.3"
|
tslib "^2.0.3"
|
||||||
|
|
||||||
|
dotenv@^16.1.4, dotenv@^16.3.1:
|
||||||
|
version "16.4.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26"
|
||||||
|
integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==
|
||||||
|
|
||||||
echarts-for-react@^3.0.2:
|
echarts-for-react@^3.0.2:
|
||||||
version "3.0.2"
|
version "3.0.2"
|
||||||
resolved "https://registry.npmjs.org/echarts-for-react/-/echarts-for-react-3.0.2.tgz"
|
resolved "https://registry.npmjs.org/echarts-for-react/-/echarts-for-react-3.0.2.tgz"
|
||||||
@ -6468,7 +6609,7 @@ electron-to-chromium@^1.5.28:
|
|||||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.40.tgz#5f6aec13751123c5c3185999ebe3e7bcaf828c2b"
|
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.40.tgz#5f6aec13751123c5c3185999ebe3e7bcaf828c2b"
|
||||||
integrity sha512-LYm78o6if4zTasnYclgQzxEcgMoIcybWOhkATWepN95uwVVWV0/IW10v+2sIeHE+bIYWipLneTftVyQm45UY7g==
|
integrity sha512-LYm78o6if4zTasnYclgQzxEcgMoIcybWOhkATWepN95uwVVWV0/IW10v+2sIeHE+bIYWipLneTftVyQm45UY7g==
|
||||||
|
|
||||||
elkjs@^0.9.0:
|
elkjs@^0.9.3:
|
||||||
version "0.9.3"
|
version "0.9.3"
|
||||||
resolved "https://registry.yarnpkg.com/elkjs/-/elkjs-0.9.3.tgz#16711f8ceb09f1b12b99e971b138a8384a529161"
|
resolved "https://registry.yarnpkg.com/elkjs/-/elkjs-0.9.3.tgz#16711f8ceb09f1b12b99e971b138a8384a529161"
|
||||||
integrity sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==
|
integrity sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ==
|
||||||
@ -6704,6 +6845,13 @@ es-to-primitive@^1.2.1:
|
|||||||
is-date-object "^1.0.1"
|
is-date-object "^1.0.1"
|
||||||
is-symbol "^1.0.2"
|
is-symbol "^1.0.2"
|
||||||
|
|
||||||
|
esbuild-code-inspector-plugin@0.18.2:
|
||||||
|
version "0.18.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/esbuild-code-inspector-plugin/-/esbuild-code-inspector-plugin-0.18.2.tgz#3ecb938d3c05356ca2878c71edae9e4a24590b8f"
|
||||||
|
integrity sha512-q9Qh1xfUhHEtnmYt8eXCAzdbFLaBMgC6wrwmGH7JI2nztYlcpVD4HeAnheQ9ZTaoRGu+2L+qkpM5XQMd6xhUcQ==
|
||||||
|
dependencies:
|
||||||
|
code-inspector-core "0.18.2"
|
||||||
|
|
||||||
esbuild-register@^3.5.0:
|
esbuild-register@^3.5.0:
|
||||||
version "3.6.0"
|
version "3.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild-register/-/esbuild-register-3.6.0.tgz#cf270cfa677baebbc0010ac024b823cbf723a36d"
|
resolved "https://registry.yarnpkg.com/esbuild-register/-/esbuild-register-3.6.0.tgz#cf270cfa677baebbc0010ac024b823cbf723a36d"
|
||||||
@ -7810,6 +7958,11 @@ grapheme-splitter@^1.0.4:
|
|||||||
resolved "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz"
|
resolved "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz"
|
||||||
integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==
|
integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==
|
||||||
|
|
||||||
|
hachure-fill@^0.5.2:
|
||||||
|
version "0.5.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/hachure-fill/-/hachure-fill-0.5.2.tgz#d19bc4cc8750a5962b47fb1300557a85fcf934cc"
|
||||||
|
integrity sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==
|
||||||
|
|
||||||
has-bigints@^1.0.1, has-bigints@^1.0.2:
|
has-bigints@^1.0.1, has-bigints@^1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz"
|
resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz"
|
||||||
@ -9397,10 +9550,10 @@ keyv@^4.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
json-buffer "3.0.1"
|
json-buffer "3.0.1"
|
||||||
|
|
||||||
khroma@^2.0.0:
|
khroma@^2.1.0:
|
||||||
version "2.0.0"
|
version "2.1.0"
|
||||||
resolved "https://registry.npmjs.org/khroma/-/khroma-2.0.0.tgz"
|
resolved "https://registry.yarnpkg.com/khroma/-/khroma-2.1.0.tgz#45f2ce94ce231a437cf5b63c2e886e6eb42bbbb1"
|
||||||
integrity sha512-2J8rDNlQWbtiNYThZRvmMv5yt44ZakX+Tz5ZIp/mN1pt4snn+m030Va5Z4v8xA0cQFDXBwO/8i42xL4QPsVk3g==
|
integrity sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==
|
||||||
|
|
||||||
kleur@^3.0.3:
|
kleur@^3.0.3:
|
||||||
version "3.0.3"
|
version "3.0.3"
|
||||||
@ -9412,6 +9565,11 @@ kleur@^4.0.3:
|
|||||||
resolved "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz"
|
resolved "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz"
|
||||||
integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==
|
integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==
|
||||||
|
|
||||||
|
kolorist@^1.8.0:
|
||||||
|
version "1.8.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/kolorist/-/kolorist-1.8.0.tgz#edddbbbc7894bc13302cdf740af6374d4a04743c"
|
||||||
|
integrity sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==
|
||||||
|
|
||||||
lamejs@^1.2.1:
|
lamejs@^1.2.1:
|
||||||
version "1.2.1"
|
version "1.2.1"
|
||||||
resolved "https://registry.npmjs.org/lamejs/-/lamejs-1.2.1.tgz"
|
resolved "https://registry.npmjs.org/lamejs/-/lamejs-1.2.1.tgz"
|
||||||
@ -9419,6 +9577,17 @@ lamejs@^1.2.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
use-strict "1.0.1"
|
use-strict "1.0.1"
|
||||||
|
|
||||||
|
langium@3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/langium/-/langium-3.0.0.tgz#4938294eb57c59066ef955070ac4d0c917b26026"
|
||||||
|
integrity sha512-+Ez9EoiByeoTu/2BXmEaZ06iPNXM6thWJp02KfBO/raSMyCJ4jw7AkWWa+zBCTm0+Tw1Fj9FOxdqSskyN5nAwg==
|
||||||
|
dependencies:
|
||||||
|
chevrotain "~11.0.3"
|
||||||
|
chevrotain-allstar "~0.3.0"
|
||||||
|
vscode-languageserver "~9.0.1"
|
||||||
|
vscode-languageserver-textdocument "~1.0.11"
|
||||||
|
vscode-uri "~3.0.8"
|
||||||
|
|
||||||
language-subtag-registry@~0.3.2:
|
language-subtag-registry@~0.3.2:
|
||||||
version "0.3.22"
|
version "0.3.22"
|
||||||
resolved "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz"
|
resolved "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz"
|
||||||
@ -9431,11 +9600,24 @@ language-tags@=1.0.5:
|
|||||||
dependencies:
|
dependencies:
|
||||||
language-subtag-registry "~0.3.2"
|
language-subtag-registry "~0.3.2"
|
||||||
|
|
||||||
|
launch-ide@1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/launch-ide/-/launch-ide-1.0.0.tgz#be405fdef86cff69eeb53fb9ad59054a7480fd56"
|
||||||
|
integrity sha512-VnVnFZK97DySVgidvlHlbPYOgf0hWjYowdqPu5P9iw1vyA+JUPu7ldJdL3cQm0ILC+4Wf1jtOv/x2f/67ePIfQ==
|
||||||
|
dependencies:
|
||||||
|
chalk "^4.1.1"
|
||||||
|
dotenv "^16.1.4"
|
||||||
|
|
||||||
layout-base@^1.0.0:
|
layout-base@^1.0.0:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz"
|
resolved "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz"
|
||||||
integrity sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==
|
integrity sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==
|
||||||
|
|
||||||
|
layout-base@^2.0.0:
|
||||||
|
version "2.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/layout-base/-/layout-base-2.0.1.tgz#d0337913586c90f9c2c075292069f5c2da5dd285"
|
||||||
|
integrity sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==
|
||||||
|
|
||||||
leven@^3.1.0:
|
leven@^3.1.0:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
|
resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
|
||||||
@ -9521,6 +9703,14 @@ local-pkg@^0.4.3:
|
|||||||
resolved "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz"
|
resolved "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz"
|
||||||
integrity sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==
|
integrity sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==
|
||||||
|
|
||||||
|
local-pkg@^0.5.0:
|
||||||
|
version "0.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.5.1.tgz#69658638d2a95287534d4c2fff757980100dbb6d"
|
||||||
|
integrity sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==
|
||||||
|
dependencies:
|
||||||
|
mlly "^1.7.3"
|
||||||
|
pkg-types "^1.2.1"
|
||||||
|
|
||||||
locate-path@^5.0.0:
|
locate-path@^5.0.0:
|
||||||
version "5.0.0"
|
version "5.0.0"
|
||||||
resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz"
|
resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz"
|
||||||
@ -9542,7 +9732,7 @@ locate-path@^7.1.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
p-locate "^6.0.0"
|
p-locate "^6.0.0"
|
||||||
|
|
||||||
lodash-es@^4.17.21:
|
lodash-es@4.17.21, lodash-es@^4.17.21:
|
||||||
version "4.17.21"
|
version "4.17.21"
|
||||||
resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz"
|
resolved "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz"
|
||||||
integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
|
integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
|
||||||
@ -9705,6 +9895,11 @@ markdown-to-jsx@^7.4.5:
|
|||||||
resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-7.5.0.tgz#42ece0c71e842560a7d8bd9f81e7a34515c72150"
|
resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-7.5.0.tgz#42ece0c71e842560a7d8bd9f81e7a34515c72150"
|
||||||
integrity sha512-RrBNcMHiFPcz/iqIj0n3wclzHXjwS7mzjBNWecKKVhNTIxQepIix6Il/wZCn2Cg5Y1ow2Qi84+eJrryFRWBEWw==
|
integrity sha512-RrBNcMHiFPcz/iqIj0n3wclzHXjwS7mzjBNWecKKVhNTIxQepIix6Il/wZCn2Cg5Y1ow2Qi84+eJrryFRWBEWw==
|
||||||
|
|
||||||
|
marked@^13.0.2:
|
||||||
|
version "13.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/marked/-/marked-13.0.3.tgz#5c5b4a5d0198060c7c9bc6ef9420a7fed30f822d"
|
||||||
|
integrity sha512-rqRix3/TWzE9rIoFGIn8JmsVfhiuC8VIQ8IdX5TfzmeBucdY05/0UlzKaw0eVtpcN/OdVFpBk7CjKGo9iHJ/zA==
|
||||||
|
|
||||||
md5.js@^1.3.4:
|
md5.js@^1.3.4:
|
||||||
version "1.3.5"
|
version "1.3.5"
|
||||||
resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
|
resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
|
||||||
@ -9744,7 +9939,7 @@ mdast-util-from-markdown@^0.8.5:
|
|||||||
parse-entities "^2.0.0"
|
parse-entities "^2.0.0"
|
||||||
unist-util-stringify-position "^2.0.0"
|
unist-util-stringify-position "^2.0.0"
|
||||||
|
|
||||||
mdast-util-from-markdown@^1.0.0, mdast-util-from-markdown@^1.1.0, mdast-util-from-markdown@^1.3.0:
|
mdast-util-from-markdown@^1.0.0, mdast-util-from-markdown@^1.1.0:
|
||||||
version "1.3.1"
|
version "1.3.1"
|
||||||
resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz"
|
resolved "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz"
|
||||||
integrity sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==
|
integrity sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==
|
||||||
@ -9990,31 +10185,31 @@ merge2@^1.3.0, merge2@^1.4.1:
|
|||||||
resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz"
|
resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz"
|
||||||
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
|
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
|
||||||
|
|
||||||
mermaid@10.9.3:
|
mermaid@11.4.1:
|
||||||
version "10.9.3"
|
version "11.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-10.9.3.tgz#90bc6f15c33dbe5d9507fed31592cc0d88fee9f7"
|
resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-11.4.1.tgz#577fad5c31a01a06d9f793e298d411f1379eecc8"
|
||||||
integrity sha512-V80X1isSEvAewIL3xhmz/rVmc27CVljcsbWxkxlWJWY/1kQa4XOABqpDl2qQLGKzpKm6WbTfUEKImBlUfFYArw==
|
integrity sha512-Mb01JT/x6CKDWaxigwfZYuYmDZ6xtrNwNlidKZwkSrDaY9n90tdrJTV5Umk+wP1fZscGptmKFXHsXMDEVZ+Q6A==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@braintree/sanitize-url" "^6.0.1"
|
"@braintree/sanitize-url" "^7.0.1"
|
||||||
"@types/d3-scale" "^4.0.3"
|
"@iconify/utils" "^2.1.32"
|
||||||
"@types/d3-scale-chromatic" "^3.0.0"
|
"@mermaid-js/parser" "^0.3.0"
|
||||||
cytoscape "^3.28.1"
|
"@types/d3" "^7.4.3"
|
||||||
|
cytoscape "^3.29.2"
|
||||||
cytoscape-cose-bilkent "^4.1.0"
|
cytoscape-cose-bilkent "^4.1.0"
|
||||||
d3 "^7.4.0"
|
cytoscape-fcose "^2.2.0"
|
||||||
|
d3 "^7.9.0"
|
||||||
d3-sankey "^0.12.3"
|
d3-sankey "^0.12.3"
|
||||||
dagre-d3-es "7.0.10"
|
dagre-d3-es "7.0.11"
|
||||||
dayjs "^1.11.7"
|
dayjs "^1.11.10"
|
||||||
dompurify "^3.0.5 <3.1.7"
|
dompurify "^3.2.1"
|
||||||
elkjs "^0.9.0"
|
|
||||||
katex "^0.16.9"
|
katex "^0.16.9"
|
||||||
khroma "^2.0.0"
|
khroma "^2.1.0"
|
||||||
lodash-es "^4.17.21"
|
lodash-es "^4.17.21"
|
||||||
mdast-util-from-markdown "^1.3.0"
|
marked "^13.0.2"
|
||||||
non-layered-tidy-tree-layout "^2.0.2"
|
roughjs "^4.6.6"
|
||||||
stylis "^4.1.3"
|
stylis "^4.3.1"
|
||||||
ts-dedent "^2.2.0"
|
ts-dedent "^2.2.0"
|
||||||
uuid "^9.0.0"
|
uuid "^9.0.1"
|
||||||
web-worker "^1.2.0"
|
|
||||||
|
|
||||||
methods@~1.1.2:
|
methods@~1.1.2:
|
||||||
version "1.1.2"
|
version "1.1.2"
|
||||||
@ -10545,6 +10740,16 @@ mkdirp@^0.5.6:
|
|||||||
dependencies:
|
dependencies:
|
||||||
minimist "^1.2.6"
|
minimist "^1.2.6"
|
||||||
|
|
||||||
|
mlly@^1.7.1, mlly@^1.7.2, mlly@^1.7.3:
|
||||||
|
version "1.7.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.7.3.tgz#d86c0fcd8ad8e16395eb764a5f4b831590cee48c"
|
||||||
|
integrity sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==
|
||||||
|
dependencies:
|
||||||
|
acorn "^8.14.0"
|
||||||
|
pathe "^1.1.2"
|
||||||
|
pkg-types "^1.2.1"
|
||||||
|
ufo "^1.5.4"
|
||||||
|
|
||||||
mri@^1.1.0:
|
mri@^1.1.0:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz"
|
resolved "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz"
|
||||||
@ -10560,7 +10765,7 @@ ms@2.1.2, ms@^2.1.1:
|
|||||||
resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
|
resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
|
||||||
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
|
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
|
||||||
|
|
||||||
ms@2.1.3:
|
ms@2.1.3, ms@^2.1.3:
|
||||||
version "2.1.3"
|
version "2.1.3"
|
||||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
|
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
|
||||||
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
|
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
|
||||||
@ -10686,11 +10891,6 @@ node-releases@^2.0.18:
|
|||||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f"
|
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f"
|
||||||
integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==
|
integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==
|
||||||
|
|
||||||
non-layered-tidy-tree-layout@^2.0.2:
|
|
||||||
version "2.0.2"
|
|
||||||
resolved "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz"
|
|
||||||
integrity sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==
|
|
||||||
|
|
||||||
normalize-package-data@^2.5.0:
|
normalize-package-data@^2.5.0:
|
||||||
version "2.5.0"
|
version "2.5.0"
|
||||||
resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz"
|
resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz"
|
||||||
@ -10958,6 +11158,11 @@ p-try@^2.0.0:
|
|||||||
resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz"
|
resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz"
|
||||||
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
|
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
|
||||||
|
|
||||||
|
package-manager-detector@^0.2.0:
|
||||||
|
version "0.2.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/package-manager-detector/-/package-manager-detector-0.2.6.tgz#7dc8e30ad94861d36114b4499a72d57b30549943"
|
||||||
|
integrity sha512-9vPH3qooBlYRJdmdYP00nvjZOulm40r5dhtal8st18ctf+6S1k7pi5yIHLvI4w5D70x0Y+xdVD9qITH0QO/A8A==
|
||||||
|
|
||||||
pako@~1.0.5:
|
pako@~1.0.5:
|
||||||
version "1.0.11"
|
version "1.0.11"
|
||||||
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
|
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
|
||||||
@ -11056,6 +11261,11 @@ path-browserify@^1.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd"
|
resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd"
|
||||||
integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==
|
integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==
|
||||||
|
|
||||||
|
path-data-parser@0.1.0, path-data-parser@^0.1.0:
|
||||||
|
version "0.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/path-data-parser/-/path-data-parser-0.1.0.tgz#8f5ba5cc70fc7becb3dcefaea08e2659aba60b8c"
|
||||||
|
integrity sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==
|
||||||
|
|
||||||
path-exists@^4.0.0:
|
path-exists@^4.0.0:
|
||||||
version "4.0.0"
|
version "4.0.0"
|
||||||
resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
|
resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
|
||||||
@ -11104,6 +11314,11 @@ path-type@^4.0.0:
|
|||||||
resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz"
|
resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz"
|
||||||
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
|
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
|
||||||
|
|
||||||
|
pathe@^1.1.2:
|
||||||
|
version "1.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec"
|
||||||
|
integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==
|
||||||
|
|
||||||
pathval@^2.0.0:
|
pathval@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/pathval/-/pathval-2.0.0.tgz#7e2550b422601d4f6b8e26f1301bc8f15a741a25"
|
resolved "https://registry.yarnpkg.com/pathval/-/pathval-2.0.0.tgz#7e2550b422601d4f6b8e26f1301bc8f15a741a25"
|
||||||
@ -11183,6 +11398,15 @@ pkg-dir@^7.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
find-up "^6.3.0"
|
find-up "^6.3.0"
|
||||||
|
|
||||||
|
pkg-types@^1.2.1:
|
||||||
|
version "1.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.2.1.tgz#6ac4e455a5bb4b9a6185c1c79abd544c901db2e5"
|
||||||
|
integrity sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==
|
||||||
|
dependencies:
|
||||||
|
confbox "^0.1.8"
|
||||||
|
mlly "^1.7.2"
|
||||||
|
pathe "^1.1.2"
|
||||||
|
|
||||||
pluralize@^8.0.0:
|
pluralize@^8.0.0:
|
||||||
version "8.0.0"
|
version "8.0.0"
|
||||||
resolved "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz"
|
resolved "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz"
|
||||||
@ -11195,6 +11419,19 @@ pnp-webpack-plugin@^1.7.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
ts-pnp "^1.1.6"
|
ts-pnp "^1.1.6"
|
||||||
|
|
||||||
|
points-on-curve@0.2.0, points-on-curve@^0.2.0:
|
||||||
|
version "0.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/points-on-curve/-/points-on-curve-0.2.0.tgz#7dbb98c43791859434284761330fa893cb81b4d1"
|
||||||
|
integrity sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==
|
||||||
|
|
||||||
|
points-on-path@^0.2.1:
|
||||||
|
version "0.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/points-on-path/-/points-on-path-0.2.1.tgz#553202b5424c53bed37135b318858eacff85dd52"
|
||||||
|
integrity sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==
|
||||||
|
dependencies:
|
||||||
|
path-data-parser "0.1.0"
|
||||||
|
points-on-curve "0.2.0"
|
||||||
|
|
||||||
polished@^4.2.2:
|
polished@^4.2.2:
|
||||||
version "4.3.1"
|
version "4.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/polished/-/polished-4.3.1.tgz#5a00ae32715609f83d89f6f31d0f0261c6170548"
|
resolved "https://registry.yarnpkg.com/polished/-/polished-4.3.1.tgz#5a00ae32715609f83d89f6f31d0f0261c6170548"
|
||||||
@ -12259,6 +12496,16 @@ robust-predicates@^3.0.0:
|
|||||||
resolved "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz"
|
resolved "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz"
|
||||||
integrity sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==
|
integrity sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==
|
||||||
|
|
||||||
|
roughjs@^4.6.6:
|
||||||
|
version "4.6.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/roughjs/-/roughjs-4.6.6.tgz#1059f49a5e0c80dee541a005b20cc322b222158b"
|
||||||
|
integrity sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==
|
||||||
|
dependencies:
|
||||||
|
hachure-fill "^0.5.2"
|
||||||
|
path-data-parser "^0.1.0"
|
||||||
|
points-on-curve "^0.2.0"
|
||||||
|
points-on-path "^0.2.1"
|
||||||
|
|
||||||
run-applescript@^5.0.0:
|
run-applescript@^5.0.0:
|
||||||
version "5.0.0"
|
version "5.0.0"
|
||||||
resolved "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz"
|
resolved "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz"
|
||||||
@ -12981,10 +13228,10 @@ styled-jsx@^5.1.6:
|
|||||||
dependencies:
|
dependencies:
|
||||||
client-only "0.0.1"
|
client-only "0.0.1"
|
||||||
|
|
||||||
stylis@^4.1.3:
|
stylis@^4.3.1:
|
||||||
version "4.3.0"
|
version "4.3.4"
|
||||||
resolved "https://registry.npmjs.org/stylis/-/stylis-4.3.0.tgz"
|
resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.4.tgz#ca5c6c4a35c4784e4e93a2a24dc4e9fa075250a4"
|
||||||
integrity sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ==
|
integrity sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now==
|
||||||
|
|
||||||
sucrase@^3.32.0:
|
sucrase@^3.32.0:
|
||||||
version "3.32.0"
|
version "3.32.0"
|
||||||
@ -13171,6 +13418,11 @@ tiny-invariant@^1.3.1, tiny-invariant@^1.3.3:
|
|||||||
resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127"
|
resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127"
|
||||||
integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==
|
integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==
|
||||||
|
|
||||||
|
tinyexec@^0.3.0:
|
||||||
|
version "0.3.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/tinyexec/-/tinyexec-0.3.1.tgz#0ab0daf93b43e2c211212396bdb836b468c97c98"
|
||||||
|
integrity sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==
|
||||||
|
|
||||||
tinyrainbow@^1.2.0:
|
tinyrainbow@^1.2.0:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/tinyrainbow/-/tinyrainbow-1.2.0.tgz#5c57d2fc0fb3d1afd78465c33ca885d04f02abb5"
|
resolved "https://registry.yarnpkg.com/tinyrainbow/-/tinyrainbow-1.2.0.tgz#5c57d2fc0fb3d1afd78465c33ca885d04f02abb5"
|
||||||
@ -13433,6 +13685,11 @@ typescript@4.9.5:
|
|||||||
resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz"
|
resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz"
|
||||||
integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
|
integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
|
||||||
|
|
||||||
|
ufo@^1.5.4:
|
||||||
|
version "1.5.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.5.4.tgz#16d6949674ca0c9e0fbbae1fa20a71d7b1ded754"
|
||||||
|
integrity sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==
|
||||||
|
|
||||||
uglify-js@^3.17.4:
|
uglify-js@^3.17.4:
|
||||||
version "3.17.4"
|
version "3.17.4"
|
||||||
resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz"
|
resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz"
|
||||||
@ -13801,12 +14058,12 @@ vfile@^6.0.0:
|
|||||||
unist-util-stringify-position "^4.0.0"
|
unist-util-stringify-position "^4.0.0"
|
||||||
vfile-message "^4.0.0"
|
vfile-message "^4.0.0"
|
||||||
|
|
||||||
vite-code-inspector-plugin@0.13.0:
|
vite-code-inspector-plugin@0.18.2:
|
||||||
version "0.13.0"
|
version "0.18.2"
|
||||||
resolved "https://registry.npmjs.org/vite-code-inspector-plugin/-/vite-code-inspector-plugin-0.13.0.tgz"
|
resolved "https://registry.yarnpkg.com/vite-code-inspector-plugin/-/vite-code-inspector-plugin-0.18.2.tgz#33be5f7408ea81163d833c8f06c2ff1e18669ee4"
|
||||||
integrity sha512-hvIn9G+IFzQHVVynWh2wGTBHo51CBJRqQBzYryeuuaL0BK0w8my2/tlpSAae5ofQxOBXBMhyXC2gWgYUJnNWrA==
|
integrity sha512-MfHvere+71vL0BOposwgbHKZ8o973mYnMhGmU4uzOMt+gsmIjqHxcUkak9K2RMkRB1mG7/Gehvyy28SkUuhg3A==
|
||||||
dependencies:
|
dependencies:
|
||||||
code-inspector-core "0.13.0"
|
code-inspector-core "0.18.2"
|
||||||
|
|
||||||
vm-browserify@^1.1.2:
|
vm-browserify@^1.1.2:
|
||||||
version "1.1.2"
|
version "1.1.2"
|
||||||
@ -13818,6 +14075,41 @@ void-elements@3.1.0:
|
|||||||
resolved "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz"
|
resolved "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz"
|
||||||
integrity sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==
|
integrity sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==
|
||||||
|
|
||||||
|
vscode-jsonrpc@8.2.0:
|
||||||
|
version "8.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz#f43dfa35fb51e763d17cd94dcca0c9458f35abf9"
|
||||||
|
integrity sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==
|
||||||
|
|
||||||
|
vscode-languageserver-protocol@3.17.5:
|
||||||
|
version "3.17.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz#864a8b8f390835572f4e13bd9f8313d0e3ac4bea"
|
||||||
|
integrity sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==
|
||||||
|
dependencies:
|
||||||
|
vscode-jsonrpc "8.2.0"
|
||||||
|
vscode-languageserver-types "3.17.5"
|
||||||
|
|
||||||
|
vscode-languageserver-textdocument@~1.0.11:
|
||||||
|
version "1.0.12"
|
||||||
|
resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz#457ee04271ab38998a093c68c2342f53f6e4a631"
|
||||||
|
integrity sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==
|
||||||
|
|
||||||
|
vscode-languageserver-types@3.17.5:
|
||||||
|
version "3.17.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz#3273676f0cf2eab40b3f44d085acbb7f08a39d8a"
|
||||||
|
integrity sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==
|
||||||
|
|
||||||
|
vscode-languageserver@~9.0.1:
|
||||||
|
version "9.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz#500aef82097eb94df90d008678b0b6b5f474015b"
|
||||||
|
integrity sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==
|
||||||
|
dependencies:
|
||||||
|
vscode-languageserver-protocol "3.17.5"
|
||||||
|
|
||||||
|
vscode-uri@~3.0.8:
|
||||||
|
version "3.0.8"
|
||||||
|
resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.0.8.tgz#1770938d3e72588659a172d0fd4642780083ff9f"
|
||||||
|
integrity sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==
|
||||||
|
|
||||||
vue-eslint-parser@^9.3.0:
|
vue-eslint-parser@^9.3.0:
|
||||||
version "9.3.0"
|
version "9.3.0"
|
||||||
resolved "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.0.tgz"
|
resolved "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.0.tgz"
|
||||||
@ -13858,22 +14150,17 @@ web-namespaces@^2.0.0:
|
|||||||
resolved "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz"
|
resolved "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz"
|
||||||
integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==
|
integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==
|
||||||
|
|
||||||
web-worker@^1.2.0:
|
|
||||||
version "1.2.0"
|
|
||||||
resolved "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz"
|
|
||||||
integrity sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==
|
|
||||||
|
|
||||||
webidl-conversions@^7.0.0:
|
webidl-conversions@^7.0.0:
|
||||||
version "7.0.0"
|
version "7.0.0"
|
||||||
resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a"
|
resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a"
|
||||||
integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==
|
integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==
|
||||||
|
|
||||||
webpack-code-inspector-plugin@0.13.0:
|
webpack-code-inspector-plugin@0.18.2:
|
||||||
version "0.13.0"
|
version "0.18.2"
|
||||||
resolved "https://registry.npmjs.org/webpack-code-inspector-plugin/-/webpack-code-inspector-plugin-0.13.0.tgz"
|
resolved "https://registry.yarnpkg.com/webpack-code-inspector-plugin/-/webpack-code-inspector-plugin-0.18.2.tgz#c2355d384c12212de5662fa8bc5898f449886b0a"
|
||||||
integrity sha512-T3ZZ84NX0cVmwff5zyYhB9OuroZYsyaQpSgFicgiuYAWCsQePYApM/R3bHdvcECkBXO50hAVtr9SjWRTu1+Ntg==
|
integrity sha512-sSUgrISb8KqKGiX+AvKA5FAdiOh41nEX/EU+c/d1ChYQmwLDdWXxsMyAs494R3r+ihVUchhLalb9V6TvDKTOCA==
|
||||||
dependencies:
|
dependencies:
|
||||||
code-inspector-core "0.13.0"
|
code-inspector-core "0.18.2"
|
||||||
|
|
||||||
webpack-dev-middleware@^6.1.2:
|
webpack-dev-middleware@^6.1.2:
|
||||||
version "6.1.3"
|
version "6.1.3"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user