chore: format code

This commit is contained in:
hayden
2024-11-11 11:39:32 +08:00
parent e36af38375
commit 6904aca24c
30 changed files with 291 additions and 147 deletions

View File

@@ -45,4 +45,4 @@
"strings": "on"
},
"css.lint.unknownAtRules": "ignore"
}
}

View File

@@ -1,18 +1,15 @@
import globals from 'globals'
import pluginJs from '@eslint/js'
import tsEslint from 'typescript-eslint'
import pluginVue from 'eslint-plugin-vue'
import globals from 'globals'
import tsEslint from 'typescript-eslint'
/** @type {import('eslint').Linter.Config[]} */
export default [
{
files: ['src/**/*.{js,mjs,cjs,ts,vue}'],
},
{
ignores: [
'src/scripts/*',
'src/extensions/core/*',
'src/types/vue-shim.d.ts',
],
ignores: ['src/scripts/*', 'src/types/shims.d.ts', 'src/utils/legacy.ts'],
},
{ languageOptions: { globals: globals.browser } },
pluginJs.configs.recommended,
@@ -25,8 +22,6 @@ export default [
{
rules: {
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-unused-vars': 'off',
'@typescript-eslint/prefer-as-const': 'off',
},
},
]

View File

@@ -6,6 +6,7 @@
"scripts": {
"dev": "vite",
"build": "vite build",
"lint": "eslint src",
"prepare": "husky"
},
"devDependencies": {
@@ -18,6 +19,7 @@
"autoprefixer": "^10.4.20",
"eslint": "^9.10.0",
"eslint-plugin-vue": "^9.28.0",
"globals": "^15.12.0",
"husky": "^9.1.6",
"less": "^4.2.0",
"lint-staged": "^15.2.10",
@@ -27,8 +29,9 @@
"prettier-plugin-tailwindcss": "^0.6.8",
"tailwindcss": "^3.4.12",
"typescript": "^5.6.2",
"typescript-eslint": "^8.6.0",
"vite": "^5.4.6"
"typescript-eslint": "^8.13.0",
"vite": "^5.4.6",
"vue-tsc": "^2.1.10"
},
"dependencies": {
"@primevue/themes": "^4.0.7",
@@ -48,4 +51,4 @@
"git add"
]
}
}
}

253
pnpm-lock.yaml generated
View File

