Build(package.json): Upgrade dependencies

This commit is contained in:
2024-10-27 00:46:40 +08:00
parent 4a9a627c75
commit ba3082c88c
33 changed files with 1781 additions and 4887 deletions

View File

@@ -1,40 +0,0 @@
/* eslint-env node */
module.exports = {
root: true,
env: { browser: true, es2020: true },
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:@typescript-eslint/recommended-requiring-type-checking',
'plugin:react-hooks/recommended',
'plugin:prettier/recommended',
'./.eslintrc-auto-import.json'
],
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
project: './tsconfig*.json',
tsconfigRootDir: __dirname,
},
plugins: [
'react-refresh',
'prettier'],
rules: {
'no-cond-assign': 'error',
'eqeqeq': 'error',
'prettier/prettier': [
'error',
{
endOfLine: 'auto',
}
],
'react-refresh/only-export-components': [
'warn',
{ allowConstantExport: true }
],
'@typescript-eslint/no-non-null-assertion': 'off',
'react-hooks/exhaustive-deps': 'off',
}
}

View File

@@ -7,8 +7,12 @@ directories:
files:
- '!**/.vscode/*'
- '!src/*'
- '!doc/*'
- '!resources/*'
- '!electron.vite.config.{js,ts,mjs,cjs}'
- '!{.eslintignore,.eslintrc.cjs,.prettierignore,.prettierrc.yaml,dev-app-update.yml,CHANGELOG.md,README.md}'
- '!{.eslintignore,.eslint.config.mjs,.prettierignore,.prettierrc.json,dev-app-update.yml,README.md,README_zh.md}'
- '!.eslintrc-auto-import.json'
- '!src/renderer/auto-import'
- '!{.env,.env.*,.npmrc,pnpm-lock.yaml}'
- '!{tsconfig.json,tsconfig.node.json}'
asarUnpack:

30
eslint.config.mjs Normal file
View File

@@ -0,0 +1,30 @@
import globals from 'globals'
import eslintJs from '@eslint/js'
import tsEslint from 'typescript-eslint'
import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'
const config = {
name: 'Global config',
files: ['**/*.{js,mjs,cjs,ts,jsx,tsx}'],
rules: {
'@typescript-eslint/no-unused-expressions': [
'error',
{
allowShortCircuit: true,
allowTernary: true,
allowTaggedTemplates: true
}
],
'@typescript-eslint/no-unused-vars': 'off'
}
}
export default [
{ files: ['**/*.{js,mjs,cjs,ts,jsx,tsx}'] },
{ languageOptions: { globals: globals.browser } },
eslintJs.configs.recommended,
eslintPluginPrettierRecommended,
...tsEslint.configs.recommended,
config
]

