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 @@