@@ -66,6 +66,9 @@ importers:
eslint-plugin-vue:
specifier: ^9.28.0
version: 9.28.0(eslint@9.10.0(jiti@1.21.6))
globals:
specifier: ^15.12.0
version: 15.12.0
husky:
specifier: ^9.1.6
version: 9.1.6
@@ -83,10 +86,10 @@ importers:
version: 3.3.3
prettier-plugin-organize-imports:
specifier: ^4.1.0
version: 4.1.0(prettier@3.3.3)(typescript@5.6.2)
version: 4.1.0(prettier@3.3.3)(typescript@5.6.2)(vue-tsc@2.1.10(typescript@5.6.2))
prettier-plugin-tailwindcss:
specifier: ^0.6.8
version: 0.6.8(prettier-plugin-organize-imports@4.1.0(prettier@3.3.3)(typescript@5.6.2))(prettier@3.3.3)
version: 0.6.8(prettier-plugin-organize-imports@4.1.0(prettier@3.3.3)(typescript@5.6.2)(vue-tsc@2.1.10(typescript@5.6.2)))(prettier@3.3.3)
tailwindcss:
specifier: ^3.4.12
version: 3.4.12
@@ -94,11 +97,14 @@ importers:
specifier: ^5.6.2
version: 5.6.2
typescript-eslint:
specifier: ^8.6.0
version: 8.6.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)
specifier: ^8.13.0
version: 8.13.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)
vite:
specifier: ^5.4.6
version: 5.4.6(@types/node@22.5.5)(less@4.2.0)
vue-tsc:
specifier: ^2.1.10
version: 2.1.10(typescript@5.6.2)
packages:
@@ -267,10 +273,20 @@ packages:
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
'@eslint-community/eslint-utils@4.4.1':
resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
'@eslint-community/regexpp@4.11.1':
resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
'@eslint-community/regexpp@4.12.1':
resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
'@eslint/config-array@0.18.0':
resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -489,8 +505,8 @@ packages:
'@types/turndown@5.0.5':
resolution: {integrity: sha512-TL2IgGgc7B5j78rIccBtlYAnkuv8nUQqhQc+DSYV5j9Be9XOcm/SKOVRuA47xAVI3680Tk9B1d8flK2GWT2+4w==}
'@typescript-eslint/eslint-plugin@8.6.0':
resolution: {integrity: sha512-UOaz/wFowmoh2G6Mr9gw60B1mm0MzUtm6Ic8G2yM1Le6gyj5Loi/N+O5mocugRGY+8OeeKmkMmbxNqUCq3B4Sg==}
'@typescript-eslint/eslint-plugin@8.13.0':
resolution: {integrity: sha512-nQtBLiZYMUPkclSeC3id+x4uVd1SGtHuElTxL++SfP47jR0zfkZBJHc+gL4qPsgTuypz0k8Y2GheaDYn6Gy3rg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
'@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
@@ -500,8 +516,8 @@ packages:
typescript:
optional: true
'@typescript-eslint/parser@8.6.0':
resolution: {integrity: sha512-eQcbCuA2Vmw45iGfcyG4y6rS7BhWfz9MQuk409WD47qMM+bKCGQWXxvoOs1DUp+T7UBMTtRTVT+kXr7Sh4O9Ow==}
'@typescript-eslint/parser@8.13.0':
resolution: {integrity: sha512-w0xp+xGg8u/nONcGw1UXAr6cjCPU1w0XVyBs6Zqaj5eLmxkKQAByTdV/uGgNN5tVvN/kKpoQlP2cL7R+ajZZIQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -510,12 +526,12 @@ packages:
typescript:
optional: true
'@typescript-eslint/scope-manager@8.6.0':
resolution: {integrity: sha512-ZuoutoS5y9UOxKvpc/GkvF4cuEmpokda4wRg64JEia27wX+PysIE9q+lzDtlHHgblwUWwo5/Qn+/WyTUvDwBHw==}
'@typescript-eslint/scope-manager@8.13.0':
resolution: {integrity: sha512-XsGWww0odcUT0gJoBZ1DeulY1+jkaHUciUq4jKNv4cpInbvvrtDoyBH9rE/n2V29wQJPk8iCH1wipra9BhmiMA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/type-utils@8.6.0':
resolution: {integrity: sha512-dtePl4gsuenXVwC7dVNlb4mGDcKjDT/Ropsk4za/ouMBPplCLyznIaR+W65mvCvsyS97dymoBRrioEXI7k0XIg==}
'@typescript-eslint/type-utils@8.13.0':
resolution: {integrity: sha512-Rqnn6xXTR316fP4D2pohZenJnp+NwQ1mo7/JM+J1LWZENSLkJI8ID8QNtlvFeb0HnFSK94D6q0cnMX6SbE5/vA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '*'
@@ -523,12 +539,12 @@ packages:
typescript:
optional: true
'@typescript-eslint/types@8.6.0':
resolution: {integrity: sha512-rojqFZGd4MQxw33SrOy09qIDS8WEldM8JWtKQLAjf/X5mGSeEFh5ixQlxssMNyPslVIk9yzWqXCsV2eFhYrYUw==}
'@typescript-eslint/types@8.13.0':
resolution: {integrity: sha512-4cyFErJetFLckcThRUFdReWJjVsPCqyBlJTi6IDEpc1GWCIIZRFxVppjWLIMcQhNGhdWJJRYFHpHoDWvMlDzng==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/typescript-estree@8.6.0':
resolution: {integrity: sha512-MOVAzsKJIPIlLK239l5s06YXjNqpKTVhBVDnqUumQJja5+Y94V3+4VUFRA0G60y2jNnTVwRCkhyGQpavfsbq/g==}
'@typescript-eslint/typescript-estree@8.13.0':
resolution: {integrity: sha512-v7SCIGmVsRK2Cy/LTLGN22uea6SaUIlpBcO/gnMGT/7zPtxp90bphcGf4fyrCQl3ZtiBKqVTG32hb668oIYy1g==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '*'
@@ -536,14 +552,14 @@ packages:
typescript:
optional: true
'@typescript-eslint/utils@8.6.0':
resolution: {integrity: sha512-eNp9cWnYf36NaOVjkEUznf6fEgVy1TWpE0o52e4wtojjBx7D1UV2WAWGzR+8Y5lVFtpMLPwNbC67T83DWSph4A==}
'@typescript-eslint/utils@8.13.0':
resolution: {integrity: sha512-A1EeYOND6Uv250nybnLZapeXpYMl8tkzYUxqmoKAWnI4sei3ihf2XdZVd+vVOmHGcp3t+P7yRrNsyyiXTvShFQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
'@typescript-eslint/visitor-keys@8.6.0':
resolution: {integrity: sha512-wapVFfZg9H0qOYh4grNVQiMklJGluQrOUiOhYRrQWhx7BY/+I1IYb8BczWNbbUpO+pqy0rDciv3lQH5E1bCLrg==}
'@typescript-eslint/visitor-keys@8.13.0':
resolution: {integrity: sha512-7N/+lztJqH4Mrf0lb10R/CbI1EaAMMGyF5y0oJvFoAhafwgiRA7TXyd8TFn8FC8k5y2dTsYogg238qavRGNnlw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@vitejs/plugin-vue@5.1.4':
@@ -553,6 +569,15 @@ packages:
vite: ^5.0.0
vue: ^3.2.25
'@volar/language-core@2.4.10':
resolution: {integrity: sha512-hG3Z13+nJmGaT+fnQzAkS0hjJRa2FCeqZt6Bd+oGNhUkQ+mTFsDETg5rqUTxyzIh5pSOGY7FHCWUS8G82AzLCA==}
'@volar/source-map@2.4.10':
resolution: {integrity: sha512-OCV+b5ihV0RF3A7vEvNyHPi4G4kFa6ukPmyVocmqm5QzOd8r5yAtiNvaPEjl8dNvgC/lj4JPryeeHLdXd62rWA==}
'@volar/typescript@2.4.10':
resolution: {integrity: sha512-F8ZtBMhSXyYKuBfGpYwqA5rsONnOwAVvjyE7KPYJ7wgZqo2roASqNWUnianOomJX5u1cxeRooHV59N0PhvEOgw==}
'@vue/compiler-core@3.5.6':
resolution: {integrity: sha512-r+gNu6K4lrvaQLQGmf+1gc41p3FO2OUJyWmNqaIITaJU6YFiV5PtQSFZt8jfztYyARwqhoCayjprC7KMvT3nRA==}
@@ -565,9 +590,20 @@ packages:
'@vue/compiler-ssr@3.5.6':
resolution: {integrity: sha512-VpWbaZrEOCqnmqjE83xdwegtr5qO/2OPUC6veWgvNqTJ3bYysz6vY3VqMuOijubuUYPRpG3OOKIh9TD0Stxb9A==}
'@vue/compiler-vue2@2.7.16':
resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==}
'@vue/devtools-api@6.6.4':
resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==}
'@vue/language-core@2.1.10':
resolution: {integrity: sha512-DAI289d0K3AB5TUG3xDp9OuQ71CnrujQwJrQnfuZDwo6eGNf0UoRlPuaVNO+Zrn65PC3j0oB2i7mNmVPggeGeQ==}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
'@vue/reactivity@3.5.6':
resolution: {integrity: sha512-shZ+KtBoHna5GyUxWfoFVBCVd7k56m6lGhk5e+J9AKjheHF6yob5eukssHRI+rzvHBiU1sWs/1ZhNbLExc5oYQ==}
@@ -598,6 +634,9 @@ packages:
ajv@6.12.6:
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
alien-signals@0.2.1:
resolution: {integrity: sha512-FlEQrDJe9r2RI4cDlnK2zYqJezvx1uJaWEuwxsnlFqnPwvJbgitNBRumWrLDv8lA+7cCikpMxfJD2TTHiaTklA==}
ansi-escapes@7.0.0:
resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==}
engines: {node: '>=18'}
@@ -733,6 +772,9 @@ packages:
dayjs@1.11.13:
resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==}
de-indent@1.0.2:
resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==}
debug@4.3.7:
resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==}
engines: {node: '>=6.0'}
@@ -935,6 +977,10 @@ packages:
resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
engines: {node: '>=18'}
globals@15.12.0:
resolution: {integrity: sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==}
engines: {node: '>=18'}
graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
@@ -949,6 +995,10 @@ packages:
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
he@1.2.0:
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
hasBin: true
human-signals@5.0.0:
resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
engines: {node: '>=16.17.0'}
@@ -1152,6 +1202,9 @@ packages:
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
muggle-string@0.4.1:
resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==}
mz@2.7.0:
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
@@ -1225,6 +1278,9 @@ packages:
resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==}
engines: {node: '>= 0.10'}
path-browserify@1.0.1:
resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
path-exists@4.0.0:
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
engines: {node: '>=8'}
@@ -1546,8 +1602,8 @@ packages:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
ts-api-utils@1.3.0:
resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==}
ts-api-utils@1.4.0:
resolution: {integrity: sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==}
engines: {node: '>=16'}
peerDependencies:
typescript: '>=4.2.0'
@@ -1569,8 +1625,8 @@ packages:
resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
engines: {node: '>=10'}
typescript-eslint@8.6.0:
resolution: {integrity: sha512-eEhhlxCEpCd4helh3AO1hk0UP2MvbRi9CtIAJTVPQjuSXOOO2jsEacNi4UdcJzZJbeuVg1gMhtZ8UYb+NFYPrA==}
typescript-eslint@8.13.0:
resolution: {integrity: sha512-vIMpDRJrQd70au2G8w34mPps0ezFSPMEX4pXkTzUkrNbRX+36ais2ksGWN0esZL+ZMaFJEneOBHzCgSqle7DHw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '*'
@@ -1632,6 +1688,9 @@ packages:
terser:
optional: true
vscode-uri@3.0.8:
resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==}
vue-eslint-parser@9.4.3:
resolution: {integrity: sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==}
engines: {node: ^14.17.0 || >=16.0.0}
@@ -1644,6 +1703,12 @@ packages:
peerDependencies:
vue: ^3.0.0
vue-tsc@2.1.10:
resolution: {integrity: sha512-RBNSfaaRHcN5uqVqJSZh++Gy/YUzryuv9u1aFWhsammDJXNtUiJMNoJ747lZcQ68wUQFx6E73y4FY3D8E7FGMA==}
hasBin: true
peerDependencies:
typescript: '>=5.0.0'
vue@3.5.6:
resolution: {integrity: sha512-zv+20E2VIYbcJOzJPUWp03NOGFhMmpCKOfSxVTmCYyYFFko48H9tmuQFzYj7tu4qX1AeXlp9DmhIP89/sSxxhw==}
peerDependencies:
@@ -1783,8 +1848,15 @@ snapshots:
eslint: 9.10.0(jiti@1.21.6)
eslint-visitor-keys: 3.4.3
'@eslint-community/eslint-utils@4.4.1(eslint@9.10.0(jiti@1.21.6))':
dependencies:
eslint: 9.10.0(jiti@1.21.6)
eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.11.1': {}
'@eslint-community/regexpp@4.12.1': {}
'@eslint/config-array@0.18.0':
dependencies:
'@eslint/object-schema': 2.1.4
@@ -1968,30 +2040,30 @@ snapshots:
'@types/turndown@5.0.5': {}
'@typescript-eslint/eslint-plugin@8.6.0(@typescript-eslint/parser@8.6.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)':
'@typescript-eslint/eslint-plugin@8.13.0(@typescript-eslint/parser@8.13.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)':
dependencies:
'@eslint-community/regexpp': 4.11.1
'@typescript-eslint/parser': 8.6.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)
'@typescript-eslint/scope-manager': 8.6.0
'@typescript-eslint/type-utils': 8.6.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)
'@typescript-eslint/utils': 8.6.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)
'@typescript-eslint/visitor-keys': 8.6.0
'@eslint-community/regexpp': 4.12.1
'@typescript-eslint/parser': 8.13.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)
'@typescript-eslint/scope-manager': 8.13.0
'@typescript-eslint/type-utils': 8.13.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)
'@typescript-eslint/utils': 8.13.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)
'@typescript-eslint/visitor-keys': 8.13.0
eslint: 9.10.0(jiti@1.21.6)
graphemer: 1.4.0
ignore: 5.3.2
natural-compare: 1.4.0
ts-api-utils: 1.3.0(typescript@5.6.2)
ts-api-utils: 1.4.0(typescript@5.6.2)
optionalDependencies:
typescript: 5.6.2
transitivePeerDependencies:
- supports-color
'@typescript-eslint/parser@8.6.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)':
'@typescript-eslint/parser@8.13.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)':
dependencies:
'@typescript-eslint/scope-manager': 8.6.0
'@typescript-eslint/types': 8.6.0
'@typescript-eslint/typescript-estree': 8.6.0(typescript@5.6.2)
'@typescript-eslint/visitor-keys': 8.6.0
'@typescript-eslint/scope-manager': 8.13.0
'@typescript-eslint/types': 8.13.0
'@typescript-eslint/typescript-estree': 8.13.0(typescript@5.6.2)
'@typescript-eslint/visitor-keys': 8.13.0
debug: 4.3.7
eslint: 9.10.0(jiti@1.21.6)
optionalDependencies:
@@ -1999,54 +2071,54 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@typescript-eslint/scope-manager@8.6.0':
'@typescript-eslint/scope-manager@8.13.0':
dependencies:
'@typescript-eslint/types': 8.6.0
'@typescript-eslint/visitor-keys': 8.6.0
'@typescript-eslint/types': 8.13.0
'@typescript-eslint/visitor-keys': 8.13.0
'@typescript-eslint/type-utils@8.6.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)':
'@typescript-eslint/type-utils@8.13.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)':
dependencies:
'@typescript-eslint/typescript-estree': 8.6.0(typescript@5.6.2)
'@typescript-eslint/utils': 8.6.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)
'@typescript-eslint/typescript-estree': 8.13.0(typescript@5.6.2)
'@typescript-eslint/utils': 8.13.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)
debug: 4.3.7
ts-api-utils: 1.3.0(typescript@5.6.2)
ts-api-utils: 1.4.0(typescript@5.6.2)
optionalDependencies:
typescript: 5.6.2
transitivePeerDependencies:
- eslint
- supports-color
'@typescript-eslint/types@8.6.0': {}
'@typescript-eslint/types@8.13.0': {}
'@typescript-eslint/typescript-estree@8.6.0(typescript@5.6.2)':
'@typescript-eslint/typescript-estree@8.13.0(typescript@5.6.2)':
dependencies:
'@typescript-eslint/types': 8.6.0
'@typescript-eslint/visitor-keys': 8.6.0
'@typescript-eslint/types': 8.13.0
'@typescript-eslint/visitor-keys': 8.13.0
debug: 4.3.7
fast-glob: 3.3.2
is-glob: 4.0.3
minimatch: 9.0.5
semver: 7.6.3
ts-api-utils: 1.3.0(typescript@5.6.2)
ts-api-utils: 1.4.0(typescript@5.6.2)
optionalDependencies:
typescript: 5.6.2
transitivePeerDependencies:
- supports-color
'@typescript-eslint/utils@8.6.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)':
'@typescript-eslint/utils@8.13.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)':
dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@9.10.0(jiti@1.21.6))
'@typescript-eslint/scope-manager': 8.6.0
'@typescript-eslint/types': 8.6.0
'@typescript-eslint/typescript-estree': 8.6.0(typescript@5.6.2)
'@eslint-community/eslint-utils': 4.4.1(eslint@9.10.0(jiti@1.21.6))
'@typescript-eslint/scope-manager': 8.13.0
'@typescript-eslint/types': 8.13.0
'@typescript-eslint/typescript-estree': 8.13.0(typescript@5.6.2)
eslint: 9.10.0(jiti@1.21.6)
transitivePeerDependencies:
- supports-color
- typescript
'@typescript-eslint/visitor-keys@8.6.0':
'@typescript-eslint/visitor-keys@8.13.0':
dependencies:
'@typescript-eslint/types': 8.6.0
'@typescript-eslint/types': 8.13.0
eslint-visitor-keys: 3.4.3
'@vitejs/plugin-vue@5.1.4(vite@5.4.6(@types/node@22.5.5)(less@4.2.0))(vue@3.5.6(typescript@5.6.2))':
@@ -2054,6 +2126,18 @@ snapshots:
vite: 5.4.6(@types/node@22.5.5)(less@4.2.0)
vue: 3.5.6(typescript@5.6.2)
'@volar/language-core@2.4.10':
dependencies:
'@volar/source-map': 2.4.10
'@volar/source-map@2.4.10': {}
'@volar/typescript@2.4.10':
dependencies:
'@volar/language-core': 2.4.10
path-browserify: 1.0.1
vscode-uri: 3.0.8
'@vue/compiler-core@3.5.6':
dependencies:
'@babel/parser': 7.25.6
@@ -2084,8 +2168,26 @@ snapshots:
'@vue/compiler-dom': 3.5.6
'@vue/shared': 3.5.6
'@vue/compiler-vue2@2.7.16':
dependencies:
de-indent: 1.0.2
he: 1.2.0
'@vue/devtools-api@6.6.4': {}
'@vue/language-core@2.1.10(typescript@5.6.2)':
dependencies:
'@volar/language-core': 2.4.10
'@vue/compiler-dom': 3.5.6
'@vue/compiler-vue2': 2.7.16
'@vue/shared': 3.5.6
alien-signals: 0.2.1
minimatch: 9.0.5
muggle-string: 0.4.1
path-browserify: 1.0.1
optionalDependencies:
typescript: 5.6.2
'@vue/reactivity@3.5.6':
dependencies:
'@vue/shared': 3.5.6
@@ -2123,6 +2225,8 @@ snapshots:
json-schema-traverse: 0.4.1
uri-js: 4.4.1
alien-signals@0.2.1: {}
ansi-escapes@7.0.0:
dependencies:
environment: 1.1.0
@@ -2248,6 +2352,8 @@ snapshots:
dayjs@1.11.13: {}
de-indent@1.0.2: {}
debug@4.3.7:
dependencies:
ms: 2.1.3
@@ -2493,6 +2599,8 @@ snapshots:
globals@14.0.0: {}
globals@15.12.0: {}
graceful-fs@4.2.11:
optional: true
@@ -2504,6 +2612,8 @@ snapshots:
dependencies:
function-bind: 1.1.2
he@1.2.0: {}
human-signals@5.0.0: {}
husky@9.1.6: {}
@@ -2701,6 +2811,8 @@ snapshots:
ms@2.1.3: {}
muggle-string@0.4.1: {}
mz@2.7.0:
dependencies:
any-promise: 1.3.0
@@ -2768,6 +2880,8 @@ snapshots:
parse-node-version@1.0.1: {}
path-browserify@1.0.1: {}
path-exists@4.0.0: {}
path-key@3.1.1: {}
@@ -2833,16 +2947,18 @@ snapshots:
prelude-ls@1.2.1: {}
prettier-plugin-organize-imports@4.1.0(prettier@3.3.3)(typescript@5.6.2):
prettier-plugin-organize-imports@4.1.0(prettier@3.3.3)(typescript@5.6.2)(vue-tsc@2.1.10(typescript@5.6.2)):
dependencies:
prettier: 3.3.3
typescript: 5.6.2
optionalDependencies:
vue-tsc: 2.1.10(typescript@5.6.2)
prettier-plugin-tailwindcss@0.6.8(prettier-plugin-organize-imports@4.1.0(prettier@3.3.3)(typescript@5.6.2))(prettier@3.3.3):
prettier-plugin-tailwindcss@0.6.8(prettier-plugin-organize-imports@4.1.0(prettier@3.3.3)(typescript@5.6.2)(vue-tsc@2.1.10(typescript@5.6.2)))(prettier@3.3.3):
dependencies:
prettier: 3.3.3
optionalDependencies:
prettier-plugin-organize-imports: 4.1.0(prettier@3.3.3)(typescript@5.6.2)
prettier-plugin-organize-imports: 4.1.0(prettier@3.3.3)(typescript@5.6.2)(vue-tsc@2.1.10(typescript@5.6.2))
prettier@3.3.3: {}
@@ -3040,7 +3156,7 @@ snapshots:
dependencies:
is-number: 7.0.0
ts-api-utils@1.3.0(typescript@5.6.2):
ts-api-utils@1.4.0(typescript@5.6.2):
dependencies:
typescript: 5.6.2
@@ -3058,11 +3174,11 @@ snapshots:
type-fest@0.20.2: {}
typescript-eslint@8.6.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2):
typescript-eslint@8.13.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2):
dependencies:
'@typescript-eslint/eslint-plugin': 8.6.0(@typescript-eslint/parser@8.6.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)
'@typescript-eslint/parser': 8.6.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)
'@typescript-eslint/utils': 8.6.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)
'@typescript-eslint/eslint-plugin': 8.13.0(@typescript-eslint/parser@8.13.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2))(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)
'@typescript-eslint/parser': 8.13.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)
'@typescript-eslint/utils': 8.13.0(eslint@9.10.0(jiti@1.21.6))(typescript@5.6.2)
optionalDependencies:
typescript: 5.6.2
transitivePeerDependencies:
@@ -3097,6 +3213,8 @@ snapshots:
fsevents: 2.3.3
less: 4.2.0
vscode-uri@3.0.8: {}
vue-eslint-parser@9.4.3(eslint@9.10.0(jiti@1.21.6)):
dependencies:
debug: 4.3.7
@@ -3117,6 +3235,13 @@ snapshots:
'@vue/devtools-api': 6.6.4
vue: 3.5.6(typescript@5.6.2)
vue-tsc@2.1.10(typescript@5.6.2):
dependencies:
'@volar/typescript': 2.4.10
'@vue/language-core': 2.1.10(typescript@5.6.2)
semver: 7.6.3
typescript: 5.6.2
vue@3.5.6(typescript@5.6.2):
dependencies:
'@vue/compiler-dom': 3.5.6