6274
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -36,66 +36,58 @@
"electron-updater": "^6.2.1"
},
"devDependencies": {
"@ant-design/icons": "^5.3.7",
"@ant-design/icons": "^5.5.1",
"@dnd-kit/core": "^6.1.0",
"@dnd-kit/sortable": "^8.0.0",
"@dnd-kit/utilities": "^3.2.2",
"@electron-toolkit/eslint-config-prettier": "^2.0.0",
"@electron-toolkit/eslint-config-ts": "^2.0.0",
"@electron-toolkit/tsconfig": "^1.0.1",
"@marsidev/react-turnstile": "^0.7.1",
"@eslint/js": "^9.12.0",
"@marsidev/react-turnstile": "^1.0.2",
"@monaco-editor/react": "^4.6.0",
"@svgr/core": "^8.1.0",
"@svgr/plugin-jsx": "^8.1.0",
"@types/jsdom": "^21.1.7",
"@types/lodash": "^4.17.5",
"@types/node": "^20.14.2",
"@types/react": "^18.3.3",
"@types/react-dom": "^18.3.0",
"@typescript-eslint/eslint-plugin": "^7.13.0",
"@typescript-eslint/parser": "^7.13.0",
"@typescript/ata": "^0.9.6",
"@vitejs/plugin-react": "^4.3.1",
"antd": "^5.18.1",
"axios": "^1.7.2",
"@types/lodash": "^4.17.10",
"@types/node": "^20.16.11",
"@types/react": "^18.3.11",
"@types/react-dom": "^18.3.1",
"@typescript/ata": "^0.9.7",
"@vitejs/plugin-react": "^4.3.2",
"antd": "^5.21.4",
"axios": "^1.7.4",
"custom-protocol-check": "^1.4.0",
"dayjs": "^1.11.11",
"echarts": "^5.5.0",
"dayjs": "^1.11.13",
"echarts": "^5.5.1",
"electron": "^31.0.1",
"electron-builder": "^24.13.3",
"electron-vite": "^2.2.0",
"esbuild-wasm": "^0.21.5",
"eslint": "^8.57.0",
"eslint-config-love": "^52.0.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-promise": "^6.2.0",
"eslint-plugin-react-hooks": "^4.6.2",
"eslint-plugin-react-refresh": "^0.4.7",
"esbuild-wasm": "^0.24.0",
"eslint": "^9.12.0",
"eslint-plugin-prettier": "^5.2.1",
"eslint-plugin-react-refresh": "^0.4.12",
"globals": "^15.11.0",
"fast-deep-equal": "^3.1.3",
"fflate": "^0.8.2",
"jsdom": "^24.1.0",
"jsdom": "^24.1.3",
"jwt-decode": "^4.0.0",
"localforage": "^1.10.0",
"lodash": "^4.17.21",
"match-sorter": "^6.3.4",
"moment": "^2.30.1",
"monaco-editor": "^0.49.0",
"monaco-editor": "^0.52.0",
"monaco-jsx-syntax-highlight": "^1.2.0",
"prettier": "^3.3.2",
"prettier": "^3.3.3",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-draggable": "^4.4.6",
"react-router": "^6.23.1",
"react-router-dom": "^6.23.1",
"sass": "^1.77.5",
"react-router": "^6.27.0",
"react-router-dom": "^6.27.0",
"sass": "^1.79.5",
"size-sensor": "^1.0.2",
"stylelint-config-prettier": "^9.0.5",
"typescript": "^5.4.5",
"unplugin-auto-import": "^0.17.6",
"unplugin-icons": "^0.19.0",
"typescript": "^5.6.3",
"typescript-eslint": "^8.9.0",
"unplugin-auto-import": "^0.18.3",
"unplugin-icons": "^0.19.3",
"vanilla-tilt": "^1.8.1",
"vite": "^5.2.13"
"vite": "5.4.6"
}
}

View File

@@ -34,8 +34,7 @@ export interface TypeHelper {
export const createATA = async (): Promise<TypeHelper> => {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-expect-error
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
const ts = await import('https://esm.sh/typescript@5.3.3')
const ts = await import('https://esm.sh/typescript@5.6.3')
const maxConcurrentRequests = 50
let activeRequests = 0
@@ -63,14 +62,10 @@ export const createATA = async (): Promise<TypeHelper> => {
const ata = setupTypeAcquisition({
projectName: 'monaco-ts',
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
typescript: ts,
logger: console,
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-expect-error
fetcher: (input, init) => {
try {
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
return fetchWithQueue(input, init)
} catch (error) {
console.error('Error fetching data:', error)
@@ -120,7 +115,6 @@ export const createATA = async (): Promise<TypeHelper> => {
}
return {
// eslint-disable-next-line @typescript-eslint/no-misused-promises
acquireType,
addListener,
removeListener,

View File

@@ -71,7 +71,8 @@ const Editor = ({
monacoRef.current = monaco
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-expect-error
editor['_codeEditorService'].doOpenEditor = function (
editor: editor.IStandaloneCodeEditor,
input: { options: { selection: Selection }; resource: { path: string } }

View File

@@ -2,4 +2,4 @@
position: relative;
width: 100%;
height: 100%;
}
}

View File

@@ -186,15 +186,15 @@ const Render = ({ iframeKey, compiledCode, mobileMode = false }: RenderProps) =>
className={`device-content${isRotate ? ' rotate' : ''}`}
style={{
width: isRotate
? devices.find((value) => value.name === selectedDevice)
?.height ?? 915
: devices.find((value) => value.name === selectedDevice)
?.width ?? 412,
? (devices.find((value) => value.name === selectedDevice)
?.height ?? 915)
: (devices.find((value) => value.name === selectedDevice)
?.width ?? 412),
height: isRotate
? devices.find((value) => value.name === selectedDevice)
?.width ?? 412
: devices.find((value) => value.name === selectedDevice)
?.height ?? 915
? (devices.find((value) => value.name === selectedDevice)
?.width ?? 412)
: (devices.find((value) => value.name === selectedDevice)
?.height ?? 915)
}}
>
<iframe

View File

@@ -38,7 +38,7 @@
}
if (data?.type === "SCALE") {
document.getElementById("root").style.zoom = data.data.zoom
document.getElementById("root").style.zoom = data.data.zoom;
}
});
</script>

View File

@@ -1,3 +1,3 @@
[data-component=playground-transform] {
position: relative;
}
}

View File

@@ -1,4 +1,4 @@
{
"type": "object",
"additionalProperties": {"type": "string"}
}
}

View File

@@ -5,4 +5,4 @@
> * {
width: 0 !important;
}
}
}

View File

@@ -864,4 +864,4 @@
}
}
}
}
}

