diff --git a/packages/client/.eslintrc.js b/packages/client/.eslintrc.js
index 1c2ab0a427..10f0e5a9cb 100644
--- a/packages/client/.eslintrc.js
+++ b/packages/client/.eslintrc.js
@@ -15,6 +15,12 @@ module.exports = {
'plugin:vue/vue3-recommended',
],
rules: {
+ '@typescript-eslint/no-empty-interface': [
+ 'error',
+ {
+ 'allowSingleExtends': true,
+ },
+ ],
// window の禁止理由: グローバルスコープと衝突し、予期せぬ結果を招くため
// data の禁止理由: 抽象的すぎるため
// e の禁止理由: error や event など、複数のキーワードの頭文字であり分かりにくいため
diff --git a/packages/client/src/components/captcha.vue b/packages/client/src/components/captcha.vue
index ccd8880df8..183658471b 100644
--- a/packages/client/src/components/captcha.vue
+++ b/packages/client/src/components/captcha.vue
@@ -27,8 +27,7 @@ type CaptchaContainer = {
};
declare global {
- interface Window extends CaptchaContainer {
- }
+ interface Window extends CaptchaContainer { }
}
const props = defineProps<{
diff --git a/packages/client/src/components/drive.folder.vue b/packages/client/src/components/drive.folder.vue
index d530f8beff..3ccb5d6219 100644
--- a/packages/client/src/components/drive.folder.vue
+++ b/packages/client/src/components/drive.folder.vue
@@ -71,7 +71,7 @@ function onMouseover() {
}
function onMouseout() {
- hover.value = false
+ hover.value = false;
}
function onDragover(ev: DragEvent) {
@@ -204,7 +204,7 @@ function deleteFolder() {
defaultStore.set('uploadFolder', null);
}
}).catch(err => {
- switch(err.id) {
+ switch (err.id) {
case 'b0fc8a17-963c-405d-bfbc-859a487295e1':
os.alert({
type: 'error',
diff --git a/packages/client/src/components/drive.vue b/packages/client/src/components/drive.vue
index 42ec3a5995..6c2c8acad0 100644
--- a/packages/client/src/components/drive.vue
+++ b/packages/client/src/components/drive.vue
@@ -143,7 +143,7 @@ const fetching = ref(true);
const ilFilesObserver = new IntersectionObserver(
(entries) => entries.some((entry) => entry.isIntersecting) && !fetching.value && moreFiles.value && fetchMoreFiles()
-)
+);
watch(folder, () => emit('cd', folder.value));
@@ -332,7 +332,7 @@ function deleteFolder(folderToDelete: Misskey.entities.DriveFolder) {
// 削除時に親フォルダに移動
move(folderToDelete.parentId);
}).catch(err => {
- switch(err.id) {
+ switch (err.id) {
case 'b0fc8a17-963c-405d-bfbc-859a487295e1':
os.alert({
type: 'error',
@@ -607,7 +607,7 @@ function onContextmenu(ev: MouseEvent) {
onMounted(() => {
if (defaultStore.state.enableInfiniteScroll && loadMoreFiles.value) {
nextTick(() => {
- ilFilesObserver.observe(loadMoreFiles.value?.$el)
+ ilFilesObserver.observe(loadMoreFiles.value?.$el);
});
}
@@ -628,7 +628,7 @@ onMounted(() => {
onActivated(() => {
if (defaultStore.state.enableInfiniteScroll) {
nextTick(() => {
- ilFilesObserver.observe(loadMoreFiles.value?.$el)
+ ilFilesObserver.observe(loadMoreFiles.value?.$el);
});
}
});
diff --git a/packages/client/src/components/form/folder.vue b/packages/client/src/components/form/folder.vue
index 571afe50c0..1b960657d7 100644
--- a/packages/client/src/components/form/folder.vue
+++ b/packages/client/src/components/form/folder.vue
@@ -24,7 +24,7 @@ const props = withDefaults(defineProps<{
defaultOpen: boolean;
}>(), {
defaultOpen: false,
-})
+});
let opened = $ref(props.defaultOpen);
let openedAtLeastOnce = $ref(props.defaultOpen);
diff --git a/packages/client/src/components/form/radios.vue b/packages/client/src/components/form/radios.vue
index ff5d51f9c7..a52acae9e1 100644
--- a/packages/client/src/components/form/radios.vue
+++ b/packages/client/src/components/form/radios.vue
@@ -14,7 +14,7 @@ export default defineComponent({
data() {
return {
value: this.modelValue,
- }
+ };
},
watch: {
value() {
diff --git a/packages/client/src/components/page/page.post.vue b/packages/client/src/components/page/page.post.vue
index 8ac8c46692..3401f945bd 100644
--- a/packages/client/src/components/page/page.post.vue
+++ b/packages/client/src/components/page/page.post.vue
@@ -66,7 +66,7 @@ export default defineComponent({
.then(response => response.json())
.then(f => {
ok(f);
- })
+ });
});
});
os.promiseDialog(promise);
diff --git a/packages/client/src/components/post-form-attaches.vue b/packages/client/src/components/post-form-attaches.vue
index 3807769118..6b9827407b 100644
--- a/packages/client/src/components/post-form-attaches.vue
+++ b/packages/client/src/components/post-form-attaches.vue
@@ -16,7 +16,7 @@
diff --git a/packages/client/src/components/sample.vue b/packages/client/src/components/sample.vue
index 65249ff7e9..f80b9c96b7 100644
--- a/packages/client/src/components/sample.vue
+++ b/packages/client/src/components/sample.vue
@@ -52,7 +52,7 @@ export default defineComponent({
flag: true,
radio: 'misskey',
mfm: `Hello world! This is an @example mention. BTW you are @${this.$i ? this.$i.username : 'guest'}.\nAlso, here is ${config.url} and [example link](${config.url}). for more details, see https://example.com.\nAs you know #misskey is open-source software.`
- }
+ };
},
methods: {
diff --git a/packages/client/src/components/signin.vue b/packages/client/src/components/signin.vue
index be87274020..b772d1479b 100644
--- a/packages/client/src/components/signin.vue
+++ b/packages/client/src/components/signin.vue
@@ -159,7 +159,7 @@ function queryKey() {
function onSubmit() {
signing = true;
- console.log('submit')
+ console.log('submit');
if (!totpLogin && user && user.twoFactorEnabled) {
if (window.PublicKeyCredential && user.securityKeys) {
os.api('signin', {
@@ -222,7 +222,7 @@ function loginFailed(err) {
break;
}
default: {
- console.log(err)
+ console.log(err);
os.alert({
type: 'error',
title: i18n.ts.loginFailed,
diff --git a/packages/client/src/components/signup.vue b/packages/client/src/components/signup.vue
index ec5be60a2a..3f2af306e5 100644
--- a/packages/client/src/components/signup.vue
+++ b/packages/client/src/components/signup.vue
@@ -111,7 +111,7 @@ export default defineComponent({
ToSAgreement: false,
hCaptchaResponse: null,
reCaptchaResponse: null,
- }
+ };
},
computed: {
diff --git a/packages/client/src/components/ui/button.vue b/packages/client/src/components/ui/button.vue
index fe8f1c7cca..e6b20d9881 100644
--- a/packages/client/src/components/ui/button.vue
+++ b/packages/client/src/components/ui/button.vue
@@ -96,11 +96,11 @@ export default defineComponent({
}
function calcCircleScale(boxW, boxH, circleCenterX, circleCenterY) {
- const origin = {x: circleCenterX, y: circleCenterY};
- const dist1 = distance({x: 0, y: 0}, origin);
- const dist2 = distance({x: boxW, y: 0}, origin);
- const dist3 = distance({x: 0, y: boxH}, origin);
- const dist4 = distance({x: boxW, y: boxH }, origin);
+ const origin = { x: circleCenterX, y: circleCenterY };
+ const dist1 = distance({ x: 0, y: 0 }, origin);
+ const dist2 = distance({ x: boxW, y: 0 }, origin);
+ const dist3 = distance({ x: 0, y: boxH }, origin);
+ const dist4 = distance({ x: boxW, y: boxH }, origin);
return Math.max(dist1, dist2, dist3, dist4) * 2;
}
diff --git a/packages/client/src/components/ui/modal.vue b/packages/client/src/components/ui/modal.vue
index 1e4159055e..010262da2f 100644
--- a/packages/client/src/components/ui/modal.vue
+++ b/packages/client/src/components/ui/modal.vue
@@ -234,7 +234,7 @@ onMounted(() => {
}
fixed.value = (type.value === 'drawer') || (getFixedContainer(props.src) != null);
- await nextTick()
+ await nextTick();
align();
}, { immediate: true, });
diff --git a/packages/client/src/components/ui/tooltip.vue b/packages/client/src/components/ui/tooltip.vue
index ee1909554e..571d11ba3b 100644
--- a/packages/client/src/components/ui/tooltip.vue
+++ b/packages/client/src/components/ui/tooltip.vue
@@ -63,7 +63,7 @@ const setPosition = () => {
}
return [left, top];
- }
+ };
const calcPosWhenBottom = () => {
let left: number;
@@ -84,7 +84,7 @@ const setPosition = () => {
}
return [left, top];
- }
+ };
const calcPosWhenLeft = () => {
let left: number;
@@ -105,7 +105,7 @@ const setPosition = () => {
}
return [left, top];
- }
+ };
const calcPosWhenRight = () => {
let left: number;
@@ -126,7 +126,7 @@ const setPosition = () => {
}
return [left, top];
- }
+ };
const calc = (): {
left: number;
@@ -172,7 +172,7 @@ const setPosition = () => {
}
return null as never;
- }
+ };
const { left, top, transformOrigin } = calc();
el.value.style.transformOrigin = transformOrigin;
diff --git a/packages/client/src/components/url-preview.vue b/packages/client/src/components/url-preview.vue
index c7bbd1fbd1..6c593c7b41 100644
--- a/packages/client/src/components/url-preview.vue
+++ b/packages/client/src/components/url-preview.vue
@@ -90,7 +90,7 @@ fetch(`/url?url=${encodeURIComponent(requestUrl.href)}&lang=${requestLang}`).the
sitename = info.sitename;
fetching = false;
player = info.player;
- })
+ });
});
function adjustTweetHeight(message: any) {
diff --git a/packages/client/src/directives/adaptive-border.ts b/packages/client/src/directives/adaptive-border.ts
index fc426ca2cc..619c9f0b6d 100644
--- a/packages/client/src/directives/adaptive-border.ts
+++ b/packages/client/src/directives/adaptive-border.ts
@@ -9,7 +9,7 @@ export default {
} else {
return el.parentElement ? getBgColor(el.parentElement) : 'transparent';
}
- }
+ };
const parentBg = getBgColor(src.parentElement);
diff --git a/packages/client/src/directives/get-size.ts b/packages/client/src/directives/get-size.ts
index 1fcd0718dc..2c4e9c188d 100644
--- a/packages/client/src/directives/get-size.ts
+++ b/packages/client/src/directives/get-size.ts
@@ -25,12 +25,12 @@ function calc(src: Element) {
return;
}
if (info.intersection) {
- info.intersection.disconnect()
+ info.intersection.disconnect();
delete info.intersection;
- };
+ }
info.fn(width, height);
-};
+}
export default {
mounted(src, binding, vn) {
diff --git a/packages/client/src/directives/panel.ts b/packages/client/src/directives/panel.ts
index 5f9158db2e..d31dc41ed4 100644
--- a/packages/client/src/directives/panel.ts
+++ b/packages/client/src/directives/panel.ts
@@ -9,7 +9,7 @@ export default {
} else {
return el.parentElement ? getBgColor(el.parentElement) : 'transparent';
}
- }
+ };
const parentBg = getBgColor(src.parentElement);
diff --git a/packages/client/src/directives/size.ts b/packages/client/src/directives/size.ts
index 36f649f180..51855e0de5 100644
--- a/packages/client/src/directives/size.ts
+++ b/packages/client/src/directives/size.ts
@@ -60,9 +60,9 @@ function calc(el: Element) {
return;
}
if (info.intersection) {
- info.intersection.disconnect()
+ info.intersection.disconnect();
delete info.intersection;
- };
+ }
mountings.set(el, Object.assign(info, { previousWidth: width }));
diff --git a/packages/client/src/os.ts b/packages/client/src/os.ts
index 6baf538917..4f19fadf19 100644
--- a/packages/client/src/os.ts
+++ b/packages/client/src/os.ts
@@ -285,7 +285,7 @@ export function inputDate(props: {
});
}
-export function select(props: {
+export function select(props: {
title?: string | null;
text?: string | null;
default?: string | null;
diff --git a/packages/client/src/pages/admin/emojis.vue b/packages/client/src/pages/admin/emojis.vue
index 38bcc41ea0..8ca5b3d65c 100644
--- a/packages/client/src/pages/admin/emojis.vue
+++ b/packages/client/src/pages/admin/emojis.vue
@@ -159,7 +159,7 @@ const remoteMenu = (emoji, ev: MouseEvent) => {
}, {
text: i18n.ts.import,
icon: 'fas fa-plus',
- action: () => { im(emoji) }
+ action: () => { im(emoji); }
}], ev.currentTarget ?? ev.target);
};
diff --git a/packages/client/src/pages/admin/metrics.vue b/packages/client/src/pages/admin/metrics.vue
index 1de297fd93..7e5f5bb094 100644
--- a/packages/client/src/pages/admin/metrics.vue
+++ b/packages/client/src/pages/admin/metrics.vue
@@ -132,7 +132,7 @@ export default defineComponent({
overviewHeight: '1fr',
queueHeight: '1fr',
paused: false,
- }
+ };
},
computed: {
diff --git a/packages/client/src/pages/admin/queue.vue b/packages/client/src/pages/admin/queue.vue
index e05098082a..656b18199f 100644
--- a/packages/client/src/pages/admin/queue.vue
+++ b/packages/client/src/pages/admin/queue.vue
@@ -20,7 +20,7 @@ import * as symbols from '@/symbols';
import * as config from '@/config';
import { i18n } from '@/i18n';
-const connection = markRaw(stream.useChannel('queueStats'))
+const connection = markRaw(stream.useChannel('queueStats'));
function clear() {
os.confirm({
@@ -41,7 +41,7 @@ onMounted(() => {
length: 200
});
});
-})
+});
onBeforeUnmount(() => {
connection.dispose();
diff --git a/packages/client/src/pages/auth.form.vue b/packages/client/src/pages/auth.form.vue
index bc719aebd3..5feff0149a 100644
--- a/packages/client/src/pages/auth.form.vue
+++ b/packages/client/src/pages/auth.form.vue
@@ -32,7 +32,7 @@ export default defineComponent({
computed: {
name(): string {
const el = document.createElement('div');
- el.textContent = this.app.name
+ el.textContent = this.app.name;
return el.innerHTML;
},
app(): any {
diff --git a/packages/client/src/pages/emojis.category.vue b/packages/client/src/pages/emojis.category.vue
index 1be004cf51..c47870f4d4 100644
--- a/packages/client/src/pages/emojis.category.vue
+++ b/packages/client/src/pages/emojis.category.vue
@@ -58,7 +58,7 @@ export default defineComponent({
tags: emojiTags,
selectedTags: new Set(),
searchEmojis: null,
- }
+ };
},
watch: {
diff --git a/packages/client/src/pages/federation.vue b/packages/client/src/pages/federation.vue
index 5add2b5324..447918905b 100644
--- a/packages/client/src/pages/federation.vue
+++ b/packages/client/src/pages/federation.vue
@@ -127,7 +127,7 @@ function getStatus(instance) {
if (instance.isSuspended) return 'suspended';
if (instance.isNotResponding) return 'error';
return 'alive';
-};
+}
defineExpose({
[symbols.PAGE_INFO]: {
diff --git a/packages/client/src/pages/gallery/edit.vue b/packages/client/src/pages/gallery/edit.vue
index a0c2d1a596..bc87160c44 100644
--- a/packages/client/src/pages/gallery/edit.vue
+++ b/packages/client/src/pages/gallery/edit.vue
@@ -71,7 +71,7 @@ export default defineComponent({
description: null,
title: null,
isSensitive: false,
- }
+ };
},
watch: {
diff --git a/packages/client/src/pages/messaging/index.vue b/packages/client/src/pages/messaging/index.vue
index 61c8bb0ce3..7c1d3e3cbe 100644
--- a/packages/client/src/pages/messaging/index.vue
+++ b/packages/client/src/pages/messaging/index.vue
@@ -123,11 +123,11 @@ export default defineComponent({
os.popupMenu([{
text: this.$ts.messagingWithUser,
icon: 'fas fa-user',
- action: () => { this.startUser() }
+ action: () => { this.startUser(); }
}, {
text: this.$ts.messagingWithGroup,
icon: 'fas fa-users',
- action: () => { this.startGroup() }
+ action: () => { this.startGroup(); }
}], ev.currentTarget ?? ev.target);
},
diff --git a/packages/client/src/pages/messaging/messaging-room.form.vue b/packages/client/src/pages/messaging/messaging-room.form.vue
index ad8aaae6b7..8e779c4f39 100644
--- a/packages/client/src/pages/messaging/messaging-room.form.vue
+++ b/packages/client/src/pages/messaging/messaging-room.form.vue
@@ -200,7 +200,7 @@ export default defineComponent({
text: this.text,
file: this.file
}
- }
+ };
localStorage.setItem('message_drafts', JSON.stringify(drafts));
},
diff --git a/packages/client/src/pages/mfm-cheat-sheet.vue b/packages/client/src/pages/mfm-cheat-sheet.vue
index aa35ec2158..2c10494ede 100644
--- a/packages/client/src/pages/mfm-cheat-sheet.vue
+++ b/packages/client/src/pages/mfm-cheat-sheet.vue
@@ -341,7 +341,7 @@ export default defineComponent({
preview_rainbow: `$[rainbow 🍮] $[rainbow.speed=5s 🍮]`,
preview_sparkle: `$[sparkle 🍮]`,
preview_rotate: `$[rotate 🍮]`,
- }
+ };
},
});
diff --git a/packages/client/src/pages/my-antennas/index.vue b/packages/client/src/pages/my-antennas/index.vue
index 9f1e01f11d..a568f64c52 100644
--- a/packages/client/src/pages/my-antennas/index.vue
+++ b/packages/client/src/pages/my-antennas/index.vue
@@ -32,7 +32,7 @@ defineExpose({
icon: 'fas fa-satellite',
bg: 'var(--bg)'
}
-})
+});