From 41592eafb363e3c62ab2d3e5f41b38d7d083d3fb Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Fri, 9 Jan 2026 22:06:40 +0900 Subject: refactor: make noImplicitAny true (#17083) * wip * Update emojis.emoji.vue * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * Update manager.ts * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * Update analytics.ts --- packages/frontend/src/components/MkAbuseReport.vue | 4 +- .../frontend/src/components/MkAchievements.vue | 7 +- packages/frontend/src/components/MkAsUi.vue | 4 +- packages/frontend/src/components/MkAuthConfirm.vue | 2 +- .../src/components/MkAutocomplete.stories.impl.ts | 7 +- .../frontend/src/components/MkAutocomplete.vue | 6 +- packages/frontend/src/components/MkButton.vue | 6 +- packages/frontend/src/components/MkCaptcha.vue | 4 +- packages/frontend/src/components/MkChannelList.vue | 2 +- packages/frontend/src/components/MkChart.vue | 10 +- packages/frontend/src/components/MkClickerGame.vue | 4 +- packages/frontend/src/components/MkCodeEditor.vue | 22 ++-- .../src/components/MkContextMenu.stories.impl.ts | 6 +- packages/frontend/src/components/MkContextMenu.vue | 8 +- packages/frontend/src/components/MkDrive.file.vue | 2 +- .../frontend/src/components/MkDrive.folder.vue | 4 +- packages/frontend/src/components/MkDrive.vue | 12 +- .../src/components/MkEmojiPicker.section.vue | 8 +- packages/frontend/src/components/MkEmojiPicker.vue | 4 +- .../src/components/MkExtensionInstaller.vue | 2 +- packages/frontend/src/components/MkFolder.vue | 2 +- packages/frontend/src/components/MkForm.file.vue | 2 +- packages/frontend/src/components/MkHeatmap.vue | 5 +- .../src/components/MkImageEffectorDialog.vue | 4 +- packages/frontend/src/components/MkInput.vue | 7 +- .../frontend/src/components/MkInstanceCardMini.vue | 2 +- .../frontend/src/components/MkInstanceStats.vue | 32 +++--- packages/frontend/src/components/MkLaunchPad.vue | 4 +- packages/frontend/src/components/MkMediaImage.vue | 4 +- packages/frontend/src/components/MkMediaVideo.vue | 2 +- packages/frontend/src/components/MkMenu.vue | 6 +- packages/frontend/src/components/MkModal.vue | 4 +- packages/frontend/src/components/MkNote.vue | 2 +- .../frontend/src/components/MkNoteDetailed.vue | 12 +- .../frontend/src/components/MkNotification.vue | 2 +- .../frontend/src/components/MkObjectView.value.vue | 2 +- packages/frontend/src/components/MkPagination.vue | 2 +- packages/frontend/src/components/MkPollEditor.vue | 4 +- packages/frontend/src/components/MkPostForm.vue | 121 +++++++++++++-------- .../frontend/src/components/MkPostFormAttaches.vue | 6 +- .../src/components/MkPreferenceContainer.vue | 2 +- packages/frontend/src/components/MkPreview.vue | 2 +- .../src/components/MkReactionsViewer.reaction.vue | 2 +- .../frontend/src/components/MkReactionsViewer.vue | 6 +- .../frontend/src/components/MkRetentionHeatmap.vue | 4 +- .../frontend/src/components/MkRoleSelectDialog.vue | 6 +- .../src/components/MkServerSetupWizardDialog.vue | 2 +- .../frontend/src/components/MkSignin.input.vue | 2 +- .../frontend/src/components/MkSortOrderEditor.vue | 6 +- packages/frontend/src/components/MkSpot.vue | 4 +- .../src/components/MkStreamingNotesTimeline.vue | 7 +- .../MkStreamingNotificationsTimeline.vue | 4 +- packages/frontend/src/components/MkSuperMenu.vue | 2 +- .../src/components/MkSystemWebhookEditor.vue | 2 +- packages/frontend/src/components/MkTabs.vue | 6 +- packages/frontend/src/components/MkTagItem.vue | 4 +- packages/frontend/src/components/MkTextarea.vue | 20 ++-- .../src/components/MkTokenGenerateWindow.vue | 16 +-- packages/frontend/src/components/MkTooltip.vue | 4 +- .../src/components/MkTutorialDialog.Note.vue | 4 +- .../frontend/src/components/MkUploaderDialog.vue | 6 +- .../frontend/src/components/MkUploaderItems.vue | 8 +- packages/frontend/src/components/MkUserList.vue | 2 +- packages/frontend/src/components/MkUserPopup.vue | 2 +- .../src/components/MkUserSetupDialog.Profile.vue | 2 +- .../MkVisitorDashboard.ActiveUsersChart.vue | 2 +- .../frontend/src/components/MkVisitorDashboard.vue | 2 +- .../frontend/src/components/MkWaitingDialog.vue | 4 +- .../components/MkWatermarkEditorDialog.Layer.vue | 2 +- .../src/components/MkWatermarkEditorDialog.vue | 2 +- .../src/components/MkWidgetSettingsDialog.vue | 2 +- packages/frontend/src/components/MkWidgets.vue | 36 +++--- packages/frontend/src/components/MkWindow.vue | 24 ++-- packages/frontend/src/components/global/I18n.vue | 2 +- packages/frontend/src/components/global/MkA.vue | 4 +- .../frontend/src/components/global/MkAvatar.vue | 4 +- .../src/components/global/MkCondensedLine.vue | 12 +- .../src/components/global/MkCustomEmoji.vue | 2 +- .../frontend/src/components/global/MkEmoji.vue | 2 +- packages/frontend/src/components/global/MkMfm.ts | 2 +- .../src/components/global/MkPageHeader.tabs.vue | 8 +- .../src/components/global/MkPageHeader.vue | 5 +- packages/frontend/src/components/global/MkTip.vue | 2 +- .../frontend/src/components/grid/MkDataCell.vue | 2 +- packages/frontend/src/components/grid/MkGrid.vue | 2 +- 85 files changed, 311 insertions(+), 284 deletions(-) (limited to 'packages/frontend/src/components') diff --git a/packages/frontend/src/components/MkAbuseReport.vue b/packages/frontend/src/components/MkAbuseReport.vue index c7252e7c98..cbc5b27fca 100644 --- a/packages/frontend/src/components/MkAbuseReport.vue +++ b/packages/frontend/src/components/MkAbuseReport.vue @@ -115,7 +115,7 @@ watch(moderationNote, async () => { }); }); -function resolve(resolvedAs) { +function resolve(resolvedAs: 'accept' | 'reject' | null) { os.apiWithDialog('admin/resolve-abuse-user-report', { reportId: props.report.id, resolvedAs, @@ -132,7 +132,7 @@ function forward() { }); } -function showMenu(ev: MouseEvent) { +function showMenu(ev: PointerEvent) { os.popupMenu([{ icon: 'ti ti-hash', text: 'Copy ID', diff --git a/packages/frontend/src/components/MkAchievements.vue b/packages/frontend/src/components/MkAchievements.vue index c786e9fe9f..d0e138c229 100644 --- a/packages/frontend/src/components/MkAchievements.vue +++ b/packages/frontend/src/components/MkAchievements.vue @@ -23,13 +23,13 @@ SPDX-License-Identifier: AGPL-3.0-only
- {{ i18n.ts._achievements._types['_' + achievement.name].title }} + {{ (i18n.ts._achievements._types as any)['_' + achievement.name].title }}
-
{{ withDescription ? i18n.ts._achievements._types['_' + achievement.name].description : '???' }}
-
{{ i18n.ts._achievements._types['_' + achievement.name].flavor }}
+
{{ withDescription ? (i18n.ts._achievements._types as any)['_' + achievement.name].description : '???' }}
+
{{ (i18n.ts._achievements._types as any)['_' + achievement.name].flavor }}
- + @@ -47,6 +47,7 @@ export type DefaultStoredWidget = { diff --git a/packages/frontend/src/components/global/MkA.vue b/packages/frontend/src/components/global/MkA.vue index 99693a4c00..7d2908d4be 100644 --- a/packages/frontend/src/components/global/MkA.vue +++ b/packages/frontend/src/components/global/MkA.vue @@ -48,7 +48,7 @@ const active = computed(() => { return resolved.route.name === router.currentRoute.value.name; }); -function onContextmenu(ev) { +function onContextmenu(ev: PointerEvent) { const selection = window.getSelection(); if (selection && selection.toString() !== '') return; os.contextMenu([{ @@ -85,7 +85,7 @@ function openWindow() { os.pageWindow(props.to); } -function nav(ev: MouseEvent) { +function nav(ev: PointerEvent) { // 制御キーとの組み合わせは無視(shiftを除く) if (ev.metaKey || ev.altKey || ev.ctrlKey) return; diff --git a/packages/frontend/src/components/global/MkAvatar.vue b/packages/frontend/src/components/global/MkAvatar.vue index e7208ed574..fd1d0c2b63 100644 --- a/packages/frontend/src/components/global/MkAvatar.vue +++ b/packages/frontend/src/components/global/MkAvatar.vue @@ -77,7 +77,7 @@ const props = withDefaults(defineProps<{ }); const emit = defineEmits<{ - (ev: 'click', v: MouseEvent): void; + (ev: 'click', v: PointerEvent): void; }>(); const showDecoration = props.forceShowDecoration || prefer.s.showAvatarDecorations; @@ -91,7 +91,7 @@ const url = computed(() => { return props.user.avatarUrl; }); -function onClick(ev: MouseEvent): void { +function onClick(ev: PointerEvent): void { if (props.link) return; emit('click', ev); } diff --git a/packages/frontend/src/components/global/MkCondensedLine.vue b/packages/frontend/src/components/global/MkCondensedLine.vue index 473d444c16..e1fbec4b6f 100644 --- a/packages/frontend/src/components/global/MkCondensedLine.vue +++ b/packages/frontend/src/components/global/MkCondensedLine.vue @@ -23,8 +23,8 @@ const observer = new ResizeObserver((entries) => { transform: string; }[] = []; for (const entry of entries) { - const content = (entry.target[contentSymbol] ? entry.target : entry.target.firstElementChild) as HTMLSpanElement; - const props: Required = content[contentSymbol]; + const content = ((entry.target as any)[contentSymbol] ? entry.target : entry.target.firstElementChild) as HTMLSpanElement; + const props: Required = (content as any)[contentSymbol]; const container = content.parentElement as HTMLSpanElement; const contentWidth = content.getBoundingClientRect().width; const containerWidth = container.getBoundingClientRect().width; @@ -46,15 +46,15 @@ const props = withDefaults(defineProps(), { const content = ref(); watch(content, (value, oldValue) => { - if (oldValue) { - delete oldValue[contentSymbol]; + if (oldValue != null) { + delete (oldValue as any)[contentSymbol]; observer.unobserve(oldValue); if (oldValue.parentElement) { observer.unobserve(oldValue.parentElement); } } - if (value) { - value[contentSymbol] = props; + if (value != null) { + (value as any)[contentSymbol] = props; observer.observe(value); if (value.parentElement) { observer.observe(value.parentElement); diff --git a/packages/frontend/src/components/global/MkCustomEmoji.vue b/packages/frontend/src/components/global/MkCustomEmoji.vue index 31c358eee7..9a171876a0 100644 --- a/packages/frontend/src/components/global/MkCustomEmoji.vue +++ b/packages/frontend/src/components/global/MkCustomEmoji.vue @@ -102,7 +102,7 @@ const url = computed(() => { const alt = computed(() => `:${customEmojiName.value}:`); const errored = ref(url.value == null); -function onClick(ev: MouseEvent) { +function onClick(ev: PointerEvent) { if (props.menu) { const menuItems: MenuItem[] = []; diff --git a/packages/frontend/src/components/global/MkEmoji.vue b/packages/frontend/src/components/global/MkEmoji.vue index 792f9c7d6f..686720cec2 100644 --- a/packages/frontend/src/components/global/MkEmoji.vue +++ b/packages/frontend/src/components/global/MkEmoji.vue @@ -67,7 +67,7 @@ function unmute() { }); } -function onClick(ev: MouseEvent) { +function onClick(ev: PointerEvent) { if (props.menu) { const menuItems: MenuItem[] = []; diff --git a/packages/frontend/src/components/global/MkMfm.ts b/packages/frontend/src/components/global/MkMfm.ts index 3ad2fda0ee..d270571d4a 100644 --- a/packages/frontend/src/components/global/MkMfm.ts +++ b/packages/frontend/src/components/global/MkMfm.ts @@ -319,7 +319,7 @@ export default function (props: MfmProps, { emit }: { emit: SetupContext export type Tab = { key: string; - onClick?: (ev: MouseEvent) => void; + onClick?: (ev: PointerEvent) => void; iconOnly?: boolean; title: string; icon?: string; @@ -70,8 +70,8 @@ const props = withDefaults(defineProps<{ }); const emit = defineEmits<{ - (ev: 'update:tab', key: string); - (ev: 'tabClick', key: string); + (ev: 'update:tab', key: string): void; + (ev: 'tabClick', key: string): void; }>(); const el = useTemplateRef('el'); @@ -96,7 +96,7 @@ function onTabMousedown(tab: Tab, ev: MouseEvent): void { } } -function onTabClick(t: Tab, ev: MouseEvent): void { +function onTabClick(t: Tab, ev: PointerEvent): void { emit('tabClick', t.key); if (t.onClick) { diff --git a/packages/frontend/src/components/global/MkPageHeader.vue b/packages/frontend/src/components/global/MkPageHeader.vue index 2445f8e0ef..e8c93b7092 100644 --- a/packages/frontend/src/components/global/MkPageHeader.vue +++ b/packages/frontend/src/components/global/MkPageHeader.vue @@ -61,7 +61,6 @@ export type PageHeaderProps = { import { onMounted, onUnmounted, ref, inject, useTemplateRef, computed } from 'vue'; import { scrollToTop } from '@@/js/scroll.js'; import XTabs from './MkPageHeader.tabs.vue'; -import { globalEvents } from '@/events.js'; import { getAccountMenu } from '@/accounts.js'; import { $i } from '@/i.js'; import { DI } from '@/di.js'; @@ -72,7 +71,7 @@ const props = withDefaults(defineProps(), { }); const emit = defineEmits<{ - (ev: 'update:tab', key: string); + (ev: 'update:tab', key: string): void; }>(); //const viewId = inject(DI.viewId); @@ -100,7 +99,7 @@ const top = () => { } }; -async function openAccountMenu(ev: MouseEvent) { +async function openAccountMenu(ev: PointerEvent) { const menuItems = await getAccountMenu({ withExtraOperation: true, }); diff --git a/packages/frontend/src/components/global/MkTip.vue b/packages/frontend/src/components/global/MkTip.vue index 231957a232..1827c16c89 100644 --- a/packages/frontend/src/components/global/MkTip.vue +++ b/packages/frontend/src/components/global/MkTip.vue @@ -32,7 +32,7 @@ function _closeTip() { closeTip(props.k); } -function showMenu(ev: MouseEvent) { +function showMenu(ev: PointerEvent) { os.popupMenu([{ icon: 'ti ti-bulb-off', text: i18n.ts.hideAllTips, diff --git a/packages/frontend/src/components/grid/MkDataCell.vue b/packages/frontend/src/components/grid/MkDataCell.vue index 6f1dae8398..8745146ccf 100644 --- a/packages/frontend/src/components/grid/MkDataCell.vue +++ b/packages/frontend/src/components/grid/MkDataCell.vue @@ -188,7 +188,7 @@ function onCellKeyDown(ev: KeyboardEvent) { } } -function onInputText(ev: Event) { +function onInputText(ev: InputEvent) { editingValue.value = (ev.target as HTMLInputElement).value; } diff --git a/packages/frontend/src/components/grid/MkGrid.vue b/packages/frontend/src/components/grid/MkGrid.vue index 96d9e35773..097a91bad5 100644 --- a/packages/frontend/src/components/grid/MkGrid.vue +++ b/packages/frontend/src/components/grid/MkGrid.vue @@ -715,7 +715,7 @@ function onMouseUp(ev: MouseEvent) { } } -function onContextMenu(ev: MouseEvent) { +function onContextMenu(ev: PointerEvent) { const cellAddress = getCellAddress(ev.target as HTMLElement); if (_DEV_) { console.log(`[grid][context-menu] button: ${ev.button}, cell: ${cellAddress.row}x${cellAddress.col}`); -- cgit v1.2.3-freya