View File

@@ -1,7 +1,7 @@
import { DetailedHTMLProps, HTMLAttributes } from 'react'
import '@/assets/css/components/common/card.scss'
interface CardProps extends DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement> {}
type CardProps = DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>
const Card = forwardRef<HTMLDivElement, CardProps>(({ className, ...props }, ref) => {
return <div className={`card-box${className ? ` ${className}` : ''}`} {...props} ref={ref} />

View File

@@ -82,94 +82,90 @@ const HideScrollbar = forwardRef<HideScrollbarElement, HideScrollbarProps>(
},
ref
) => {
useImperativeHandle<HideScrollbarElement, HideScrollbarElement>(
ref,
() => {
return {
scrollTo(x, y, smooth?: boolean) {
rootRef.current?.scrollTo({
left: x,
top: y,
behavior: smooth === false ? 'instant' : 'smooth'
})
},
scrollX(x, smooth?: boolean) {
rootRef.current?.scrollTo({
left: x,
behavior: smooth === false ? 'instant' : 'smooth'
})
},
scrollY(y, smooth?: boolean) {
rootRef.current?.scrollTo({
top: y,
behavior: smooth === false ? 'instant' : 'smooth'
})
},
scrollLeft(length, smooth?: boolean) {
rootRef.current?.scrollTo({
left: rootRef.current?.scrollLeft - length,
behavior: smooth === false ? 'instant' : 'smooth'
})
},
scrollRight(length, smooth?: boolean) {
rootRef.current?.scrollTo({
left: rootRef.current?.scrollLeft + length,
behavior: smooth === false ? 'instant' : 'smooth'
})
},
scrollUp(length, smooth?: boolean) {
rootRef.current?.scrollTo({
top: rootRef.current?.scrollTop - length,
behavior: smooth === false ? 'instant' : 'smooth'
})
},
scrollDown(length, smooth?: boolean) {
rootRef.current?.scrollTo({
top: rootRef.current?.scrollTop + length,
behavior: smooth === false ? 'instant' : 'smooth'
})
},
getX() {
return rootRef.current?.scrollLeft ?? 0
},
getY() {
return rootRef.current?.scrollTop ?? 0
},
addEventListenerWithType<K extends keyof HTMLElementEventMap>(
type: K,
listener: (this: HTMLDivElement, ev: HTMLElementEventMap[K]) => never,
options?: boolean | AddEventListenerOptions
): void {
rootRef.current?.addEventListener<K>(type, listener, options)
},
addEventListener(
type: string,
listener: EventListenerOrEventListenerObject,
options?: boolean | AddEventListenerOptions
): void {
rootRef.current?.addEventListener(type, listener, options)
},
removeEventListenerWithType<K extends keyof HTMLElementEventMap>(
type: K,
listener: (this: HTMLDivElement, ev: HTMLElementEventMap[K]) => never,
options?: boolean | EventListenerOptions
): void {
rootRef.current?.removeEventListener<K>(type, listener, options)
},
removeEventListener(
type: string,
listener: EventListenerOrEventListenerObject,
options?: boolean | EventListenerOptions
): void {
rootRef.current?.removeEventListener(type, listener, options)
},
refreshLayout(): void {
refreshLayout()
}
useImperativeHandle<HideScrollbarElement, HideScrollbarElement>(ref, () => {
return {
scrollTo(x, y, smooth?: boolean) {
rootRef.current?.scrollTo({
left: x,
top: y,
behavior: smooth === false ? 'instant' : 'smooth'
})
},
scrollX(x, smooth?: boolean) {
rootRef.current?.scrollTo({
left: x,
behavior: smooth === false ? 'instant' : 'smooth'
})
},
scrollY(y, smooth?: boolean) {
rootRef.current?.scrollTo({
top: y,
behavior: smooth === false ? 'instant' : 'smooth'
})
},
scrollLeft(length, smooth?: boolean) {
rootRef.current?.scrollTo({
left: rootRef.current?.scrollLeft - length,
behavior: smooth === false ? 'instant' : 'smooth'
})
},
scrollRight(length, smooth?: boolean) {
rootRef.current?.scrollTo({
left: rootRef.current?.scrollLeft + length,
behavior: smooth === false ? 'instant' : 'smooth'
})
},
scrollUp(length, smooth?: boolean) {
rootRef.current?.scrollTo({
top: rootRef.current?.scrollTop - length,
behavior: smooth === false ? 'instant' : 'smooth'
})
},
scrollDown(length, smooth?: boolean) {
rootRef.current?.scrollTo({
top: rootRef.current?.scrollTop + length,
behavior: smooth === false ? 'instant' : 'smooth'
})
},
getX() {
return rootRef.current?.scrollLeft ?? 0
},
getY() {
return rootRef.current?.scrollTop ?? 0
},
addEventListenerWithType<K extends keyof HTMLElementEventMap>(
type: K,
listener: (this: HTMLDivElement, ev: HTMLElementEventMap[K]) => never,
options?: boolean | AddEventListenerOptions
): void {
rootRef.current?.addEventListener<K>(type, listener, options)
},
addEventListener(
type: string,
listener: EventListenerOrEventListenerObject,
options?: boolean | AddEventListenerOptions
): void {
rootRef.current?.addEventListener(type, listener, options)
},
removeEventListenerWithType<K extends keyof HTMLElementEventMap>(
type: K,
listener: (this: HTMLDivElement, ev: HTMLElementEventMap[K]) => never,
options?: boolean | EventListenerOptions
): void {
rootRef.current?.removeEventListener<K>(type, listener, options)
},
removeEventListener(
type: string,
listener: EventListenerOrEventListenerObject,
options?: boolean | EventListenerOptions
): void {
rootRef.current?.removeEventListener(type, listener, options)
},
refreshLayout(): void {
refreshLayout()
}
},
[]
)
}
}, [])
const maskRef = useRef<HTMLDivElement>(null)
const rootRef = useRef<HTMLDivElement>(null)

View File

@@ -7,7 +7,6 @@ interface DragHandleProps {
}
const DragHandle = ({ padding }: DragHandleProps) => {
// eslint-disable-next-line @typescript-eslint/unbound-method
const { attributes, listeners, ref } = useContext(HandleContextInst)
return (

View File

@@ -1,6 +1,7 @@
import { DraggableSyntheticListeners } from '@dnd-kit/core'
export interface HandleContext {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
attributes: Record<string, any>
listeners: DraggableSyntheticListeners
ref(node: HTMLElement | null): void

View File

@@ -25,7 +25,6 @@ interface StoreCardProps extends DetailedHTMLProps<HTMLAttributes<HTMLDivElement
const StoreCard = ({
style,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
ref,
icon,
toolName,

View File

@@ -24,7 +24,6 @@ interface RepositoryCardProps
const RepositoryCard = ({
style,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
ref,
icon,
toolName,

View File

@@ -47,7 +47,6 @@ interface StoreCardProps extends DetailedHTMLProps<HTMLAttributes<HTMLDivElement
const StoreCard = ({
style,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
ref,
icon,
toolName,

View File

@@ -126,10 +126,8 @@ const SignIn = () => {
form={twoFactorForm}
ref={() => {
setTimeout(() => {
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
twoFactorForm
.getFieldInstance('twoFactorCode')
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
.focus()
}, 50)
}}

View File

@@ -31,7 +31,6 @@ const Mail = () => {
form={mailSendForm}
ref={() => {
setTimeout(() => {
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
mailSendForm?.getFieldInstance('to').focus()
}, 50)
}}

View File

@@ -14,8 +14,6 @@ import {
import { BarChart, BarSeriesOption, LineChart, LineSeriesOption } from 'echarts/charts'
import { SVGRenderer } from 'echarts/renderers'
import { UniversalTransition } from 'echarts/features'
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-expect-error
import { CallbackDataParams } from 'echarts/types/dist/shared'
import { utcToLocalTime } from '@/util/datetime'
@@ -83,11 +81,13 @@ export const barEChartsBaseOption: EChartsOption = {
export const getTooltipTimeFormatter = (format: string = 'yyyy-MM-DD HH:mm:ss') => {
return (params: CallbackDataParams[]) =>
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-argument
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-expect-error
`${utcToLocalTime(params[0].data[0], format)}<br>${params
.map(
(param) =>
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-expect-error
`<span style="display: flex; justify-content: space-between;"><span>${param.marker}${param.seriesName}</span><span style="font-weight: bold; margin-left: 16px;">${param.data[1]}</span></span>`
)
.join('')}`

View File

@@ -628,7 +628,6 @@ const Base = () => {
form={addFileForm}
ref={() => {
setTimeout(() => {
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
addFileForm?.getFieldInstance('fileName').focus()
}, 50)
}}
@@ -822,7 +821,6 @@ const Base = () => {
form={renameFileForm}
ref={() => {
setTimeout(() => {
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
renameFileForm?.getFieldInstance('fileName').focus()
}, 50)
}}

View File

@@ -479,7 +479,6 @@ const Template = () => {
form={addFileForm}
ref={() => {
setTimeout(() => {
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
addFileForm?.getFieldInstance('fileName').focus()
}, 50)
}}
@@ -674,7 +673,6 @@ const Template = () => {
form={renameFileForm}
ref={() => {
setTimeout(() => {
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
renameFileForm?.getFieldInstance('fileName').focus()
}, 50)
}}

View File

@@ -353,7 +353,6 @@ const User = () => {
wrapperCol={{ span: 18 }}
ref={() => {
setTimeout(() => {
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
changePasswordForm?.getFieldInstance('password').focus()
}, 50)
}}

View File

@@ -74,7 +74,6 @@ const Create = () => {
const reader = new FileReader()
reader.addEventListener('load', () => {
// eslint-disable-next-line @typescript-eslint/no-base-to-string
form.setFieldValue('icon', reader.result!.toString().split(',')[1])
void form.validateFields(['icon'])
})
@@ -163,7 +162,7 @@ const Create = () => {
temp.push(item)
}
})
form.setFieldValue('keyword', temp)
form.setFieldValue('keywords', temp)
}, [form, formValues?.keywords])
useEffect(() => {

View File

@@ -151,7 +151,6 @@ const Edit = () => {
const reader = new FileReader()
reader.addEventListener('load', () => {
// eslint-disable-next-line @typescript-eslint/no-base-to-string
form.setFieldValue('icon', reader.result!.toString().split(',')[1])
void form.validateFields(['icon'])
})

View File

@@ -266,7 +266,6 @@ const Tools = () => {
form={upgradeForm}
ref={() => {
setTimeout(() => {
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
upgradeForm?.getFieldInstance('toolId').focus()
}, 50)
}}

View File

@@ -22,10 +22,6 @@ import Card from '@/components/common/Card'
import FlexBox from '@/components/common/FlexBox'
import HideScrollbar from '@/components/common/HideScrollbar'
interface ChangePasswordFields extends UserUpdatePasswordParam {
newPasswordConfirm: string
}
const User = () => {
const [modal, contextHolder] = AntdModal.useModal()
const [form] = AntdForm.useForm<UserInfoUpdateParam>()
@@ -37,7 +33,7 @@ const User = () => {
const [isGettingAvatar, setIsGettingAvatar] = useState(false)
const [avatar, setAvatar] = useState('')
const [userWithPowerInfoVo, setUserWithPowerInfoVo] = useState<UserWithPowerInfoVo>()
const [changePasswordForm] = AntdForm.useForm<ChangePasswordFields>()
const [changePasswordForm] = AntdForm.useForm<UserChangePasswordParam>()
const handleOnCopyToClipboard = (username?: string) => {
return username
@@ -127,7 +123,6 @@ const User = () => {
wrapperCol={{ span: 18 }}
ref={() => {
setTimeout(() => {
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
changePasswordForm?.getFieldInstance('originalPassword').focus()
}, 50)
}}
@@ -260,10 +255,8 @@ const User = () => {
form={twoFactorForm}
ref={() => {
setTimeout(() => {
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
twoFactorForm
?.getFieldInstance('twoFactorCode')
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
.focus()
}, 50)
}}
@@ -352,10 +345,8 @@ const User = () => {
form={twoFactorForm}
ref={() => {
setTimeout(() => {
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
twoFactorForm
?.getFieldInstance('twoFactorCode')
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
.focus()
}, 50)
}}

View File

@@ -12,7 +12,7 @@ export const useUpdatedEffect = (effect: EffectCallback, dependencies: Dependenc
}, dependencies)
}
export const usePrevious = <T,>(value: T): T | undefined => {
export const usePrevious = <T>(value: T): T | undefined => {
const ref = useRef<T>()
useEffect(() => {
ref.current = value