diff --git a/.gitignore b/.gitignore index c5ff3fb98..3c55ec0d7 100644 --- a/.gitignore +++ b/.gitignore @@ -32,6 +32,9 @@ coverage # docker dev config /dev/docker-compose.yml +# ESLint +.eslintcache + # misskey built db diff --git a/packages/client/.eslintrc.json b/packages/client/.eslintrc.json index fd4718003..6c11c2429 100644 --- a/packages/client/.eslintrc.json +++ b/packages/client/.eslintrc.json @@ -1,6 +1,7 @@ { "extends": ["@eslint-sets/vue3", "@eslint-sets/vue3-ts"], "plugins": ["file-progress", "prettier"], + "ignorePatterns": ["**/*.json5"], "rules": { "file-progress/activate": 1 } diff --git a/packages/client/package.json b/packages/client/package.json index 9efe66f4b..ef28a5db6 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -5,8 +5,8 @@ "watch": "pnpm vite build --watch --mode development", "build": "pnpm vite build", "build:debug": "pnpm run build", - "lint": "pnpm rome check **/*.ts --apply && pnpm run lint:vue", - "lint:vue": "pnpm paralint --ext .vue --fix '**/*.vue' --cache", + "lint": "pnpm rome check **/*.ts --apply ; pnpm run lint:vue", + "lint:vue": "pnpm eslint src --fix '**/*.vue' --cache ; pnpm run format", "format": "pnpm rome format * --write && pnpm prettier --write '**/*.{scss,vue}' --cache --cache-strategy metadata" }, "devDependencies": { @@ -16,7 +16,7 @@ "@phosphor-icons/web": "^2.0.3", "@rollup/plugin-alias": "5.0.0", "@rollup/plugin-json": "6.0.0", - "@rollup/pluginutils": "^5.0.3", + "@rollup/pluginutils": "^5.0.4", "@syuilo/aiscript": "0.11.1", "@types/escape-regexp": "0.0.1", "@types/glob": "8.1.0", @@ -28,15 +28,15 @@ "@types/seedrandom": "3.0.5", "@types/throttle-debounce": "5.0.0", "@types/tinycolor2": "1.4.3", - "@types/uuid": "9.0.2", - "@vitejs/plugin-vue": "4.3.1", + "@types/uuid": "9.0.3", + "@vitejs/plugin-vue": "4.3.4", "@vue/compiler-sfc": "3.3.4", "autobind-decorator": "2.4.0", "autosize": "6.0.1", "blurhash": "2.0.5", - "broadcast-channel": "5.2.0", + "broadcast-channel": "5.3.0", "browser-image-resizer": "github:misskey-dev/browser-image-resizer", - "chart.js": "4.3.3", + "chart.js": "4.4.0", "chartjs-adapter-date-fns": "3.0.0", "chartjs-chart-matrix": "^2.0.1", "chartjs-plugin-gradient": "0.6.1", @@ -63,36 +63,35 @@ "katex": "0.16.8", "matter-js": "0.19.0", "mfm-js": "0.23.3", - "paralint": "^1.2.1", "photoswipe": "5.3.8", - "prettier": "3.0.2", + "prettier": "3.0.3", "prettier-plugin-vue": "1.1.6", "prismjs": "1.29.0", "punycode": "2.3.0", "rndstr": "1.0.0", - "rollup": "3.28.0", + "rollup": "3.28.1", "s-age": "1.1.2", - "sass": "1.66.0", + "sass": "1.66.1", "seedrandom": "3.0.5", "strict-event-emitter-types": "2.0.0", "stringz": "2.1.0", "swiper": "10.2.0", "syuilo-password-strength": "0.0.1", "textarea-caret": "3.1.0", - "three": "0.155.0", + "three": "0.156.0", "throttle-debounce": "5.0.0", "tinycolor2": "1.6.0", "tsc-alias": "1.8.7", "tsconfig-paths": "4.2.0", "twemoji-parser": "14.0.0", - "typescript": "5.1.6", + "typescript": "5.2.2", "unicode-emoji-json": "^0.4.0", "uuid": "9.0.0", "vanilla-tilt": "1.8.1", "vite": "4.4.9", "vite-plugin-compression": "^0.5.1", "vue": "3.3.4", - "vue-draggable-plus": "^0.2.5", + "vue-draggable-plus": "^0.2.6", "vue-isyourpasswordsafe": "^2.0.0", "vue-plyr": "^7.0.0", "vue-prism-editor": "2.0.0-alpha.2" diff --git a/packages/client/src/account.ts b/packages/client/src/account.ts index b2d6df033..13408b525 100644 --- a/packages/client/src/account.ts +++ b/packages/client/src/account.ts @@ -1,10 +1,10 @@ import { defineAsyncComponent, reactive } from "vue"; -import * as misskey from "firefish-js"; +import type * as misskey from "firefish-js"; import { i18n } from "./i18n"; import { del, get, set } from "@/scripts/idb-proxy"; import { apiUrl } from "@/config"; -import { waiting, api, popup, popupMenu, success, alert } from "@/os"; -import { unisonReload, reloadChannel } from "@/scripts/unison-reload"; +import { alert, api, popup, popupMenu, success, waiting } from "@/os"; +import { reloadChannel, unisonReload } from "@/scripts/unison-reload"; // TODO: 他のタブと永続化されたstateを同期 @@ -28,7 +28,7 @@ export async function signout() { const accounts = await getAccounts(); - //#region Remove service worker registration + // #region Remove service worker registration try { if (navigator.serviceWorker.controller) { const registration = await navigator.serviceWorker.ready; @@ -52,7 +52,7 @@ export async function signout() { }); } } catch (err) {} - //#endregion + // #endregion document.cookie = "igi=; path=/"; diff --git a/packages/client/src/components/MkDialog.vue b/packages/client/src/components/MkDialog.vue index 3cfd332c7..5acef3965 100644 --- a/packages/client/src/components/MkDialog.vue +++ b/packages/client/src/components/MkDialog.vue @@ -199,7 +199,7 @@ diff --git a/packages/client/src/components/MkDrive.vue b/packages/client/src/components/MkDrive.vue index a0b3713a7..28204fe86 100644 --- a/packages/client/src/components/MkDrive.vue +++ b/packages/client/src/components/MkDrive.vue @@ -139,7 +139,7 @@ import { ref, watch, } from "vue"; -import * as Misskey from "firefish-js"; +import type * as Misskey from "firefish-js"; import MkButton from "./MkButton.vue"; import XNavFolder from "@/components/MkDrive.navFolder.vue"; import XFolder from "@/components/MkDrive.folder.vue"; @@ -294,7 +294,7 @@ function onDrop(ev: DragEvent): any { return; } - //#region ドライブのファイル + // #region ドライブのファイル const driveFile = ev.dataTransfer.getData(_DATA_TRANSFER_DRIVE_FILE_); if (driveFile != null && driveFile !== "") { const file = JSON.parse(driveFile); @@ -305,9 +305,9 @@ function onDrop(ev: DragEvent): any { folderId: folder.value ? folder.value.id : null, }); } - //#endregion + // #endregion - //#region ドライブのフォルダ + // #region ドライブのフォルダ const driveFolder = ev.dataTransfer.getData(_DATA_TRANSFER_DRIVE_FOLDER_); if (driveFolder != null && driveFolder !== "") { const droppedFolder = JSON.parse(driveFolder); @@ -339,7 +339,7 @@ function onDrop(ev: DragEvent): any { } }); } - //#endregion + // #endregion } function selectLocalFile() { @@ -354,7 +354,7 @@ function urlUpload() { }).then(({ canceled, result: url }) => { if (canceled || !url) return; os.api("drive/files/upload-from-url", { - url: url, + url, folderId: folder.value ? folder.value.id : undefined, }); @@ -372,7 +372,7 @@ function createFolder() { }).then(({ canceled, result: name }) => { if (canceled) return; os.api("drive/folders/create", { - name: name, + name, parentId: folder.value ? folder.value.id : undefined, }).then((createdFolder) => { addFolder(createdFolder, true); @@ -389,7 +389,7 @@ function renameFolder(folderToRename: Misskey.entities.DriveFolder) { if (canceled) return; os.api("drive/folders/update", { folderId: folderToRename.id, - name: name, + name, }).then((updatedFolder) => { // FIXME: 画面を更新するために自分自身に移動 move(updatedFolder); diff --git a/packages/client/src/components/MkDriveFileThumbnail.vue b/packages/client/src/components/MkDriveFileThumbnail.vue index c5af469e9..7d9b43635 100644 --- a/packages/client/src/components/MkDriveFileThumbnail.vue +++ b/packages/client/src/components/MkDriveFileThumbnail.vue @@ -68,7 +68,7 @@ const is = computed(() => { "application/x-tar", "application/gzip", "application/x-7z-compressed", - ].some((archiveType) => archiveType === props.file.type) + ].includes(props.file.type) ) return "archive"; return "unknown"; diff --git a/packages/client/src/components/MkDriveSelectDialog.vue b/packages/client/src/components/MkDriveSelectDialog.vue index 5b3b33d6c..ae292b96a 100644 --- a/packages/client/src/components/MkDriveSelectDialog.vue +++ b/packages/client/src/components/MkDriveSelectDialog.vue @@ -37,7 +37,7 @@