diff --git a/api/constants/__init__.py b/api/constants/__init__.py
index fe8f4f8785..9141fbea95 100644
--- a/api/constants/__init__.py
+++ b/api/constants/__init__.py
@@ -1,4 +1,5 @@
from configs import dify_config
+from libs.collection_utils import convert_to_lower_and_upper_set
HIDDEN_VALUE = "[__HIDDEN__]"
UNKNOWN_VALUE = "[__UNKNOWN__]"
@@ -6,24 +7,39 @@ UUID_NIL = "00000000-0000-0000-0000-000000000000"
DEFAULT_FILE_NUMBER_LIMITS = 3
-IMAGE_EXTENSIONS = ["jpg", "jpeg", "png", "webp", "gif", "svg"]
-IMAGE_EXTENSIONS.extend([ext.upper() for ext in IMAGE_EXTENSIONS])
+IMAGE_EXTENSIONS = convert_to_lower_and_upper_set({"jpg", "jpeg", "png", "webp", "gif", "svg"})
-VIDEO_EXTENSIONS = ["mp4", "mov", "mpeg", "webm"]
-VIDEO_EXTENSIONS.extend([ext.upper() for ext in VIDEO_EXTENSIONS])
+VIDEO_EXTENSIONS = convert_to_lower_and_upper_set({"mp4", "mov", "mpeg", "webm"})
-AUDIO_EXTENSIONS = ["mp3", "m4a", "wav", "amr", "mpga"]
-AUDIO_EXTENSIONS.extend([ext.upper() for ext in AUDIO_EXTENSIONS])
+AUDIO_EXTENSIONS = convert_to_lower_and_upper_set({"mp3", "m4a", "wav", "amr", "mpga"})
-
-_doc_extensions: list[str]
+_doc_extensions: set[str]
if dify_config.ETL_TYPE == "Unstructured":
- _doc_extensions = ["txt", "markdown", "md", "mdx", "pdf", "html", "htm", "xlsx", "xls", "vtt", "properties"]
- _doc_extensions.extend(("doc", "docx", "csv", "eml", "msg", "pptx", "xml", "epub"))
+ _doc_extensions = {
+ "txt",
+ "markdown",
+ "md",
+ "mdx",
+ "pdf",
+ "html",
+ "htm",
+ "xlsx",
+ "xls",
+ "vtt",
+ "properties",
+ "doc",
+ "docx",
+ "csv",
+ "eml",
+ "msg",
+ "pptx",
+ "xml",
+ "epub",
+ }
if dify_config.UNSTRUCTURED_API_URL:
- _doc_extensions.append("ppt")
+ _doc_extensions.add("ppt")
else:
- _doc_extensions = [
+ _doc_extensions = {
"txt",
"markdown",
"md",
@@ -37,5 +53,5 @@ else:
"csv",
"vtt",
"properties",
- ]
-DOCUMENT_EXTENSIONS = _doc_extensions + [ext.upper() for ext in _doc_extensions]
+ }
+DOCUMENT_EXTENSIONS: set[str] = convert_to_lower_and_upper_set(_doc_extensions)
diff --git a/api/extensions/ext_otel.py b/api/extensions/ext_otel.py
index b0059693e2..19c6e68c6b 100644
--- a/api/extensions/ext_otel.py
+++ b/api/extensions/ext_otel.py
@@ -136,6 +136,7 @@ def init_app(app: DifyApp):
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter as HTTPSpanExporter
from opentelemetry.instrumentation.celery import CeleryInstrumentor
from opentelemetry.instrumentation.flask import FlaskInstrumentor
+ from opentelemetry.instrumentation.httpx import HTTPXClientInstrumentor
from opentelemetry.instrumentation.redis import RedisInstrumentor
from opentelemetry.instrumentation.requests import RequestsInstrumentor
from opentelemetry.instrumentation.sqlalchemy import SQLAlchemyInstrumentor
@@ -238,6 +239,7 @@ def init_app(app: DifyApp):
init_sqlalchemy_instrumentor(app)
RedisInstrumentor().instrument()
RequestsInstrumentor().instrument()
+ HTTPXClientInstrumentor().instrument()
atexit.register(shutdown_tracer)
diff --git a/api/libs/collection_utils.py b/api/libs/collection_utils.py
new file mode 100644
index 0000000000..f97308ca44
--- /dev/null
+++ b/api/libs/collection_utils.py
@@ -0,0 +1,14 @@
+def convert_to_lower_and_upper_set(inputs: list[str] | set[str]) -> set[str]:
+ """
+ Convert a list or set of strings to a set containing both lower and upper case versions of each string.
+
+ Args:
+ inputs (list[str] | set[str]): A list or set of strings to be converted.
+
+ Returns:
+ set[str]: A set containing both lower and upper case versions of each string.
+ """
+ if not inputs:
+ return set()
+ else:
+ return {case for s in inputs if s for case in (s.lower(), s.upper())}
diff --git a/api/pyproject.toml b/api/pyproject.toml
index 96ca20c31c..1f51d60098 100644
--- a/api/pyproject.toml
+++ b/api/pyproject.toml
@@ -46,6 +46,7 @@ dependencies = [
"opentelemetry-instrumentation==0.48b0",
"opentelemetry-instrumentation-celery==0.48b0",
"opentelemetry-instrumentation-flask==0.48b0",
+ "opentelemetry-instrumentation-httpx==0.48b0",
"opentelemetry-instrumentation-redis==0.48b0",
"opentelemetry-instrumentation-requests==0.48b0",
"opentelemetry-instrumentation-sqlalchemy==0.48b0",
diff --git a/api/pyrightconfig.json b/api/pyrightconfig.json
index c733059331..9bc7498cb2 100644
--- a/api/pyrightconfig.json
+++ b/api/pyrightconfig.json
@@ -12,6 +12,7 @@
"flask_login",
"opentelemetry.instrumentation.celery",
"opentelemetry.instrumentation.flask",
+ "opentelemetry.instrumentation.httpx",
"opentelemetry.instrumentation.requests",
"opentelemetry.instrumentation.sqlalchemy",
"opentelemetry.instrumentation.redis"
@@ -23,7 +24,6 @@
"reportUnknownLambdaType": "hint",
"reportMissingParameterType": "hint",
"reportMissingTypeArgument": "hint",
- "reportUnnecessaryContains": "hint",
"reportUnnecessaryComparison": "hint",
"reportUnnecessaryCast": "hint",
"reportUnnecessaryIsInstance": "hint",
diff --git a/api/services/rag_pipeline/rag_pipeline_transform_service.py b/api/services/rag_pipeline/rag_pipeline_transform_service.py
index db9508824b..3d5a85b57f 100644
--- a/api/services/rag_pipeline/rag_pipeline_transform_service.py
+++ b/api/services/rag_pipeline/rag_pipeline_transform_service.py
@@ -149,8 +149,7 @@ class RagPipelineTransformService:
file_extensions = node.get("data", {}).get("fileExtensions", [])
if not file_extensions:
return node
- file_extensions = [file_extension.lower() for file_extension in file_extensions]
- node["data"]["fileExtensions"] = DOCUMENT_EXTENSIONS
+ node["data"]["fileExtensions"] = [ext.lower() for ext in file_extensions if ext in DOCUMENT_EXTENSIONS]
return node
def _deal_knowledge_index(
diff --git a/api/tasks/workflow_draft_var_tasks.py b/api/tasks/workflow_draft_var_tasks.py
index 457d46a9d8..fcb98ec39e 100644
--- a/api/tasks/workflow_draft_var_tasks.py
+++ b/api/tasks/workflow_draft_var_tasks.py
@@ -5,15 +5,10 @@ These tasks provide asynchronous storage capabilities for workflow execution dat
improving performance by offloading storage operations to background workers.
"""
-import logging
-
from celery import shared_task # type: ignore[import-untyped]
from sqlalchemy.orm import Session
from extensions.ext_database import db
-
-_logger = logging.getLogger(__name__)
-
from services.workflow_draft_variable_service import DraftVarFileDeletion, WorkflowDraftVariableService
diff --git a/api/uv.lock b/api/uv.lock
index 804c7abaa5..21d1f17bad 100644
--- a/api/uv.lock
+++ b/api/uv.lock
@@ -1323,6 +1323,7 @@ dependencies = [
{ name = "opentelemetry-instrumentation" },
{ name = "opentelemetry-instrumentation-celery" },
{ name = "opentelemetry-instrumentation-flask" },
+ { name = "opentelemetry-instrumentation-httpx" },
{ name = "opentelemetry-instrumentation-redis" },
{ name = "opentelemetry-instrumentation-requests" },
{ name = "opentelemetry-instrumentation-sqlalchemy" },
@@ -1513,6 +1514,7 @@ requires-dist = [
{ name = "opentelemetry-instrumentation", specifier = "==0.48b0" },
{ name = "opentelemetry-instrumentation-celery", specifier = "==0.48b0" },
{ name = "opentelemetry-instrumentation-flask", specifier = "==0.48b0" },
+ { name = "opentelemetry-instrumentation-httpx", specifier = "==0.48b0" },
{ name = "opentelemetry-instrumentation-redis", specifier = "==0.48b0" },
{ name = "opentelemetry-instrumentation-requests", specifier = "==0.48b0" },
{ name = "opentelemetry-instrumentation-sqlalchemy", specifier = "==0.48b0" },
@@ -3878,6 +3880,21 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/78/3d/fcde4f8f0bf9fa1ee73a12304fa538076fb83fe0a2ae966ab0f0b7da5109/opentelemetry_instrumentation_flask-0.48b0-py3-none-any.whl", hash = "sha256:26b045420b9d76e85493b1c23fcf27517972423480dc6cf78fd6924248ba5808", size = 14588, upload-time = "2024-08-28T21:26:58.504Z" },
]
+[[package]]
+name = "opentelemetry-instrumentation-httpx"
+version = "0.48b0"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "opentelemetry-api" },
+ { name = "opentelemetry-instrumentation" },
+ { name = "opentelemetry-semantic-conventions" },
+ { name = "opentelemetry-util-http" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/d3/d9/c65d818607c16d1b7ea8d2de6111c6cecadf8d2fd38c1885a72733a7c6d3/opentelemetry_instrumentation_httpx-0.48b0.tar.gz", hash = "sha256:ee977479e10398931921fb995ac27ccdeea2e14e392cb27ef012fc549089b60a", size = 16931, upload-time = "2024-08-28T21:28:03.794Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/c2/fe/f2daa9d6d988c093b8c7b1d35df675761a8ece0b600b035dc04982746c9d/opentelemetry_instrumentation_httpx-0.48b0-py3-none-any.whl", hash = "sha256:d94f9d612c82d09fe22944d1904a30a464c19bea2ba76be656c99a28ad8be8e5", size = 13900, upload-time = "2024-08-28T21:27:01.566Z" },
+]
+
[[package]]
name = "opentelemetry-instrumentation-redis"
version = "0.48b0"
diff --git a/web/__tests__/goto-anything/command-selector.test.tsx b/web/__tests__/goto-anything/command-selector.test.tsx
index 1db4be31fb..6d4e045d49 100644
--- a/web/__tests__/goto-anything/command-selector.test.tsx
+++ b/web/__tests__/goto-anything/command-selector.test.tsx
@@ -16,7 +16,7 @@ jest.mock('cmdk', () => ({
Item: ({ children, onSelect, value, className }: any) => (
onSelect && onSelect()}
+ onClick={() => onSelect?.()}
data-value={value}
data-testid={`command-item-${value}`}
>
diff --git a/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/config-button.tsx b/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/config-button.tsx
index 1ab40e31bf..246a1eb6a3 100644
--- a/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/config-button.tsx
+++ b/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/config-button.tsx
@@ -4,6 +4,7 @@ import React, { useCallback, useRef, useState } from 'react'
import type { PopupProps } from './config-popup'
import ConfigPopup from './config-popup'
+import cn from '@/utils/classnames'
import {
PortalToFollowElem,
PortalToFollowElemContent,
@@ -45,7 +46,7 @@ const ConfigBtn: FC
= ({
offset={12}
>
-
+
{children}
diff --git a/web/app/components/app/annotation/batch-add-annotation-modal/csv-uploader.tsx b/web/app/components/app/annotation/batch-add-annotation-modal/csv-uploader.tsx
index dfc8d10087..b98eb815f9 100644
--- a/web/app/components/app/annotation/batch-add-annotation-modal/csv-uploader.tsx
+++ b/web/app/components/app/annotation/batch-add-annotation-modal/csv-uploader.tsx
@@ -28,7 +28,8 @@ const CSVUploader: FC
= ({
const handleDragEnter = (e: DragEvent) => {
e.preventDefault()
e.stopPropagation()
- e.target !== dragRef.current && setDragging(true)
+ if (e.target !== dragRef.current)
+ setDragging(true)
}
const handleDragOver = (e: DragEvent) => {
e.preventDefault()
@@ -37,7 +38,8 @@ const CSVUploader: FC = ({
const handleDragLeave = (e: DragEvent) => {
e.preventDefault()
e.stopPropagation()
- e.target === dragRef.current && setDragging(false)
+ if (e.target === dragRef.current)
+ setDragging(false)
}
const handleDrop = (e: DragEvent) => {
e.preventDefault()
diff --git a/web/app/components/app/app-publisher/index.tsx b/web/app/components/app/app-publisher/index.tsx
index 53cceb8020..df2618b49c 100644
--- a/web/app/components/app/app-publisher/index.tsx
+++ b/web/app/components/app/app-publisher/index.tsx
@@ -348,7 +348,8 @@ const AppPublisher = ({
{
- publishedAt && handleOpenInExplore()
+ if (publishedAt)
+ handleOpenInExplore()
}}
disabled={!publishedAt || (systemFeatures.webapp_auth.enabled && !userCanAccessApp?.result)}
icon={}
diff --git a/web/app/components/app/app-publisher/version-info-modal.tsx b/web/app/components/app/app-publisher/version-info-modal.tsx
index 4d5d3705c1..263f187736 100644
--- a/web/app/components/app/app-publisher/version-info-modal.tsx
+++ b/web/app/components/app/app-publisher/version-info-modal.tsx
@@ -40,7 +40,8 @@ const VersionInfoModal: FC = ({
return
}
else {
- titleError && setTitleError(false)
+ if (titleError)
+ setTitleError(false)
}
if (releaseNotes.length > RELEASE_NOTES_MAX_LENGTH) {
@@ -52,7 +53,8 @@ const VersionInfoModal: FC = ({
return
}
else {
- releaseNotesError && setReleaseNotesError(false)
+ if (releaseNotesError)
+ setReleaseNotesError(false)
}
onPublish({ title, releaseNotes, id: versionInfo?.id })
diff --git a/web/app/components/app/configuration/base/icons/citation.tsx b/web/app/components/app/configuration/base/icons/citation.tsx
index e69de29bb2..3aa6b0f0e1 100644
--- a/web/app/components/app/configuration/base/icons/citation.tsx
+++ b/web/app/components/app/configuration/base/icons/citation.tsx
@@ -0,0 +1,29 @@
+import type { SVGProps } from 'react'
+
+const CitationIcon = (props: SVGProps) => (
+
+)
+
+export default CitationIcon
diff --git a/web/app/components/app/configuration/config-var/config-modal/index.tsx b/web/app/components/app/configuration/config-var/config-modal/index.tsx
index bedcbfedbd..8a02ca8caa 100644
--- a/web/app/components/app/configuration/config-var/config-modal/index.tsx
+++ b/web/app/components/app/configuration/config-var/config-modal/index.tsx
@@ -79,7 +79,7 @@ const ConfigModal: FC = ({
try {
return JSON.stringify(JSON.parse(tempPayload.json_schema).properties, null, 2)
}
- catch (_e) {
+ catch {
return ''
}
}, [tempPayload.json_schema])
@@ -123,7 +123,7 @@ const ConfigModal: FC = ({
}
handlePayloadChange('json_schema')(JSON.stringify(res, null, 2))
}
- catch (_e) {
+ catch {
return null
}
}, [handlePayloadChange])
diff --git a/web/app/components/app/configuration/index.tsx b/web/app/components/app/configuration/index.tsx
index f1f81ebf97..20229c9717 100644
--- a/web/app/components/app/configuration/index.tsx
+++ b/web/app/components/app/configuration/index.tsx
@@ -480,7 +480,7 @@ const Configuration: FC = () => {
Toast.notify({ type: 'warning', message: `${t('common.modelProvider.parametersInvalidRemoved')}: ${Object.entries(removedDetails).map(([k, reason]) => `${k} (${reason})`).join(', ')}` })
setCompletionParams(filtered)
}
- catch (e) {
+ catch {
Toast.notify({ type: 'error', message: t('common.error') })
setCompletionParams({})
}
diff --git a/web/app/components/app/configuration/prompt-value-panel/index.tsx b/web/app/components/app/configuration/prompt-value-panel/index.tsx
index e88268ba40..43c836132f 100644
--- a/web/app/components/app/configuration/prompt-value-panel/index.tsx
+++ b/web/app/components/app/configuration/prompt-value-panel/index.tsx
@@ -192,7 +192,7 @@ const PromptValuePanel: FC = ({
@@ -122,7 +122,7 @@ const ImageList: FC = ({
'rounded-2xl shadow-lg hover:bg-state-base-hover',
item.progress === -1 ? 'flex' : 'hidden group-hover:flex',
)}
- onClick={() => onRemove && onRemove(item._id)}
+ onClick={() => onRemove?.(item._id)}
>
diff --git a/web/app/components/base/image-uploader/image-preview.tsx b/web/app/components/base/image-uploader/image-preview.tsx
index e67edaa3ca..53c22e344f 100644
--- a/web/app/components/base/image-uploader/image-preview.tsx
+++ b/web/app/components/base/image-uploader/image-preview.tsx
@@ -20,7 +20,7 @@ const isBase64 = (str: string): boolean => {
try {
return btoa(atob(str)) === str
}
- catch (err) {
+ catch {
return false
}
}
diff --git a/web/app/components/base/markdown-blocks/code-block.tsx b/web/app/components/base/markdown-blocks/code-block.tsx
index 6814659a00..bc41c65fd5 100644
--- a/web/app/components/base/markdown-blocks/code-block.tsx
+++ b/web/app/components/base/markdown-blocks/code-block.tsx
@@ -127,7 +127,7 @@ const CodeBlock: any = memo(({ inline, className, children = '', ...props }: any
// Store event handlers in useMemo to avoid recreating them
const echartsEvents = useMemo(() => ({
- finished: (params: EChartsEventParams) => {
+ finished: (_params: EChartsEventParams) => {
// Limit finished event frequency to avoid infinite loops
finishedEventCountRef.current++
if (finishedEventCountRef.current > 3) {
diff --git a/web/app/components/base/mermaid/utils.ts b/web/app/components/base/mermaid/utils.ts
index 9d56494227..7e59869de1 100644
--- a/web/app/components/base/mermaid/utils.ts
+++ b/web/app/components/base/mermaid/utils.ts
@@ -60,7 +60,7 @@ export function svgToBase64(svgGraph: string): Promise {
reader.readAsDataURL(blob)
})
}
- catch (error) {
+ catch {
return Promise.resolve('')
}
}
diff --git a/web/app/components/base/pagination/hook.ts b/web/app/components/base/pagination/hook.ts
index 32a2af8013..9b9d86a4ef 100644
--- a/web/app/components/base/pagination/hook.ts
+++ b/web/app/components/base/pagination/hook.ts
@@ -10,9 +10,7 @@ const usePagination = ({
edgePageCount,
middlePagesSiblingCount,
}: IPaginationProps): IUsePagination => {
- const pages = new Array(totalPages)
- .fill(0)
- .map((_, i) => i + 1)
+ const pages = React.useMemo(() => Array.from({ length: totalPages }, (_, i) => i + 1), [totalPages])
const hasPreviousPage = currentPage > 1
const hasNextPage = currentPage < totalPages
diff --git a/web/app/components/base/popover/index.tsx b/web/app/components/base/popover/index.tsx
index 0e7c384564..41df06f43a 100644
--- a/web/app/components/base/popover/index.tsx
+++ b/web/app/components/base/popover/index.tsx
@@ -37,13 +37,16 @@ export default function CustomPopover({
const timeOutRef = useRef(null)
const onMouseEnter = (isOpen: boolean) => {
- timeOutRef.current && window.clearTimeout(timeOutRef.current)
- !isOpen && buttonRef.current?.click()
+ if (timeOutRef.current != null)
+ window.clearTimeout(timeOutRef.current)
+ if (!isOpen)
+ buttonRef.current?.click()
}
const onMouseLeave = (isOpen: boolean) => {
timeOutRef.current = window.setTimeout(() => {
- isOpen && buttonRef.current?.click()
+ if (isOpen)
+ buttonRef.current?.click()
}, timeoutDuration)
}
diff --git a/web/app/components/base/select/locale-signin.tsx b/web/app/components/base/select/locale-signin.tsx
index 2d487c4be3..2ec491f4bf 100644
--- a/web/app/components/base/select/locale-signin.tsx
+++ b/web/app/components/base/select/locale-signin.tsx
@@ -43,7 +43,7 @@ export default function LocaleSigninSelect({
className={'group flex w-full items-center rounded-lg px-3 py-2 text-sm text-text-secondary data-[active]:bg-state-base-hover'}
onClick={(evt) => {
evt.preventDefault()
- onChange && onChange(item.value)
+ onChange?.(item.value)
}}
>
{item.name}
diff --git a/web/app/components/base/select/locale.tsx b/web/app/components/base/select/locale.tsx
index cc5662f53b..2033488435 100644
--- a/web/app/components/base/select/locale.tsx
+++ b/web/app/components/base/select/locale.tsx
@@ -43,7 +43,7 @@ export default function Select({
className={'group flex w-full items-center rounded-lg px-3 py-2 text-sm text-text-secondary data-[active]:bg-state-base-hover'}
onClick={(evt) => {
evt.preventDefault()
- onChange && onChange(item.value)
+ onChange?.(item.value)
}}
>
{item.name}
diff --git a/web/app/components/base/tag-management/panel.tsx b/web/app/components/base/tag-management/panel.tsx
index 79031e9f8a..3cfb68fef0 100644
--- a/web/app/components/base/tag-management/panel.tsx
+++ b/web/app/components/base/tag-management/panel.tsx
@@ -97,10 +97,13 @@ const Panel = (props: PanelProps) => {
const removeTagIDs = value.filter(v => !selectedTagIDs.includes(v))
const selectedTags = tagList.filter(tag => selectedTagIDs.includes(tag.id))
onCacheUpdate(selectedTags)
- Promise.all([
- ...(addTagIDs.length ? [bind(addTagIDs)] : []),
- ...[removeTagIDs.length ? removeTagIDs.map(tagID => unbind(tagID)) : []],
- ]).finally(() => {
+ const operations: Promise[] = []
+ if (addTagIDs.length)
+ operations.push(bind(addTagIDs))
+ if (removeTagIDs.length)
+ operations.push(...removeTagIDs.map(tagID => unbind(tagID)))
+
+ Promise.all(operations).finally(() => {
if (onChange)
onChange()
})
diff --git a/web/app/components/base/voice-input/index.tsx b/web/app/components/base/voice-input/index.tsx
index 5a5400ad30..6587a61217 100644
--- a/web/app/components/base/voice-input/index.tsx
+++ b/web/app/components/base/voice-input/index.tsx
@@ -81,7 +81,8 @@ const VoiceInput = ({
setStartRecord(false)
setStartConvert(true)
recorder.current.stop()
- drawRecordId.current && cancelAnimationFrame(drawRecordId.current)
+ if (drawRecordId.current)
+ cancelAnimationFrame(drawRecordId.current)
drawRecordId.current = null
const canvas = canvasRef.current!
const ctx = ctxRef.current!
diff --git a/web/app/components/datasets/create-from-pipeline/create-options/create-from-dsl-modal/uploader.tsx b/web/app/components/datasets/create-from-pipeline/create-options/create-from-dsl-modal/uploader.tsx
index 433b7851d7..57509b646f 100644
--- a/web/app/components/datasets/create-from-pipeline/create-options/create-from-dsl-modal/uploader.tsx
+++ b/web/app/components/datasets/create-from-pipeline/create-options/create-from-dsl-modal/uploader.tsx
@@ -34,7 +34,8 @@ const Uploader: FC = ({
const handleDragEnter = (e: DragEvent) => {
e.preventDefault()
e.stopPropagation()
- e.target !== dragRef.current && setDragging(true)
+ if (e.target !== dragRef.current)
+ setDragging(true)
}
const handleDragOver = (e: DragEvent) => {
e.preventDefault()
@@ -43,7 +44,8 @@ const Uploader: FC = ({
const handleDragLeave = (e: DragEvent) => {
e.preventDefault()
e.stopPropagation()
- e.target === dragRef.current && setDragging(false)
+ if (e.target === dragRef.current)
+ setDragging(false)
}
const handleDrop = (e: DragEvent) => {
e.preventDefault()
diff --git a/web/app/components/datasets/create/file-uploader/index.tsx b/web/app/components/datasets/create/file-uploader/index.tsx
index 4dfdbc4e96..e2bbad2776 100644
--- a/web/app/components/datasets/create/file-uploader/index.tsx
+++ b/web/app/components/datasets/create/file-uploader/index.tsx
@@ -185,7 +185,8 @@ const FileUploader = ({
const handleDragEnter = (e: DragEvent) => {
e.preventDefault()
e.stopPropagation()
- e.target !== dragRef.current && setDragging(true)
+ if (e.target !== dragRef.current)
+ setDragging(true)
}
const handleDragOver = (e: DragEvent) => {
e.preventDefault()
@@ -194,7 +195,8 @@ const FileUploader = ({
const handleDragLeave = (e: DragEvent) => {
e.preventDefault()
e.stopPropagation()
- e.target === dragRef.current && setDragging(false)
+ if (e.target === dragRef.current)
+ setDragging(false)
}
type FileWithPath = {
relativePath?: string
diff --git a/web/app/components/datasets/create/step-two/index.tsx b/web/app/components/datasets/create/step-two/index.tsx
index 650dc9425a..4c2e129cd2 100644
--- a/web/app/components/datasets/create/step-two/index.tsx
+++ b/web/app/components/datasets/create/step-two/index.tsx
@@ -568,9 +568,9 @@ const StepTwo = ({
params,
{
onSuccess(data) {
- updateIndexingTypeCache && updateIndexingTypeCache(indexType as string)
- updateResultCache && updateResultCache(data)
- updateRetrievalMethodCache && updateRetrievalMethodCache(retrievalConfig.search_method as string)
+ updateIndexingTypeCache?.(indexType as string)
+ updateResultCache?.(data)
+ updateRetrievalMethodCache?.(retrievalConfig.search_method as string)
},
},
)
@@ -578,17 +578,18 @@ const StepTwo = ({
else {
await createDocumentMutation.mutateAsync(params, {
onSuccess(data) {
- updateIndexingTypeCache && updateIndexingTypeCache(indexType as string)
- updateResultCache && updateResultCache(data)
- updateRetrievalMethodCache && updateRetrievalMethodCache(retrievalConfig.search_method as string)
+ updateIndexingTypeCache?.(indexType as string)
+ updateResultCache?.(data)
+ updateRetrievalMethodCache?.(retrievalConfig.search_method as string)
},
})
}
if (mutateDatasetRes)
mutateDatasetRes()
invalidDatasetList()
- onStepChange && onStepChange(+1)
- isSetting && onSave && onSave()
+ onStepChange?.(+1)
+ if (isSetting)
+ onSave?.()
}
useEffect(() => {
@@ -1026,7 +1027,7 @@ const StepTwo = ({
{!isSetting
? (
-
onStepChange && onStepChange(-1)}>
+ onStepChange?.(-1)}>
{t('datasetCreation.stepTwo.previousStep')}
diff --git a/web/app/components/datasets/create/website/jina-reader/base/options-wrap.tsx b/web/app/components/datasets/create/website/jina-reader/base/options-wrap.tsx
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/web/app/components/datasets/documents/create-from-pipeline/data-source/local-file/index.tsx b/web/app/components/datasets/documents/create-from-pipeline/data-source/local-file/index.tsx
index 0692680005..ad05f0729b 100644
--- a/web/app/components/datasets/documents/create-from-pipeline/data-source/local-file/index.tsx
+++ b/web/app/components/datasets/documents/create-from-pipeline/data-source/local-file/index.tsx
@@ -200,7 +200,8 @@ const LocalFile = ({
const handleDragEnter = (e: DragEvent) => {
e.preventDefault()
e.stopPropagation()
- e.target !== dragRef.current && setDragging(true)
+ if (e.target !== dragRef.current)
+ setDragging(true)
}
const handleDragOver = (e: DragEvent) => {
e.preventDefault()
@@ -209,7 +210,8 @@ const LocalFile = ({
const handleDragLeave = (e: DragEvent) => {
e.preventDefault()
e.stopPropagation()
- e.target === dragRef.current && setDragging(false)
+ if (e.target === dragRef.current)
+ setDragging(false)
}
const handleDrop = useCallback((e: DragEvent) => {
diff --git a/web/app/components/datasets/documents/create-from-pipeline/data-source/website-crawl/base/crawled-result.tsx b/web/app/components/datasets/documents/create-from-pipeline/data-source/website-crawl/base/crawled-result.tsx
index 28c9ae456e..cd410c4d1e 100644
--- a/web/app/components/datasets/documents/create-from-pipeline/data-source/website-crawl/base/crawled-result.tsx
+++ b/web/app/components/datasets/documents/create-from-pipeline/data-source/website-crawl/base/crawled-result.tsx
@@ -45,10 +45,13 @@ const CrawledResult = ({
const handleItemCheckChange = useCallback((item: CrawlResultItem) => {
return (checked: boolean) => {
- if (checked)
- isMultipleChoice ? onSelectedChange([...checkedList, item]) : onSelectedChange([item])
- else
- onSelectedChange(checkedList.filter(checkedItem => checkedItem.source_url !== item.source_url))
+ if (checked) {
+ if (isMultipleChoice)
+ onSelectedChange([...checkedList, item])
+ else
+ onSelectedChange([item])
+ }
+ else { onSelectedChange(checkedList.filter(checkedItem => checkedItem.source_url !== item.source_url)) }
}
}, [checkedList, onSelectedChange, isMultipleChoice])
diff --git a/web/app/components/datasets/documents/create-from-pipeline/index.tsx b/web/app/components/datasets/documents/create-from-pipeline/index.tsx
index 75c31acd1b..77b77700ca 100644
--- a/web/app/components/datasets/documents/create-from-pipeline/index.tsx
+++ b/web/app/components/datasets/documents/create-from-pipeline/index.tsx
@@ -326,7 +326,10 @@ const CreateFormPipeline = () => {
}, [])
const handleSubmit = useCallback((data: Record) => {
- isPreview.current ? handlePreviewChunks(data) : handleProcess(data)
+ if (isPreview.current)
+ handlePreviewChunks(data)
+ else
+ handleProcess(data)
}, [handlePreviewChunks, handleProcess])
const handlePreviewFileChange = useCallback((file: DocumentItem) => {
diff --git a/web/app/components/datasets/documents/detail/batch-modal/csv-uploader.tsx b/web/app/components/datasets/documents/detail/batch-modal/csv-uploader.tsx
index aaf9ed8ffd..7e8749f0bf 100644
--- a/web/app/components/datasets/documents/detail/batch-modal/csv-uploader.tsx
+++ b/web/app/components/datasets/documents/detail/batch-modal/csv-uploader.tsx
@@ -99,7 +99,8 @@ const CSVUploader: FC = ({
const handleDragEnter = (e: DragEvent) => {
e.preventDefault()
e.stopPropagation()
- e.target !== dragRef.current && setDragging(true)
+ if (e.target !== dragRef.current)
+ setDragging(true)
}
const handleDragOver = (e: DragEvent) => {
e.preventDefault()
@@ -108,7 +109,8 @@ const CSVUploader: FC = ({
const handleDragLeave = (e: DragEvent) => {
e.preventDefault()
e.stopPropagation()
- e.target === dragRef.current && setDragging(false)
+ if (e.target === dragRef.current)
+ setDragging(false)
}
const handleDrop = (e: DragEvent) => {
e.preventDefault()
diff --git a/web/app/components/datasets/documents/detail/completed/index.tsx b/web/app/components/datasets/documents/detail/completed/index.tsx
index 726be7519a..8fa167f976 100644
--- a/web/app/components/datasets/documents/detail/completed/index.tsx
+++ b/web/app/components/datasets/documents/detail/completed/index.tsx
@@ -284,7 +284,8 @@ const Completed: FC = ({
onSuccess: () => {
notify({ type: 'success', message: t('common.actionMsg.modifiedSuccessfully') })
resetList()
- !segId && setSelectedSegmentIds([])
+ if (!segId)
+ setSelectedSegmentIds([])
},
onError: () => {
notify({ type: 'error', message: t('common.actionMsg.modifiedUnsuccessfully') })
@@ -438,7 +439,8 @@ const Completed: FC = ({
}
else {
resetList()
- currentPage !== totalPages && setCurrentPage(totalPages)
+ if (currentPage !== totalPages)
+ setCurrentPage(totalPages)
}
}, [segmentListData, limit, currentPage, resetList])
@@ -491,7 +493,8 @@ const Completed: FC = ({
}
else {
resetChildList()
- currentPage !== totalPages && setCurrentPage(totalPages)
+ if (currentPage !== totalPages)
+ setCurrentPage(totalPages)
}
}, [childChunkListData, limit, currentPage, resetChildList])
diff --git a/web/app/components/datasets/documents/detail/metadata/index.tsx b/web/app/components/datasets/documents/detail/metadata/index.tsx
index 4cb5fe97e9..88c359f8b2 100644
--- a/web/app/components/datasets/documents/detail/metadata/index.tsx
+++ b/web/app/components/datasets/documents/detail/metadata/index.tsx
@@ -66,7 +66,7 @@ export const FieldInfo: FC = ({
? displayedValue
: inputType === 'select'
? onUpdate && onUpdate(value as string)}
+ onSelect={({ value }) => onUpdate?.(value as string)}
items={selectOptions}
defaultValue={value}
className={s.select}
@@ -75,7 +75,7 @@ export const FieldInfo: FC = ({
/>
: inputType === 'textarea'
? onUpdate && onUpdate(e.target.value)}
+ onChange={e => onUpdate?.(e.target.value)}
value={value}
className={s.textArea}
placeholder={`${t('datasetDocuments.metadata.placeholder.add')}${label}`}
diff --git a/web/app/components/datasets/documents/detail/settings/pipeline-settings/index.tsx b/web/app/components/datasets/documents/detail/settings/pipeline-settings/index.tsx
index e69481c3ea..1ab47be445 100644
--- a/web/app/components/datasets/documents/detail/settings/pipeline-settings/index.tsx
+++ b/web/app/components/datasets/documents/detail/settings/pipeline-settings/index.tsx
@@ -148,7 +148,10 @@ const PipelineSettings = ({
}, [])
const handleSubmit = useCallback((data: Record) => {
- isPreview.current ? handlePreviewChunks(data) : handleProcess(data)
+ if (isPreview.current)
+ handlePreviewChunks(data)
+ else
+ handleProcess(data)
}, [handlePreviewChunks, handleProcess])
if (isFetchingLastRunData) {
diff --git a/web/app/components/datasets/hit-testing/textarea.tsx b/web/app/components/datasets/hit-testing/textarea.tsx
index a9d66b0cc1..0e9dd16d56 100644
--- a/web/app/components/datasets/hit-testing/textarea.tsx
+++ b/web/app/components/datasets/hit-testing/textarea.tsx
@@ -80,7 +80,8 @@ const TextAreaWithButton = ({
onUpdateList?.()
}
setLoading(false)
- _onSubmit && _onSubmit()
+ if (_onSubmit)
+ _onSubmit()
}
const externalRetrievalTestingOnSubmit = async () => {
diff --git a/web/app/components/datasets/list/dataset-card/index.tsx b/web/app/components/datasets/list/dataset-card/index.tsx
index db8ee0226d..b1304e578e 100644
--- a/web/app/components/datasets/list/dataset-card/index.tsx
+++ b/web/app/components/datasets/list/dataset-card/index.tsx
@@ -157,12 +157,12 @@ const DatasetCard = ({
data-disable-nprogress={true}
onClick={(e) => {
e.preventDefault()
- isExternalProvider
- ? push(`/datasets/${dataset.id}/hitTesting`)
- // eslint-disable-next-line sonarjs/no-nested-conditional
- : isPipelineUnpublished
- ? push(`/datasets/${dataset.id}/pipeline`)
- : push(`/datasets/${dataset.id}/documents`)
+ if (isExternalProvider)
+ push(`/datasets/${dataset.id}/hitTesting`)
+ else if (isPipelineUnpublished)
+ push(`/datasets/${dataset.id}/pipeline`)
+ else
+ push(`/datasets/${dataset.id}/documents`)
}}
>
{!dataset.embedding_available && (
diff --git a/web/app/components/datasets/loading.tsx b/web/app/components/datasets/loading.tsx
index e69de29bb2..182c1f91de 100644
--- a/web/app/components/datasets/loading.tsx
+++ b/web/app/components/datasets/loading.tsx
@@ -0,0 +1,3 @@
+const DatasetsLoading = () => null
+
+export default DatasetsLoading
diff --git a/web/app/components/datasets/preview/index.tsx b/web/app/components/datasets/preview/index.tsx
index e69de29bb2..e71c440c20 100644
--- a/web/app/components/datasets/preview/index.tsx
+++ b/web/app/components/datasets/preview/index.tsx
@@ -0,0 +1,3 @@
+const DatasetPreview = () => null
+
+export default DatasetPreview
diff --git a/web/app/components/header/account-setting/collapse/index.tsx b/web/app/components/header/account-setting/collapse/index.tsx
index 2ad4a97cd1..44360df8cd 100644
--- a/web/app/components/header/account-setting/collapse/index.tsx
+++ b/web/app/components/header/account-setting/collapse/index.tsx
@@ -39,7 +39,7 @@ const Collapse = ({
{
items.map(item => (
-
onSelect && onSelect(item)}>
+
onSelect?.(item)}>
{renderItem(item)}
))
diff --git a/web/app/components/header/account-setting/model-provider-page/provider-added-card/model-load-balancing-configs.tsx b/web/app/components/header/account-setting/model-provider-page/provider-added-card/model-load-balancing-configs.tsx
index 29da0ffc0c..291ba013f7 100644
--- a/web/app/components/header/account-setting/model-provider-page/provider-added-card/model-load-balancing-configs.tsx
+++ b/web/app/components/header/account-setting/model-provider-page/provider-added-card/model-load-balancing-configs.tsx
@@ -49,7 +49,7 @@ const ModelLoadBalancingConfigs = ({
provider,
model,
configurationMethod,
- currentCustomConfigurationModelFixedFields,
+ currentCustomConfigurationModelFixedFields: _currentCustomConfigurationModelFixedFields,
withSwitch = false,
className,
modelCredential,
diff --git a/web/app/components/plugins/plugin-detail-panel/app-selector/app-picker.tsx b/web/app/components/plugins/plugin-detail-panel/app-selector/app-picker.tsx
index 3c79acb653..10c28507f7 100644
--- a/web/app/components/plugins/plugin-detail-panel/app-selector/app-picker.tsx
+++ b/web/app/components/plugins/plugin-detail-panel/app-selector/app-picker.tsx
@@ -33,7 +33,7 @@ type Props = {
}
const AppPicker: FC
= ({
- scope,
+ scope: _scope,
disabled,
trigger,
placement = 'right-start',
@@ -90,7 +90,7 @@ const AppPicker: FC = ({
}
// Set up MutationObserver to watch DOM changes
- mutationObserver = new MutationObserver((mutations) => {
+ mutationObserver = new MutationObserver((_mutations) => {
if (observerTarget.current) {
setupIntersectionObserver()
mutationObserver?.disconnect()
diff --git a/web/app/components/plugins/plugin-detail-panel/model-selector/index.tsx b/web/app/components/plugins/plugin-detail-panel/model-selector/index.tsx
index fb4c99e1e4..873f187e8f 100644
--- a/web/app/components/plugins/plugin-detail-panel/model-selector/index.tsx
+++ b/web/app/components/plugins/plugin-detail-panel/model-selector/index.tsx
@@ -148,7 +148,7 @@ const ModelParameterModal: FC = ({
})
}
}
- catch (e) {
+ catch {
Toast.notify({ type: 'error', message: t('common.error') })
}
}
diff --git a/web/app/components/rag-pipeline/components/panel/input-field/field-list/hooks.ts b/web/app/components/rag-pipeline/components/panel/input-field/field-list/hooks.ts
index d5c0797c9b..376894b1bb 100644
--- a/web/app/components/rag-pipeline/components/panel/input-field/field-list/hooks.ts
+++ b/web/app/components/rag-pipeline/components/panel/input-field/field-list/hooks.ts
@@ -51,7 +51,7 @@ export const useFieldList = ({
const handleListSortChange = useCallback((list: SortableItem[]) => {
const newInputFields = list.map((item) => {
- const { id, chosen, selected, ...filed } = item
+ const { id: _id, chosen: _chosen, selected: _selected, ...filed } = item
return filed
})
handleInputFieldsChange(newInputFields)
diff --git a/web/app/components/rag-pipeline/components/panel/test-run/header.tsx b/web/app/components/rag-pipeline/components/panel/test-run/header.tsx
index 16291f868b..a536f66137 100644
--- a/web/app/components/rag-pipeline/components/panel/test-run/header.tsx
+++ b/web/app/components/rag-pipeline/components/panel/test-run/header.tsx
@@ -15,7 +15,8 @@ const Header = () => {
isPreparingDataSource,
setIsPreparingDataSource,
} = workflowStore.getState()
- isPreparingDataSource && setIsPreparingDataSource?.(false)
+ if (isPreparingDataSource)
+ setIsPreparingDataSource?.(false)
handleCancelDebugAndPreviewPanel()
}, [workflowStore])
diff --git a/web/app/components/rag-pipeline/hooks/use-nodes-sync-draft.ts b/web/app/components/rag-pipeline/hooks/use-nodes-sync-draft.ts
index 86e44dced7..ad757f36a7 100644
--- a/web/app/components/rag-pipeline/hooks/use-nodes-sync-draft.ts
+++ b/web/app/components/rag-pipeline/hooks/use-nodes-sync-draft.ts
@@ -104,7 +104,7 @@ export const useNodesSyncDraft = () => {
const res = await syncWorkflowDraft(postParams)
setSyncWorkflowDraftHash(res.hash)
setDraftUpdatedAt(res.updated_at)
- callback?.onSuccess && callback.onSuccess()
+ callback?.onSuccess?.()
}
catch (error: any) {
if (error && error.json && !error.bodyUsed) {
@@ -113,10 +113,10 @@ export const useNodesSyncDraft = () => {
handleRefreshWorkflowDraft()
})
}
- callback?.onError && callback.onError()
+ callback?.onError?.()
}
finally {
- callback?.onSettled && callback.onSettled()
+ callback?.onSettled?.()
}
}
}, [getPostParams, getNodesReadOnly, workflowStore, handleRefreshWorkflowDraft])
diff --git a/web/app/components/share/text-generation/index.tsx b/web/app/components/share/text-generation/index.tsx
index da5b09b065..98804c7311 100644
--- a/web/app/components/share/text-generation/index.tsx
+++ b/web/app/components/share/text-generation/index.tsx
@@ -363,7 +363,8 @@ const TextGeneration: FC = ({
(async () => {
if (!appData || !appParams)
return
- !isWorkflow && fetchSavedMessage()
+ if (!isWorkflow)
+ fetchSavedMessage()
const { app_id: appId, site: siteInfo, custom_config } = appData
setAppId(appId)
setSiteInfo(siteInfo as SiteInfo)
diff --git a/web/app/components/swr-initializer.tsx b/web/app/components/swr-initializer.tsx
index 0a873400d6..fd9432fdd8 100644
--- a/web/app/components/swr-initializer.tsx
+++ b/web/app/components/swr-initializer.tsx
@@ -62,8 +62,10 @@ const SwrInitializer = ({
return
}
if (searchParams.has('access_token') || searchParams.has('refresh_token')) {
- consoleToken && localStorage.setItem('console_token', consoleToken)
- refreshToken && localStorage.setItem('refresh_token', refreshToken)
+ if (consoleToken)
+ localStorage.setItem('console_token', consoleToken)
+ if (refreshToken)
+ localStorage.setItem('refresh_token', refreshToken)
const redirectUrl = resolvePostLoginRedirect(searchParams)
if (redirectUrl)
location.replace(redirectUrl)
diff --git a/web/app/components/workflow-app/hooks/use-nodes-sync-draft.ts b/web/app/components/workflow-app/hooks/use-nodes-sync-draft.ts
index 654977fb15..5705deb0c0 100644
--- a/web/app/components/workflow-app/hooks/use-nodes-sync-draft.ts
+++ b/web/app/components/workflow-app/hooks/use-nodes-sync-draft.ts
@@ -124,7 +124,7 @@ export const useNodesSyncDraft = () => {
const res = await syncWorkflowDraft(postParams)
setSyncWorkflowDraftHash(res.hash)
setDraftUpdatedAt(res.updated_at)
- callback?.onSuccess && callback.onSuccess()
+ callback?.onSuccess?.()
}
catch (error: any) {
if (error && error.json && !error.bodyUsed) {
@@ -133,10 +133,10 @@ export const useNodesSyncDraft = () => {
handleRefreshWorkflowDraft()
})
}
- callback?.onError && callback.onError()
+ callback?.onError?.()
}
finally {
- callback?.onSettled && callback.onSettled()
+ callback?.onSettled?.()
}
}
}, [workflowStore, getPostParams, getNodesReadOnly, handleRefreshWorkflowDraft])
diff --git a/web/app/components/workflow/block-selector/tool/tool.tsx b/web/app/components/workflow/block-selector/tool/tool.tsx
index 6004bb119a..30d3e218d2 100644
--- a/web/app/components/workflow/block-selector/tool/tool.tsx
+++ b/web/app/components/workflow/block-selector/tool/tool.tsx
@@ -73,7 +73,7 @@ const Tool: FC = ({
if (isHovering && !isAllSelected) {
return (
{
+ onClick={() => {
onSelectMultiple?.(BlockEnum.Tool, actions.filter(action => !getIsDisabled(action)).map((tool) => {
const params: Record = {}
if (tool.parameters) {
diff --git a/web/app/components/workflow/hooks/use-shortcuts.ts b/web/app/components/workflow/hooks/use-shortcuts.ts
index b2d71555d7..a744fefd50 100644
--- a/web/app/components/workflow/hooks/use-shortcuts.ts
+++ b/web/app/components/workflow/hooks/use-shortcuts.ts
@@ -107,7 +107,8 @@ export const useShortcuts = (): void => {
const { showDebugAndPreviewPanel } = workflowStore.getState()
if (shouldHandleShortcut(e) && !showDebugAndPreviewPanel) {
e.preventDefault()
- workflowHistoryShortcutsEnabled && handleHistoryBack()
+ if (workflowHistoryShortcutsEnabled)
+ handleHistoryBack()
}
}, { exactMatch: true, useCapture: true })
@@ -116,7 +117,8 @@ export const useShortcuts = (): void => {
(e) => {
if (shouldHandleShortcut(e)) {
e.preventDefault()
- workflowHistoryShortcutsEnabled && handleHistoryForward()
+ if (workflowHistoryShortcutsEnabled)
+ handleHistoryForward()
}
},
{ exactMatch: true, useCapture: true },
diff --git a/web/app/components/workflow/hooks/use-workflow.ts b/web/app/components/workflow/hooks/use-workflow.ts
index 02a2f09d63..3f9f8106cf 100644
--- a/web/app/components/workflow/hooks/use-workflow.ts
+++ b/web/app/components/workflow/hooks/use-workflow.ts
@@ -354,7 +354,7 @@ export const useWorkflow = () => {
return startNodes
}, [nodesMap, getRootNodesById])
- const isValidConnection = useCallback(({ source, sourceHandle, target }: Connection) => {
+ const isValidConnection = useCallback(({ source, sourceHandle: _sourceHandle, target }: Connection) => {
const {
edges,
getNodes,
diff --git a/web/app/components/workflow/nodes/_base/components/retry/utils.ts b/web/app/components/workflow/nodes/_base/components/retry/utils.ts
index e69de29bb2..336ce12bb9 100644
--- a/web/app/components/workflow/nodes/_base/components/retry/utils.ts
+++ b/web/app/components/workflow/nodes/_base/components/retry/utils.ts
@@ -0,0 +1 @@
+export {}
diff --git a/web/app/components/workflow/nodes/_base/components/variable/var-reference-picker.tsx b/web/app/components/workflow/nodes/_base/components/variable/var-reference-picker.tsx
index 273e100f8e..ba27d023e7 100644
--- a/web/app/components/workflow/nodes/_base/components/variable/var-reference-picker.tsx
+++ b/web/app/components/workflow/nodes/_base/components/variable/var-reference-picker.tsx
@@ -407,7 +407,10 @@ const VarReferencePicker: FC = ({
{
if (readonly)
return
- !isConstant ? setOpen(!open) : setControlFocus(Date.now())
+ if (!isConstant)
+ setOpen(!open)
+ else
+ setControlFocus(Date.now())
}} className='group/picker-trigger-wrap relative !flex'>
<>
{isAddBtnTrigger
@@ -457,7 +460,10 @@ const VarReferencePicker: FC = ({
onClick={() => {
if (readonly)
return
- !isConstant ? setOpen(!open) : setControlFocus(Date.now())
+ if (!isConstant)
+ setOpen(!open)
+ else
+ setControlFocus(Date.now())
}}
className='h-full grow'
>
diff --git a/web/app/components/workflow/nodes/_base/components/variable/var-reference-vars.tsx b/web/app/components/workflow/nodes/_base/components/variable/var-reference-vars.tsx
index 067dbf8652..e70cfed97c 100644
--- a/web/app/components/workflow/nodes/_base/components/variable/var-reference-vars.tsx
+++ b/web/app/components/workflow/nodes/_base/components/variable/var-reference-vars.tsx
@@ -137,7 +137,7 @@ const Item: FC = ({
const isHovering = isItemHovering || isChildrenHovering
const open = (isObj || isStructureOutput) && isHovering
useEffect(() => {
- onHovering && onHovering(isHovering)
+ onHovering?.(isHovering)
}, [isHovering])
const handleChosen = (e: React.MouseEvent) => {
e.stopPropagation()
diff --git a/web/app/components/workflow/nodes/_base/components/workflow-panel/last-run/index.tsx b/web/app/components/workflow/nodes/_base/components/workflow-panel/last-run/index.tsx
index 06962389c9..b26dd74714 100644
--- a/web/app/components/workflow/nodes/_base/components/workflow-panel/last-run/index.tsx
+++ b/web/app/components/workflow/nodes/_base/components/workflow-panel/last-run/index.tsx
@@ -25,12 +25,12 @@ type Props = {
} & Partial
const LastRun: FC = ({
- appId,
+ appId: _appId,
nodeId,
canSingleRun,
isRunAfterSingleRun,
updateNodeRunningStatus,
- nodeInfo,
+ nodeInfo: _nodeInfo,
runningStatus: oneStepRunRunningStatus,
onSingleRunClicked,
singleRunResult,
diff --git a/web/app/components/workflow/nodes/knowledge-base/components/option-card.tsx b/web/app/components/workflow/nodes/knowledge-base/components/option-card.tsx
index 789e24835f..99ee0d25b5 100644
--- a/web/app/components/workflow/nodes/knowledge-base/components/option-card.tsx
+++ b/web/app/components/workflow/nodes/knowledge-base/components/option-card.tsx
@@ -88,7 +88,8 @@ const OptionCard = memo(({
)}
onClick={(e) => {
e.stopPropagation()
- !readonly && enableSelect && id && onClick?.(id)
+ if (!readonly && enableSelect && id)
+ onClick?.(id)
}}
>
= ({
const handleResetDefaults = useCallback(() => {
if (currentTab === SchemaView.VisualEditor) {
setHoveringProperty(null)
- advancedEditing && setAdvancedEditing(false)
- isAddingNewField && setIsAddingNewField(false)
+ if (advancedEditing)
+ setAdvancedEditing(false)
+ if (isAddingNewField)
+ setIsAddingNewField(false)
}
setJsonSchema(DEFAULT_SCHEMA)
setJson(JSON.stringify(DEFAULT_SCHEMA, null, 2))
diff --git a/web/app/components/workflow/nodes/llm/components/json-schema-config-modal/visual-editor/edit-card/index.tsx b/web/app/components/workflow/nodes/llm/components/json-schema-config-modal/visual-editor/edit-card/index.tsx
index ae72d494d1..1db31cd470 100644
--- a/web/app/components/workflow/nodes/llm/components/json-schema-config-modal/visual-editor/edit-card/index.tsx
+++ b/web/app/components/workflow/nodes/llm/components/json-schema-config-modal/visual-editor/edit-card/index.tsx
@@ -87,8 +87,10 @@ const EditCard: FC
= ({
})
useSubscribe('fieldChangeSuccess', () => {
- isAddingNewField && setIsAddingNewField(false)
- advancedEditing && setAdvancedEditing(false)
+ if (isAddingNewField)
+ setIsAddingNewField(false)
+ if (advancedEditing)
+ setAdvancedEditing(false)
})
const emitPropertyNameChange = useCallback(() => {
diff --git a/web/app/components/workflow/nodes/llm/components/json-schema-config-modal/visual-editor/hooks.ts b/web/app/components/workflow/nodes/llm/components/json-schema-config-modal/visual-editor/hooks.ts
index 8256a3c862..4f7e1e6f00 100644
--- a/web/app/components/workflow/nodes/llm/components/json-schema-config-modal/visual-editor/hooks.ts
+++ b/web/app/components/workflow/nodes/llm/components/json-schema-config-modal/visual-editor/hooks.ts
@@ -45,8 +45,10 @@ export const useSchemaNodeOperations = (props: VisualEditorProps) => {
onChange(backupSchema)
setBackupSchema(null)
}
- isAddingNewField && setIsAddingNewField(false)
- advancedEditing && setAdvancedEditing(false)
+ if (isAddingNewField)
+ setIsAddingNewField(false)
+ if (advancedEditing)
+ setAdvancedEditing(false)
setHoveringProperty(null)
})
@@ -221,7 +223,8 @@ export const useSchemaNodeOperations = (props: VisualEditorProps) => {
})
useSubscribe('addField', (params) => {
- advancedEditing && setAdvancedEditing(false)
+ if (advancedEditing)
+ setAdvancedEditing(false)
setBackupSchema(jsonSchema)
const { path } = params as AddEventParams
setIsAddingNewField(true)
diff --git a/web/app/components/workflow/nodes/llm/panel.tsx b/web/app/components/workflow/nodes/llm/panel.tsx
index 03569f6f7a..cd79b9f3d9 100644
--- a/web/app/components/workflow/nodes/llm/panel.tsx
+++ b/web/app/components/workflow/nodes/llm/panel.tsx
@@ -293,6 +293,11 @@ const Panel: FC> = ({
type='string'
description={t(`${i18nPrefix}.outputVars.output`)}
/>
+
{
diff --git a/web/app/components/workflow/panel/chat-variable-panel/components/variable-modal-trigger.tsx b/web/app/components/workflow/panel/chat-variable-panel/components/variable-modal-trigger.tsx
index 07eb79a269..9d19b61093 100644
--- a/web/app/components/workflow/panel/chat-variable-panel/components/variable-modal-trigger.tsx
+++ b/web/app/components/workflow/panel/chat-variable-panel/components/variable-modal-trigger.tsx
@@ -35,7 +35,8 @@ const VariableModalTrigger = ({
open={open}
onOpenChange={() => {
setOpen(v => !v)
- open && onClose()
+ if (open)
+ onClose()
}}
placement='left-start'
offset={{
@@ -45,7 +46,8 @@ const VariableModalTrigger = ({
>
{
setOpen(v => !v)
- open && onClose()
+ if (open)
+ onClose()
}}>
diff --git a/web/app/components/workflow/panel/env-panel/variable-trigger.tsx b/web/app/components/workflow/panel/env-panel/variable-trigger.tsx
index 52474860b1..604fceef81 100644
--- a/web/app/components/workflow/panel/env-panel/variable-trigger.tsx
+++ b/web/app/components/workflow/panel/env-panel/variable-trigger.tsx
@@ -33,7 +33,8 @@ const VariableTrigger = ({
open={open}
onOpenChange={() => {
setOpen(v => !v)
- open && onClose()
+ if (open)
+ onClose()
}}
placement='left-start'
offset={{
@@ -43,7 +44,8 @@ const VariableTrigger = ({
>
{
setOpen(v => !v)
- open && onClose()
+ if (open)
+ onClose()
}}>
diff --git a/web/app/components/workflow/run/index.tsx b/web/app/components/workflow/run/index.tsx
index 2c5cc165c1..2e9ae392a6 100644
--- a/web/app/components/workflow/run/index.tsx
+++ b/web/app/components/workflow/run/index.tsx
@@ -81,9 +81,12 @@ const RunPanel: FC = ({
const switchTab = async (tab: string) => {
setCurrentTab(tab)
- if (tab === 'RESULT')
- runDetailUrl && await getResult()
- tracingListUrl && await getTracingList()
+ if (tab === 'RESULT') {
+ if (runDetailUrl)
+ await getResult()
+ }
+ if (tracingListUrl)
+ await getTracingList()
}
useEffect(() => {
diff --git a/web/app/components/workflow/workflow-preview/components/nodes/loop/node.tsx b/web/app/components/workflow/workflow-preview/components/nodes/loop/node.tsx
index 4c0080ec70..f41fa120a6 100644
--- a/web/app/components/workflow/workflow-preview/components/nodes/loop/node.tsx
+++ b/web/app/components/workflow/workflow-preview/components/nodes/loop/node.tsx
@@ -15,7 +15,7 @@ import { useNodeLoopInteractions } from './hooks'
const Node: FC> = ({
id,
- data,
+ data: _data,
}) => {
const { zoom } = useViewport()
const nodesInitialized = useNodesInitialized()
diff --git a/web/app/signin/components/mail-and-password-auth.tsx b/web/app/signin/components/mail-and-password-auth.tsx
index aaadc0b197..5214b73ee0 100644
--- a/web/app/signin/components/mail-and-password-auth.tsx
+++ b/web/app/signin/components/mail-and-password-auth.tsx
@@ -19,7 +19,7 @@ type MailAndPasswordAuthProps = {
allowRegistration: boolean
}
-export default function MailAndPasswordAuth({ isInvite, isEmailSetup, allowRegistration }: MailAndPasswordAuthProps) {
+export default function MailAndPasswordAuth({ isInvite, isEmailSetup, allowRegistration: _allowRegistration }: MailAndPasswordAuthProps) {
const { t } = useTranslation()
const { locale } = useContext(I18NContext)
const router = useRouter()
diff --git a/web/i18n-config/index.ts b/web/i18n-config/index.ts
index fdb31c49b4..b2b83fa76a 100644
--- a/web/i18n-config/index.ts
+++ b/web/i18n-config/index.ts
@@ -14,7 +14,8 @@ export type Locale = typeof i18n['locales'][number]
export const setLocaleOnClient = async (locale: Locale, reloadPage = true) => {
Cookies.set(LOCALE_COOKIE_NAME, locale, { expires: 365 })
await changeLanguage(locale)
- reloadPage && location.reload()
+ if (reloadPage)
+ location.reload()
}
export const getLocaleOnClient = (): Locale => {
diff --git a/web/i18n/de-DE/workflow.ts b/web/i18n/de-DE/workflow.ts
index 71000897ca..ff1b9d76f9 100644
--- a/web/i18n/de-DE/workflow.ts
+++ b/web/i18n/de-DE/workflow.ts
@@ -444,6 +444,7 @@ const translation = {
},
outputVars: {
output: 'Generierter Inhalt',
+ reasoning_content: 'Reasoning-Inhalt',
usage: 'Nutzungsinformationen des Modells',
},
singleRun: {
diff --git a/web/i18n/en-US/workflow.ts b/web/i18n/en-US/workflow.ts
index 3f1654b2e7..a5862bef86 100644
--- a/web/i18n/en-US/workflow.ts
+++ b/web/i18n/en-US/workflow.ts
@@ -456,6 +456,7 @@ const translation = {
},
outputVars: {
output: 'Generate content',
+ reasoning_content: 'Reasoning Content',
usage: 'Model Usage Information',
},
singleRun: {
diff --git a/web/i18n/es-ES/workflow.ts b/web/i18n/es-ES/workflow.ts
index 822b226e71..cc1a19bfbf 100644
--- a/web/i18n/es-ES/workflow.ts
+++ b/web/i18n/es-ES/workflow.ts
@@ -444,6 +444,7 @@ const translation = {
},
outputVars: {
output: 'Generar contenido',
+ reasoning_content: 'Contenido de razonamiento',
usage: 'Información de uso del modelo',
},
singleRun: {
diff --git a/web/i18n/fa-IR/workflow.ts b/web/i18n/fa-IR/workflow.ts
index d91e4498fe..c6e002a5f2 100644
--- a/web/i18n/fa-IR/workflow.ts
+++ b/web/i18n/fa-IR/workflow.ts
@@ -444,6 +444,7 @@ const translation = {
},
outputVars: {
output: 'تولید محتوا',
+ reasoning_content: 'محتوای استدلال',
usage: 'اطلاعات استفاده از مدل',
},
singleRun: {
diff --git a/web/i18n/fr-FR/workflow.ts b/web/i18n/fr-FR/workflow.ts
index 270cd1b7e6..f5d76e7579 100644
--- a/web/i18n/fr-FR/workflow.ts
+++ b/web/i18n/fr-FR/workflow.ts
@@ -444,6 +444,7 @@ const translation = {
},
outputVars: {
output: 'Contenu généré',
+ reasoning_content: 'Contenu de raisonnement',
usage: 'Informations sur l\'utilisation du modèle',
},
singleRun: {
diff --git a/web/i18n/hi-IN/workflow.ts b/web/i18n/hi-IN/workflow.ts
index d94c9f102e..382a570a17 100644
--- a/web/i18n/hi-IN/workflow.ts
+++ b/web/i18n/hi-IN/workflow.ts
@@ -457,6 +457,7 @@ const translation = {
},
outputVars: {
output: 'सामग्री उत्पन्न करें',
+ reasoning_content: 'तर्क सामग्री',
usage: 'मॉडल उपयोग जानकारी',
},
singleRun: {
diff --git a/web/i18n/id-ID/workflow.ts b/web/i18n/id-ID/workflow.ts
index 4bfbe934f7..969b7bb8b0 100644
--- a/web/i18n/id-ID/workflow.ts
+++ b/web/i18n/id-ID/workflow.ts
@@ -427,6 +427,7 @@ const translation = {
},
outputVars: {
output: 'Hasilkan konten',
+ reasoning_content: 'Konten penalaran',
usage: 'Informasi Penggunaan Model',
},
singleRun: {
diff --git a/web/i18n/it-IT/workflow.ts b/web/i18n/it-IT/workflow.ts
index 7322599abf..b032f1a59b 100644
--- a/web/i18n/it-IT/workflow.ts
+++ b/web/i18n/it-IT/workflow.ts
@@ -461,6 +461,7 @@ const translation = {
},
outputVars: {
output: 'Genera contenuto',
+ reasoning_content: 'Contenuto del ragionamento',
usage: 'Informazioni sull\'utilizzo del modello',
},
singleRun: {
diff --git a/web/i18n/ja-JP/workflow.ts b/web/i18n/ja-JP/workflow.ts
index e85dcd305e..a4ffc95f68 100644
--- a/web/i18n/ja-JP/workflow.ts
+++ b/web/i18n/ja-JP/workflow.ts
@@ -456,6 +456,7 @@ const translation = {
},
outputVars: {
output: '生成内容',
+ reasoning_content: '推論内容',
usage: 'モデル使用量',
},
singleRun: {
diff --git a/web/i18n/ko-KR/workflow.ts b/web/i18n/ko-KR/workflow.ts
index 7e3775c1f8..75c607a004 100644
--- a/web/i18n/ko-KR/workflow.ts
+++ b/web/i18n/ko-KR/workflow.ts
@@ -469,6 +469,7 @@ const translation = {
},
outputVars: {
output: '생성된 내용',
+ reasoning_content: '추론 내용',
usage: '모델 사용 정보',
},
singleRun: {
diff --git a/web/i18n/pl-PL/workflow.ts b/web/i18n/pl-PL/workflow.ts
index 87c96c758f..1d2a892941 100644
--- a/web/i18n/pl-PL/workflow.ts
+++ b/web/i18n/pl-PL/workflow.ts
@@ -444,6 +444,7 @@ const translation = {
},
outputVars: {
output: 'Generowana treść',
+ reasoning_content: 'Treść rozumowania',
usage: 'Informacje o użyciu modelu',
},
singleRun: {
diff --git a/web/i18n/pt-BR/workflow.ts b/web/i18n/pt-BR/workflow.ts
index 9657ef8e7f..5610cacc13 100644
--- a/web/i18n/pt-BR/workflow.ts
+++ b/web/i18n/pt-BR/workflow.ts
@@ -444,6 +444,7 @@ const translation = {
},
outputVars: {
output: 'Conteúdo gerado',
+ reasoning_content: 'Conteúdo de raciocínio',
usage: 'Informações de uso do modelo',
},
singleRun: {
diff --git a/web/i18n/ro-RO/workflow.ts b/web/i18n/ro-RO/workflow.ts
index 94d01ec1ba..d2239e7979 100644
--- a/web/i18n/ro-RO/workflow.ts
+++ b/web/i18n/ro-RO/workflow.ts
@@ -444,6 +444,7 @@ const translation = {
},
outputVars: {
output: 'Conținut generat',
+ reasoning_content: 'Conținut de raționament',
usage: 'Informații de utilizare a modelului',
},
singleRun: {
diff --git a/web/i18n/ru-RU/workflow.ts b/web/i18n/ru-RU/workflow.ts
index 1e0ecf1276..2345f3447b 100644
--- a/web/i18n/ru-RU/workflow.ts
+++ b/web/i18n/ru-RU/workflow.ts
@@ -444,6 +444,7 @@ const translation = {
},
outputVars: {
output: 'Создать контент',
+ reasoning_content: 'Содержимое рассуждений',
usage: 'Информация об использовании модели',
},
singleRun: {
diff --git a/web/i18n/sl-SI/workflow.ts b/web/i18n/sl-SI/workflow.ts
index baeff90ee6..7a167c236f 100644
--- a/web/i18n/sl-SI/workflow.ts
+++ b/web/i18n/sl-SI/workflow.ts
@@ -442,6 +442,7 @@ const translation = {
},
outputVars: {
output: 'Ustvari vsebino',
+ reasoning_content: 'Vsebina razmišljanja',
usage: 'Informacije o uporabi modela',
},
singleRun: {
diff --git a/web/i18n/th-TH/workflow.ts b/web/i18n/th-TH/workflow.ts
index e2db4ceb4a..1cea01690a 100644
--- a/web/i18n/th-TH/workflow.ts
+++ b/web/i18n/th-TH/workflow.ts
@@ -444,6 +444,7 @@ const translation = {
},
outputVars: {
output: 'สร้างเนื้อหา',
+ reasoning_content: 'เนื้อหาการให้เหตุผล',
usage: 'ข้อมูลการใช้งานรุ่น',
},
singleRun: {
diff --git a/web/i18n/tr-TR/workflow.ts b/web/i18n/tr-TR/workflow.ts
index 68f3d5c0c2..dfab5c2c0c 100644
--- a/web/i18n/tr-TR/workflow.ts
+++ b/web/i18n/tr-TR/workflow.ts
@@ -444,6 +444,7 @@ const translation = {
},
outputVars: {
output: 'İçerik Üret',
+ reasoning_content: 'Akıl yürütme içeriği',
usage: 'Model Kullanım Bilgileri',
},
singleRun: {
diff --git a/web/i18n/uk-UA/workflow.ts b/web/i18n/uk-UA/workflow.ts
index 56715c5e37..09f2b71eea 100644
--- a/web/i18n/uk-UA/workflow.ts
+++ b/web/i18n/uk-UA/workflow.ts
@@ -444,6 +444,7 @@ const translation = {
},
outputVars: {
output: 'Генерований вміст',
+ reasoning_content: 'Зміст міркування',
usage: 'Інформація про використання моделі',
},
singleRun: {
diff --git a/web/i18n/vi-VN/workflow.ts b/web/i18n/vi-VN/workflow.ts
index 3016d79a23..27d19a37f4 100644
--- a/web/i18n/vi-VN/workflow.ts
+++ b/web/i18n/vi-VN/workflow.ts
@@ -444,6 +444,7 @@ const translation = {
},
outputVars: {
output: 'Nội dung được tạo',
+ reasoning_content: 'Nội dung lập luận',
usage: 'Thông tin sử dụng mô hình',
},
singleRun: {
diff --git a/web/i18n/zh-Hans/workflow.ts b/web/i18n/zh-Hans/workflow.ts
index 77b7fe3597..a497bca56a 100644
--- a/web/i18n/zh-Hans/workflow.ts
+++ b/web/i18n/zh-Hans/workflow.ts
@@ -456,6 +456,7 @@ const translation = {
},
outputVars: {
output: '生成内容',
+ reasoning_content: '推理内容',
usage: '模型用量信息',
},
singleRun: {
diff --git a/web/i18n/zh-Hant/workflow.ts b/web/i18n/zh-Hant/workflow.ts
index 809051c2be..6acace8e4a 100644
--- a/web/i18n/zh-Hant/workflow.ts
+++ b/web/i18n/zh-Hant/workflow.ts
@@ -444,6 +444,7 @@ const translation = {
},
outputVars: {
output: '生成內容',
+ reasoning_content: '推理內容',
usage: '模型用量信息',
},
singleRun: {
diff --git a/web/service/base.ts b/web/service/base.ts
index 526c8d75d2..6e189f1481 100644
--- a/web/service/base.ts
+++ b/web/service/base.ts
@@ -182,7 +182,7 @@ const handleStream = (
let hasError = false
reader?.read().then((result: any) => {
if (result.done) {
- onCompleted && onCompleted()
+ onCompleted?.()
return
}
buffer += decoder.decode(result.value, { stream: true })
diff --git a/web/service/knowledge/use-hit-testing.ts b/web/service/knowledge/use-hit-testing.ts
index e69de29bb2..336ce12bb9 100644
--- a/web/service/knowledge/use-hit-testing.ts
+++ b/web/service/knowledge/use-hit-testing.ts
@@ -0,0 +1 @@
+export {}
diff --git a/web/service/share.ts b/web/service/share.ts
index f1e512564b..ab8e0deb4a 100644
--- a/web/service/share.ts
+++ b/web/service/share.ts
@@ -290,8 +290,10 @@ export const fetchAccessToken = async ({ appCode, userId, webAppAccessToken }: {
const headers = new Headers()
headers.append('X-App-Code', appCode)
const params = new URLSearchParams()
- webAppAccessToken && params.append('web_app_access_token', webAppAccessToken)
- userId && params.append('user_id', userId)
+ if (webAppAccessToken)
+ params.append('web_app_access_token', webAppAccessToken)
+ if (userId)
+ params.append('user_id', userId)
const url = `/passport?${params.toString()}`
return get(url, { headers }) as Promise<{ access_token: string }>
}
diff --git a/web/utils/var.ts b/web/utils/var.ts
index a9849bdc4b..3181d2bbd7 100644
--- a/web/utils/var.ts
+++ b/web/utils/var.ts
@@ -29,7 +29,7 @@ export const getNewVar = (key: string, type: string) => {
}
export const getNewVarInWorkflow = (key: string, type = InputVarType.textInput): InputVar => {
- const { max_length, ...rest } = VAR_ITEM_TEMPLATE_IN_WORKFLOW
+ const { max_length: _maxLength, ...rest } = VAR_ITEM_TEMPLATE_IN_WORKFLOW
if (type !== InputVarType.textInput) {
return {
...rest,
@@ -49,7 +49,7 @@ export const getNewVarInWorkflow = (key: string, type = InputVarType.textInput):
}
}
-export const checkKey = (key: string, canBeEmpty?: boolean, keys?: string[]) => {
+export const checkKey = (key: string, canBeEmpty?: boolean, _keys?: string[]) => {
if (key.length === 0 && !canBeEmpty)
return 'canNoBeEmpty'