summaryrefslogtreecommitdiff
path: root/src/server/api
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-08-19 18:33:41 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2021-08-19 18:33:41 +0900
commitb9cb6d1c10729869cbb57ce50c8174ad7474db75 (patch)
tree0d522e7e6e589aaa6b6ddfcf4e12947c6bed0501 /src/server/api
parentUpdate glossary.md (diff)
downloadsharkey-b9cb6d1c10729869cbb57ce50c8174ad7474db75.tar.gz
sharkey-b9cb6d1c10729869cbb57ce50c8174ad7474db75.tar.bz2
sharkey-b9cb6d1c10729869cbb57ce50c8174ad7474db75.zip
refactor: refactoring imports
将来ESMに移行しやすいように Related: #7658 なんかmochaが起動しなくなってるけど理由不明 すぐ直したい
Diffstat (limited to 'src/server/api')
-rw-r--r--src/server/api/2fa.ts2
-rw-r--r--src/server/api/api-handler.ts8
-rw-r--r--src/server/api/authenticate.ts8
-rw-r--r--src/server/api/call.ts12
-rw-r--r--src/server/api/common/generate-block-query.ts4
-rw-r--r--src/server/api/common/generate-channel-query.ts4
-rw-r--r--src/server/api/common/generate-muted-note-query.ts4
-rw-r--r--src/server/api/common/generate-muted-user-query.ts4
-rw-r--r--src/server/api/common/generate-native-user-token.ts2
-rw-r--r--src/server/api/common/generate-replies-query.ts2
-rw-r--r--src/server/api/common/generate-visibility-query.ts4
-rw-r--r--src/server/api/common/getters.ts8
-rw-r--r--src/server/api/common/inject-featured.ts10
-rw-r--r--src/server/api/common/inject-promo.ts6
-rw-r--r--src/server/api/common/read-messaging-message.ts26
-rw-r--r--src/server/api/common/read-notification.ts8
-rw-r--r--src/server/api/common/signin.ts10
-rw-r--r--src/server/api/common/signup.ts18
-rw-r--r--src/server/api/define.ts10
-rw-r--r--src/server/api/endpoints.ts10
-rw-r--r--src/server/api/endpoints/admin/abuse-user-reports.ts8
-rw-r--r--src/server/api/endpoints/admin/accounts/create.ts6
-rw-r--r--src/server/api/endpoints/admin/ad/create.ts6
-rw-r--r--src/server/api/endpoints/admin/ad/delete.ts8
-rw-r--r--src/server/api/endpoints/admin/ad/list.ts8
-rw-r--r--src/server/api/endpoints/admin/ad/update.ts8
-rw-r--r--src/server/api/endpoints/admin/announcements/create.ts6
-rw-r--r--src/server/api/endpoints/admin/announcements/delete.ts8
-rw-r--r--src/server/api/endpoints/admin/announcements/list.ts8
-rw-r--r--src/server/api/endpoints/admin/announcements/update.ts8
-rw-r--r--src/server/api/endpoints/admin/delete-all-files-of-a-user.ts8
-rw-r--r--src/server/api/endpoints/admin/delete-logs.ts4
-rw-r--r--src/server/api/endpoints/admin/drive/clean-remote-files.ts4
-rw-r--r--src/server/api/endpoints/admin/drive/cleanup.ts6
-rw-r--r--src/server/api/endpoints/admin/drive/files.ts8
-rw-r--r--src/server/api/endpoints/admin/drive/show-file.ts8
-rw-r--r--src/server/api/endpoints/admin/emoji/add.ts14
-rw-r--r--src/server/api/endpoints/admin/emoji/copy.ts16
-rw-r--r--src/server/api/endpoints/admin/emoji/list-remote.ts10
-rw-r--r--src/server/api/endpoints/admin/emoji/list.ts10
-rw-r--r--src/server/api/endpoints/admin/emoji/remove.ts10
-rw-r--r--src/server/api/endpoints/admin/emoji/update.ts8
-rw-r--r--src/server/api/endpoints/admin/federation/delete-all-files.ts6
-rw-r--r--src/server/api/endpoints/admin/federation/refresh-remote-instance-metadata.ts8
-rw-r--r--src/server/api/endpoints/admin/federation/remove-all-following.ts6
-rw-r--r--src/server/api/endpoints/admin/federation/update-instance.ts6
-rw-r--r--src/server/api/endpoints/admin/get-index-stats.ts2
-rw-r--r--src/server/api/endpoints/admin/get-table-stats.ts2
-rw-r--r--src/server/api/endpoints/admin/invite.ts6
-rw-r--r--src/server/api/endpoints/admin/logs.ts4
-rw-r--r--src/server/api/endpoints/admin/moderators/add.ts6
-rw-r--r--src/server/api/endpoints/admin/moderators/remove.ts6
-rw-r--r--src/server/api/endpoints/admin/promo/create.ts10
-rw-r--r--src/server/api/endpoints/admin/queue/clear.ts6
-rw-r--r--src/server/api/endpoints/admin/queue/deliver-delayed.ts4
-rw-r--r--src/server/api/endpoints/admin/queue/inbox-delayed.ts4
-rw-r--r--src/server/api/endpoints/admin/queue/jobs.ts4
-rw-r--r--src/server/api/endpoints/admin/queue/stats.ts4
-rw-r--r--src/server/api/endpoints/admin/relays/add.ts6
-rw-r--r--src/server/api/endpoints/admin/relays/list.ts4
-rw-r--r--src/server/api/endpoints/admin/relays/remove.ts4
-rw-r--r--src/server/api/endpoints/admin/reset-password.ts6
-rw-r--r--src/server/api/endpoints/admin/resolve-abuse-user-report.ts6
-rw-r--r--src/server/api/endpoints/admin/resync-chart.ts6
-rw-r--r--src/server/api/endpoints/admin/send-email.ts4
-rw-r--r--src/server/api/endpoints/admin/server-info.ts4
-rw-r--r--src/server/api/endpoints/admin/show-moderation-logs.ts8
-rw-r--r--src/server/api/endpoints/admin/show-user.ts6
-rw-r--r--src/server/api/endpoints/admin/show-users.ts4
-rw-r--r--src/server/api/endpoints/admin/silence-user.ts8
-rw-r--r--src/server/api/endpoints/admin/suspend-user.ts16
-rw-r--r--src/server/api/endpoints/admin/unsilence-user.ts8
-rw-r--r--src/server/api/endpoints/admin/unsuspend-user.ts10
-rw-r--r--src/server/api/endpoints/admin/update-meta.ts10
-rw-r--r--src/server/api/endpoints/admin/vacuum.ts4
-rw-r--r--src/server/api/endpoints/announcements.ts8
-rw-r--r--src/server/api/endpoints/antennas/create.ts12
-rw-r--r--src/server/api/endpoints/antennas/delete.ts10
-rw-r--r--src/server/api/endpoints/antennas/list.ts4
-rw-r--r--src/server/api/endpoints/antennas/notes.ts16
-rw-r--r--src/server/api/endpoints/antennas/show.ts8
-rw-r--r--src/server/api/endpoints/antennas/update.ts10
-rw-r--r--src/server/api/endpoints/ap/get.ts6
-rw-r--r--src/server/api/endpoints/ap/show.ts24
-rw-r--r--src/server/api/endpoints/app/create.ts10
-rw-r--r--src/server/api/endpoints/app/show.ts8
-rw-r--r--src/server/api/endpoints/auth/accept.ts10
-rw-r--r--src/server/api/endpoints/auth/session/generate.ts10
-rw-r--r--src/server/api/endpoints/auth/session/show.ts6
-rw-r--r--src/server/api/endpoints/auth/session/userkey.ts6
-rw-r--r--src/server/api/endpoints/blocking/create.ts12
-rw-r--r--src/server/api/endpoints/blocking/delete.ts12
-rw-r--r--src/server/api/endpoints/blocking/list.ts8
-rw-r--r--src/server/api/endpoints/channels/create.ts12
-rw-r--r--src/server/api/endpoints/channels/featured.ts4
-rw-r--r--src/server/api/endpoints/channels/follow.ts12
-rw-r--r--src/server/api/endpoints/channels/followed.ts8
-rw-r--r--src/server/api/endpoints/channels/owned.ts8
-rw-r--r--src/server/api/endpoints/channels/show.ts8
-rw-r--r--src/server/api/endpoints/channels/timeline.ts12
-rw-r--r--src/server/api/endpoints/channels/unfollow.ts10
-rw-r--r--src/server/api/endpoints/channels/update.ts8
-rw-r--r--src/server/api/endpoints/charts/active-users.ts6
-rw-r--r--src/server/api/endpoints/charts/drive.ts6
-rw-r--r--src/server/api/endpoints/charts/federation.ts6
-rw-r--r--src/server/api/endpoints/charts/hashtag.ts6
-rw-r--r--src/server/api/endpoints/charts/instance.ts6
-rw-r--r--src/server/api/endpoints/charts/network.ts6
-rw-r--r--src/server/api/endpoints/charts/notes.ts6
-rw-r--r--src/server/api/endpoints/charts/user/drive.ts8
-rw-r--r--src/server/api/endpoints/charts/user/following.ts8
-rw-r--r--src/server/api/endpoints/charts/user/notes.ts8
-rw-r--r--src/server/api/endpoints/charts/user/reactions.ts8
-rw-r--r--src/server/api/endpoints/charts/users.ts6
-rw-r--r--src/server/api/endpoints/clips/add-note.ts12
-rw-r--r--src/server/api/endpoints/clips/create.ts6
-rw-r--r--src/server/api/endpoints/clips/delete.ts8
-rw-r--r--src/server/api/endpoints/clips/list.ts4
-rw-r--r--src/server/api/endpoints/clips/notes.ts16
-rw-r--r--src/server/api/endpoints/clips/show.ts8
-rw-r--r--src/server/api/endpoints/clips/update.ts8
-rw-r--r--src/server/api/endpoints/drive.ts6
-rw-r--r--src/server/api/endpoints/drive/files.ts8
-rw-r--r--src/server/api/endpoints/drive/files/attached-notes.ts8
-rw-r--r--src/server/api/endpoints/drive/files/check-existence.ts4
-rw-r--r--src/server/api/endpoints/drive/files/create.ts12
-rw-r--r--src/server/api/endpoints/drive/files/delete.ts12
-rw-r--r--src/server/api/endpoints/drive/files/find-by-hash.ts4
-rw-r--r--src/server/api/endpoints/drive/files/find.ts6
-rw-r--r--src/server/api/endpoints/drive/files/show.ts10
-rw-r--r--src/server/api/endpoints/drive/files/update.ts10
-rw-r--r--src/server/api/endpoints/drive/files/upload-from-url.ts10
-rw-r--r--src/server/api/endpoints/drive/folders.ts8
-rw-r--r--src/server/api/endpoints/drive/folders/create.ts12
-rw-r--r--src/server/api/endpoints/drive/folders/delete.ts10
-rw-r--r--src/server/api/endpoints/drive/folders/find.ts6
-rw-r--r--src/server/api/endpoints/drive/folders/show.ts8
-rw-r--r--src/server/api/endpoints/drive/folders/update.ts10
-rw-r--r--src/server/api/endpoints/drive/stream.ts8
-rw-r--r--src/server/api/endpoints/endpoint.ts4
-rw-r--r--src/server/api/endpoints/endpoints.ts4
-rw-r--r--src/server/api/endpoints/federation/dns.ts6
-rw-r--r--src/server/api/endpoints/federation/followers.ts8
-rw-r--r--src/server/api/endpoints/federation/following.ts8
-rw-r--r--src/server/api/endpoints/federation/instances.ts8
-rw-r--r--src/server/api/endpoints/federation/show-instance.ts6
-rw-r--r--src/server/api/endpoints/federation/update-remote-user.ts8
-rw-r--r--src/server/api/endpoints/federation/users.ts8
-rw-r--r--src/server/api/endpoints/following/create.ts12
-rw-r--r--src/server/api/endpoints/following/delete.ts12
-rw-r--r--src/server/api/endpoints/following/requests/accept.ts10
-rw-r--r--src/server/api/endpoints/following/requests/cancel.ts12
-rw-r--r--src/server/api/endpoints/following/requests/list.ts4
-rw-r--r--src/server/api/endpoints/following/requests/reject.ts10
-rw-r--r--src/server/api/endpoints/gallery/featured.ts4
-rw-r--r--src/server/api/endpoints/gallery/popular.ts4
-rw-r--r--src/server/api/endpoints/gallery/posts.ts8
-rw-r--r--src/server/api/endpoints/gallery/posts/create.ts14
-rw-r--r--src/server/api/endpoints/gallery/posts/delete.ts8
-rw-r--r--src/server/api/endpoints/gallery/posts/like.ts10
-rw-r--r--src/server/api/endpoints/gallery/posts/show.ts8
-rw-r--r--src/server/api/endpoints/gallery/posts/unlike.ts8
-rw-r--r--src/server/api/endpoints/gallery/posts/update.ts12
-rw-r--r--src/server/api/endpoints/games/reversi/games.ts8
-rw-r--r--src/server/api/endpoints/games/reversi/games/show.ts10
-rw-r--r--src/server/api/endpoints/games/reversi/games/surrender.ts10
-rw-r--r--src/server/api/endpoints/games/reversi/invitations.ts4
-rw-r--r--src/server/api/endpoints/games/reversi/match.ts20
-rw-r--r--src/server/api/endpoints/games/reversi/match/cancel.ts4
-rw-r--r--src/server/api/endpoints/get-online-users-count.ts6
-rw-r--r--src/server/api/endpoints/hashtags/list.ts4
-rw-r--r--src/server/api/endpoints/hashtags/search.ts4
-rw-r--r--src/server/api/endpoints/hashtags/show.ts8
-rw-r--r--src/server/api/endpoints/hashtags/trend.ts12
-rw-r--r--src/server/api/endpoints/hashtags/users.ts6
-rw-r--r--src/server/api/endpoints/i.ts4
-rw-r--r--src/server/api/endpoints/i/2fa/done.ts4
-rw-r--r--src/server/api/endpoints/i/2fa/key-done.ts10
-rw-r--r--src/server/api/endpoints/i/2fa/password-less.ts4
-rw-r--r--src/server/api/endpoints/i/2fa/register-key.ts8
-rw-r--r--src/server/api/endpoints/i/2fa/register.ts6
-rw-r--r--src/server/api/endpoints/i/2fa/remove-key.ts6
-rw-r--r--src/server/api/endpoints/i/2fa/unregister.ts4
-rw-r--r--src/server/api/endpoints/i/apps.ts4
-rw-r--r--src/server/api/endpoints/i/authorized-apps.ts4
-rw-r--r--src/server/api/endpoints/i/change-password.ts4
-rw-r--r--src/server/api/endpoints/i/delete-account.ts8
-rw-r--r--src/server/api/endpoints/i/export-blocking.ts6
-rw-r--r--src/server/api/endpoints/i/export-following.ts6
-rw-r--r--src/server/api/endpoints/i/export-mute.ts6
-rw-r--r--src/server/api/endpoints/i/export-notes.ts6
-rw-r--r--src/server/api/endpoints/i/export-user-lists.ts6
-rw-r--r--src/server/api/endpoints/i/favorites.ts8
-rw-r--r--src/server/api/endpoints/i/gallery/likes.ts8
-rw-r--r--src/server/api/endpoints/i/gallery/posts.ts8
-rw-r--r--src/server/api/endpoints/i/get-word-muted-notes-count.ts4
-rw-r--r--src/server/api/endpoints/i/import-following.ts12
-rw-r--r--src/server/api/endpoints/i/import-user-lists.ts12
-rw-r--r--src/server/api/endpoints/i/notifications.ts14
-rw-r--r--src/server/api/endpoints/i/page-likes.ts8
-rw-r--r--src/server/api/endpoints/i/pages.ts8
-rw-r--r--src/server/api/endpoints/i/pin.ts10
-rw-r--r--src/server/api/endpoints/i/read-all-messaging-messages.ts6
-rw-r--r--src/server/api/endpoints/i/read-all-unread-notes.ts6
-rw-r--r--src/server/api/endpoints/i/read-announcement.ts12
-rw-r--r--src/server/api/endpoints/i/regenerate-token.ts8
-rw-r--r--src/server/api/endpoints/i/registry/get-all.ts4
-rw-r--r--src/server/api/endpoints/i/registry/get-detail.ts6
-rw-r--r--src/server/api/endpoints/i/registry/get.ts6
-rw-r--r--src/server/api/endpoints/i/registry/keys-with-type.ts4
-rw-r--r--src/server/api/endpoints/i/registry/keys.ts4
-rw-r--r--src/server/api/endpoints/i/registry/remove.ts6
-rw-r--r--src/server/api/endpoints/i/registry/scopes.ts4
-rw-r--r--src/server/api/endpoints/i/registry/set.ts8
-rw-r--r--src/server/api/endpoints/i/revoke-token.ts8
-rw-r--r--src/server/api/endpoints/i/signin-history.ts8
-rw-r--r--src/server/api/endpoints/i/unpin.ts10
-rw-r--r--src/server/api/endpoints/i/update-email.ts12
-rw-r--r--src/server/api/endpoints/i/update.ts28
-rw-r--r--src/server/api/endpoints/i/user-group-invites.ts8
-rw-r--r--src/server/api/endpoints/messaging/history.ts6
-rw-r--r--src/server/api/endpoints/messaging/messages.ts14
-rw-r--r--src/server/api/endpoints/messaging/messages/create.ts16
-rw-r--r--src/server/api/endpoints/messaging/messages/delete.ts10
-rw-r--r--src/server/api/endpoints/messaging/messages/read.ts10
-rw-r--r--src/server/api/endpoints/meta.ts10
-rw-r--r--src/server/api/endpoints/miauth/gen-token.ts8
-rw-r--r--src/server/api/endpoints/mute/create.ts16
-rw-r--r--src/server/api/endpoints/mute/delete.ts12
-rw-r--r--src/server/api/endpoints/mute/list.ts8
-rw-r--r--src/server/api/endpoints/my/apps.ts4
-rw-r--r--src/server/api/endpoints/notes.ts8
-rw-r--r--src/server/api/endpoints/notes/children.ts14
-rw-r--r--src/server/api/endpoints/notes/clips.ts10
-rw-r--r--src/server/api/endpoints/notes/conversation.ts12
-rw-r--r--src/server/api/endpoints/notes/create.ts24
-rw-r--r--src/server/api/endpoints/notes/delete.ts12
-rw-r--r--src/server/api/endpoints/notes/favorites/create.ts12
-rw-r--r--src/server/api/endpoints/notes/favorites/delete.ts10
-rw-r--r--src/server/api/endpoints/notes/featured.ts8
-rw-r--r--src/server/api/endpoints/notes/global-timeline.ts22
-rw-r--r--src/server/api/endpoints/notes/hybrid-timeline.ts26
-rw-r--r--src/server/api/endpoints/notes/local-timeline.ts26
-rw-r--r--src/server/api/endpoints/notes/mentions.ts16
-rw-r--r--src/server/api/endpoints/notes/polls/recommendation.ts4
-rw-r--r--src/server/api/endpoints/notes/polls/vote.ts26
-rw-r--r--src/server/api/endpoints/notes/reactions.ts12
-rw-r--r--src/server/api/endpoints/notes/reactions/create.ts10
-rw-r--r--src/server/api/endpoints/notes/reactions/delete.ts10
-rw-r--r--src/server/api/endpoints/notes/renotes.ts18
-rw-r--r--src/server/api/endpoints/notes/replies.ts14
-rw-r--r--src/server/api/endpoints/notes/search-by-tag.ts18
-rw-r--r--src/server/api/endpoints/notes/search.ts18
-rw-r--r--src/server/api/endpoints/notes/show.ts10
-rw-r--r--src/server/api/endpoints/notes/state.ts6
-rw-r--r--src/server/api/endpoints/notes/timeline.ts22
-rw-r--r--src/server/api/endpoints/notes/translate.ts14
-rw-r--r--src/server/api/endpoints/notes/unrenote.ts12
-rw-r--r--src/server/api/endpoints/notes/user-list-timeline.ts14
-rw-r--r--src/server/api/endpoints/notes/watching/create.ts10
-rw-r--r--src/server/api/endpoints/notes/watching/delete.ts10
-rw-r--r--src/server/api/endpoints/notifications/create.ts4
-rw-r--r--src/server/api/endpoints/notifications/mark-all-as-read.ts6
-rw-r--r--src/server/api/endpoints/notifications/read.ts12
-rw-r--r--src/server/api/endpoints/page-push.ts10
-rw-r--r--src/server/api/endpoints/pages/create.ts12
-rw-r--r--src/server/api/endpoints/pages/delete.ts8
-rw-r--r--src/server/api/endpoints/pages/featured.ts4
-rw-r--r--src/server/api/endpoints/pages/like.ts10
-rw-r--r--src/server/api/endpoints/pages/show.ts10
-rw-r--r--src/server/api/endpoints/pages/unlike.ts8
-rw-r--r--src/server/api/endpoints/pages/update.ts8
-rw-r--r--src/server/api/endpoints/ping.ts2
-rw-r--r--src/server/api/endpoints/pinned-users.ts10
-rw-r--r--src/server/api/endpoints/promo/read.ts12
-rw-r--r--src/server/api/endpoints/request-reset-password.ts14
-rw-r--r--src/server/api/endpoints/reset-db.ts6
-rw-r--r--src/server/api/endpoints/reset-password.ts8
-rw-r--r--src/server/api/endpoints/room/show.ts10
-rw-r--r--src/server/api/endpoints/room/update.ts6
-rw-r--r--src/server/api/endpoints/server-info.ts2
-rw-r--r--src/server/api/endpoints/stats.ts6
-rw-r--r--src/server/api/endpoints/sw/register.ts8
-rw-r--r--src/server/api/endpoints/username/available.ts4
-rw-r--r--src/server/api/endpoints/users.ts8
-rw-r--r--src/server/api/endpoints/users/clips.ts8
-rw-r--r--src/server/api/endpoints/users/followers.ts12
-rw-r--r--src/server/api/endpoints/users/following.ts12
-rw-r--r--src/server/api/endpoints/users/gallery/posts.ts8
-rw-r--r--src/server/api/endpoints/users/get-frequently-replied-users.ts12
-rw-r--r--src/server/api/endpoints/users/groups/create.ts10
-rw-r--r--src/server/api/endpoints/users/groups/delete.ts8
-rw-r--r--src/server/api/endpoints/users/groups/invitations/accept.ts12
-rw-r--r--src/server/api/endpoints/users/groups/invitations/reject.ts8
-rw-r--r--src/server/api/endpoints/users/groups/invite.ts16
-rw-r--r--src/server/api/endpoints/users/groups/joined.ts4
-rw-r--r--src/server/api/endpoints/users/groups/owned.ts4
-rw-r--r--src/server/api/endpoints/users/groups/pull.ts10
-rw-r--r--src/server/api/endpoints/users/groups/show.ts8
-rw-r--r--src/server/api/endpoints/users/groups/transfer.ts10
-rw-r--r--src/server/api/endpoints/users/groups/update.ts8
-rw-r--r--src/server/api/endpoints/users/lists/create.ts8
-rw-r--r--src/server/api/endpoints/users/lists/delete.ts8
-rw-r--r--src/server/api/endpoints/users/lists/list.ts4
-rw-r--r--src/server/api/endpoints/users/lists/pull.ts12
-rw-r--r--src/server/api/endpoints/users/lists/push.ts12
-rw-r--r--src/server/api/endpoints/users/lists/show.ts8
-rw-r--r--src/server/api/endpoints/users/lists/update.ts8
-rw-r--r--src/server/api/endpoints/users/notes.ts18
-rw-r--r--src/server/api/endpoints/users/pages.ts8
-rw-r--r--src/server/api/endpoints/users/recommendation.ts8
-rw-r--r--src/server/api/endpoints/users/relation.ts6
-rw-r--r--src/server/api/endpoints/users/report-abuse.ts14
-rw-r--r--src/server/api/endpoints/users/search-by-username-and-host.ts4
-rw-r--r--src/server/api/endpoints/users/search.ts6
-rw-r--r--src/server/api/endpoints/users/show.ts14
-rw-r--r--src/server/api/endpoints/users/stats.ts8
-rw-r--r--src/server/api/index.ts16
-rw-r--r--src/server/api/limiter.ts10
-rw-r--r--src/server/api/logger.ts2
-rw-r--r--src/server/api/openapi/description.ts6
-rw-r--r--src/server/api/openapi/gen-spec.ts10
-rw-r--r--src/server/api/openapi/schemas.ts46
-rw-r--r--src/server/api/private/signin.ts12
-rw-r--r--src/server/api/private/signup.ts8
-rw-r--r--src/server/api/service/discord.ts16
-rw-r--r--src/server/api/service/github.ts16
-rw-r--r--src/server/api/service/twitter.ts14
-rw-r--r--src/server/api/stream/channels/admin.ts2
-rw-r--r--src/server/api/stream/channels/antenna.ts8
-rw-r--r--src/server/api/stream/channels/channel.ts12
-rw-r--r--src/server/api/stream/channels/drive.ts2
-rw-r--r--src/server/api/stream/channels/games/reversi-game.ts14
-rw-r--r--src/server/api/stream/channels/games/reversi.ts6
-rw-r--r--src/server/api/stream/channels/global-timeline.ts14
-rw-r--r--src/server/api/stream/channels/hashtag.ts12
-rw-r--r--src/server/api/stream/channels/home-timeline.ts12
-rw-r--r--src/server/api/stream/channels/hybrid-timeline.ts16
-rw-r--r--src/server/api/stream/channels/index.ts34
-rw-r--r--src/server/api/stream/channels/local-timeline.ts16
-rw-r--r--src/server/api/stream/channels/main.ts4
-rw-r--r--src/server/api/stream/channels/messaging-index.ts2
-rw-r--r--src/server/api/stream/channels/messaging.ts8
-rw-r--r--src/server/api/stream/channels/queue-stats.ts2
-rw-r--r--src/server/api/stream/channels/server-stats.ts2
-rw-r--r--src/server/api/stream/channels/user-list.ts12
-rw-r--r--src/server/api/stream/index.ts28
-rw-r--r--src/server/api/streaming.ts8
348 files changed, 1562 insertions, 1556 deletions
diff --git a/src/server/api/2fa.ts b/src/server/api/2fa.ts
index 77f0f8cd04..ee92caf55a 100644
--- a/src/server/api/2fa.ts
+++ b/src/server/api/2fa.ts
@@ -1,5 +1,5 @@
import * as crypto from 'crypto';
-import config from '@/config';
+import config from '@/config/index.js';
import * as jsrsasign from 'jsrsasign';
const ECC_PRELUDE = Buffer.from([0x04]);
diff --git a/src/server/api/api-handler.ts b/src/server/api/api-handler.ts
index cbace8917e..e2660d7b6f 100644
--- a/src/server/api/api-handler.ts
+++ b/src/server/api/api-handler.ts
@@ -1,9 +1,9 @@
import * as Koa from 'koa';
-import { IEndpoint } from './endpoints';
-import authenticate, { AuthenticationError } from './authenticate';
-import call from './call';
-import { ApiError } from './error';
+import { IEndpoint } from './endpoints.js';
+import authenticate, { AuthenticationError } from './authenticate.js';
+import call from './call.js';
+import { ApiError } from './error.js';
export default (endpoint: IEndpoint, ctx: Koa.Context) => new Promise((res) => {
const body = ctx.request.body;
diff --git a/src/server/api/authenticate.ts b/src/server/api/authenticate.ts
index 6148ad33c5..cd5b01cd51 100644
--- a/src/server/api/authenticate.ts
+++ b/src/server/api/authenticate.ts
@@ -1,7 +1,7 @@
-import isNativeToken from './common/is-native-token';
-import { User } from '../../models/entities/user';
-import { Users, AccessTokens, Apps } from '../../models';
-import { AccessToken } from '../../models/entities/access-token';
+import isNativeToken from './common/is-native-token.js';
+import { User } from '@/models/entities/user.js';
+import { Users, AccessTokens, Apps } from '@/models/index.js';
+import { AccessToken } from '@/models/entities/access-token.js';
export class AuthenticationError extends Error {
constructor(message: string) {
diff --git a/src/server/api/call.ts b/src/server/api/call.ts
index d50b6a1222..899a5a6c72 100644
--- a/src/server/api/call.ts
+++ b/src/server/api/call.ts
@@ -1,10 +1,10 @@
import { performance } from 'perf_hooks';
-import limiter from './limiter';
-import { User } from '../../models/entities/user';
-import endpoints from './endpoints';
-import { ApiError } from './error';
-import { apiLogger } from './logger';
-import { AccessToken } from '../../models/entities/access-token';
+import limiter from './limiter.js';
+import { User } from '@/models/entities/user.js';
+import endpoints from './endpoints.js';
+import { ApiError } from './error.js';
+import { apiLogger } from './logger.js';
+import { AccessToken } from '@/models/entities/access-token.js';
const accessDenied = {
message: 'Access denied.',
diff --git a/src/server/api/common/generate-block-query.ts b/src/server/api/common/generate-block-query.ts
index 016da57aac..60db1e731b 100644
--- a/src/server/api/common/generate-block-query.ts
+++ b/src/server/api/common/generate-block-query.ts
@@ -1,5 +1,5 @@
-import { User } from '../../../models/entities/user';
-import { Blockings } from '../../../models';
+import { User } from '@/models/entities/user.js';
+import { Blockings } from '@/models/index.js';
import { Brackets, SelectQueryBuilder } from 'typeorm';
// ここでいうBlockedは被Blockedの意
diff --git a/src/server/api/common/generate-channel-query.ts b/src/server/api/common/generate-channel-query.ts
index 74a6d68c40..333bb73b86 100644
--- a/src/server/api/common/generate-channel-query.ts
+++ b/src/server/api/common/generate-channel-query.ts
@@ -1,5 +1,5 @@
-import { User } from '../../../models/entities/user';
-import { ChannelFollowings } from '../../../models';
+import { User } from '@/models/entities/user.js';
+import { ChannelFollowings } from '@/models/index.js';
import { Brackets, SelectQueryBuilder } from 'typeorm';
export function generateChannelQuery(q: SelectQueryBuilder<any>, me?: { id: User['id'] } | null) {
diff --git a/src/server/api/common/generate-muted-note-query.ts b/src/server/api/common/generate-muted-note-query.ts
index c7f9f7c5a3..f544e334d3 100644
--- a/src/server/api/common/generate-muted-note-query.ts
+++ b/src/server/api/common/generate-muted-note-query.ts
@@ -1,5 +1,5 @@
-import { User } from '../../../models/entities/user';
-import { MutedNotes } from '../../../models';
+import { User } from '@/models/entities/user.js';
+import { MutedNotes } from '@/models/index.js';
import { SelectQueryBuilder } from 'typeorm';
export function generateMutedNoteQuery(q: SelectQueryBuilder<any>, me: { id: User['id'] }) {
diff --git a/src/server/api/common/generate-muted-user-query.ts b/src/server/api/common/generate-muted-user-query.ts
index f5e072ba93..79cb3ff894 100644
--- a/src/server/api/common/generate-muted-user-query.ts
+++ b/src/server/api/common/generate-muted-user-query.ts
@@ -1,5 +1,5 @@
-import { User } from '../../../models/entities/user';
-import { Mutings } from '../../../models';
+import { User } from '@/models/entities/user.js';
+import { Mutings } from '@/models/index.js';
import { SelectQueryBuilder, Brackets } from 'typeorm';
export function generateMutedUserQuery(q: SelectQueryBuilder<any>, me: { id: User['id'] }, exclude?: User) {
diff --git a/src/server/api/common/generate-native-user-token.ts b/src/server/api/common/generate-native-user-token.ts
index 1f791c57ce..5d8a4c5378 100644
--- a/src/server/api/common/generate-native-user-token.ts
+++ b/src/server/api/common/generate-native-user-token.ts
@@ -1,3 +1,3 @@
-import { secureRndstr } from '@/misc/secure-rndstr';
+import { secureRndstr } from '@/misc/secure-rndstr.js';
export default () => secureRndstr(16, true);
diff --git a/src/server/api/common/generate-replies-query.ts b/src/server/api/common/generate-replies-query.ts
index 29b1e17c2e..e59a3334ef 100644
--- a/src/server/api/common/generate-replies-query.ts
+++ b/src/server/api/common/generate-replies-query.ts
@@ -1,4 +1,4 @@
-import { User } from '../../../models/entities/user';
+import { User } from '@/models/entities/user.js';
import { Brackets, SelectQueryBuilder } from 'typeorm';
export function generateRepliesQuery(q: SelectQueryBuilder<any>, me?: { id: User['id'] } | null) {
diff --git a/src/server/api/common/generate-visibility-query.ts b/src/server/api/common/generate-visibility-query.ts
index 00a50f8211..715982934c 100644
--- a/src/server/api/common/generate-visibility-query.ts
+++ b/src/server/api/common/generate-visibility-query.ts
@@ -1,5 +1,5 @@
-import { User } from '../../../models/entities/user';
-import { Followings } from '../../../models';
+import { User } from '@/models/entities/user.js';
+import { Followings } from '@/models/index.js';
import { Brackets, SelectQueryBuilder } from 'typeorm';
export function generateVisibilityQuery(q: SelectQueryBuilder<any>, me?: { id: User['id'] } | null) {
diff --git a/src/server/api/common/getters.ts b/src/server/api/common/getters.ts
index 73fbadfee6..c5a47876d0 100644
--- a/src/server/api/common/getters.ts
+++ b/src/server/api/common/getters.ts
@@ -1,7 +1,7 @@
-import { IdentifiableError } from '@/misc/identifiable-error';
-import { User } from '../../../models/entities/user';
-import { Note } from '../../../models/entities/note';
-import { Notes, Users } from '../../../models';
+import { IdentifiableError } from '@/misc/identifiable-error.js';
+import { User } from '@/models/entities/user.js';
+import { Note } from '@/models/entities/note.js';
+import { Notes, Users } from '@/models/index.js';
/**
* Get note for API processing
diff --git a/src/server/api/common/inject-featured.ts b/src/server/api/common/inject-featured.ts
index 3659b7f2b2..b7dd8028b5 100644
--- a/src/server/api/common/inject-featured.ts
+++ b/src/server/api/common/inject-featured.ts
@@ -1,9 +1,9 @@
import rndstr from 'rndstr';
-import { Note } from '../../../models/entities/note';
-import { User } from '../../../models/entities/user';
-import { Notes, UserProfiles, NoteReactions } from '../../../models';
-import { generateMutedUserQuery } from './generate-muted-user-query';
-import { generateBlockedUserQuery } from './generate-block-query';
+import { Note } from '@/models/entities/note.js';
+import { User } from '@/models/entities/user.js';
+import { Notes, UserProfiles, NoteReactions } from '@/models/index.js';
+import { generateMutedUserQuery } from './generate-muted-user-query.js';
+import { generateBlockedUserQuery } from './generate-block-query.js';
// TODO: リアクション、Renote、返信などをしたノートは除外する
diff --git a/src/server/api/common/inject-promo.ts b/src/server/api/common/inject-promo.ts
index 2c16ca4cf7..971770f32a 100644
--- a/src/server/api/common/inject-promo.ts
+++ b/src/server/api/common/inject-promo.ts
@@ -1,7 +1,7 @@
import rndstr from 'rndstr';
-import { Note } from '../../../models/entities/note';
-import { User } from '../../../models/entities/user';
-import { PromoReads, PromoNotes, Notes, Users } from '../../../models';
+import { Note } from '@/models/entities/note.js';
+import { User } from '@/models/entities/user.js';
+import { PromoReads, PromoNotes, Notes, Users } from '@/models/index.js';
export async function injectPromo(timeline: Note[], user?: User | null) {
if (timeline.length < 5) return;
diff --git a/src/server/api/common/read-messaging-message.ts b/src/server/api/common/read-messaging-message.ts
index 6c9fcf973f..638aff3d58 100644
--- a/src/server/api/common/read-messaging-message.ts
+++ b/src/server/api/common/read-messaging-message.ts
@@ -1,17 +1,17 @@
-import { publishMainStream, publishGroupMessagingStream } from '../../../services/stream';
-import { publishMessagingStream } from '../../../services/stream';
-import { publishMessagingIndexStream } from '../../../services/stream';
-import { User, IRemoteUser } from '../../../models/entities/user';
-import { MessagingMessage } from '../../../models/entities/messaging-message';
-import { MessagingMessages, UserGroupJoinings, Users } from '../../../models';
+import { publishMainStream, publishGroupMessagingStream } from '@/services/stream.js';
+import { publishMessagingStream } from '@/services/stream.js';
+import { publishMessagingIndexStream } from '@/services/stream.js';
+import { User, IRemoteUser } from '@/models/entities/user.js';
+import { MessagingMessage } from '@/models/entities/messaging-message.js';
+import { MessagingMessages, UserGroupJoinings, Users } from '@/models/index.js';
import { In } from 'typeorm';
-import { IdentifiableError } from '@/misc/identifiable-error';
-import { UserGroup } from '../../../models/entities/user-group';
-import { toArray } from '../../../prelude/array';
-import { renderReadActivity } from '../../../remote/activitypub/renderer/read';
-import { renderActivity } from '../../../remote/activitypub/renderer';
-import { deliver } from '../../../queue';
-import orderedCollection from '../../../remote/activitypub/renderer/ordered-collection';
+import { IdentifiableError } from '@/misc/identifiable-error.js';
+import { UserGroup } from '@/models/entities/user-group.js';
+import { toArray } from '../../../prelude/array.js';
+import { renderReadActivity } from '@/remote/activitypub/renderer/read.js';
+import { renderActivity } from '@/remote/activitypub/renderer/index.js';
+import { deliver } from '@/queue/index.js';
+import orderedCollection from '@/remote/activitypub/renderer/ordered-collection.js';
/**
* Mark messages as read
diff --git a/src/server/api/common/read-notification.ts b/src/server/api/common/read-notification.ts
index effa61e8b5..ce958c479f 100644
--- a/src/server/api/common/read-notification.ts
+++ b/src/server/api/common/read-notification.ts
@@ -1,7 +1,7 @@
-import { publishMainStream } from '../../../services/stream';
-import { User } from '../../../models/entities/user';
-import { Notification } from '../../../models/entities/notification';
-import { Notifications, Users } from '../../../models';
+import { publishMainStream } from '@/services/stream.js';
+import { User } from '@/models/entities/user.js';
+import { Notification } from '@/models/entities/notification.js';
+import { Notifications, Users } from '@/models/index.js';
import { In } from 'typeorm';
export async function readNotification(
diff --git a/src/server/api/common/signin.ts b/src/server/api/common/signin.ts
index af09a70340..adc5aafe85 100644
--- a/src/server/api/common/signin.ts
+++ b/src/server/api/common/signin.ts
@@ -1,10 +1,10 @@
import * as Koa from 'koa';
-import config from '@/config';
-import { ILocalUser } from '../../../models/entities/user';
-import { Signins } from '../../../models';
-import { genId } from '@/misc/gen-id';
-import { publishMainStream } from '../../../services/stream';
+import config from '@/config/index.js';
+import { ILocalUser } from '@/models/entities/user.js';
+import { Signins } from '@/models/index.js';
+import { genId } from '@/misc/gen-id.js';
+import { publishMainStream } from '@/services/stream.js';
export default function(ctx: Koa.Context, user: ILocalUser, redirect = false) {
if (redirect) {
diff --git a/src/server/api/common/signup.ts b/src/server/api/common/signup.ts
index b8d197317a..c5605e2b8f 100644
--- a/src/server/api/common/signup.ts
+++ b/src/server/api/common/signup.ts
@@ -1,15 +1,15 @@
import * as bcrypt from 'bcryptjs';
import { generateKeyPair } from 'crypto';
-import generateUserToken from './generate-native-user-token';
-import { User } from '../../../models/entities/user';
-import { Users, UsedUsernames } from '../../../models';
-import { UserProfile } from '../../../models/entities/user-profile';
+import generateUserToken from './generate-native-user-token.js';
+import { User } from '@/models/entities/user.js';
+import { Users, UsedUsernames } from '@/models/index.js';
+import { UserProfile } from '@/models/entities/user-profile.js';
import { getConnection } from 'typeorm';
-import { genId } from '@/misc/gen-id';
-import { toPunyNullable } from '@/misc/convert-host';
-import { UserKeypair } from '../../../models/entities/user-keypair';
-import { usersChart } from '../../../services/chart';
-import { UsedUsername } from '../../../models/entities/used-username';
+import { genId } from '@/misc/gen-id.js';
+import { toPunyNullable } from '@/misc/convert-host.js';
+import { UserKeypair } from '@/models/entities/user-keypair.js';
+import { usersChart } from '@/services/chart/index.js';
+import { UsedUsername } from '@/models/entities/used-username.js';
export async function signup(username: User['username'], password: UserProfile['password'], host: string | null = null) {
// Validate username
diff --git a/src/server/api/define.ts b/src/server/api/define.ts
index cba69cfdc4..18e8f62016 100644
--- a/src/server/api/define.ts
+++ b/src/server/api/define.ts
@@ -1,9 +1,9 @@
import * as fs from 'fs';
-import { ILocalUser } from '../../models/entities/user';
-import { IEndpointMeta } from './endpoints';
-import { ApiError } from './error';
-import { SchemaType } from '@/misc/schema';
-import { AccessToken } from '../../models/entities/access-token';
+import { ILocalUser } from '@/models/entities/user.js';
+import { IEndpointMeta } from './endpoints.js';
+import { ApiError } from './error.js';
+import { SchemaType } from '@/misc/schema.js';
+import { AccessToken } from '@/models/entities/access-token.js';
type NonOptional<T> = T extends undefined ? never : T;
diff --git a/src/server/api/endpoints.ts b/src/server/api/endpoints.ts
index 24b58b873c..4c0baf2242 100644
--- a/src/server/api/endpoints.ts
+++ b/src/server/api/endpoints.ts
@@ -1,7 +1,13 @@
+import { fileURLToPath } from 'url';
+import { dirname } from 'path';
import { Context } from 'cafy';
import * as path from 'path';
import * as glob from 'glob';
-import { Schema } from '@/misc/schema';
+import { Schema } from '@/misc/schema.js';
+
+//const _filename = fileURLToPath(import.meta.url);
+const _filename = __filename;
+const _dirname = dirname(_filename);
export type Param = {
validator: Context<any>;
@@ -102,7 +108,7 @@ export interface IEndpoint {
}
const files = glob.sync('**/*.js', {
- cwd: path.resolve(__dirname + '/endpoints/')
+ cwd: path.resolve(_dirname + '/endpoints/')
});
const endpoints: IEndpoint[] = files.map(f => {
diff --git a/src/server/api/endpoints/admin/abuse-user-reports.ts b/src/server/api/endpoints/admin/abuse-user-reports.ts
index 02291a3edd..5bc5618ab3 100644
--- a/src/server/api/endpoints/admin/abuse-user-reports.ts
+++ b/src/server/api/endpoints/admin/abuse-user-reports.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { AbuseUserReports } from '../../../../models';
-import { makePaginationQuery } from '../../common/make-pagination-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { AbuseUserReports } from '@/models/index.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/accounts/create.ts b/src/server/api/endpoints/admin/accounts/create.ts
index bceb210a82..f9a6c10b87 100644
--- a/src/server/api/endpoints/admin/accounts/create.ts
+++ b/src/server/api/endpoints/admin/accounts/create.ts
@@ -1,6 +1,6 @@
-import define from '../../../define';
-import { Users } from '../../../../../models';
-import { signup } from '../../../common/signup';
+import define from '../../../define.js';
+import { Users } from '@/models/index.js';
+import { signup } from '../../../common/signup.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/ad/create.ts b/src/server/api/endpoints/admin/ad/create.ts
index 337114a3fa..55cc037182 100644
--- a/src/server/api/endpoints/admin/ad/create.ts
+++ b/src/server/api/endpoints/admin/ad/create.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import define from '../../../define';
-import { Ads } from '../../../../../models';
-import { genId } from '@/misc/gen-id';
+import define from '../../../define.js';
+import { Ads } from '@/models/index.js';
+import { genId } from '@/misc/gen-id.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/ad/delete.ts b/src/server/api/endpoints/admin/ad/delete.ts
index 6a5f92193e..9f11f968ee 100644
--- a/src/server/api/endpoints/admin/ad/delete.ts
+++ b/src/server/api/endpoints/admin/ad/delete.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import define from '../../../define';
-import { ID } from '@/misc/cafy-id';
-import { Ads } from '../../../../../models';
-import { ApiError } from '../../../error';
+import define from '../../../define.js';
+import { ID } from '@/misc/cafy-id.js';
+import { Ads } from '@/models/index.js';
+import { ApiError } from '../../../error.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/ad/list.ts b/src/server/api/endpoints/admin/ad/list.ts
index a323f2a9ed..a2d843ec16 100644
--- a/src/server/api/endpoints/admin/ad/list.ts
+++ b/src/server/api/endpoints/admin/ad/list.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { Ads } from '../../../../../models';
-import { makePaginationQuery } from '../../../common/make-pagination-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { Ads } from '@/models/index.js';
+import { makePaginationQuery } from '../../../common/make-pagination-query.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/ad/update.ts b/src/server/api/endpoints/admin/ad/update.ts
index 71e6054a88..2d7a32585d 100644
--- a/src/server/api/endpoints/admin/ad/update.ts
+++ b/src/server/api/endpoints/admin/ad/update.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import define from '../../../define';
-import { ID } from '@/misc/cafy-id';
-import { Ads } from '../../../../../models';
-import { ApiError } from '../../../error';
+import define from '../../../define.js';
+import { ID } from '@/misc/cafy-id.js';
+import { Ads } from '@/models/index.js';
+import { ApiError } from '../../../error.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/announcements/create.ts b/src/server/api/endpoints/admin/announcements/create.ts
index 794c35023b..ab1b9a3c20 100644
--- a/src/server/api/endpoints/admin/announcements/create.ts
+++ b/src/server/api/endpoints/admin/announcements/create.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import define from '../../../define';
-import { Announcements } from '../../../../../models';
-import { genId } from '@/misc/gen-id';
+import define from '../../../define.js';
+import { Announcements } from '@/models/index.js';
+import { genId } from '@/misc/gen-id.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/announcements/delete.ts b/src/server/api/endpoints/admin/announcements/delete.ts
index 6c28054da8..52d7cb26c5 100644
--- a/src/server/api/endpoints/admin/announcements/delete.ts
+++ b/src/server/api/endpoints/admin/announcements/delete.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import define from '../../../define';
-import { ID } from '@/misc/cafy-id';
-import { Announcements } from '../../../../../models';
-import { ApiError } from '../../../error';
+import define from '../../../define.js';
+import { ID } from '@/misc/cafy-id.js';
+import { Announcements } from '@/models/index.js';
+import { ApiError } from '../../../error.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/announcements/list.ts b/src/server/api/endpoints/admin/announcements/list.ts
index a14f0c0bdc..ff62b7806a 100644
--- a/src/server/api/endpoints/admin/announcements/list.ts
+++ b/src/server/api/endpoints/admin/announcements/list.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { Announcements, AnnouncementReads } from '../../../../../models';
-import { makePaginationQuery } from '../../../common/make-pagination-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { Announcements, AnnouncementReads } from '@/models/index.js';
+import { makePaginationQuery } from '../../../common/make-pagination-query.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/announcements/update.ts b/src/server/api/endpoints/admin/announcements/update.ts
index 6e9a43d346..e45a185ad6 100644
--- a/src/server/api/endpoints/admin/announcements/update.ts
+++ b/src/server/api/endpoints/admin/announcements/update.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import define from '../../../define';
-import { ID } from '@/misc/cafy-id';
-import { Announcements } from '../../../../../models';
-import { ApiError } from '../../../error';
+import define from '../../../define.js';
+import { ID } from '@/misc/cafy-id.js';
+import { Announcements } from '@/models/index.js';
+import { ApiError } from '../../../error.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/delete-all-files-of-a-user.ts b/src/server/api/endpoints/admin/delete-all-files-of-a-user.ts
index 3d49689cd7..9001e01a1a 100644
--- a/src/server/api/endpoints/admin/delete-all-files-of-a-user.ts
+++ b/src/server/api/endpoints/admin/delete-all-files-of-a-user.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import define from '../../define';
-import { deleteFile } from '../../../../services/drive/delete-file';
-import { DriveFiles } from '../../../../models';
-import { ID } from '@/misc/cafy-id';
+import define from '../../define.js';
+import { deleteFile } from '@/services/drive/delete-file.js';
+import { DriveFiles } from '@/models/index.js';
+import { ID } from '@/misc/cafy-id.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/delete-logs.ts b/src/server/api/endpoints/admin/delete-logs.ts
index 410588bc01..be3f58d738 100644
--- a/src/server/api/endpoints/admin/delete-logs.ts
+++ b/src/server/api/endpoints/admin/delete-logs.ts
@@ -1,5 +1,5 @@
-import define from '../../define';
-import { Logs } from '../../../../models';
+import define from '../../define.js';
+import { Logs } from '@/models/index.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/drive/clean-remote-files.ts b/src/server/api/endpoints/admin/drive/clean-remote-files.ts
index 5a5adb8a8b..f945f0f049 100644
--- a/src/server/api/endpoints/admin/drive/clean-remote-files.ts
+++ b/src/server/api/endpoints/admin/drive/clean-remote-files.ts
@@ -1,5 +1,5 @@
-import define from '../../../define';
-import { createCleanRemoteFilesJob } from '../../../../../queue';
+import define from '../../../define.js';
+import { createCleanRemoteFilesJob } from '@/queue/index.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/drive/cleanup.ts b/src/server/api/endpoints/admin/drive/cleanup.ts
index b76236a7f0..d5ad221a62 100644
--- a/src/server/api/endpoints/admin/drive/cleanup.ts
+++ b/src/server/api/endpoints/admin/drive/cleanup.ts
@@ -1,7 +1,7 @@
import { IsNull } from 'typeorm';
-import define from '../../../define';
-import { deleteFile } from '../../../../../services/drive/delete-file';
-import { DriveFiles } from '../../../../../models';
+import define from '../../../define.js';
+import { deleteFile } from '@/services/drive/delete-file.js';
+import { DriveFiles } from '@/models/index.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/drive/files.ts b/src/server/api/endpoints/admin/drive/files.ts
index efeef83ca3..65980bfea2 100644
--- a/src/server/api/endpoints/admin/drive/files.ts
+++ b/src/server/api/endpoints/admin/drive/files.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import define from '../../../define';
-import { DriveFiles } from '../../../../../models';
-import { makePaginationQuery } from '../../../common/make-pagination-query';
-import { ID } from '@/misc/cafy-id';
+import define from '../../../define.js';
+import { DriveFiles } from '@/models/index.js';
+import { makePaginationQuery } from '../../../common/make-pagination-query.js';
+import { ID } from '@/misc/cafy-id.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/drive/show-file.ts b/src/server/api/endpoints/admin/drive/show-file.ts
index 3489e5c816..9dfa0cacf9 100644
--- a/src/server/api/endpoints/admin/drive/show-file.ts
+++ b/src/server/api/endpoints/admin/drive/show-file.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { DriveFiles } from '../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { DriveFiles } from '@/models/index.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/emoji/add.ts b/src/server/api/endpoints/admin/emoji/add.ts
index 0d4550bf3c..b797fb30a3 100644
--- a/src/server/api/endpoints/admin/emoji/add.ts
+++ b/src/server/api/endpoints/admin/emoji/add.ts
@@ -1,13 +1,13 @@
import $ from 'cafy';
-import define from '../../../define';
-import { Emojis, DriveFiles } from '../../../../../models';
-import { genId } from '@/misc/gen-id';
+import define from '../../../define.js';
+import { Emojis, DriveFiles } from '@/models/index.js';
+import { genId } from '@/misc/gen-id.js';
import { getConnection } from 'typeorm';
-import { insertModerationLog } from '../../../../../services/insert-moderation-log';
-import { ApiError } from '../../../error';
-import { ID } from '@/misc/cafy-id';
+import { insertModerationLog } from '@/services/insert-moderation-log.js';
+import { ApiError } from '../../../error.js';
+import { ID } from '@/misc/cafy-id.js';
import rndstr from 'rndstr';
-import { publishBroadcastStream } from '../../../../../services/stream';
+import { publishBroadcastStream } from '@/services/stream.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/emoji/copy.ts b/src/server/api/endpoints/admin/emoji/copy.ts
index 72c2b014a4..4c5f7bf36c 100644
--- a/src/server/api/endpoints/admin/emoji/copy.ts
+++ b/src/server/api/endpoints/admin/emoji/copy.ts
@@ -1,13 +1,13 @@
import $ from 'cafy';
-import define from '../../../define';
-import { Emojis } from '../../../../../models';
-import { genId } from '@/misc/gen-id';
+import define from '../../../define.js';
+import { Emojis } from '@/models/index.js';
+import { genId } from '@/misc/gen-id.js';
import { getConnection } from 'typeorm';
-import { ApiError } from '../../../error';
-import { DriveFile } from '../../../../../models/entities/drive-file';
-import { ID } from '@/misc/cafy-id';
-import uploadFromUrl from '../../../../../services/drive/upload-from-url';
-import { publishBroadcastStream } from '@/services/stream';
+import { ApiError } from '../../../error.js';
+import { DriveFile } from '@/models/entities/drive-file.js';
+import { ID } from '@/misc/cafy-id.js';
+import uploadFromUrl from '@/services/drive/upload-from-url.js';
+import { publishBroadcastStream } from '@/services/stream.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/emoji/list-remote.ts b/src/server/api/endpoints/admin/emoji/list-remote.ts
index 570db064ec..cc284123b5 100644
--- a/src/server/api/endpoints/admin/emoji/list-remote.ts
+++ b/src/server/api/endpoints/admin/emoji/list-remote.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import define from '../../../define';
-import { Emojis } from '../../../../../models';
-import { toPuny } from '@/misc/convert-host';
-import { makePaginationQuery } from '../../../common/make-pagination-query';
-import { ID } from '@/misc/cafy-id';
+import define from '../../../define.js';
+import { Emojis } from '@/models/index.js';
+import { toPuny } from '@/misc/convert-host.js';
+import { makePaginationQuery } from '../../../common/make-pagination-query.js';
+import { ID } from '@/misc/cafy-id.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/emoji/list.ts b/src/server/api/endpoints/admin/emoji/list.ts
index b864fed4b0..da72ac13e7 100644
--- a/src/server/api/endpoints/admin/emoji/list.ts
+++ b/src/server/api/endpoints/admin/emoji/list.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import define from '../../../define';
-import { Emojis } from '../../../../../models';
-import { makePaginationQuery } from '../../../common/make-pagination-query';
-import { ID } from '@/misc/cafy-id';
-import { Emoji } from '../../../../../models/entities/emoji';
+import define from '../../../define.js';
+import { Emojis } from '@/models/index.js';
+import { makePaginationQuery } from '../../../common/make-pagination-query.js';
+import { ID } from '@/misc/cafy-id.js';
+import { Emoji } from '@/models/entities/emoji.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/emoji/remove.ts b/src/server/api/endpoints/admin/emoji/remove.ts
index 22bbc76e78..d81c0b9bbd 100644
--- a/src/server/api/endpoints/admin/emoji/remove.ts
+++ b/src/server/api/endpoints/admin/emoji/remove.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
-import define from '../../../define';
-import { ID } from '@/misc/cafy-id';
-import { Emojis } from '../../../../../models';
+import define from '../../../define.js';
+import { ID } from '@/misc/cafy-id.js';
+import { Emojis } from '@/models/index.js';
import { getConnection } from 'typeorm';
-import { insertModerationLog } from '../../../../../services/insert-moderation-log';
-import { ApiError } from '../../../error';
+import { insertModerationLog } from '@/services/insert-moderation-log.js';
+import { ApiError } from '../../../error.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/emoji/update.ts b/src/server/api/endpoints/admin/emoji/update.ts
index 70589d5cf7..912c96c7dc 100644
--- a/src/server/api/endpoints/admin/emoji/update.ts
+++ b/src/server/api/endpoints/admin/emoji/update.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import define from '../../../define';
-import { ID } from '@/misc/cafy-id';
-import { Emojis } from '../../../../../models';
+import define from '../../../define.js';
+import { ID } from '@/misc/cafy-id.js';
+import { Emojis } from '@/models/index.js';
import { getConnection } from 'typeorm';
-import { ApiError } from '../../../error';
+import { ApiError } from '../../../error.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/federation/delete-all-files.ts b/src/server/api/endpoints/admin/federation/delete-all-files.ts
index eef53cd92c..f32c6b9776 100644
--- a/src/server/api/endpoints/admin/federation/delete-all-files.ts
+++ b/src/server/api/endpoints/admin/federation/delete-all-files.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import define from '../../../define';
-import { deleteFile } from '../../../../../services/drive/delete-file';
-import { DriveFiles } from '../../../../../models';
+import define from '../../../define.js';
+import { deleteFile } from '@/services/drive/delete-file.js';
+import { DriveFiles } from '@/models/index.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/federation/refresh-remote-instance-metadata.ts b/src/server/api/endpoints/admin/federation/refresh-remote-instance-metadata.ts
index 65b3b6e260..125be42e80 100644
--- a/src/server/api/endpoints/admin/federation/refresh-remote-instance-metadata.ts
+++ b/src/server/api/endpoints/admin/federation/refresh-remote-instance-metadata.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import define from '../../../define';
-import { Instances } from '../../../../../models';
-import { toPuny } from '@/misc/convert-host';
-import { fetchInstanceMetadata } from '../../../../../services/fetch-instance-metadata';
+import define from '../../../define.js';
+import { Instances } from '@/models/index.js';
+import { toPuny } from '@/misc/convert-host.js';
+import { fetchInstanceMetadata } from '@/services/fetch-instance-metadata.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/federation/remove-all-following.ts b/src/server/api/endpoints/admin/federation/remove-all-following.ts
index e593193552..6b3d621c8b 100644
--- a/src/server/api/endpoints/admin/federation/remove-all-following.ts
+++ b/src/server/api/endpoints/admin/federation/remove-all-following.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import define from '../../../define';
-import deleteFollowing from '../../../../../services/following/delete';
-import { Followings, Users } from '../../../../../models';
+import define from '../../../define.js';
+import deleteFollowing from '@/services/following/delete.js';
+import { Followings, Users } from '@/models/index.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/federation/update-instance.ts b/src/server/api/endpoints/admin/federation/update-instance.ts
index 2d559e43e8..b5f13027a3 100644
--- a/src/server/api/endpoints/admin/federation/update-instance.ts
+++ b/src/server/api/endpoints/admin/federation/update-instance.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import define from '../../../define';
-import { Instances } from '../../../../../models';
-import { toPuny } from '@/misc/convert-host';
+import define from '../../../define.js';
+import { Instances } from '@/models/index.js';
+import { toPuny } from '@/misc/convert-host.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/get-index-stats.ts b/src/server/api/endpoints/admin/get-index-stats.ts
index f2b06d0ef2..e7e8d0b219 100644
--- a/src/server/api/endpoints/admin/get-index-stats.ts
+++ b/src/server/api/endpoints/admin/get-index-stats.ts
@@ -1,4 +1,4 @@
-import define from '../../define';
+import define from '../../define.js';
import { getConnection } from 'typeorm';
export const meta = {
diff --git a/src/server/api/endpoints/admin/get-table-stats.ts b/src/server/api/endpoints/admin/get-table-stats.ts
index bce813232b..c7f2a614b0 100644
--- a/src/server/api/endpoints/admin/get-table-stats.ts
+++ b/src/server/api/endpoints/admin/get-table-stats.ts
@@ -1,4 +1,4 @@
-import define from '../../define';
+import define from '../../define.js';
import { getConnection } from 'typeorm';
export const meta = {
diff --git a/src/server/api/endpoints/admin/invite.ts b/src/server/api/endpoints/admin/invite.ts
index 141f27d95e..0a63b69ee9 100644
--- a/src/server/api/endpoints/admin/invite.ts
+++ b/src/server/api/endpoints/admin/invite.ts
@@ -1,7 +1,7 @@
import rndstr from 'rndstr';
-import define from '../../define';
-import { RegistrationTickets } from '../../../../models';
-import { genId } from '@/misc/gen-id';
+import define from '../../define.js';
+import { RegistrationTickets } from '@/models/index.js';
+import { genId } from '@/misc/gen-id.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/logs.ts b/src/server/api/endpoints/admin/logs.ts
index 1ec7320399..e0d97b4abe 100644
--- a/src/server/api/endpoints/admin/logs.ts
+++ b/src/server/api/endpoints/admin/logs.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
-import define from '../../define';
-import { Logs } from '../../../../models';
+import define from '../../define.js';
+import { Logs } from '@/models/index.js';
import { Brackets } from 'typeorm';
export const meta = {
diff --git a/src/server/api/endpoints/admin/moderators/add.ts b/src/server/api/endpoints/admin/moderators/add.ts
index 2b4e8a8014..bff9b63359 100644
--- a/src/server/api/endpoints/admin/moderators/add.ts
+++ b/src/server/api/endpoints/admin/moderators/add.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { Users } from '../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { Users } from '@/models/index.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/moderators/remove.ts b/src/server/api/endpoints/admin/moderators/remove.ts
index fd6e29df54..cacb788b4d 100644
--- a/src/server/api/endpoints/admin/moderators/remove.ts
+++ b/src/server/api/endpoints/admin/moderators/remove.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { Users } from '../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { Users } from '@/models/index.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/promo/create.ts b/src/server/api/endpoints/admin/promo/create.ts
index 8468ab6545..faba458fed 100644
--- a/src/server/api/endpoints/admin/promo/create.ts
+++ b/src/server/api/endpoints/admin/promo/create.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { getNote } from '../../../common/getters';
-import { PromoNotes } from '../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { getNote } from '../../../common/getters.js';
+import { PromoNotes } from '@/models/index.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/queue/clear.ts b/src/server/api/endpoints/admin/queue/clear.ts
index 0375f55f01..4bab2f20cd 100644
--- a/src/server/api/endpoints/admin/queue/clear.ts
+++ b/src/server/api/endpoints/admin/queue/clear.ts
@@ -1,6 +1,6 @@
-import define from '../../../define';
-import { destroy } from '../../../../../queue';
-import { insertModerationLog } from '../../../../../services/insert-moderation-log';
+import define from '../../../define.js';
+import { destroy } from '@/queue/index.js';
+import { insertModerationLog } from '@/services/insert-moderation-log.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/queue/deliver-delayed.ts b/src/server/api/endpoints/admin/queue/deliver-delayed.ts
index cd7b640983..ed34228108 100644
--- a/src/server/api/endpoints/admin/queue/deliver-delayed.ts
+++ b/src/server/api/endpoints/admin/queue/deliver-delayed.ts
@@ -1,6 +1,6 @@
-import { deliverQueue } from '@/queue/queues';
+import { deliverQueue } from '@/queue/queues.js';
import { URL } from 'url';
-import define from '../../../define';
+import define from '../../../define.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/queue/inbox-delayed.ts b/src/server/api/endpoints/admin/queue/inbox-delayed.ts
index 119976c680..8870722f23 100644
--- a/src/server/api/endpoints/admin/queue/inbox-delayed.ts
+++ b/src/server/api/endpoints/admin/queue/inbox-delayed.ts
@@ -1,6 +1,6 @@
import { URL } from 'url';
-import define from '../../../define';
-import { inboxQueue } from '../../../../../queue';
+import define from '../../../define.js';
+import { inboxQueue } from '@/queue/index.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/queue/jobs.ts b/src/server/api/endpoints/admin/queue/jobs.ts
index c426e5f39b..164379f721 100644
--- a/src/server/api/endpoints/admin/queue/jobs.ts
+++ b/src/server/api/endpoints/admin/queue/jobs.ts
@@ -1,6 +1,6 @@
-import { deliverQueue, inboxQueue, dbQueue, objectStorageQueue } from '@/queue/queues';
+import { deliverQueue, inboxQueue, dbQueue, objectStorageQueue } from '@/queue/queues.js';
import $ from 'cafy';
-import define from '../../../define';
+import define from '../../../define.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/queue/stats.ts b/src/server/api/endpoints/admin/queue/stats.ts
index 38f18459dd..60a3416c39 100644
--- a/src/server/api/endpoints/admin/queue/stats.ts
+++ b/src/server/api/endpoints/admin/queue/stats.ts
@@ -1,5 +1,5 @@
-import { deliverQueue, inboxQueue, dbQueue, objectStorageQueue } from '@/queue/queues';
-import define from '../../../define';
+import { deliverQueue, inboxQueue, dbQueue, objectStorageQueue } from '@/queue/queues.js';
+import define from '../../../define.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/relays/add.ts b/src/server/api/endpoints/admin/relays/add.ts
index 54d292ad55..e3b9a8afcb 100644
--- a/src/server/api/endpoints/admin/relays/add.ts
+++ b/src/server/api/endpoints/admin/relays/add.ts
@@ -1,8 +1,8 @@
import { URL } from 'url';
import $ from 'cafy';
-import define from '../../../define';
-import { addRelay } from '../../../../../services/relay';
-import { ApiError } from '../../../error';
+import define from '../../../define.js';
+import { addRelay } from '@/services/relay.js';
+import { ApiError } from '../../../error.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/relays/list.ts b/src/server/api/endpoints/admin/relays/list.ts
index 9f2474f10c..1707b8cd34 100644
--- a/src/server/api/endpoints/admin/relays/list.ts
+++ b/src/server/api/endpoints/admin/relays/list.ts
@@ -1,5 +1,5 @@
-import define from '../../../define';
-import { listRelay } from '../../../../../services/relay';
+import define from '../../../define.js';
+import { listRelay } from '@/services/relay.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/relays/remove.ts b/src/server/api/endpoints/admin/relays/remove.ts
index 220efab406..406257fdf2 100644
--- a/src/server/api/endpoints/admin/relays/remove.ts
+++ b/src/server/api/endpoints/admin/relays/remove.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
-import define from '../../../define';
-import { removeRelay } from '../../../../../services/relay';
+import define from '../../../define.js';
+import { removeRelay } from '@/services/relay.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/reset-password.ts b/src/server/api/endpoints/admin/reset-password.ts
index 6ff49d83d5..0bc32e07a1 100644
--- a/src/server/api/endpoints/admin/reset-password.ts
+++ b/src/server/api/endpoints/admin/reset-password.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
import * as bcrypt from 'bcryptjs';
import rndstr from 'rndstr';
-import { Users, UserProfiles } from '../../../../models';
+import { Users, UserProfiles } from '@/models/index.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/resolve-abuse-user-report.ts b/src/server/api/endpoints/admin/resolve-abuse-user-report.ts
index 38a5e81375..4c7ef37923 100644
--- a/src/server/api/endpoints/admin/resolve-abuse-user-report.ts
+++ b/src/server/api/endpoints/admin/resolve-abuse-user-report.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { AbuseUserReports } from '../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { AbuseUserReports } from '@/models/index.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/resync-chart.ts b/src/server/api/endpoints/admin/resync-chart.ts
index 84e19d37e6..613cdbdfad 100644
--- a/src/server/api/endpoints/admin/resync-chart.ts
+++ b/src/server/api/endpoints/admin/resync-chart.ts
@@ -1,6 +1,6 @@
-import define from '../../define';
-import { driveChart, notesChart, usersChart, instanceChart } from '../../../../services/chart';
-import { insertModerationLog } from '../../../../services/insert-moderation-log';
+import define from '../../define.js';
+import { driveChart, notesChart, usersChart, instanceChart } from '@/services/chart/index.js';
+import { insertModerationLog } from '@/services/insert-moderation-log.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/send-email.ts b/src/server/api/endpoints/admin/send-email.ts
index c0e77e1621..353add59ba 100644
--- a/src/server/api/endpoints/admin/send-email.ts
+++ b/src/server/api/endpoints/admin/send-email.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
-import define from '../../define';
-import { sendEmail } from '../../../../services/send-email';
+import define from '../../define.js';
+import { sendEmail } from '@/services/send-email.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/server-info.ts b/src/server/api/endpoints/admin/server-info.ts
index bb2d35e397..daac6395ea 100644
--- a/src/server/api/endpoints/admin/server-info.ts
+++ b/src/server/api/endpoints/admin/server-info.ts
@@ -1,8 +1,8 @@
import * as os from 'os';
import * as si from 'systeminformation';
import { getConnection } from 'typeorm';
-import define from '../../define';
-import { redisClient } from '../../../../db/redis';
+import define from '../../define.js';
+import { redisClient } from '../../../../db/redis.js';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/admin/show-moderation-logs.ts b/src/server/api/endpoints/admin/show-moderation-logs.ts
index cfceab9463..833c49ee64 100644
--- a/src/server/api/endpoints/admin/show-moderation-logs.ts
+++ b/src/server/api/endpoints/admin/show-moderation-logs.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { ModerationLogs } from '../../../../models';
-import { makePaginationQuery } from '../../common/make-pagination-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { ModerationLogs } from '@/models/index.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/show-user.ts b/src/server/api/endpoints/admin/show-user.ts
index b1132ac207..e4935fe90f 100644
--- a/src/server/api/endpoints/admin/show-user.ts
+++ b/src/server/api/endpoints/admin/show-user.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { Users } from '../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { Users } from '@/models/index.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/show-users.ts b/src/server/api/endpoints/admin/show-users.ts
index 7ea0e0e864..0ac2112f4b 100644
--- a/src/server/api/endpoints/admin/show-users.ts
+++ b/src/server/api/endpoints/admin/show-users.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
-import define from '../../define';
-import { Users } from '../../../../models';
+import define from '../../define.js';
+import { Users } from '@/models/index.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/silence-user.ts b/src/server/api/endpoints/admin/silence-user.ts
index 73f9d03b70..0a2b080aa4 100644
--- a/src/server/api/endpoints/admin/silence-user.ts
+++ b/src/server/api/endpoints/admin/silence-user.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { Users } from '../../../../models';
-import { insertModerationLog } from '../../../../services/insert-moderation-log';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { Users } from '@/models/index.js';
+import { insertModerationLog } from '@/services/insert-moderation-log.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/suspend-user.ts b/src/server/api/endpoints/admin/suspend-user.ts
index 912d6a5162..8026b9ec83 100644
--- a/src/server/api/endpoints/admin/suspend-user.ts
+++ b/src/server/api/endpoints/admin/suspend-user.ts
@@ -1,12 +1,12 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import deleteFollowing from '../../../../services/following/delete';
-import { Users, Followings, Notifications } from '../../../../models';
-import { User } from '../../../../models/entities/user';
-import { insertModerationLog } from '../../../../services/insert-moderation-log';
-import { doPostSuspend } from '../../../../services/suspend-user';
-import { publishUserEvent } from '@/services/stream';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import deleteFollowing from '@/services/following/delete.js';
+import { Users, Followings, Notifications } from '@/models/index.js';
+import { User } from '@/models/entities/user.js';
+import { insertModerationLog } from '@/services/insert-moderation-log.js';
+import { doPostSuspend } from '@/services/suspend-user.js';
+import { publishUserEvent } from '@/services/stream.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/unsilence-user.ts b/src/server/api/endpoints/admin/unsilence-user.ts
index 6083d87afc..1e581df494 100644
--- a/src/server/api/endpoints/admin/unsilence-user.ts
+++ b/src/server/api/endpoints/admin/unsilence-user.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { Users } from '../../../../models';
-import { insertModerationLog } from '../../../../services/insert-moderation-log';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { Users } from '@/models/index.js';
+import { insertModerationLog } from '@/services/insert-moderation-log.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/unsuspend-user.ts b/src/server/api/endpoints/admin/unsuspend-user.ts
index 6d015b51ab..e839377435 100644
--- a/src/server/api/endpoints/admin/unsuspend-user.ts
+++ b/src/server/api/endpoints/admin/unsuspend-user.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { Users } from '../../../../models';
-import { insertModerationLog } from '../../../../services/insert-moderation-log';
-import { doPostUnsuspend } from '../../../../services/unsuspend-user';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { Users } from '@/models/index.js';
+import { insertModerationLog } from '@/services/insert-moderation-log.js';
+import { doPostUnsuspend } from '@/services/unsuspend-user.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/update-meta.ts b/src/server/api/endpoints/admin/update-meta.ts
index 573f22822c..2d34b5a219 100644
--- a/src/server/api/endpoints/admin/update-meta.ts
+++ b/src/server/api/endpoints/admin/update-meta.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
-import define from '../../define';
+import define from '../../define.js';
import { getConnection } from 'typeorm';
-import { Meta } from '../../../../models/entities/meta';
-import { insertModerationLog } from '../../../../services/insert-moderation-log';
-import { DB_MAX_NOTE_TEXT_LENGTH } from '@/misc/hard-limits';
-import { ID } from '@/misc/cafy-id';
+import { Meta } from '@/models/entities/meta.js';
+import { insertModerationLog } from '@/services/insert-moderation-log.js';
+import { DB_MAX_NOTE_TEXT_LENGTH } from '@/misc/hard-limits.js';
+import { ID } from '@/misc/cafy-id.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/vacuum.ts b/src/server/api/endpoints/admin/vacuum.ts
index e041e65431..9ff9711a00 100644
--- a/src/server/api/endpoints/admin/vacuum.ts
+++ b/src/server/api/endpoints/admin/vacuum.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import define from '../../define';
+import define from '../../define.js';
import { getConnection } from 'typeorm';
-import { insertModerationLog } from '../../../../services/insert-moderation-log';
+import { insertModerationLog } from '@/services/insert-moderation-log.js';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/announcements.ts b/src/server/api/endpoints/announcements.ts
index 124682909c..83a8b3a71c 100644
--- a/src/server/api/endpoints/announcements.ts
+++ b/src/server/api/endpoints/announcements.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../define';
-import { Announcements, AnnouncementReads } from '../../../models';
-import { makePaginationQuery } from '../common/make-pagination-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../define.js';
+import { Announcements, AnnouncementReads } from '@/models/index.js';
+import { makePaginationQuery } from '../common/make-pagination-query.js';
export const meta = {
tags: ['meta'],
diff --git a/src/server/api/endpoints/antennas/create.ts b/src/server/api/endpoints/antennas/create.ts
index bff3c09f1c..2310ee6d51 100644
--- a/src/server/api/endpoints/antennas/create.ts
+++ b/src/server/api/endpoints/antennas/create.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
-import define from '../../define';
-import { genId } from '@/misc/gen-id';
-import { Antennas, UserLists, UserGroupJoinings } from '../../../../models';
-import { ID } from '@/misc/cafy-id';
-import { ApiError } from '../../error';
-import { publishInternalEvent } from '../../../../services/stream';
+import define from '../../define.js';
+import { genId } from '@/misc/gen-id.js';
+import { Antennas, UserLists, UserGroupJoinings } from '@/models/index.js';
+import { ID } from '@/misc/cafy-id.js';
+import { ApiError } from '../../error.js';
+import { publishInternalEvent } from '@/services/stream.js';
export const meta = {
tags: ['antennas'],
diff --git a/src/server/api/endpoints/antennas/delete.ts b/src/server/api/endpoints/antennas/delete.ts
index 10a212897b..59a29a9511 100644
--- a/src/server/api/endpoints/antennas/delete.ts
+++ b/src/server/api/endpoints/antennas/delete.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { Antennas } from '../../../../models';
-import { publishInternalEvent } from '../../../../services/stream';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { Antennas } from '@/models/index.js';
+import { publishInternalEvent } from '@/services/stream.js';
export const meta = {
tags: ['antennas'],
diff --git a/src/server/api/endpoints/antennas/list.ts b/src/server/api/endpoints/antennas/list.ts
index 6ae3c0cbb2..eceec945aa 100644
--- a/src/server/api/endpoints/antennas/list.ts
+++ b/src/server/api/endpoints/antennas/list.ts
@@ -1,5 +1,5 @@
-import define from '../../define';
-import { Antennas } from '../../../../models';
+import define from '../../define.js';
+import { Antennas } from '@/models/index.js';
export const meta = {
tags: ['antennas', 'account'],
diff --git a/src/server/api/endpoints/antennas/notes.ts b/src/server/api/endpoints/antennas/notes.ts
index aadb4261e3..11f69f354b 100644
--- a/src/server/api/endpoints/antennas/notes.ts
+++ b/src/server/api/endpoints/antennas/notes.ts
@@ -1,12 +1,12 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { Antennas, Notes, AntennaNotes } from '../../../../models';
-import { makePaginationQuery } from '../../common/make-pagination-query';
-import { generateVisibilityQuery } from '../../common/generate-visibility-query';
-import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
-import { ApiError } from '../../error';
-import { generateBlockedUserQuery } from '../../common/generate-block-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { Antennas, Notes, AntennaNotes } from '@/models/index.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
+import { generateVisibilityQuery } from '../../common/generate-visibility-query.js';
+import { generateMutedUserQuery } from '../../common/generate-muted-user-query.js';
+import { ApiError } from '../../error.js';
+import { generateBlockedUserQuery } from '../../common/generate-block-query.js';
export const meta = {
tags: ['antennas', 'account', 'notes'],
diff --git a/src/server/api/endpoints/antennas/show.ts b/src/server/api/endpoints/antennas/show.ts
index 36045e47a4..0d9a716bf4 100644
--- a/src/server/api/endpoints/antennas/show.ts
+++ b/src/server/api/endpoints/antennas/show.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { Antennas } from '../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { Antennas } from '@/models/index.js';
export const meta = {
tags: ['antennas', 'account'],
diff --git a/src/server/api/endpoints/antennas/update.ts b/src/server/api/endpoints/antennas/update.ts
index 9194c14795..37f3b01641 100644
--- a/src/server/api/endpoints/antennas/update.ts
+++ b/src/server/api/endpoints/antennas/update.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { Antennas, UserLists, UserGroupJoinings } from '../../../../models';
-import { publishInternalEvent } from '../../../../services/stream';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { Antennas, UserLists, UserGroupJoinings } from '@/models/index.js';
+import { publishInternalEvent } from '@/services/stream.js';
export const meta = {
tags: ['antennas'],
diff --git a/src/server/api/endpoints/ap/get.ts b/src/server/api/endpoints/ap/get.ts
index f2b4c2408f..33734b7cbd 100644
--- a/src/server/api/endpoints/ap/get.ts
+++ b/src/server/api/endpoints/ap/get.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import define from '../../define';
-import Resolver from '../../../../remote/activitypub/resolver';
-import { ApiError } from '../../error';
+import define from '../../define.js';
+import Resolver from '@/remote/activitypub/resolver.js';
+import { ApiError } from '../../error.js';
export const meta = {
tags: ['federation'],
diff --git a/src/server/api/endpoints/ap/show.ts b/src/server/api/endpoints/ap/show.ts
index 7f61055bfa..0472d28a65 100644
--- a/src/server/api/endpoints/ap/show.ts
+++ b/src/server/api/endpoints/ap/show.ts
@@ -1,16 +1,16 @@
import $ from 'cafy';
-import define from '../../define';
-import config from '@/config';
-import { createPerson } from '../../../../remote/activitypub/models/person';
-import { createNote } from '../../../../remote/activitypub/models/note';
-import Resolver from '../../../../remote/activitypub/resolver';
-import { ApiError } from '../../error';
-import { extractDbHost } from '@/misc/convert-host';
-import { Users, Notes } from '../../../../models';
-import { Note } from '../../../../models/entities/note';
-import { User } from '../../../../models/entities/user';
-import { fetchMeta } from '@/misc/fetch-meta';
-import { isActor, isPost, getApId } from '../../../../remote/activitypub/type';
+import define from '../../define.js';
+import config from '@/config/index.js';
+import { createPerson } from '@/remote/activitypub/models/person.js';
+import { createNote } from '@/remote/activitypub/models/note.js';
+import Resolver from '@/remote/activitypub/resolver.js';
+import { ApiError } from '../../error.js';
+import { extractDbHost } from '@/misc/convert-host.js';
+import { Users, Notes } from '@/models/index.js';
+import { Note } from '@/models/entities/note.js';
+import { User } from '@/models/entities/user.js';
+import { fetchMeta } from '@/misc/fetch-meta.js';
+import { isActor, isPost, getApId } from '@/remote/activitypub/type.js';
export const meta = {
tags: ['federation'],
diff --git a/src/server/api/endpoints/app/create.ts b/src/server/api/endpoints/app/create.ts
index 500567bf29..f013fa91ca 100644
--- a/src/server/api/endpoints/app/create.ts
+++ b/src/server/api/endpoints/app/create.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import define from '../../define';
-import { Apps } from '../../../../models';
-import { genId } from '@/misc/gen-id';
-import { unique } from '../../../../prelude/array';
-import { secureRndstr } from '@/misc/secure-rndstr';
+import define from '../../define.js';
+import { Apps } from '@/models/index.js';
+import { genId } from '@/misc/gen-id.js';
+import { unique } from '../../../../prelude/array.js';
+import { secureRndstr } from '@/misc/secure-rndstr.js';
export const meta = {
tags: ['app'],
diff --git a/src/server/api/endpoints/app/show.ts b/src/server/api/endpoints/app/show.ts
index 65f8c77981..919d65b12f 100644
--- a/src/server/api/endpoints/app/show.ts
+++ b/src/server/api/endpoints/app/show.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { Apps } from '../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { Apps } from '@/models/index.js';
export const meta = {
tags: ['app'],
diff --git a/src/server/api/endpoints/auth/accept.ts b/src/server/api/endpoints/auth/accept.ts
index ee0d0421c9..e4fcb6dc42 100644
--- a/src/server/api/endpoints/auth/accept.ts
+++ b/src/server/api/endpoints/auth/accept.ts
@@ -1,10 +1,10 @@
import * as crypto from 'crypto';
import $ from 'cafy';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { AuthSessions, AccessTokens, Apps } from '../../../../models';
-import { genId } from '@/misc/gen-id';
-import { secureRndstr } from '@/misc/secure-rndstr';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { AuthSessions, AccessTokens, Apps } from '@/models/index.js';
+import { genId } from '@/misc/gen-id.js';
+import { secureRndstr } from '@/misc/secure-rndstr.js';
export const meta = {
tags: ['auth'],
diff --git a/src/server/api/endpoints/auth/session/generate.ts b/src/server/api/endpoints/auth/session/generate.ts
index 42f9e25c78..4ea5967b08 100644
--- a/src/server/api/endpoints/auth/session/generate.ts
+++ b/src/server/api/endpoints/auth/session/generate.ts
@@ -1,10 +1,10 @@
import { v4 as uuid } from 'uuid';
import $ from 'cafy';
-import config from '@/config';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { Apps, AuthSessions } from '../../../../../models';
-import { genId } from '@/misc/gen-id';
+import config from '@/config/index.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { Apps, AuthSessions } from '@/models/index.js';
+import { genId } from '@/misc/gen-id.js';
export const meta = {
tags: ['auth'],
diff --git a/src/server/api/endpoints/auth/session/show.ts b/src/server/api/endpoints/auth/session/show.ts
index fd20884c02..420facb8fb 100644
--- a/src/server/api/endpoints/auth/session/show.ts
+++ b/src/server/api/endpoints/auth/session/show.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { AuthSessions } from '../../../../../models';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { AuthSessions } from '@/models/index.js';
export const meta = {
tags: ['auth'],
diff --git a/src/server/api/endpoints/auth/session/userkey.ts b/src/server/api/endpoints/auth/session/userkey.ts
index 7059aacbea..240ff57f1e 100644
--- a/src/server/api/endpoints/auth/session/userkey.ts
+++ b/src/server/api/endpoints/auth/session/userkey.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { Apps, AuthSessions, AccessTokens, Users } from '../../../../../models';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { Apps, AuthSessions, AccessTokens, Users } from '@/models/index.js';
export const meta = {
tags: ['auth'],
diff --git a/src/server/api/endpoints/blocking/create.ts b/src/server/api/endpoints/blocking/create.ts
index dd976a7bf1..c82b6eb920 100644
--- a/src/server/api/endpoints/blocking/create.ts
+++ b/src/server/api/endpoints/blocking/create.ts
@@ -1,11 +1,11 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
+import { ID } from '@/misc/cafy-id.js';
import * as ms from 'ms';
-import create from '../../../../services/blocking/create';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { getUser } from '../../common/getters';
-import { Blockings, NoteWatchings, Users } from '../../../../models';
+import create from '@/services/blocking/create.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { getUser } from '../../common/getters.js';
+import { Blockings, NoteWatchings, Users } from '@/models/index.js';
export const meta = {
tags: ['account'],
diff --git a/src/server/api/endpoints/blocking/delete.ts b/src/server/api/endpoints/blocking/delete.ts
index c69c8b14a7..9d075f272c 100644
--- a/src/server/api/endpoints/blocking/delete.ts
+++ b/src/server/api/endpoints/blocking/delete.ts
@@ -1,11 +1,11 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
+import { ID } from '@/misc/cafy-id.js';
import * as ms from 'ms';
-import deleteBlocking from '../../../../services/blocking/delete';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { getUser } from '../../common/getters';
-import { Blockings, Users } from '../../../../models';
+import deleteBlocking from '@/services/blocking/delete.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { getUser } from '../../common/getters.js';
+import { Blockings, Users } from '@/models/index.js';
export const meta = {
tags: ['account'],
diff --git a/src/server/api/endpoints/blocking/list.ts b/src/server/api/endpoints/blocking/list.ts
index db849338ac..a616d0b7c1 100644
--- a/src/server/api/endpoints/blocking/list.ts
+++ b/src/server/api/endpoints/blocking/list.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { Blockings } from '../../../../models';
-import { makePaginationQuery } from '../../common/make-pagination-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { Blockings } from '@/models/index.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
export const meta = {
tags: ['account'],
diff --git a/src/server/api/endpoints/channels/create.ts b/src/server/api/endpoints/channels/create.ts
index c6dc68faf8..48348cf35a 100644
--- a/src/server/api/endpoints/channels/create.ts
+++ b/src/server/api/endpoints/channels/create.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { Channels, DriveFiles } from '../../../../models';
-import { Channel } from '../../../../models/entities/channel';
-import { genId } from '@/misc/gen-id';
-import { ID } from '@/misc/cafy-id';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { Channels, DriveFiles } from '@/models/index.js';
+import { Channel } from '@/models/entities/channel.js';
+import { genId } from '@/misc/gen-id.js';
+import { ID } from '@/misc/cafy-id.js';
export const meta = {
tags: ['channels'],
diff --git a/src/server/api/endpoints/channels/featured.ts b/src/server/api/endpoints/channels/featured.ts
index abb0a19e2d..7cfc33e639 100644
--- a/src/server/api/endpoints/channels/featured.ts
+++ b/src/server/api/endpoints/channels/featured.ts
@@ -1,5 +1,5 @@
-import define from '../../define';
-import { Channels } from '../../../../models';
+import define from '../../define.js';
+import { Channels } from '@/models/index.js';
export const meta = {
tags: ['channels'],
diff --git a/src/server/api/endpoints/channels/follow.ts b/src/server/api/endpoints/channels/follow.ts
index b264f7451a..37fb8ff1b4 100644
--- a/src/server/api/endpoints/channels/follow.ts
+++ b/src/server/api/endpoints/channels/follow.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { Channels, ChannelFollowings } from '../../../../models';
-import { genId } from '@/misc/gen-id';
-import { publishUserEvent } from '../../../../services/stream';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { Channels, ChannelFollowings } from '@/models/index.js';
+import { genId } from '@/misc/gen-id.js';
+import { publishUserEvent } from '@/services/stream.js';
export const meta = {
tags: ['channels'],
diff --git a/src/server/api/endpoints/channels/followed.ts b/src/server/api/endpoints/channels/followed.ts
index 7f0cfe4941..7fc83c933d 100644
--- a/src/server/api/endpoints/channels/followed.ts
+++ b/src/server/api/endpoints/channels/followed.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { Channels, ChannelFollowings } from '../../../../models';
-import { makePaginationQuery } from '../../common/make-pagination-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { Channels, ChannelFollowings } from '@/models/index.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
export const meta = {
tags: ['channels', 'account'],
diff --git a/src/server/api/endpoints/channels/owned.ts b/src/server/api/endpoints/channels/owned.ts
index 4f538f651e..2f08e52615 100644
--- a/src/server/api/endpoints/channels/owned.ts
+++ b/src/server/api/endpoints/channels/owned.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { Channels } from '../../../../models';
-import { makePaginationQuery } from '../../common/make-pagination-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { Channels } from '@/models/index.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
export const meta = {
tags: ['channels', 'account'],
diff --git a/src/server/api/endpoints/channels/show.ts b/src/server/api/endpoints/channels/show.ts
index d5f182da11..f2c351f557 100644
--- a/src/server/api/endpoints/channels/show.ts
+++ b/src/server/api/endpoints/channels/show.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { Channels } from '../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { Channels } from '@/models/index.js';
export const meta = {
tags: ['channels'],
diff --git a/src/server/api/endpoints/channels/timeline.ts b/src/server/api/endpoints/channels/timeline.ts
index 9e5ecdeeb3..3032e7ee6f 100644
--- a/src/server/api/endpoints/channels/timeline.ts
+++ b/src/server/api/endpoints/channels/timeline.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { Notes, Channels } from '../../../../models';
-import { makePaginationQuery } from '../../common/make-pagination-query';
-import { activeUsersChart } from '../../../../services/chart';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { Notes, Channels } from '@/models/index.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
+import { activeUsersChart } from '@/services/chart/index.js';
export const meta = {
tags: ['notes', 'channels'],
diff --git a/src/server/api/endpoints/channels/unfollow.ts b/src/server/api/endpoints/channels/unfollow.ts
index 116af50337..1c2ab307af 100644
--- a/src/server/api/endpoints/channels/unfollow.ts
+++ b/src/server/api/endpoints/channels/unfollow.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { Channels, ChannelFollowings } from '../../../../models';
-import { publishUserEvent } from '../../../../services/stream';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { Channels, ChannelFollowings } from '@/models/index.js';
+import { publishUserEvent } from '@/services/stream.js';
export const meta = {
tags: ['channels'],
diff --git a/src/server/api/endpoints/channels/update.ts b/src/server/api/endpoints/channels/update.ts
index 1495297ee5..255c664307 100644
--- a/src/server/api/endpoints/channels/update.ts
+++ b/src/server/api/endpoints/channels/update.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { Channels, DriveFiles } from '../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { Channels, DriveFiles } from '@/models/index.js';
export const meta = {
tags: ['channels'],
diff --git a/src/server/api/endpoints/charts/active-users.ts b/src/server/api/endpoints/charts/active-users.ts
index fb177e5c94..dc080d3bc6 100644
--- a/src/server/api/endpoints/charts/active-users.ts
+++ b/src/server/api/endpoints/charts/active-users.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import define from '../../define';
-import { convertLog } from '../../../../services/chart/core';
-import { activeUsersChart } from '../../../../services/chart';
+import define from '../../define.js';
+import { convertLog } from '@/services/chart/core.js';
+import { activeUsersChart } from '@/services/chart/index.js';
export const meta = {
tags: ['charts', 'users'],
diff --git a/src/server/api/endpoints/charts/drive.ts b/src/server/api/endpoints/charts/drive.ts
index ba6556c597..5bad71a9fa 100644
--- a/src/server/api/endpoints/charts/drive.ts
+++ b/src/server/api/endpoints/charts/drive.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import define from '../../define';
-import { convertLog } from '../../../../services/chart/core';
-import { driveChart } from '../../../../services/chart';
+import define from '../../define.js';
+import { convertLog } from '@/services/chart/core.js';
+import { driveChart } from '@/services/chart/index.js';
export const meta = {
tags: ['charts', 'drive'],
diff --git a/src/server/api/endpoints/charts/federation.ts b/src/server/api/endpoints/charts/federation.ts
index 46eb87ac02..83ec290023 100644
--- a/src/server/api/endpoints/charts/federation.ts
+++ b/src/server/api/endpoints/charts/federation.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import define from '../../define';
-import { convertLog } from '../../../../services/chart/core';
-import { federationChart } from '../../../../services/chart';
+import define from '../../define.js';
+import { convertLog } from '@/services/chart/core.js';
+import { federationChart } from '@/services/chart/index.js';
export const meta = {
tags: ['charts'],
diff --git a/src/server/api/endpoints/charts/hashtag.ts b/src/server/api/endpoints/charts/hashtag.ts
index 5c2875ddd2..12d3c2ba4c 100644
--- a/src/server/api/endpoints/charts/hashtag.ts
+++ b/src/server/api/endpoints/charts/hashtag.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import define from '../../define';
-import { convertLog } from '../../../../services/chart/core';
-import { hashtagChart } from '../../../../services/chart';
+import define from '../../define.js';
+import { convertLog } from '@/services/chart/core.js';
+import { hashtagChart } from '@/services/chart/index.js';
export const meta = {
tags: ['charts', 'hashtags'],
diff --git a/src/server/api/endpoints/charts/instance.ts b/src/server/api/endpoints/charts/instance.ts
index 9375992d21..ed3f8bbe93 100644
--- a/src/server/api/endpoints/charts/instance.ts
+++ b/src/server/api/endpoints/charts/instance.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import define from '../../define';
-import { convertLog } from '../../../../services/chart/core';
-import { instanceChart } from '../../../../services/chart';
+import define from '../../define.js';
+import { convertLog } from '@/services/chart/core.js';
+import { instanceChart } from '@/services/chart/index.js';
export const meta = {
tags: ['charts'],
diff --git a/src/server/api/endpoints/charts/network.ts b/src/server/api/endpoints/charts/network.ts
index d1fd404239..a4700f045a 100644
--- a/src/server/api/endpoints/charts/network.ts
+++ b/src/server/api/endpoints/charts/network.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import define from '../../define';
-import { convertLog } from '../../../../services/chart/core';
-import { networkChart } from '../../../../services/chart';
+import define from '../../define.js';
+import { convertLog } from '@/services/chart/core.js';
+import { networkChart } from '@/services/chart/index.js';
export const meta = {
tags: ['charts'],
diff --git a/src/server/api/endpoints/charts/notes.ts b/src/server/api/endpoints/charts/notes.ts
index 7141fe3b0a..7c92a11882 100644
--- a/src/server/api/endpoints/charts/notes.ts
+++ b/src/server/api/endpoints/charts/notes.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import define from '../../define';
-import { convertLog } from '../../../../services/chart/core';
-import { notesChart } from '../../../../services/chart';
+import define from '../../define.js';
+import { convertLog } from '@/services/chart/core.js';
+import { notesChart } from '@/services/chart/index.js';
export const meta = {
tags: ['charts', 'notes'],
diff --git a/src/server/api/endpoints/charts/user/drive.ts b/src/server/api/endpoints/charts/user/drive.ts
index bacb022c81..8649ac69c7 100644
--- a/src/server/api/endpoints/charts/user/drive.ts
+++ b/src/server/api/endpoints/charts/user/drive.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import define from '../../../define';
-import { ID } from '@/misc/cafy-id';
-import { convertLog } from '../../../../../services/chart/core';
-import { perUserDriveChart } from '../../../../../services/chart';
+import define from '../../../define.js';
+import { ID } from '@/misc/cafy-id.js';
+import { convertLog } from '@/services/chart/core.js';
+import { perUserDriveChart } from '@/services/chart/index.js';
export const meta = {
tags: ['charts', 'drive', 'users'],
diff --git a/src/server/api/endpoints/charts/user/following.ts b/src/server/api/endpoints/charts/user/following.ts
index ce41c231ba..8905be2d9b 100644
--- a/src/server/api/endpoints/charts/user/following.ts
+++ b/src/server/api/endpoints/charts/user/following.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import define from '../../../define';
-import { ID } from '@/misc/cafy-id';
-import { convertLog } from '../../../../../services/chart/core';
-import { perUserFollowingChart } from '../../../../../services/chart';
+import define from '../../../define.js';
+import { ID } from '@/misc/cafy-id.js';
+import { convertLog } from '@/services/chart/core.js';
+import { perUserFollowingChart } from '@/services/chart/index.js';
export const meta = {
tags: ['charts', 'users', 'following'],
diff --git a/src/server/api/endpoints/charts/user/notes.ts b/src/server/api/endpoints/charts/user/notes.ts
index 470b7274bd..9c6152fa9e 100644
--- a/src/server/api/endpoints/charts/user/notes.ts
+++ b/src/server/api/endpoints/charts/user/notes.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import define from '../../../define';
-import { ID } from '@/misc/cafy-id';
-import { convertLog } from '../../../../../services/chart/core';
-import { perUserNotesChart } from '../../../../../services/chart';
+import define from '../../../define.js';
+import { ID } from '@/misc/cafy-id.js';
+import { convertLog } from '@/services/chart/core.js';
+import { perUserNotesChart } from '@/services/chart/index.js';
export const meta = {
tags: ['charts', 'users', 'notes'],
diff --git a/src/server/api/endpoints/charts/user/reactions.ts b/src/server/api/endpoints/charts/user/reactions.ts
index 4ebe4623c0..28629a0259 100644
--- a/src/server/api/endpoints/charts/user/reactions.ts
+++ b/src/server/api/endpoints/charts/user/reactions.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import define from '../../../define';
-import { ID } from '@/misc/cafy-id';
-import { convertLog } from '../../../../../services/chart/core';
-import { perUserReactionsChart } from '../../../../../services/chart';
+import define from '../../../define.js';
+import { ID } from '@/misc/cafy-id.js';
+import { convertLog } from '@/services/chart/core.js';
+import { perUserReactionsChart } from '@/services/chart/index.js';
export const meta = {
tags: ['charts', 'users', 'reactions'],
diff --git a/src/server/api/endpoints/charts/users.ts b/src/server/api/endpoints/charts/users.ts
index 4246a18e59..8d312e1a14 100644
--- a/src/server/api/endpoints/charts/users.ts
+++ b/src/server/api/endpoints/charts/users.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import define from '../../define';
-import { convertLog } from '../../../../services/chart/core';
-import { usersChart } from '../../../../services/chart';
+import define from '../../define.js';
+import { convertLog } from '@/services/chart/core.js';
+import { usersChart } from '@/services/chart/index.js';
export const meta = {
tags: ['charts', 'users'],
diff --git a/src/server/api/endpoints/clips/add-note.ts b/src/server/api/endpoints/clips/add-note.ts
index 3d72def4f5..909d05bc82 100644
--- a/src/server/api/endpoints/clips/add-note.ts
+++ b/src/server/api/endpoints/clips/add-note.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { ClipNotes, Clips } from '../../../../models';
-import { ApiError } from '../../error';
-import { genId } from '@/misc/gen-id';
-import { getNote } from '../../common/getters';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { ClipNotes, Clips } from '@/models/index.js';
+import { ApiError } from '../../error.js';
+import { genId } from '@/misc/gen-id.js';
+import { getNote } from '../../common/getters.js';
export const meta = {
tags: ['account', 'notes', 'clips'],
diff --git a/src/server/api/endpoints/clips/create.ts b/src/server/api/endpoints/clips/create.ts
index fb2a77fe5b..06286ed8ec 100644
--- a/src/server/api/endpoints/clips/create.ts
+++ b/src/server/api/endpoints/clips/create.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import define from '../../define';
-import { genId } from '@/misc/gen-id';
-import { Clips } from '../../../../models';
+import define from '../../define.js';
+import { genId } from '@/misc/gen-id.js';
+import { Clips } from '@/models/index.js';
export const meta = {
tags: ['clips'],
diff --git a/src/server/api/endpoints/clips/delete.ts b/src/server/api/endpoints/clips/delete.ts
index 20b2addb76..93e69dae34 100644
--- a/src/server/api/endpoints/clips/delete.ts
+++ b/src/server/api/endpoints/clips/delete.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { Clips } from '../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { Clips } from '@/models/index.js';
export const meta = {
tags: ['clips'],
diff --git a/src/server/api/endpoints/clips/list.ts b/src/server/api/endpoints/clips/list.ts
index 6b90b114df..1eeac8b45b 100644
--- a/src/server/api/endpoints/clips/list.ts
+++ b/src/server/api/endpoints/clips/list.ts
@@ -1,5 +1,5 @@
-import define from '../../define';
-import { Clips } from '../../../../models';
+import define from '../../define.js';
+import { Clips } from '@/models/index.js';
export const meta = {
tags: ['clips', 'account'],
diff --git a/src/server/api/endpoints/clips/notes.ts b/src/server/api/endpoints/clips/notes.ts
index 4bece5a2c8..41fa2b2bcc 100644
--- a/src/server/api/endpoints/clips/notes.ts
+++ b/src/server/api/endpoints/clips/notes.ts
@@ -1,12 +1,12 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { ClipNotes, Clips, Notes } from '../../../../models';
-import { makePaginationQuery } from '../../common/make-pagination-query';
-import { generateVisibilityQuery } from '../../common/generate-visibility-query';
-import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
-import { ApiError } from '../../error';
-import { generateBlockedUserQuery } from '../../common/generate-block-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { ClipNotes, Clips, Notes } from '@/models/index.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
+import { generateVisibilityQuery } from '../../common/generate-visibility-query.js';
+import { generateMutedUserQuery } from '../../common/generate-muted-user-query.js';
+import { ApiError } from '../../error.js';
+import { generateBlockedUserQuery } from '../../common/generate-block-query.js';
export const meta = {
tags: ['account', 'notes', 'clips'],
diff --git a/src/server/api/endpoints/clips/show.ts b/src/server/api/endpoints/clips/show.ts
index 43d2719129..ab368e6a09 100644
--- a/src/server/api/endpoints/clips/show.ts
+++ b/src/server/api/endpoints/clips/show.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { Clips } from '../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { Clips } from '@/models/index.js';
export const meta = {
tags: ['clips', 'account'],
diff --git a/src/server/api/endpoints/clips/update.ts b/src/server/api/endpoints/clips/update.ts
index a368174e76..07a9d585c7 100644
--- a/src/server/api/endpoints/clips/update.ts
+++ b/src/server/api/endpoints/clips/update.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { Clips } from '../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { Clips } from '@/models/index.js';
export const meta = {
tags: ['clips'],
diff --git a/src/server/api/endpoints/drive.ts b/src/server/api/endpoints/drive.ts
index 2feb72ae12..6a99cd1246 100644
--- a/src/server/api/endpoints/drive.ts
+++ b/src/server/api/endpoints/drive.ts
@@ -1,6 +1,6 @@
-import define from '../define';
-import { fetchMeta } from '@/misc/fetch-meta';
-import { DriveFiles } from '../../../models';
+import define from '../define.js';
+import { fetchMeta } from '@/misc/fetch-meta.js';
+import { DriveFiles } from '@/models/index.js';
export const meta = {
tags: ['drive', 'account'],
diff --git a/src/server/api/endpoints/drive/files.ts b/src/server/api/endpoints/drive/files.ts
index 1e821b0085..60cf3eb948 100644
--- a/src/server/api/endpoints/drive/files.ts
+++ b/src/server/api/endpoints/drive/files.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { DriveFiles } from '../../../../models';
-import { makePaginationQuery } from '../../common/make-pagination-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { DriveFiles } from '@/models/index.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
export const meta = {
tags: ['drive'],
diff --git a/src/server/api/endpoints/drive/files/attached-notes.ts b/src/server/api/endpoints/drive/files/attached-notes.ts
index dafbf30fbb..5aafe0ea1f 100644
--- a/src/server/api/endpoints/drive/files/attached-notes.ts
+++ b/src/server/api/endpoints/drive/files/attached-notes.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { DriveFiles, Notes } from '../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { DriveFiles, Notes } from '@/models/index.js';
export const meta = {
tags: ['drive', 'notes'],
diff --git a/src/server/api/endpoints/drive/files/check-existence.ts b/src/server/api/endpoints/drive/files/check-existence.ts
index b20be44072..a53a4f7f91 100644
--- a/src/server/api/endpoints/drive/files/check-existence.ts
+++ b/src/server/api/endpoints/drive/files/check-existence.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
-import define from '../../../define';
-import { DriveFiles } from '../../../../../models';
+import define from '../../../define.js';
+import { DriveFiles } from '@/models/index.js';
export const meta = {
tags: ['drive'],
diff --git a/src/server/api/endpoints/drive/files/create.ts b/src/server/api/endpoints/drive/files/create.ts
index a8f6b92014..1f7b712439 100644
--- a/src/server/api/endpoints/drive/files/create.ts
+++ b/src/server/api/endpoints/drive/files/create.ts
@@ -1,11 +1,11 @@
import * as ms from 'ms';
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import create from '../../../../../services/drive/add-file';
-import define from '../../../define';
-import { apiLogger } from '../../../logger';
-import { ApiError } from '../../../error';
-import { DriveFiles } from '../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import create from '@/services/drive/add-file.js';
+import define from '../../../define.js';
+import { apiLogger } from '../../../logger.js';
+import { ApiError } from '../../../error.js';
+import { DriveFiles } from '@/models/index.js';
export const meta = {
tags: ['drive'],
diff --git a/src/server/api/endpoints/drive/files/delete.ts b/src/server/api/endpoints/drive/files/delete.ts
index 520078948c..ae1381ee13 100644
--- a/src/server/api/endpoints/drive/files/delete.ts
+++ b/src/server/api/endpoints/drive/files/delete.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import { deleteFile } from '../../../../../services/drive/delete-file';
-import { publishDriveStream } from '../../../../../services/stream';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { DriveFiles } from '../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import { deleteFile } from '@/services/drive/delete-file.js';
+import { publishDriveStream } from '@/services/stream.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { DriveFiles } from '@/models/index.js';
export const meta = {
tags: ['drive'],
diff --git a/src/server/api/endpoints/drive/files/find-by-hash.ts b/src/server/api/endpoints/drive/files/find-by-hash.ts
index ef0077392e..492a7ee593 100644
--- a/src/server/api/endpoints/drive/files/find-by-hash.ts
+++ b/src/server/api/endpoints/drive/files/find-by-hash.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
-import define from '../../../define';
-import { DriveFiles } from '../../../../../models';
+import define from '../../../define.js';
+import { DriveFiles } from '@/models/index.js';
export const meta = {
tags: ['drive'],
diff --git a/src/server/api/endpoints/drive/files/find.ts b/src/server/api/endpoints/drive/files/find.ts
index b7f2571453..724424500d 100644
--- a/src/server/api/endpoints/drive/files/find.ts
+++ b/src/server/api/endpoints/drive/files/find.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { DriveFiles } from '../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { DriveFiles } from '@/models/index.js';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/drive/files/show.ts b/src/server/api/endpoints/drive/files/show.ts
index 33e88fa817..7a2ea1b76f 100644
--- a/src/server/api/endpoints/drive/files/show.ts
+++ b/src/server/api/endpoints/drive/files/show.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { DriveFile } from '../../../../../models/entities/drive-file';
-import { DriveFiles } from '../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { DriveFile } from '@/models/entities/drive-file.js';
+import { DriveFiles } from '@/models/index.js';
export const meta = {
tags: ['drive'],
diff --git a/src/server/api/endpoints/drive/files/update.ts b/src/server/api/endpoints/drive/files/update.ts
index 29b4ba7a45..d75da00119 100644
--- a/src/server/api/endpoints/drive/files/update.ts
+++ b/src/server/api/endpoints/drive/files/update.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import { publishDriveStream } from '../../../../../services/stream';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { DriveFiles, DriveFolders } from '../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import { publishDriveStream } from '@/services/stream.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { DriveFiles, DriveFolders } from '@/models/index.js';
export const meta = {
tags: ['drive'],
diff --git a/src/server/api/endpoints/drive/files/upload-from-url.ts b/src/server/api/endpoints/drive/files/upload-from-url.ts
index 8dfc86e660..5f0c461dc3 100644
--- a/src/server/api/endpoints/drive/files/upload-from-url.ts
+++ b/src/server/api/endpoints/drive/files/upload-from-url.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
+import { ID } from '@/misc/cafy-id.js';
import * as ms from 'ms';
-import uploadFromUrl from '../../../../../services/drive/upload-from-url';
-import define from '../../../define';
-import { DriveFiles } from '../../../../../models';
-import { publishMainStream } from '../../../../../services/stream';
+import uploadFromUrl from '@/services/drive/upload-from-url.js';
+import define from '../../../define.js';
+import { DriveFiles } from '@/models/index.js';
+import { publishMainStream } from '@/services/stream.js';
export const meta = {
tags: ['drive'],
diff --git a/src/server/api/endpoints/drive/folders.ts b/src/server/api/endpoints/drive/folders.ts
index c446d546cc..5e0561d579 100644
--- a/src/server/api/endpoints/drive/folders.ts
+++ b/src/server/api/endpoints/drive/folders.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { DriveFolders } from '../../../../models';
-import { makePaginationQuery } from '../../common/make-pagination-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { DriveFolders } from '@/models/index.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
export const meta = {
tags: ['drive'],
diff --git a/src/server/api/endpoints/drive/folders/create.ts b/src/server/api/endpoints/drive/folders/create.ts
index e39f8f2cee..5167ac0d19 100644
--- a/src/server/api/endpoints/drive/folders/create.ts
+++ b/src/server/api/endpoints/drive/folders/create.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import { publishDriveStream } from '../../../../../services/stream';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { DriveFolders } from '../../../../../models';
-import { genId } from '@/misc/gen-id';
+import { ID } from '@/misc/cafy-id.js';
+import { publishDriveStream } from '@/services/stream.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { DriveFolders } from '@/models/index.js';
+import { genId } from '@/misc/gen-id.js';
export const meta = {
tags: ['drive'],
diff --git a/src/server/api/endpoints/drive/folders/delete.ts b/src/server/api/endpoints/drive/folders/delete.ts
index 253563a3ef..3f2ef8f2c0 100644
--- a/src/server/api/endpoints/drive/folders/delete.ts
+++ b/src/server/api/endpoints/drive/folders/delete.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { publishDriveStream } from '../../../../../services/stream';
-import { ApiError } from '../../../error';
-import { DriveFolders, DriveFiles } from '../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { publishDriveStream } from '@/services/stream.js';
+import { ApiError } from '../../../error.js';
+import { DriveFolders, DriveFiles } from '@/models/index.js';
export const meta = {
tags: ['drive'],
diff --git a/src/server/api/endpoints/drive/folders/find.ts b/src/server/api/endpoints/drive/folders/find.ts
index c8e7639e63..7299dceccf 100644
--- a/src/server/api/endpoints/drive/folders/find.ts
+++ b/src/server/api/endpoints/drive/folders/find.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { DriveFolders } from '../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { DriveFolders } from '@/models/index.js';
export const meta = {
tags: ['drive'],
diff --git a/src/server/api/endpoints/drive/folders/show.ts b/src/server/api/endpoints/drive/folders/show.ts
index fe1326da75..7d46e853ba 100644
--- a/src/server/api/endpoints/drive/folders/show.ts
+++ b/src/server/api/endpoints/drive/folders/show.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { DriveFolders } from '../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { DriveFolders } from '@/models/index.js';
export const meta = {
tags: ['drive'],
diff --git a/src/server/api/endpoints/drive/folders/update.ts b/src/server/api/endpoints/drive/folders/update.ts
index 9dfe33517e..6598b6a8a4 100644
--- a/src/server/api/endpoints/drive/folders/update.ts
+++ b/src/server/api/endpoints/drive/folders/update.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import { publishDriveStream } from '../../../../../services/stream';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { DriveFolders } from '../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import { publishDriveStream } from '@/services/stream.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { DriveFolders } from '@/models/index.js';
export const meta = {
tags: ['drive'],
diff --git a/src/server/api/endpoints/drive/stream.ts b/src/server/api/endpoints/drive/stream.ts
index ca88acf5fe..da70b7b36c 100644
--- a/src/server/api/endpoints/drive/stream.ts
+++ b/src/server/api/endpoints/drive/stream.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { DriveFiles } from '../../../../models';
-import { makePaginationQuery } from '../../common/make-pagination-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { DriveFiles } from '@/models/index.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
export const meta = {
tags: ['drive'],
diff --git a/src/server/api/endpoints/endpoint.ts b/src/server/api/endpoints/endpoint.ts
index 1a04d8bee8..c8fb0f5f34 100644
--- a/src/server/api/endpoints/endpoint.ts
+++ b/src/server/api/endpoints/endpoint.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
-import define from '../define';
-import endpoints from '../endpoints';
+import define from '../define.js';
+import endpoints from '../endpoints.js';
export const meta = {
requireCredential: false as const,
diff --git a/src/server/api/endpoints/endpoints.ts b/src/server/api/endpoints/endpoints.ts
index f7b9757d8d..cd7bf45c4f 100644
--- a/src/server/api/endpoints/endpoints.ts
+++ b/src/server/api/endpoints/endpoints.ts
@@ -1,5 +1,5 @@
-import define from '../define';
-import endpoints from '../endpoints';
+import define from '../define.js';
+import endpoints from '../endpoints.js';
export const meta = {
requireCredential: false as const,
diff --git a/src/server/api/endpoints/federation/dns.ts b/src/server/api/endpoints/federation/dns.ts
index a188f46ac1..4605cd5576 100644
--- a/src/server/api/endpoints/federation/dns.ts
+++ b/src/server/api/endpoints/federation/dns.ts
@@ -1,8 +1,8 @@
import { promises as dns } from 'dns';
import $ from 'cafy';
-import define from '../../define';
-import { Instances } from '../../../../models';
-import { toPuny } from '@/misc/convert-host';
+import define from '../../define.js';
+import { Instances } from '@/models/index.js';
+import { toPuny } from '@/misc/convert-host.js';
const resolver = new dns.Resolver();
resolver.setServers(['1.1.1.1']);
diff --git a/src/server/api/endpoints/federation/followers.ts b/src/server/api/endpoints/federation/followers.ts
index 727eada682..1c74f45030 100644
--- a/src/server/api/endpoints/federation/followers.ts
+++ b/src/server/api/endpoints/federation/followers.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { Followings } from '../../../../models';
-import { makePaginationQuery } from '../../common/make-pagination-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { Followings } from '@/models/index.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
export const meta = {
tags: ['federation'],
diff --git a/src/server/api/endpoints/federation/following.ts b/src/server/api/endpoints/federation/following.ts
index c6bc71a982..b30f67af39 100644
--- a/src/server/api/endpoints/federation/following.ts
+++ b/src/server/api/endpoints/federation/following.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { Followings } from '../../../../models';
-import { makePaginationQuery } from '../../common/make-pagination-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { Followings } from '@/models/index.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
export const meta = {
tags: ['federation'],
diff --git a/src/server/api/endpoints/federation/instances.ts b/src/server/api/endpoints/federation/instances.ts
index 29515f0eb4..f16c04f5d5 100644
--- a/src/server/api/endpoints/federation/instances.ts
+++ b/src/server/api/endpoints/federation/instances.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import config from '@/config';
-import define from '../../define';
-import { Instances } from '../../../../models';
-import { fetchMeta } from '@/misc/fetch-meta';
+import config from '@/config/index.js';
+import define from '../../define.js';
+import { Instances } from '@/models/index.js';
+import { fetchMeta } from '@/misc/fetch-meta.js';
export const meta = {
tags: ['federation'],
diff --git a/src/server/api/endpoints/federation/show-instance.ts b/src/server/api/endpoints/federation/show-instance.ts
index 549d7340fb..d613a940ab 100644
--- a/src/server/api/endpoints/federation/show-instance.ts
+++ b/src/server/api/endpoints/federation/show-instance.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import define from '../../define';
-import { Instances } from '../../../../models';
-import { toPuny } from '@/misc/convert-host';
+import define from '../../define.js';
+import { Instances } from '@/models/index.js';
+import { toPuny } from '@/misc/convert-host.js';
export const meta = {
tags: ['federation'],
diff --git a/src/server/api/endpoints/federation/update-remote-user.ts b/src/server/api/endpoints/federation/update-remote-user.ts
index c4a6db0dd2..b8a383410d 100644
--- a/src/server/api/endpoints/federation/update-remote-user.ts
+++ b/src/server/api/endpoints/federation/update-remote-user.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { getRemoteUser } from '../../common/getters';
-import { updatePerson } from '../../../../remote/activitypub/models/person';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { getRemoteUser } from '../../common/getters.js';
+import { updatePerson } from '@/remote/activitypub/models/person.js';
export const meta = {
tags: ['federation'],
diff --git a/src/server/api/endpoints/federation/users.ts b/src/server/api/endpoints/federation/users.ts
index 77d9e2e076..9c7390b68e 100644
--- a/src/server/api/endpoints/federation/users.ts
+++ b/src/server/api/endpoints/federation/users.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { Users } from '../../../../models';
-import { makePaginationQuery } from '../../common/make-pagination-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { Users } from '@/models/index.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
export const meta = {
tags: ['federation'],
diff --git a/src/server/api/endpoints/following/create.ts b/src/server/api/endpoints/following/create.ts
index e4f9a86d99..91b49b481d 100644
--- a/src/server/api/endpoints/following/create.ts
+++ b/src/server/api/endpoints/following/create.ts
@@ -1,11 +1,11 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
+import { ID } from '@/misc/cafy-id.js';
import * as ms from 'ms';
-import create from '../../../../services/following/create';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { getUser } from '../../common/getters';
-import { Followings, Users } from '../../../../models';
+import create from '@/services/following/create.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { getUser } from '../../common/getters.js';
+import { Followings, Users } from '@/models/index.js';
export const meta = {
tags: ['following', 'users'],
diff --git a/src/server/api/endpoints/following/delete.ts b/src/server/api/endpoints/following/delete.ts
index e164cb25c9..7b2d006f4f 100644
--- a/src/server/api/endpoints/following/delete.ts
+++ b/src/server/api/endpoints/following/delete.ts
@@ -1,11 +1,11 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
+import { ID } from '@/misc/cafy-id.js';
import * as ms from 'ms';
-import deleteFollowing from '../../../../services/following/delete';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { getUser } from '../../common/getters';
-import { Followings, Users } from '../../../../models';
+import deleteFollowing from '@/services/following/delete.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { getUser } from '../../common/getters.js';
+import { Followings, Users } from '@/models/index.js';
export const meta = {
tags: ['following', 'users'],
diff --git a/src/server/api/endpoints/following/requests/accept.ts b/src/server/api/endpoints/following/requests/accept.ts
index aa7085c53f..bf3c315c3c 100644
--- a/src/server/api/endpoints/following/requests/accept.ts
+++ b/src/server/api/endpoints/following/requests/accept.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import acceptFollowRequest from '../../../../../services/following/requests/accept';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { getUser } from '../../../common/getters';
+import { ID } from '@/misc/cafy-id.js';
+import acceptFollowRequest from '@/services/following/requests/accept.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { getUser } from '../../../common/getters.js';
export const meta = {
tags: ['following', 'account'],
diff --git a/src/server/api/endpoints/following/requests/cancel.ts b/src/server/api/endpoints/following/requests/cancel.ts
index 09056f2620..37e4c73096 100644
--- a/src/server/api/endpoints/following/requests/cancel.ts
+++ b/src/server/api/endpoints/following/requests/cancel.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import cancelFollowRequest from '../../../../../services/following/requests/cancel';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { getUser } from '../../../common/getters';
-import { Users } from '../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import cancelFollowRequest from '@/services/following/requests/cancel.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { getUser } from '../../../common/getters.js';
+import { Users } from '@/models/index.js';
export const meta = {
tags: ['following', 'account'],
diff --git a/src/server/api/endpoints/following/requests/list.ts b/src/server/api/endpoints/following/requests/list.ts
index bf3bfc68fa..1d6880d35d 100644
--- a/src/server/api/endpoints/following/requests/list.ts
+++ b/src/server/api/endpoints/following/requests/list.ts
@@ -1,5 +1,5 @@
-import define from '../../../define';
-import { FollowRequests } from '../../../../../models';
+import define from '../../../define.js';
+import { FollowRequests } from '@/models/index.js';
export const meta = {
tags: ['following', 'account'],
diff --git a/src/server/api/endpoints/following/requests/reject.ts b/src/server/api/endpoints/following/requests/reject.ts
index 1685a86137..5e41473545 100644
--- a/src/server/api/endpoints/following/requests/reject.ts
+++ b/src/server/api/endpoints/following/requests/reject.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import rejectFollowRequest from '../../../../../services/following/requests/reject';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { getUser } from '../../../common/getters';
+import { ID } from '@/misc/cafy-id.js';
+import rejectFollowRequest from '@/services/following/requests/reject.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { getUser } from '../../../common/getters.js';
export const meta = {
tags: ['following', 'account'],
diff --git a/src/server/api/endpoints/gallery/featured.ts b/src/server/api/endpoints/gallery/featured.ts
index d09000cc71..6e8118850c 100644
--- a/src/server/api/endpoints/gallery/featured.ts
+++ b/src/server/api/endpoints/gallery/featured.ts
@@ -1,5 +1,5 @@
-import define from '../../define';
-import { GalleryPosts } from '../../../../models';
+import define from '../../define.js';
+import { GalleryPosts } from '@/models/index.js';
export const meta = {
tags: ['gallery'],
diff --git a/src/server/api/endpoints/gallery/popular.ts b/src/server/api/endpoints/gallery/popular.ts
index e240b14d27..6c3db479c3 100644
--- a/src/server/api/endpoints/gallery/popular.ts
+++ b/src/server/api/endpoints/gallery/popular.ts
@@ -1,5 +1,5 @@
-import define from '../../define';
-import { GalleryPosts } from '../../../../models';
+import define from '../../define.js';
+import { GalleryPosts } from '@/models/index.js';
export const meta = {
tags: ['gallery'],
diff --git a/src/server/api/endpoints/gallery/posts.ts b/src/server/api/endpoints/gallery/posts.ts
index 656765d80a..625070ca29 100644
--- a/src/server/api/endpoints/gallery/posts.ts
+++ b/src/server/api/endpoints/gallery/posts.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { makePaginationQuery } from '../../common/make-pagination-query';
-import { GalleryPosts } from '../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
+import { GalleryPosts } from '@/models/index.js';
export const meta = {
tags: ['gallery'],
diff --git a/src/server/api/endpoints/gallery/posts/create.ts b/src/server/api/endpoints/gallery/posts/create.ts
index ed24a45f88..e1c7345171 100644
--- a/src/server/api/endpoints/gallery/posts/create.ts
+++ b/src/server/api/endpoints/gallery/posts/create.ts
@@ -1,12 +1,12 @@
import $ from 'cafy';
import * as ms from 'ms';
-import define from '../../../define';
-import { ID } from '../../../../../misc/cafy-id';
-import { DriveFiles, GalleryPosts } from '../../../../../models';
-import { genId } from '../../../../../misc/gen-id';
-import { GalleryPost } from '../../../../../models/entities/gallery-post';
-import { ApiError } from '../../../error';
-import { DriveFile } from '@/models/entities/drive-file';
+import define from '../../../define.js';
+import { ID } from '../../../../../misc/cafy-id.js';
+import { DriveFiles, GalleryPosts } from '@/models/index.js';
+import { genId } from '../../../../../misc/gen-id.js';
+import { GalleryPost } from '@/models/entities/gallery-post.js';
+import { ApiError } from '../../../error.js';
+import { DriveFile } from '@/models/entities/drive-file.js';
export const meta = {
tags: ['gallery'],
diff --git a/src/server/api/endpoints/gallery/posts/delete.ts b/src/server/api/endpoints/gallery/posts/delete.ts
index 8b54828b20..65819206c8 100644
--- a/src/server/api/endpoints/gallery/posts/delete.ts
+++ b/src/server/api/endpoints/gallery/posts/delete.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { GalleryPosts } from '../../../../../models';
-import { ID } from '@/misc/cafy-id';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { GalleryPosts } from '@/models/index.js';
+import { ID } from '@/misc/cafy-id.js';
export const meta = {
tags: ['gallery'],
diff --git a/src/server/api/endpoints/gallery/posts/like.ts b/src/server/api/endpoints/gallery/posts/like.ts
index 3bf37c13e3..80ec1b8745 100644
--- a/src/server/api/endpoints/gallery/posts/like.ts
+++ b/src/server/api/endpoints/gallery/posts/like.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { GalleryPosts, GalleryLikes } from '../../../../../models';
-import { genId } from '@/misc/gen-id';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { GalleryPosts, GalleryLikes } from '@/models/index.js';
+import { genId } from '@/misc/gen-id.js';
export const meta = {
tags: ['gallery'],
diff --git a/src/server/api/endpoints/gallery/posts/show.ts b/src/server/api/endpoints/gallery/posts/show.ts
index 17628544b7..777fb76e3a 100644
--- a/src/server/api/endpoints/gallery/posts/show.ts
+++ b/src/server/api/endpoints/gallery/posts/show.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { GalleryPosts } from '@/models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { GalleryPosts } from '@/models/index.js';
export const meta = {
tags: ['gallery'],
diff --git a/src/server/api/endpoints/gallery/posts/unlike.ts b/src/server/api/endpoints/gallery/posts/unlike.ts
index 155949ae3d..1ddafcec90 100644
--- a/src/server/api/endpoints/gallery/posts/unlike.ts
+++ b/src/server/api/endpoints/gallery/posts/unlike.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { GalleryPosts, GalleryLikes } from '../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { GalleryPosts, GalleryLikes } from '@/models/index.js';
export const meta = {
tags: ['gallery'],
diff --git a/src/server/api/endpoints/gallery/posts/update.ts b/src/server/api/endpoints/gallery/posts/update.ts
index d9176ea407..5906f29e86 100644
--- a/src/server/api/endpoints/gallery/posts/update.ts
+++ b/src/server/api/endpoints/gallery/posts/update.ts
@@ -1,11 +1,11 @@
import $ from 'cafy';
import * as ms from 'ms';
-import define from '../../../define';
-import { ID } from '../../../../../misc/cafy-id';
-import { DriveFiles, GalleryPosts } from '../../../../../models';
-import { GalleryPost } from '../../../../../models/entities/gallery-post';
-import { ApiError } from '../../../error';
-import { DriveFile } from '@/models/entities/drive-file';
+import define from '../../../define.js';
+import { ID } from '../../../../../misc/cafy-id.js';
+import { DriveFiles, GalleryPosts } from '@/models/index.js';
+import { GalleryPost } from '@/models/entities/gallery-post.js';
+import { ApiError } from '../../../error.js';
+import { DriveFile } from '@/models/entities/drive-file.js';
export const meta = {
tags: ['gallery'],
diff --git a/src/server/api/endpoints/games/reversi/games.ts b/src/server/api/endpoints/games/reversi/games.ts
index 6ac150ef2c..d62a039e16 100644
--- a/src/server/api/endpoints/games/reversi/games.ts
+++ b/src/server/api/endpoints/games/reversi/games.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { ReversiGames } from '../../../../../models';
-import { makePaginationQuery } from '../../../common/make-pagination-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { ReversiGames } from '@/models/index.js';
+import { makePaginationQuery } from '../../../common/make-pagination-query.js';
import { Brackets } from 'typeorm';
export const meta = {
diff --git a/src/server/api/endpoints/games/reversi/games/show.ts b/src/server/api/endpoints/games/reversi/games/show.ts
index a6fbdbaf6d..02da583f47 100644
--- a/src/server/api/endpoints/games/reversi/games/show.ts
+++ b/src/server/api/endpoints/games/reversi/games/show.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import Reversi from '../../../../../../games/reversi/core';
-import define from '../../../../define';
-import { ApiError } from '../../../../error';
-import { ReversiGames } from '../../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import Reversi from '../../../../../../games/reversi/core.js';
+import define from '../../../../define.js';
+import { ApiError } from '../../../../error.js';
+import { ReversiGames } from '@/models/index.js';
export const meta = {
tags: ['games'],
diff --git a/src/server/api/endpoints/games/reversi/games/surrender.ts b/src/server/api/endpoints/games/reversi/games/surrender.ts
index 41896b4ab5..371d2475f3 100644
--- a/src/server/api/endpoints/games/reversi/games/surrender.ts
+++ b/src/server/api/endpoints/games/reversi/games/surrender.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import { publishReversiGameStream } from '../../../../../../services/stream';
-import define from '../../../../define';
-import { ApiError } from '../../../../error';
-import { ReversiGames } from '../../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import { publishReversiGameStream } from '@/services/stream.js';
+import define from '../../../../define.js';
+import { ApiError } from '../../../../error.js';
+import { ReversiGames } from '@/models/index.js';
export const meta = {
tags: ['games'],
diff --git a/src/server/api/endpoints/games/reversi/invitations.ts b/src/server/api/endpoints/games/reversi/invitations.ts
index 6a73bdf0c4..5745ba566e 100644
--- a/src/server/api/endpoints/games/reversi/invitations.ts
+++ b/src/server/api/endpoints/games/reversi/invitations.ts
@@ -1,5 +1,5 @@
-import define from '../../../define';
-import { ReversiMatchings } from '../../../../../models';
+import define from '../../../define.js';
+import { ReversiMatchings } from '@/models/index.js';
export const meta = {
tags: ['games'],
diff --git a/src/server/api/endpoints/games/reversi/match.ts b/src/server/api/endpoints/games/reversi/match.ts
index 55ff9225d9..e02d11f4eb 100644
--- a/src/server/api/endpoints/games/reversi/match.ts
+++ b/src/server/api/endpoints/games/reversi/match.ts
@@ -1,14 +1,14 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import { publishMainStream, publishReversiStream } from '../../../../../services/stream';
-import { eighteight } from '../../../../../games/reversi/maps';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { getUser } from '../../../common/getters';
-import { genId } from '@/misc/gen-id';
-import { ReversiMatchings, ReversiGames } from '../../../../../models';
-import { ReversiGame } from '../../../../../models/entities/games/reversi/game';
-import { ReversiMatching } from '../../../../../models/entities/games/reversi/matching';
+import { ID } from '@/misc/cafy-id.js';
+import { publishMainStream, publishReversiStream } from '@/services/stream.js';
+import { eighteight } from '../../../../../games/reversi/maps.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { getUser } from '../../../common/getters.js';
+import { genId } from '@/misc/gen-id.js';
+import { ReversiMatchings, ReversiGames } from '@/models/index.js';
+import { ReversiGame } from '@/models/entities/games/reversi/game.js';
+import { ReversiMatching } from '@/models/entities/games/reversi/matching.js';
export const meta = {
tags: ['games'],
diff --git a/src/server/api/endpoints/games/reversi/match/cancel.ts b/src/server/api/endpoints/games/reversi/match/cancel.ts
index 0abd4b5c8f..2e5c086572 100644
--- a/src/server/api/endpoints/games/reversi/match/cancel.ts
+++ b/src/server/api/endpoints/games/reversi/match/cancel.ts
@@ -1,5 +1,5 @@
-import define from '../../../../define';
-import { ReversiMatchings } from '../../../../../../models';
+import define from '../../../../define.js';
+import { ReversiMatchings } from '@/models/index.js';
export const meta = {
tags: ['games'],
diff --git a/src/server/api/endpoints/get-online-users-count.ts b/src/server/api/endpoints/get-online-users-count.ts
index a13363055f..00b838ddcd 100644
--- a/src/server/api/endpoints/get-online-users-count.ts
+++ b/src/server/api/endpoints/get-online-users-count.ts
@@ -1,7 +1,7 @@
-import { USER_ONLINE_THRESHOLD } from '@/const';
-import { Users } from '@/models';
+import { USER_ONLINE_THRESHOLD } from '@/const.js';
+import { Users } from '@/models/index.js';
import { MoreThan } from 'typeorm';
-import define from '../define';
+import define from '../define.js';
export const meta = {
tags: ['meta'],
diff --git a/src/server/api/endpoints/hashtags/list.ts b/src/server/api/endpoints/hashtags/list.ts
index 6e37f909ee..0453b0acf8 100644
--- a/src/server/api/endpoints/hashtags/list.ts
+++ b/src/server/api/endpoints/hashtags/list.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
-import define from '../../define';
-import { Hashtags } from '../../../../models';
+import define from '../../define.js';
+import { Hashtags } from '@/models/index.js';
export const meta = {
tags: ['hashtags'],
diff --git a/src/server/api/endpoints/hashtags/search.ts b/src/server/api/endpoints/hashtags/search.ts
index 372ccd5084..025023f54e 100644
--- a/src/server/api/endpoints/hashtags/search.ts
+++ b/src/server/api/endpoints/hashtags/search.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
-import define from '../../define';
-import { Hashtags } from '../../../../models';
+import define from '../../define.js';
+import { Hashtags } from '@/models/index.js';
export const meta = {
tags: ['hashtags'],
diff --git a/src/server/api/endpoints/hashtags/show.ts b/src/server/api/endpoints/hashtags/show.ts
index 9e388ce145..50f330fef1 100644
--- a/src/server/api/endpoints/hashtags/show.ts
+++ b/src/server/api/endpoints/hashtags/show.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { Hashtags } from '../../../../models';
-import { normalizeForSearch } from '@/misc/normalize-for-search';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { Hashtags } from '@/models/index.js';
+import { normalizeForSearch } from '@/misc/normalize-for-search.js';
export const meta = {
tags: ['hashtags'],
diff --git a/src/server/api/endpoints/hashtags/trend.ts b/src/server/api/endpoints/hashtags/trend.ts
index 5341c3e584..21ac69057b 100644
--- a/src/server/api/endpoints/hashtags/trend.ts
+++ b/src/server/api/endpoints/hashtags/trend.ts
@@ -1,10 +1,10 @@
import { Brackets } from 'typeorm';
-import define from '../../define';
-import { fetchMeta } from '@/misc/fetch-meta';
-import { Notes } from '../../../../models';
-import { Note } from '../../../../models/entities/note';
-import { safeForSql } from '@/misc/safe-for-sql';
-import { normalizeForSearch } from '@/misc/normalize-for-search';
+import define from '../../define.js';
+import { fetchMeta } from '@/misc/fetch-meta.js';
+import { Notes } from '@/models/index.js';
+import { Note } from '@/models/entities/note.js';
+import { safeForSql } from '@/misc/safe-for-sql.js';
+import { normalizeForSearch } from '@/misc/normalize-for-search.js';
/*
トレンドに載るためには「『直近a分間のユニーク投稿数が今からa分前~今からb分前の間のユニーク投稿数のn倍以上』のハッシュタグの上位5位以内に入る」ことが必要
diff --git a/src/server/api/endpoints/hashtags/users.ts b/src/server/api/endpoints/hashtags/users.ts
index cecbc80cd2..2ddf066e90 100644
--- a/src/server/api/endpoints/hashtags/users.ts
+++ b/src/server/api/endpoints/hashtags/users.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import define from '../../define';
-import { Users } from '../../../../models';
-import { normalizeForSearch } from '@/misc/normalize-for-search';
+import define from '../../define.js';
+import { Users } from '@/models/index.js';
+import { normalizeForSearch } from '@/misc/normalize-for-search.js';
export const meta = {
requireCredential: false as const,
diff --git a/src/server/api/endpoints/i.ts b/src/server/api/endpoints/i.ts
index c6b89124b6..12b97e9911 100644
--- a/src/server/api/endpoints/i.ts
+++ b/src/server/api/endpoints/i.ts
@@ -1,5 +1,5 @@
-import define from '../define';
-import { Users } from '../../../models';
+import define from '../define.js';
+import { Users } from '@/models/index.js';
export const meta = {
tags: ['account'],
diff --git a/src/server/api/endpoints/i/2fa/done.ts b/src/server/api/endpoints/i/2fa/done.ts
index 9a74d7675b..1c1f0557da 100644
--- a/src/server/api/endpoints/i/2fa/done.ts
+++ b/src/server/api/endpoints/i/2fa/done.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import * as speakeasy from 'speakeasy';
-import define from '../../../define';
-import { UserProfiles } from '../../../../../models';
+import define from '../../../define.js';
+import { UserProfiles } from '@/models/index.js';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/2fa/key-done.ts b/src/server/api/endpoints/i/2fa/key-done.ts
index 923a8b386c..ea9976bd56 100644
--- a/src/server/api/endpoints/i/2fa/key-done.ts
+++ b/src/server/api/endpoints/i/2fa/key-done.ts
@@ -2,16 +2,16 @@ import $ from 'cafy';
import * as bcrypt from 'bcryptjs';
import { promisify } from 'util';
import * as cbor from 'cbor';
-import define from '../../../define';
+import define from '../../../define.js';
import {
UserProfiles,
UserSecurityKeys,
AttestationChallenges,
Users
-} from '../../../../../models';
-import config from '@/config';
-import { procedures, hash } from '../../../2fa';
-import { publishMainStream } from '../../../../../services/stream';
+} from '@/models/index.js';
+import config from '@/config/index.js';
+import { procedures, hash } from '../../../2fa.js';
+import { publishMainStream } from '@/services/stream.js';
const cborDecodeFirst = promisify(cbor.decodeFirst) as any;
diff --git a/src/server/api/endpoints/i/2fa/password-less.ts b/src/server/api/endpoints/i/2fa/password-less.ts
index ee0a065e43..b62ba25b98 100644
--- a/src/server/api/endpoints/i/2fa/password-less.ts
+++ b/src/server/api/endpoints/i/2fa/password-less.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
-import define from '../../../define';
-import { UserProfiles } from '../../../../../models';
+import define from '../../../define.js';
+import { UserProfiles } from '@/models/index.js';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/2fa/register-key.ts b/src/server/api/endpoints/i/2fa/register-key.ts
index 75f578fc5f..12e0afd93e 100644
--- a/src/server/api/endpoints/i/2fa/register-key.ts
+++ b/src/server/api/endpoints/i/2fa/register-key.ts
@@ -1,11 +1,11 @@
import $ from 'cafy';
import * as bcrypt from 'bcryptjs';
-import define from '../../../define';
-import { UserProfiles, AttestationChallenges } from '../../../../../models';
+import define from '../../../define.js';
+import { UserProfiles, AttestationChallenges } from '@/models/index.js';
import { promisify } from 'util';
import * as crypto from 'crypto';
-import { genId } from '@/misc/gen-id';
-import { hash } from '../../../2fa';
+import { genId } from '@/misc/gen-id.js';
+import { hash } from '../../../2fa.js';
const randomBytes = promisify(crypto.randomBytes);
diff --git a/src/server/api/endpoints/i/2fa/register.ts b/src/server/api/endpoints/i/2fa/register.ts
index d40997d6ed..7a3a6ec4cf 100644
--- a/src/server/api/endpoints/i/2fa/register.ts
+++ b/src/server/api/endpoints/i/2fa/register.ts
@@ -2,9 +2,9 @@ import $ from 'cafy';
import * as bcrypt from 'bcryptjs';
import * as speakeasy from 'speakeasy';
import * as QRCode from 'qrcode';
-import config from '@/config';
-import define from '../../../define';
-import { UserProfiles } from '../../../../../models';
+import config from '@/config/index.js';
+import define from '../../../define.js';
+import { UserProfiles } from '@/models/index.js';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/2fa/remove-key.ts b/src/server/api/endpoints/i/2fa/remove-key.ts
index 135f0eb284..2c74a8a856 100644
--- a/src/server/api/endpoints/i/2fa/remove-key.ts
+++ b/src/server/api/endpoints/i/2fa/remove-key.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
import * as bcrypt from 'bcryptjs';
-import define from '../../../define';
-import { UserProfiles, UserSecurityKeys, Users } from '../../../../../models';
-import { publishMainStream } from '../../../../../services/stream';
+import define from '../../../define.js';
+import { UserProfiles, UserSecurityKeys, Users } from '@/models/index.js';
+import { publishMainStream } from '@/services/stream.js';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/2fa/unregister.ts b/src/server/api/endpoints/i/2fa/unregister.ts
index e809f40c71..47f6c0f876 100644
--- a/src/server/api/endpoints/i/2fa/unregister.ts
+++ b/src/server/api/endpoints/i/2fa/unregister.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import * as bcrypt from 'bcryptjs';
-import define from '../../../define';
-import { UserProfiles } from '../../../../../models';
+import define from '../../../define.js';
+import { UserProfiles } from '@/models/index.js';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/apps.ts b/src/server/api/endpoints/i/apps.ts
index 69958f1ca4..3cb7038a53 100644
--- a/src/server/api/endpoints/i/apps.ts
+++ b/src/server/api/endpoints/i/apps.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
-import define from '../../define';
-import { AccessTokens } from '../../../../models';
+import define from '../../define.js';
+import { AccessTokens } from '@/models/index.js';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/authorized-apps.ts b/src/server/api/endpoints/i/authorized-apps.ts
index 050d079d9b..63cb87cf09 100644
--- a/src/server/api/endpoints/i/authorized-apps.ts
+++ b/src/server/api/endpoints/i/authorized-apps.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
-import define from '../../define';
-import { AccessTokens, Apps } from '../../../../models';
+import define from '../../define.js';
+import { AccessTokens, Apps } from '@/models/index.js';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/change-password.ts b/src/server/api/endpoints/i/change-password.ts
index 0a8b86e665..545df032cd 100644
--- a/src/server/api/endpoints/i/change-password.ts
+++ b/src/server/api/endpoints/i/change-password.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import * as bcrypt from 'bcryptjs';
-import define from '../../define';
-import { UserProfiles } from '../../../../models';
+import define from '../../define.js';
+import { UserProfiles } from '@/models/index.js';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/delete-account.ts b/src/server/api/endpoints/i/delete-account.ts
index f5f0f32a4a..02c03e5ba0 100644
--- a/src/server/api/endpoints/i/delete-account.ts
+++ b/src/server/api/endpoints/i/delete-account.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
import * as bcrypt from 'bcryptjs';
-import define from '../../define';
-import { Users, UserProfiles } from '../../../../models';
-import { doPostSuspend } from '../../../../services/suspend-user';
-import { publishUserEvent } from '@/services/stream';
+import define from '../../define.js';
+import { Users, UserProfiles } from '@/models/index.js';
+import { doPostSuspend } from '@/services/suspend-user.js';
+import { publishUserEvent } from '@/services/stream.js';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/export-blocking.ts b/src/server/api/endpoints/i/export-blocking.ts
index 87cf7655b0..219fbb1ef1 100644
--- a/src/server/api/endpoints/i/export-blocking.ts
+++ b/src/server/api/endpoints/i/export-blocking.ts
@@ -1,6 +1,6 @@
-import define from '../../define';
-import { createExportBlockingJob } from '../../../../queue';
-import ms = require('ms');
+import define from '../../define.js';
+import { createExportBlockingJob } from '@/queue/index.js';
+import * as ms from 'ms';
export const meta = {
secure: true,
diff --git a/src/server/api/endpoints/i/export-following.ts b/src/server/api/endpoints/i/export-following.ts
index 9afc96a24a..2d6a8c2e3a 100644
--- a/src/server/api/endpoints/i/export-following.ts
+++ b/src/server/api/endpoints/i/export-following.ts
@@ -1,6 +1,6 @@
-import define from '../../define';
-import { createExportFollowingJob } from '../../../../queue';
-import ms = require('ms');
+import define from '../../define.js';
+import { createExportFollowingJob } from '@/queue/index.js';
+import * as ms from 'ms';
export const meta = {
secure: true,
diff --git a/src/server/api/endpoints/i/export-mute.ts b/src/server/api/endpoints/i/export-mute.ts
index 7bb24f8f84..a96ca1d5bb 100644
--- a/src/server/api/endpoints/i/export-mute.ts
+++ b/src/server/api/endpoints/i/export-mute.ts
@@ -1,6 +1,6 @@
-import define from '../../define';
-import { createExportMuteJob } from '../../../../queue';
-import ms = require('ms');
+import define from '../../define.js';
+import { createExportMuteJob } from '@/queue/index.js';
+import * as ms from 'ms';
export const meta = {
secure: true,
diff --git a/src/server/api/endpoints/i/export-notes.ts b/src/server/api/endpoints/i/export-notes.ts
index 368a340512..ff8e02a01b 100644
--- a/src/server/api/endpoints/i/export-notes.ts
+++ b/src/server/api/endpoints/i/export-notes.ts
@@ -1,6 +1,6 @@
-import define from '../../define';
-import { createExportNotesJob } from '../../../../queue';
-import ms = require('ms');
+import define from '../../define.js';
+import { createExportNotesJob } from '@/queue/index.js';
+import * as ms from 'ms';
export const meta = {
secure: true,
diff --git a/src/server/api/endpoints/i/export-user-lists.ts b/src/server/api/endpoints/i/export-user-lists.ts
index e1de59f321..4554e512d3 100644
--- a/src/server/api/endpoints/i/export-user-lists.ts
+++ b/src/server/api/endpoints/i/export-user-lists.ts
@@ -1,6 +1,6 @@
-import define from '../../define';
-import { createExportUserListsJob } from '../../../../queue';
-import ms = require('ms');
+import define from '../../define.js';
+import { createExportUserListsJob } from '@/queue/index.js';
+import * as ms from 'ms';
export const meta = {
secure: true,
diff --git a/src/server/api/endpoints/i/favorites.ts b/src/server/api/endpoints/i/favorites.ts
index eb97e8bab6..99ce45e9b5 100644
--- a/src/server/api/endpoints/i/favorites.ts
+++ b/src/server/api/endpoints/i/favorites.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { NoteFavorites } from '../../../../models';
-import { makePaginationQuery } from '../../common/make-pagination-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { NoteFavorites } from '@/models/index.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
export const meta = {
tags: ['account', 'notes', 'favorites'],
diff --git a/src/server/api/endpoints/i/gallery/likes.ts b/src/server/api/endpoints/i/gallery/likes.ts
index e569261fa6..0ddcdad5b9 100644
--- a/src/server/api/endpoints/i/gallery/likes.ts
+++ b/src/server/api/endpoints/i/gallery/likes.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { GalleryLikes } from '../../../../../models';
-import { makePaginationQuery } from '../../../common/make-pagination-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { GalleryLikes } from '@/models/index.js';
+import { makePaginationQuery } from '../../../common/make-pagination-query.js';
export const meta = {
tags: ['account', 'gallery'],
diff --git a/src/server/api/endpoints/i/gallery/posts.ts b/src/server/api/endpoints/i/gallery/posts.ts
index d7c2e96c16..74518c792c 100644
--- a/src/server/api/endpoints/i/gallery/posts.ts
+++ b/src/server/api/endpoints/i/gallery/posts.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { GalleryPosts } from '../../../../../models';
-import { makePaginationQuery } from '../../../common/make-pagination-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { GalleryPosts } from '@/models/index.js';
+import { makePaginationQuery } from '../../../common/make-pagination-query.js';
export const meta = {
tags: ['account', 'gallery'],
diff --git a/src/server/api/endpoints/i/get-word-muted-notes-count.ts b/src/server/api/endpoints/i/get-word-muted-notes-count.ts
index a69ebc286a..a18a5c779b 100644
--- a/src/server/api/endpoints/i/get-word-muted-notes-count.ts
+++ b/src/server/api/endpoints/i/get-word-muted-notes-count.ts
@@ -1,5 +1,5 @@
-import define from '../../define';
-import { MutedNotes } from '../../../../models';
+import define from '../../define.js';
+import { MutedNotes } from '@/models/index.js';
export const meta = {
tags: ['account'],
diff --git a/src/server/api/endpoints/i/import-following.ts b/src/server/api/endpoints/i/import-following.ts
index 0349551073..bb4558cc5c 100644
--- a/src/server/api/endpoints/i/import-following.ts
+++ b/src/server/api/endpoints/i/import-following.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { createImportFollowingJob } from '../../../../queue';
-import ms = require('ms');
-import { ApiError } from '../../error';
-import { DriveFiles } from '../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { createImportFollowingJob } from '@/queue/index.js';
+import * as ms from 'ms';
+import { ApiError } from '../../error.js';
+import { DriveFiles } from '@/models/index.js';
export const meta = {
secure: true,
diff --git a/src/server/api/endpoints/i/import-user-lists.ts b/src/server/api/endpoints/i/import-user-lists.ts
index f40eb2745d..99465b1fed 100644
--- a/src/server/api/endpoints/i/import-user-lists.ts
+++ b/src/server/api/endpoints/i/import-user-lists.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { createImportUserListsJob } from '../../../../queue';
-import ms = require('ms');
-import { ApiError } from '../../error';
-import { DriveFiles } from '../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { createImportUserListsJob } from '@/queue/index.js';
+import * as ms from 'ms';
+import { ApiError } from '../../error.js';
+import { DriveFiles } from '@/models/index.js';
export const meta = {
secure: true,
diff --git a/src/server/api/endpoints/i/notifications.ts b/src/server/api/endpoints/i/notifications.ts
index a16766c92e..fb7fcea579 100644
--- a/src/server/api/endpoints/i/notifications.ts
+++ b/src/server/api/endpoints/i/notifications.ts
@@ -1,11 +1,11 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import { readNotification } from '../../common/read-notification';
-import define from '../../define';
-import { makePaginationQuery } from '../../common/make-pagination-query';
-import { Notifications, Followings, Mutings, Users } from '../../../../models';
-import { notificationTypes } from '../../../../types';
-import read from '@/services/note/read';
+import { ID } from '@/misc/cafy-id.js';
+import { readNotification } from '../../common/read-notification.js';
+import define from '../../define.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
+import { Notifications, Followings, Mutings, Users } from '@/models/index.js';
+import { notificationTypes } from '../../../../types.js';
+import read from '@/services/note/read.js';
export const meta = {
tags: ['account', 'notifications'],
diff --git a/src/server/api/endpoints/i/page-likes.ts b/src/server/api/endpoints/i/page-likes.ts
index bb41499694..231b029b28 100644
--- a/src/server/api/endpoints/i/page-likes.ts
+++ b/src/server/api/endpoints/i/page-likes.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { PageLikes } from '../../../../models';
-import { makePaginationQuery } from '../../common/make-pagination-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { PageLikes } from '@/models/index.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
export const meta = {
tags: ['account', 'pages'],
diff --git a/src/server/api/endpoints/i/pages.ts b/src/server/api/endpoints/i/pages.ts
index 981686adb0..1547212197 100644
--- a/src/server/api/endpoints/i/pages.ts
+++ b/src/server/api/endpoints/i/pages.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { Pages } from '../../../../models';
-import { makePaginationQuery } from '../../common/make-pagination-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { Pages } from '@/models/index.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
export const meta = {
tags: ['account', 'pages'],
diff --git a/src/server/api/endpoints/i/pin.ts b/src/server/api/endpoints/i/pin.ts
index e1e0658996..689e1ae641 100644
--- a/src/server/api/endpoints/i/pin.ts
+++ b/src/server/api/endpoints/i/pin.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import { addPinned } from '../../../../services/i/pin';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { Users } from '../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import { addPinned } from '@/services/i/pin.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { Users } from '@/models/index.js';
export const meta = {
tags: ['account', 'notes'],
diff --git a/src/server/api/endpoints/i/read-all-messaging-messages.ts b/src/server/api/endpoints/i/read-all-messaging-messages.ts
index dd26a10a73..fe0e6e558a 100644
--- a/src/server/api/endpoints/i/read-all-messaging-messages.ts
+++ b/src/server/api/endpoints/i/read-all-messaging-messages.ts
@@ -1,6 +1,6 @@
-import { publishMainStream } from '../../../../services/stream';
-import define from '../../define';
-import { MessagingMessages, UserGroupJoinings } from '../../../../models';
+import { publishMainStream } from '@/services/stream.js';
+import define from '../../define.js';
+import { MessagingMessages, UserGroupJoinings } from '@/models/index.js';
export const meta = {
tags: ['account', 'messaging'],
diff --git a/src/server/api/endpoints/i/read-all-unread-notes.ts b/src/server/api/endpoints/i/read-all-unread-notes.ts
index 64469a2ad5..635c483b75 100644
--- a/src/server/api/endpoints/i/read-all-unread-notes.ts
+++ b/src/server/api/endpoints/i/read-all-unread-notes.ts
@@ -1,6 +1,6 @@
-import { publishMainStream } from '../../../../services/stream';
-import define from '../../define';
-import { NoteUnreads } from '../../../../models';
+import { publishMainStream } from '@/services/stream.js';
+import define from '../../define.js';
+import { NoteUnreads } from '@/models/index.js';
export const meta = {
tags: ['account'],
diff --git a/src/server/api/endpoints/i/read-announcement.ts b/src/server/api/endpoints/i/read-announcement.ts
index 0f58b823fc..6a1050c05e 100644
--- a/src/server/api/endpoints/i/read-announcement.ts
+++ b/src/server/api/endpoints/i/read-announcement.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { genId } from '@/misc/gen-id';
-import { AnnouncementReads, Announcements, Users } from '../../../../models';
-import { publishMainStream } from '../../../../services/stream';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { genId } from '@/misc/gen-id.js';
+import { AnnouncementReads, Announcements, Users } from '@/models/index.js';
+import { publishMainStream } from '@/services/stream.js';
export const meta = {
tags: ['account'],
diff --git a/src/server/api/endpoints/i/regenerate-token.ts b/src/server/api/endpoints/i/regenerate-token.ts
index 3665ed0532..af22d53770 100644
--- a/src/server/api/endpoints/i/regenerate-token.ts
+++ b/src/server/api/endpoints/i/regenerate-token.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
import * as bcrypt from 'bcryptjs';
-import { publishMainStream, publishUserEvent } from '../../../../services/stream';
-import generateUserToken from '../../common/generate-native-user-token';
-import define from '../../define';
-import { Users, UserProfiles } from '../../../../models';
+import { publishMainStream, publishUserEvent } from '@/services/stream.js';
+import generateUserToken from '../../common/generate-native-user-token.js';
+import define from '../../define.js';
+import { Users, UserProfiles } from '@/models/index.js';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/registry/get-all.ts b/src/server/api/endpoints/i/registry/get-all.ts
index ce8653f22b..6d5a4ec31f 100644
--- a/src/server/api/endpoints/i/registry/get-all.ts
+++ b/src/server/api/endpoints/i/registry/get-all.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
-import define from '../../../define';
-import { RegistryItems } from '../../../../../models';
+import define from '../../../define.js';
+import { RegistryItems } from '@/models/index.js';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/registry/get-detail.ts b/src/server/api/endpoints/i/registry/get-detail.ts
index 441833d3d7..81a81b0217 100644
--- a/src/server/api/endpoints/i/registry/get-detail.ts
+++ b/src/server/api/endpoints/i/registry/get-detail.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import define from '../../../define';
-import { RegistryItems } from '../../../../../models';
-import { ApiError } from '../../../error';
+import define from '../../../define.js';
+import { RegistryItems } from '@/models/index.js';
+import { ApiError } from '../../../error.js';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/registry/get.ts b/src/server/api/endpoints/i/registry/get.ts
index 275e660cb6..8bdec7986a 100644
--- a/src/server/api/endpoints/i/registry/get.ts
+++ b/src/server/api/endpoints/i/registry/get.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import define from '../../../define';
-import { RegistryItems } from '../../../../../models';
-import { ApiError } from '../../../error';
+import define from '../../../define.js';
+import { RegistryItems } from '@/models/index.js';
+import { ApiError } from '../../../error.js';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/registry/keys-with-type.ts b/src/server/api/endpoints/i/registry/keys-with-type.ts
index 06d77acbeb..1aeba71fe2 100644
--- a/src/server/api/endpoints/i/registry/keys-with-type.ts
+++ b/src/server/api/endpoints/i/registry/keys-with-type.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
-import define from '../../../define';
-import { RegistryItems } from '../../../../../models';
+import define from '../../../define.js';
+import { RegistryItems } from '@/models/index.js';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/registry/keys.ts b/src/server/api/endpoints/i/registry/keys.ts
index e4dd5044b4..1c3836d7a0 100644
--- a/src/server/api/endpoints/i/registry/keys.ts
+++ b/src/server/api/endpoints/i/registry/keys.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
-import define from '../../../define';
-import { RegistryItems } from '../../../../../models';
+import define from '../../../define.js';
+import { RegistryItems } from '@/models/index.js';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/registry/remove.ts b/src/server/api/endpoints/i/registry/remove.ts
index 4f04d653b3..64cf5fbb74 100644
--- a/src/server/api/endpoints/i/registry/remove.ts
+++ b/src/server/api/endpoints/i/registry/remove.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import define from '../../../define';
-import { RegistryItems } from '../../../../../models';
-import { ApiError } from '../../../error';
+import define from '../../../define.js';
+import { RegistryItems } from '@/models/index.js';
+import { ApiError } from '../../../error.js';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/registry/scopes.ts b/src/server/api/endpoints/i/registry/scopes.ts
index baf3ebdeca..094dfbef88 100644
--- a/src/server/api/endpoints/i/registry/scopes.ts
+++ b/src/server/api/endpoints/i/registry/scopes.ts
@@ -1,5 +1,5 @@
-import define from '../../../define';
-import { RegistryItems } from '../../../../../models';
+import define from '../../../define.js';
+import { RegistryItems } from '@/models/index.js';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/registry/set.ts b/src/server/api/endpoints/i/registry/set.ts
index 40f6368017..099ccd27ba 100644
--- a/src/server/api/endpoints/i/registry/set.ts
+++ b/src/server/api/endpoints/i/registry/set.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { publishMainStream } from '../../../../../services/stream';
-import define from '../../../define';
-import { RegistryItems } from '../../../../../models';
-import { genId } from '@/misc/gen-id';
+import { publishMainStream } from '@/services/stream.js';
+import define from '../../../define.js';
+import { RegistryItems } from '@/models/index.js';
+import { genId } from '@/misc/gen-id.js';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/revoke-token.ts b/src/server/api/endpoints/i/revoke-token.ts
index d22d9ca693..3f3a2fa939 100644
--- a/src/server/api/endpoints/i/revoke-token.ts
+++ b/src/server/api/endpoints/i/revoke-token.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import define from '../../define';
-import { AccessTokens } from '../../../../models';
-import { ID } from '@/misc/cafy-id';
-import { publishUserEvent } from '@/services/stream';
+import define from '../../define.js';
+import { AccessTokens } from '@/models/index.js';
+import { ID } from '@/misc/cafy-id.js';
+import { publishUserEvent } from '@/services/stream.js';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/signin-history.ts b/src/server/api/endpoints/i/signin-history.ts
index 0395206144..215c7b1fc9 100644
--- a/src/server/api/endpoints/i/signin-history.ts
+++ b/src/server/api/endpoints/i/signin-history.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { Signins } from '../../../../models';
-import { makePaginationQuery } from '../../common/make-pagination-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { Signins } from '@/models/index.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/unpin.ts b/src/server/api/endpoints/i/unpin.ts
index fe19b20905..f8c451aa2e 100644
--- a/src/server/api/endpoints/i/unpin.ts
+++ b/src/server/api/endpoints/i/unpin.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import { removePinned } from '../../../../services/i/pin';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { Users } from '../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import { removePinned } from '@/services/i/pin.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { Users } from '@/models/index.js';
export const meta = {
tags: ['account', 'notes'],
diff --git a/src/server/api/endpoints/i/update-email.ts b/src/server/api/endpoints/i/update-email.ts
index cd0e989e51..142a7aa75c 100644
--- a/src/server/api/endpoints/i/update-email.ts
+++ b/src/server/api/endpoints/i/update-email.ts
@@ -1,13 +1,13 @@
import $ from 'cafy';
-import { publishMainStream } from '../../../../services/stream';
-import define from '../../define';
+import { publishMainStream } from '@/services/stream.js';
+import define from '../../define.js';
import rndstr from 'rndstr';
-import config from '@/config';
+import config from '@/config/index.js';
import * as ms from 'ms';
import * as bcrypt from 'bcryptjs';
-import { Users, UserProfiles } from '../../../../models';
-import { sendEmail } from '../../../../services/send-email';
-import { ApiError } from '../../error';
+import { Users, UserProfiles } from '@/models/index.js';
+import { sendEmail } from '@/services/send-email.js';
+import { ApiError } from '../../error.js';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/update.ts b/src/server/api/endpoints/i/update.ts
index 96955354a3..e8881f94de 100644
--- a/src/server/api/endpoints/i/update.ts
+++ b/src/server/api/endpoints/i/update.ts
@@ -1,20 +1,20 @@
import $ from 'cafy';
import * as mfm from 'mfm-js';
-import { ID } from '@/misc/cafy-id';
-import { publishMainStream, publishUserEvent } from '../../../../services/stream';
-import acceptAllFollowRequests from '../../../../services/following/requests/accept-all';
-import { publishToFollowers } from '../../../../services/i/update';
-import define from '../../define';
-import { extractCustomEmojisFromMfm } from '@/misc/extract-custom-emojis-from-mfm';
-import { extractHashtags } from '@/misc/extract-hashtags';
+import { ID } from '@/misc/cafy-id.js';
+import { publishMainStream, publishUserEvent } from '@/services/stream.js';
+import acceptAllFollowRequests from '@/services/following/requests/accept-all.js';
+import { publishToFollowers } from '@/services/i/update.js';
+import define from '../../define.js';
+import { extractCustomEmojisFromMfm } from '@/misc/extract-custom-emojis-from-mfm.js';
+import { extractHashtags } from '@/misc/extract-hashtags.js';
import * as langmap from 'langmap';
-import { updateUsertags } from '../../../../services/update-hashtag';
-import { ApiError } from '../../error';
-import { Users, DriveFiles, UserProfiles, Pages } from '../../../../models';
-import { User } from '../../../../models/entities/user';
-import { UserProfile } from '../../../../models/entities/user-profile';
-import { notificationTypes } from '../../../../types';
-import { normalizeForSearch } from '@/misc/normalize-for-search';
+import { updateUsertags } from '@/services/update-hashtag.js';
+import { ApiError } from '../../error.js';
+import { Users, DriveFiles, UserProfiles, Pages } from '@/models/index.js';
+import { User } from '@/models/entities/user.js';
+import { UserProfile } from '@/models/entities/user-profile.js';
+import { notificationTypes } from '../../../../types.js';
+import { normalizeForSearch } from '@/misc/normalize-for-search.js';
export const meta = {
tags: ['account'],
diff --git a/src/server/api/endpoints/i/user-group-invites.ts b/src/server/api/endpoints/i/user-group-invites.ts
index 623274df92..57148bac5d 100644
--- a/src/server/api/endpoints/i/user-group-invites.ts
+++ b/src/server/api/endpoints/i/user-group-invites.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { UserGroupInvitations } from '../../../../models';
-import { makePaginationQuery } from '../../common/make-pagination-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { UserGroupInvitations } from '@/models/index.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
export const meta = {
tags: ['account', 'groups'],
diff --git a/src/server/api/endpoints/messaging/history.ts b/src/server/api/endpoints/messaging/history.ts
index 5f4f02455d..6f098a0940 100644
--- a/src/server/api/endpoints/messaging/history.ts
+++ b/src/server/api/endpoints/messaging/history.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import define from '../../define';
-import { MessagingMessage } from '../../../../models/entities/messaging-message';
-import { MessagingMessages, Mutings, UserGroupJoinings } from '../../../../models';
+import define from '../../define.js';
+import { MessagingMessage } from '@/models/entities/messaging-message.js';
+import { MessagingMessages, Mutings, UserGroupJoinings } from '@/models/index.js';
import { Brackets } from 'typeorm';
export const meta = {
diff --git a/src/server/api/endpoints/messaging/messages.ts b/src/server/api/endpoints/messaging/messages.ts
index 087f5a7d62..3541001ae1 100644
--- a/src/server/api/endpoints/messaging/messages.ts
+++ b/src/server/api/endpoints/messaging/messages.ts
@@ -1,12 +1,12 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { getUser } from '../../common/getters';
-import { MessagingMessages, UserGroups, UserGroupJoinings, Users } from '../../../../models';
-import { makePaginationQuery } from '../../common/make-pagination-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { getUser } from '../../common/getters.js';
+import { MessagingMessages, UserGroups, UserGroupJoinings, Users } from '@/models/index.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
import { Brackets } from 'typeorm';
-import { readUserMessagingMessage, readGroupMessagingMessage, deliverReadActivity } from '../../common/read-messaging-message';
+import { readUserMessagingMessage, readGroupMessagingMessage, deliverReadActivity } from '../../common/read-messaging-message.js';
export const meta = {
tags: ['messaging'],
diff --git a/src/server/api/endpoints/messaging/messages/create.ts b/src/server/api/endpoints/messaging/messages/create.ts
index a00513a24d..c6902dc1b6 100644
--- a/src/server/api/endpoints/messaging/messages/create.ts
+++ b/src/server/api/endpoints/messaging/messages/create.ts
@@ -1,12 +1,12 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { getUser } from '../../../common/getters';
-import { MessagingMessages, DriveFiles, UserGroups, UserGroupJoinings, Blockings } from '../../../../../models';
-import { User } from '../../../../../models/entities/user';
-import { UserGroup } from '../../../../../models/entities/user-group';
-import { createMessage } from '../../../../../services/messages/create';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { getUser } from '../../../common/getters.js';
+import { MessagingMessages, DriveFiles, UserGroups, UserGroupJoinings, Blockings } from '@/models/index.js';
+import { User } from '@/models/entities/user.js';
+import { UserGroup } from '@/models/entities/user-group.js';
+import { createMessage } from '@/services/messages/create.js';
export const meta = {
tags: ['messaging'],
diff --git a/src/server/api/endpoints/messaging/messages/delete.ts b/src/server/api/endpoints/messaging/messages/delete.ts
index 5e5aa5fd13..54559560c9 100644
--- a/src/server/api/endpoints/messaging/messages/delete.ts
+++ b/src/server/api/endpoints/messaging/messages/delete.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
import * as ms from 'ms';
-import { ApiError } from '../../../error';
-import { MessagingMessages } from '../../../../../models';
-import { deleteMessage } from '../../../../../services/messages/delete';
+import { ApiError } from '../../../error.js';
+import { MessagingMessages } from '@/models/index.js';
+import { deleteMessage } from '@/services/messages/delete.js';
export const meta = {
tags: ['messaging'],
diff --git a/src/server/api/endpoints/messaging/messages/read.ts b/src/server/api/endpoints/messaging/messages/read.ts
index b17927da3f..ac822b6a36 100644
--- a/src/server/api/endpoints/messaging/messages/read.ts
+++ b/src/server/api/endpoints/messaging/messages/read.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { MessagingMessages } from '../../../../../models';
-import { readUserMessagingMessage, readGroupMessagingMessage } from '../../../common/read-messaging-message';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { MessagingMessages } from '@/models/index.js';
+import { readUserMessagingMessage, readGroupMessagingMessage } from '../../../common/read-messaging-message.js';
export const meta = {
tags: ['messaging'],
diff --git a/src/server/api/endpoints/meta.ts b/src/server/api/endpoints/meta.ts
index 561d473d6f..579e963af9 100644
--- a/src/server/api/endpoints/meta.ts
+++ b/src/server/api/endpoints/meta.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import config from '@/config';
-import define from '../define';
-import { fetchMeta } from '@/misc/fetch-meta';
-import { Ads, Emojis, Users } from '../../../models';
-import { DB_MAX_NOTE_TEXT_LENGTH } from '@/misc/hard-limits';
+import config from '@/config/index.js';
+import define from '../define.js';
+import { fetchMeta } from '@/misc/fetch-meta.js';
+import { Ads, Emojis, Users } from '@/models/index.js';
+import { DB_MAX_NOTE_TEXT_LENGTH } from '@/misc/hard-limits.js';
import { MoreThan } from 'typeorm';
export const meta = {
diff --git a/src/server/api/endpoints/miauth/gen-token.ts b/src/server/api/endpoints/miauth/gen-token.ts
index 68ef00eb28..b026d995a5 100644
--- a/src/server/api/endpoints/miauth/gen-token.ts
+++ b/src/server/api/endpoints/miauth/gen-token.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import define from '../../define';
-import { AccessTokens } from '../../../../models';
-import { genId } from '@/misc/gen-id';
-import { secureRndstr } from '@/misc/secure-rndstr';
+import define from '../../define.js';
+import { AccessTokens } from '@/models/index.js';
+import { genId } from '@/misc/gen-id.js';
+import { secureRndstr } from '@/misc/secure-rndstr.js';
export const meta = {
tags: ['auth'],
diff --git a/src/server/api/endpoints/mute/create.ts b/src/server/api/endpoints/mute/create.ts
index 7f018a359a..5fdb21a449 100644
--- a/src/server/api/endpoints/mute/create.ts
+++ b/src/server/api/endpoints/mute/create.ts
@@ -1,12 +1,12 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { getUser } from '../../common/getters';
-import { genId } from '@/misc/gen-id';
-import { Mutings, NoteWatchings } from '../../../../models';
-import { Muting } from '../../../../models/entities/muting';
-import { publishUserEvent } from '../../../../services/stream';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { getUser } from '../../common/getters.js';
+import { genId } from '@/misc/gen-id.js';
+import { Mutings, NoteWatchings } from '@/models/index.js';
+import { Muting } from '@/models/entities/muting.js';
+import { publishUserEvent } from '@/services/stream.js';
export const meta = {
tags: ['account'],
diff --git a/src/server/api/endpoints/mute/delete.ts b/src/server/api/endpoints/mute/delete.ts
index bfb6a95e32..041e5df208 100644
--- a/src/server/api/endpoints/mute/delete.ts
+++ b/src/server/api/endpoints/mute/delete.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { getUser } from '../../common/getters';
-import { Mutings } from '../../../../models';
-import { publishUserEvent } from '../../../../services/stream';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { getUser } from '../../common/getters.js';
+import { Mutings } from '@/models/index.js';
+import { publishUserEvent } from '@/services/stream.js';
export const meta = {
tags: ['account'],
diff --git a/src/server/api/endpoints/mute/list.ts b/src/server/api/endpoints/mute/list.ts
index 45952ec72e..0024506eb0 100644
--- a/src/server/api/endpoints/mute/list.ts
+++ b/src/server/api/endpoints/mute/list.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { makePaginationQuery } from '../../common/make-pagination-query';
-import { Mutings } from '../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
+import { Mutings } from '@/models/index.js';
export const meta = {
tags: ['account'],
diff --git a/src/server/api/endpoints/my/apps.ts b/src/server/api/endpoints/my/apps.ts
index 908e24e1ba..268408698b 100644
--- a/src/server/api/endpoints/my/apps.ts
+++ b/src/server/api/endpoints/my/apps.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
-import define from '../../define';
-import { Apps } from '../../../../models';
+import define from '../../define.js';
+import { Apps } from '@/models/index.js';
export const meta = {
tags: ['account', 'app'],
diff --git a/src/server/api/endpoints/notes.ts b/src/server/api/endpoints/notes.ts
index fdb8bad247..6a9766d289 100644
--- a/src/server/api/endpoints/notes.ts
+++ b/src/server/api/endpoints/notes.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../define';
-import { makePaginationQuery } from '../common/make-pagination-query';
-import { Notes } from '../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../define.js';
+import { makePaginationQuery } from '../common/make-pagination-query.js';
+import { Notes } from '@/models/index.js';
export const meta = {
tags: ['notes'],
diff --git a/src/server/api/endpoints/notes/children.ts b/src/server/api/endpoints/notes/children.ts
index f4d2958810..de17c32f51 100644
--- a/src/server/api/endpoints/notes/children.ts
+++ b/src/server/api/endpoints/notes/children.ts
@@ -1,12 +1,12 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { makePaginationQuery } from '../../common/make-pagination-query';
-import { generateVisibilityQuery } from '../../common/generate-visibility-query';
-import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
+import { generateVisibilityQuery } from '../../common/generate-visibility-query.js';
+import { generateMutedUserQuery } from '../../common/generate-muted-user-query.js';
import { Brackets } from 'typeorm';
-import { Notes } from '../../../../models';
-import { generateBlockedUserQuery } from '../../common/generate-block-query';
+import { Notes } from '@/models/index.js';
+import { generateBlockedUserQuery } from '../../common/generate-block-query.js';
export const meta = {
tags: ['notes'],
diff --git a/src/server/api/endpoints/notes/clips.ts b/src/server/api/endpoints/notes/clips.ts
index d116370b46..c3360d6f22 100644
--- a/src/server/api/endpoints/notes/clips.ts
+++ b/src/server/api/endpoints/notes/clips.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { ClipNotes, Clips } from '../../../../models';
-import { getNote } from '../../common/getters';
-import { ApiError } from '../../error';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { ClipNotes, Clips } from '@/models/index.js';
+import { getNote } from '../../common/getters.js';
+import { ApiError } from '../../error.js';
import { In } from 'typeorm';
export const meta = {
diff --git a/src/server/api/endpoints/notes/conversation.ts b/src/server/api/endpoints/notes/conversation.ts
index 0fd10df077..adf4ca2e10 100644
--- a/src/server/api/endpoints/notes/conversation.ts
+++ b/src/server/api/endpoints/notes/conversation.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { getNote } from '../../common/getters';
-import { Note } from '../../../../models/entities/note';
-import { Notes } from '../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { getNote } from '../../common/getters.js';
+import { Note } from '@/models/entities/note.js';
+import { Notes } from '@/models/index.js';
export const meta = {
tags: ['notes'],
diff --git a/src/server/api/endpoints/notes/create.ts b/src/server/api/endpoints/notes/create.ts
index 9c055683f7..8c2db5213e 100644
--- a/src/server/api/endpoints/notes/create.ts
+++ b/src/server/api/endpoints/notes/create.ts
@@ -1,18 +1,18 @@
import $ from 'cafy';
import * as ms from 'ms';
import { length } from 'stringz';
-import create from '../../../../services/note/create';
-import define from '../../define';
-import { fetchMeta } from '@/misc/fetch-meta';
-import { ApiError } from '../../error';
-import { ID } from '@/misc/cafy-id';
-import { User } from '../../../../models/entities/user';
-import { Users, DriveFiles, Notes, Channels, Blockings } from '../../../../models';
-import { DriveFile } from '../../../../models/entities/drive-file';
-import { Note } from '../../../../models/entities/note';
-import { DB_MAX_NOTE_TEXT_LENGTH } from '@/misc/hard-limits';
-import { noteVisibilities } from '../../../../types';
-import { Channel } from '../../../../models/entities/channel';
+import create from '@/services/note/create.js';
+import define from '../../define.js';
+import { fetchMeta } from '@/misc/fetch-meta.js';
+import { ApiError } from '../../error.js';
+import { ID } from '@/misc/cafy-id.js';
+import { User } from '@/models/entities/user.js';
+import { Users, DriveFiles, Notes, Channels, Blockings } from '@/models/index.js';
+import { DriveFile } from '@/models/entities/drive-file.js';
+import { Note } from '@/models/entities/note.js';
+import { DB_MAX_NOTE_TEXT_LENGTH } from '@/misc/hard-limits.js';
+import { noteVisibilities } from '../../../../types.js';
+import { Channel } from '@/models/entities/channel.js';
let maxNoteTextLength = 500;
diff --git a/src/server/api/endpoints/notes/delete.ts b/src/server/api/endpoints/notes/delete.ts
index 6a0652312a..e66718001b 100644
--- a/src/server/api/endpoints/notes/delete.ts
+++ b/src/server/api/endpoints/notes/delete.ts
@@ -1,11 +1,11 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import deleteNote from '../../../../services/note/delete';
-import define from '../../define';
+import { ID } from '@/misc/cafy-id.js';
+import deleteNote from '@/services/note/delete.js';
+import define from '../../define.js';
import * as ms from 'ms';
-import { getNote } from '../../common/getters';
-import { ApiError } from '../../error';
-import { Users } from '../../../../models';
+import { getNote } from '../../common/getters.js';
+import { ApiError } from '../../error.js';
+import { Users } from '@/models/index.js';
export const meta = {
tags: ['notes'],
diff --git a/src/server/api/endpoints/notes/favorites/create.ts b/src/server/api/endpoints/notes/favorites/create.ts
index b77b5d48ff..f406d6238a 100644
--- a/src/server/api/endpoints/notes/favorites/create.ts
+++ b/src/server/api/endpoints/notes/favorites/create.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { getNote } from '../../../common/getters';
-import { NoteFavorites } from '../../../../../models';
-import { genId } from '@/misc/gen-id';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { getNote } from '../../../common/getters.js';
+import { NoteFavorites } from '@/models/index.js';
+import { genId } from '@/misc/gen-id.js';
export const meta = {
tags: ['notes', 'favorites'],
diff --git a/src/server/api/endpoints/notes/favorites/delete.ts b/src/server/api/endpoints/notes/favorites/delete.ts
index 4a1fc71a0d..624cf18948 100644
--- a/src/server/api/endpoints/notes/favorites/delete.ts
+++ b/src/server/api/endpoints/notes/favorites/delete.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { getNote } from '../../../common/getters';
-import { NoteFavorites } from '../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { getNote } from '../../../common/getters.js';
+import { NoteFavorites } from '@/models/index.js';
export const meta = {
tags: ['notes', 'favorites'],
diff --git a/src/server/api/endpoints/notes/featured.ts b/src/server/api/endpoints/notes/featured.ts
index 44c0fb23ab..aa8a8c09aa 100644
--- a/src/server/api/endpoints/notes/featured.ts
+++ b/src/server/api/endpoints/notes/featured.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import define from '../../define';
-import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
-import { Notes } from '../../../../models';
-import { generateBlockedUserQuery } from '../../common/generate-block-query';
+import define from '../../define.js';
+import { generateMutedUserQuery } from '../../common/generate-muted-user-query.js';
+import { Notes } from '@/models/index.js';
+import { generateBlockedUserQuery } from '../../common/generate-block-query.js';
export const meta = {
tags: ['notes'],
diff --git a/src/server/api/endpoints/notes/global-timeline.ts b/src/server/api/endpoints/notes/global-timeline.ts
index 96bfde5aa2..ae2408ef40 100644
--- a/src/server/api/endpoints/notes/global-timeline.ts
+++ b/src/server/api/endpoints/notes/global-timeline.ts
@@ -1,15 +1,15 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { fetchMeta } from '@/misc/fetch-meta';
-import { ApiError } from '../../error';
-import { makePaginationQuery } from '../../common/make-pagination-query';
-import { Notes } from '../../../../models';
-import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
-import { activeUsersChart } from '../../../../services/chart';
-import { generateRepliesQuery } from '../../common/generate-replies-query';
-import { generateMutedNoteQuery } from '../../common/generate-muted-note-query';
-import { generateBlockedUserQuery } from '../../common/generate-block-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { fetchMeta } from '@/misc/fetch-meta.js';
+import { ApiError } from '../../error.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
+import { Notes } from '@/models/index.js';
+import { generateMutedUserQuery } from '../../common/generate-muted-user-query.js';
+import { activeUsersChart } from '@/services/chart/index.js';
+import { generateRepliesQuery } from '../../common/generate-replies-query.js';
+import { generateMutedNoteQuery } from '../../common/generate-muted-note-query.js';
+import { generateBlockedUserQuery } from '../../common/generate-block-query.js';
export const meta = {
tags: ['notes'],
diff --git a/src/server/api/endpoints/notes/hybrid-timeline.ts b/src/server/api/endpoints/notes/hybrid-timeline.ts
index 91a36fd0cc..4bebeab998 100644
--- a/src/server/api/endpoints/notes/hybrid-timeline.ts
+++ b/src/server/api/endpoints/notes/hybrid-timeline.ts
@@ -1,18 +1,18 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { fetchMeta } from '@/misc/fetch-meta';
-import { ApiError } from '../../error';
-import { makePaginationQuery } from '../../common/make-pagination-query';
-import { Followings, Notes } from '../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { fetchMeta } from '@/misc/fetch-meta.js';
+import { ApiError } from '../../error.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
+import { Followings, Notes } from '@/models/index.js';
import { Brackets } from 'typeorm';
-import { generateVisibilityQuery } from '../../common/generate-visibility-query';
-import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
-import { activeUsersChart } from '../../../../services/chart';
-import { generateRepliesQuery } from '../../common/generate-replies-query';
-import { generateMutedNoteQuery } from '../../common/generate-muted-note-query';
-import { generateChannelQuery } from '../../common/generate-channel-query';
-import { generateBlockedUserQuery } from '../../common/generate-block-query';
+import { generateVisibilityQuery } from '../../common/generate-visibility-query.js';
+import { generateMutedUserQuery } from '../../common/generate-muted-user-query.js';
+import { activeUsersChart } from '@/services/chart/index.js';
+import { generateRepliesQuery } from '../../common/generate-replies-query.js';
+import { generateMutedNoteQuery } from '../../common/generate-muted-note-query.js';
+import { generateChannelQuery } from '../../common/generate-channel-query.js';
+import { generateBlockedUserQuery } from '../../common/generate-block-query.js';
export const meta = {
tags: ['notes'],
diff --git a/src/server/api/endpoints/notes/local-timeline.ts b/src/server/api/endpoints/notes/local-timeline.ts
index 4f481b599d..95e748fae6 100644
--- a/src/server/api/endpoints/notes/local-timeline.ts
+++ b/src/server/api/endpoints/notes/local-timeline.ts
@@ -1,18 +1,18 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { fetchMeta } from '@/misc/fetch-meta';
-import { ApiError } from '../../error';
-import { Notes } from '../../../../models';
-import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
-import { makePaginationQuery } from '../../common/make-pagination-query';
-import { generateVisibilityQuery } from '../../common/generate-visibility-query';
-import { activeUsersChart } from '../../../../services/chart';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { fetchMeta } from '@/misc/fetch-meta.js';
+import { ApiError } from '../../error.js';
+import { Notes } from '@/models/index.js';
+import { generateMutedUserQuery } from '../../common/generate-muted-user-query.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
+import { generateVisibilityQuery } from '../../common/generate-visibility-query.js';
+import { activeUsersChart } from '@/services/chart/index.js';
import { Brackets } from 'typeorm';
-import { generateRepliesQuery } from '../../common/generate-replies-query';
-import { generateMutedNoteQuery } from '../../common/generate-muted-note-query';
-import { generateChannelQuery } from '../../common/generate-channel-query';
-import { generateBlockedUserQuery } from '../../common/generate-block-query';
+import { generateRepliesQuery } from '../../common/generate-replies-query.js';
+import { generateMutedNoteQuery } from '../../common/generate-muted-note-query.js';
+import { generateChannelQuery } from '../../common/generate-channel-query.js';
+import { generateBlockedUserQuery } from '../../common/generate-block-query.js';
export const meta = {
tags: ['notes'],
diff --git a/src/server/api/endpoints/notes/mentions.ts b/src/server/api/endpoints/notes/mentions.ts
index 6a2358228b..f3b8eecad6 100644
--- a/src/server/api/endpoints/notes/mentions.ts
+++ b/src/server/api/endpoints/notes/mentions.ts
@@ -1,13 +1,13 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import read from '../../../../services/note/read';
-import { Notes, Followings } from '../../../../models';
-import { generateVisibilityQuery } from '../../common/generate-visibility-query';
-import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
-import { makePaginationQuery } from '../../common/make-pagination-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import read from '@/services/note/read.js';
+import { Notes, Followings } from '@/models/index.js';
+import { generateVisibilityQuery } from '../../common/generate-visibility-query.js';
+import { generateMutedUserQuery } from '../../common/generate-muted-user-query.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
import { Brackets } from 'typeorm';
-import { generateBlockedUserQuery } from '../../common/generate-block-query';
+import { generateBlockedUserQuery } from '../../common/generate-block-query.js';
export const meta = {
tags: ['notes'],
diff --git a/src/server/api/endpoints/notes/polls/recommendation.ts b/src/server/api/endpoints/notes/polls/recommendation.ts
index af8a527398..194c2ae276 100644
--- a/src/server/api/endpoints/notes/polls/recommendation.ts
+++ b/src/server/api/endpoints/notes/polls/recommendation.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
-import define from '../../../define';
-import { Polls, Mutings, Notes, PollVotes } from '../../../../../models';
+import define from '../../../define.js';
+import { Polls, Mutings, Notes, PollVotes } from '@/models/index.js';
import { Brackets, In } from 'typeorm';
export const meta = {
diff --git a/src/server/api/endpoints/notes/polls/vote.ts b/src/server/api/endpoints/notes/polls/vote.ts
index 6f2892960f..0fde90b592 100644
--- a/src/server/api/endpoints/notes/polls/vote.ts
+++ b/src/server/api/endpoints/notes/polls/vote.ts
@@ -1,18 +1,18 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import { publishNoteStream } from '../../../../../services/stream';
-import { createNotification } from '../../../../../services/create-notification';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { getNote } from '../../../common/getters';
-import { deliver } from '../../../../../queue';
-import { renderActivity } from '../../../../../remote/activitypub/renderer';
-import renderVote from '../../../../../remote/activitypub/renderer/vote';
-import { deliverQuestionUpdate } from '../../../../../services/note/polls/update';
-import { PollVotes, NoteWatchings, Users, Polls, Blockings } from '../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import { publishNoteStream } from '@/services/stream.js';
+import { createNotification } from '@/services/create-notification.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { getNote } from '../../../common/getters.js';
+import { deliver } from '@/queue/index.js';
+import { renderActivity } from '@/remote/activitypub/renderer/index.js';
+import renderVote from '@/remote/activitypub/renderer/vote.js';
+import { deliverQuestionUpdate } from '@/services/note/polls/update.js';
+import { PollVotes, NoteWatchings, Users, Polls, Blockings } from '@/models/index.js';
import { Not } from 'typeorm';
-import { IRemoteUser } from '../../../../../models/entities/user';
-import { genId } from '@/misc/gen-id';
+import { IRemoteUser } from '@/models/entities/user.js';
+import { genId } from '@/misc/gen-id.js';
export const meta = {
tags: ['notes'],
diff --git a/src/server/api/endpoints/notes/reactions.ts b/src/server/api/endpoints/notes/reactions.ts
index df780bfa06..a67851d3b7 100644
--- a/src/server/api/endpoints/notes/reactions.ts
+++ b/src/server/api/endpoints/notes/reactions.ts
@@ -1,11 +1,11 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { getNote } from '../../common/getters';
-import { ApiError } from '../../error';
-import { NoteReactions } from '../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { getNote } from '../../common/getters.js';
+import { ApiError } from '../../error.js';
+import { NoteReactions } from '@/models/index.js';
import { DeepPartial } from 'typeorm';
-import { NoteReaction } from '../../../../models/entities/note-reaction';
+import { NoteReaction } from '@/models/entities/note-reaction.js';
export const meta = {
tags: ['notes', 'reactions'],
diff --git a/src/server/api/endpoints/notes/reactions/create.ts b/src/server/api/endpoints/notes/reactions/create.ts
index 3243332c50..41109746f8 100644
--- a/src/server/api/endpoints/notes/reactions/create.ts
+++ b/src/server/api/endpoints/notes/reactions/create.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import createReaction from '../../../../../services/note/reaction/create';
-import define from '../../../define';
-import { getNote } from '../../../common/getters';
-import { ApiError } from '../../../error';
+import { ID } from '@/misc/cafy-id.js';
+import createReaction from '@/services/note/reaction/create.js';
+import define from '../../../define.js';
+import { getNote } from '../../../common/getters.js';
+import { ApiError } from '../../../error.js';
export const meta = {
tags: ['reactions', 'notes'],
diff --git a/src/server/api/endpoints/notes/reactions/delete.ts b/src/server/api/endpoints/notes/reactions/delete.ts
index b18cb533d6..b9eaf6978c 100644
--- a/src/server/api/endpoints/notes/reactions/delete.ts
+++ b/src/server/api/endpoints/notes/reactions/delete.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
import * as ms from 'ms';
-import deleteReaction from '../../../../../services/note/reaction/delete';
-import { getNote } from '../../../common/getters';
-import { ApiError } from '../../../error';
+import deleteReaction from '@/services/note/reaction/delete.js';
+import { getNote } from '../../../common/getters.js';
+import { ApiError } from '../../../error.js';
export const meta = {
tags: ['reactions', 'notes'],
diff --git a/src/server/api/endpoints/notes/renotes.ts b/src/server/api/endpoints/notes/renotes.ts
index 5e3b3ccbc6..b08173f249 100644
--- a/src/server/api/endpoints/notes/renotes.ts
+++ b/src/server/api/endpoints/notes/renotes.ts
@@ -1,13 +1,13 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { getNote } from '../../common/getters';
-import { ApiError } from '../../error';
-import { generateVisibilityQuery } from '../../common/generate-visibility-query';
-import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
-import { makePaginationQuery } from '../../common/make-pagination-query';
-import { Notes } from '../../../../models';
-import { generateBlockedUserQuery } from '../../common/generate-block-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { getNote } from '../../common/getters.js';
+import { ApiError } from '../../error.js';
+import { generateVisibilityQuery } from '../../common/generate-visibility-query.js';
+import { generateMutedUserQuery } from '../../common/generate-muted-user-query.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
+import { Notes } from '@/models/index.js';
+import { generateBlockedUserQuery } from '../../common/generate-block-query.js';
export const meta = {
tags: ['notes'],
diff --git a/src/server/api/endpoints/notes/replies.ts b/src/server/api/endpoints/notes/replies.ts
index 7960078c8e..5a96c16fd2 100644
--- a/src/server/api/endpoints/notes/replies.ts
+++ b/src/server/api/endpoints/notes/replies.ts
@@ -1,11 +1,11 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { Notes } from '../../../../models';
-import { makePaginationQuery } from '../../common/make-pagination-query';
-import { generateVisibilityQuery } from '../../common/generate-visibility-query';
-import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
-import { generateBlockedUserQuery } from '../../common/generate-block-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { Notes } from '@/models/index.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
+import { generateVisibilityQuery } from '../../common/generate-visibility-query.js';
+import { generateMutedUserQuery } from '../../common/generate-muted-user-query.js';
+import { generateBlockedUserQuery } from '../../common/generate-block-query.js';
export const meta = {
tags: ['notes'],
diff --git a/src/server/api/endpoints/notes/search-by-tag.ts b/src/server/api/endpoints/notes/search-by-tag.ts
index 39d99babac..2c0ad74635 100644
--- a/src/server/api/endpoints/notes/search-by-tag.ts
+++ b/src/server/api/endpoints/notes/search-by-tag.ts
@@ -1,14 +1,14 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { makePaginationQuery } from '../../common/make-pagination-query';
-import { Notes } from '../../../../models';
-import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
-import { generateVisibilityQuery } from '../../common/generate-visibility-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
+import { Notes } from '@/models/index.js';
+import { generateMutedUserQuery } from '../../common/generate-muted-user-query.js';
+import { generateVisibilityQuery } from '../../common/generate-visibility-query.js';
import { Brackets } from 'typeorm';
-import { safeForSql } from '@/misc/safe-for-sql';
-import { normalizeForSearch } from '@/misc/normalize-for-search';
-import { generateBlockedUserQuery } from '../../common/generate-block-query';
+import { safeForSql } from '@/misc/safe-for-sql.js';
+import { normalizeForSearch } from '@/misc/normalize-for-search.js';
+import { generateBlockedUserQuery } from '../../common/generate-block-query.js';
export const meta = {
tags: ['notes', 'hashtags'],
diff --git a/src/server/api/endpoints/notes/search.ts b/src/server/api/endpoints/notes/search.ts
index 0e0eaa06a8..45442c2548 100644
--- a/src/server/api/endpoints/notes/search.ts
+++ b/src/server/api/endpoints/notes/search.ts
@@ -1,14 +1,14 @@
import $ from 'cafy';
-import es from '../../../../db/elasticsearch';
-import define from '../../define';
-import { Notes } from '../../../../models';
+import es from '../../../../db/elasticsearch.js';
+import define from '../../define.js';
+import { Notes } from '@/models/index.js';
import { In } from 'typeorm';
-import { ID } from '@/misc/cafy-id';
-import config from '@/config';
-import { makePaginationQuery } from '../../common/make-pagination-query';
-import { generateVisibilityQuery } from '../../common/generate-visibility-query';
-import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
-import { generateBlockedUserQuery } from '../../common/generate-block-query';
+import { ID } from '@/misc/cafy-id.js';
+import config from '@/config/index.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
+import { generateVisibilityQuery } from '../../common/generate-visibility-query.js';
+import { generateMutedUserQuery } from '../../common/generate-muted-user-query.js';
+import { generateBlockedUserQuery } from '../../common/generate-block-query.js';
export const meta = {
tags: ['notes'],
diff --git a/src/server/api/endpoints/notes/show.ts b/src/server/api/endpoints/notes/show.ts
index fc8e30788d..8387279b17 100644
--- a/src/server/api/endpoints/notes/show.ts
+++ b/src/server/api/endpoints/notes/show.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { getNote } from '../../common/getters';
-import { ApiError } from '../../error';
-import { Notes } from '../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { getNote } from '../../common/getters.js';
+import { ApiError } from '../../error.js';
+import { Notes } from '@/models/index.js';
export const meta = {
tags: ['notes'],
diff --git a/src/server/api/endpoints/notes/state.ts b/src/server/api/endpoints/notes/state.ts
index 8af09f07dd..bd2e85ea9d 100644
--- a/src/server/api/endpoints/notes/state.ts
+++ b/src/server/api/endpoints/notes/state.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { NoteFavorites, NoteWatchings } from '../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { NoteFavorites, NoteWatchings } from '@/models/index.js';
export const meta = {
tags: ['notes'],
diff --git a/src/server/api/endpoints/notes/timeline.ts b/src/server/api/endpoints/notes/timeline.ts
index 5f03400919..e1fd2d5fca 100644
--- a/src/server/api/endpoints/notes/timeline.ts
+++ b/src/server/api/endpoints/notes/timeline.ts
@@ -1,16 +1,16 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { makePaginationQuery } from '../../common/make-pagination-query';
-import { Notes, Followings } from '../../../../models';
-import { generateVisibilityQuery } from '../../common/generate-visibility-query';
-import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
-import { activeUsersChart } from '../../../../services/chart';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
+import { Notes, Followings } from '@/models/index.js';
+import { generateVisibilityQuery } from '../../common/generate-visibility-query.js';
+import { generateMutedUserQuery } from '../../common/generate-muted-user-query.js';
+import { activeUsersChart } from '@/services/chart/index.js';
import { Brackets } from 'typeorm';
-import { generateRepliesQuery } from '../../common/generate-replies-query';
-import { generateMutedNoteQuery } from '../../common/generate-muted-note-query';
-import { generateChannelQuery } from '../../common/generate-channel-query';
-import { generateBlockedUserQuery } from '../../common/generate-block-query';
+import { generateRepliesQuery } from '../../common/generate-replies-query.js';
+import { generateMutedNoteQuery } from '../../common/generate-muted-note-query.js';
+import { generateChannelQuery } from '../../common/generate-channel-query.js';
+import { generateBlockedUserQuery } from '../../common/generate-block-query.js';
export const meta = {
tags: ['notes'],
diff --git a/src/server/api/endpoints/notes/translate.ts b/src/server/api/endpoints/notes/translate.ts
index 67c02432c8..66354a2ea4 100644
--- a/src/server/api/endpoints/notes/translate.ts
+++ b/src/server/api/endpoints/notes/translate.ts
@@ -1,13 +1,13 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { getNote } from '../../common/getters';
-import { ApiError } from '../../error';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { getNote } from '../../common/getters.js';
+import { ApiError } from '../../error.js';
import fetch from 'node-fetch';
-import config from '@/config';
-import { getAgentByUrl } from '@/misc/fetch';
+import config from '@/config/index.js';
+import { getAgentByUrl } from '@/misc/fetch.js';
import { URLSearchParams } from 'url';
-import { fetchMeta } from '@/misc/fetch-meta';
+import { fetchMeta } from '@/misc/fetch-meta.js';
export const meta = {
tags: ['notes'],
diff --git a/src/server/api/endpoints/notes/unrenote.ts b/src/server/api/endpoints/notes/unrenote.ts
index 5e016f293f..eec7a21515 100644
--- a/src/server/api/endpoints/notes/unrenote.ts
+++ b/src/server/api/endpoints/notes/unrenote.ts
@@ -1,11 +1,11 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import deleteNote from '../../../../services/note/delete';
-import define from '../../define';
+import { ID } from '@/misc/cafy-id.js';
+import deleteNote from '@/services/note/delete.js';
+import define from '../../define.js';
import * as ms from 'ms';
-import { getNote } from '../../common/getters';
-import { ApiError } from '../../error';
-import { Notes, Users } from '../../../../models';
+import { getNote } from '../../common/getters.js';
+import { ApiError } from '../../error.js';
+import { Notes, Users } from '@/models/index.js';
export const meta = {
tags: ['notes'],
diff --git a/src/server/api/endpoints/notes/user-list-timeline.ts b/src/server/api/endpoints/notes/user-list-timeline.ts
index e160fff25a..15abaa6c22 100644
--- a/src/server/api/endpoints/notes/user-list-timeline.ts
+++ b/src/server/api/endpoints/notes/user-list-timeline.ts
@@ -1,11 +1,11 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { UserLists, UserListJoinings, Notes } from '../../../../models';
-import { makePaginationQuery } from '../../common/make-pagination-query';
-import { generateVisibilityQuery } from '../../common/generate-visibility-query';
-import { activeUsersChart } from '../../../../services/chart';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { UserLists, UserListJoinings, Notes } from '@/models/index.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
+import { generateVisibilityQuery } from '../../common/generate-visibility-query.js';
+import { activeUsersChart } from '@/services/chart/index.js';
import { Brackets } from 'typeorm';
export const meta = {
diff --git a/src/server/api/endpoints/notes/watching/create.ts b/src/server/api/endpoints/notes/watching/create.ts
index 74d31fe1a3..1c2c1652ae 100644
--- a/src/server/api/endpoints/notes/watching/create.ts
+++ b/src/server/api/endpoints/notes/watching/create.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import watch from '../../../../../services/note/watch';
-import { getNote } from '../../../common/getters';
-import { ApiError } from '../../../error';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import watch from '@/services/note/watch.js';
+import { getNote } from '../../../common/getters.js';
+import { ApiError } from '../../../error.js';
export const meta = {
tags: ['notes'],
diff --git a/src/server/api/endpoints/notes/watching/delete.ts b/src/server/api/endpoints/notes/watching/delete.ts
index a91d72be05..b418d3af2b 100644
--- a/src/server/api/endpoints/notes/watching/delete.ts
+++ b/src/server/api/endpoints/notes/watching/delete.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import unwatch from '../../../../../services/note/unwatch';
-import { getNote } from '../../../common/getters';
-import { ApiError } from '../../../error';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import unwatch from '@/services/note/unwatch.js';
+import { getNote } from '../../../common/getters.js';
+import { ApiError } from '../../../error.js';
export const meta = {
tags: ['notes'],
diff --git a/src/server/api/endpoints/notifications/create.ts b/src/server/api/endpoints/notifications/create.ts
index 6267699e90..5231d9011b 100644
--- a/src/server/api/endpoints/notifications/create.ts
+++ b/src/server/api/endpoints/notifications/create.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
-import define from '../../define';
-import { createNotification } from '../../../../services/create-notification';
+import define from '../../define.js';
+import { createNotification } from '@/services/create-notification.js';
export const meta = {
tags: ['notifications'],
diff --git a/src/server/api/endpoints/notifications/mark-all-as-read.ts b/src/server/api/endpoints/notifications/mark-all-as-read.ts
index cce54587c7..d0dc7be31b 100644
--- a/src/server/api/endpoints/notifications/mark-all-as-read.ts
+++ b/src/server/api/endpoints/notifications/mark-all-as-read.ts
@@ -1,6 +1,6 @@
-import { publishMainStream } from '../../../../services/stream';
-import define from '../../define';
-import { Notifications } from '../../../../models';
+import { publishMainStream } from '@/services/stream.js';
+import define from '../../define.js';
+import { Notifications } from '@/models/index.js';
export const meta = {
tags: ['notifications', 'account'],
diff --git a/src/server/api/endpoints/notifications/read.ts b/src/server/api/endpoints/notifications/read.ts
index fe8e5ba44f..94140db82e 100644
--- a/src/server/api/endpoints/notifications/read.ts
+++ b/src/server/api/endpoints/notifications/read.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import { publishMainStream } from '../../../../services/stream';
-import define from '../../define';
-import { Notifications } from '../../../../models';
-import { readNotification } from '../../common/read-notification';
-import { ApiError } from '../../error';
+import { ID } from '@/misc/cafy-id.js';
+import { publishMainStream } from '@/services/stream.js';
+import define from '../../define.js';
+import { Notifications } from '@/models/index.js';
+import { readNotification } from '../../common/read-notification.js';
+import { ApiError } from '../../error.js';
export const meta = {
tags: ['notifications', 'account'],
diff --git a/src/server/api/endpoints/page-push.ts b/src/server/api/endpoints/page-push.ts
index 9ec9f9184c..1d48303394 100644
--- a/src/server/api/endpoints/page-push.ts
+++ b/src/server/api/endpoints/page-push.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import define from '../define';
-import { ID } from '@/misc/cafy-id';
-import { publishMainStream } from '../../../services/stream';
-import { Users, Pages } from '../../../models';
-import { ApiError } from '../error';
+import define from '../define.js';
+import { ID } from '@/misc/cafy-id.js';
+import { publishMainStream } from '@/services/stream.js';
+import { Users, Pages } from '@/models/index.js';
+import { ApiError } from '../error.js';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/pages/create.ts b/src/server/api/endpoints/pages/create.ts
index 07e0969bdd..4f8a09b02a 100644
--- a/src/server/api/endpoints/pages/create.ts
+++ b/src/server/api/endpoints/pages/create.ts
@@ -1,11 +1,11 @@
import $ from 'cafy';
import * as ms from 'ms';
-import define from '../../define';
-import { ID } from '@/misc/cafy-id';
-import { Pages, DriveFiles } from '../../../../models';
-import { genId } from '@/misc/gen-id';
-import { Page } from '../../../../models/entities/page';
-import { ApiError } from '../../error';
+import define from '../../define.js';
+import { ID } from '@/misc/cafy-id.js';
+import { Pages, DriveFiles } from '@/models/index.js';
+import { genId } from '@/misc/gen-id.js';
+import { Page } from '@/models/entities/page.js';
+import { ApiError } from '../../error.js';
export const meta = {
tags: ['pages'],
diff --git a/src/server/api/endpoints/pages/delete.ts b/src/server/api/endpoints/pages/delete.ts
index 12a3360e43..8777c65e42 100644
--- a/src/server/api/endpoints/pages/delete.ts
+++ b/src/server/api/endpoints/pages/delete.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { Pages } from '../../../../models';
-import { ID } from '@/misc/cafy-id';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { Pages } from '@/models/index.js';
+import { ID } from '@/misc/cafy-id.js';
export const meta = {
tags: ['pages'],
diff --git a/src/server/api/endpoints/pages/featured.ts b/src/server/api/endpoints/pages/featured.ts
index 19802d0448..68adac930d 100644
--- a/src/server/api/endpoints/pages/featured.ts
+++ b/src/server/api/endpoints/pages/featured.ts
@@ -1,5 +1,5 @@
-import define from '../../define';
-import { Pages } from '../../../../models';
+import define from '../../define.js';
+import { Pages } from '@/models/index.js';
export const meta = {
tags: ['pages'],
diff --git a/src/server/api/endpoints/pages/like.ts b/src/server/api/endpoints/pages/like.ts
index bed8e975ec..ac0f577eb8 100644
--- a/src/server/api/endpoints/pages/like.ts
+++ b/src/server/api/endpoints/pages/like.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { Pages, PageLikes } from '../../../../models';
-import { genId } from '@/misc/gen-id';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { Pages, PageLikes } from '@/models/index.js';
+import { genId } from '@/misc/gen-id.js';
export const meta = {
tags: ['pages'],
diff --git a/src/server/api/endpoints/pages/show.ts b/src/server/api/endpoints/pages/show.ts
index d4d04bccff..21084d3b9a 100644
--- a/src/server/api/endpoints/pages/show.ts
+++ b/src/server/api/endpoints/pages/show.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { Pages, Users } from '../../../../models';
-import { ID } from '@/misc/cafy-id';
-import { Page } from '../../../../models/entities/page';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { Pages, Users } from '@/models/index.js';
+import { ID } from '@/misc/cafy-id.js';
+import { Page } from '@/models/entities/page.js';
export const meta = {
tags: ['pages'],
diff --git a/src/server/api/endpoints/pages/unlike.ts b/src/server/api/endpoints/pages/unlike.ts
index a5e22a2c7b..dddecccf62 100644
--- a/src/server/api/endpoints/pages/unlike.ts
+++ b/src/server/api/endpoints/pages/unlike.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { Pages, PageLikes } from '../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { Pages, PageLikes } from '@/models/index.js';
export const meta = {
tags: ['pages'],
diff --git a/src/server/api/endpoints/pages/update.ts b/src/server/api/endpoints/pages/update.ts
index 6d1ae4c6fe..d1df9b08a2 100644
--- a/src/server/api/endpoints/pages/update.ts
+++ b/src/server/api/endpoints/pages/update.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
import * as ms from 'ms';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { Pages, DriveFiles } from '../../../../models';
-import { ID } from '@/misc/cafy-id';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { Pages, DriveFiles } from '@/models/index.js';
+import { ID } from '@/misc/cafy-id.js';
import { Not } from 'typeorm';
export const meta = {
diff --git a/src/server/api/endpoints/ping.ts b/src/server/api/endpoints/ping.ts
index 0b1bb6e164..1d342dac33 100644
--- a/src/server/api/endpoints/ping.ts
+++ b/src/server/api/endpoints/ping.ts
@@ -1,4 +1,4 @@
-import define from '../define';
+import define from '../define.js';
export const meta = {
requireCredential: false as const,
diff --git a/src/server/api/endpoints/pinned-users.ts b/src/server/api/endpoints/pinned-users.ts
index bcef072fed..0ea5e9b390 100644
--- a/src/server/api/endpoints/pinned-users.ts
+++ b/src/server/api/endpoints/pinned-users.ts
@@ -1,8 +1,8 @@
-import define from '../define';
-import { Users } from '../../../models';
-import { fetchMeta } from '@/misc/fetch-meta';
-import { parseAcct } from '@/misc/acct';
-import { User } from '../../../models/entities/user';
+import define from '../define.js';
+import { Users } from '@/models/index.js';
+import { fetchMeta } from '@/misc/fetch-meta.js';
+import { parseAcct } from '@/misc/acct.js';
+import { User } from '@/models/entities/user.js';
export const meta = {
tags: ['users'],
diff --git a/src/server/api/endpoints/promo/read.ts b/src/server/api/endpoints/promo/read.ts
index 32b543295d..92a6768988 100644
--- a/src/server/api/endpoints/promo/read.ts
+++ b/src/server/api/endpoints/promo/read.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { getNote } from '../../common/getters';
-import { PromoReads } from '../../../../models';
-import { genId } from '@/misc/gen-id';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { getNote } from '../../common/getters.js';
+import { PromoReads } from '@/models/index.js';
+import { genId } from '@/misc/gen-id.js';
export const meta = {
tags: ['notes'],
diff --git a/src/server/api/endpoints/request-reset-password.ts b/src/server/api/endpoints/request-reset-password.ts
index c880df7527..754a5a1c87 100644
--- a/src/server/api/endpoints/request-reset-password.ts
+++ b/src/server/api/endpoints/request-reset-password.ts
@@ -1,13 +1,13 @@
import $ from 'cafy';
-import { publishMainStream } from '../../../services/stream';
-import define from '../define';
+import { publishMainStream } from '@/services/stream.js';
+import define from '../define.js';
import rndstr from 'rndstr';
-import config from '@/config';
+import config from '@/config/index.js';
import * as ms from 'ms';
-import { Users, UserProfiles, PasswordResetRequests } from '../../../models';
-import { sendEmail } from '../../../services/send-email';
-import { ApiError } from '../error';
-import { genId } from '@/misc/gen-id';
+import { Users, UserProfiles, PasswordResetRequests } from '@/models/index.js';
+import { sendEmail } from '@/services/send-email.js';
+import { ApiError } from '../error.js';
+import { genId } from '@/misc/gen-id.js';
import { IsNull } from 'typeorm';
export const meta = {
diff --git a/src/server/api/endpoints/reset-db.ts b/src/server/api/endpoints/reset-db.ts
index f430869302..c6ad8303fa 100644
--- a/src/server/api/endpoints/reset-db.ts
+++ b/src/server/api/endpoints/reset-db.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import define from '../define';
-import { ApiError } from '../error';
-import { resetDb } from '@/db/postgre';
+import define from '../define.js';
+import { ApiError } from '../error.js';
+import { resetDb } from '@/db/postgre.js';
export const meta = {
requireCredential: false as const,
diff --git a/src/server/api/endpoints/reset-password.ts b/src/server/api/endpoints/reset-password.ts
index 5f79bdbd00..f32e499e01 100644
--- a/src/server/api/endpoints/reset-password.ts
+++ b/src/server/api/endpoints/reset-password.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
import * as bcrypt from 'bcryptjs';
-import { publishMainStream } from '../../../services/stream';
-import define from '../define';
-import { Users, UserProfiles, PasswordResetRequests } from '../../../models';
-import { ApiError } from '../error';
+import { publishMainStream } from '@/services/stream.js';
+import define from '../define.js';
+import { Users, UserProfiles, PasswordResetRequests } from '@/models/index.js';
+import { ApiError } from '../error.js';
export const meta = {
requireCredential: false as const,
diff --git a/src/server/api/endpoints/room/show.ts b/src/server/api/endpoints/room/show.ts
index 85cd57aef4..dcedde5db3 100644
--- a/src/server/api/endpoints/room/show.ts
+++ b/src/server/api/endpoints/room/show.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { Users, UserProfiles } from '../../../../models';
-import { ID } from '@/misc/cafy-id';
-import { toPunyNullable } from '@/misc/convert-host';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { Users, UserProfiles } from '@/models/index.js';
+import { ID } from '@/misc/cafy-id.js';
+import { toPunyNullable } from '@/misc/convert-host.js';
export const meta = {
tags: ['room'],
diff --git a/src/server/api/endpoints/room/update.ts b/src/server/api/endpoints/room/update.ts
index af8b80be9a..2ee44e157c 100644
--- a/src/server/api/endpoints/room/update.ts
+++ b/src/server/api/endpoints/room/update.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import { publishMainStream } from '../../../../services/stream';
-import define from '../../define';
-import { Users, UserProfiles } from '../../../../models';
+import { publishMainStream } from '@/services/stream.js';
+import define from '../../define.js';
+import { Users, UserProfiles } from '@/models/index.js';
export const meta = {
tags: ['room'],
diff --git a/src/server/api/endpoints/server-info.ts b/src/server/api/endpoints/server-info.ts
index 4e636d331c..23a7aabba4 100644
--- a/src/server/api/endpoints/server-info.ts
+++ b/src/server/api/endpoints/server-info.ts
@@ -1,6 +1,6 @@
import * as os from 'os';
import * as si from 'systeminformation';
-import define from '../define';
+import define from '../define.js';
export const meta = {
requireCredential: false as const,
diff --git a/src/server/api/endpoints/stats.ts b/src/server/api/endpoints/stats.ts
index f9c17f86eb..84b56c0ba9 100644
--- a/src/server/api/endpoints/stats.ts
+++ b/src/server/api/endpoints/stats.ts
@@ -1,6 +1,6 @@
-import define from '../define';
-import { NoteReactions, Notes, Users } from '../../../models';
-import { federationChart, driveChart } from '../../../services/chart';
+import define from '../define.js';
+import { NoteReactions, Notes, Users } from '@/models/index.js';
+import { federationChart, driveChart } from '@/services/chart/index.js';
export const meta = {
requireCredential: false as const,
diff --git a/src/server/api/endpoints/sw/register.ts b/src/server/api/endpoints/sw/register.ts
index 43d4118df6..c008e6ec70 100644
--- a/src/server/api/endpoints/sw/register.ts
+++ b/src/server/api/endpoints/sw/register.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import define from '../../define';
-import { fetchMeta } from '@/misc/fetch-meta';
-import { genId } from '@/misc/gen-id';
-import { SwSubscriptions } from '../../../../models';
+import define from '../../define.js';
+import { fetchMeta } from '@/misc/fetch-meta.js';
+import { genId } from '@/misc/gen-id.js';
+import { SwSubscriptions } from '@/models/index.js';
export const meta = {
tags: ['account'],
diff --git a/src/server/api/endpoints/username/available.ts b/src/server/api/endpoints/username/available.ts
index cd434b582e..38442fdc9c 100644
--- a/src/server/api/endpoints/username/available.ts
+++ b/src/server/api/endpoints/username/available.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
-import define from '../../define';
-import { Users, UsedUsernames } from '../../../../models';
+import define from '../../define.js';
+import { Users, UsedUsernames } from '@/models/index.js';
export const meta = {
tags: ['users'],
diff --git a/src/server/api/endpoints/users.ts b/src/server/api/endpoints/users.ts
index 3c30f459da..462055b285 100644
--- a/src/server/api/endpoints/users.ts
+++ b/src/server/api/endpoints/users.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import define from '../define';
-import { Users } from '../../../models';
-import { generateMutedUserQueryForUsers } from '../common/generate-muted-user-query';
-import { generateBlockedUserQuery } from '../common/generate-block-query';
+import define from '../define.js';
+import { Users } from '@/models/index.js';
+import { generateMutedUserQueryForUsers } from '../common/generate-muted-user-query.js';
+import { generateBlockedUserQuery } from '../common/generate-block-query.js';
export const meta = {
tags: ['users'],
diff --git a/src/server/api/endpoints/users/clips.ts b/src/server/api/endpoints/users/clips.ts
index 12aa964034..8e53843bb3 100644
--- a/src/server/api/endpoints/users/clips.ts
+++ b/src/server/api/endpoints/users/clips.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { Clips } from '../../../../models';
-import { makePaginationQuery } from '../../common/make-pagination-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { Clips } from '@/models/index.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
export const meta = {
tags: ['users', 'clips'],
diff --git a/src/server/api/endpoints/users/followers.ts b/src/server/api/endpoints/users/followers.ts
index c9fe36e4e4..896c3ca1cd 100644
--- a/src/server/api/endpoints/users/followers.ts
+++ b/src/server/api/endpoints/users/followers.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { Users, Followings } from '../../../../models';
-import { makePaginationQuery } from '../../common/make-pagination-query';
-import { toPunyNullable } from '@/misc/convert-host';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { Users, Followings } from '@/models/index.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
+import { toPunyNullable } from '@/misc/convert-host.js';
export const meta = {
tags: ['users'],
diff --git a/src/server/api/endpoints/users/following.ts b/src/server/api/endpoints/users/following.ts
index c3dd90ff7e..ab60cc02fb 100644
--- a/src/server/api/endpoints/users/following.ts
+++ b/src/server/api/endpoints/users/following.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { Users, Followings } from '../../../../models';
-import { makePaginationQuery } from '../../common/make-pagination-query';
-import { toPunyNullable } from '@/misc/convert-host';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { Users, Followings } from '@/models/index.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
+import { toPunyNullable } from '@/misc/convert-host.js';
export const meta = {
tags: ['users'],
diff --git a/src/server/api/endpoints/users/gallery/posts.ts b/src/server/api/endpoints/users/gallery/posts.ts
index 1da6bced5c..7c5a7d1cf3 100644
--- a/src/server/api/endpoints/users/gallery/posts.ts
+++ b/src/server/api/endpoints/users/gallery/posts.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { GalleryPosts } from '../../../../../models';
-import { makePaginationQuery } from '../../../common/make-pagination-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { GalleryPosts } from '@/models/index.js';
+import { makePaginationQuery } from '../../../common/make-pagination-query.js';
export const meta = {
tags: ['users', 'gallery'],
diff --git a/src/server/api/endpoints/users/get-frequently-replied-users.ts b/src/server/api/endpoints/users/get-frequently-replied-users.ts
index bdfb7772ae..4207aa004c 100644
--- a/src/server/api/endpoints/users/get-frequently-replied-users.ts
+++ b/src/server/api/endpoints/users/get-frequently-replied-users.ts
@@ -1,11 +1,11 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { maximum } from '../../../../prelude/array';
-import { ApiError } from '../../error';
-import { getUser } from '../../common/getters';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { maximum } from '../../../../prelude/array.js';
+import { ApiError } from '../../error.js';
+import { getUser } from '../../common/getters.js';
import { Not, In, IsNull } from 'typeorm';
-import { Notes, Users } from '../../../../models';
+import { Notes, Users } from '@/models/index.js';
export const meta = {
tags: ['users'],
diff --git a/src/server/api/endpoints/users/groups/create.ts b/src/server/api/endpoints/users/groups/create.ts
index 2cd0653baa..7c3d5d258d 100644
--- a/src/server/api/endpoints/users/groups/create.ts
+++ b/src/server/api/endpoints/users/groups/create.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import define from '../../../define';
-import { UserGroups, UserGroupJoinings } from '../../../../../models';
-import { genId } from '@/misc/gen-id';
-import { UserGroup } from '../../../../../models/entities/user-group';
-import { UserGroupJoining } from '../../../../../models/entities/user-group-joining';
+import define from '../../../define.js';
+import { UserGroups, UserGroupJoinings } from '@/models/index.js';
+import { genId } from '@/misc/gen-id.js';
+import { UserGroup } from '@/models/entities/user-group.js';
+import { UserGroupJoining } from '@/models/entities/user-group-joining.js';
export const meta = {
tags: ['groups'],
diff --git a/src/server/api/endpoints/users/groups/delete.ts b/src/server/api/endpoints/users/groups/delete.ts
index 4c4a8c15b1..71d6c615a7 100644
--- a/src/server/api/endpoints/users/groups/delete.ts
+++ b/src/server/api/endpoints/users/groups/delete.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { UserGroups } from '../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { UserGroups } from '@/models/index.js';
export const meta = {
tags: ['groups'],
diff --git a/src/server/api/endpoints/users/groups/invitations/accept.ts b/src/server/api/endpoints/users/groups/invitations/accept.ts
index 943d158661..6eab46337d 100644
--- a/src/server/api/endpoints/users/groups/invitations/accept.ts
+++ b/src/server/api/endpoints/users/groups/invitations/accept.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../../define';
-import { ApiError } from '../../../../error';
-import { UserGroupJoinings, UserGroupInvitations } from '../../../../../../models';
-import { genId } from '@/misc/gen-id';
-import { UserGroupJoining } from '../../../../../../models/entities/user-group-joining';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../../define.js';
+import { ApiError } from '../../../../error.js';
+import { UserGroupJoinings, UserGroupInvitations } from '@/models/index.js';
+import { genId } from '@/misc/gen-id.js';
+import { UserGroupJoining } from '@/models/entities/user-group-joining.js';
export const meta = {
tags: ['groups', 'users'],
diff --git a/src/server/api/endpoints/users/groups/invitations/reject.ts b/src/server/api/endpoints/users/groups/invitations/reject.ts
index 4bc902ae5d..ff0ff58f3c 100644
--- a/src/server/api/endpoints/users/groups/invitations/reject.ts
+++ b/src/server/api/endpoints/users/groups/invitations/reject.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../../define';
-import { ApiError } from '../../../../error';
-import { UserGroupInvitations } from '../../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../../define.js';
+import { ApiError } from '../../../../error.js';
+import { UserGroupInvitations } from '@/models/index.js';
export const meta = {
tags: ['groups', 'users'],
diff --git a/src/server/api/endpoints/users/groups/invite.ts b/src/server/api/endpoints/users/groups/invite.ts
index 688b18f69d..2a4af72662 100644
--- a/src/server/api/endpoints/users/groups/invite.ts
+++ b/src/server/api/endpoints/users/groups/invite.ts
@@ -1,12 +1,12 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { getUser } from '../../../common/getters';
-import { UserGroups, UserGroupJoinings, UserGroupInvitations } from '../../../../../models';
-import { genId } from '@/misc/gen-id';
-import { UserGroupInvitation } from '../../../../../models/entities/user-group-invitation';
-import { createNotification } from '../../../../../services/create-notification';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { getUser } from '../../../common/getters.js';
+import { UserGroups, UserGroupJoinings, UserGroupInvitations } from '@/models/index.js';
+import { genId } from '@/misc/gen-id.js';
+import { UserGroupInvitation } from '@/models/entities/user-group-invitation.js';
+import { createNotification } from '@/services/create-notification.js';
export const meta = {
tags: ['groups', 'users'],
diff --git a/src/server/api/endpoints/users/groups/joined.ts b/src/server/api/endpoints/users/groups/joined.ts
index b25341c854..4066c6ddc3 100644
--- a/src/server/api/endpoints/users/groups/joined.ts
+++ b/src/server/api/endpoints/users/groups/joined.ts
@@ -1,5 +1,5 @@
-import define from '../../../define';
-import { UserGroups, UserGroupJoinings } from '../../../../../models';
+import define from '../../../define.js';
+import { UserGroups, UserGroupJoinings } from '@/models/index.js';
import { Not, In } from 'typeorm';
export const meta = {
diff --git a/src/server/api/endpoints/users/groups/owned.ts b/src/server/api/endpoints/users/groups/owned.ts
index e0b003c9e4..0111ff09d1 100644
--- a/src/server/api/endpoints/users/groups/owned.ts
+++ b/src/server/api/endpoints/users/groups/owned.ts
@@ -1,5 +1,5 @@
-import define from '../../../define';
-import { UserGroups } from '../../../../../models';
+import define from '../../../define.js';
+import { UserGroups } from '@/models/index.js';
export const meta = {
tags: ['groups', 'account'],
diff --git a/src/server/api/endpoints/users/groups/pull.ts b/src/server/api/endpoints/users/groups/pull.ts
index d93a16bd9d..4e080074b4 100644
--- a/src/server/api/endpoints/users/groups/pull.ts
+++ b/src/server/api/endpoints/users/groups/pull.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { getUser } from '../../../common/getters';
-import { UserGroups, UserGroupJoinings } from '../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { getUser } from '../../../common/getters.js';
+import { UserGroups, UserGroupJoinings } from '@/models/index.js';
export const meta = {
tags: ['groups', 'users'],
diff --git a/src/server/api/endpoints/users/groups/show.ts b/src/server/api/endpoints/users/groups/show.ts
index 1b71933c20..666c159c6d 100644
--- a/src/server/api/endpoints/users/groups/show.ts
+++ b/src/server/api/endpoints/users/groups/show.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { UserGroups, UserGroupJoinings } from '../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { UserGroups, UserGroupJoinings } from '@/models/index.js';
export const meta = {
tags: ['groups', 'account'],
diff --git a/src/server/api/endpoints/users/groups/transfer.ts b/src/server/api/endpoints/users/groups/transfer.ts
index d6376993c9..a216e80025 100644
--- a/src/server/api/endpoints/users/groups/transfer.ts
+++ b/src/server/api/endpoints/users/groups/transfer.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { getUser } from '../../../common/getters';
-import { UserGroups, UserGroupJoinings } from '../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { getUser } from '../../../common/getters.js';
+import { UserGroups, UserGroupJoinings } from '@/models/index.js';
export const meta = {
tags: ['groups', 'users'],
diff --git a/src/server/api/endpoints/users/groups/update.ts b/src/server/api/endpoints/users/groups/update.ts
index a403152b4e..c6c1b14818 100644
--- a/src/server/api/endpoints/users/groups/update.ts
+++ b/src/server/api/endpoints/users/groups/update.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { UserGroups } from '../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { UserGroups } from '@/models/index.js';
export const meta = {
tags: ['groups'],
diff --git a/src/server/api/endpoints/users/lists/create.ts b/src/server/api/endpoints/users/lists/create.ts
index c524130089..89af90ea52 100644
--- a/src/server/api/endpoints/users/lists/create.ts
+++ b/src/server/api/endpoints/users/lists/create.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import define from '../../../define';
-import { UserLists } from '../../../../../models';
-import { genId } from '@/misc/gen-id';
-import { UserList } from '../../../../../models/entities/user-list';
+import define from '../../../define.js';
+import { UserLists } from '@/models/index.js';
+import { genId } from '@/misc/gen-id.js';
+import { UserList } from '@/models/entities/user-list.js';
export const meta = {
tags: ['lists'],
diff --git a/src/server/api/endpoints/users/lists/delete.ts b/src/server/api/endpoints/users/lists/delete.ts
index ecae5641c5..d33222242e 100644
--- a/src/server/api/endpoints/users/lists/delete.ts
+++ b/src/server/api/endpoints/users/lists/delete.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { UserLists } from '../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { UserLists } from '@/models/index.js';
export const meta = {
tags: ['lists'],
diff --git a/src/server/api/endpoints/users/lists/list.ts b/src/server/api/endpoints/users/lists/list.ts
index 1548208714..f186408981 100644
--- a/src/server/api/endpoints/users/lists/list.ts
+++ b/src/server/api/endpoints/users/lists/list.ts
@@ -1,5 +1,5 @@
-import define from '../../../define';
-import { UserLists } from '../../../../../models';
+import define from '../../../define.js';
+import { UserLists } from '@/models/index.js';
export const meta = {
tags: ['lists', 'account'],
diff --git a/src/server/api/endpoints/users/lists/pull.ts b/src/server/api/endpoints/users/lists/pull.ts
index f8b5df0fc5..db15d67d98 100644
--- a/src/server/api/endpoints/users/lists/pull.ts
+++ b/src/server/api/endpoints/users/lists/pull.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import { publishUserListStream } from '../../../../../services/stream';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { getUser } from '../../../common/getters';
-import { UserLists, UserListJoinings, Users } from '../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import { publishUserListStream } from '@/services/stream.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { getUser } from '../../../common/getters.js';
+import { UserLists, UserListJoinings, Users } from '@/models/index.js';
export const meta = {
tags: ['lists', 'users'],
diff --git a/src/server/api/endpoints/users/lists/push.ts b/src/server/api/endpoints/users/lists/push.ts
index 7bb6fc7f79..266e813b16 100644
--- a/src/server/api/endpoints/users/lists/push.ts
+++ b/src/server/api/endpoints/users/lists/push.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { getUser } from '../../../common/getters';
-import { pushUserToUserList } from '../../../../../services/user-list/push';
-import { UserLists, UserListJoinings, Blockings } from '../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { getUser } from '../../../common/getters.js';
+import { pushUserToUserList } from '@/services/user-list/push.js';
+import { UserLists, UserListJoinings, Blockings } from '@/models/index.js';
export const meta = {
tags: ['lists', 'users'],
diff --git a/src/server/api/endpoints/users/lists/show.ts b/src/server/api/endpoints/users/lists/show.ts
index ff9ed001f7..c3a49b7472 100644
--- a/src/server/api/endpoints/users/lists/show.ts
+++ b/src/server/api/endpoints/users/lists/show.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { UserLists } from '../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { UserLists } from '@/models/index.js';
export const meta = {
tags: ['lists', 'account'],
diff --git a/src/server/api/endpoints/users/lists/update.ts b/src/server/api/endpoints/users/lists/update.ts
index eaa420a5b9..c883ed420f 100644
--- a/src/server/api/endpoints/users/lists/update.ts
+++ b/src/server/api/endpoints/users/lists/update.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../../define';
-import { ApiError } from '../../../error';
-import { UserLists } from '../../../../../models';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../../define.js';
+import { ApiError } from '../../../error.js';
+import { UserLists } from '@/models/index.js';
export const meta = {
tags: ['lists'],
diff --git a/src/server/api/endpoints/users/notes.ts b/src/server/api/endpoints/users/notes.ts
index 836c3c97b7..ae6d75e641 100644
--- a/src/server/api/endpoints/users/notes.ts
+++ b/src/server/api/endpoints/users/notes.ts
@@ -1,14 +1,14 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { getUser } from '../../common/getters';
-import { makePaginationQuery } from '../../common/make-pagination-query';
-import { generateVisibilityQuery } from '../../common/generate-visibility-query';
-import { Notes } from '../../../../models';
-import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { getUser } from '../../common/getters.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
+import { generateVisibilityQuery } from '../../common/generate-visibility-query.js';
+import { Notes } from '@/models/index.js';
+import { generateMutedUserQuery } from '../../common/generate-muted-user-query.js';
import { Brackets } from 'typeorm';
-import { generateBlockedUserQuery } from '../../common/generate-block-query';
+import { generateBlockedUserQuery } from '../../common/generate-block-query.js';
export const meta = {
tags: ['users', 'notes'],
diff --git a/src/server/api/endpoints/users/pages.ts b/src/server/api/endpoints/users/pages.ts
index b9f37f3210..b27b21bac5 100644
--- a/src/server/api/endpoints/users/pages.ts
+++ b/src/server/api/endpoints/users/pages.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { Pages } from '../../../../models';
-import { makePaginationQuery } from '../../common/make-pagination-query';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { Pages } from '@/models/index.js';
+import { makePaginationQuery } from '../../common/make-pagination-query.js';
export const meta = {
tags: ['users', 'pages'],
diff --git a/src/server/api/endpoints/users/recommendation.ts b/src/server/api/endpoints/users/recommendation.ts
index fba4f4f682..0c86c13366 100644
--- a/src/server/api/endpoints/users/recommendation.ts
+++ b/src/server/api/endpoints/users/recommendation.ts
@@ -1,9 +1,9 @@
import * as ms from 'ms';
import $ from 'cafy';
-import define from '../../define';
-import { Users, Followings } from '../../../../models';
-import { generateMutedUserQueryForUsers } from '../../common/generate-muted-user-query';
-import { generateBlockedUserQuery, generateBlockQueryForUsers } from '../../common/generate-block-query';
+import define from '../../define.js';
+import { Users, Followings } from '@/models/index.js';
+import { generateMutedUserQueryForUsers } from '../../common/generate-muted-user-query.js';
+import { generateBlockedUserQuery, generateBlockQueryForUsers } from '../../common/generate-block-query.js';
export const meta = {
tags: ['users'],
diff --git a/src/server/api/endpoints/users/relation.ts b/src/server/api/endpoints/users/relation.ts
index 18ec5d44b3..5998f2dbc2 100644
--- a/src/server/api/endpoints/users/relation.ts
+++ b/src/server/api/endpoints/users/relation.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import define from '../../define';
-import { ID } from '@/misc/cafy-id';
-import { Users } from '../../../../models';
+import define from '../../define.js';
+import { ID } from '@/misc/cafy-id.js';
+import { Users } from '@/models/index.js';
export const meta = {
tags: ['users'],
diff --git a/src/server/api/endpoints/users/report-abuse.ts b/src/server/api/endpoints/users/report-abuse.ts
index 776d683700..37de2d533c 100644
--- a/src/server/api/endpoints/users/report-abuse.ts
+++ b/src/server/api/endpoints/users/report-abuse.ts
@@ -1,11 +1,11 @@
import $ from 'cafy';
-import { ID } from '@/misc/cafy-id';
-import define from '../../define';
-import { publishAdminStream } from '../../../../services/stream';
-import { ApiError } from '../../error';
-import { getUser } from '../../common/getters';
-import { AbuseUserReports, Users } from '../../../../models';
-import { genId } from '@/misc/gen-id';
+import { ID } from '@/misc/cafy-id.js';
+import define from '../../define.js';
+import { publishAdminStream } from '@/services/stream.js';
+import { ApiError } from '../../error.js';
+import { getUser } from '../../common/getters.js';
+import { AbuseUserReports, Users } from '@/models/index.js';
+import { genId } from '@/misc/gen-id.js';
export const meta = {
tags: ['users'],
diff --git a/src/server/api/endpoints/users/search-by-username-and-host.ts b/src/server/api/endpoints/users/search-by-username-and-host.ts
index 13c5a18dbe..690c346e28 100644
--- a/src/server/api/endpoints/users/search-by-username-and-host.ts
+++ b/src/server/api/endpoints/users/search-by-username-and-host.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
-import define from '../../define';
-import { Users } from '../../../../models';
+import define from '../../define.js';
+import { Users } from '@/models/index.js';
export const meta = {
tags: ['users'],
diff --git a/src/server/api/endpoints/users/search.ts b/src/server/api/endpoints/users/search.ts
index c183194c41..46e179b6dc 100644
--- a/src/server/api/endpoints/users/search.ts
+++ b/src/server/api/endpoints/users/search.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import define from '../../define';
-import { UserProfiles, Users } from '../../../../models';
-import { User } from '../../../../models/entities/user';
+import define from '../../define.js';
+import { UserProfiles, Users } from '@/models/index.js';
+import { User } from '@/models/entities/user.js';
export const meta = {
tags: ['users'],
diff --git a/src/server/api/endpoints/users/show.ts b/src/server/api/endpoints/users/show.ts
index fde2b5a14d..bd0d65f760 100644
--- a/src/server/api/endpoints/users/show.ts
+++ b/src/server/api/endpoints/users/show.ts
@@ -1,12 +1,12 @@
import $ from 'cafy';
-import { resolveUser } from '../../../../remote/resolve-user';
-import define from '../../define';
-import { apiLogger } from '../../logger';
-import { ApiError } from '../../error';
-import { ID } from '@/misc/cafy-id';
-import { Users } from '../../../../models';
+import { resolveUser } from '@/remote/resolve-user.js';
+import define from '../../define.js';
+import { apiLogger } from '../../logger.js';
+import { ApiError } from '../../error.js';
+import { ID } from '@/misc/cafy-id.js';
+import { Users } from '@/models/index.js';
import { In } from 'typeorm';
-import { User } from '@/models/entities/user';
+import { User } from '@/models/entities/user.js';
export const meta = {
tags: ['users'],
diff --git a/src/server/api/endpoints/users/stats.ts b/src/server/api/endpoints/users/stats.ts
index 6763c1774e..7cf08f71c9 100644
--- a/src/server/api/endpoints/users/stats.ts
+++ b/src/server/api/endpoints/users/stats.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import define from '../../define';
-import { ApiError } from '../../error';
-import { ID } from '@/misc/cafy-id';
-import { DriveFiles, Followings, NoteFavorites, NoteReactions, Notes, PageLikes, PollVotes, ReversiGames, Users } from '../../../../models';
+import define from '../../define.js';
+import { ApiError } from '../../error.js';
+import { ID } from '@/misc/cafy-id.js';
+import { DriveFiles, Followings, NoteFavorites, NoteReactions, Notes, PageLikes, PollVotes, ReversiGames, Users } from '@/models/index.js';
export const meta = {
tags: ['users'],
diff --git a/src/server/api/index.ts b/src/server/api/index.ts
index aec4a97379..b967f70b3a 100644
--- a/src/server/api/index.ts
+++ b/src/server/api/index.ts
@@ -8,14 +8,14 @@ import * as multer from '@koa/multer';
import * as bodyParser from 'koa-bodyparser';
import * as cors from '@koa/cors';
-import endpoints from './endpoints';
-import handler from './api-handler';
-import signup from './private/signup';
-import signin from './private/signin';
-import discord from './service/discord';
-import github from './service/github';
-import twitter from './service/twitter';
-import { Instances, AccessTokens, Users } from '../../models';
+import endpoints from './endpoints.js';
+import handler from './api-handler.js';
+import signup from './private/signup.js';
+import signin from './private/signin.js';
+import discord from './service/discord.js';
+import github from './service/github.js';
+import twitter from './service/twitter.js';
+import { Instances, AccessTokens, Users } from '@/models/index.js';
// Init app
const app = new Koa();
diff --git a/src/server/api/limiter.ts b/src/server/api/limiter.ts
index 540ca24994..f624bd1166 100644
--- a/src/server/api/limiter.ts
+++ b/src/server/api/limiter.ts
@@ -1,9 +1,9 @@
import * as Limiter from 'ratelimiter';
-import { redisClient } from '../../db/redis';
-import { IEndpoint } from './endpoints';
-import { getAcct } from '@/misc/acct';
-import { User } from '../../models/entities/user';
-import Logger from '../../services/logger';
+import { redisClient } from '../../db/redis.js';
+import { IEndpoint } from './endpoints.js';
+import { getAcct } from '@/misc/acct.js';
+import { User } from '@/models/entities/user.js';
+import Logger from '@/services/logger.js';
const logger = new Logger('limiter');
diff --git a/src/server/api/logger.ts b/src/server/api/logger.ts
index dde4b0d5fc..ec22d6c3e2 100644
--- a/src/server/api/logger.ts
+++ b/src/server/api/logger.ts
@@ -1,3 +1,3 @@
-import Logger from '../../services/logger';
+import Logger from '@/services/logger.js';
export const apiLogger = new Logger('api');
diff --git a/src/server/api/openapi/description.ts b/src/server/api/openapi/description.ts
index 6306920b7a..b9e544b04c 100644
--- a/src/server/api/openapi/description.ts
+++ b/src/server/api/openapi/description.ts
@@ -1,6 +1,6 @@
-import endpoints from '../endpoints';
-import * as locale from '../../../../locales/';
-import { kinds as kindsList } from '@/misc/api-permissions';
+import endpoints from '../endpoints.js';
+import * as locale from '../../../../locales/index.js';
+import { kinds as kindsList } from '@/misc/api-permissions.js';
export interface IKindInfo {
endpoints: string[];
diff --git a/src/server/api/openapi/gen-spec.ts b/src/server/api/openapi/gen-spec.ts
index adac3bda2c..de87288b42 100644
--- a/src/server/api/openapi/gen-spec.ts
+++ b/src/server/api/openapi/gen-spec.ts
@@ -1,9 +1,9 @@
-import endpoints from '../endpoints';
+import endpoints from '../endpoints.js';
import { Context } from 'cafy';
-import config from '@/config';
-import { errors as basicErrors } from './errors';
-import { schemas, convertSchemaToOpenApiSchema } from './schemas';
-import { getDescription } from './description';
+import config from '@/config/index.js';
+import { errors as basicErrors } from './errors.js';
+import { schemas, convertSchemaToOpenApiSchema } from './schemas.js';
+import { getDescription } from './description.js';
export function genOpenapiSpec(lang = 'ja-JP') {
const spec = {
diff --git a/src/server/api/openapi/schemas.ts b/src/server/api/openapi/schemas.ts
index ee2773fe47..e8bbfe5277 100644
--- a/src/server/api/openapi/schemas.ts
+++ b/src/server/api/openapi/schemas.ts
@@ -1,26 +1,26 @@
-import { packedUserSchema } from '../../../models/repositories/user';
-import { Schema } from '@/misc/schema';
-import { packedNoteSchema } from '../../../models/repositories/note';
-import { packedUserListSchema } from '../../../models/repositories/user-list';
-import { packedAppSchema } from '../../../models/repositories/app';
-import { packedMessagingMessageSchema } from '../../../models/repositories/messaging-message';
-import { packedNotificationSchema } from '../../../models/repositories/notification';
-import { packedDriveFileSchema } from '../../../models/repositories/drive-file';
-import { packedDriveFolderSchema } from '../../../models/repositories/drive-folder';
-import { packedFollowingSchema } from '../../../models/repositories/following';
-import { packedMutingSchema } from '../../../models/repositories/muting';
-import { packedBlockingSchema } from '../../../models/repositories/blocking';
-import { packedNoteReactionSchema } from '../../../models/repositories/note-reaction';
-import { packedHashtagSchema } from '../../../models/repositories/hashtag';
-import { packedPageSchema } from '../../../models/repositories/page';
-import { packedUserGroupSchema } from '../../../models/repositories/user-group';
-import { packedNoteFavoriteSchema } from '../../../models/repositories/note-favorite';
-import { packedChannelSchema } from '../../../models/repositories/channel';
-import { packedAntennaSchema } from '../../../models/repositories/antenna';
-import { packedClipSchema } from '../../../models/repositories/clip';
-import { packedFederationInstanceSchema } from '../../../models/repositories/federation-instance';
-import { packedQueueCountSchema } from '../../../models/repositories/queue';
-import { packedGalleryPostSchema } from '@/models/repositories/gallery-post';
+import { packedUserSchema } from '@/models/repositories/user.js';
+import { Schema } from '@/misc/schema.js';
+import { packedNoteSchema } from '@/models/repositories/note.js';
+import { packedUserListSchema } from '@/models/repositories/user-list.js';
+import { packedAppSchema } from '@/models/repositories/app.js';
+import { packedMessagingMessageSchema } from '@/models/repositories/messaging-message.js';
+import { packedNotificationSchema } from '@/models/repositories/notification.js';
+import { packedDriveFileSchema } from '@/models/repositories/drive-file.js';
+import { packedDriveFolderSchema } from '@/models/repositories/drive-folder.js';
+import { packedFollowingSchema } from '@/models/repositories/following.js';
+import { packedMutingSchema } from '@/models/repositories/muting.js';
+import { packedBlockingSchema } from '@/models/repositories/blocking.js';
+import { packedNoteReactionSchema } from '@/models/repositories/note-reaction.js';
+import { packedHashtagSchema } from '@/models/repositories/hashtag.js';
+import { packedPageSchema } from '@/models/repositories/page.js';
+import { packedUserGroupSchema } from '@/models/repositories/user-group.js';
+import { packedNoteFavoriteSchema } from '@/models/repositories/note-favorite.js';
+import { packedChannelSchema } from '@/models/repositories/channel.js';
+import { packedAntennaSchema } from '@/models/repositories/antenna.js';
+import { packedClipSchema } from '@/models/repositories/clip.js';
+import { packedFederationInstanceSchema } from '@/models/repositories/federation-instance.js';
+import { packedQueueCountSchema } from '@/models/repositories/queue.js';
+import { packedGalleryPostSchema } from '@/models/repositories/gallery-post.js';
export function convertSchemaToOpenApiSchema(schema: Schema) {
const res: any = schema;
diff --git a/src/server/api/private/signin.ts b/src/server/api/private/signin.ts
index c01c1f265a..1eda141919 100644
--- a/src/server/api/private/signin.ts
+++ b/src/server/api/private/signin.ts
@@ -1,12 +1,12 @@
import * as Koa from 'koa';
import * as bcrypt from 'bcryptjs';
import * as speakeasy from 'speakeasy';
-import signin from '../common/signin';
-import config from '@/config';
-import { Users, Signins, UserProfiles, UserSecurityKeys, AttestationChallenges } from '../../../models';
-import { ILocalUser } from '../../../models/entities/user';
-import { genId } from '@/misc/gen-id';
-import { verifyLogin, hash } from '../2fa';
+import signin from '../common/signin.js';
+import config from '@/config/index.js';
+import { Users, Signins, UserProfiles, UserSecurityKeys, AttestationChallenges } from '@/models/index.js';
+import { ILocalUser } from '@/models/entities/user.js';
+import { genId } from '@/misc/gen-id.js';
+import { verifyLogin, hash } from '../2fa.js';
import { randomBytes } from 'crypto';
export default async (ctx: Koa.Context) => {
diff --git a/src/server/api/private/signup.ts b/src/server/api/private/signup.ts
index f0cf75797a..e554b49a63 100644
--- a/src/server/api/private/signup.ts
+++ b/src/server/api/private/signup.ts
@@ -1,8 +1,8 @@
import * as Koa from 'koa';
-import { fetchMeta } from '@/misc/fetch-meta';
-import { verifyHcaptcha, verifyRecaptcha } from '@/misc/captcha';
-import { Users, RegistrationTickets } from '../../../models';
-import { signup } from '../common/signup';
+import { fetchMeta } from '@/misc/fetch-meta.js';
+import { verifyHcaptcha, verifyRecaptcha } from '@/misc/captcha.js';
+import { Users, RegistrationTickets } from '@/models/index.js';
+import { signup } from '../common/signup.js';
export default async (ctx: Koa.Context) => {
const body = ctx.request.body;
diff --git a/src/server/api/service/discord.ts b/src/server/api/service/discord.ts
index a684e71fc6..986a4d184c 100644
--- a/src/server/api/service/discord.ts
+++ b/src/server/api/service/discord.ts
@@ -1,15 +1,15 @@
import * as Koa from 'koa';
import * as Router from '@koa/router';
-import { getJson } from '@/misc/fetch';
+import { getJson } from '@/misc/fetch.js';
import { OAuth2 } from 'oauth';
-import config from '@/config';
-import { publishMainStream } from '../../../services/stream';
-import { redisClient } from '../../../db/redis';
+import config from '@/config/index.js';
+import { publishMainStream } from '@/services/stream.js';
+import { redisClient } from '../../../db/redis.js';
import { v4 as uuid } from 'uuid';
-import signin from '../common/signin';
-import { fetchMeta } from '@/misc/fetch-meta';
-import { Users, UserProfiles } from '../../../models';
-import { ILocalUser } from '../../../models/entities/user';
+import signin from '../common/signin.js';
+import { fetchMeta } from '@/misc/fetch-meta.js';
+import { Users, UserProfiles } from '@/models/index.js';
+import { ILocalUser } from '@/models/entities/user.js';
function getUserToken(ctx: Koa.Context) {
return ((ctx.headers['cookie'] || '').match(/igi=(\w+)/) || [null, null])[1];
diff --git a/src/server/api/service/github.ts b/src/server/api/service/github.ts
index 12435b7e81..841b8e5d12 100644
--- a/src/server/api/service/github.ts
+++ b/src/server/api/service/github.ts
@@ -1,15 +1,15 @@
import * as Koa from 'koa';
import * as Router from '@koa/router';
-import { getJson } from '@/misc/fetch';
+import { getJson } from '@/misc/fetch.js';
import { OAuth2 } from 'oauth';
-import config from '@/config';
-import { publishMainStream } from '../../../services/stream';
-import { redisClient } from '../../../db/redis';
+import config from '@/config/index.js';
+import { publishMainStream } from '@/services/stream.js';
+import { redisClient } from '../../../db/redis.js';
import { v4 as uuid } from 'uuid';
-import signin from '../common/signin';
-import { fetchMeta } from '@/misc/fetch-meta';
-import { Users, UserProfiles } from '../../../models';
-import { ILocalUser } from '../../../models/entities/user';
+import signin from '../common/signin.js';
+import { fetchMeta } from '@/misc/fetch-meta.js';
+import { Users, UserProfiles } from '@/models/index.js';
+import { ILocalUser } from '@/models/entities/user.js';
function getUserToken(ctx: Koa.Context) {
return ((ctx.headers['cookie'] || '').match(/igi=(\w+)/) || [null, null])[1];
diff --git a/src/server/api/service/twitter.ts b/src/server/api/service/twitter.ts
index 8520a5656f..5b08e0533a 100644
--- a/src/server/api/service/twitter.ts
+++ b/src/server/api/service/twitter.ts
@@ -2,13 +2,13 @@ import * as Koa from 'koa';
import * as Router from '@koa/router';
import { v4 as uuid } from 'uuid';
import autwh from 'autwh';
-import { redisClient } from '../../../db/redis';
-import { publishMainStream } from '../../../services/stream';
-import config from '@/config';
-import signin from '../common/signin';
-import { fetchMeta } from '@/misc/fetch-meta';
-import { Users, UserProfiles } from '../../../models';
-import { ILocalUser } from '../../../models/entities/user';
+import { redisClient } from '../../../db/redis.js';
+import { publishMainStream } from '@/services/stream.js';
+import config from '@/config/index.js';
+import signin from '../common/signin.js';
+import { fetchMeta } from '@/misc/fetch-meta.js';
+import { Users, UserProfiles } from '@/models/index.js';
+import { ILocalUser } from '@/models/entities/user.js';
function getUserToken(ctx: Koa.Context) {
return ((ctx.headers['cookie'] || '').match(/igi=(\w+)/) || [null, null])[1];
diff --git a/src/server/api/stream/channels/admin.ts b/src/server/api/stream/channels/admin.ts
index 1ff932d1dd..e68490d05c 100644
--- a/src/server/api/stream/channels/admin.ts
+++ b/src/server/api/stream/channels/admin.ts
@@ -1,5 +1,5 @@
import autobind from 'autobind-decorator';
-import Channel from '../channel';
+import Channel from '../channel.js';
export default class extends Channel {
public readonly chName = 'admin';
diff --git a/src/server/api/stream/channels/antenna.ts b/src/server/api/stream/channels/antenna.ts
index db4fab8412..6c672ffd65 100644
--- a/src/server/api/stream/channels/antenna.ts
+++ b/src/server/api/stream/channels/antenna.ts
@@ -1,8 +1,8 @@
import autobind from 'autobind-decorator';
-import Channel from '../channel';
-import { Notes } from '../../../../models';
-import { isMutedUserRelated } from '@/misc/is-muted-user-related';
-import { isBlockerUserRelated } from '@/misc/is-blocker-user-related';
+import Channel from '../channel.js';
+import { Notes } from '@/models/index.js';
+import { isMutedUserRelated } from '@/misc/is-muted-user-related.js';
+import { isBlockerUserRelated } from '@/misc/is-blocker-user-related.js';
export default class extends Channel {
public readonly chName = 'antenna';
diff --git a/src/server/api/stream/channels/channel.ts b/src/server/api/stream/channels/channel.ts
index 7910f0f2f8..8665c8253d 100644
--- a/src/server/api/stream/channels/channel.ts
+++ b/src/server/api/stream/channels/channel.ts
@@ -1,10 +1,10 @@
import autobind from 'autobind-decorator';
-import Channel from '../channel';
-import { Notes, Users } from '../../../../models';
-import { isMutedUserRelated } from '@/misc/is-muted-user-related';
-import { isBlockerUserRelated } from '@/misc/is-blocker-user-related';
-import { PackedNote } from '../../../../models/repositories/note';
-import { User } from '../../../../models/entities/user';
+import Channel from '../channel.js';
+import { Notes, Users } from '@/models/index.js';
+import { isMutedUserRelated } from '@/misc/is-muted-user-related.js';
+import { isBlockerUserRelated } from '@/misc/is-blocker-user-related.js';
+import { PackedNote } from '@/models/repositories/note.js';
+import { User } from '@/models/entities/user.js';
export default class extends Channel {
public readonly chName = 'channel';
diff --git a/src/server/api/stream/channels/drive.ts b/src/server/api/stream/channels/drive.ts
index 4112dd9b04..66f2647942 100644
--- a/src/server/api/stream/channels/drive.ts
+++ b/src/server/api/stream/channels/drive.ts
@@ -1,5 +1,5 @@
import autobind from 'autobind-decorator';
-import Channel from '../channel';
+import Channel from '../channel.js';
export default class extends Channel {
public readonly chName = 'drive';
diff --git a/src/server/api/stream/channels/games/reversi-game.ts b/src/server/api/stream/channels/games/reversi-game.ts
index e1c2116ac6..a13d79d3c3 100644
--- a/src/server/api/stream/channels/games/reversi-game.ts
+++ b/src/server/api/stream/channels/games/reversi-game.ts
@@ -1,12 +1,12 @@
import autobind from 'autobind-decorator';
import * as CRC32 from 'crc-32';
-import { publishReversiGameStream } from '../../../../../services/stream';
-import Reversi from '../../../../../games/reversi/core';
-import * as maps from '../../../../../games/reversi/maps';
-import Channel from '../../channel';
-import { ReversiGame } from '../../../../../models/entities/games/reversi/game';
-import { ReversiGames, Users } from '../../../../../models';
-import { User } from '../../../../../models/entities/user';
+import { publishReversiGameStream } from '@/services/stream.js';
+import Reversi from '../../../../../games/reversi/core.js';
+import * as maps from '../../../../../games/reversi/maps.js';
+import Channel from '../../channel.js';
+import { ReversiGame } from '@/models/entities/games/reversi/game.js';
+import { ReversiGames, Users } from '@/models/index.js';
+import { User } from '@/models/entities/user.js';
export default class extends Channel {
public readonly chName = 'gamesReversiGame';
diff --git a/src/server/api/stream/channels/games/reversi.ts b/src/server/api/stream/channels/games/reversi.ts
index e0e41d9acd..f8fa7b94e1 100644
--- a/src/server/api/stream/channels/games/reversi.ts
+++ b/src/server/api/stream/channels/games/reversi.ts
@@ -1,7 +1,7 @@
import autobind from 'autobind-decorator';
-import { publishMainStream } from '../../../../../services/stream';
-import Channel from '../../channel';
-import { ReversiMatchings } from '../../../../../models';
+import { publishMainStream } from '@/services/stream.js';
+import Channel from '../../channel.js';
+import { ReversiMatchings } from '@/models/index.js';
export default class extends Channel {
public readonly chName = 'gamesReversi';
diff --git a/src/server/api/stream/channels/global-timeline.ts b/src/server/api/stream/channels/global-timeline.ts
index 02792bffa4..1e1e8b5c96 100644
--- a/src/server/api/stream/channels/global-timeline.ts
+++ b/src/server/api/stream/channels/global-timeline.ts
@@ -1,11 +1,11 @@
import autobind from 'autobind-decorator';
-import { isMutedUserRelated } from '@/misc/is-muted-user-related';
-import Channel from '../channel';
-import { fetchMeta } from '@/misc/fetch-meta';
-import { Notes } from '../../../../models';
-import { PackedNote } from '../../../../models/repositories/note';
-import { checkWordMute } from '@/misc/check-word-mute';
-import { isBlockerUserRelated } from '@/misc/is-blocker-user-related';
+import { isMutedUserRelated } from '@/misc/is-muted-user-related.js';
+import Channel from '../channel.js';
+import { fetchMeta } from '@/misc/fetch-meta.js';
+import { Notes } from '@/models/index.js';
+import { PackedNote } from '@/models/repositories/note.js';
+import { checkWordMute } from '@/misc/check-word-mute.js';
+import { isBlockerUserRelated } from '@/misc/is-blocker-user-related.js';
export default class extends Channel {
public readonly chName = 'globalTimeline';
diff --git a/src/server/api/stream/channels/hashtag.ts b/src/server/api/stream/channels/hashtag.ts
index 4cabd4db62..8a5b7a267d 100644
--- a/src/server/api/stream/channels/hashtag.ts
+++ b/src/server/api/stream/channels/hashtag.ts
@@ -1,10 +1,10 @@
import autobind from 'autobind-decorator';
-import { isMutedUserRelated } from '@/misc/is-muted-user-related';
-import Channel from '../channel';
-import { Notes } from '../../../../models';
-import { PackedNote } from '../../../../models/repositories/note';
-import { normalizeForSearch } from '@/misc/normalize-for-search';
-import { isBlockerUserRelated } from '@/misc/is-blocker-user-related';
+import { isMutedUserRelated } from '@/misc/is-muted-user-related.js';
+import Channel from '../channel.js';
+import { Notes } from '@/models/index.js';
+import { PackedNote } from '@/models/repositories/note.js';
+import { normalizeForSearch } from '@/misc/normalize-for-search.js';
+import { isBlockerUserRelated } from '@/misc/is-blocker-user-related.js';
export default class extends Channel {
public readonly chName = 'hashtag';
diff --git a/src/server/api/stream/channels/home-timeline.ts b/src/server/api/stream/channels/home-timeline.ts
index 7659b5ffa3..e19cd077c3 100644
--- a/src/server/api/stream/channels/home-timeline.ts
+++ b/src/server/api/stream/channels/home-timeline.ts
@@ -1,10 +1,10 @@
import autobind from 'autobind-decorator';
-import { isMutedUserRelated } from '@/misc/is-muted-user-related';
-import Channel from '../channel';
-import { Notes } from '../../../../models';
-import { PackedNote } from '../../../../models/repositories/note';
-import { checkWordMute } from '@/misc/check-word-mute';
-import { isBlockerUserRelated } from '@/misc/is-blocker-user-related';
+import { isMutedUserRelated } from '@/misc/is-muted-user-related.js';
+import Channel from '../channel.js';
+import { Notes } from '@/models/index.js';
+import { PackedNote } from '@/models/repositories/note.js';
+import { checkWordMute } from '@/misc/check-word-mute.js';
+import { isBlockerUserRelated } from '@/misc/is-blocker-user-related.js';
export default class extends Channel {
public readonly chName = 'homeTimeline';
diff --git a/src/server/api/stream/channels/hybrid-timeline.ts b/src/server/api/stream/channels/hybrid-timeline.ts
index 664435f674..4d48075af6 100644
--- a/src/server/api/stream/channels/hybrid-timeline.ts
+++ b/src/server/api/stream/channels/hybrid-timeline.ts
@@ -1,12 +1,12 @@
import autobind from 'autobind-decorator';
-import { isMutedUserRelated } from '@/misc/is-muted-user-related';
-import Channel from '../channel';
-import { fetchMeta } from '@/misc/fetch-meta';
-import { Notes } from '../../../../models';
-import { PackedNote } from '../../../../models/repositories/note';
-import { PackedUser } from '../../../../models/repositories/user';
-import { checkWordMute } from '@/misc/check-word-mute';
-import { isBlockerUserRelated } from '@/misc/is-blocker-user-related';
+import { isMutedUserRelated } from '@/misc/is-muted-user-related.js';
+import Channel from '../channel.js';
+import { fetchMeta } from '@/misc/fetch-meta.js';
+import { Notes } from '@/models/index.js';
+import { PackedNote } from '@/models/repositories/note.js';
+import { PackedUser } from '@/models/repositories/user.js';
+import { checkWordMute } from '@/misc/check-word-mute.js';
+import { isBlockerUserRelated } from '@/misc/is-blocker-user-related.js';
export default class extends Channel {
public readonly chName = 'hybridTimeline';
diff --git a/src/server/api/stream/channels/index.ts b/src/server/api/stream/channels/index.ts
index 1841573043..39f4d235f1 100644
--- a/src/server/api/stream/channels/index.ts
+++ b/src/server/api/stream/channels/index.ts
@@ -1,20 +1,20 @@
-import main from './main';
-import homeTimeline from './home-timeline';
-import localTimeline from './local-timeline';
-import hybridTimeline from './hybrid-timeline';
-import globalTimeline from './global-timeline';
-import serverStats from './server-stats';
-import queueStats from './queue-stats';
-import userList from './user-list';
-import antenna from './antenna';
-import messaging from './messaging';
-import messagingIndex from './messaging-index';
-import drive from './drive';
-import hashtag from './hashtag';
-import channel from './channel';
-import admin from './admin';
-import gamesReversi from './games/reversi';
-import gamesReversiGame from './games/reversi-game';
+import main from './main.js';
+import homeTimeline from './home-timeline.js';
+import localTimeline from './local-timeline.js';
+import hybridTimeline from './hybrid-timeline.js';
+import globalTimeline from './global-timeline.js';
+import serverStats from './server-stats.js';
+import queueStats from './queue-stats.js';
+import userList from './user-list.js';
+import antenna from './antenna.js';
+import messaging from './messaging.js';
+import messagingIndex from './messaging-index.js';
+import drive from './drive.js';
+import hashtag from './hashtag.js';
+import channel from './channel.js';
+import admin from './admin.js';
+import gamesReversi from './games/reversi.js';
+import gamesReversiGame from './games/reversi-game.js';
export default {
main,
diff --git a/src/server/api/stream/channels/local-timeline.ts b/src/server/api/stream/channels/local-timeline.ts
index 528059daba..c01ca5347b 100644
--- a/src/server/api/stream/channels/local-timeline.ts
+++ b/src/server/api/stream/channels/local-timeline.ts
@@ -1,12 +1,12 @@
import autobind from 'autobind-decorator';
-import { isMutedUserRelated } from '@/misc/is-muted-user-related';
-import Channel from '../channel';
-import { fetchMeta } from '@/misc/fetch-meta';
-import { Notes } from '../../../../models';
-import { PackedNote } from '../../../../models/repositories/note';
-import { PackedUser } from '../../../../models/repositories/user';
-import { checkWordMute } from '@/misc/check-word-mute';
-import { isBlockerUserRelated } from '@/misc/is-blocker-user-related';
+import { isMutedUserRelated } from '@/misc/is-muted-user-related.js';
+import Channel from '../channel.js';
+import { fetchMeta } from '@/misc/fetch-meta.js';
+import { Notes } from '@/models/index.js';
+import { PackedNote } from '@/models/repositories/note.js';
+import { PackedUser } from '@/models/repositories/user.js';
+import { checkWordMute } from '@/misc/check-word-mute.js';
+import { isBlockerUserRelated } from '@/misc/is-blocker-user-related.js';
export default class extends Channel {
public readonly chName = 'localTimeline';
diff --git a/src/server/api/stream/channels/main.ts b/src/server/api/stream/channels/main.ts
index 780bc0b89f..103c61a0fb 100644
--- a/src/server/api/stream/channels/main.ts
+++ b/src/server/api/stream/channels/main.ts
@@ -1,6 +1,6 @@
import autobind from 'autobind-decorator';
-import Channel from '../channel';
-import { Notes } from '../../../../models';
+import Channel from '../channel.js';
+import { Notes } from '@/models/index.js';
export default class extends Channel {
public readonly chName = 'main';
diff --git a/src/server/api/stream/channels/messaging-index.ts b/src/server/api/stream/channels/messaging-index.ts
index 0c495398ab..24f8aad400 100644
--- a/src/server/api/stream/channels/messaging-index.ts
+++ b/src/server/api/stream/channels/messaging-index.ts
@@ -1,5 +1,5 @@
import autobind from 'autobind-decorator';
-import Channel from '../channel';
+import Channel from '../channel.js';
export default class extends Channel {
public readonly chName = 'messagingIndex';
diff --git a/src/server/api/stream/channels/messaging.ts b/src/server/api/stream/channels/messaging.ts
index 58427e2771..c16507a5f3 100644
--- a/src/server/api/stream/channels/messaging.ts
+++ b/src/server/api/stream/channels/messaging.ts
@@ -1,8 +1,8 @@
import autobind from 'autobind-decorator';
-import { readUserMessagingMessage, readGroupMessagingMessage, deliverReadActivity } from '../../common/read-messaging-message';
-import Channel from '../channel';
-import { UserGroupJoinings, Users, MessagingMessages } from '../../../../models';
-import { User, ILocalUser, IRemoteUser } from '../../../../models/entities/user';
+import { readUserMessagingMessage, readGroupMessagingMessage, deliverReadActivity } from '../../common/read-messaging-message.js';
+import Channel from '../channel.js';
+import { UserGroupJoinings, Users, MessagingMessages } from '@/models/index.js';
+import { User, ILocalUser, IRemoteUser } from '@/models/entities/user.js';
export default class extends Channel {
public readonly chName = 'messaging';
diff --git a/src/server/api/stream/channels/queue-stats.ts b/src/server/api/stream/channels/queue-stats.ts
index 0bda0cfcb9..f05e619b96 100644
--- a/src/server/api/stream/channels/queue-stats.ts
+++ b/src/server/api/stream/channels/queue-stats.ts
@@ -1,6 +1,6 @@
import autobind from 'autobind-decorator';
import Xev from 'xev';
-import Channel from '../channel';
+import Channel from '../channel.js';
const ev = new Xev();
diff --git a/src/server/api/stream/channels/server-stats.ts b/src/server/api/stream/channels/server-stats.ts
index d245a7f70c..76eb5b0f26 100644
--- a/src/server/api/stream/channels/server-stats.ts
+++ b/src/server/api/stream/channels/server-stats.ts
@@ -1,6 +1,6 @@
import autobind from 'autobind-decorator';
import Xev from 'xev';
-import Channel from '../channel';
+import Channel from '../channel.js';
const ev = new Xev();
diff --git a/src/server/api/stream/channels/user-list.ts b/src/server/api/stream/channels/user-list.ts
index 1f42fbe49e..ca8e46d507 100644
--- a/src/server/api/stream/channels/user-list.ts
+++ b/src/server/api/stream/channels/user-list.ts
@@ -1,10 +1,10 @@
import autobind from 'autobind-decorator';
-import Channel from '../channel';
-import { Notes, UserListJoinings, UserLists } from '../../../../models';
-import { isMutedUserRelated } from '@/misc/is-muted-user-related';
-import { User } from '../../../../models/entities/user';
-import { PackedNote } from '../../../../models/repositories/note';
-import { isBlockerUserRelated } from '@/misc/is-blocker-user-related';
+import Channel from '../channel.js';
+import { Notes, UserListJoinings, UserLists } from '@/models/index.js';
+import { isMutedUserRelated } from '@/misc/is-muted-user-related.js';
+import { User } from '@/models/entities/user.js';
+import { PackedNote } from '@/models/repositories/note.js';
+import { isBlockerUserRelated } from '@/misc/is-blocker-user-related.js';
export default class extends Channel {
public readonly chName = 'userList';
diff --git a/src/server/api/stream/index.ts b/src/server/api/stream/index.ts
index 96d4194a7d..1947be0a75 100644
--- a/src/server/api/stream/index.ts
+++ b/src/server/api/stream/index.ts
@@ -1,20 +1,20 @@
import autobind from 'autobind-decorator';
import * as websocket from 'websocket';
-import { readNotification } from '../common/read-notification';
-import call from '../call';
-import readNote from '../../../services/note/read';
-import Channel from './channel';
-import channels from './channels';
+import { readNotification } from '../common/read-notification.js';
+import call from '../call.js';
+import readNote from '@/services/note/read.js';
+import Channel from './channel.js';
+import channels from './channels/index.js';
import { EventEmitter } from 'events';
-import { User } from '../../../models/entities/user';
-import { Channel as ChannelModel } from '../../../models/entities/channel';
-import { Users, Followings, Mutings, UserProfiles, ChannelFollowings, Blockings } from '../../../models';
-import { ApiError } from '../error';
-import { AccessToken } from '../../../models/entities/access-token';
-import { UserProfile } from '../../../models/entities/user-profile';
-import { publishChannelStream, publishGroupMessagingStream, publishMessagingStream } from '../../../services/stream';
-import { UserGroup } from '../../../models/entities/user-group';
-import { PackedNote } from '../../../models/repositories/note';
+import { User } from '@/models/entities/user.js';
+import { Channel as ChannelModel } from '@/models/entities/channel.js';
+import { Users, Followings, Mutings, UserProfiles, ChannelFollowings, Blockings } from '@/models/index.js';
+import { ApiError } from '../error.js';
+import { AccessToken } from '@/models/entities/access-token.js';
+import { UserProfile } from '@/models/entities/user-profile.js';
+import { publishChannelStream, publishGroupMessagingStream, publishMessagingStream } from '@/services/stream.js';
+import { UserGroup } from '@/models/entities/user-group.js';
+import { PackedNote } from '@/models/repositories/note.js';
/**
* Main stream connection
diff --git a/src/server/api/streaming.ts b/src/server/api/streaming.ts
index b431bc5ad3..115692bed0 100644
--- a/src/server/api/streaming.ts
+++ b/src/server/api/streaming.ts
@@ -1,12 +1,12 @@
import * as http from 'http';
import * as websocket from 'websocket';
-import MainStreamConnection from './stream';
+import MainStreamConnection from './stream/index.js';
import { ParsedUrlQuery } from 'querystring';
-import authenticate from './authenticate';
+import authenticate from './authenticate.js';
import { EventEmitter } from 'events';
-import { subsdcriber as redisClient } from '../../db/redis';
-import { Users } from '@/models';
+import { subsdcriber as redisClient } from '../../db/redis.js';
+import { Users } from '@/models/index.js';
module.exports = (server: http.Server) => {
// Init websocket server