View File

@@ -6,17 +6,17 @@
</template>
<script setup lang="ts">
import DialogManager from 'components/DialogManager.vue'
import DialogDownload from 'components/DialogDownload.vue'
import GlobalToast from 'components/GlobalToast.vue'
import GlobalLoading from 'components/GlobalLoading.vue'
import DialogManager from 'components/DialogManager.vue'
import GlobalDialogStack from 'components/GlobalDialogStack.vue'
import GlobalLoading from 'components/GlobalLoading.vue'
import GlobalToast from 'components/GlobalToast.vue'
import { useStoreProvider } from 'hooks/store'
import { useToast } from 'hooks/toast'
import GlobalConfirm from 'primevue/confirmdialog'
import { $el, app, ComfyButton } from 'scripts/comfyAPI'
import { onMounted } from 'vue'
import { useI18n } from 'vue-i18n'
import { useStoreProvider } from 'hooks/store'
import { useToast } from 'hooks/toast'
const { t } = useI18n()
const { dialog, models, config, download } = useStoreProvider()
@@ -39,6 +39,7 @@ onMounted(() => {
content: DialogDownload,
headerButtons: [
{
key: 'refresh',
icon: 'pi pi-refresh',
command: () => download.refresh(),
},
@@ -56,10 +57,12 @@ onMounted(() => {
keepAlive: true,
headerButtons: [
{
key: 'refresh',
icon: 'pi pi-refresh',
command: refreshModelsAndConfig,
},
{
key: 'download',
icon: 'pi pi-download',
command: openDownloadDialog,
},

View File

@@ -60,15 +60,16 @@
<script setup lang="ts">
import ModelContent from 'components/ModelContent.vue'
import ResponseInput from 'components/ResponseInput.vue'
import ResponseSelect from 'components/ResponseSelect.vue'
import ResponseScroll from 'components/ResponseScroll.vue'
import Button from 'primevue/button'
import ResponseSelect from 'components/ResponseSelect.vue'
import { useConfig } from 'hooks/config'
import { useDialog } from 'hooks/dialog'
import { useModelSearch } from 'hooks/download'
import { useLoading } from 'hooks/loading'
import { request } from 'hooks/request'
import { useToast } from 'hooks/toast'
import Button from 'primevue/button'
import { VersionModel } from 'types/typings'
import { previewUrlToFile } from 'utils/common'
import { ref } from 'vue'

View File

@@ -73,9 +73,9 @@
<script setup lang="ts">
import DialogCreateTask from 'components/DialogCreateTask.vue'
import ResponseScroll from 'components/ResponseScroll.vue'
import Button from 'primevue/button'
import { useDownload } from 'hooks/download'
import { useDialog } from 'hooks/dialog'
import { useDownload } from 'hooks/download'
import Button from 'primevue/button'
import { useI18n } from 'vue-i18n'
const { data } = useDownload()

View File

@@ -75,17 +75,18 @@
</template>
<script setup lang="ts" name="manager-dialog">
import { useConfig } from 'hooks/config'
import { useModels } from 'hooks/model'
import ModelCard from 'components/ModelCard.vue'
import ResponseInput from 'components/ResponseInput.vue'
import ResponseSelect from 'components/ResponseSelect.vue'
import ResponseScroll from 'components/ResponseScroll.vue'
import ResponseSelect from 'components/ResponseSelect.vue'
import { useConfig } from 'hooks/config'
import { useModels } from 'hooks/model'
import { defineResizeCallback } from 'hooks/resize'
import { chunk } from 'lodash'
import { Model } from 'types/typings'
import { genModelKey } from 'utils/model'
import { computed, ref, watch } from 'vue'
import { useI18n } from 'vue-i18n'
import { chunk } from 'lodash'
import { defineResizeCallback } from 'hooks/resize'
import { genModelKey } from 'utils/model'
const { isMobile, cardWidth, gutter, aspect, modelFolders } = useConfig()
@@ -153,7 +154,7 @@ const list = computed(() => {
return matchType && matchName
})
let sortStrategy = (a: Model, b: Model) => 0
let sortStrategy: (a: Model, b: Model) => number = () => 0
switch (sortOrder.value) {
case 'name':
sortStrategy = (a, b) => a.fullname.localeCompare(b.fullname)

View File

@@ -44,9 +44,10 @@
<script setup lang="ts">
import ModelContent from 'components/ModelContent.vue'
import ResponseScroll from 'components/ResponseScroll.vue'
import Button from 'primevue/button'
import { useModelNodeAction, useModels } from 'hooks/model'
import { useRequest } from 'hooks/request'
import Button from 'primevue/button'
import { BaseModel, Model } from 'types/typings'
import { computed, ref } from 'vue'
interface Props {

View File

@@ -21,6 +21,7 @@
<div class="p-dialog-header-actions">
<Button
v-for="action in item.headerButtons"
:key="action.key"
severity="secondary"
:text="true"
:rounded="true"
@@ -38,9 +39,9 @@
</template>
<script setup lang="ts">
import Button from 'primevue/button'
import ResponseDialog from 'components/ResponseDialog.vue'
import { useDialog } from 'hooks/dialog'
import Button from 'primevue/button'
const { stack, rise, close } = useDialog()
</script>

View File

@@ -29,7 +29,11 @@
<col />
</colgroup>
<tbody>
<tr v-for="item in information" class="h-8 whitespace-nowrap border-b">
<tr
v-for="item in information"
:key="item.key"
class="h-8 whitespace-nowrap border-b"
>
<td class="border-r bg-gray-300 px-4 dark:bg-gray-800">
{{ $t(`info.${item.key}`) }}
</td>

View File

@@ -66,11 +66,12 @@
<script setup lang="ts">
import DialogModelDetail from 'components/DialogModelDetail.vue'
import { useDialog } from 'hooks/dialog'
import { useModelNodeAction } from 'hooks/model'
import Button from 'primevue/button'
import { Model } from 'types/typings'
import { genModelKey } from 'utils/model'
import { computed } from 'vue'
import { useModelNodeAction } from 'hooks/model'
import { useDialog } from 'hooks/dialog'
interface Props {
model: Model

View File

@@ -39,15 +39,10 @@
</template>
<script setup lang="ts">
import ModelPreview from 'components/ModelPreview.vue'
import ModelBaseInfo from 'components/ModelBaseInfo.vue'
import ModelDescription from 'components/ModelDescription.vue'
import ModelMetadata from 'components/ModelMetadata.vue'
import Tab from 'primevue/tab'
import Tabs from 'primevue/tabs'
import TabList from 'primevue/tablist'
import TabPanel from 'primevue/tabpanel'
import TabPanels from 'primevue/tabpanels'
import ModelPreview from 'components/ModelPreview.vue'
import {
useModelBaseInfoEditor,
useModelDescriptionEditor,
@@ -55,8 +50,14 @@ import {
useModelMetadataEditor,
useModelPreviewEditor,
} from 'hooks/model'
import { toRaw, watch } from 'vue'
import { cloneDeep } from 'lodash'
import Tab from 'primevue/tab'
import TabList from 'primevue/tablist'
import TabPanel from 'primevue/tabpanel'
import TabPanels from 'primevue/tabpanels'
import Tabs from 'primevue/tabs'
import { BaseModel } from 'types/typings'
import { toRaw, watch } from 'vue'
interface Props {
model: BaseModel

View File

@@ -1,7 +1,7 @@
<template>
<table v-if="dataSource.length" class="w-full border-collapse border">
<tbody>
<tr v-for="item in dataSource" class="h-8 border-b">
<tr v-for="item in dataSource" :key="item.key" class="h-8 border-b">
<td class="border-r bg-gray-300 px-4 dark:bg-gray-800">
{{ item.key }}
</td>

View File

@@ -88,13 +88,13 @@
</template>
<script setup lang="ts">
import ResponseFileUpload from 'components/ResponseFileUpload.vue'
import ResponseImage from 'components/ResponseImage.vue'
import ResponseInput from 'components/ResponseInput.vue'
import ResponseFileUpload from 'components/ResponseFileUpload.vue'
import { useConfig } from 'hooks/config'
import { useModelPreview } from 'hooks/model'
import Button from 'primevue/button'
import Carousel from 'primevue/carousel'
import { useModelPreview } from 'hooks/model'
import { useConfig } from 'hooks/config'
const editable = defineModel<boolean>('editable')
const { cardWidth } = useConfig()

View File

@@ -75,9 +75,10 @@
</template>
<script setup lang="ts">
import Dialog from 'primevue/dialog'
import { clamp, isNil } from 'lodash'
import { useConfig } from 'hooks/config'
import { clamp, isNil } from 'lodash'
import Dialog from 'primevue/dialog'
import { ContainerPosition, ContainerSize } from 'types/typings'
import { computed, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue'
interface Props {

View File

@@ -19,6 +19,8 @@
</template>
<script setup lang="ts">
import { SelectEvent, SelectFile } from 'types/typings'
const emits = defineEmits<{
select: [event: SelectEvent]
}>()

View File

@@ -28,7 +28,7 @@
</template>
<script setup lang="ts">
import { computed, nextTick, ref } from 'vue'
import { computed, ref } from 'vue'
interface Props {
prefixIcon?: string

View File

@@ -60,8 +60,9 @@
</template>
<script setup lang="ts" generic="T">
import { nextTick, onUnmounted, ref, watch } from 'vue'
import { defineResizeCallback } from 'hooks/resize'
import { clamp, throttle } from 'lodash'
import { nextTick, onUnmounted, ref, watch } from 'vue'
interface ScrollAreaProps {
items?: T[][]
@@ -206,7 +207,7 @@ const calculateScrollThumbSize = () => {
})
}
const onContainerResize: ResizeObserverCallback = throttle((entries) => {
const onContainerResize = defineResizeCallback((entries) => {
emit('resize', entries)
if (isDragging.value) return

View File

@@ -150,6 +150,7 @@ import { useConfig } from 'hooks/config'
import Button, { ButtonProps } from 'primevue/button'
import Drawer from 'primevue/drawer'
import Menu from 'primevue/menu'
import { SelectOptions } from 'types/typings'
import { computed, ref } from 'vue'
const current = defineModel()

View File

@@ -36,7 +36,7 @@ export const useConfig = defineStore('config', () => {
refresh,
}
useAddConfigSettings(config)
useAddConfigSettings()
return config
})
@@ -49,7 +49,7 @@ declare module 'hooks/store' {
}
}
function useAddConfigSettings(config: Config) {
function useAddConfigSettings() {
onMounted(() => {
// API keys
app.ui?.settings.addSetting({

View File

@@ -1,7 +1,9 @@
import { defineStore } from 'hooks/store'
import { ContainerSize } from 'types/typings'
import { Component, markRaw, ref } from 'vue'
interface HeaderButton {
key: string
icon: string
command: () => void
}

View File

@@ -4,6 +4,13 @@ import { request } from 'hooks/request'
import { defineStore } from 'hooks/store'
import { useToast } from 'hooks/toast'
import { api } from 'scripts/comfyAPI'
import {
BaseModel,
DownloadTask,
DownloadTaskOptions,
SelectOptions,
VersionModel,
} from 'types/typings'
import { bytesToSize } from 'utils/common'
import { onBeforeMount, onMounted, ref, watch } from 'vue'
import { useI18n } from 'vue-i18n'
@@ -385,7 +392,7 @@ class Huggingface extends ModelSearch {
}
class UnknownWebsite extends ModelSearch {
async search(searchUrl: string): Promise<VersionModel[]> {
async search(): Promise<VersionModel[]> {
return Promise.reject(
new Error(
'Unknown Website, please input a URL from huggingface.co or civitai.com.',

View File

@@ -6,6 +6,7 @@ import { defineStore } from 'hooks/store'
import { useToast } from 'hooks/toast'
import { cloneDeep } from 'lodash'
import { app } from 'scripts/comfyAPI'
import { BaseModel, Model, SelectEvent } from 'types/typings'
import { bytesToSize, formatDate, previewUrlToFile } from 'utils/common'
import { ModelGrid } from 'utils/legacy'
import { genModelKey, resolveModelTypeLoader } from 'utils/model'

View File

@@ -13,7 +13,7 @@ export const useStoreProvider = () => {
return storeEvent
}
const storeKeys = new Map<string, Symbol>()
const storeKeys = new Map<string, symbol>()
const getStoreKey = (key: string) => {
let storeKey = storeKeys.get(key)

View File

@@ -12,7 +12,7 @@ export const useToast = () => {
globalToast.value = toast
const wrapperToastError = <T extends Function>(callback: T): T => {
const wrapperToastError = <T extends CallableFunction>(callback: T): T => {
const showToast = (error: Error) => {
toast.add({
severity: 'error',

View File

@@ -1,7 +1,7 @@
type ContainerSize = { width: number; height: number }
type ContainerPosition = { left: number; top: number }
export type ContainerSize = { width: number; height: number }
export type ContainerPosition = { left: number; top: number }
interface BaseModel {
export interface BaseModel {
id: number | string
fullname: string
basename: string
@@ -14,37 +14,37 @@ interface BaseModel {
metadata: Record<string, string>
}
interface Model extends BaseModel {
export interface Model extends BaseModel {
createdAt: number
updatedAt: number
}
interface VersionModel extends BaseModel {
export interface VersionModel extends BaseModel {
shortname: string
downloadPlatform: string
downloadUrl: string
hashes?: Record<string, string>
}
type PassThrough<T = void> = T | object | undefined
export type PassThrough<T = void> = T | object | undefined
interface SelectOptions {
export interface SelectOptions {
label: string
value: any
icon?: string
command: () => void
}
interface SelectFile extends File {
export interface SelectFile extends File {
objectURL: string
}
interface SelectEvent {
export interface SelectEvent {
files: SelectFile[]
originalEvent: Event
}
interface DownloadTaskOptions {
export interface DownloadTaskOptions {
taskId: string
type: string
fullname: string
@@ -57,7 +57,7 @@ interface DownloadTaskOptions {
error?: string
}
interface DownloadTask
export interface DownloadTask
extends Omit<
DownloadTaskOptions,
'downloadedSize' | 'totalSize' | 'bps' | 'error'
@@ -69,4 +69,4 @@ interface DownloadTask
deleteTask: () => void
}
type CustomEventListener = (event: CustomEvent) => void
export type CustomEventListener = (event: CustomEvent) => void

View File

@@ -1,4 +1,3 @@
// @ts-nocheck
import { app } from 'scripts/comfyAPI'
const LiteGraph = window.LiteGraph

View File

@@ -1,3 +1,5 @@
import { BaseModel } from 'types/typings'
const loader = {
checkpoints: 'CheckpointLoaderSimple',
loras: 'LoraLoader',

View File

@@ -20,21 +20,13 @@
"noFallthroughCasesInSwitch": true,
"downlevelIteration": true,
/* AllowJs during migration phase */
"allowJs": true,
"baseUrl": ".",
"outDir": "./web",
"rootDir": "./",
"paths": {
"components/*": ["src/components/*"],
"hooks/*": ["src/hooks/*"],
"scripts/*": ["src/scripts/*"],
"types/*": ["src/types/*"],
"utils/*": ["src/utils/*"],
"components/*": ["./src/components/*"],
"hooks/*": ["./src/hooks/*"],
"scripts/*": ["./src/scripts/*"],
"types/*": ["./src/types/*"],
"utils/*": ["./src/utils/*"]
}
},
"include": [
"src/**/*",
"src/**/*.vue",
]
}
"include": ["./src/**/*"]
}