summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-03-24 11:34:29 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2021-03-24 11:34:29 +0900
commit3e11011229ef8459747acdf6d3008dc145280fec (patch)
tree8ebc85727c4d295f6583b63d9397651151d4394a /src
parentMerge branch 'develop' (diff)
parent12.75.1 (diff)
downloadmisskey-3e11011229ef8459747acdf6d3008dc145280fec.tar.gz
misskey-3e11011229ef8459747acdf6d3008dc145280fec.tar.bz2
misskey-3e11011229ef8459747acdf6d3008dc145280fec.zip
Merge branch 'develop'
Diffstat (limited to 'src')
-rw-r--r--src/@types/meta.json.d.ts3
-rw-r--r--src/argv.ts2
-rw-r--r--src/boot/master.ts8
-rw-r--r--src/client/account.ts6
-rw-r--r--src/client/components/abuse-report-window.vue8
-rw-r--r--src/client/components/analog-clock.vue2
-rw-r--r--src/client/components/autocomplete.vue12
-rw-r--r--src/client/components/avatars.vue2
-rw-r--r--src/client/components/channel-follow-button.vue2
-rw-r--r--src/client/components/dialog.vue8
-rw-r--r--src/client/components/drive-file-thumbnail.vue2
-rw-r--r--src/client/components/drive-select-dialog.vue4
-rw-r--r--src/client/components/drive-window.vue2
-rw-r--r--src/client/components/drive.file.vue6
-rw-r--r--src/client/components/drive.folder.vue2
-rw-r--r--src/client/components/drive.nav-folder.vue2
-rw-r--r--src/client/components/drive.vue2
-rw-r--r--src/client/components/emoji-picker-dialog.vue4
-rw-r--r--src/client/components/emoji-picker-window.vue4
-rw-r--r--src/client/components/emoji-picker.section.vue2
-rw-r--r--src/client/components/emoji-picker.vue14
-rw-r--r--src/client/components/featured-photos.vue2
-rw-r--r--src/client/components/file-type-icon.vue2
-rw-r--r--src/client/components/follow-button.vue2
-rw-r--r--src/client/components/form-dialog.vue2
-rw-r--r--src/client/components/form/pagination.vue2
-rw-r--r--src/client/components/form/radios.vue2
-rw-r--r--src/client/components/formula-core.vue2
-rw-r--r--src/client/components/formula.vue2
-rw-r--r--src/client/components/global/a.vue12
-rw-r--r--src/client/components/global/acct.vue2
-rw-r--r--src/client/components/global/avatar.vue6
-rw-r--r--src/client/components/global/emoji.vue4
-rw-r--r--src/client/components/global/error.vue2
-rw-r--r--src/client/components/global/loading.vue2
-rw-r--r--src/client/components/global/misskey-flavored-markdown.vue2
-rw-r--r--src/client/components/global/url.vue8
-rw-r--r--src/client/components/google.vue2
-rw-r--r--src/client/components/image-viewer.vue6
-rw-r--r--src/client/components/instance-stats.vue4
-rw-r--r--src/client/components/instance-ticker.vue2
-rw-r--r--src/client/components/launch-pad.vue6
-rw-r--r--src/client/components/link.vue8
-rw-r--r--src/client/components/media-banner.vue4
-rw-r--r--src/client/components/media-image.vue6
-rw-r--r--src/client/components/media-list.vue2
-rw-r--r--src/client/components/media-video.vue2
-rw-r--r--src/client/components/mention.vue4
-rw-r--r--src/client/components/mfm.ts24
-rw-r--r--src/client/components/mini-chart.vue2
-rw-r--r--src/client/components/note-detailed.vue24
-rw-r--r--src/client/components/note-header.vue2
-rw-r--r--src/client/components/note-preview.vue2
-rw-r--r--src/client/components/note.sub.vue2
-rw-r--r--src/client/components/note.vue24
-rw-r--r--src/client/components/notes.vue4
-rw-r--r--src/client/components/notification-setting-window.vue2
-rw-r--r--src/client/components/notification.vue6
-rw-r--r--src/client/components/notifications.vue4
-rw-r--r--src/client/components/page-preview.vue2
-rw-r--r--src/client/components/page-window.vue12
-rw-r--r--src/client/components/page/page.block.vue4
-rw-r--r--src/client/components/page/page.button.vue6
-rw-r--r--src/client/components/page/page.canvas.vue6
-rw-r--r--src/client/components/page/page.counter.vue6
-rw-r--r--src/client/components/page/page.if.vue4
-rw-r--r--src/client/components/page/page.image.vue6
-rw-r--r--src/client/components/page/page.note.vue8
-rw-r--r--src/client/components/page/page.number-input.vue6
-rw-r--r--src/client/components/page/page.post.vue8
-rw-r--r--src/client/components/page/page.radio-button.vue6
-rw-r--r--src/client/components/page/page.section.vue6
-rw-r--r--src/client/components/page/page.switch.vue6
-rw-r--r--src/client/components/page/page.text-input.vue6
-rw-r--r--src/client/components/page/page.text.vue6
-rw-r--r--src/client/components/page/page.textarea-input.vue8
-rw-r--r--src/client/components/page/page.textarea.vue4
-rw-r--r--src/client/components/page/page.vue8
-rw-r--r--src/client/components/poll-editor.vue2
-rw-r--r--src/client/components/poll.vue2
-rw-r--r--src/client/components/post-form-attaches.vue2
-rw-r--r--src/client/components/post-form-dialog.vue4
-rw-r--r--src/client/components/post-form.vue18
-rw-r--r--src/client/components/reactions-viewer.reaction.vue6
-rw-r--r--src/client/components/remote-caution.vue2
-rw-r--r--src/client/components/sample.vue14
-rw-r--r--src/client/components/sidebar.vue10
-rw-r--r--src/client/components/signin-dialog.vue2
-rwxr-xr-xsrc/client/components/signin.vue8
-rw-r--r--src/client/components/signup-dialog.vue2
-rw-r--r--src/client/components/signup.vue6
-rw-r--r--src/client/components/sub-note-content.vue2
-rw-r--r--src/client/components/taskmanager.api-window.vue4
-rw-r--r--src/client/components/taskmanager.vue10
-rw-r--r--src/client/components/timeline.vue4
-rw-r--r--src/client/components/token-generate-window.vue4
-rw-r--r--src/client/components/ui/context-menu.vue2
-rw-r--r--src/client/components/ui/hr.vue2
-rw-r--r--src/client/components/ui/info.vue2
-rw-r--r--src/client/components/ui/input.vue2
-rw-r--r--src/client/components/ui/menu.vue4
-rw-r--r--src/client/components/ui/pagination.vue2
-rw-r--r--src/client/components/ui/radios.vue2
-rw-r--r--src/client/components/ui/window.vue4
-rw-r--r--src/client/components/url-preview-popup.vue2
-rw-r--r--src/client/components/url-preview.vue4
-rw-r--r--src/client/components/user-info.vue2
-rw-r--r--src/client/components/user-list.vue2
-rw-r--r--src/client/components/user-preview.vue4
-rw-r--r--src/client/components/user-select-dialog.vue4
-rw-r--r--src/client/components/users-dialog.vue2
-rw-r--r--src/client/components/visibility-picker.vue2
-rw-r--r--src/client/components/waiting-dialog.vue2
-rw-r--r--src/client/components/widgets.vue6
-rw-r--r--src/client/directives/follow-append.ts2
-rw-r--r--src/client/directives/particle.ts4
-rw-r--r--src/client/directives/tooltip.ts6
-rw-r--r--src/client/directives/user-preview.ts4
-rw-r--r--src/client/filters/user.ts6
-rw-r--r--src/client/i18n.ts4
-rw-r--r--src/client/init.ts56
-rw-r--r--src/client/os.ts38
-rw-r--r--src/client/pages/_error_.vue2
-rw-r--r--src/client/pages/_loading_.vue2
-rw-r--r--src/client/pages/about-misskey.vue16
-rw-r--r--src/client/pages/about.vue14
-rw-r--r--src/client/pages/advanced-theme-editor.vue24
-rw-r--r--src/client/pages/announcements.vue6
-rw-r--r--src/client/pages/api-console.vue10
-rw-r--r--src/client/pages/auth.form.vue4
-rwxr-xr-xsrc/client/pages/auth.vue6
-rw-r--r--src/client/pages/channel-editor.vue10
-rw-r--r--src/client/pages/channel.vue10
-rw-r--r--src/client/pages/channels.vue8
-rw-r--r--src/client/pages/clip.vue8
-rw-r--r--src/client/pages/doc.vue4
-rw-r--r--src/client/pages/docs.vue2
-rw-r--r--src/client/pages/drive.vue4
-rw-r--r--src/client/pages/explore.vue10
-rw-r--r--src/client/pages/favorites.vue6
-rw-r--r--src/client/pages/featured.vue4
-rw-r--r--src/client/pages/follow-requests.vue4
-rw-r--r--src/client/pages/follow.vue4
-rw-r--r--src/client/pages/instance/abuses.vue12
-rw-r--r--src/client/pages/instance/announcements.vue8
-rw-r--r--src/client/pages/instance/emoji-edit-dialog.vue8
-rw-r--r--src/client/pages/instance/emojis.vue12
-rw-r--r--src/client/pages/instance/federation.vue10
-rw-r--r--src/client/pages/instance/file-dialog.vue14
-rw-r--r--src/client/pages/instance/files.vue14
-rw-r--r--src/client/pages/instance/index.metrics.vue14
-rw-r--r--src/client/pages/instance/index.vue16
-rw-r--r--src/client/pages/instance/instance.vue14
-rw-r--r--src/client/pages/instance/logs.vue10
-rw-r--r--src/client/pages/instance/queue.chart.vue2
-rw-r--r--src/client/pages/instance/queue.vue4
-rw-r--r--src/client/pages/instance/relays.vue6
-rw-r--r--src/client/pages/instance/settings.vue20
-rw-r--r--src/client/pages/instance/user-dialog.vue10
-rw-r--r--src/client/pages/instance/users.vue12
-rw-r--r--src/client/pages/mentions.vue4
-rw-r--r--src/client/pages/messages.vue4
-rw-r--r--src/client/pages/messaging/index.vue6
-rw-r--r--src/client/pages/messaging/messaging-room.form.vue8
-rw-r--r--src/client/pages/messaging/messaging-room.message.vue4
-rw-r--r--src/client/pages/messaging/messaging-room.vue12
-rw-r--r--src/client/pages/mfm-cheat-sheet.vue2
-rw-r--r--src/client/pages/miauth.vue8
-rw-r--r--src/client/pages/my-antennas/index.antenna.vue14
-rw-r--r--src/client/pages/my-antennas/index.vue4
-rw-r--r--src/client/pages/my-clips/index.vue6
-rw-r--r--src/client/pages/my-groups/group.vue6
-rw-r--r--src/client/pages/my-groups/index.vue12
-rw-r--r--src/client/pages/my-lists/index.vue6
-rw-r--r--src/client/pages/my-lists/list.vue6
-rw-r--r--src/client/pages/not-found.vue2
-rw-r--r--src/client/pages/note.vue12
-rw-r--r--src/client/pages/notifications.vue6
-rw-r--r--src/client/pages/page-editor/els/page-editor.el.button.vue8
-rw-r--r--src/client/pages/page-editor/els/page-editor.el.canvas.vue4
-rw-r--r--src/client/pages/page-editor/els/page-editor.el.counter.vue4
-rw-r--r--src/client/pages/page-editor/els/page-editor.el.if.vue4
-rw-r--r--src/client/pages/page-editor/els/page-editor.el.image.vue4
-rw-r--r--src/client/pages/page-editor/els/page-editor.el.note.vue10
-rw-r--r--src/client/pages/page-editor/els/page-editor.el.number-input.vue4
-rw-r--r--src/client/pages/page-editor/els/page-editor.el.post.vue8
-rw-r--r--src/client/pages/page-editor/els/page-editor.el.radio-button.vue6
-rw-r--r--src/client/pages/page-editor/els/page-editor.el.section.vue2
-rw-r--r--src/client/pages/page-editor/els/page-editor.el.switch.vue6
-rw-r--r--src/client/pages/page-editor/els/page-editor.el.text-input.vue4
-rw-r--r--src/client/pages/page-editor/els/page-editor.el.text.vue2
-rw-r--r--src/client/pages/page-editor/els/page-editor.el.textarea-input.vue6
-rw-r--r--src/client/pages/page-editor/els/page-editor.el.textarea.vue2
-rw-r--r--src/client/pages/page-editor/page-editor.blocks.vue2
-rw-r--r--src/client/pages/page-editor/page-editor.script-block.vue10
-rw-r--r--src/client/pages/page-editor/page-editor.vue24
-rw-r--r--src/client/pages/page.vue4
-rw-r--r--src/client/pages/pages.vue8
-rw-r--r--src/client/pages/preview.vue2
-rw-r--r--src/client/pages/reversi/game.board.vue10
-rw-r--r--src/client/pages/reversi/game.setting.vue6
-rw-r--r--src/client/pages/reversi/game.vue2
-rw-r--r--src/client/pages/reversi/index.vue6
-rw-r--r--src/client/pages/room/preview.vue2
-rw-r--r--src/client/pages/room/room.vue16
-rw-r--r--src/client/pages/scratchpad.vue8
-rw-r--r--src/client/pages/search.vue4
-rw-r--r--src/client/pages/settings/2fa.vue20
-rw-r--r--src/client/pages/settings/account-info.vue20
-rw-r--r--src/client/pages/settings/api.vue16
-rw-r--r--src/client/pages/settings/apps.vue14
-rw-r--r--src/client/pages/settings/deck.vue18
-rw-r--r--src/client/pages/settings/drive.vue12
-rw-r--r--src/client/pages/settings/email-address.vue10
-rw-r--r--src/client/pages/settings/email-notification.vue10
-rw-r--r--src/client/pages/settings/email.vue12
-rw-r--r--src/client/pages/settings/experimental-features.vue16
-rw-r--r--src/client/pages/settings/general.vue26
-rw-r--r--src/client/pages/settings/import-export.vue12
-rw-r--r--src/client/pages/settings/index.vue16
-rw-r--r--src/client/pages/settings/integration.vue8
-rw-r--r--src/client/pages/settings/mute-block.vue16
-rw-r--r--src/client/pages/settings/notifications.vue12
-rw-r--r--src/client/pages/settings/other.vue24
-rw-r--r--src/client/pages/settings/plugin.install.vue24
-rw-r--r--src/client/pages/settings/plugin.manage.vue18
-rw-r--r--src/client/pages/settings/plugin.vue10
-rw-r--r--src/client/pages/settings/privacy.vue12
-rw-r--r--src/client/pages/settings/profile.vue20
-rw-r--r--src/client/pages/settings/reaction.vue14
-rw-r--r--src/client/pages/settings/registry.keys.vue18
-rw-r--r--src/client/pages/settings/registry.value.vue18
-rw-r--r--src/client/pages/settings/registry.vue18
-rw-r--r--src/client/pages/settings/security.vue12
-rw-r--r--src/client/pages/settings/sidebar.vue18
-rw-r--r--src/client/pages/settings/sounds.vue16
-rw-r--r--src/client/pages/settings/theme.install.vue22
-rw-r--r--src/client/pages/settings/theme.manage.vue24
-rw-r--r--src/client/pages/settings/theme.vue26
-rw-r--r--src/client/pages/settings/update.vue20
-rw-r--r--src/client/pages/settings/word-mute.vue16
-rw-r--r--src/client/pages/share.vue6
-rw-r--r--src/client/pages/tag.vue4
-rw-r--r--src/client/pages/test.vue12
-rw-r--r--src/client/pages/theme-editor.vue18
-rw-r--r--src/client/pages/timeline.tutorial.vue2
-rw-r--r--src/client/pages/timeline.vue10
-rw-r--r--src/client/pages/user/clips.vue2
-rw-r--r--src/client/pages/user/follow-list.vue4
-rw-r--r--src/client/pages/user/index.activity.vue4
-rw-r--r--src/client/pages/user/index.photos.vue6
-rw-r--r--src/client/pages/user/index.timeline.vue6
-rw-r--r--src/client/pages/user/index.vue22
-rw-r--r--src/client/pages/user/pages.vue4
-rw-r--r--src/client/pages/v.vue2
-rw-r--r--src/client/pages/welcome.entrance.a.vue16
-rw-r--r--src/client/pages/welcome.entrance.b.vue16
-rw-r--r--src/client/pages/welcome.entrance.c.vue16
-rw-r--r--src/client/pages/welcome.setup.vue10
-rw-r--r--src/client/pages/welcome.timeline.vue4
-rw-r--r--src/client/pages/welcome.vue4
-rw-r--r--src/client/plugin.ts6
-rw-r--r--src/client/router.ts6
-rw-r--r--src/client/scripts/aiscript/api.ts4
-rw-r--r--src/client/scripts/autocomplete.ts4
-rw-r--r--src/client/scripts/gen-search-query.ts4
-rw-r--r--src/client/scripts/get-static-image-url.ts2
-rw-r--r--src/client/scripts/get-user-menu.ts18
-rw-r--r--src/client/scripts/hpml/evaluator.ts4
-rw-r--r--src/client/scripts/initialize-sw.ts8
-rw-r--r--src/client/scripts/paging.ts2
-rw-r--r--src/client/scripts/please-login.ts6
-rw-r--r--src/client/scripts/popout.ts2
-rw-r--r--src/client/scripts/reaction-picker.ts4
-rw-r--r--src/client/scripts/search.ts6
-rw-r--r--src/client/scripts/select-file.ts4
-rw-r--r--src/client/scripts/sound.ts2
-rw-r--r--src/client/scripts/stream.ts2
-rw-r--r--src/client/sidebar.ts8
-rw-r--r--src/client/sw/compose-notification.ts4
-rw-r--r--src/client/sw/sw.ts4
-rw-r--r--src/client/theme-store.ts4
-rw-r--r--src/client/tsconfig.json3
-rw-r--r--src/client/ui/_common_/common.vue8
-rw-r--r--src/client/ui/_common_/stream-indicator.vue2
-rw-r--r--src/client/ui/_common_/upload.vue2
-rw-r--r--src/client/ui/chat/header-clock.vue2
-rw-r--r--src/client/ui/chat/index.vue14
-rw-r--r--src/client/ui/chat/note-header.vue6
-rw-r--r--src/client/ui/chat/note-preview.vue4
-rw-r--r--src/client/ui/chat/note.sub.vue4
-rw-r--r--src/client/ui/chat/note.vue32
-rw-r--r--src/client/ui/chat/notes.vue4
-rw-r--r--src/client/ui/chat/post-form.vue24
-rw-r--r--src/client/ui/chat/side.vue8
-rw-r--r--src/client/ui/chat/sub-note-content.vue6
-rw-r--r--src/client/ui/chat/timeline.vue10
-rw-r--r--src/client/ui/chat/widgets.vue2
-rw-r--r--src/client/ui/deck.vue12
-rw-r--r--src/client/ui/deck/antenna-column.vue4
-rw-r--r--src/client/ui/deck/column.vue2
-rw-r--r--src/client/ui/deck/deck-store.ts4
-rw-r--r--src/client/ui/deck/direct-column.vue6
-rw-r--r--src/client/ui/deck/list-column.vue4
-rw-r--r--src/client/ui/deck/main-column.vue8
-rw-r--r--src/client/ui/deck/mentions-column.vue6
-rw-r--r--src/client/ui/deck/notifications-column.vue6
-rw-r--r--src/client/ui/deck/tl-column.vue4
-rw-r--r--src/client/ui/deck/widgets-column.vue2
-rw-r--r--src/client/ui/default.side.vue8
-rw-r--r--src/client/ui/default.vue10
-rw-r--r--src/client/ui/default.widgets.vue4
-rw-r--r--src/client/ui/desktop.vue12
-rw-r--r--src/client/ui/visitor/a.vue12
-rw-r--r--src/client/ui/visitor/b.vue16
-rw-r--r--src/client/ui/visitor/header.vue8
-rw-r--r--src/client/ui/visitor/kanban.vue12
-rw-r--r--src/client/ui/zen.vue2
-rw-r--r--src/client/widgets/activity.calendar.vue2
-rw-r--r--src/client/widgets/activity.chart.vue2
-rw-r--r--src/client/widgets/activity.vue4
-rw-r--r--src/client/widgets/aiscript.vue6
-rw-r--r--src/client/widgets/button.vue6
-rw-r--r--src/client/widgets/calendar.vue2
-rw-r--r--src/client/widgets/clock.vue6
-rw-r--r--src/client/widgets/define.ts4
-rw-r--r--src/client/widgets/digital-clock.vue2
-rw-r--r--src/client/widgets/federation.vue6
-rw-r--r--src/client/widgets/job-queue.vue4
-rw-r--r--src/client/widgets/memo.vue4
-rw-r--r--src/client/widgets/notifications.vue8
-rw-r--r--src/client/widgets/online-users.vue2
-rw-r--r--src/client/widgets/photos.vue6
-rw-r--r--src/client/widgets/post-form.vue2
-rw-r--r--src/client/widgets/rss.vue4
-rw-r--r--src/client/widgets/server-metric/disk.vue2
-rw-r--r--src/client/widgets/server-metric/index.vue4
-rw-r--r--src/client/widgets/server-metric/mem.vue2
-rw-r--r--src/client/widgets/server-metric/net.vue2
-rw-r--r--src/client/widgets/slideshow.vue2
-rw-r--r--src/client/widgets/timeline.vue6
-rw-r--r--src/client/widgets/trends.vue6
-rw-r--r--src/config/load.ts2
-rw-r--r--src/db/elasticsearch.ts2
-rw-r--r--src/db/postgre.ts2
-rw-r--r--src/db/redis.ts27
-rw-r--r--src/mfm/language.ts4
-rw-r--r--src/mfm/to-html.ts2
-rw-r--r--src/mfm/to-string.ts2
-rw-r--r--src/misc/antenna-cache.ts36
-rw-r--r--src/misc/app-lock.ts6
-rw-r--r--src/misc/captcha.ts2
-rw-r--r--src/misc/check-hit-antenna.ts14
-rw-r--r--src/misc/convert-host.ts3
-rw-r--r--src/misc/download-url.ts3
-rw-r--r--src/misc/fetch.ts2
-rw-r--r--src/misc/gen-id.ts2
-rw-r--r--src/models/repositories/antenna.ts2
-rw-r--r--src/models/repositories/app.ts4
-rw-r--r--src/models/repositories/auth-session.ts3
-rw-r--r--src/models/repositories/blocking.ts7
-rw-r--r--src/models/repositories/channel.ts12
-rw-r--r--src/models/repositories/clip.ts2
-rw-r--r--src/models/repositories/drive-file.ts10
-rw-r--r--src/models/repositories/drive-folder.ts2
-rw-r--r--src/models/repositories/federation-instance.ts2
-rw-r--r--src/models/repositories/follow-request.ts3
-rw-r--r--src/models/repositories/following.ts7
-rw-r--r--src/models/repositories/games/reversi/game.ts10
-rw-r--r--src/models/repositories/games/reversi/matching.ts3
-rw-r--r--src/models/repositories/hashtag.ts2
-rw-r--r--src/models/repositories/messaging-message.ts5
-rw-r--r--src/models/repositories/muting.ts7
-rw-r--r--src/models/repositories/note-favorite.ts5
-rw-r--r--src/models/repositories/note-reaction.ts7
-rw-r--r--src/models/repositories/note.ts20
-rw-r--r--src/models/repositories/notification.ts16
-rw-r--r--src/models/repositories/page-like.ts5
-rw-r--r--src/models/repositories/page.ts8
-rw-r--r--src/models/repositories/user-group.ts2
-rw-r--r--src/models/repositories/user-list.ts2
-rw-r--r--src/models/repositories/user.ts31
-rw-r--r--src/queue/index.ts22
-rw-r--r--src/queue/initialize.ts2
-rw-r--r--src/queue/processors/db/export-blocking.ts2
-rw-r--r--src/queue/processors/db/export-following.ts2
-rw-r--r--src/queue/processors/db/export-mute.ts2
-rw-r--r--src/queue/processors/db/export-user-lists.ts2
-rw-r--r--src/queue/processors/db/import-following.ts6
-rw-r--r--src/queue/processors/db/import-user-lists.ts8
-rw-r--r--src/queue/processors/deliver.ts7
-rw-r--r--src/queue/processors/inbox.ts5
-rw-r--r--src/queue/queues.ts2
-rw-r--r--src/remote/activitypub/db-resolver.ts2
-rw-r--r--src/remote/activitypub/deliver-manager.ts6
-rw-r--r--src/remote/activitypub/kernel/announce/note.ts6
-rw-r--r--src/remote/activitypub/kernel/create/note.ts4
-rw-r--r--src/remote/activitypub/kernel/delete/note.ts2
-rw-r--r--src/remote/activitypub/kernel/flag/index.ts4
-rw-r--r--src/remote/activitypub/kernel/read.ts2
-rw-r--r--src/remote/activitypub/misc/ld-signature.ts2
-rw-r--r--src/remote/activitypub/models/image.ts2
-rw-r--r--src/remote/activitypub/models/note.ts10
-rw-r--r--src/remote/activitypub/models/person.ts11
-rw-r--r--src/remote/activitypub/models/question.ts2
-rw-r--r--src/remote/activitypub/renderer/accept.ts6
-rw-r--r--src/remote/activitypub/renderer/add.ts2
-rw-r--r--src/remote/activitypub/renderer/announce.ts2
-rw-r--r--src/remote/activitypub/renderer/block.ts2
-rw-r--r--src/remote/activitypub/renderer/create.ts2
-rw-r--r--src/remote/activitypub/renderer/delete.ts6
-rw-r--r--src/remote/activitypub/renderer/emoji.ts2
-rw-r--r--src/remote/activitypub/renderer/follow-relay.ts2
-rw-r--r--src/remote/activitypub/renderer/follow-user.ts2
-rw-r--r--src/remote/activitypub/renderer/follow.ts4
-rw-r--r--src/remote/activitypub/renderer/hashtag.ts2
-rw-r--r--src/remote/activitypub/renderer/index.ts8
-rw-r--r--src/remote/activitypub/renderer/key.ts2
-rw-r--r--src/remote/activitypub/renderer/like.ts2
-rw-r--r--src/remote/activitypub/renderer/mention.ts2
-rw-r--r--src/remote/activitypub/renderer/note.ts2
-rw-r--r--src/remote/activitypub/renderer/person.ts5
-rw-r--r--src/remote/activitypub/renderer/question.ts6
-rw-r--r--src/remote/activitypub/renderer/read.ts6
-rw-r--r--src/remote/activitypub/renderer/reject.ts6
-rw-r--r--src/remote/activitypub/renderer/remove.ts6
-rw-r--r--src/remote/activitypub/renderer/undo.ts4
-rw-r--r--src/remote/activitypub/renderer/update.ts6
-rw-r--r--src/remote/activitypub/renderer/vote.ts6
-rw-r--r--src/remote/activitypub/request.ts14
-rw-r--r--src/remote/activitypub/resolver.ts4
-rw-r--r--src/remote/resolve-user.ts5
-rw-r--r--src/remote/webfinger.ts3
-rw-r--r--src/server/activitypub.ts4
-rw-r--r--src/server/activitypub/featured.ts2
-rw-r--r--src/server/activitypub/followers.ts4
-rw-r--r--src/server/activitypub/following.ts4
-rw-r--r--src/server/activitypub/outbox.ts4
-rw-r--r--src/server/api/2fa.ts2
-rw-r--r--src/server/api/authenticate.ts2
-rw-r--r--src/server/api/common/generate-block-query.ts2
-rw-r--r--src/server/api/common/generate-channel-query.ts2
-rw-r--r--src/server/api/common/generate-muted-note-query.ts2
-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.ts2
-rw-r--r--src/server/api/common/getters.ts2
-rw-r--r--src/server/api/common/read-messaging-message.ts6
-rw-r--r--src/server/api/common/signin.ts4
-rw-r--r--src/server/api/common/signup.ts4
-rw-r--r--src/server/api/define.ts21
-rw-r--r--src/server/api/endpoints.ts2
-rw-r--r--src/server/api/endpoints/admin/abuse-user-reports.ts2
-rw-r--r--src/server/api/endpoints/admin/accounts/create.ts3
-rw-r--r--src/server/api/endpoints/admin/announcements/create.ts2
-rw-r--r--src/server/api/endpoints/admin/announcements/delete.ts2
-rw-r--r--src/server/api/endpoints/admin/announcements/list.ts2
-rw-r--r--src/server/api/endpoints/admin/announcements/update.ts2
-rw-r--r--src/server/api/endpoints/admin/delete-all-files-of-a-user.ts2
-rw-r--r--src/server/api/endpoints/admin/delete-logs.ts2
-rw-r--r--src/server/api/endpoints/admin/drive/files.ts2
-rw-r--r--src/server/api/endpoints/admin/drive/show-file.ts2
-rw-r--r--src/server/api/endpoints/admin/emoji/add.ts4
-rw-r--r--src/server/api/endpoints/admin/emoji/copy.ts4
-rw-r--r--src/server/api/endpoints/admin/emoji/list-remote.ts4
-rw-r--r--src/server/api/endpoints/admin/emoji/list.ts8
-rw-r--r--src/server/api/endpoints/admin/emoji/remove.ts2
-rw-r--r--src/server/api/endpoints/admin/emoji/update.ts2
-rw-r--r--src/server/api/endpoints/admin/federation/refresh-remote-instance-metadata.ts2
-rw-r--r--src/server/api/endpoints/admin/federation/update-instance.ts2
-rw-r--r--src/server/api/endpoints/admin/invite.ts2
-rw-r--r--src/server/api/endpoints/admin/moderators/add.ts2
-rw-r--r--src/server/api/endpoints/admin/moderators/remove.ts2
-rw-r--r--src/server/api/endpoints/admin/promo/create.ts2
-rw-r--r--src/server/api/endpoints/admin/queue/deliver-delayed.ts3
-rw-r--r--src/server/api/endpoints/admin/queue/inbox-delayed.ts1
-rw-r--r--src/server/api/endpoints/admin/queue/jobs.ts2
-rw-r--r--src/server/api/endpoints/admin/queue/stats.ts2
-rw-r--r--src/server/api/endpoints/admin/relays/add.ts1
-rw-r--r--src/server/api/endpoints/admin/reset-password.ts2
-rw-r--r--src/server/api/endpoints/admin/resolve-abuse-user-report.ts2
-rw-r--r--src/server/api/endpoints/admin/server-info.ts4
-rw-r--r--src/server/api/endpoints/admin/show-moderation-logs.ts2
-rw-r--r--src/server/api/endpoints/admin/show-user.ts2
-rw-r--r--src/server/api/endpoints/admin/silence-user.ts2
-rw-r--r--src/server/api/endpoints/admin/suspend-user.ts2
-rw-r--r--src/server/api/endpoints/admin/unsilence-user.ts2
-rw-r--r--src/server/api/endpoints/admin/unsuspend-user.ts2
-rw-r--r--src/server/api/endpoints/admin/update-meta.ts4
-rw-r--r--src/server/api/endpoints/admin/update-remote-user.ts2
-rw-r--r--src/server/api/endpoints/announcements.ts2
-rw-r--r--src/server/api/endpoints/antennas/create.ts15
-rw-r--r--src/server/api/endpoints/antennas/delete.ts5
-rw-r--r--src/server/api/endpoints/antennas/notes.ts2
-rw-r--r--src/server/api/endpoints/antennas/show.ts2
-rw-r--r--src/server/api/endpoints/antennas/update.ts9
-rw-r--r--src/server/api/endpoints/ap/show.ts6
-rw-r--r--src/server/api/endpoints/app/create.ts4
-rw-r--r--src/server/api/endpoints/app/show.ts4
-rw-r--r--src/server/api/endpoints/auth/accept.ts4
-rw-r--r--src/server/api/endpoints/auth/session/generate.ts4
-rw-r--r--src/server/api/endpoints/blocking/create.ts6
-rw-r--r--src/server/api/endpoints/blocking/delete.ts6
-rw-r--r--src/server/api/endpoints/blocking/list.ts2
-rw-r--r--src/server/api/endpoints/channels/create.ts4
-rw-r--r--src/server/api/endpoints/channels/follow.ts4
-rw-r--r--src/server/api/endpoints/channels/followed.ts2
-rw-r--r--src/server/api/endpoints/channels/owned.ts2
-rw-r--r--src/server/api/endpoints/channels/show.ts2
-rw-r--r--src/server/api/endpoints/channels/timeline.ts4
-rw-r--r--src/server/api/endpoints/channels/unfollow.ts2
-rw-r--r--src/server/api/endpoints/channels/update.ts2
-rw-r--r--src/server/api/endpoints/charts/user/drive.ts2
-rw-r--r--src/server/api/endpoints/charts/user/following.ts2
-rw-r--r--src/server/api/endpoints/charts/user/notes.ts2
-rw-r--r--src/server/api/endpoints/charts/user/reactions.ts2
-rw-r--r--src/server/api/endpoints/clips/add-note.ts4
-rw-r--r--src/server/api/endpoints/clips/create.ts6
-rw-r--r--src/server/api/endpoints/clips/delete.ts2
-rw-r--r--src/server/api/endpoints/clips/notes.ts2
-rw-r--r--src/server/api/endpoints/clips/show.ts2
-rw-r--r--src/server/api/endpoints/clips/update.ts2
-rw-r--r--src/server/api/endpoints/drive.ts4
-rw-r--r--src/server/api/endpoints/drive/files.ts2
-rw-r--r--src/server/api/endpoints/drive/files/attached-notes.ts2
-rw-r--r--src/server/api/endpoints/drive/files/create.ts2
-rw-r--r--src/server/api/endpoints/drive/files/delete.ts2
-rw-r--r--src/server/api/endpoints/drive/files/find.ts2
-rw-r--r--src/server/api/endpoints/drive/files/show.ts2
-rw-r--r--src/server/api/endpoints/drive/files/update.ts2
-rw-r--r--src/server/api/endpoints/drive/files/upload-from-url.ts2
-rw-r--r--src/server/api/endpoints/drive/folders.ts2
-rw-r--r--src/server/api/endpoints/drive/folders/create.ts8
-rw-r--r--src/server/api/endpoints/drive/folders/delete.ts2
-rw-r--r--src/server/api/endpoints/drive/folders/find.ts2
-rw-r--r--src/server/api/endpoints/drive/folders/show.ts2
-rw-r--r--src/server/api/endpoints/drive/folders/update.ts2
-rw-r--r--src/server/api/endpoints/drive/stream.ts2
-rw-r--r--src/server/api/endpoints/federation/followers.ts2
-rw-r--r--src/server/api/endpoints/federation/following.ts2
-rw-r--r--src/server/api/endpoints/federation/instances.ts4
-rw-r--r--src/server/api/endpoints/federation/show-instance.ts3
-rw-r--r--src/server/api/endpoints/federation/users.ts2
-rw-r--r--src/server/api/endpoints/following/create.ts2
-rw-r--r--src/server/api/endpoints/following/delete.ts2
-rw-r--r--src/server/api/endpoints/following/requests/accept.ts2
-rw-r--r--src/server/api/endpoints/following/requests/cancel.ts2
-rw-r--r--src/server/api/endpoints/following/requests/reject.ts2
-rw-r--r--src/server/api/endpoints/games/reversi/games.ts4
-rw-r--r--src/server/api/endpoints/games/reversi/games/show.ts2
-rw-r--r--src/server/api/endpoints/games/reversi/games/surrender.ts2
-rw-r--r--src/server/api/endpoints/games/reversi/match.ts6
-rw-r--r--src/server/api/endpoints/get-online-users-count.ts6
-rw-r--r--src/server/api/endpoints/hashtags/show.ts2
-rw-r--r--src/server/api/endpoints/hashtags/trend.ts6
-rw-r--r--src/server/api/endpoints/hashtags/users.ts2
-rw-r--r--src/server/api/endpoints/i/2fa/key-done.ts2
-rw-r--r--src/server/api/endpoints/i/2fa/register-key.ts2
-rw-r--r--src/server/api/endpoints/i/2fa/register.ts2
-rw-r--r--src/server/api/endpoints/i/favorites.ts2
-rw-r--r--src/server/api/endpoints/i/import-following.ts2
-rw-r--r--src/server/api/endpoints/i/import-user-lists.ts2
-rw-r--r--src/server/api/endpoints/i/notifications.ts2
-rw-r--r--src/server/api/endpoints/i/page-likes.ts2
-rw-r--r--src/server/api/endpoints/i/pages.ts2
-rw-r--r--src/server/api/endpoints/i/pin.ts4
-rw-r--r--src/server/api/endpoints/i/read-announcement.ts4
-rw-r--r--src/server/api/endpoints/i/registry/scopes.ts1
-rw-r--r--src/server/api/endpoints/i/registry/set.ts2
-rw-r--r--src/server/api/endpoints/i/revoke-token.ts2
-rw-r--r--src/server/api/endpoints/i/signin-history.ts2
-rw-r--r--src/server/api/endpoints/i/unpin.ts4
-rw-r--r--src/server/api/endpoints/i/update-email.ts2
-rw-r--r--src/server/api/endpoints/i/update.ts11
-rw-r--r--src/server/api/endpoints/i/user-group-invites.ts2
-rw-r--r--src/server/api/endpoints/messaging/messages.ts2
-rw-r--r--src/server/api/endpoints/messaging/messages/create.ts2
-rw-r--r--src/server/api/endpoints/messaging/messages/delete.ts2
-rw-r--r--src/server/api/endpoints/messaging/messages/read.ts2
-rw-r--r--src/server/api/endpoints/meta.ts6
-rw-r--r--src/server/api/endpoints/miauth/gen-token.ts4
-rw-r--r--src/server/api/endpoints/mute/create.ts4
-rw-r--r--src/server/api/endpoints/mute/delete.ts2
-rw-r--r--src/server/api/endpoints/mute/list.ts2
-rw-r--r--src/server/api/endpoints/notes.ts2
-rw-r--r--src/server/api/endpoints/notes/children.ts2
-rw-r--r--src/server/api/endpoints/notes/clips.ts2
-rw-r--r--src/server/api/endpoints/notes/conversation.ts2
-rw-r--r--src/server/api/endpoints/notes/create.ts6
-rw-r--r--src/server/api/endpoints/notes/delete.ts2
-rw-r--r--src/server/api/endpoints/notes/favorites/create.ts4
-rw-r--r--src/server/api/endpoints/notes/favorites/delete.ts2
-rw-r--r--src/server/api/endpoints/notes/global-timeline.ts4
-rw-r--r--src/server/api/endpoints/notes/hybrid-timeline.ts4
-rw-r--r--src/server/api/endpoints/notes/local-timeline.ts4
-rw-r--r--src/server/api/endpoints/notes/mentions.ts4
-rw-r--r--src/server/api/endpoints/notes/polls/vote.ts4
-rw-r--r--src/server/api/endpoints/notes/reactions.ts2
-rw-r--r--src/server/api/endpoints/notes/reactions/create.ts2
-rw-r--r--src/server/api/endpoints/notes/reactions/delete.ts2
-rw-r--r--src/server/api/endpoints/notes/renotes.ts2
-rw-r--r--src/server/api/endpoints/notes/replies.ts2
-rw-r--r--src/server/api/endpoints/notes/search-by-tag.ts6
-rw-r--r--src/server/api/endpoints/notes/search.ts4
-rw-r--r--src/server/api/endpoints/notes/show.ts2
-rw-r--r--src/server/api/endpoints/notes/state.ts2
-rw-r--r--src/server/api/endpoints/notes/timeline.ts2
-rw-r--r--src/server/api/endpoints/notes/unrenote.ts6
-rw-r--r--src/server/api/endpoints/notes/user-list-timeline.ts2
-rw-r--r--src/server/api/endpoints/notes/watching/create.ts2
-rw-r--r--src/server/api/endpoints/notes/watching/delete.ts2
-rw-r--r--src/server/api/endpoints/page-push.ts4
-rw-r--r--src/server/api/endpoints/pages/create.ts4
-rw-r--r--src/server/api/endpoints/pages/delete.ts2
-rw-r--r--src/server/api/endpoints/pages/like.ts4
-rw-r--r--src/server/api/endpoints/pages/show.ts2
-rw-r--r--src/server/api/endpoints/pages/unlike.ts2
-rw-r--r--src/server/api/endpoints/pages/update.ts2
-rw-r--r--src/server/api/endpoints/pinned-users.ts4
-rw-r--r--src/server/api/endpoints/promo/read.ts4
-rw-r--r--src/server/api/endpoints/room/show.ts4
-rw-r--r--src/server/api/endpoints/sw/register.ts4
-rw-r--r--src/server/api/endpoints/users/clips.ts2
-rw-r--r--src/server/api/endpoints/users/followers.ts4
-rw-r--r--src/server/api/endpoints/users/following.ts4
-rw-r--r--src/server/api/endpoints/users/get-frequently-replied-users.ts2
-rw-r--r--src/server/api/endpoints/users/groups/create.ts6
-rw-r--r--src/server/api/endpoints/users/groups/delete.ts2
-rw-r--r--src/server/api/endpoints/users/groups/invitations/accept.ts4
-rw-r--r--src/server/api/endpoints/users/groups/invitations/reject.ts2
-rw-r--r--src/server/api/endpoints/users/groups/invite.ts8
-rw-r--r--src/server/api/endpoints/users/groups/pull.ts2
-rw-r--r--src/server/api/endpoints/users/groups/show.ts2
-rw-r--r--src/server/api/endpoints/users/groups/transfer.ts2
-rw-r--r--src/server/api/endpoints/users/groups/update.ts2
-rw-r--r--src/server/api/endpoints/users/lists/create.ts6
-rw-r--r--src/server/api/endpoints/users/lists/delete.ts2
-rw-r--r--src/server/api/endpoints/users/lists/pull.ts2
-rw-r--r--src/server/api/endpoints/users/lists/push.ts2
-rw-r--r--src/server/api/endpoints/users/lists/show.ts2
-rw-r--r--src/server/api/endpoints/users/lists/update.ts2
-rw-r--r--src/server/api/endpoints/users/notes.ts2
-rw-r--r--src/server/api/endpoints/users/pages.ts2
-rw-r--r--src/server/api/endpoints/users/relation.ts2
-rw-r--r--src/server/api/endpoints/users/report-abuse.ts4
-rw-r--r--src/server/api/endpoints/users/show.ts7
-rw-r--r--src/server/api/endpoints/users/stats.ts2
-rw-r--r--src/server/api/limiter.ts10
-rw-r--r--src/server/api/openapi/description.ts2
-rw-r--r--src/server/api/openapi/gen-spec.ts2
-rw-r--r--src/server/api/openapi/schemas.ts2
-rw-r--r--src/server/api/private/signin.ts4
-rw-r--r--src/server/api/private/signup.ts4
-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/antenna.ts2
-rw-r--r--src/server/api/stream/channels/channel.ts2
-rw-r--r--src/server/api/stream/channels/games/reversi.ts2
-rw-r--r--src/server/api/stream/channels/global-timeline.ts9
-rw-r--r--src/server/api/stream/channels/hashtag.ts4
-rw-r--r--src/server/api/stream/channels/home-timeline.ts7
-rw-r--r--src/server/api/stream/channels/hybrid-timeline.ts9
-rw-r--r--src/server/api/stream/channels/local-timeline.ts9
-rw-r--r--src/server/api/stream/channels/user-list.ts2
-rw-r--r--src/server/api/stream/index.ts19
-rw-r--r--src/server/api/streaming.ts33
-rw-r--r--src/server/file/send-drive-file.ts6
-rw-r--r--src/server/index.ts8
-rw-r--r--src/server/nodeinfo.ts4
-rw-r--r--src/server/proxy/proxy-media.ts6
-rw-r--r--src/server/web/feed.ts2
-rw-r--r--src/server/web/index.ts12
-rw-r--r--src/server/web/manifest.json28
-rw-r--r--src/server/web/manifest.ts4
-rw-r--r--src/server/web/url-preview.ts6
-rw-r--r--src/server/well-known.ts6
-rw-r--r--src/services/add-note-to-antenna.ts6
-rw-r--r--src/services/blocking/create.ts2
-rw-r--r--src/services/chart/charts/classes/active-users.ts4
-rw-r--r--src/services/chart/charts/classes/drive.ts2
-rw-r--r--src/services/chart/charts/classes/federation.ts2
-rw-r--r--src/services/chart/charts/classes/hashtag.ts4
-rw-r--r--src/services/chart/charts/classes/instance.ts4
-rw-r--r--src/services/chart/charts/classes/network.ts2
-rw-r--r--src/services/chart/charts/classes/notes.ts2
-rw-r--r--src/services/chart/charts/classes/per-user-drive.ts2
-rw-r--r--src/services/chart/charts/classes/per-user-following.ts4
-rw-r--r--src/services/chart/charts/classes/per-user-notes.ts4
-rw-r--r--src/services/chart/charts/classes/per-user-reactions.ts4
-rw-r--r--src/services/chart/charts/classes/test-grouped.ts2
-rw-r--r--src/services/chart/charts/classes/test-unique.ts2
-rw-r--r--src/services/chart/charts/classes/test.ts2
-rw-r--r--src/services/chart/charts/classes/users.ts4
-rw-r--r--src/services/chart/core.ts4
-rw-r--r--src/services/chart/index.ts2
-rw-r--r--src/services/create-notification.ts2
-rw-r--r--src/services/create-system-user.ts4
-rw-r--r--src/services/drive/add-file.ts14
-rw-r--r--src/services/drive/delete-file.ts4
-rw-r--r--src/services/drive/internal-storage.ts2
-rw-r--r--src/services/drive/s3.ts3
-rw-r--r--src/services/drive/upload-from-url.ts7
-rw-r--r--src/services/fetch-instance-metadata.ts4
-rw-r--r--src/services/following/create.ts19
-rw-r--r--src/services/following/delete.ts6
-rw-r--r--src/services/following/requests/accept-all.ts2
-rw-r--r--src/services/following/requests/accept.ts12
-rw-r--r--src/services/following/requests/cancel.ts11
-rw-r--r--src/services/following/requests/create.ts8
-rw-r--r--src/services/following/requests/reject.ts10
-rw-r--r--src/services/i/pin.ts10
-rw-r--r--src/services/insert-moderation-log.ts6
-rw-r--r--src/services/instance-actor.ts20
-rw-r--r--src/services/logger.ts4
-rw-r--r--src/services/messages/create.ts4
-rw-r--r--src/services/messages/delete.ts2
-rw-r--r--src/services/note/create.ts62
-rw-r--r--src/services/note/delete.ts4
-rw-r--r--src/services/note/polls/vote.ts2
-rw-r--r--src/services/note/reaction/create.ts8
-rw-r--r--src/services/note/reaction/delete.ts6
-rw-r--r--src/services/note/read.ts92
-rw-r--r--src/services/note/unread.ts2
-rw-r--r--src/services/note/watch.ts2
-rw-r--r--src/services/push-notification.ts4
-rw-r--r--src/services/register-or-fetch-instance-doc.ts6
-rw-r--r--src/services/relay.ts6
-rw-r--r--src/services/send-email-notification.ts2
-rw-r--r--src/services/send-email.ts4
-rw-r--r--src/services/stream.ts11
-rw-r--r--src/services/suspend-user.ts6
-rw-r--r--src/services/unsuspend-user.ts2
-rw-r--r--src/services/update-hashtag.ts8
-rw-r--r--src/services/user-list/push.ts4
-rw-r--r--src/tools/accept-migration.ts2
-rw-r--r--src/tools/add-emoji.ts2
-rw-r--r--src/tools/resync-remote-user.ts2
-rw-r--r--src/tsconfig.json8
740 files changed, 2289 insertions, 2122 deletions
diff --git a/src/@types/meta.json.d.ts b/src/@types/meta.json.d.ts
deleted file mode 100644
index ab812682b6..0000000000
--- a/src/@types/meta.json.d.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-declare module '*/meta.json' {
- const version: string;
-}
diff --git a/src/argv.ts b/src/argv.ts
index a92338f867..9c69a450db 100644
--- a/src/argv.ts
+++ b/src/argv.ts
@@ -1,5 +1,5 @@
import * as program from 'commander';
-import config from './config';
+import config from '@/config';
program
.version(config.version)
diff --git a/src/boot/master.ts b/src/boot/master.ts
index aded102912..ef8692b308 100644
--- a/src/boot/master.ts
+++ b/src/boot/master.ts
@@ -6,13 +6,13 @@ import * as isRoot from 'is-root';
import { getConnection } from 'typeorm';
import Logger from '../services/logger';
-import loadConfig from '../config/load';
-import { Config } from '../config/types';
+import loadConfig from '@/config/load';
+import { Config } from '@/config/types';
import { lessThan } from '../prelude/array';
import { program } from '../argv';
-import { showMachineInfo } from '../misc/show-machine-info';
+import { showMachineInfo } from '@/misc/show-machine-info';
import { initDb } from '../db/postgre';
-import * as meta from '../meta.json';
+const meta = require('../meta.json');
const logger = new Logger('core', 'cyan');
const bootLogger = logger.createSubLogger('boot', 'magenta', false);
diff --git a/src/client/account.ts b/src/client/account.ts
index e5b451cf14..6f06ee0f32 100644
--- a/src/client/account.ts
+++ b/src/client/account.ts
@@ -1,7 +1,7 @@
import { reactive } from 'vue';
-import { apiUrl } from '@/config';
-import { waiting } from '@/os';
-import { unisonReload } from '@/scripts/unison-reload';
+import { apiUrl } from '@client/config';
+import { waiting } from '@client/os';
+import { unisonReload } from '@client/scripts/unison-reload';
// TODO: 他のタブと永続化されたstateを同期
diff --git a/src/client/components/abuse-report-window.vue b/src/client/components/abuse-report-window.vue
index 98578ee44f..7dbb9657bd 100644
--- a/src/client/components/abuse-report-window.vue
+++ b/src/client/components/abuse-report-window.vue
@@ -29,10 +29,10 @@
<script lang="ts">
import { defineComponent, markRaw } from 'vue';
import { faExclamationCircle } from '@fortawesome/free-solid-svg-icons';
-import XWindow from '@/components/ui/window.vue';
-import MkTextarea from '@/components/ui/textarea.vue';
-import MkButton from '@/components/ui/button.vue';
-import * as os from '@/os';
+import XWindow from '@client/components/ui/window.vue';
+import MkTextarea from '@client/components/ui/textarea.vue';
+import MkButton from '@client/components/ui/button.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/components/analog-clock.vue b/src/client/components/analog-clock.vue
index 04d98508bb..8aa51898bc 100644
--- a/src/client/components/analog-clock.vue
+++ b/src/client/components/analog-clock.vue
@@ -36,7 +36,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import * as tinycolor from 'tinycolor2';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
data() {
diff --git a/src/client/components/autocomplete.vue b/src/client/components/autocomplete.vue
index ae742610f7..35cfb77301 100644
--- a/src/client/components/autocomplete.vue
+++ b/src/client/components/autocomplete.vue
@@ -29,12 +29,12 @@
<script lang="ts">
import { defineComponent, markRaw } from 'vue';
-import { emojilist } from '../../misc/emojilist';
-import contains from '@/scripts/contains';
-import { twemojiSvgBase } from '../../misc/twemoji-base';
-import { getStaticImageUrl } from '@/scripts/get-static-image-url';
-import { acct } from '@/filters/user';
-import * as os from '@/os';
+import { emojilist } from '@/misc/emojilist';
+import contains from '@client/scripts/contains';
+import { twemojiSvgBase } from '@/misc/twemoji-base';
+import { getStaticImageUrl } from '@client/scripts/get-static-image-url';
+import { acct } from '@client/filters/user';
+import * as os from '@client/os';
type EmojiDef = {
emoji: string;
diff --git a/src/client/components/avatars.vue b/src/client/components/avatars.vue
index 8bf64d79b5..cac95e6d40 100644
--- a/src/client/components/avatars.vue
+++ b/src/client/components/avatars.vue
@@ -8,7 +8,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
props: {
diff --git a/src/client/components/channel-follow-button.vue b/src/client/components/channel-follow-button.vue
index 17770a6f36..dc0c0faa1f 100644
--- a/src/client/components/channel-follow-button.vue
+++ b/src/client/components/channel-follow-button.vue
@@ -21,7 +21,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faSpinner, faPlus, faMinus, } from '@fortawesome/free-solid-svg-icons';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
props: {
diff --git a/src/client/components/dialog.vue b/src/client/components/dialog.vue
index a34f7f7947..ef30715343 100644
--- a/src/client/components/dialog.vue
+++ b/src/client/components/dialog.vue
@@ -40,10 +40,10 @@
import { defineComponent } from 'vue';
import { faSpinner, faInfoCircle, faExclamationTriangle, faCheck } from '@fortawesome/free-solid-svg-icons';
import { faTimesCircle, faQuestionCircle } from '@fortawesome/free-regular-svg-icons';
-import MkModal from '@/components/ui/modal.vue';
-import MkButton from '@/components/ui/button.vue';
-import MkInput from '@/components/ui/input.vue';
-import MkSelect from '@/components/ui/select.vue';
+import MkModal from '@client/components/ui/modal.vue';
+import MkButton from '@client/components/ui/button.vue';
+import MkInput from '@client/components/ui/input.vue';
+import MkSelect from '@client/components/ui/select.vue';
export default defineComponent({
components: {
diff --git a/src/client/components/drive-file-thumbnail.vue b/src/client/components/drive-file-thumbnail.vue
index e669da6a90..91f57d1f49 100644
--- a/src/client/components/drive-file-thumbnail.vue
+++ b/src/client/components/drive-file-thumbnail.vue
@@ -27,7 +27,7 @@ import {
faFilm
} from '@fortawesome/free-solid-svg-icons';
import ImgWithBlurhash from './img-with-blurhash.vue';
-import { ColdDeviceStorage } from '@/store';
+import { ColdDeviceStorage } from '@client/store';
export default defineComponent({
components: {
diff --git a/src/client/components/drive-select-dialog.vue b/src/client/components/drive-select-dialog.vue
index f9a4025452..ce6e2fa789 100644
--- a/src/client/components/drive-select-dialog.vue
+++ b/src/client/components/drive-select-dialog.vue
@@ -20,8 +20,8 @@
<script lang="ts">
import { defineComponent } from 'vue';
import XDrive from './drive.vue';
-import XModalWindow from '@/components/ui/modal-window.vue';
-import number from '@/filters/number';
+import XModalWindow from '@client/components/ui/modal-window.vue';
+import number from '@client/filters/number';
export default defineComponent({
components: {
diff --git a/src/client/components/drive-window.vue b/src/client/components/drive-window.vue
index 43f07ebe76..30b04091be 100644
--- a/src/client/components/drive-window.vue
+++ b/src/client/components/drive-window.vue
@@ -15,7 +15,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import XDrive from './drive.vue';
-import XWindow from '@/components/ui/window.vue';
+import XWindow from '@client/components/ui/window.vue';
export default defineComponent({
components: {
diff --git a/src/client/components/drive.file.vue b/src/client/components/drive.file.vue
index 5075b574c4..03f2da008d 100644
--- a/src/client/components/drive.file.vue
+++ b/src/client/components/drive.file.vue
@@ -34,10 +34,10 @@
import { defineComponent } from 'vue';
import { faEye, faEyeSlash } from '@fortawesome/free-regular-svg-icons';
import { faDownload, faLink, faICursor, faTrashAlt } from '@fortawesome/free-solid-svg-icons';
-import copyToClipboard from '@/scripts/copy-to-clipboard';
+import copyToClipboard from '@client/scripts/copy-to-clipboard';
import MkDriveFileThumbnail from './drive-file-thumbnail.vue';
-import bytes from '@/filters/bytes';
-import * as os from '@/os';
+import bytes from '@client/filters/bytes';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/components/drive.folder.vue b/src/client/components/drive.folder.vue
index 745b6018da..2822c85680 100644
--- a/src/client/components/drive.folder.vue
+++ b/src/client/components/drive.folder.vue
@@ -29,7 +29,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faFolder, faFolderOpen, faTrashAlt, faWindowRestore } from '@fortawesome/free-regular-svg-icons';
-import * as os from '@/os';
+import * as os from '@client/os';
import { faICursor } from '@fortawesome/free-solid-svg-icons';
export default defineComponent({
diff --git a/src/client/components/drive.nav-folder.vue b/src/client/components/drive.nav-folder.vue
index 881330529c..89a267b19f 100644
--- a/src/client/components/drive.nav-folder.vue
+++ b/src/client/components/drive.nav-folder.vue
@@ -15,7 +15,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faCloud } from '@fortawesome/free-solid-svg-icons';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
props: {
diff --git a/src/client/components/drive.vue b/src/client/components/drive.vue
index b9d93ee4cc..150d0d8774 100644
--- a/src/client/components/drive.vue
+++ b/src/client/components/drive.vue
@@ -52,7 +52,7 @@ import XNavFolder from './drive.nav-folder.vue';
import XFolder from './drive.folder.vue';
import XFile from './drive.file.vue';
import MkButton from './ui/button.vue';
-import * as os from '@/os';
+import * as os from '@client/os';
import { faTrashAlt } from '@fortawesome/free-regular-svg-icons';
export default defineComponent({
diff --git a/src/client/components/emoji-picker-dialog.vue b/src/client/components/emoji-picker-dialog.vue
index 4b165d9f91..5bdbc330ad 100644
--- a/src/client/components/emoji-picker-dialog.vue
+++ b/src/client/components/emoji-picker-dialog.vue
@@ -6,8 +6,8 @@
<script lang="ts">
import { defineComponent, markRaw } from 'vue';
-import MkModal from '@/components/ui/modal.vue';
-import MkEmojiPicker from '@/components/emoji-picker.vue';
+import MkModal from '@client/components/ui/modal.vue';
+import MkEmojiPicker from '@client/components/emoji-picker.vue';
export default defineComponent({
components: {
diff --git a/src/client/components/emoji-picker-window.vue b/src/client/components/emoji-picker-window.vue
index fb6a5a9072..5504eaecd6 100644
--- a/src/client/components/emoji-picker-window.vue
+++ b/src/client/components/emoji-picker-window.vue
@@ -13,8 +13,8 @@
<script lang="ts">
import { defineComponent, markRaw } from 'vue';
-import MkWindow from '@/components/ui/window.vue';
-import MkEmojiPicker from '@/components/emoji-picker.vue';
+import MkWindow from '@client/components/ui/window.vue';
+import MkEmojiPicker from '@client/components/emoji-picker.vue';
export default defineComponent({
components: {
diff --git a/src/client/components/emoji-picker.section.vue b/src/client/components/emoji-picker.section.vue
index a12493ce0d..944c507bdc 100644
--- a/src/client/components/emoji-picker.section.vue
+++ b/src/client/components/emoji-picker.section.vue
@@ -18,7 +18,7 @@
<script lang="ts">
import { defineComponent, markRaw } from 'vue';
import { faChevronUp, faChevronDown } from '@fortawesome/free-solid-svg-icons';
-import { getStaticImageUrl } from '@/scripts/get-static-image-url';
+import { getStaticImageUrl } from '@client/scripts/get-static-image-url';
export default defineComponent({
props: {
diff --git a/src/client/components/emoji-picker.vue b/src/client/components/emoji-picker.vue
index 99d6c8a330..573833b9d3 100644
--- a/src/client/components/emoji-picker.vue
+++ b/src/client/components/emoji-picker.vue
@@ -74,15 +74,15 @@
<script lang="ts">
import { defineComponent, markRaw } from 'vue';
-import { emojilist } from '../../misc/emojilist';
-import { getStaticImageUrl } from '@/scripts/get-static-image-url';
+import { emojilist } from '@/misc/emojilist';
+import { getStaticImageUrl } from '@client/scripts/get-static-image-url';
import { faAsterisk, faLeaf, faUtensils, faFutbol, faCity, faDice, faGlobe, faClock, faUser, faChevronDown, faShapes, faBicycle, faHashtag } from '@fortawesome/free-solid-svg-icons';
import { faHeart, faFlag, faLaugh } from '@fortawesome/free-regular-svg-icons';
-import Particle from '@/components/particle.vue';
-import * as os from '@/os';
-import { isDeviceTouch } from '@/scripts/is-device-touch';
-import { isMobile } from '@/scripts/is-mobile';
-import { emojiCategories } from '@/instance';
+import Particle from '@client/components/particle.vue';
+import * as os from '@client/os';
+import { isDeviceTouch } from '@client/scripts/is-device-touch';
+import { isMobile } from '@client/scripts/is-mobile';
+import { emojiCategories } from '@client/instance';
import XSection from './emoji-picker.section.vue';
export default defineComponent({
diff --git a/src/client/components/featured-photos.vue b/src/client/components/featured-photos.vue
index d0eb775cd0..daa2190feb 100644
--- a/src/client/components/featured-photos.vue
+++ b/src/client/components/featured-photos.vue
@@ -6,7 +6,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/components/file-type-icon.vue b/src/client/components/file-type-icon.vue
index ec29d5c882..2da9ba0cbd 100644
--- a/src/client/components/file-type-icon.vue
+++ b/src/client/components/file-type-icon.vue
@@ -7,7 +7,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faFileImage } from '@fortawesome/free-solid-svg-icons';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
props: {
diff --git a/src/client/components/follow-button.vue b/src/client/components/follow-button.vue
index 1234649e5a..d2dc9223bd 100644
--- a/src/client/components/follow-button.vue
+++ b/src/client/components/follow-button.vue
@@ -30,7 +30,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faSpinner, faPlus, faMinus, faHourglassHalf } from '@fortawesome/free-solid-svg-icons';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
props: {
diff --git a/src/client/components/form-dialog.vue b/src/client/components/form-dialog.vue
index 7620abcd76..d6a7e39d45 100644
--- a/src/client/components/form-dialog.vue
+++ b/src/client/components/form-dialog.vue
@@ -48,7 +48,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import XModalWindow from '@/components/ui/modal-window.vue';
+import XModalWindow from '@client/components/ui/modal-window.vue';
import FormBase from './form/base.vue';
import FormInput from './form/input.vue';
import FormTextarea from './form/textarea.vue';
diff --git a/src/client/components/form/pagination.vue b/src/client/components/form/pagination.vue
index df65d9684d..0a2f1ff0e1 100644
--- a/src/client/components/form/pagination.vue
+++ b/src/client/components/form/pagination.vue
@@ -16,7 +16,7 @@
import { defineComponent } from 'vue';
import FormButton from './button.vue';
import FormGroup from './group.vue';
-import paging from '@/scripts/paging';
+import paging from '@client/scripts/paging';
export default defineComponent({
components: {
diff --git a/src/client/components/form/radios.vue b/src/client/components/form/radios.vue
index 4c7f405cac..4561df32e1 100644
--- a/src/client/components/form/radios.vue
+++ b/src/client/components/form/radios.vue
@@ -1,6 +1,6 @@
<script lang="ts">
import { defineComponent, h } from 'vue';
-import MkRadio from '@/components/ui/radio.vue';
+import MkRadio from '@client/components/ui/radio.vue';
import './form.scss';
export default defineComponent({
diff --git a/src/client/components/formula-core.vue b/src/client/components/formula-core.vue
index 29c049297e..6e35295ff5 100644
--- a/src/client/components/formula-core.vue
+++ b/src/client/components/formula-core.vue
@@ -6,7 +6,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import * as katex from 'katex';import * as os from '@/os';
+import * as katex from 'katex';import * as os from '@client/os';
export default defineComponent({
props: {
diff --git a/src/client/components/formula.vue b/src/client/components/formula.vue
index fbb40bace7..6722ce38a1 100644
--- a/src/client/components/formula.vue
+++ b/src/client/components/formula.vue
@@ -3,7 +3,7 @@
</template>
<script lang="ts">
-import { defineComponent, defineAsyncComponent } from 'vue';import * as os from '@/os';
+import { defineComponent, defineAsyncComponent } from 'vue';import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/components/global/a.vue b/src/client/components/global/a.vue
index d293cb571f..a8a597b2bb 100644
--- a/src/client/components/global/a.vue
+++ b/src/client/components/global/a.vue
@@ -7,12 +7,12 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faExpandAlt, faColumns, faExternalLinkAlt, faLink, faWindowMaximize } from '@fortawesome/free-solid-svg-icons';
-import * as os from '@/os';
-import copyToClipboard from '@/scripts/copy-to-clipboard';
-import { router } from '@/router';
-import { url } from '@/config';
-import { popout } from '@/scripts/popout';
-import { ColdDeviceStorage } from '@/store';
+import * as os from '@client/os';
+import copyToClipboard from '@client/scripts/copy-to-clipboard';
+import { router } from '@client/router';
+import { url } from '@client/config';
+import { popout } from '@client/scripts/popout';
+import { ColdDeviceStorage } from '@client/store';
export default defineComponent({
inject: {
diff --git a/src/client/components/global/acct.vue b/src/client/components/global/acct.vue
index cad906524e..a969636a7e 100644
--- a/src/client/components/global/acct.vue
+++ b/src/client/components/global/acct.vue
@@ -8,7 +8,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { toUnicode } from 'punycode';
-import { host } from '@/config';
+import { host } from '@client/config';
export default defineComponent({
props: ['user', 'detail'],
diff --git a/src/client/components/global/avatar.vue b/src/client/components/global/avatar.vue
index d2f25fa41e..83675a155c 100644
--- a/src/client/components/global/avatar.vue
+++ b/src/client/components/global/avatar.vue
@@ -9,9 +9,9 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import { getStaticImageUrl } from '@/scripts/get-static-image-url';
-import { extractAvgColorFromBlurhash } from '@/scripts/extract-avg-color-from-blurhash';
-import { acct, userPage } from '@/filters/user';
+import { getStaticImageUrl } from '@client/scripts/get-static-image-url';
+import { extractAvgColorFromBlurhash } from '@client/scripts/extract-avg-color-from-blurhash';
+import { acct, userPage } from '@client/filters/user';
export default defineComponent({
props: {
diff --git a/src/client/components/global/emoji.vue b/src/client/components/global/emoji.vue
index c072b8431b..f4ebd5f3b3 100644
--- a/src/client/components/global/emoji.vue
+++ b/src/client/components/global/emoji.vue
@@ -7,8 +7,8 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import { getStaticImageUrl } from '@/scripts/get-static-image-url';
-import { twemojiSvgBase } from '@/../misc/twemoji-base';
+import { getStaticImageUrl } from '@client/scripts/get-static-image-url';
+import { twemojiSvgBase } from '@client/../misc/twemoji-base';
export default defineComponent({
props: {
diff --git a/src/client/components/global/error.vue b/src/client/components/global/error.vue
index b78973ff82..af989b1c57 100644
--- a/src/client/components/global/error.vue
+++ b/src/client/components/global/error.vue
@@ -11,7 +11,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons';
-import MkButton from '@/components/ui/button.vue';
+import MkButton from '@client/components/ui/button.vue';
export default defineComponent({
components: {
diff --git a/src/client/components/global/loading.vue b/src/client/components/global/loading.vue
index b4693258b9..5d0c10c086 100644
--- a/src/client/components/global/loading.vue
+++ b/src/client/components/global/loading.vue
@@ -6,7 +6,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
props: {
diff --git a/src/client/components/global/misskey-flavored-markdown.vue b/src/client/components/global/misskey-flavored-markdown.vue
index a3f443d5d8..988cf9cf47 100644
--- a/src/client/components/global/misskey-flavored-markdown.vue
+++ b/src/client/components/global/misskey-flavored-markdown.vue
@@ -4,7 +4,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import MfmCore from '@/components/mfm';
+import MfmCore from '@client/components/mfm';
export default defineComponent({
components: {
diff --git a/src/client/components/global/url.vue b/src/client/components/global/url.vue
index 2650cd33fd..c89536ebdb 100644
--- a/src/client/components/global/url.vue
+++ b/src/client/components/global/url.vue
@@ -23,9 +23,9 @@
import { defineComponent } from 'vue';
import { faExternalLinkSquareAlt } from '@fortawesome/free-solid-svg-icons';
import { toUnicode as decodePunycode } from 'punycode';
-import { url as local } from '@/config';
-import { isDeviceTouch } from '@/scripts/is-device-touch';
-import * as os from '@/os';
+import { url as local } from '@client/config';
+import { isDeviceTouch } from '@client/scripts/is-device-touch';
+import * as os from '@client/os';
export default defineComponent({
props: {
@@ -72,7 +72,7 @@ export default defineComponent({
if (!document.body.contains(this.$el)) return;
if (this.close) return;
- const { dispose } = await os.popup(import('@/components/url-preview-popup.vue'), {
+ const { dispose } = await os.popup(import('@client/components/url-preview-popup.vue'), {
url: this.url,
source: this.$el
});
diff --git a/src/client/components/google.vue b/src/client/components/google.vue
index fe692a9255..20dc1f825a 100644
--- a/src/client/components/google.vue
+++ b/src/client/components/google.vue
@@ -8,7 +8,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faSearch } from '@fortawesome/free-solid-svg-icons';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
props: ['q'],
diff --git a/src/client/components/image-viewer.vue b/src/client/components/image-viewer.vue
index 320df30506..ec22bd98ec 100644
--- a/src/client/components/image-viewer.vue
+++ b/src/client/components/image-viewer.vue
@@ -14,9 +14,9 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import bytes from '@/filters/bytes';
-import number from '@/filters/number';
-import MkModal from '@/components/ui/modal.vue';
+import bytes from '@client/filters/bytes';
+import number from '@client/filters/number';
+import MkModal from '@client/components/ui/modal.vue';
export default defineComponent({
components: {
diff --git a/src/client/components/instance-stats.vue b/src/client/components/instance-stats.vue
index e9b496180a..75abefc2fe 100644
--- a/src/client/components/instance-stats.vue
+++ b/src/client/components/instance-stats.vue
@@ -126,7 +126,7 @@ import { defineComponent, markRaw } from 'vue';
import { faChartBar, faUser, faPencilAlt, faSync } from '@fortawesome/free-solid-svg-icons';
import Chart from 'chart.js';
import MkSelect from './ui/select.vue';
-import number from '@/filters/number';
+import number from '@client/filters/number';
const sum = (...arr) => arr.reduce((r, a) => r.map((b, i) => a[i] + b));
const negate = arr => arr.map(x => -x);
@@ -137,7 +137,7 @@ const alpha = (hex, a) => {
const b = parseInt(result[3], 16);
return `rgba(${r}, ${g}, ${b}, ${a})`;
};
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/components/instance-ticker.vue b/src/client/components/instance-ticker.vue
index 1ce5a1c2c1..5674174558 100644
--- a/src/client/components/instance-ticker.vue
+++ b/src/client/components/instance-ticker.vue
@@ -7,7 +7,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import { instanceName } from '@/config';
+import { instanceName } from '@client/config';
export default defineComponent({
props: {
diff --git a/src/client/components/launch-pad.vue b/src/client/components/launch-pad.vue
index 4d2a3b2c77..a81320954c 100644
--- a/src/client/components/launch-pad.vue
+++ b/src/client/components/launch-pad.vue
@@ -36,9 +36,9 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faQuestionCircle, faInfoCircle, faCircle } from '@fortawesome/free-solid-svg-icons';
-import MkModal from '@/components/ui/modal.vue';
-import { sidebarDef } from '@/sidebar';
-import { instanceName } from '@/config';
+import MkModal from '@client/components/ui/modal.vue';
+import { sidebarDef } from '@client/sidebar';
+import { instanceName } from '@client/config';
export default defineComponent({
components: {
diff --git a/src/client/components/link.vue b/src/client/components/link.vue
index f51773dc4b..cc7db8c2f5 100644
--- a/src/client/components/link.vue
+++ b/src/client/components/link.vue
@@ -12,9 +12,9 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faExternalLinkSquareAlt } from '@fortawesome/free-solid-svg-icons';
-import { url as local } from '@/config';
-import { isDeviceTouch } from '@/scripts/is-device-touch';
-import * as os from '@/os';
+import { url as local } from '@client/config';
+import { isDeviceTouch } from '@client/scripts/is-device-touch';
+import * as os from '@client/os';
export default defineComponent({
props: {
@@ -46,7 +46,7 @@ export default defineComponent({
if (!document.body.contains(this.$el)) return;
if (this.close) return;
- const { dispose } = await os.popup(import('@/components/url-preview-popup.vue'), {
+ const { dispose } = await os.popup(import('@client/components/url-preview-popup.vue'), {
url: this.url,
source: this.$el
});
diff --git a/src/client/components/media-banner.vue b/src/client/components/media-banner.vue
index a2e1776d09..29d7c727f6 100644
--- a/src/client/components/media-banner.vue
+++ b/src/client/components/media-banner.vue
@@ -28,8 +28,8 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons';
-import * as os from '@/os';
-import { ColdDeviceStorage } from '@/store';
+import * as os from '@client/os';
+import { ColdDeviceStorage } from '@client/store';
export default defineComponent({
props: {
diff --git a/src/client/components/media-image.vue b/src/client/components/media-image.vue
index 9f3898ec56..41760d98d7 100644
--- a/src/client/components/media-image.vue
+++ b/src/client/components/media-image.vue
@@ -24,11 +24,11 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faExclamationTriangle, faEyeSlash } from '@fortawesome/free-solid-svg-icons';
-import { getStaticImageUrl } from '@/scripts/get-static-image-url';
-import { extractAvgColorFromBlurhash } from '@/scripts/extract-avg-color-from-blurhash';
+import { getStaticImageUrl } from '@client/scripts/get-static-image-url';
+import { extractAvgColorFromBlurhash } from '@client/scripts/extract-avg-color-from-blurhash';
import ImageViewer from './image-viewer.vue';
import ImgWithBlurhash from './img-with-blurhash.vue';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/components/media-list.vue b/src/client/components/media-list.vue
index 36fbb4bd06..71767a0f9f 100644
--- a/src/client/components/media-list.vue
+++ b/src/client/components/media-list.vue
@@ -17,7 +17,7 @@ import { defineComponent } from 'vue';
import XBanner from './media-banner.vue';
import XImage from './media-image.vue';
import XVideo from './media-video.vue';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/components/media-video.vue b/src/client/components/media-video.vue
index bdd3983e1e..b6f63cb65d 100644
--- a/src/client/components/media-video.vue
+++ b/src/client/components/media-video.vue
@@ -25,7 +25,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faExclamationTriangle, faEyeSlash } from '@fortawesome/free-solid-svg-icons';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
props: {
diff --git a/src/client/components/mention.vue b/src/client/components/mention.vue
index 12a620af9d..322e56d957 100644
--- a/src/client/components/mention.vue
+++ b/src/client/components/mention.vue
@@ -17,9 +17,9 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { toUnicode } from 'punycode';
-import { host as localHost } from '@/config';
+import { host as localHost } from '@client/config';
import { wellKnownServices } from '../../well-known-services';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
props: {
diff --git a/src/client/components/mfm.ts b/src/client/components/mfm.ts
index bca469a159..28ac9b8942 100644
--- a/src/client/components/mfm.ts
+++ b/src/client/components/mfm.ts
@@ -1,16 +1,16 @@
import { VNode, defineComponent, h } from 'vue';
-import { MfmForest } from '@/../mfm/prelude';
-import { parse, parsePlain } from '@/../mfm/parse';
-import MkUrl from '@/components/global/url.vue';
-import MkLink from '@/components/link.vue';
-import MkMention from '@/components/mention.vue';
-import MkEmoji from '@/components/global/emoji.vue';
-import { concat } from '@/../prelude/array';
-import MkFormula from '@/components/formula.vue';
-import MkCode from '@/components/code.vue';
-import MkGoogle from '@/components/google.vue';
-import MkA from '@/components/global/a.vue';
-import { host } from '@/config';
+import { MfmForest } from '@client/../mfm/prelude';
+import { parse, parsePlain } from '@client/../mfm/parse';
+import MkUrl from '@client/components/global/url.vue';
+import MkLink from '@client/components/link.vue';
+import MkMention from '@client/components/mention.vue';
+import MkEmoji from '@client/components/global/emoji.vue';
+import { concat } from '@client/../prelude/array';
+import MkFormula from '@client/components/formula.vue';
+import MkCode from '@client/components/code.vue';
+import MkGoogle from '@client/components/google.vue';
+import MkA from '@client/components/global/a.vue';
+import { host } from '@client/config';
export default defineComponent({
props: {
diff --git a/src/client/components/mini-chart.vue b/src/client/components/mini-chart.vue
index 2eb9ae8cbe..0d01e4e4b5 100644
--- a/src/client/components/mini-chart.vue
+++ b/src/client/components/mini-chart.vue
@@ -32,7 +32,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { v4 as uuid } from 'uuid';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
props: {
diff --git a/src/client/components/note-detailed.vue b/src/client/components/note-detailed.vue
index ea26d31100..fb4f9502b3 100644
--- a/src/client/components/note-detailed.vue
+++ b/src/client/components/note-detailed.vue
@@ -132,15 +132,15 @@ import XReactionsViewer from './reactions-viewer.vue';
import XMediaList from './media-list.vue';
import XCwButton from './cw-button.vue';
import XPoll from './poll.vue';
-import { pleaseLogin } from '@/scripts/please-login';
-import { focusPrev, focusNext } from '@/scripts/focus';
-import { url } from '@/config';
-import copyToClipboard from '@/scripts/copy-to-clipboard';
-import { checkWordMute } from '@/scripts/check-word-mute';
-import { userPage } from '@/filters/user';
-import * as os from '@/os';
-import { noteActions, noteViewInterruptors } from '@/store';
-import { reactionPicker } from '@/scripts/reaction-picker';
+import { pleaseLogin } from '@client/scripts/please-login';
+import { focusPrev, focusNext } from '@client/scripts/focus';
+import { url } from '@client/config';
+import copyToClipboard from '@client/scripts/copy-to-clipboard';
+import { checkWordMute } from '@client/scripts/check-word-mute';
+import { userPage } from '@client/filters/user';
+import * as os from '@client/os';
+import { noteActions, noteViewInterruptors } from '@client/store';
+import { reactionPicker } from '@client/scripts/reaction-picker';
function markRawAll(...xs) {
for (const x of xs) {
@@ -160,8 +160,8 @@ export default defineComponent({
XMediaList,
XCwButton,
XPoll,
- MkUrlPreview: defineAsyncComponent(() => import('@/components/url-preview.vue')),
- MkInstanceTicker: defineAsyncComponent(() => import('@/components/instance-ticker.vue')),
+ MkUrlPreview: defineAsyncComponent(() => import('@client/components/url-preview.vue')),
+ MkInstanceTicker: defineAsyncComponent(() => import('@client/components/instance-ticker.vue')),
},
inject: {
@@ -687,7 +687,7 @@ export default defineComponent({
text: this.$ts.reportAbuse,
action: () => {
const u = `${url}/notes/${this.appearNote.id}`;
- os.popup(import('@/components/abuse-report-window.vue'), {
+ os.popup(import('@client/components/abuse-report-window.vue'), {
user: this.appearNote.user,
initialComment: `Note: ${u}\n-----\n`
}, {}, 'closed');
diff --git a/src/client/components/note-header.vue b/src/client/components/note-header.vue
index 1f7a07bac3..a6e9b6fe56 100644
--- a/src/client/components/note-header.vue
+++ b/src/client/components/note-header.vue
@@ -28,7 +28,7 @@ import { faHome, faUnlock, faEnvelope, faMobileAlt, faBookmark, faBiohazard } fr
import { faBookmark as farBookmark } from '@fortawesome/free-regular-svg-icons';
import notePage from '../filters/note';
import { userPage } from '../filters/user';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
props: {
diff --git a/src/client/components/note-preview.vue b/src/client/components/note-preview.vue
index 4ea97d17ee..fcae4c4368 100644
--- a/src/client/components/note-preview.vue
+++ b/src/client/components/note-preview.vue
@@ -21,7 +21,7 @@ import { defineComponent } from 'vue';
import XNoteHeader from './note-header.vue';
import XSubNoteContent from './sub-note-content.vue';
import XCwButton from './cw-button.vue';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/components/note.sub.vue b/src/client/components/note.sub.vue
index 28553ea4a7..853d481406 100644
--- a/src/client/components/note.sub.vue
+++ b/src/client/components/note.sub.vue
@@ -24,7 +24,7 @@ import { defineComponent } from 'vue';
import XNoteHeader from './note-header.vue';
import XSubNoteContent from './sub-note-content.vue';
import XCwButton from './cw-button.vue';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
name: 'XSub',
diff --git a/src/client/components/note.vue b/src/client/components/note.vue
index 70f49fef7e..b54cadfc80 100644
--- a/src/client/components/note.vue
+++ b/src/client/components/note.vue
@@ -114,15 +114,15 @@ import XReactionsViewer from './reactions-viewer.vue';
import XMediaList from './media-list.vue';
import XCwButton from './cw-button.vue';
import XPoll from './poll.vue';
-import { pleaseLogin } from '@/scripts/please-login';
-import { focusPrev, focusNext } from '@/scripts/focus';
-import { url } from '@/config';
-import copyToClipboard from '@/scripts/copy-to-clipboard';
-import { checkWordMute } from '@/scripts/check-word-mute';
-import { userPage } from '@/filters/user';
-import * as os from '@/os';
-import { noteActions, noteViewInterruptors } from '@/store';
-import { reactionPicker } from '@/scripts/reaction-picker';
+import { pleaseLogin } from '@client/scripts/please-login';
+import { focusPrev, focusNext } from '@client/scripts/focus';
+import { url } from '@client/config';
+import copyToClipboard from '@client/scripts/copy-to-clipboard';
+import { checkWordMute } from '@client/scripts/check-word-mute';
+import { userPage } from '@client/filters/user';
+import * as os from '@client/os';
+import { noteActions, noteViewInterruptors } from '@client/store';
+import { reactionPicker } from '@client/scripts/reaction-picker';
function markRawAll(...xs) {
for (const x of xs) {
@@ -141,8 +141,8 @@ export default defineComponent({
XMediaList,
XCwButton,
XPoll,
- MkUrlPreview: defineAsyncComponent(() => import('@/components/url-preview.vue')),
- MkInstanceTicker: defineAsyncComponent(() => import('@/components/instance-ticker.vue')),
+ MkUrlPreview: defineAsyncComponent(() => import('@client/components/url-preview.vue')),
+ MkInstanceTicker: defineAsyncComponent(() => import('@client/components/instance-ticker.vue')),
},
inject: {
@@ -662,7 +662,7 @@ export default defineComponent({
text: this.$ts.reportAbuse,
action: () => {
const u = `${url}/notes/${this.appearNote.id}`;
- os.popup(import('@/components/abuse-report-window.vue'), {
+ os.popup(import('@client/components/abuse-report-window.vue'), {
user: this.appearNote.user,
initialComment: `Note: ${u}\n-----\n`
}, {}, 'closed');
diff --git a/src/client/components/notes.vue b/src/client/components/notes.vue
index 332f00e5db..80a9502d5f 100644
--- a/src/client/components/notes.vue
+++ b/src/client/components/notes.vue
@@ -29,10 +29,10 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import paging from '@/scripts/paging';
+import paging from '@client/scripts/paging';
import XNote from './note.vue';
import XList from './date-separated-list.vue';
-import MkButton from '@/components/ui/button.vue';
+import MkButton from '@client/components/ui/button.vue';
export default defineComponent({
components: {
diff --git a/src/client/components/notification-setting-window.vue b/src/client/components/notification-setting-window.vue
index 1c19de9ff9..a3e221f7b2 100644
--- a/src/client/components/notification-setting-window.vue
+++ b/src/client/components/notification-setting-window.vue
@@ -26,7 +26,7 @@
<script lang="ts">
import { defineComponent, PropType } from 'vue';
-import XModalWindow from '@/components/ui/modal-window.vue';
+import XModalWindow from '@client/components/ui/modal-window.vue';
import MkSwitch from './ui/switch.vue';
import MkInfo from './ui/info.vue';
import MkButton from './ui/button.vue';
diff --git a/src/client/components/notification.vue b/src/client/components/notification.vue
index 2fe8500891..2b8b440ced 100644
--- a/src/client/components/notification.vue
+++ b/src/client/components/notification.vue
@@ -61,13 +61,13 @@
import { defineComponent } from 'vue';
import { faIdCardAlt, faPlus, faQuoteLeft, faQuoteRight, faRetweet, faReply, faAt, faCheck, faPollH } from '@fortawesome/free-solid-svg-icons';
import { faClock } from '@fortawesome/free-regular-svg-icons';
-import { getNoteSummary } from '../../misc/get-note-summary';
+import { getNoteSummary } from '@/misc/get-note-summary';
import XReactionIcon from './reaction-icon.vue';
import MkFollowButton from './follow-button.vue';
import notePage from '../filters/note';
import { userPage } from '../filters/user';
-import { i18n } from '@/i18n';
-import * as os from '@/os';
+import { i18n } from '@client/i18n';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/components/notifications.vue b/src/client/components/notifications.vue
index 56dbfd5bdf..01b3ae4396 100644
--- a/src/client/components/notifications.vue
+++ b/src/client/components/notifications.vue
@@ -18,12 +18,12 @@
<script lang="ts">
import { defineComponent, PropType } from 'vue';
-import paging from '@/scripts/paging';
+import paging from '@client/scripts/paging';
import XNotification from './notification.vue';
import XList from './date-separated-list.vue';
import XNote from './note.vue';
import { notificationTypes } from '../../types';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/components/page-preview.vue b/src/client/components/page-preview.vue
index d59813e00d..2125ddc534 100644
--- a/src/client/components/page-preview.vue
+++ b/src/client/components/page-preview.vue
@@ -17,7 +17,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { userName } from '../filters/user';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
props: {
diff --git a/src/client/components/page-window.vue b/src/client/components/page-window.vue
index 37342c403b..ca6f4dd73e 100644
--- a/src/client/components/page-window.vue
+++ b/src/client/components/page-window.vue
@@ -23,12 +23,12 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faExternalLinkAlt, faExpandAlt, faLink, faChevronLeft, faColumns } from '@fortawesome/free-solid-svg-icons';
-import XWindow from '@/components/ui/window.vue';
-import XHeader from '@/ui/_common_/header.vue';
-import { popout } from '@/scripts/popout';
-import copyToClipboard from '@/scripts/copy-to-clipboard';
-import { resolve } from '@/router';
-import { url } from '@/config';
+import XWindow from '@client/components/ui/window.vue';
+import XHeader from '@client/ui/_common_/header.vue';
+import { popout } from '@client/scripts/popout';
+import copyToClipboard from '@client/scripts/copy-to-clipboard';
+import { resolve } from '@client/router';
+import { url } from '@client/config';
export default defineComponent({
components: {
diff --git a/src/client/components/page/page.block.vue b/src/client/components/page/page.block.vue
index 54b8b30276..ffd9ce89f9 100644
--- a/src/client/components/page/page.block.vue
+++ b/src/client/components/page/page.block.vue
@@ -19,8 +19,8 @@ import XCounter from './page.counter.vue';
import XRadioButton from './page.radio-button.vue';
import XCanvas from './page.canvas.vue';
import XNote from './page.note.vue';
-import { Hpml } from '@/scripts/hpml/evaluator';
-import { Block } from '@/scripts/hpml/block';
+import { Hpml } from '@client/scripts/hpml/evaluator';
+import { Block } from '@client/scripts/hpml/block';
export default defineComponent({
components: {
diff --git a/src/client/components/page/page.button.vue b/src/client/components/page/page.button.vue
index 51da84bd49..c6ae675212 100644
--- a/src/client/components/page/page.button.vue
+++ b/src/client/components/page/page.button.vue
@@ -7,9 +7,9 @@
<script lang="ts">
import { defineComponent, PropType, unref } from 'vue';
import MkButton from '../ui/button.vue';
-import * as os from '@/os';
-import { ButtonBlock } from '@/scripts/hpml/block';
-import { Hpml } from '@/scripts/hpml/evaluator';
+import * as os from '@client/os';
+import { ButtonBlock } from '@client/scripts/hpml/block';
+import { Hpml } from '@client/scripts/hpml/evaluator';
export default defineComponent({
components: {
diff --git a/src/client/components/page/page.canvas.vue b/src/client/components/page/page.canvas.vue
index 8f49b88e5e..e26db597f2 100644
--- a/src/client/components/page/page.canvas.vue
+++ b/src/client/components/page/page.canvas.vue
@@ -6,9 +6,9 @@
<script lang="ts">
import { defineComponent, onMounted, PropType, Ref, ref } from 'vue';
-import * as os from '@/os';
-import { CanvasBlock } from '@/scripts/hpml/block';
-import { Hpml } from '@/scripts/hpml/evaluator';
+import * as os from '@client/os';
+import { CanvasBlock } from '@client/scripts/hpml/block';
+import { Hpml } from '@client/scripts/hpml/evaluator';
export default defineComponent({
props: {
diff --git a/src/client/components/page/page.counter.vue b/src/client/components/page/page.counter.vue
index b1af8954b0..dad7ac3da0 100644
--- a/src/client/components/page/page.counter.vue
+++ b/src/client/components/page/page.counter.vue
@@ -7,9 +7,9 @@
<script lang="ts">
import { computed, defineComponent, PropType } from 'vue';
import MkButton from '../ui/button.vue';
-import * as os from '@/os';
-import { CounterVarBlock } from '@/scripts/hpml/block';
-import { Hpml } from '@/scripts/hpml/evaluator';
+import * as os from '@client/os';
+import { CounterVarBlock } from '@client/scripts/hpml/block';
+import { Hpml } from '@client/scripts/hpml/evaluator';
export default defineComponent({
components: {
diff --git a/src/client/components/page/page.if.vue b/src/client/components/page/page.if.vue
index ec25332db0..a70525e07c 100644
--- a/src/client/components/page/page.if.vue
+++ b/src/client/components/page/page.if.vue
@@ -5,8 +5,8 @@
</template>
<script lang="ts">
-import { IfBlock } from '@/scripts/hpml/block';
-import { Hpml } from '@/scripts/hpml/evaluator';
+import { IfBlock } from '@client/scripts/hpml/block';
+import { Hpml } from '@client/scripts/hpml/evaluator';
import { defineComponent, defineAsyncComponent, PropType } from 'vue';
export default defineComponent({
diff --git a/src/client/components/page/page.image.vue b/src/client/components/page/page.image.vue
index 04ce74bd7c..14dedc98a0 100644
--- a/src/client/components/page/page.image.vue
+++ b/src/client/components/page/page.image.vue
@@ -6,9 +6,9 @@
<script lang="ts">
import { defineComponent, PropType } from 'vue';
-import * as os from '@/os';
-import { ImageBlock } from '@/scripts/hpml/block';
-import { Hpml } from '@/scripts/hpml/evaluator';
+import * as os from '@client/os';
+import { ImageBlock } from '@client/scripts/hpml/block';
+import { Hpml } from '@client/scripts/hpml/evaluator';
export default defineComponent({
props: {
diff --git a/src/client/components/page/page.note.vue b/src/client/components/page/page.note.vue
index 925844c1bd..7a3f88bb1f 100644
--- a/src/client/components/page/page.note.vue
+++ b/src/client/components/page/page.note.vue
@@ -7,10 +7,10 @@
<script lang="ts">
import { defineComponent, onMounted, PropType, Ref, ref } from 'vue';
-import XNote from '@/components/note.vue';
-import XNoteDetailed from '@/components/note-detailed.vue';
-import * as os from '@/os';
-import { NoteBlock } from '@/scripts/hpml/block';
+import XNote from '@client/components/note.vue';
+import XNoteDetailed from '@client/components/note-detailed.vue';
+import * as os from '@client/os';
+import { NoteBlock } from '@client/scripts/hpml/block';
export default defineComponent({
components: {
diff --git a/src/client/components/page/page.number-input.vue b/src/client/components/page/page.number-input.vue
index 7b7d799330..1970ee62a9 100644
--- a/src/client/components/page/page.number-input.vue
+++ b/src/client/components/page/page.number-input.vue
@@ -7,9 +7,9 @@
<script lang="ts">
import { computed, defineComponent, PropType } from 'vue';
import MkInput from '../ui/input.vue';
-import * as os from '@/os';
-import { Hpml } from '@/scripts/hpml/evaluator';
-import { NumberInputVarBlock } from '@/scripts/hpml/block';
+import * as os from '@client/os';
+import { Hpml } from '@client/scripts/hpml/evaluator';
+import { NumberInputVarBlock } from '@client/scripts/hpml/block';
export default defineComponent({
components: {
diff --git a/src/client/components/page/page.post.vue b/src/client/components/page/page.post.vue
index 33c6e6b14c..926d06ae80 100644
--- a/src/client/components/page/page.post.vue
+++ b/src/client/components/page/page.post.vue
@@ -10,10 +10,10 @@ import { defineComponent, PropType } from 'vue';
import { faCheck, faPaperPlane } from '@fortawesome/free-solid-svg-icons';
import MkTextarea from '../ui/textarea.vue';
import MkButton from '../ui/button.vue';
-import { apiUrl } from '@/config';
-import * as os from '@/os';
-import { PostBlock } from '@/scripts/hpml/block';
-import { Hpml } from '@/scripts/hpml/evaluator';
+import { apiUrl } from '@client/config';
+import * as os from '@client/os';
+import { PostBlock } from '@client/scripts/hpml/block';
+import { Hpml } from '@client/scripts/hpml/evaluator';
export default defineComponent({
components: {
diff --git a/src/client/components/page/page.radio-button.vue b/src/client/components/page/page.radio-button.vue
index def6ee8885..f6f146b52f 100644
--- a/src/client/components/page/page.radio-button.vue
+++ b/src/client/components/page/page.radio-button.vue
@@ -8,9 +8,9 @@
<script lang="ts">
import { computed, defineComponent, PropType } from 'vue';
import MkRadio from '../ui/radio.vue';
-import * as os from '@/os';
-import { Hpml } from '@/scripts/hpml/evaluator';
-import { RadioButtonVarBlock } from '@/scripts/hpml/block';
+import * as os from '@client/os';
+import { Hpml } from '@client/scripts/hpml/evaluator';
+import { RadioButtonVarBlock } from '@client/scripts/hpml/block';
export default defineComponent({
components: {
diff --git a/src/client/components/page/page.section.vue b/src/client/components/page/page.section.vue
index d32f5dc732..81cab12501 100644
--- a/src/client/components/page/page.section.vue
+++ b/src/client/components/page/page.section.vue
@@ -10,9 +10,9 @@
<script lang="ts">
import { defineComponent, defineAsyncComponent, PropType } from 'vue';
-import * as os from '@/os';
-import { SectionBlock } from '@/scripts/hpml/block';
-import { Hpml } from '@/scripts/hpml/evaluator';
+import * as os from '@client/os';
+import { SectionBlock } from '@client/scripts/hpml/block';
+import { Hpml } from '@client/scripts/hpml/evaluator';
export default defineComponent({
components: {
diff --git a/src/client/components/page/page.switch.vue b/src/client/components/page/page.switch.vue
index 9c3fb5feaa..a928c22bee 100644
--- a/src/client/components/page/page.switch.vue
+++ b/src/client/components/page/page.switch.vue
@@ -7,9 +7,9 @@
<script lang="ts">
import { computed, defineComponent, PropType } from 'vue';
import MkSwitch from '../ui/switch.vue';
-import * as os from '@/os';
-import { Hpml } from '@/scripts/hpml/evaluator';
-import { SwitchVarBlock } from '@/scripts/hpml/block';
+import * as os from '@client/os';
+import { Hpml } from '@client/scripts/hpml/evaluator';
+import { SwitchVarBlock } from '@client/scripts/hpml/block';
export default defineComponent({
components: {
diff --git a/src/client/components/page/page.text-input.vue b/src/client/components/page/page.text-input.vue
index e67814af16..8bf3e1c88e 100644
--- a/src/client/components/page/page.text-input.vue
+++ b/src/client/components/page/page.text-input.vue
@@ -7,9 +7,9 @@
<script lang="ts">
import { computed, defineComponent, PropType } from 'vue';
import MkInput from '../ui/input.vue';
-import * as os from '@/os';
-import { Hpml } from '@/scripts/hpml/evaluator';
-import { TextInputVarBlock } from '@/scripts/hpml/block';
+import * as os from '@client/os';
+import { Hpml } from '@client/scripts/hpml/evaluator';
+import { TextInputVarBlock } from '@client/scripts/hpml/block';
export default defineComponent({
components: {
diff --git a/src/client/components/page/page.text.vue b/src/client/components/page/page.text.vue
index 1896d00f42..491c62be26 100644
--- a/src/client/components/page/page.text.vue
+++ b/src/client/components/page/page.text.vue
@@ -6,15 +6,15 @@
</template>
<script lang="ts">
-import { TextBlock } from '@/scripts/hpml/block';
-import { Hpml } from '@/scripts/hpml/evaluator';
+import { TextBlock } from '@client/scripts/hpml/block';
+import { Hpml } from '@client/scripts/hpml/evaluator';
import { defineAsyncComponent, defineComponent, PropType } from 'vue';
import { parse } from '../../../mfm/parse';
import { unique } from '../../../prelude/array';
export default defineComponent({
components: {
- MkUrlPreview: defineAsyncComponent(() => import('@/components/url-preview.vue')),
+ MkUrlPreview: defineAsyncComponent(() => import('@client/components/url-preview.vue')),
},
props: {
block: {
diff --git a/src/client/components/page/page.textarea-input.vue b/src/client/components/page/page.textarea-input.vue
index 085c2ba579..9951cef2de 100644
--- a/src/client/components/page/page.textarea-input.vue
+++ b/src/client/components/page/page.textarea-input.vue
@@ -7,10 +7,10 @@
<script lang="ts">
import { computed, defineComponent, PropType } from 'vue';
import MkTextarea from '../ui/textarea.vue';
-import * as os from '@/os';
-import { Hpml } from '@/scripts/hpml/evaluator';
-import { HpmlTextInput } from '@/scripts/hpml';
-import { TextInputVarBlock } from '@/scripts/hpml/block';
+import * as os from '@client/os';
+import { Hpml } from '@client/scripts/hpml/evaluator';
+import { HpmlTextInput } from '@client/scripts/hpml';
+import { TextInputVarBlock } from '@client/scripts/hpml/block';
export default defineComponent({
components: {
diff --git a/src/client/components/page/page.textarea.vue b/src/client/components/page/page.textarea.vue
index 97d688368a..612bbe41b9 100644
--- a/src/client/components/page/page.textarea.vue
+++ b/src/client/components/page/page.textarea.vue
@@ -3,8 +3,8 @@
</template>
<script lang="ts">
-import { TextBlock } from '@/scripts/hpml/block';
-import { Hpml } from '@/scripts/hpml/evaluator';
+import { TextBlock } from '@client/scripts/hpml/block';
+import { Hpml } from '@client/scripts/hpml/evaluator';
import { defineComponent, PropType } from 'vue';
import MkTextarea from '../ui/textarea.vue';
diff --git a/src/client/components/page/page.vue b/src/client/components/page/page.vue
index 6d1c419a40..f125365c3d 100644
--- a/src/client/components/page/page.vue
+++ b/src/client/components/page/page.vue
@@ -8,10 +8,10 @@
import { defineComponent, onMounted, nextTick, onUnmounted, PropType } from 'vue';
import { parse } from '@syuilo/aiscript';
import XBlock from './page.block.vue';
-import { Hpml } from '@/scripts/hpml/evaluator';
-import { url } from '@/config';
-import { $i } from '@/account';
-import { defaultStore } from '@/store';
+import { Hpml } from '@client/scripts/hpml/evaluator';
+import { url } from '@client/config';
+import { $i } from '@client/account';
+import { defaultStore } from '@client/store';
export default defineComponent({
components: {
diff --git a/src/client/components/poll-editor.vue b/src/client/components/poll-editor.vue
index 49454f23c3..3503d3df71 100644
--- a/src/client/components/poll-editor.vue
+++ b/src/client/components/poll-editor.vue
@@ -52,7 +52,7 @@
import { defineComponent } from 'vue';
import { faExclamationTriangle, faTimes } from '@fortawesome/free-solid-svg-icons';
import { addTime } from '../../prelude/time';
-import { formatDateTimeString } from '../../misc/format-time-string';
+import { formatDateTimeString } from '@/misc/format-time-string';
import MkInput from './ui/input.vue';
import MkSelect from './ui/select.vue';
import MkSwitch from './ui/switch.vue';
diff --git a/src/client/components/poll.vue b/src/client/components/poll.vue
index 7f13e135aa..af3b3804ab 100644
--- a/src/client/components/poll.vue
+++ b/src/client/components/poll.vue
@@ -25,7 +25,7 @@
import { defineComponent } from 'vue';
import { faCheck } from '@fortawesome/free-solid-svg-icons';
import { sum } from '../../prelude/array';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
props: {
diff --git a/src/client/components/post-form-attaches.vue b/src/client/components/post-form-attaches.vue
index 230c944de1..f2eed30441 100644
--- a/src/client/components/post-form-attaches.vue
+++ b/src/client/components/post-form-attaches.vue
@@ -19,7 +19,7 @@ import { defineComponent, defineAsyncComponent } from 'vue';
import { faTimesCircle, faEye, faEyeSlash } from '@fortawesome/free-regular-svg-icons';
import { faExclamationTriangle, faICursor } from '@fortawesome/free-solid-svg-icons';
import MkDriveFileThumbnail from './drive-file-thumbnail.vue'
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/components/post-form-dialog.vue b/src/client/components/post-form-dialog.vue
index ae1cd7f01e..aa23e3891e 100644
--- a/src/client/components/post-form-dialog.vue
+++ b/src/client/components/post-form-dialog.vue
@@ -6,8 +6,8 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import MkModal from '@/components/ui/modal.vue';
-import MkPostForm from '@/components/post-form.vue';
+import MkModal from '@client/components/ui/modal.vue';
+import MkPostForm from '@client/components/post-form.vue';
export default defineComponent({
components: {
diff --git a/src/client/components/post-form.vue b/src/client/components/post-form.vue
index 9b5adf9cc1..7d2355c190 100644
--- a/src/client/components/post-form.vue
+++ b/src/client/components/post-form.vue
@@ -59,17 +59,17 @@ import { length } from 'stringz';
import { toASCII } from 'punycode';
import XNotePreview from './note-preview.vue';
import { parse } from '../../mfm/parse';
-import { host, url } from '@/config';
+import { host, url } from '@client/config';
import { erase, unique } from '../../prelude/array';
-import extractMentions from '../../misc/extract-mentions';
-import getAcct from '../../misc/acct/render';
-import { formatTimeString } from '../../misc/format-time-string';
-import { Autocomplete } from '@/scripts/autocomplete';
+import extractMentions from '@/misc/extract-mentions';
+import getAcct from '@/misc/acct/render';
+import { formatTimeString } from '@/misc/format-time-string';
+import { Autocomplete } from '@client/scripts/autocomplete';
import { noteVisibilities } from '../../types';
-import * as os from '@/os';
-import { selectFile } from '@/scripts/select-file';
-import { notePostInterruptors, postFormActions } from '@/store';
-import { isMobile } from '@/scripts/is-mobile';
+import * as os from '@client/os';
+import { selectFile } from '@client/scripts/select-file';
+import { notePostInterruptors, postFormActions } from '@client/store';
+import { isMobile } from '@client/scripts/is-mobile';
import { throttle } from 'throttle-debounce';
export default defineComponent({
diff --git a/src/client/components/reactions-viewer.reaction.vue b/src/client/components/reactions-viewer.reaction.vue
index a67b24601b..99b4d50c52 100644
--- a/src/client/components/reactions-viewer.reaction.vue
+++ b/src/client/components/reactions-viewer.reaction.vue
@@ -18,9 +18,9 @@
<script lang="ts">
import { defineComponent, ref } from 'vue';
-import XDetails from '@/components/reactions-viewer.details.vue';
-import XReactionIcon from '@/components/reaction-icon.vue';
-import * as os from '@/os';
+import XDetails from '@client/components/reactions-viewer.details.vue';
+import XReactionIcon from '@client/components/reaction-icon.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/components/remote-caution.vue b/src/client/components/remote-caution.vue
index 3af601f627..98c7aaaa6e 100644
--- a/src/client/components/remote-caution.vue
+++ b/src/client/components/remote-caution.vue
@@ -5,7 +5,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
props: {
diff --git a/src/client/components/sample.vue b/src/client/components/sample.vue
index 0f29fc69bb..70949ea357 100644
--- a/src/client/components/sample.vue
+++ b/src/client/components/sample.vue
@@ -29,13 +29,13 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import MkButton from '@/components/ui/button.vue';
-import MkInput from '@/components/ui/input.vue';
-import MkSwitch from '@/components/ui/switch.vue';
-import MkTextarea from '@/components/ui/textarea.vue';
-import MkRadio from '@/components/ui/radio.vue';
-import * as os from '@/os';
-import * as config from '@/config';
+import MkButton from '@client/components/ui/button.vue';
+import MkInput from '@client/components/ui/input.vue';
+import MkSwitch from '@client/components/ui/switch.vue';
+import MkTextarea from '@client/components/ui/textarea.vue';
+import MkRadio from '@client/components/ui/radio.vue';
+import * as os from '@client/os';
+import * as config from '@client/config';
export default defineComponent({
components: {
diff --git a/src/client/components/sidebar.vue b/src/client/components/sidebar.vue
index f7c50a2ba5..61439781b4 100644
--- a/src/client/components/sidebar.vue
+++ b/src/client/components/sidebar.vue
@@ -48,11 +48,11 @@
import { defineComponent } from 'vue';
import { faGripVertical, faChevronLeft, faHashtag, faBroadcastTower, faFireAlt, faEllipsisH, faPencilAlt, faBars, faTimes, faSearch, faUserCog, faCog, faUser, faHome, faStar, faCircle, faAt, faListUl, faPlus, faUserClock, faUsers, faTachometerAlt, faExchangeAlt, faGlobe, faChartBar, faCloud, faServer, faInfoCircle, faQuestionCircle, faProjectDiagram, faStream, faExclamationCircle } from '@fortawesome/free-solid-svg-icons';
import { faBell, faEnvelope, faLaugh, faComments } from '@fortawesome/free-regular-svg-icons';
-import { host } from '@/config';
-import { search } from '@/scripts/search';
-import * as os from '@/os';
-import { sidebarDef } from '@/sidebar';
-import { getAccounts, addAccount, login } from '@/account';
+import { host } from '@client/config';
+import { search } from '@client/scripts/search';
+import * as os from '@client/os';
+import { sidebarDef } from '@client/sidebar';
+import { getAccounts, addAccount, login } from '@client/account';
export default defineComponent({
props: {
diff --git a/src/client/components/signin-dialog.vue b/src/client/components/signin-dialog.vue
index 2edd10f539..6c38c07d78 100644
--- a/src/client/components/signin-dialog.vue
+++ b/src/client/components/signin-dialog.vue
@@ -13,7 +13,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import XModalWindow from '@/components/ui/modal-window.vue';
+import XModalWindow from '@client/components/ui/modal-window.vue';
import MkSignin from './signin.vue';
export default defineComponent({
diff --git a/src/client/components/signin.vue b/src/client/components/signin.vue
index 3384fff96d..120da63f30 100755
--- a/src/client/components/signin.vue
+++ b/src/client/components/signin.vue
@@ -53,10 +53,10 @@ import { faLock, faGavel } from '@fortawesome/free-solid-svg-icons';
import { faTwitter, faDiscord, faGithub } from '@fortawesome/free-brands-svg-icons';
import MkButton from './ui/button.vue';
import MkInput from './ui/input.vue';
-import { apiUrl, host } from '@/config';
-import { byteify, hexify } from '@/scripts/2fa';
-import * as os from '@/os';
-import { login } from '@/account';
+import { apiUrl, host } from '@client/config';
+import { byteify, hexify } from '@client/scripts/2fa';
+import * as os from '@client/os';
+import { login } from '@client/account';
export default defineComponent({
components: {
diff --git a/src/client/components/signup-dialog.vue b/src/client/components/signup-dialog.vue
index 74566fbce3..072a5ac19f 100644
--- a/src/client/components/signup-dialog.vue
+++ b/src/client/components/signup-dialog.vue
@@ -15,7 +15,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import XModalWindow from '@/components/ui/modal-window.vue';
+import XModalWindow from '@client/components/ui/modal-window.vue';
import XSignup from './signup.vue';
export default defineComponent({
diff --git a/src/client/components/signup.vue b/src/client/components/signup.vue
index 91d0f2c96f..1ce9fc2789 100644
--- a/src/client/components/signup.vue
+++ b/src/client/components/signup.vue
@@ -56,12 +56,12 @@ import { defineComponent, defineAsyncComponent } from 'vue';
import { faLock, faExclamationTriangle, faSpinner, faCheck, faKey } from '@fortawesome/free-solid-svg-icons';
const getPasswordStrength = require('syuilo-password-strength');
import { toUnicode } from 'punycode';
-import { host, url } from '@/config';
+import { host, url } from '@client/config';
import MkButton from './ui/button.vue';
import MkInput from './ui/input.vue';
import MkSwitch from './ui/switch.vue';
-import * as os from '@/os';
-import { login } from '@/account';
+import * as os from '@client/os';
+import { login } from '@client/account';
export default defineComponent({
components: {
diff --git a/src/client/components/sub-note-content.vue b/src/client/components/sub-note-content.vue
index ceb25e0967..384bcb4563 100644
--- a/src/client/components/sub-note-content.vue
+++ b/src/client/components/sub-note-content.vue
@@ -23,7 +23,7 @@ import { defineComponent } from 'vue';
import { faReply } from '@fortawesome/free-solid-svg-icons';
import XPoll from './poll.vue';
import XMediaList from './media-list.vue';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/components/taskmanager.api-window.vue b/src/client/components/taskmanager.api-window.vue
index ec685462c9..9b6c3f16d0 100644
--- a/src/client/components/taskmanager.api-window.vue
+++ b/src/client/components/taskmanager.api-window.vue
@@ -23,8 +23,8 @@
<script lang="ts">
import { defineComponent } from 'vue';
import * as JSON5 from 'json5';
-import XWindow from '@/components/ui/window.vue';
-import MkTab from '@/components/tab.vue';
+import XWindow from '@client/components/ui/window.vue';
+import MkTab from '@client/components/tab.vue';
export default defineComponent({
components: {
diff --git a/src/client/components/taskmanager.vue b/src/client/components/taskmanager.vue
index 1ed8c8bd5e..af9033178e 100644
--- a/src/client/components/taskmanager.vue
+++ b/src/client/components/taskmanager.vue
@@ -79,11 +79,11 @@
<script lang="ts">
import { defineComponent, markRaw, onBeforeUnmount, ref, shallowRef } from 'vue';
import { faTerminal } from '@fortawesome/free-solid-svg-icons';
-import XWindow from '@/components/ui/window.vue';
-import MkTab from '@/components/tab.vue';
-import MkButton from '@/components/ui/button.vue';
-import follow from '@/directives/follow-append';
-import * as os from '@/os';
+import XWindow from '@client/components/ui/window.vue';
+import MkTab from '@client/components/tab.vue';
+import MkButton from '@client/components/ui/button.vue';
+import follow from '@client/directives/follow-append';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/components/timeline.vue b/src/client/components/timeline.vue
index 9a3d3232cf..c2ab0b005d 100644
--- a/src/client/components/timeline.vue
+++ b/src/client/components/timeline.vue
@@ -5,8 +5,8 @@
<script lang="ts">
import { defineComponent } from 'vue';
import XNotes from './notes.vue';
-import * as os from '@/os';
-import * as sound from '@/scripts/sound';
+import * as os from '@client/os';
+import * as sound from '@client/scripts/sound';
export default defineComponent({
components: {
diff --git a/src/client/components/token-generate-window.vue b/src/client/components/token-generate-window.vue
index 844c20eb08..87a76931e4 100644
--- a/src/client/components/token-generate-window.vue
+++ b/src/client/components/token-generate-window.vue
@@ -27,8 +27,8 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import { kinds } from '../../misc/api-permissions';
-import XModalWindow from '@/components/ui/modal-window.vue';
+import { kinds } from '@/misc/api-permissions';
+import XModalWindow from '@client/components/ui/modal-window.vue';
import MkInput from './ui/input.vue';
import MkTextarea from './ui/textarea.vue';
import MkSwitch from './ui/switch.vue';
diff --git a/src/client/components/ui/context-menu.vue b/src/client/components/ui/context-menu.vue
index 561099cbe0..61f5d3bf08 100644
--- a/src/client/components/ui/context-menu.vue
+++ b/src/client/components/ui/context-menu.vue
@@ -8,7 +8,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import contains from '@/scripts/contains';
+import contains from '@client/scripts/contains';
import MkMenu from './menu.vue';
export default defineComponent({
diff --git a/src/client/components/ui/hr.vue b/src/client/components/ui/hr.vue
index 6b075cb440..fb12b4985f 100644
--- a/src/client/components/ui/hr.vue
+++ b/src/client/components/ui/hr.vue
@@ -3,7 +3,7 @@
</template>
<script lang="ts">
-import { defineComponent } from 'vue';import * as os from '@/os';
+import { defineComponent } from 'vue';import * as os from '@client/os';
export default defineComponent({});
</script>
diff --git a/src/client/components/ui/info.vue b/src/client/components/ui/info.vue
index 5c71b14a0a..12b3dbcfd1 100644
--- a/src/client/components/ui/info.vue
+++ b/src/client/components/ui/info.vue
@@ -9,7 +9,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faInfoCircle, faExclamationTriangle } from '@fortawesome/free-solid-svg-icons';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
props: {
diff --git a/src/client/components/ui/input.vue b/src/client/components/ui/input.vue
index 1c5222f8f2..302d96d026 100644
--- a/src/client/components/ui/input.vue
+++ b/src/client/components/ui/input.vue
@@ -57,7 +57,7 @@
import { defineComponent, onMounted, onUnmounted, nextTick, ref, watch, computed, toRefs } from 'vue';
import debounce from 'v-debounce';
import { faExclamationCircle } from '@fortawesome/free-solid-svg-icons';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
directives: {
diff --git a/src/client/components/ui/menu.vue b/src/client/components/ui/menu.vue
index c2033402e3..1550fe40c7 100644
--- a/src/client/components/ui/menu.vue
+++ b/src/client/components/ui/menu.vue
@@ -43,8 +43,8 @@
<script lang="ts">
import { defineComponent, ref } from 'vue';
import { faCircle } from '@fortawesome/free-solid-svg-icons';
-import { focusPrev, focusNext } from '@/scripts/focus';
-import contains from '@/scripts/contains';
+import { focusPrev, focusNext } from '@client/scripts/focus';
+import contains from '@client/scripts/contains';
export default defineComponent({
props: {
diff --git a/src/client/components/ui/pagination.vue b/src/client/components/ui/pagination.vue
index d9588a0373..13181d39e2 100644
--- a/src/client/components/ui/pagination.vue
+++ b/src/client/components/ui/pagination.vue
@@ -16,7 +16,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import MkButton from './button.vue';
-import paging from '@/scripts/paging';
+import paging from '@client/scripts/paging';
export default defineComponent({
components: {
diff --git a/src/client/components/ui/radios.vue b/src/client/components/ui/radios.vue
index ea40ba47b4..547e616ea5 100644
--- a/src/client/components/ui/radios.vue
+++ b/src/client/components/ui/radios.vue
@@ -1,6 +1,6 @@
<script lang="ts">
import { defineComponent, h } from 'vue';
-import MkRadio from '@/components/ui/radio.vue';
+import MkRadio from '@client/components/ui/radio.vue';
export default defineComponent({
components: {
diff --git a/src/client/components/ui/window.vue b/src/client/components/ui/window.vue
index 501a3bf8ee..1613644c87 100644
--- a/src/client/components/ui/window.vue
+++ b/src/client/components/ui/window.vue
@@ -39,8 +39,8 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faTimes, faCheck } from '@fortawesome/free-solid-svg-icons';
-import contains from '@/scripts/contains';
-import * as os from '@/os';
+import contains from '@client/scripts/contains';
+import * as os from '@client/os';
const minHeight = 50;
const minWidth = 250;
diff --git a/src/client/components/url-preview-popup.vue b/src/client/components/url-preview-popup.vue
index 0a402f793f..b5e0fce207 100644
--- a/src/client/components/url-preview-popup.vue
+++ b/src/client/components/url-preview-popup.vue
@@ -9,7 +9,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import MkUrlPreview from './url-preview.vue';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/components/url-preview.vue b/src/client/components/url-preview.vue
index 7a59068710..7495da6f24 100644
--- a/src/client/components/url-preview.vue
+++ b/src/client/components/url-preview.vue
@@ -36,8 +36,8 @@
import { defineComponent } from 'vue';
import { faPlayCircle } from '@fortawesome/free-regular-svg-icons';
import { faTwitter } from '@fortawesome/free-brands-svg-icons';
-import { url as local, lang } from '@/config';
-import * as os from '@/os';
+import { url as local, lang } from '@client/config';
+import * as os from '@client/os';
export default defineComponent({
props: {
diff --git a/src/client/components/user-info.vue b/src/client/components/user-info.vue
index 711e367411..34ea38c3b4 100644
--- a/src/client/components/user-info.vue
+++ b/src/client/components/user-info.vue
@@ -29,7 +29,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import parseAcct from '../../misc/acct/parse';
+import parseAcct from '@/misc/acct/parse';
import MkFollowButton from './follow-button.vue';
import { userPage } from '../filters/user';
diff --git a/src/client/components/user-list.vue b/src/client/components/user-list.vue
index 7a57ff7168..418c4127d9 100644
--- a/src/client/components/user-list.vue
+++ b/src/client/components/user-list.vue
@@ -16,7 +16,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import paging from '@/scripts/paging';
+import paging from '@client/scripts/paging';
import MkUserInfo from './user-info.vue';
import { userPage } from '../filters/user';
diff --git a/src/client/components/user-preview.vue b/src/client/components/user-preview.vue
index c4588e478a..b2b3358374 100644
--- a/src/client/components/user-preview.vue
+++ b/src/client/components/user-preview.vue
@@ -33,10 +33,10 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import parseAcct from '../../misc/acct/parse';
+import parseAcct from '@/misc/acct/parse';
import MkFollowButton from './follow-button.vue';
import { userPage } from '../filters/user';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/components/user-select-dialog.vue b/src/client/components/user-select-dialog.vue
index c67c985fdc..e21deea178 100644
--- a/src/client/components/user-select-dialog.vue
+++ b/src/client/components/user-select-dialog.vue
@@ -46,8 +46,8 @@
import { defineComponent } from 'vue';
import { faTimes, faCheck } from '@fortawesome/free-solid-svg-icons';
import MkInput from './ui/input.vue';
-import XModalWindow from '@/components/ui/modal-window.vue';
-import * as os from '@/os';
+import XModalWindow from '@client/components/ui/modal-window.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/components/users-dialog.vue b/src/client/components/users-dialog.vue
index 014748adc6..381aa60911 100644
--- a/src/client/components/users-dialog.vue
+++ b/src/client/components/users-dialog.vue
@@ -28,7 +28,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faTimes } from '@fortawesome/free-solid-svg-icons';
-import paging from '@/scripts/paging';
+import paging from '@client/scripts/paging';
import { userPage } from '../filters/user';
export default defineComponent({
diff --git a/src/client/components/visibility-picker.vue b/src/client/components/visibility-picker.vue
index e518f48d0d..0b98d30b9d 100644
--- a/src/client/components/visibility-picker.vue
+++ b/src/client/components/visibility-picker.vue
@@ -46,7 +46,7 @@
import { defineComponent } from 'vue';
import { faGlobe, faUnlock, faHome, faBiohazard, faToggleOn, faToggleOff } from '@fortawesome/free-solid-svg-icons';
import { faEnvelope } from '@fortawesome/free-regular-svg-icons';
-import MkModal from '@/components/ui/modal.vue';
+import MkModal from '@client/components/ui/modal.vue';
export default defineComponent({
components: {
diff --git a/src/client/components/waiting-dialog.vue b/src/client/components/waiting-dialog.vue
index 7e8ebeaec0..c3a265af9c 100644
--- a/src/client/components/waiting-dialog.vue
+++ b/src/client/components/waiting-dialog.vue
@@ -11,7 +11,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faCheck, faSpinner } from '@fortawesome/free-solid-svg-icons';
-import MkModal from '@/components/ui/modal.vue';
+import MkModal from '@client/components/ui/modal.vue';
export default defineComponent({
components: {
diff --git a/src/client/components/widgets.vue b/src/client/components/widgets.vue
index 23fce7d714..993b843cb1 100644
--- a/src/client/components/widgets.vue
+++ b/src/client/components/widgets.vue
@@ -31,9 +31,9 @@
import { defineComponent, defineAsyncComponent } from 'vue';
import { v4 as uuid } from 'uuid';
import { faTimes, faCog, faPlus } from '@fortawesome/free-solid-svg-icons';
-import MkSelect from '@/components/ui/select.vue';
-import MkButton from '@/components/ui/button.vue';
-import { widgets as widgetDefs } from '@/widgets';
+import MkSelect from '@client/components/ui/select.vue';
+import MkButton from '@client/components/ui/button.vue';
+import { widgets as widgetDefs } from '@client/widgets';
export default defineComponent({
components: {
diff --git a/src/client/directives/follow-append.ts b/src/client/directives/follow-append.ts
index b0e99628b0..ef3f9af43f 100644
--- a/src/client/directives/follow-append.ts
+++ b/src/client/directives/follow-append.ts
@@ -1,5 +1,5 @@
import { Directive } from 'vue';
-import { getScrollContainer, getScrollPosition } from '@/scripts/scroll';
+import { getScrollContainer, getScrollPosition } from '@client/scripts/scroll';
export default {
mounted(src, binding, vn) {
diff --git a/src/client/directives/particle.ts b/src/client/directives/particle.ts
index c90df89a5e..1676e1182e 100644
--- a/src/client/directives/particle.ts
+++ b/src/client/directives/particle.ts
@@ -1,5 +1,5 @@
-import Particle from '@/components/particle.vue';
-import { popup } from '@/os';
+import Particle from '@client/components/particle.vue';
+import { popup } from '@client/os';
export default {
mounted(el, binding, vn) {
diff --git a/src/client/directives/tooltip.ts b/src/client/directives/tooltip.ts
index 2a0a13663c..90247eacb2 100644
--- a/src/client/directives/tooltip.ts
+++ b/src/client/directives/tooltip.ts
@@ -1,6 +1,6 @@
import { Directive, ref } from 'vue';
-import { isDeviceTouch } from '@/scripts/is-device-touch';
-import { popup } from '@/os';
+import { isDeviceTouch } from '@client/scripts/is-device-touch';
+import { popup } from '@client/os';
const start = isDeviceTouch ? 'touchstart' : 'mouseover';
const end = isDeviceTouch ? 'touchend' : 'mouseleave';
@@ -30,7 +30,7 @@ export default {
if (self.text == null) return;
const showing = ref(true);
- popup(import('@/components/ui/tooltip.vue'), {
+ popup(import('@client/components/ui/tooltip.vue'), {
showing,
text: self.text,
source: el
diff --git a/src/client/directives/user-preview.ts b/src/client/directives/user-preview.ts
index 68d9e2816c..26d6c5efb3 100644
--- a/src/client/directives/user-preview.ts
+++ b/src/client/directives/user-preview.ts
@@ -1,6 +1,6 @@
import { Directive, ref } from 'vue';
import autobind from 'autobind-decorator';
-import { popup } from '@/os';
+import { popup } from '@client/os';
export class UserPreview {
private el;
@@ -24,7 +24,7 @@ export class UserPreview {
const showing = ref(true);
- popup(import('@/components/user-preview.vue'), {
+ popup(import('@client/components/user-preview.vue'), {
showing,
q: this.user,
source: this.el
diff --git a/src/client/filters/user.ts b/src/client/filters/user.ts
index 34ea488d98..ad4663cb92 100644
--- a/src/client/filters/user.ts
+++ b/src/client/filters/user.ts
@@ -1,6 +1,6 @@
-import getAcct from '../../misc/acct/render';
-import getUserName from '../../misc/get-user-name';
-import { url } from '@/config';
+import getAcct from '@/misc/acct/render';
+import getUserName from '@/misc/get-user-name';
+import { url } from '@client/config';
export const acct = user => {
return getAcct(user);
diff --git a/src/client/i18n.ts b/src/client/i18n.ts
index 6c29ef153f..dc23676474 100644
--- a/src/client/i18n.ts
+++ b/src/client/i18n.ts
@@ -1,6 +1,6 @@
import { markRaw } from 'vue';
-import { locale } from '@/config';
-import { I18n } from '../misc/i18n';
+import { locale } from '@client/config';
+import { I18n } from '@/misc/i18n';
export const i18n = markRaw(new I18n(locale));
diff --git a/src/client/init.ts b/src/client/init.ts
index 2a2b6a2f86..bacc839c29 100644
--- a/src/client/init.ts
+++ b/src/client/init.ts
@@ -2,33 +2,33 @@
* Client entry point
*/
-import '@/style.scss';
+import '@client/style.scss';
import * as Sentry from '@sentry/browser';
import { Integrations } from '@sentry/tracing';
import { createApp, watch } from 'vue';
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';
-import widgets from '@/widgets';
-import directives from '@/directives';
-import components from '@/components';
-import { version, ui, lang, host } from '@/config';
-import { router } from '@/router';
-import { applyTheme } from '@/scripts/theme';
-import { isDeviceDarkmode } from '@/scripts/is-device-darkmode';
-import { i18n } from '@/i18n';
-import { stream, dialog, post } from '@/os';
-import * as sound from '@/scripts/sound';
-import { $i, refreshAccount, login, updateAccount, signout } from '@/account';
-import { defaultStore, ColdDeviceStorage } from '@/store';
-import { fetchInstance, instance } from '@/instance';
-import { makeHotkey } from '@/scripts/hotkey';
-import { search } from '@/scripts/search';
-import { isMobile } from '@/scripts/is-mobile';
-import { getThemes } from '@/theme-store';
-import { initializeSw } from '@/scripts/initialize-sw';
-import { reloadChannel } from '@/scripts/unison-reload';
-import { reactionPicker } from '@/scripts/reaction-picker';
+import widgets from '@client/widgets';
+import directives from '@client/directives';
+import components from '@client/components';
+import { version, ui, lang, host } from '@client/config';
+import { router } from '@client/router';
+import { applyTheme } from '@client/scripts/theme';
+import { isDeviceDarkmode } from '@client/scripts/is-device-darkmode';
+import { i18n } from '@client/i18n';
+import { stream, dialog, post } from '@client/os';
+import * as sound from '@client/scripts/sound';
+import { $i, refreshAccount, login, updateAccount, signout } from '@client/account';
+import { defaultStore, ColdDeviceStorage } from '@client/store';
+import { fetchInstance, instance } from '@client/instance';
+import { makeHotkey } from '@client/scripts/hotkey';
+import { search } from '@client/scripts/search';
+import { isMobile } from '@client/scripts/is-mobile';
+import { getThemes } from '@client/theme-store';
+import { initializeSw } from '@client/scripts/initialize-sw';
+import { reloadChannel } from '@client/scripts/unison-reload';
+import { reactionPicker } from '@client/scripts/reaction-picker';
console.info(`Misskey v${version}`);
@@ -156,12 +156,12 @@ fetchInstance().then(() => {
stream.init($i);
const app = createApp(await (
- window.location.search === '?zen' ? import('@/ui/zen.vue') :
- !$i ? import('@/ui/visitor.vue') :
- ui === 'deck' ? import('@/ui/deck.vue') :
- ui === 'desktop' ? import('@/ui/desktop.vue') :
- ui === 'chat' ? import('@/ui/chat/index.vue') :
- import('@/ui/default.vue')
+ window.location.search === '?zen' ? import('@client/ui/zen.vue') :
+ !$i ? import('@client/ui/visitor.vue') :
+ ui === 'deck' ? import('@client/ui/deck.vue') :
+ ui === 'desktop' ? import('@client/ui/desktop.vue') :
+ ui === 'chat' ? import('@client/ui/chat/index.vue') :
+ import('@client/ui/default.vue')
).then(x => x.default));
if (_DEV_) {
@@ -204,7 +204,7 @@ if (splash) {
}
watch(defaultStore.reactiveState.darkMode, (darkMode) => {
- import('@/scripts/theme').then(({ builtinThemes }) => {
+ import('@client/scripts/theme').then(({ builtinThemes }) => {
const themes = builtinThemes.concat(getThemes());
applyTheme(themes.find(x => x.id === (darkMode ? ColdDeviceStorage.get('darkTheme') : ColdDeviceStorage.get('lightTheme'))));
});
diff --git a/src/client/os.ts b/src/client/os.ts
index 9be45e6c6d..e1707531de 100644
--- a/src/client/os.ts
+++ b/src/client/os.ts
@@ -4,13 +4,13 @@ import { Component, defineAsyncComponent, markRaw, reactive, Ref, ref } from 'vu
import { EventEmitter } from 'eventemitter3';
import insertTextAtCursor from 'insert-text-at-cursor';
import * as Sentry from '@sentry/browser';
-import Stream from '@/scripts/stream';
-import { apiUrl, debug } from '@/config';
-import MkPostFormDialog from '@/components/post-form-dialog.vue';
-import MkWaitingDialog from '@/components/waiting-dialog.vue';
-import { resolve } from '@/router';
-import { $i } from '@/account';
-import { defaultStore } from '@/store';
+import Stream from '@client/scripts/stream';
+import { apiUrl, debug } from '@client/config';
+import MkPostFormDialog from '@client/components/post-form-dialog.vue';
+import MkWaitingDialog from '@client/components/waiting-dialog.vue';
+import { resolve } from '@client/router';
+import { $i } from '@client/account';
+import { defaultStore } from '@client/store';
export const stream = markRaw(new Stream());
@@ -196,7 +196,7 @@ export async function popup(component: Component | typeof import('*.vue') | Prom
export function pageWindow(path: string) {
const { component, props } = resolve(path);
- popup(import('@/components/page-window.vue'), {
+ popup(import('@client/components/page-window.vue'), {
initialPath: path,
initialComponent: markRaw(component),
initialProps: props,
@@ -205,7 +205,7 @@ export function pageWindow(path: string) {
export function dialog(props: Record<string, any>) {
return new Promise((resolve, reject) => {
- popup(import('@/components/dialog.vue'), props, {
+ popup(import('@client/components/dialog.vue'), props, {
done: result => {
resolve(result ? result : { canceled: true });
},
@@ -219,7 +219,7 @@ export function success() {
setTimeout(() => {
showing.value = false;
}, 1000);
- popup(import('@/components/waiting-dialog.vue'), {
+ popup(import('@client/components/waiting-dialog.vue'), {
success: true,
showing: showing
}, {
@@ -231,7 +231,7 @@ export function success() {
export function waiting() {
return new Promise((resolve, reject) => {
const showing = ref(true);
- popup(import('@/components/waiting-dialog.vue'), {
+ popup(import('@client/components/waiting-dialog.vue'), {
success: false,
showing: showing
}, {
@@ -242,7 +242,7 @@ export function waiting() {
export function form(title, form) {
return new Promise((resolve, reject) => {
- popup(import('@/components/form-dialog.vue'), { title, form }, {
+ popup(import('@client/components/form-dialog.vue'), { title, form }, {
done: result => {
resolve(result);
},
@@ -252,7 +252,7 @@ export function form(title, form) {
export async function selectUser() {
return new Promise((resolve, reject) => {
- popup(import('@/components/user-select-dialog.vue'), {}, {
+ popup(import('@client/components/user-select-dialog.vue'), {}, {
ok: user => {
resolve(user);
},
@@ -262,7 +262,7 @@ export async function selectUser() {
export async function selectDriveFile(multiple: boolean) {
return new Promise((resolve, reject) => {
- popup(import('@/components/drive-select-dialog.vue'), {
+ popup(import('@client/components/drive-select-dialog.vue'), {
type: 'file',
multiple
}, {
@@ -277,7 +277,7 @@ export async function selectDriveFile(multiple: boolean) {
export async function selectDriveFolder(multiple: boolean) {
return new Promise((resolve, reject) => {
- popup(import('@/components/drive-select-dialog.vue'), {
+ popup(import('@client/components/drive-select-dialog.vue'), {
type: 'folder',
multiple
}, {
@@ -292,7 +292,7 @@ export async function selectDriveFolder(multiple: boolean) {
export async function pickEmoji(src?: HTMLElement, opts) {
return new Promise((resolve, reject) => {
- popup(import('@/components/emoji-picker-dialog.vue'), {
+ popup(import('@client/components/emoji-picker-dialog.vue'), {
src,
...opts
}, {
@@ -342,7 +342,7 @@ export async function openEmojiPicker(src?: HTMLElement, opts, initialTextarea:
characterData: false,
});
- openingEmojiPicker = await popup(import('@/components/emoji-picker-window.vue'), {
+ openingEmojiPicker = await popup(import('@client/components/emoji-picker-window.vue'), {
src,
...opts
}, {
@@ -360,7 +360,7 @@ export async function openEmojiPicker(src?: HTMLElement, opts, initialTextarea:
export function modalMenu(items: any[], src?: HTMLElement, options?: { align?: string; viaKeyboard?: boolean }) {
return new Promise((resolve, reject) => {
let dispose;
- popup(import('@/components/ui/modal-menu.vue'), {
+ popup(import('@client/components/ui/modal-menu.vue'), {
items,
src,
align: options?.align,
@@ -380,7 +380,7 @@ export function contextMenu(items: any[], ev: MouseEvent) {
ev.preventDefault();
return new Promise((resolve, reject) => {
let dispose;
- popup(import('@/components/ui/context-menu.vue'), {
+ popup(import('@client/components/ui/context-menu.vue'), {
items,
ev,
}, {
diff --git a/src/client/pages/_error_.vue b/src/client/pages/_error_.vue
index 29a62d72ba..b317915589 100644
--- a/src/client/pages/_error_.vue
+++ b/src/client/pages/_error_.vue
@@ -13,7 +13,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons';
-import MkButton from '@/components/ui/button.vue';
+import MkButton from '@client/components/ui/button.vue';
export default defineComponent({
components: {
diff --git a/src/client/pages/_loading_.vue b/src/client/pages/_loading_.vue
index 05c6af1cd7..34ecaf9b33 100644
--- a/src/client/pages/_loading_.vue
+++ b/src/client/pages/_loading_.vue
@@ -4,7 +4,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({});
</script>
diff --git a/src/client/pages/about-misskey.vue b/src/client/pages/about-misskey.vue
index a52678e3cd..2d1da88fa1 100644
--- a/src/client/pages/about-misskey.vue
+++ b/src/client/pages/about-misskey.vue
@@ -55,14 +55,14 @@
import { defineComponent } from 'vue';
import { faInfoCircle, faCode, faLanguage, faHandHoldingMedical, } from '@fortawesome/free-solid-svg-icons';
import VanillaTilt from 'vanilla-tilt';
-import { version } from '@/config';
-import FormLink from '@/components/form/link.vue';
-import FormBase from '@/components/form/base.vue';
-import FormGroup from '@/components/form/group.vue';
-import FormKeyValueView from '@/components/form/key-value-view.vue';
-import MkLink from '@/components/link.vue';
-import { physics } from '@/scripts/physics.ts';
-import * as os from '@/os';
+import { version } from '@client/config';
+import FormLink from '@client/components/form/link.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormGroup from '@client/components/form/group.vue';
+import FormKeyValueView from '@client/components/form/key-value-view.vue';
+import MkLink from '@client/components/link.vue';
+import { physics } from '@client/scripts/physics.ts';
+import * as os from '@client/os';
const patrons = [
'Satsuki Yanagi',
diff --git a/src/client/pages/about.vue b/src/client/pages/about.vue
index 6ec74bc962..911fc0bc62 100644
--- a/src/client/pages/about.vue
+++ b/src/client/pages/about.vue
@@ -41,13 +41,13 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faInfoCircle } from '@fortawesome/free-solid-svg-icons';
-import { version, instanceName } from '@/config';
-import FormLink from '@/components/form/link.vue';
-import FormBase from '@/components/form/base.vue';
-import FormGroup from '@/components/form/group.vue';
-import FormKeyValueView from '@/components/form/key-value-view.vue';
-import * as os from '@/os';
-import number from '@/filters/number';
+import { version, instanceName } from '@client/config';
+import FormLink from '@client/components/form/link.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormGroup from '@client/components/form/group.vue';
+import FormKeyValueView from '@client/components/form/key-value-view.vue';
+import * as os from '@client/os';
+import number from '@client/filters/number';
export default defineComponent({
components: {
diff --git a/src/client/pages/advanced-theme-editor.vue b/src/client/pages/advanced-theme-editor.vue
index 8326c5529c..fb00c8c8ac 100644
--- a/src/client/pages/advanced-theme-editor.vue
+++ b/src/client/pages/advanced-theme-editor.vue
@@ -96,19 +96,19 @@ import { faPalette, faChevronDown, faKeyboard } from '@fortawesome/free-solid-sv
import * as JSON5 from 'json5';
import { toUnicode } from 'punycode';
-import MkRadio from '@/components/ui/radio.vue';
-import MkButton from '@/components/ui/button.vue';
-import MkInput from '@/components/ui/input.vue';
-import MkTextarea from '@/components/ui/textarea.vue';
-import MkSelect from '@/components/ui/select.vue';
-import MkSample from '@/components/sample.vue';
+import MkRadio from '@client/components/ui/radio.vue';
+import MkButton from '@client/components/ui/button.vue';
+import MkInput from '@client/components/ui/input.vue';
+import MkTextarea from '@client/components/ui/textarea.vue';
+import MkSelect from '@client/components/ui/select.vue';
+import MkSample from '@client/components/sample.vue';
-import { convertToMisskeyTheme, ThemeValue, convertToViewModel, ThemeViewModel } from '@/scripts/theme-editor';
-import { Theme, applyTheme, lightTheme, darkTheme, themeProps, validateTheme } from '@/scripts/theme';
-import { host } from '@/config';
-import * as os from '@/os';
-import { ColdDeviceStorage } from '@/store';
-import { addTheme } from '@/theme-store';
+import { convertToMisskeyTheme, ThemeValue, convertToViewModel, ThemeViewModel } from '@client/scripts/theme-editor';
+import { Theme, applyTheme, lightTheme, darkTheme, themeProps, validateTheme } from '@client/scripts/theme';
+import { host } from '@client/config';
+import * as os from '@client/os';
+import { ColdDeviceStorage } from '@client/store';
+import { addTheme } from '@client/theme-store';
export default defineComponent({
components: {
diff --git a/src/client/pages/announcements.vue b/src/client/pages/announcements.vue
index 4fbb347563..7c8ab28d8e 100644
--- a/src/client/pages/announcements.vue
+++ b/src/client/pages/announcements.vue
@@ -18,9 +18,9 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faCheck, faBroadcastTower } from '@fortawesome/free-solid-svg-icons';
-import MkPagination from '@/components/ui/pagination.vue';
-import MkButton from '@/components/ui/button.vue';
-import * as os from '@/os';
+import MkPagination from '@client/components/ui/pagination.vue';
+import MkButton from '@client/components/ui/button.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/api-console.vue b/src/client/pages/api-console.vue
index dd5cacaeec..f5b4dceb26 100644
--- a/src/client/pages/api-console.vue
+++ b/src/client/pages/api-console.vue
@@ -27,11 +27,11 @@
import { defineComponent } from 'vue';
import { faTerminal, faPaperPlane } from '@fortawesome/free-solid-svg-icons';
import * as JSON5 from 'json5';
-import MkButton from '@/components/ui/button.vue';
-import MkInput from '@/components/ui/input.vue';
-import MkTextarea from '@/components/ui/textarea.vue';
-import MkSwitch from '@/components/ui/switch.vue';
-import * as os from '@/os';
+import MkButton from '@client/components/ui/button.vue';
+import MkInput from '@client/components/ui/input.vue';
+import MkTextarea from '@client/components/ui/textarea.vue';
+import MkSwitch from '@client/components/ui/switch.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/auth.form.vue b/src/client/pages/auth.form.vue
index 8b2adc3e07..10c466c73c 100644
--- a/src/client/pages/auth.form.vue
+++ b/src/client/pages/auth.form.vue
@@ -21,8 +21,8 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import MkButton from '@/components/ui/button.vue';
-import * as os from '@/os';
+import MkButton from '@client/components/ui/button.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/auth.vue b/src/client/pages/auth.vue
index 522bd4cdf8..3656d48c42 100755
--- a/src/client/pages/auth.vue
+++ b/src/client/pages/auth.vue
@@ -31,9 +31,9 @@
<script lang="ts">
import { defineComponent } from 'vue';
import XForm from './auth.form.vue';
-import MkSignin from '@/components/signin.vue';
-import * as os from '@/os';
-import { login } from '@/account';
+import MkSignin from '@client/components/signin.vue';
+import * as os from '@client/os';
+import { login } from '@client/account';
export default defineComponent({
components: {
diff --git a/src/client/pages/channel-editor.vue b/src/client/pages/channel-editor.vue
index 983e76d500..f5b8a66a6f 100644
--- a/src/client/pages/channel-editor.vue
+++ b/src/client/pages/channel-editor.vue
@@ -25,11 +25,11 @@
import { computed, defineComponent } from 'vue';
import { faPlus, faSatelliteDish } from '@fortawesome/free-solid-svg-icons';
import { faSave, faTrashAlt } from '@fortawesome/free-regular-svg-icons';
-import MkTextarea from '@/components/ui/textarea.vue';
-import MkButton from '@/components/ui/button.vue';
-import MkInput from '@/components/ui/input.vue';
-import { selectFile } from '@/scripts/select-file';
-import * as os from '@/os';
+import MkTextarea from '@client/components/ui/textarea.vue';
+import MkButton from '@client/components/ui/button.vue';
+import MkInput from '@client/components/ui/input.vue';
+import { selectFile } from '@client/scripts/select-file';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/channel.vue b/src/client/pages/channel.vue
index 93044f4ab4..d2ddebb4a8 100644
--- a/src/client/pages/channel.vue
+++ b/src/client/pages/channel.vue
@@ -30,11 +30,11 @@
import { computed, defineComponent } from 'vue';
import { faSatelliteDish, faUsers, faPencilAlt, faAngleUp, faAngleDown } from '@fortawesome/free-solid-svg-icons';
import { } from '@fortawesome/free-regular-svg-icons';
-import MkContainer from '@/components/ui/container.vue';
-import XPostForm from '@/components/post-form.vue';
-import XTimeline from '@/components/timeline.vue';
-import XChannelFollowButton from '@/components/channel-follow-button.vue';
-import * as os from '@/os';
+import MkContainer from '@client/components/ui/container.vue';
+import XPostForm from '@client/components/post-form.vue';
+import XTimeline from '@client/components/timeline.vue';
+import XChannelFollowButton from '@client/components/channel-follow-button.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/channels.vue b/src/client/pages/channels.vue
index fcedc28db1..d75c4e5ba6 100644
--- a/src/client/pages/channels.vue
+++ b/src/client/pages/channels.vue
@@ -35,10 +35,10 @@
import { defineComponent } from 'vue';
import { faSatelliteDish, faPlus, faEdit, faFireAlt } from '@fortawesome/free-solid-svg-icons';
import { faHeart } from '@fortawesome/free-regular-svg-icons';
-import MkChannelPreview from '@/components/channel-preview.vue';
-import MkPagination from '@/components/ui/pagination.vue';
-import MkButton from '@/components/ui/button.vue';
-import MkTab from '@/components/tab.vue';
+import MkChannelPreview from '@client/components/channel-preview.vue';
+import MkPagination from '@client/components/ui/pagination.vue';
+import MkButton from '@client/components/ui/button.vue';
+import MkTab from '@client/components/tab.vue';
export default defineComponent({
components: {
diff --git a/src/client/pages/clip.vue b/src/client/pages/clip.vue
index 2b61813fd8..c6e46a9834 100644
--- a/src/client/pages/clip.vue
+++ b/src/client/pages/clip.vue
@@ -16,10 +16,10 @@
<script lang="ts">
import { computed, defineComponent } from 'vue';
import { faEllipsisH, faPaperclip, faPencilAlt, faTrashAlt } from '@fortawesome/free-solid-svg-icons';
-import MkContainer from '@/components/ui/container.vue';
-import XPostForm from '@/components/post-form.vue';
-import XNotes from '@/components/notes.vue';
-import * as os from '@/os';
+import MkContainer from '@client/components/ui/container.vue';
+import XPostForm from '@client/components/post-form.vue';
+import XNotes from '@client/components/notes.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/doc.vue b/src/client/pages/doc.vue
index ed4eae4d02..7155cc1563 100644
--- a/src/client/pages/doc.vue
+++ b/src/client/pages/doc.vue
@@ -13,8 +13,8 @@ import { computed, defineComponent } from 'vue';
import { faQuestionCircle } from '@fortawesome/free-solid-svg-icons'
import MarkdownIt from 'markdown-it';
import MarkdownItAnchor from 'markdown-it-anchor';
-import { url, lang } from '@/config';
-import MkLink from '@/components/link.vue';
+import { url, lang } from '@client/config';
+import MkLink from '@client/components/link.vue';
const markdown = MarkdownIt({
html: true
diff --git a/src/client/pages/docs.vue b/src/client/pages/docs.vue
index 59d23efcb7..f57be3d323 100644
--- a/src/client/pages/docs.vue
+++ b/src/client/pages/docs.vue
@@ -15,7 +15,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faQuestionCircle } from '@fortawesome/free-solid-svg-icons'
-import { url, lang } from '@/config';
+import { url, lang } from '@client/config';
export default defineComponent({
data() {
diff --git a/src/client/pages/drive.vue b/src/client/pages/drive.vue
index 63b0e7ba7d..754581a8b6 100644
--- a/src/client/pages/drive.vue
+++ b/src/client/pages/drive.vue
@@ -7,8 +7,8 @@
<script lang="ts">
import { computed, defineComponent } from 'vue';
import { faCloud, faEllipsisH } from '@fortawesome/free-solid-svg-icons';
-import XDrive from '@/components/drive.vue';
-import * as os from '@/os';
+import XDrive from '@client/components/drive.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/explore.vue b/src/client/pages/explore.vue
index b78a3707ef..da2eaffb84 100644
--- a/src/client/pages/explore.vue
+++ b/src/client/pages/explore.vue
@@ -70,11 +70,11 @@
import { computed, defineComponent } from 'vue';
import { faChartLine, faPlus, faHashtag, faRocket, faSearch } from '@fortawesome/free-solid-svg-icons';
import { faBookmark, faCommentAlt } from '@fortawesome/free-regular-svg-icons';
-import XUserList from '@/components/user-list.vue';
-import MkFolder from '@/components/ui/folder.vue';
-import MkInput from '@/components/ui/input.vue';
-import number from '@/filters/number';
-import * as os from '@/os';
+import XUserList from '@client/components/user-list.vue';
+import MkFolder from '@client/components/ui/folder.vue';
+import MkInput from '@client/components/ui/input.vue';
+import number from '@client/filters/number';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/favorites.vue b/src/client/pages/favorites.vue
index 35c5942398..c87855484d 100644
--- a/src/client/pages/favorites.vue
+++ b/src/client/pages/favorites.vue
@@ -7,9 +7,9 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faStar } from '@fortawesome/free-solid-svg-icons';
-import Progress from '@/scripts/loading';
-import XNotes from '@/components/notes.vue';
-import * as os from '@/os';
+import Progress from '@client/scripts/loading';
+import XNotes from '@client/components/notes.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/featured.vue b/src/client/pages/featured.vue
index c1e612ef8d..3866c4b489 100644
--- a/src/client/pages/featured.vue
+++ b/src/client/pages/featured.vue
@@ -7,8 +7,8 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faFireAlt } from '@fortawesome/free-solid-svg-icons';
-import Progress from '@/scripts/loading';
-import XNotes from '@/components/notes.vue';
+import Progress from '@client/scripts/loading';
+import XNotes from '@client/components/notes.vue';
export default defineComponent({
components: {
diff --git a/src/client/pages/follow-requests.vue b/src/client/pages/follow-requests.vue
index 04d739088f..64e6fa03e6 100644
--- a/src/client/pages/follow-requests.vue
+++ b/src/client/pages/follow-requests.vue
@@ -32,9 +32,9 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faUserClock, faCheck, faTimes } from '@fortawesome/free-solid-svg-icons';
-import MkPagination from '@/components/ui/pagination.vue';
+import MkPagination from '@client/components/ui/pagination.vue';
import { userPage, acct } from '../filters/user';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/follow.vue b/src/client/pages/follow.vue
index f999f48c5d..f5afdf0892 100644
--- a/src/client/pages/follow.vue
+++ b/src/client/pages/follow.vue
@@ -5,8 +5,8 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import * as os from '@/os';
-import parseAcct from '../../misc/acct/parse';
+import * as os from '@client/os';
+import parseAcct from '@/misc/acct/parse';
export default defineComponent({
created() {
diff --git a/src/client/pages/instance/abuses.vue b/src/client/pages/instance/abuses.vue
index 030f5ae157..d7d7697ebd 100644
--- a/src/client/pages/instance/abuses.vue
+++ b/src/client/pages/instance/abuses.vue
@@ -65,13 +65,13 @@
import { defineComponent } from 'vue';
import { faPlus, faUsers, faSearch, faBookmark, faMicrophoneSlash, faExclamationCircle } from '@fortawesome/free-solid-svg-icons';
import { faSnowflake, faBookmark as farBookmark } from '@fortawesome/free-regular-svg-icons';
-import parseAcct from '../../../misc/acct/parse';
-import MkButton from '@/components/ui/button.vue';
-import MkInput from '@/components/ui/input.vue';
-import MkSelect from '@/components/ui/select.vue';
-import MkPagination from '@/components/ui/pagination.vue';
+import parseAcct from '@/misc/acct/parse';
+import MkButton from '@client/components/ui/button.vue';
+import MkInput from '@client/components/ui/input.vue';
+import MkSelect from '@client/components/ui/select.vue';
+import MkPagination from '@client/components/ui/pagination.vue';
import { acct } from '../../filters/user';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/instance/announcements.vue b/src/client/pages/instance/announcements.vue
index b859aae2ec..15e5f389bc 100644
--- a/src/client/pages/instance/announcements.vue
+++ b/src/client/pages/instance/announcements.vue
@@ -30,10 +30,10 @@
import { defineComponent } from 'vue';
import { faBroadcastTower, faPlus } from '@fortawesome/free-solid-svg-icons';
import { faSave, faTrashAlt } from '@fortawesome/free-regular-svg-icons';
-import MkButton from '@/components/ui/button.vue';
-import MkInput from '@/components/ui/input.vue';
-import MkTextarea from '@/components/ui/textarea.vue';
-import * as os from '@/os';
+import MkButton from '@client/components/ui/button.vue';
+import MkInput from '@client/components/ui/input.vue';
+import MkTextarea from '@client/components/ui/textarea.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/instance/emoji-edit-dialog.vue b/src/client/pages/instance/emoji-edit-dialog.vue
index 179057d519..34eca47b4e 100644
--- a/src/client/pages/instance/emoji-edit-dialog.vue
+++ b/src/client/pages/instance/emoji-edit-dialog.vue
@@ -24,10 +24,10 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faTrashAlt } from '@fortawesome/free-regular-svg-icons';
-import XModalWindow from '@/components/ui/modal-window.vue';
-import MkButton from '@/components/ui/button.vue';
-import MkInput from '@/components/ui/input.vue';
-import * as os from '@/os';
+import XModalWindow from '@client/components/ui/modal-window.vue';
+import MkButton from '@client/components/ui/button.vue';
+import MkInput from '@client/components/ui/input.vue';
+import * as os from '@client/os';
import { unique } from '../../../prelude/array';
export default defineComponent({
diff --git a/src/client/pages/instance/emojis.vue b/src/client/pages/instance/emojis.vue
index 6a51813bb2..01e207f491 100644
--- a/src/client/pages/instance/emojis.vue
+++ b/src/client/pages/instance/emojis.vue
@@ -53,12 +53,12 @@
import { computed, defineComponent } from 'vue';
import { faPlus, faSave, faSearch } from '@fortawesome/free-solid-svg-icons';
import { faTrashAlt, faLaugh } from '@fortawesome/free-regular-svg-icons';
-import MkButton from '@/components/ui/button.vue';
-import MkInput from '@/components/ui/input.vue';
-import MkPagination from '@/components/ui/pagination.vue';
-import MkTab from '@/components/tab.vue';
-import { selectFile } from '@/scripts/select-file';
-import * as os from '@/os';
+import MkButton from '@client/components/ui/button.vue';
+import MkInput from '@client/components/ui/input.vue';
+import MkPagination from '@client/components/ui/pagination.vue';
+import MkTab from '@client/components/tab.vue';
+import { selectFile } from '@client/scripts/select-file';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/instance/federation.vue b/src/client/pages/instance/federation.vue
index fe8ce8c2f4..ba452c5458 100644
--- a/src/client/pages/instance/federation.vue
+++ b/src/client/pages/instance/federation.vue
@@ -61,12 +61,12 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faGlobe, faCircle, faExchangeAlt, faCaretDown, faCaretUp, faTrafficLight } from '@fortawesome/free-solid-svg-icons';
-import MkButton from '@/components/ui/button.vue';
-import MkInput from '@/components/ui/input.vue';
-import MkSelect from '@/components/ui/select.vue';
-import MkPagination from '@/components/ui/pagination.vue';
+import MkButton from '@client/components/ui/button.vue';
+import MkInput from '@client/components/ui/input.vue';
+import MkSelect from '@client/components/ui/select.vue';
+import MkPagination from '@client/components/ui/pagination.vue';
import MkInstanceInfo from './instance.vue';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/instance/file-dialog.vue b/src/client/pages/instance/file-dialog.vue
index 87fcdb59ef..85c03e3dce 100644
--- a/src/client/pages/instance/file-dialog.vue
+++ b/src/client/pages/instance/file-dialog.vue
@@ -38,13 +38,13 @@
import { computed, defineComponent } from 'vue';
import { faTimes, faBookmark, faKey, faSync, faMicrophoneSlash, faExternalLinkSquareAlt } from '@fortawesome/free-solid-svg-icons';
import { faSnowflake, faTrashAlt, faBookmark as farBookmark } from '@fortawesome/free-regular-svg-icons';
-import MkButton from '@/components/ui/button.vue';
-import MkSwitch from '@/components/ui/switch.vue';
-import XModalWindow from '@/components/ui/modal-window.vue';
-import MkDriveFileThumbnail from '@/components/drive-file-thumbnail.vue';
-import Progress from '@/scripts/loading';
-import bytes from '@/filters/bytes';
-import * as os from '@/os';
+import MkButton from '@client/components/ui/button.vue';
+import MkSwitch from '@client/components/ui/switch.vue';
+import XModalWindow from '@client/components/ui/modal-window.vue';
+import MkDriveFileThumbnail from '@client/components/drive-file-thumbnail.vue';
+import Progress from '@client/scripts/loading';
+import bytes from '@client/filters/bytes';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/instance/files.vue b/src/client/pages/instance/files.vue
index f19e3fcd45..aa66713789 100644
--- a/src/client/pages/instance/files.vue
+++ b/src/client/pages/instance/files.vue
@@ -64,13 +64,13 @@
import { defineComponent } from 'vue';
import { faCloud, faSearch } from '@fortawesome/free-solid-svg-icons';
import { faTrashAlt } from '@fortawesome/free-regular-svg-icons';
-import MkButton from '@/components/ui/button.vue';
-import MkInput from '@/components/ui/input.vue';
-import MkSelect from '@/components/ui/select.vue';
-import MkPagination from '@/components/ui/pagination.vue';
-import MkDriveFileThumbnail from '@/components/drive-file-thumbnail.vue';
-import bytes from '@/filters/bytes';
-import * as os from '@/os';
+import MkButton from '@client/components/ui/button.vue';
+import MkInput from '@client/components/ui/input.vue';
+import MkSelect from '@client/components/ui/select.vue';
+import MkPagination from '@client/components/ui/pagination.vue';
+import MkDriveFileThumbnail from '@client/components/drive-file-thumbnail.vue';
+import bytes from '@client/filters/bytes';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/instance/index.metrics.vue b/src/client/pages/instance/index.metrics.vue
index 9d990c2244..b467ce06f5 100644
--- a/src/client/pages/instance/index.metrics.vue
+++ b/src/client/pages/instance/index.metrics.vue
@@ -103,13 +103,13 @@
import { defineComponent, markRaw } from 'vue';
import { faPlay, faPause, faDatabase, faServer, faExchangeAlt, faMicrochip, faHdd, faStream, faTrashAlt, faInfoCircle, faExclamationTriangle, faTachometerAlt, faHeartbeat, faClipboardList } from '@fortawesome/free-solid-svg-icons';
import Chart from 'chart.js';
-import MkButton from '@/components/ui/button.vue';
-import MkSelect from '@/components/ui/select.vue';
-import MkInput from '@/components/ui/input.vue';
-import MkContainer from '@/components/ui/container.vue';
-import MkFolder from '@/components/ui/folder.vue';
+import MkButton from '@client/components/ui/button.vue';
+import MkSelect from '@client/components/ui/select.vue';
+import MkInput from '@client/components/ui/input.vue';
+import MkContainer from '@client/components/ui/container.vue';
+import MkFolder from '@client/components/ui/folder.vue';
import MkwFederation from '../../widgets/federation.vue';
-import { version, url } from '@/config';
+import { version, url } from '@client/config';
import bytes from '../../filters/bytes';
import number from '../../filters/number';
import MkInstanceInfo from './instance.vue';
@@ -121,7 +121,7 @@ const alpha = (hex, a) => {
const b = parseInt(result[3], 16);
return `rgba(${r}, ${g}, ${b}, ${a})`;
};
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/instance/index.vue b/src/client/pages/instance/index.vue
index e519ce743e..5a35309ed4 100644
--- a/src/client/pages/instance/index.vue
+++ b/src/client/pages/instance/index.vue
@@ -58,18 +58,18 @@
import { computed, defineComponent, markRaw } from 'vue';
import { faPlay, faPause, faDatabase, faServer, faExchangeAlt, faMicrochip, faHdd, faStream, faTrashAlt, faInfoCircle, faExclamationTriangle, faTachometerAlt, faHeartbeat, faClipboardList } from '@fortawesome/free-solid-svg-icons';
import VueJsonPretty from 'vue-json-pretty';
-import MkInstanceStats from '@/components/instance-stats.vue';
-import MkButton from '@/components/ui/button.vue';
-import MkSelect from '@/components/ui/select.vue';
-import MkInput from '@/components/ui/input.vue';
-import MkContainer from '@/components/ui/container.vue';
-import MkFolder from '@/components/ui/folder.vue';
-import { version, url } from '@/config';
+import MkInstanceStats from '@client/components/instance-stats.vue';
+import MkButton from '@client/components/ui/button.vue';
+import MkSelect from '@client/components/ui/select.vue';
+import MkInput from '@client/components/ui/input.vue';
+import MkContainer from '@client/components/ui/container.vue';
+import MkFolder from '@client/components/ui/folder.vue';
+import { version, url } from '@client/config';
import bytes from '../../filters/bytes';
import number from '../../filters/number';
import MkInstanceInfo from './instance.vue';
import XMetrics from './index.metrics.vue';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/instance/instance.vue b/src/client/pages/instance/instance.vue
index bcf18cfff0..118e8eae6e 100644
--- a/src/client/pages/instance/instance.vue
+++ b/src/client/pages/instance/instance.vue
@@ -126,15 +126,15 @@
import { defineComponent } from 'vue';
import Chart from 'chart.js';
import { faTimes, faCrosshairs, faCloudDownloadAlt, faCloudUploadAlt, faUsers, faPencilAlt, faFileImage, faDatabase, faTrafficLight, faLongArrowAltUp, faLongArrowAltDown, faMinusCircle, faTrashAlt } from '@fortawesome/free-solid-svg-icons';
-import XModalWindow from '@/components/ui/modal-window.vue';
-import MkUsersDialog from '@/components/users-dialog.vue';
-import MkSelect from '@/components/ui/select.vue';
-import MkButton from '@/components/ui/button.vue';
-import MkSwitch from '@/components/ui/switch.vue';
-import MkInfo from '@/components/ui/info.vue';
+import XModalWindow from '@client/components/ui/modal-window.vue';
+import MkUsersDialog from '@client/components/users-dialog.vue';
+import MkSelect from '@client/components/ui/select.vue';
+import MkButton from '@client/components/ui/button.vue';
+import MkSwitch from '@client/components/ui/switch.vue';
+import MkInfo from '@client/components/ui/info.vue';
import bytes from '../../filters/bytes';
import number from '../../filters/number';
-import * as os from '@/os';
+import * as os from '@client/os';
const chartLimit = 90;
const sum = (...arr) => arr.reduce((r, a) => r.map((b, i) => a[i] + b));
diff --git a/src/client/pages/instance/logs.vue b/src/client/pages/instance/logs.vue
index 73862e9da5..de1e81750f 100644
--- a/src/client/pages/instance/logs.vue
+++ b/src/client/pages/instance/logs.vue
@@ -32,11 +32,11 @@
import { defineComponent } from 'vue';
import { faStream } from '@fortawesome/free-solid-svg-icons';
import { faTrashAlt } from '@fortawesome/free-regular-svg-icons';
-import MkButton from '@/components/ui/button.vue';
-import MkInput from '@/components/ui/input.vue';
-import MkSelect from '@/components/ui/select.vue';
-import MkTextarea from '@/components/ui/textarea.vue';
-import * as os from '@/os';
+import MkButton from '@client/components/ui/button.vue';
+import MkInput from '@client/components/ui/input.vue';
+import MkSelect from '@client/components/ui/select.vue';
+import MkTextarea from '@client/components/ui/textarea.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/instance/queue.chart.vue b/src/client/pages/instance/queue.chart.vue
index 2a8259b9df..0eb70debfb 100644
--- a/src/client/pages/instance/queue.chart.vue
+++ b/src/client/pages/instance/queue.chart.vue
@@ -36,7 +36,7 @@ const alpha = (hex, a) => {
const b = parseInt(result[3], 16);
return `rgba(${r}, ${g}, ${b}, ${a})`;
};
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
props: {
diff --git a/src/client/pages/instance/queue.vue b/src/client/pages/instance/queue.vue
index b8ad875683..17c8430a01 100644
--- a/src/client/pages/instance/queue.vue
+++ b/src/client/pages/instance/queue.vue
@@ -18,9 +18,9 @@
import { defineComponent } from 'vue';
import { faExchangeAlt } from '@fortawesome/free-solid-svg-icons';
import { faTrashAlt } from '@fortawesome/free-regular-svg-icons';
-import MkButton from '@/components/ui/button.vue';
+import MkButton from '@client/components/ui/button.vue';
import XQueue from './queue.chart.vue';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/instance/relays.vue b/src/client/pages/instance/relays.vue
index f1c98355d3..ef11366a14 100644
--- a/src/client/pages/instance/relays.vue
+++ b/src/client/pages/instance/relays.vue
@@ -25,9 +25,9 @@
import { defineComponent } from 'vue';
import { faPlus, faProjectDiagram } from '@fortawesome/free-solid-svg-icons';
import { faSave, faTrashAlt } from '@fortawesome/free-regular-svg-icons';
-import MkButton from '@/components/ui/button.vue';
-import MkInput from '@/components/ui/input.vue';
-import * as os from '@/os';
+import MkButton from '@client/components/ui/button.vue';
+import MkInput from '@client/components/ui/input.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/instance/settings.vue b/src/client/pages/instance/settings.vue
index cea621ba2d..891eba3cf0 100644
--- a/src/client/pages/instance/settings.vue
+++ b/src/client/pages/instance/settings.vue
@@ -252,15 +252,15 @@ import { defineComponent, defineAsyncComponent } from 'vue';
import { faPencilAlt, faShareAlt, faGhost, faCog, faPlus, faCloud, faInfoCircle, faBan, faSave, faServer, faLink, faThumbtack, faUser, faShieldAlt, faKey, faBolt, faArchway } from '@fortawesome/free-solid-svg-icons';
import { faTrashAlt, faEnvelope } from '@fortawesome/free-regular-svg-icons';
import { faTwitter, faDiscord, faGithub } from '@fortawesome/free-brands-svg-icons';
-import MkButton from '@/components/ui/button.vue';
-import MkInput from '@/components/ui/input.vue';
-import MkTextarea from '@/components/ui/textarea.vue';
-import MkSwitch from '@/components/ui/switch.vue';
-import MkInfo from '@/components/ui/info.vue';
-import { url } from '@/config';
-import getAcct from '../../../misc/acct/render';
-import * as os from '@/os';
-import { fetchInstance } from '@/instance';
+import MkButton from '@client/components/ui/button.vue';
+import MkInput from '@client/components/ui/input.vue';
+import MkTextarea from '@client/components/ui/textarea.vue';
+import MkSwitch from '@client/components/ui/switch.vue';
+import MkInfo from '@client/components/ui/info.vue';
+import { url } from '@client/config';
+import getAcct from '@/misc/acct/render';
+import * as os from '@client/os';
+import { fetchInstance } from '@client/instance';
export default defineComponent({
components: {
@@ -269,7 +269,7 @@ export default defineComponent({
MkTextarea,
MkSwitch,
MkInfo,
- Captcha: defineAsyncComponent(() => import('@/components/captcha.vue')),
+ Captcha: defineAsyncComponent(() => import('@client/components/captcha.vue')),
},
data() {
diff --git a/src/client/pages/instance/user-dialog.vue b/src/client/pages/instance/user-dialog.vue
index b690826d27..fb0e766c5a 100644
--- a/src/client/pages/instance/user-dialog.vue
+++ b/src/client/pages/instance/user-dialog.vue
@@ -50,12 +50,12 @@
import { computed, defineComponent } from 'vue';
import { faTimes, faBookmark, faKey, faSync, faMicrophoneSlash, faExternalLinkSquareAlt } from '@fortawesome/free-solid-svg-icons';
import { faSnowflake, faTrashAlt, faBookmark as farBookmark } from '@fortawesome/free-regular-svg-icons';
-import MkButton from '@/components/ui/button.vue';
-import MkSwitch from '@/components/ui/switch.vue';
-import XModalWindow from '@/components/ui/modal-window.vue';
-import Progress from '@/scripts/loading';
+import MkButton from '@client/components/ui/button.vue';
+import MkSwitch from '@client/components/ui/switch.vue';
+import XModalWindow from '@client/components/ui/modal-window.vue';
+import Progress from '@client/scripts/loading';
import { acct, userPage } from '../../filters/user';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/instance/users.vue b/src/client/pages/instance/users.vue
index b2465991d8..013eed3971 100644
--- a/src/client/pages/instance/users.vue
+++ b/src/client/pages/instance/users.vue
@@ -82,13 +82,13 @@
import { defineComponent } from 'vue';
import { faPlus, faUsers, faSearch, faBookmark, faMicrophoneSlash } from '@fortawesome/free-solid-svg-icons';
import { faSnowflake, faBookmark as farBookmark } from '@fortawesome/free-regular-svg-icons';
-import parseAcct from '../../../misc/acct/parse';
-import MkButton from '@/components/ui/button.vue';
-import MkInput from '@/components/ui/input.vue';
-import MkSelect from '@/components/ui/select.vue';
-import MkPagination from '@/components/ui/pagination.vue';
+import parseAcct from '@/misc/acct/parse';
+import MkButton from '@client/components/ui/button.vue';
+import MkInput from '@client/components/ui/input.vue';
+import MkSelect from '@client/components/ui/select.vue';
+import MkPagination from '@client/components/ui/pagination.vue';
import { acct } from '../../filters/user';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/mentions.vue b/src/client/pages/mentions.vue
index 943a0e868e..5bd051453a 100644
--- a/src/client/pages/mentions.vue
+++ b/src/client/pages/mentions.vue
@@ -7,8 +7,8 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faAt } from '@fortawesome/free-solid-svg-icons';
-import Progress from '@/scripts/loading';
-import XNotes from '@/components/notes.vue';
+import Progress from '@client/scripts/loading';
+import XNotes from '@client/components/notes.vue';
export default defineComponent({
components: {
diff --git a/src/client/pages/messages.vue b/src/client/pages/messages.vue
index 60621fcc1d..02aa9c6fd3 100644
--- a/src/client/pages/messages.vue
+++ b/src/client/pages/messages.vue
@@ -7,8 +7,8 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faEnvelope } from '@fortawesome/free-solid-svg-icons';
-import Progress from '@/scripts/loading';
-import XNotes from '@/components/notes.vue';
+import Progress from '@client/scripts/loading';
+import XNotes from '@client/components/notes.vue';
export default defineComponent({
components: {
diff --git a/src/client/pages/messaging/index.vue b/src/client/pages/messaging/index.vue
index afb240c051..c906b968a4 100644
--- a/src/client/pages/messaging/index.vue
+++ b/src/client/pages/messaging/index.vue
@@ -41,10 +41,10 @@
<script lang="ts">
import { defineAsyncComponent, defineComponent } from 'vue';
import { faUser, faUsers, faComments, faPlus } from '@fortawesome/free-solid-svg-icons';
-import getAcct from '../../../misc/acct/render';
-import MkButton from '@/components/ui/button.vue';
+import getAcct from '@/misc/acct/render';
+import MkButton from '@client/components/ui/button.vue';
import { acct } from '../../filters/user';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/messaging/messaging-room.form.vue b/src/client/pages/messaging/messaging-room.form.vue
index 5e675a3f12..5826b8d0d2 100644
--- a/src/client/pages/messaging/messaging-room.form.vue
+++ b/src/client/pages/messaging/messaging-room.form.vue
@@ -26,10 +26,10 @@ import { defineComponent, defineAsyncComponent } from 'vue';
import { faPaperPlane, faPhotoVideo, faLaughSquint } from '@fortawesome/free-solid-svg-icons';
import insertTextAtCursor from 'insert-text-at-cursor';
import * as autosize from 'autosize';
-import { formatTimeString } from '../../../misc/format-time-string';
-import { selectFile } from '@/scripts/select-file';
-import * as os from '@/os';
-import { Autocomplete } from '@/scripts/autocomplete';
+import { formatTimeString } from '@/misc/format-time-string';
+import { selectFile } from '@client/scripts/select-file';
+import * as os from '@client/os';
+import { Autocomplete } from '@client/scripts/autocomplete';
import { throttle } from 'throttle-debounce';
export default defineComponent({
diff --git a/src/client/pages/messaging/messaging-room.message.vue b/src/client/pages/messaging/messaging-room.message.vue
index 6d4ed96044..a6d142bd34 100644
--- a/src/client/pages/messaging/messaging-room.message.vue
+++ b/src/client/pages/messaging/messaging-room.message.vue
@@ -39,8 +39,8 @@
import { defineComponent } from 'vue';
import { parse } from '../../../mfm/parse';
import { unique } from '../../../prelude/array';
-import MkUrlPreview from '@/components/url-preview.vue';
-import * as os from '@/os';
+import MkUrlPreview from '@client/components/url-preview.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/messaging/messaging-room.vue b/src/client/pages/messaging/messaging-room.vue
index 3921a081d1..8473bb36c2 100644
--- a/src/client/pages/messaging/messaging-room.vue
+++ b/src/client/pages/messaging/messaging-room.vue
@@ -39,14 +39,14 @@
import { computed, defineComponent } from 'vue';
import { faArrowCircleDown, faFlag, faUsers, faInfoCircle, faEllipsisH, faExternalLinkAlt } from '@fortawesome/free-solid-svg-icons';
import { faWindowMaximize } from '@fortawesome/free-regular-svg-icons';
-import XList from '@/components/date-separated-list.vue';
+import XList from '@client/components/date-separated-list.vue';
import XMessage from './messaging-room.message.vue';
import XForm from './messaging-room.form.vue';
-import parseAcct from '../../../misc/acct/parse';
-import { isBottom, onScrollBottom, scroll } from '@/scripts/scroll';
-import * as os from '@/os';
-import { popout } from '@/scripts/popout';
-import * as sound from '@/scripts/sound';
+import parseAcct from '@/misc/acct/parse';
+import { isBottom, onScrollBottom, scroll } from '@client/scripts/scroll';
+import * as os from '@client/os';
+import { popout } from '@client/scripts/popout';
+import * as sound from '@client/scripts/sound';
const Component = defineComponent({
components: {
diff --git a/src/client/pages/mfm-cheat-sheet.vue b/src/client/pages/mfm-cheat-sheet.vue
index 0d599e4583..4452604e4e 100644
--- a/src/client/pages/mfm-cheat-sheet.vue
+++ b/src/client/pages/mfm-cheat-sheet.vue
@@ -271,7 +271,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faQuestionCircle } from '@fortawesome/free-regular-svg-icons';
-import MkTextarea from '@/components/ui/textarea.vue';
+import MkTextarea from '@client/components/ui/textarea.vue';
export default defineComponent({
components: {
diff --git a/src/client/pages/miauth.vue b/src/client/pages/miauth.vue
index 6430588c46..39cd832838 100644
--- a/src/client/pages/miauth.vue
+++ b/src/client/pages/miauth.vue
@@ -38,10 +38,10 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import MkSignin from '@/components/signin.vue';
-import MkButton from '@/components/ui/button.vue';
-import * as os from '@/os';
-import { login } from '@/account';
+import MkSignin from '@client/components/signin.vue';
+import MkButton from '@client/components/ui/button.vue';
+import * as os from '@client/os';
+import { login } from '@client/account';
export default defineComponent({
components: {
diff --git a/src/client/pages/my-antennas/index.antenna.vue b/src/client/pages/my-antennas/index.antenna.vue
index b664af91b5..d7050d08c4 100644
--- a/src/client/pages/my-antennas/index.antenna.vue
+++ b/src/client/pages/my-antennas/index.antenna.vue
@@ -48,13 +48,13 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faSave, faTrash } from '@fortawesome/free-solid-svg-icons';
-import MkButton from '@/components/ui/button.vue';
-import MkInput from '@/components/ui/input.vue';
-import MkTextarea from '@/components/ui/textarea.vue';
-import MkSelect from '@/components/ui/select.vue';
-import MkSwitch from '@/components/ui/switch.vue';
-import getAcct from '../../../misc/acct/render';
-import * as os from '@/os';
+import MkButton from '@client/components/ui/button.vue';
+import MkInput from '@client/components/ui/input.vue';
+import MkTextarea from '@client/components/ui/textarea.vue';
+import MkSelect from '@client/components/ui/select.vue';
+import MkSwitch from '@client/components/ui/switch.vue';
+import getAcct from '@/misc/acct/render';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/my-antennas/index.vue b/src/client/pages/my-antennas/index.vue
index ebab025b49..f4d5f4aad6 100644
--- a/src/client/pages/my-antennas/index.vue
+++ b/src/client/pages/my-antennas/index.vue
@@ -15,8 +15,8 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faSatellite, faPlus } from '@fortawesome/free-solid-svg-icons';
-import MkPagination from '@/components/ui/pagination.vue';
-import MkButton from '@/components/ui/button.vue';
+import MkPagination from '@client/components/ui/pagination.vue';
+import MkButton from '@client/components/ui/button.vue';
import XAntenna from './index.antenna.vue';
export default defineComponent({
diff --git a/src/client/pages/my-clips/index.vue b/src/client/pages/my-clips/index.vue
index b1fdb8e62a..b724dfb6b7 100644
--- a/src/client/pages/my-clips/index.vue
+++ b/src/client/pages/my-clips/index.vue
@@ -16,9 +16,9 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faPlus, faPaperclip } from '@fortawesome/free-solid-svg-icons';
-import MkPagination from '@/components/ui/pagination.vue';
-import MkButton from '@/components/ui/button.vue';
-import * as os from '@/os';
+import MkPagination from '@client/components/ui/pagination.vue';
+import MkButton from '@client/components/ui/button.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/my-groups/group.vue b/src/client/pages/my-groups/group.vue
index ab6dc85399..8d0d8716c7 100644
--- a/src/client/pages/my-groups/group.vue
+++ b/src/client/pages/my-groups/group.vue
@@ -36,9 +36,9 @@
<script lang="ts">
import { computed, defineComponent } from 'vue';
import { faTimes, faUsers } from '@fortawesome/free-solid-svg-icons';
-import Progress from '@/scripts/loading';
-import MkButton from '@/components/ui/button.vue';
-import * as os from '@/os';
+import Progress from '@client/scripts/loading';
+import MkButton from '@client/components/ui/button.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/my-groups/index.vue b/src/client/pages/my-groups/index.vue
index 99f7b1e68f..2bc0d36b98 100644
--- a/src/client/pages/my-groups/index.vue
+++ b/src/client/pages/my-groups/index.vue
@@ -48,12 +48,12 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faUsers, faPlus, faEnvelopeOpenText } from '@fortawesome/free-solid-svg-icons';
-import MkPagination from '@/components/ui/pagination.vue';
-import MkButton from '@/components/ui/button.vue';
-import MkContainer from '@/components/ui/container.vue';
-import MkAvatars from '@/components/avatars.vue';
-import MkTab from '@/components/tab.vue';
-import * as os from '@/os';
+import MkPagination from '@client/components/ui/pagination.vue';
+import MkButton from '@client/components/ui/button.vue';
+import MkContainer from '@client/components/ui/container.vue';
+import MkAvatars from '@client/components/avatars.vue';
+import MkTab from '@client/components/tab.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/my-lists/index.vue b/src/client/pages/my-lists/index.vue
index bb23be664d..bbb2192aa1 100644
--- a/src/client/pages/my-lists/index.vue
+++ b/src/client/pages/my-lists/index.vue
@@ -13,9 +13,9 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faListUl, faPlus } from '@fortawesome/free-solid-svg-icons';
-import MkPagination from '@/components/ui/pagination.vue';
-import MkButton from '@/components/ui/button.vue';
-import * as os from '@/os';
+import MkPagination from '@client/components/ui/pagination.vue';
+import MkButton from '@client/components/ui/button.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/my-lists/list.vue b/src/client/pages/my-lists/list.vue
index 70c01dced1..dcaae222cc 100644
--- a/src/client/pages/my-lists/list.vue
+++ b/src/client/pages/my-lists/list.vue
@@ -35,9 +35,9 @@
<script lang="ts">
import { computed, defineComponent } from 'vue';
import { faTimes, faListUl } from '@fortawesome/free-solid-svg-icons';
-import Progress from '@/scripts/loading';
-import MkButton from '@/components/ui/button.vue';
-import * as os from '@/os';
+import Progress from '@client/scripts/loading';
+import MkButton from '@client/components/ui/button.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/not-found.vue b/src/client/pages/not-found.vue
index ec707c2beb..61ca3870c5 100644
--- a/src/client/pages/not-found.vue
+++ b/src/client/pages/not-found.vue
@@ -10,7 +10,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
data() {
diff --git a/src/client/pages/note.vue b/src/client/pages/note.vue
index 8756ba5a08..eb46c49d8b 100644
--- a/src/client/pages/note.vue
+++ b/src/client/pages/note.vue
@@ -38,12 +38,12 @@
<script lang="ts">
import { computed, defineComponent } from 'vue';
import { faChevronUp, faChevronDown } from '@fortawesome/free-solid-svg-icons';
-import XNote from '@/components/note.vue';
-import XNoteDetailed from '@/components/note-detailed.vue';
-import XNotes from '@/components/notes.vue';
-import MkRemoteCaution from '@/components/remote-caution.vue';
-import MkButton from '@/components/ui/button.vue';
-import * as os from '@/os';
+import XNote from '@client/components/note.vue';
+import XNoteDetailed from '@client/components/note-detailed.vue';
+import XNotes from '@client/components/notes.vue';
+import MkRemoteCaution from '@client/components/remote-caution.vue';
+import MkButton from '@client/components/ui/button.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/notifications.vue b/src/client/pages/notifications.vue
index 4b4f22e642..a6d73b4290 100644
--- a/src/client/pages/notifications.vue
+++ b/src/client/pages/notifications.vue
@@ -9,9 +9,9 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faBell } from '@fortawesome/free-solid-svg-icons';
-import Progress from '@/scripts/loading';
-import XNotifications from '@/components/notifications.vue';
-import * as os from '@/os';
+import Progress from '@client/scripts/loading';
+import XNotifications from '@client/components/notifications.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/page-editor/els/page-editor.el.button.vue b/src/client/pages/page-editor/els/page-editor.el.button.vue
index 846e3f644d..1515187676 100644
--- a/src/client/pages/page-editor/els/page-editor.el.button.vue
+++ b/src/client/pages/page-editor/els/page-editor.el.button.vue
@@ -41,10 +41,10 @@
import { defineComponent } from 'vue';
import { faBolt } from '@fortawesome/free-solid-svg-icons';
import XContainer from '../page-editor.container.vue';
-import MkSelect from '@/components/ui/select.vue';
-import MkInput from '@/components/ui/input.vue';
-import MkSwitch from '@/components/ui/switch.vue';
-import * as os from '@/os';
+import MkSelect from '@client/components/ui/select.vue';
+import MkInput from '@client/components/ui/input.vue';
+import MkSwitch from '@client/components/ui/switch.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/page-editor/els/page-editor.el.canvas.vue b/src/client/pages/page-editor/els/page-editor.el.canvas.vue
index 83b7f376dd..9d4b4c76d2 100644
--- a/src/client/pages/page-editor/els/page-editor.el.canvas.vue
+++ b/src/client/pages/page-editor/els/page-editor.el.canvas.vue
@@ -14,8 +14,8 @@
import { defineComponent } from 'vue';
import { faPaintBrush, faMagic } from '@fortawesome/free-solid-svg-icons';
import XContainer from '../page-editor.container.vue';
-import MkInput from '@/components/ui/input.vue';
-import * as os from '@/os';
+import MkInput from '@client/components/ui/input.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/page-editor/els/page-editor.el.counter.vue b/src/client/pages/page-editor/els/page-editor.el.counter.vue
index 81f0462343..e16962aee9 100644
--- a/src/client/pages/page-editor/els/page-editor.el.counter.vue
+++ b/src/client/pages/page-editor/els/page-editor.el.counter.vue
@@ -14,8 +14,8 @@
import { defineComponent } from 'vue';
import { faBolt, faMagic } from '@fortawesome/free-solid-svg-icons';
import XContainer from '../page-editor.container.vue';
-import MkInput from '@/components/ui/input.vue';
-import * as os from '@/os';
+import MkInput from '@client/components/ui/input.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/page-editor/els/page-editor.el.if.vue b/src/client/pages/page-editor/els/page-editor.el.if.vue
index 8cc2f401cc..0cbfaa7eb8 100644
--- a/src/client/pages/page-editor/els/page-editor.el.if.vue
+++ b/src/client/pages/page-editor/els/page-editor.el.if.vue
@@ -29,8 +29,8 @@ import { defineComponent, defineAsyncComponent } from 'vue';
import { v4 as uuid } from 'uuid';
import { faPlus, faQuestion } from '@fortawesome/free-solid-svg-icons';
import XContainer from '../page-editor.container.vue';
-import MkSelect from '@/components/ui/select.vue';
-import * as os from '@/os';
+import MkSelect from '@client/components/ui/select.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/page-editor/els/page-editor.el.image.vue b/src/client/pages/page-editor/els/page-editor.el.image.vue
index b711d00763..1a96e42679 100644
--- a/src/client/pages/page-editor/els/page-editor.el.image.vue
+++ b/src/client/pages/page-editor/els/page-editor.el.image.vue
@@ -18,8 +18,8 @@ import { defineComponent } from 'vue';
import { faPencilAlt } from '@fortawesome/free-solid-svg-icons';
import { faImage, faFolderOpen } from '@fortawesome/free-regular-svg-icons';
import XContainer from '../page-editor.container.vue';
-import MkDriveFileThumbnail from '@/components/drive-file-thumbnail.vue';
-import * as os from '@/os';
+import MkDriveFileThumbnail from '@client/components/drive-file-thumbnail.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/page-editor/els/page-editor.el.note.vue b/src/client/pages/page-editor/els/page-editor.el.note.vue
index 4f45f3b5fd..3f7eaf7572 100644
--- a/src/client/pages/page-editor/els/page-editor.el.note.vue
+++ b/src/client/pages/page-editor/els/page-editor.el.note.vue
@@ -19,11 +19,11 @@
import { defineComponent } from 'vue';
import { faStickyNote } from '@fortawesome/free-solid-svg-icons';
import XContainer from '../page-editor.container.vue';
-import MkInput from '@/components/ui/input.vue';
-import MkSwitch from '@/components/ui/switch.vue';
-import XNote from '@/components/note.vue';
-import XNoteDetailed from '@/components/note-detailed.vue';
-import * as os from '@/os';
+import MkInput from '@client/components/ui/input.vue';
+import MkSwitch from '@client/components/ui/switch.vue';
+import XNote from '@client/components/note.vue';
+import XNoteDetailed from '@client/components/note-detailed.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/page-editor/els/page-editor.el.number-input.vue b/src/client/pages/page-editor/els/page-editor.el.number-input.vue
index 37a4d6031c..76c35d4406 100644
--- a/src/client/pages/page-editor/els/page-editor.el.number-input.vue
+++ b/src/client/pages/page-editor/els/page-editor.el.number-input.vue
@@ -14,8 +14,8 @@
import { defineComponent } from 'vue';
import { faBolt, faMagic } from '@fortawesome/free-solid-svg-icons';
import XContainer from '../page-editor.container.vue';
-import MkInput from '@/components/ui/input.vue';
-import * as os from '@/os';
+import MkInput from '@client/components/ui/input.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/page-editor/els/page-editor.el.post.vue b/src/client/pages/page-editor/els/page-editor.el.post.vue
index 3866f51c16..51c5481d54 100644
--- a/src/client/pages/page-editor/els/page-editor.el.post.vue
+++ b/src/client/pages/page-editor/els/page-editor.el.post.vue
@@ -14,10 +14,10 @@
import { defineComponent } from 'vue';
import { faPaperPlane } from '@fortawesome/free-regular-svg-icons';
import XContainer from '../page-editor.container.vue';
-import MkTextarea from '@/components/ui/textarea.vue';
-import MkInput from '@/components/ui/input.vue';
-import MkSwitch from '@/components/ui/switch.vue';
-import * as os from '@/os';
+import MkTextarea from '@client/components/ui/textarea.vue';
+import MkInput from '@client/components/ui/input.vue';
+import MkSwitch from '@client/components/ui/switch.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/page-editor/els/page-editor.el.radio-button.vue b/src/client/pages/page-editor/els/page-editor.el.radio-button.vue
index d1e8545b2e..82b09a6290 100644
--- a/src/client/pages/page-editor/els/page-editor.el.radio-button.vue
+++ b/src/client/pages/page-editor/els/page-editor.el.radio-button.vue
@@ -15,9 +15,9 @@
import { defineComponent } from 'vue';
import { faBolt, faMagic } from '@fortawesome/free-solid-svg-icons';
import XContainer from '../page-editor.container.vue';
-import MkTextarea from '@/components/ui/textarea.vue';
-import MkInput from '@/components/ui/input.vue';
-import * as os from '@/os';
+import MkTextarea from '@client/components/ui/textarea.vue';
+import MkInput from '@client/components/ui/input.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/page-editor/els/page-editor.el.section.vue b/src/client/pages/page-editor/els/page-editor.el.section.vue
index e08540351c..96f468b13a 100644
--- a/src/client/pages/page-editor/els/page-editor.el.section.vue
+++ b/src/client/pages/page-editor/els/page-editor.el.section.vue
@@ -22,7 +22,7 @@ import { v4 as uuid } from 'uuid';
import { faPlus, faPencilAlt } from '@fortawesome/free-solid-svg-icons';
import { faStickyNote } from '@fortawesome/free-regular-svg-icons';
import XContainer from '../page-editor.container.vue';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/page-editor/els/page-editor.el.switch.vue b/src/client/pages/page-editor/els/page-editor.el.switch.vue
index 2614239932..56b9f1561c 100644
--- a/src/client/pages/page-editor/els/page-editor.el.switch.vue
+++ b/src/client/pages/page-editor/els/page-editor.el.switch.vue
@@ -14,9 +14,9 @@
import { defineComponent } from 'vue';
import { faBolt, faMagic } from '@fortawesome/free-solid-svg-icons';
import XContainer from '../page-editor.container.vue';
-import MkSwitch from '@/components/ui/switch.vue';
-import MkInput from '@/components/ui/input.vue';
-import * as os from '@/os';
+import MkSwitch from '@client/components/ui/switch.vue';
+import MkInput from '@client/components/ui/input.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/page-editor/els/page-editor.el.text-input.vue b/src/client/pages/page-editor/els/page-editor.el.text-input.vue
index 335d1ab408..cb8cb83aa7 100644
--- a/src/client/pages/page-editor/els/page-editor.el.text-input.vue
+++ b/src/client/pages/page-editor/els/page-editor.el.text-input.vue
@@ -14,8 +14,8 @@
import { defineComponent } from 'vue';
import { faBolt, faMagic } from '@fortawesome/free-solid-svg-icons';
import XContainer from '../page-editor.container.vue';
-import MkInput from '@/components/ui/input.vue';
-import * as os from '@/os';
+import MkInput from '@client/components/ui/input.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/page-editor/els/page-editor.el.text.vue b/src/client/pages/page-editor/els/page-editor.el.text.vue
index 452eedba6b..bd2c9c46dc 100644
--- a/src/client/pages/page-editor/els/page-editor.el.text.vue
+++ b/src/client/pages/page-editor/els/page-editor.el.text.vue
@@ -12,7 +12,7 @@
import { defineComponent } from 'vue';
import { faAlignLeft } from '@fortawesome/free-solid-svg-icons';
import XContainer from '../page-editor.container.vue';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/page-editor/els/page-editor.el.textarea-input.vue b/src/client/pages/page-editor/els/page-editor.el.textarea-input.vue
index afedbe6f6d..8c4ff23408 100644
--- a/src/client/pages/page-editor/els/page-editor.el.textarea-input.vue
+++ b/src/client/pages/page-editor/els/page-editor.el.textarea-input.vue
@@ -14,9 +14,9 @@
import { defineComponent } from 'vue';
import { faBolt, faMagic } from '@fortawesome/free-solid-svg-icons';
import XContainer from '../page-editor.container.vue';
-import MkTextarea from '@/components/ui/textarea.vue';
-import MkInput from '@/components/ui/input.vue';
-import * as os from '@/os';
+import MkTextarea from '@client/components/ui/textarea.vue';
+import MkInput from '@client/components/ui/input.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/page-editor/els/page-editor.el.textarea.vue b/src/client/pages/page-editor/els/page-editor.el.textarea.vue
index e5f29b37d2..042b283731 100644
--- a/src/client/pages/page-editor/els/page-editor.el.textarea.vue
+++ b/src/client/pages/page-editor/els/page-editor.el.textarea.vue
@@ -12,7 +12,7 @@
import { defineComponent } from 'vue';
import { faAlignLeft } from '@fortawesome/free-solid-svg-icons';
import XContainer from '../page-editor.container.vue';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/page-editor/page-editor.blocks.vue b/src/client/pages/page-editor/page-editor.blocks.vue
index ccaa715111..0065b16c8c 100644
--- a/src/client/pages/page-editor/page-editor.blocks.vue
+++ b/src/client/pages/page-editor/page-editor.blocks.vue
@@ -23,7 +23,7 @@ import XCounter from './els/page-editor.el.counter.vue';
import XRadioButton from './els/page-editor.el.radio-button.vue';
import XCanvas from './els/page-editor.el.canvas.vue';
import XNote from './els/page-editor.el.note.vue';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/page-editor/page-editor.script-block.vue b/src/client/pages/page-editor/page-editor.script-block.vue
index 68bc1b50c1..10d5311cde 100644
--- a/src/client/pages/page-editor/page-editor.script-block.vue
+++ b/src/client/pages/page-editor/page-editor.script-block.vue
@@ -60,11 +60,11 @@ import { defineAsyncComponent, defineComponent } from 'vue';
import { faPencilAlt, faPlug } from '@fortawesome/free-solid-svg-icons';
import { v4 as uuid } from 'uuid';
import XContainer from './page-editor.container.vue';
-import MkTextarea from '@/components/ui/textarea.vue';
-import { blockDefs } from '@/scripts/hpml/index';
-import * as os from '@/os';
-import { isLiteralValue } from '@/scripts/hpml/expr';
-import { funcDefs } from '@/scripts/hpml/lib';
+import MkTextarea from '@client/components/ui/textarea.vue';
+import { blockDefs } from '@client/scripts/hpml/index';
+import * as os from '@client/os';
+import { isLiteralValue } from '@client/scripts/hpml/expr';
+import { funcDefs } from '@client/scripts/hpml/lib';
export default defineComponent({
components: {
diff --git a/src/client/pages/page-editor/page-editor.vue b/src/client/pages/page-editor/page-editor.vue
index 08856ebfe4..762ee774ed 100644
--- a/src/client/pages/page-editor/page-editor.vue
+++ b/src/client/pages/page-editor/page-editor.vue
@@ -98,18 +98,18 @@ import { faSave, faStickyNote, faTrashAlt } from '@fortawesome/free-regular-svg-
import { v4 as uuid } from 'uuid';
import XVariable from './page-editor.script-block.vue';
import XBlocks from './page-editor.blocks.vue';
-import MkTextarea from '@/components/ui/textarea.vue';
-import MkContainer from '@/components/ui/container.vue';
-import MkButton from '@/components/ui/button.vue';
-import MkSelect from '@/components/ui/select.vue';
-import MkSwitch from '@/components/ui/switch.vue';
-import MkInput from '@/components/ui/input.vue';
-import { blockDefs } from '@/scripts/hpml/index';
-import { HpmlTypeChecker } from '@/scripts/hpml/type-checker';
-import { url } from '@/config';
-import { collectPageVars } from '@/scripts/collect-page-vars';
-import * as os from '@/os';
-import { selectFile } from '@/scripts/select-file';
+import MkTextarea from '@client/components/ui/textarea.vue';
+import MkContainer from '@client/components/ui/container.vue';
+import MkButton from '@client/components/ui/button.vue';
+import MkSelect from '@client/components/ui/select.vue';
+import MkSwitch from '@client/components/ui/switch.vue';
+import MkInput from '@client/components/ui/input.vue';
+import { blockDefs } from '@client/scripts/hpml/index';
+import { HpmlTypeChecker } from '@client/scripts/hpml/type-checker';
+import { url } from '@client/config';
+import { collectPageVars } from '@client/scripts/collect-page-vars';
+import * as os from '@client/os';
+import { selectFile } from '@client/scripts/select-file';
export default defineComponent({
components: {
diff --git a/src/client/pages/page.vue b/src/client/pages/page.vue
index 0b0b421ea2..121383a7a6 100644
--- a/src/client/pages/page.vue
+++ b/src/client/pages/page.vue
@@ -35,8 +35,8 @@
import { computed, defineComponent } from 'vue';
import { faHeart as faHeartS } from '@fortawesome/free-solid-svg-icons';
import { faHeart as faHeartR } from '@fortawesome/free-regular-svg-icons';
-import XPage from '@/components/page/page.vue';
-import * as os from '@/os';
+import XPage from '@client/components/page/page.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/pages.vue b/src/client/pages/pages.vue
index 29960351d3..9bedda04ef 100644
--- a/src/client/pages/pages.vue
+++ b/src/client/pages/pages.vue
@@ -33,10 +33,10 @@
import { defineComponent } from 'vue';
import { faPlus, faEdit, faFireAlt } from '@fortawesome/free-solid-svg-icons';
import { faStickyNote, faHeart } from '@fortawesome/free-regular-svg-icons';
-import MkPagePreview from '@/components/page-preview.vue';
-import MkPagination from '@/components/ui/pagination.vue';
-import MkButton from '@/components/ui/button.vue';
-import MkTab from '@/components/tab.vue';
+import MkPagePreview from '@client/components/page-preview.vue';
+import MkPagination from '@client/components/ui/pagination.vue';
+import MkButton from '@client/components/ui/button.vue';
+import MkTab from '@client/components/tab.vue';
export default defineComponent({
components: {
diff --git a/src/client/pages/preview.vue b/src/client/pages/preview.vue
index 912f891d8a..0b0293f69a 100644
--- a/src/client/pages/preview.vue
+++ b/src/client/pages/preview.vue
@@ -7,7 +7,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faEye } from '@fortawesome/free-solid-svg-icons';
-import MkSample from '@/components/sample.vue';
+import MkSample from '@client/components/sample.vue';
export default defineComponent({
components: {
diff --git a/src/client/pages/reversi/game.board.vue b/src/client/pages/reversi/game.board.vue
index 8ce232af07..a466527c01 100644
--- a/src/client/pages/reversi/game.board.vue
+++ b/src/client/pages/reversi/game.board.vue
@@ -90,11 +90,11 @@ import { faCircle as fasCircle } from '@fortawesome/free-solid-svg-icons';
import { faCircle as farCircle } from '@fortawesome/free-regular-svg-icons';
import * as CRC32 from 'crc-32';
import Reversi, { Color } from '../../../games/reversi/core';
-import { url } from '@/config';
-import MkButton from '@/components/ui/button.vue';
-import { userPage } from '@/filters/user';
-import * as os from '@/os';
-import * as sound from '@/scripts/sound';
+import { url } from '@client/config';
+import MkButton from '@client/components/ui/button.vue';
+import { userPage } from '@client/filters/user';
+import * as os from '@client/os';
+import * as sound from '@client/scripts/sound';
export default defineComponent({
components: {
diff --git a/src/client/pages/reversi/game.setting.vue b/src/client/pages/reversi/game.setting.vue
index 404e560a06..c7c2937ba8 100644
--- a/src/client/pages/reversi/game.setting.vue
+++ b/src/client/pages/reversi/game.setting.vue
@@ -128,9 +128,9 @@ import { defineComponent } from 'vue';
import { faCircle as fasCircle } from '@fortawesome/free-solid-svg-icons';
import { faCircle as farCircle } from '@fortawesome/free-regular-svg-icons';
import * as maps from '../../../games/reversi/maps';
-import MkButton from '@/components/ui/button.vue';
-import MkSwitch from '@/components/ui/switch.vue';
-import MkRadio from '@/components/ui/radio.vue';
+import MkButton from '@client/components/ui/button.vue';
+import MkSwitch from '@client/components/ui/switch.vue';
+import MkRadio from '@client/components/ui/radio.vue';
export default defineComponent({
components: {
diff --git a/src/client/pages/reversi/game.vue b/src/client/pages/reversi/game.vue
index ba750f43c7..3a88b02583 100644
--- a/src/client/pages/reversi/game.vue
+++ b/src/client/pages/reversi/game.vue
@@ -8,7 +8,7 @@
import { defineComponent } from 'vue';
import GameSetting from './game.setting.vue';
import GameBoard from './game.board.vue';
-import * as os from '@/os';
+import * as os from '@client/os';
import { faGamepad } from '@fortawesome/free-solid-svg-icons';
export default defineComponent({
diff --git a/src/client/pages/reversi/index.vue b/src/client/pages/reversi/index.vue
index 4b5d783f9e..f40990b37c 100644
--- a/src/client/pages/reversi/index.vue
+++ b/src/client/pages/reversi/index.vue
@@ -61,9 +61,9 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import * as os from '@/os';
-import MkButton from '@/components/ui/button.vue';
-import MkFolder from '@/components/ui/folder.vue';
+import * as os from '@client/os';
+import MkButton from '@client/components/ui/button.vue';
+import MkFolder from '@client/components/ui/folder.vue';
import { faGamepad } from '@fortawesome/free-solid-svg-icons';
export default defineComponent({
diff --git a/src/client/pages/room/preview.vue b/src/client/pages/room/preview.vue
index b0e600d4fb..0cb6bcf04c 100644
--- a/src/client/pages/room/preview.vue
+++ b/src/client/pages/room/preview.vue
@@ -5,7 +5,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import * as THREE from 'three';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
data() {
diff --git a/src/client/pages/room/room.vue b/src/client/pages/room/room.vue
index 25dfda1d14..e6e2809725 100644
--- a/src/client/pages/room/room.vue
+++ b/src/client/pages/room/room.vue
@@ -51,18 +51,18 @@
<script lang="ts">
import { computed, defineComponent } from 'vue';
-import { Room } from '@/scripts/room/room';
-import parseAcct from '../../../misc/acct/parse';
+import { Room } from '@client/scripts/room/room';
+import parseAcct from '@/misc/acct/parse';
import XPreview from './preview.vue';
-const storeItems = require('@/scripts/room/furnitures.json5');
+const storeItems = require('@client/scripts/room/furnitures.json5');
import { faBoxOpen, faUndo, faArrowsAlt, faBan, faBroom } from '@fortawesome/free-solid-svg-icons';
import { faSave, faTrashAlt } from '@fortawesome/free-regular-svg-icons';
import { query as urlQuery } from '../../../prelude/url';
-import MkButton from '@/components/ui/button.vue';
-import MkSelect from '@/components/ui/select.vue';
-import { selectFile } from '@/scripts/select-file';
-import * as os from '@/os';
-import { ColdDeviceStorage } from '@/store';
+import MkButton from '@client/components/ui/button.vue';
+import MkSelect from '@client/components/ui/select.vue';
+import { selectFile } from '@client/scripts/select-file';
+import * as os from '@client/os';
+import { ColdDeviceStorage } from '@client/store';
let room: Room;
diff --git a/src/client/pages/scratchpad.vue b/src/client/pages/scratchpad.vue
index 6ee7ec02fc..febc9c5016 100644
--- a/src/client/pages/scratchpad.vue
+++ b/src/client/pages/scratchpad.vue
@@ -29,10 +29,10 @@ import 'prismjs/themes/prism-okaidia.css';
import { PrismEditor } from 'vue-prism-editor';
import 'vue-prism-editor/dist/prismeditor.min.css';
import { AiScript, parse, utils, values } from '@syuilo/aiscript';
-import MkContainer from '@/components/ui/container.vue';
-import MkButton from '@/components/ui/button.vue';
-import { createAiScriptEnv } from '@/scripts/aiscript/api';
-import * as os from '@/os';
+import MkContainer from '@client/components/ui/container.vue';
+import MkButton from '@client/components/ui/button.vue';
+import { createAiScriptEnv } from '@client/scripts/aiscript/api';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/search.vue b/src/client/pages/search.vue
index 5e79531b20..28d2aec992 100644
--- a/src/client/pages/search.vue
+++ b/src/client/pages/search.vue
@@ -9,8 +9,8 @@
<script lang="ts">
import { computed, defineComponent } from 'vue';
import { faSearch } from '@fortawesome/free-solid-svg-icons';
-import Progress from '@/scripts/loading';
-import XNotes from '@/components/notes.vue';
+import Progress from '@client/scripts/loading';
+import XNotes from '@client/components/notes.vue';
export default defineComponent({
components: {
diff --git a/src/client/pages/settings/2fa.vue b/src/client/pages/settings/2fa.vue
index e7f97725af..48f1bc6e7b 100644
--- a/src/client/pages/settings/2fa.vue
+++ b/src/client/pages/settings/2fa.vue
@@ -69,16 +69,16 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faLock } from '@fortawesome/free-solid-svg-icons';
-import { hostname } from '@/config';
-import { byteify, hexify, stringify } from '@/scripts/2fa';
-import MkButton from '@/components/ui/button.vue';
-import MkInfo from '@/components/ui/info.vue';
-import MkInput from '@/components/ui/input.vue';
-import MkSwitch from '@/components/ui/switch.vue';
-import FormBase from '@/components/form/base.vue';
-import FormGroup from '@/components/form/group.vue';
-import FormButton from '@/components/form/button.vue';
-import * as os from '@/os';
+import { hostname } from '@client/config';
+import { byteify, hexify, stringify } from '@client/scripts/2fa';
+import MkButton from '@client/components/ui/button.vue';
+import MkInfo from '@client/components/ui/info.vue';
+import MkInput from '@client/components/ui/input.vue';
+import MkSwitch from '@client/components/ui/switch.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormGroup from '@client/components/form/group.vue';
+import FormButton from '@client/components/form/button.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/settings/account-info.vue b/src/client/pages/settings/account-info.vue
index f231bea22e..1b8baadf44 100644
--- a/src/client/pages/settings/account-info.vue
+++ b/src/client/pages/settings/account-info.vue
@@ -133,16 +133,16 @@
<script lang="ts">
import { defineAsyncComponent, defineComponent } from 'vue';
import { faInfoCircle } from '@fortawesome/free-solid-svg-icons';
-import FormSwitch from '@/components/form/switch.vue';
-import FormSelect from '@/components/form/select.vue';
-import FormLink from '@/components/form/link.vue';
-import FormBase from '@/components/form/base.vue';
-import FormGroup from '@/components/form/group.vue';
-import FormButton from '@/components/form/button.vue';
-import FormKeyValueView from '@/components/form/key-value-view.vue';
-import * as os from '@/os';
-import number from '@/filters/number';
-import bytes from '@/filters/bytes';
+import FormSwitch from '@client/components/form/switch.vue';
+import FormSelect from '@client/components/form/select.vue';
+import FormLink from '@client/components/form/link.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormGroup from '@client/components/form/group.vue';
+import FormButton from '@client/components/form/button.vue';
+import FormKeyValueView from '@client/components/form/key-value-view.vue';
+import * as os from '@client/os';
+import number from '@client/filters/number';
+import bytes from '@client/filters/bytes';
export default defineComponent({
components: {
diff --git a/src/client/pages/settings/api.vue b/src/client/pages/settings/api.vue
index b02a33b3f1..da9ed88b55 100644
--- a/src/client/pages/settings/api.vue
+++ b/src/client/pages/settings/api.vue
@@ -9,13 +9,13 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faKey } from '@fortawesome/free-solid-svg-icons';
-import FormSwitch from '@/components/form/switch.vue';
-import FormSelect from '@/components/form/select.vue';
-import FormLink from '@/components/form/link.vue';
-import FormBase from '@/components/form/base.vue';
-import FormGroup from '@/components/form/group.vue';
-import FormButton from '@/components/form/button.vue';
-import * as os from '@/os';
+import FormSwitch from '@client/components/form/switch.vue';
+import FormSelect from '@client/components/form/select.vue';
+import FormLink from '@client/components/form/link.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormGroup from '@client/components/form/group.vue';
+import FormButton from '@client/components/form/button.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
@@ -42,7 +42,7 @@ export default defineComponent({
methods: {
generateToken() {
- os.popup(import('@/components/token-generate-window.vue'), {}, {
+ os.popup(import('@client/components/token-generate-window.vue'), {}, {
done: async result => {
const { name, permissions } = result;
const { token } = await os.api('miauth/gen-token', {
diff --git a/src/client/pages/settings/apps.vue b/src/client/pages/settings/apps.vue
index 3eb31ab520..d0fcacfaed 100644
--- a/src/client/pages/settings/apps.vue
+++ b/src/client/pages/settings/apps.vue
@@ -40,13 +40,13 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faTrashAlt, faPlug } from '@fortawesome/free-solid-svg-icons';
-import FormPagination from '@/components/form/pagination.vue';
-import FormSelect from '@/components/form/select.vue';
-import FormLink from '@/components/form/link.vue';
-import FormBase from '@/components/form/base.vue';
-import FormGroup from '@/components/form/group.vue';
-import FormButton from '@/components/form/button.vue';
-import * as os from '@/os';
+import FormPagination from '@client/components/form/pagination.vue';
+import FormSelect from '@client/components/form/select.vue';
+import FormLink from '@client/components/form/link.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormGroup from '@client/components/form/group.vue';
+import FormButton from '@client/components/form/button.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/settings/deck.vue b/src/client/pages/settings/deck.vue
index cbc5edca94..ce4099db2e 100644
--- a/src/client/pages/settings/deck.vue
+++ b/src/client/pages/settings/deck.vue
@@ -32,15 +32,15 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faImage, faCog, faColumns } from '@fortawesome/free-solid-svg-icons';
-import FormSwitch from '@/components/form/switch.vue';
-import FormLink from '@/components/form/link.vue';
-import FormRadios from '@/components/form/radios.vue';
-import FormInput from '@/components/form/input.vue';
-import FormBase from '@/components/form/base.vue';
-import FormGroup from '@/components/form/group.vue';
-import { deckStore } from '@/ui/deck/deck-store';
-import * as os from '@/os';
-import { unisonReload } from '@/scripts/unison-reload';
+import FormSwitch from '@client/components/form/switch.vue';
+import FormLink from '@client/components/form/link.vue';
+import FormRadios from '@client/components/form/radios.vue';
+import FormInput from '@client/components/form/input.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormGroup from '@client/components/form/group.vue';
+import { deckStore } from '@client/ui/deck/deck-store';
+import * as os from '@client/os';
+import { unisonReload } from '@client/scripts/unison-reload';
export default defineComponent({
components: {
diff --git a/src/client/pages/settings/drive.vue b/src/client/pages/settings/drive.vue
index 8ca8bc9eec..4684d3b554 100644
--- a/src/client/pages/settings/drive.vue
+++ b/src/client/pages/settings/drive.vue
@@ -38,12 +38,12 @@ import * as tinycolor from 'tinycolor2';
import ApexCharts from 'apexcharts';
import { faCloud, faFolderOpen } from '@fortawesome/free-solid-svg-icons';
import { faClock, faEyeSlash, faTrashAlt } from '@fortawesome/free-regular-svg-icons';
-import FormButton from '@/components/form/button.vue';
-import FormGroup from '@/components/form/group.vue';
-import FormKeyValueView from '@/components/form/key-value-view.vue';
-import FormBase from '@/components/form/base.vue';
-import * as os from '@/os';
-import bytes from '@/filters/bytes';
+import FormButton from '@client/components/form/button.vue';
+import FormGroup from '@client/components/form/group.vue';
+import FormKeyValueView from '@client/components/form/key-value-view.vue';
+import FormBase from '@client/components/form/base.vue';
+import * as os from '@client/os';
+import bytes from '@client/filters/bytes';
export default defineComponent({
components: {
diff --git a/src/client/pages/settings/email-address.vue b/src/client/pages/settings/email-address.vue
index 8ca0f119c5..56e9973aeb 100644
--- a/src/client/pages/settings/email-address.vue
+++ b/src/client/pages/settings/email-address.vue
@@ -15,11 +15,11 @@
import { defineComponent } from 'vue';
import { faCog } from '@fortawesome/free-solid-svg-icons';
import { faBell, faEnvelope } from '@fortawesome/free-regular-svg-icons';
-import FormButton from '@/components/form/button.vue';
-import FormInput from '@/components/form/input.vue';
-import FormBase from '@/components/form/base.vue';
-import FormGroup from '@/components/form/group.vue';
-import * as os from '@/os';
+import FormButton from '@client/components/form/button.vue';
+import FormInput from '@client/components/form/input.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormGroup from '@client/components/form/group.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/settings/email-notification.vue b/src/client/pages/settings/email-notification.vue
index de2cfd3912..5894b8475c 100644
--- a/src/client/pages/settings/email-notification.vue
+++ b/src/client/pages/settings/email-notification.vue
@@ -27,11 +27,11 @@
import { defineComponent } from 'vue';
import { faCog } from '@fortawesome/free-solid-svg-icons';
import { faBell, faEnvelope } from '@fortawesome/free-regular-svg-icons';
-import FormButton from '@/components/form/button.vue';
-import FormSwitch from '@/components/form/switch.vue';
-import FormBase from '@/components/form/base.vue';
-import FormGroup from '@/components/form/group.vue';
-import * as os from '@/os';
+import FormButton from '@client/components/form/button.vue';
+import FormSwitch from '@client/components/form/switch.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormGroup from '@client/components/form/group.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/settings/email.vue b/src/client/pages/settings/email.vue
index e334e23cbd..bd2e4634d1 100644
--- a/src/client/pages/settings/email.vue
+++ b/src/client/pages/settings/email.vue
@@ -24,12 +24,12 @@
import { defineComponent } from 'vue';
import { faCog, faExclamationTriangle, faCheck } from '@fortawesome/free-solid-svg-icons';
import { faBell, faEnvelope } from '@fortawesome/free-regular-svg-icons';
-import FormButton from '@/components/form/button.vue';
-import FormLink from '@/components/form/link.vue';
-import FormBase from '@/components/form/base.vue';
-import FormGroup from '@/components/form/group.vue';
-import FormSwitch from '@/components/form/switch.vue';
-import * as os from '@/os';
+import FormButton from '@client/components/form/button.vue';
+import FormLink from '@client/components/form/link.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormGroup from '@client/components/form/group.vue';
+import FormSwitch from '@client/components/form/switch.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/settings/experimental-features.vue b/src/client/pages/settings/experimental-features.vue
index 39f1683af5..1cbda219d7 100644
--- a/src/client/pages/settings/experimental-features.vue
+++ b/src/client/pages/settings/experimental-features.vue
@@ -7,14 +7,14 @@
<script lang="ts">
import { defineAsyncComponent, defineComponent } from 'vue';
import { faFlask } from '@fortawesome/free-solid-svg-icons';
-import FormSwitch from '@/components/form/switch.vue';
-import FormSelect from '@/components/form/select.vue';
-import FormLink from '@/components/form/link.vue';
-import FormBase from '@/components/form/base.vue';
-import FormGroup from '@/components/form/group.vue';
-import FormButton from '@/components/form/button.vue';
-import FormKeyValueView from '@/components/form/key-value-view.vue';
-import * as os from '@/os';
+import FormSwitch from '@client/components/form/switch.vue';
+import FormSelect from '@client/components/form/select.vue';
+import FormLink from '@client/components/form/link.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormGroup from '@client/components/form/group.vue';
+import FormButton from '@client/components/form/button.vue';
+import FormKeyValueView from '@client/components/form/key-value-view.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/settings/general.vue b/src/client/pages/settings/general.vue
index 90ff3e2c20..6612fc0ca2 100644
--- a/src/client/pages/settings/general.vue
+++ b/src/client/pages/settings/general.vue
@@ -85,19 +85,19 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faImage, faCog, faColumns, faCogs } from '@fortawesome/free-solid-svg-icons';
-import FormSwitch from '@/components/form/switch.vue';
-import FormSelect from '@/components/form/select.vue';
-import FormRadios from '@/components/form/radios.vue';
-import FormBase from '@/components/form/base.vue';
-import FormGroup from '@/components/form/group.vue';
-import FormLink from '@/components/form/link.vue';
-import FormButton from '@/components/form/button.vue';
-import MkLink from '@/components/link.vue';
-import { langs } from '@/config';
-import { defaultStore } from '@/store';
-import { ColdDeviceStorage } from '@/store';
-import * as os from '@/os';
-import { unisonReload } from '@/scripts/unison-reload';
+import FormSwitch from '@client/components/form/switch.vue';
+import FormSelect from '@client/components/form/select.vue';
+import FormRadios from '@client/components/form/radios.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormGroup from '@client/components/form/group.vue';
+import FormLink from '@client/components/form/link.vue';
+import FormButton from '@client/components/form/button.vue';
+import MkLink from '@client/components/link.vue';
+import { langs } from '@client/config';
+import { defaultStore } from '@client/store';
+import { ColdDeviceStorage } from '@client/store';
+import * as os from '@client/os';
+import { unisonReload } from '@client/scripts/unison-reload';
export default defineComponent({
components: {
diff --git a/src/client/pages/settings/import-export.vue b/src/client/pages/settings/import-export.vue
index 2e384bb764..2f80ef0c6d 100644
--- a/src/client/pages/settings/import-export.vue
+++ b/src/client/pages/settings/import-export.vue
@@ -28,12 +28,12 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faDownload, faUpload, faBoxes } from '@fortawesome/free-solid-svg-icons';
-import FormSelect from '@/components/form/select.vue';
-import FormButton from '@/components/form/button.vue';
-import FormBase from '@/components/form/base.vue';
-import FormGroup from '@/components/form/group.vue';
-import * as os from '@/os';
-import { selectFile } from '@/scripts/select-file';
+import FormSelect from '@client/components/form/select.vue';
+import FormButton from '@client/components/form/button.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormGroup from '@client/components/form/group.vue';
+import * as os from '@client/os';
+import { selectFile } from '@client/scripts/select-file';
export default defineComponent({
components: {
diff --git a/src/client/pages/settings/index.vue b/src/client/pages/settings/index.vue
index 1b4aa70eca..3000356713 100644
--- a/src/client/pages/settings/index.vue
+++ b/src/client/pages/settings/index.vue
@@ -45,14 +45,14 @@
import { computed, defineAsyncComponent, defineComponent, nextTick, onMounted, reactive, ref, watch } from 'vue';
import { faCog, faPalette, faPlug, faUser, faListUl, faLock, faCommentSlash, faMusic, faCogs, faEllipsisH, faBan, faShareAlt, faLockOpen, faKey, faBoxes, faCloud } from '@fortawesome/free-solid-svg-icons';
import { faLaugh, faBell, faEnvelope } from '@fortawesome/free-regular-svg-icons';
-import { i18n } from '@/i18n';
-import FormLink from '@/components/form/link.vue';
-import FormGroup from '@/components/form/group.vue';
-import FormBase from '@/components/form/base.vue';
-import FormButton from '@/components/form/button.vue';
-import { scroll } from '@/scripts/scroll';
-import { signout } from '@/account';
-import { unisonReload } from '@/scripts/unison-reload';
+import { i18n } from '@client/i18n';
+import FormLink from '@client/components/form/link.vue';
+import FormGroup from '@client/components/form/group.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormButton from '@client/components/form/button.vue';
+import { scroll } from '@client/scripts/scroll';
+import { signout } from '@client/account';
+import { unisonReload } from '@client/scripts/unison-reload';
export default defineComponent({
components: {
diff --git a/src/client/pages/settings/integration.vue b/src/client/pages/settings/integration.vue
index 2e4d186bc4..e2ab11841e 100644
--- a/src/client/pages/settings/integration.vue
+++ b/src/client/pages/settings/integration.vue
@@ -33,10 +33,10 @@
import { defineComponent } from 'vue';
import { faShareAlt } from '@fortawesome/free-solid-svg-icons';
import { faTwitter, faDiscord, faGithub } from '@fortawesome/free-brands-svg-icons';
-import { apiUrl } from '@/config';
-import FormBase from '@/components/form/base.vue';
-import MkButton from '@/components/ui/button.vue';
-import * as os from '@/os';
+import { apiUrl } from '@client/config';
+import FormBase from '@client/components/form/base.vue';
+import MkButton from '@client/components/ui/button.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/settings/mute-block.vue b/src/client/pages/settings/mute-block.vue
index fc735cae10..f7eebbb9cc 100644
--- a/src/client/pages/settings/mute-block.vue
+++ b/src/client/pages/settings/mute-block.vue
@@ -34,14 +34,14 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faBan } from '@fortawesome/free-solid-svg-icons';
-import MkPagination from '@/components/ui/pagination.vue';
-import MkTab from '@/components/tab.vue';
-import MkInfo from '@/components/ui/info.vue';
-import FormLink from '@/components/form/link.vue';
-import FormBase from '@/components/form/base.vue';
-import FormGroup from '@/components/form/group.vue';
-import { userPage } from '@/filters/user';
-import * as os from '@/os';
+import MkPagination from '@client/components/ui/pagination.vue';
+import MkTab from '@client/components/tab.vue';
+import MkInfo from '@client/components/ui/info.vue';
+import FormLink from '@client/components/form/link.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormGroup from '@client/components/form/group.vue';
+import { userPage } from '@client/filters/user';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/settings/notifications.vue b/src/client/pages/settings/notifications.vue
index c3b7ecae11..b26c2805ad 100644
--- a/src/client/pages/settings/notifications.vue
+++ b/src/client/pages/settings/notifications.vue
@@ -13,12 +13,12 @@
import { defineComponent } from 'vue';
import { faCog } from '@fortawesome/free-solid-svg-icons';
import { faBell } from '@fortawesome/free-regular-svg-icons';
-import FormButton from '@/components/form/button.vue';
-import FormLink from '@/components/form/link.vue';
-import FormBase from '@/components/form/base.vue';
-import FormGroup from '@/components/form/group.vue';
+import FormButton from '@client/components/form/button.vue';
+import FormLink from '@client/components/form/link.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormGroup from '@client/components/form/group.vue';
import { notificationTypes } from '../../../types';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
components: {
@@ -59,7 +59,7 @@ export default defineComponent({
configure() {
const includingTypes = notificationTypes.filter(x => !this.$i.mutingNotificationTypes.includes(x));
- os.popup(import('@/components/notification-setting-window.vue'), {
+ os.popup(import('@client/components/notification-setting-window.vue'), {
includingTypes,
showGlobalToggle: false,
}, {
diff --git a/src/client/pages/settings/other.vue b/src/client/pages/settings/other.vue
index a14e101328..e5cfc5ee1e 100644
--- a/src/client/pages/settings/other.vue
+++ b/src/client/pages/settings/other.vue
@@ -33,17 +33,17 @@
<script lang="ts">
import { defineAsyncComponent, defineComponent } from 'vue';
import { faEllipsisH, faCogs, faDoorOpen } from '@fortawesome/free-solid-svg-icons';
-import FormSwitch from '@/components/form/switch.vue';
-import FormSelect from '@/components/form/select.vue';
-import FormLink from '@/components/form/link.vue';
-import FormBase from '@/components/form/base.vue';
-import FormGroup from '@/components/form/group.vue';
-import FormButton from '@/components/form/button.vue';
-import * as os from '@/os';
-import { debug } from '@/config';
-import { defaultStore } from '@/store';
-import { signout } from '@/account';
-import { unisonReload } from '@/scripts/unison-reload';
+import FormSwitch from '@client/components/form/switch.vue';
+import FormSelect from '@client/components/form/select.vue';
+import FormLink from '@client/components/form/link.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormGroup from '@client/components/form/group.vue';
+import FormButton from '@client/components/form/button.vue';
+import * as os from '@client/os';
+import { debug } from '@client/config';
+import { defaultStore } from '@client/store';
+import { signout } from '@client/account';
+import { unisonReload } from '@client/scripts/unison-reload';
export default defineComponent({
components: {
@@ -90,7 +90,7 @@ export default defineComponent({
},
taskmanager() {
- os.popup(import('@/components/taskmanager.vue'), {
+ os.popup(import('@client/components/taskmanager.vue'), {
}, {}, 'closed');
},
diff --git a/src/client/pages/settings/plugin.install.vue b/src/client/pages/settings/plugin.install.vue
index 0f6393f73c..70c302b36e 100644
--- a/src/client/pages/settings/plugin.install.vue
+++ b/src/client/pages/settings/plugin.install.vue
@@ -18,17 +18,17 @@ import { faPalette, faDownload, faFolderOpen, faCheck, faTrashAlt, faEye } from
import { AiScript, parse } from '@syuilo/aiscript';
import { serialize } from '@syuilo/aiscript/built/serializer';
import { v4 as uuid } from 'uuid';
-import FormTextarea from '@/components/form/textarea.vue';
-import FormSelect from '@/components/form/select.vue';
-import FormRadios from '@/components/form/radios.vue';
-import FormBase from '@/components/form/base.vue';
-import FormGroup from '@/components/form/group.vue';
-import FormLink from '@/components/form/link.vue';
-import FormButton from '@/components/form/button.vue';
-import MkInfo from '@/components/ui/info.vue';
-import * as os from '@/os';
-import { ColdDeviceStorage } from '@/store';
-import { unisonReload } from '@/scripts/unison-reload';
+import FormTextarea from '@client/components/form/textarea.vue';
+import FormSelect from '@client/components/form/select.vue';
+import FormRadios from '@client/components/form/radios.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormGroup from '@client/components/form/group.vue';
+import FormLink from '@client/components/form/link.vue';
+import FormButton from '@client/components/form/button.vue';
+import MkInfo from '@client/components/ui/info.vue';
+import * as os from '@client/os';
+import { ColdDeviceStorage } from '@client/store';
+import { unisonReload } from '@client/scripts/unison-reload';
export default defineComponent({
components: {
@@ -108,7 +108,7 @@ export default defineComponent({
}
const token = permissions == null || permissions.length === 0 ? null : await new Promise((res, rej) => {
- os.popup(import('@/components/token-generate-window.vue'), {
+ os.popup(import('@client/components/token-generate-window.vue'), {
title: this.$ts.tokenRequested,
information: this.$ts.pluginTokenRequestedDescription,
initialName: name,
diff --git a/src/client/pages/settings/plugin.manage.vue b/src/client/pages/settings/plugin.manage.vue
index 5fd93d8b72..0bc04493a7 100644
--- a/src/client/pages/settings/plugin.manage.vue
+++ b/src/client/pages/settings/plugin.manage.vue
@@ -33,15 +33,15 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faPlug, faSave, faTrashAlt, faFolderOpen, faDownload, faCog } from '@fortawesome/free-solid-svg-icons';
-import MkButton from '@/components/ui/button.vue';
-import MkTextarea from '@/components/ui/textarea.vue';
-import MkSelect from '@/components/ui/select.vue';
-import MkInfo from '@/components/ui/info.vue';
-import FormSwitch from '@/components/form/switch.vue';
-import FormBase from '@/components/form/base.vue';
-import FormGroup from '@/components/form/group.vue';
-import * as os from '@/os';
-import { ColdDeviceStorage } from '@/store';
+import MkButton from '@client/components/ui/button.vue';
+import MkTextarea from '@client/components/ui/textarea.vue';
+import MkSelect from '@client/components/ui/select.vue';
+import MkInfo from '@client/components/ui/info.vue';
+import FormSwitch from '@client/components/form/switch.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormGroup from '@client/components/form/group.vue';
+import * as os from '@client/os';
+import { ColdDeviceStorage } from '@client/store';
export default defineComponent({
components: {
diff --git a/src/client/pages/settings/plugin.vue b/src/client/pages/settings/plugin.vue
index fecb99bfe1..b101420d0d 100644
--- a/src/client/pages/settings/plugin.vue
+++ b/src/client/pages/settings/plugin.vue
@@ -8,11 +8,11 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faPlug, faSave, faTrashAlt, faFolderOpen, faDownload, faCog } from '@fortawesome/free-solid-svg-icons';
-import FormBase from '@/components/form/base.vue';
-import FormGroup from '@/components/form/group.vue';
-import FormLink from '@/components/form/link.vue';
-import * as os from '@/os';
-import { ColdDeviceStorage } from '@/store';
+import FormBase from '@client/components/form/base.vue';
+import FormGroup from '@client/components/form/group.vue';
+import FormLink from '@client/components/form/link.vue';
+import * as os from '@client/os';
+import { ColdDeviceStorage } from '@client/store';
export default defineComponent({
components: {
diff --git a/src/client/pages/settings/privacy.vue b/src/client/pages/settings/privacy.vue
index 9c5fb0850c..f58faab0b5 100644
--- a/src/client/pages/settings/privacy.vue
+++ b/src/client/pages/settings/privacy.vue
@@ -30,12 +30,12 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faLockOpen } from '@fortawesome/free-solid-svg-icons';
-import FormSwitch from '@/components/form/switch.vue';
-import FormSelect from '@/components/form/select.vue';
-import FormBase from '@/components/form/base.vue';
-import FormGroup from '@/components/form/group.vue';
-import * as os from '@/os';
-import { defaultStore } from '@/store';
+import FormSwitch from '@client/components/form/switch.vue';
+import FormSelect from '@client/components/form/select.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormGroup from '@client/components/form/group.vue';
+import * as os from '@client/os';
+import { defaultStore } from '@client/store';
export default defineComponent({
components: {
diff --git a/src/client/pages/settings/profile.vue b/src/client/pages/settings/profile.vue
index e9bffc3b00..61f0a8e198 100644
--- a/src/client/pages/settings/profile.vue
+++ b/src/client/pages/settings/profile.vue
@@ -49,16 +49,16 @@
import { defineComponent } from 'vue';
import { faUnlockAlt, faCogs, faUser, faMapMarkerAlt, faBirthdayCake } from '@fortawesome/free-solid-svg-icons';
import { faSave } from '@fortawesome/free-regular-svg-icons';
-import FormButton from '@/components/form/button.vue';
-import FormInput from '@/components/form/input.vue';
-import FormTextarea from '@/components/form/textarea.vue';
-import FormSwitch from '@/components/form/switch.vue';
-import FormSelect from '@/components/form/select.vue';
-import FormBase from '@/components/form/base.vue';
-import FormGroup from '@/components/form/group.vue';
-import { host, langs } from '@/config';
-import { selectFile } from '@/scripts/select-file';
-import * as os from '@/os';
+import FormButton from '@client/components/form/button.vue';
+import FormInput from '@client/components/form/input.vue';
+import FormTextarea from '@client/components/form/textarea.vue';
+import FormSwitch from '@client/components/form/switch.vue';
+import FormSelect from '@client/components/form/select.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormGroup from '@client/components/form/group.vue';
+import { host, langs } from '@client/config';
+import { selectFile } from '@client/scripts/select-file';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/settings/reaction.vue b/src/client/pages/settings/reaction.vue
index 4488e50051..170f8c9a0a 100644
--- a/src/client/pages/settings/reaction.vue
+++ b/src/client/pages/settings/reaction.vue
@@ -39,12 +39,12 @@ import { defineComponent } from 'vue';
import { faLaugh, faSave, faEye } from '@fortawesome/free-regular-svg-icons';
import { faUndo, faPlus } from '@fortawesome/free-solid-svg-icons';
import XDraggable from 'vuedraggable';
-import FormInput from '@/components/form/input.vue';
-import FormRadios from '@/components/form/radios.vue';
-import FormBase from '@/components/form/base.vue';
-import FormButton from '@/components/form/button.vue';
-import * as os from '@/os';
-import { defaultStore } from '@/store';
+import FormInput from '@client/components/form/input.vue';
+import FormRadios from '@client/components/form/radios.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormButton from '@client/components/form/button.vue';
+import * as os from '@client/os';
+import { defaultStore } from '@client/store';
export default defineComponent({
components: {
@@ -105,7 +105,7 @@ export default defineComponent({
},
preview(ev) {
- os.popup(import('@/components/emoji-picker-dialog.vue'), {
+ os.popup(import('@client/components/emoji-picker-dialog.vue'), {
asReactionPicker: true,
src: ev.currentTarget || ev.target,
}, {}, 'closed');
diff --git a/src/client/pages/settings/registry.keys.vue b/src/client/pages/settings/registry.keys.vue
index c7a90fb461..243672000b 100644
--- a/src/client/pages/settings/registry.keys.vue
+++ b/src/client/pages/settings/registry.keys.vue
@@ -24,15 +24,15 @@
import { defineAsyncComponent, defineComponent } from 'vue';
import { faCogs } from '@fortawesome/free-solid-svg-icons';
import * as JSON5 from 'json5';
-import MkInfo from '@/components/ui/info.vue';
-import FormSwitch from '@/components/form/switch.vue';
-import FormSelect from '@/components/form/select.vue';
-import FormLink from '@/components/form/link.vue';
-import FormBase from '@/components/form/base.vue';
-import FormGroup from '@/components/form/group.vue';
-import FormButton from '@/components/form/button.vue';
-import FormKeyValueView from '@/components/form/key-value-view.vue';
-import * as os from '@/os';
+import MkInfo from '@client/components/ui/info.vue';
+import FormSwitch from '@client/components/form/switch.vue';
+import FormSelect from '@client/components/form/select.vue';
+import FormLink from '@client/components/form/link.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormGroup from '@client/components/form/group.vue';
+import FormButton from '@client/components/form/button.vue';
+import FormKeyValueView from '@client/components/form/key-value-view.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/settings/registry.value.vue b/src/client/pages/settings/registry.value.vue
index 943ededd21..e760e4b1e5 100644
--- a/src/client/pages/settings/registry.value.vue
+++ b/src/client/pages/settings/registry.value.vue
@@ -39,15 +39,15 @@
import { defineAsyncComponent, defineComponent } from 'vue';
import { faCogs, faSave, faTrash } from '@fortawesome/free-solid-svg-icons';
import * as JSON5 from 'json5';
-import MkInfo from '@/components/ui/info.vue';
-import FormSwitch from '@/components/form/switch.vue';
-import FormSelect from '@/components/form/select.vue';
-import FormTextarea from '@/components/form/textarea.vue';
-import FormBase from '@/components/form/base.vue';
-import FormGroup from '@/components/form/group.vue';
-import FormButton from '@/components/form/button.vue';
-import FormKeyValueView from '@/components/form/key-value-view.vue';
-import * as os from '@/os';
+import MkInfo from '@client/components/ui/info.vue';
+import FormSwitch from '@client/components/form/switch.vue';
+import FormSelect from '@client/components/form/select.vue';
+import FormTextarea from '@client/components/form/textarea.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormGroup from '@client/components/form/group.vue';
+import FormButton from '@client/components/form/button.vue';
+import FormKeyValueView from '@client/components/form/key-value-view.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/settings/registry.vue b/src/client/pages/settings/registry.vue
index a43c98e730..5e061f95f8 100644
--- a/src/client/pages/settings/registry.vue
+++ b/src/client/pages/settings/registry.vue
@@ -12,15 +12,15 @@
import { defineAsyncComponent, defineComponent } from 'vue';
import { faCogs } from '@fortawesome/free-solid-svg-icons';
import * as JSON5 from 'json5';
-import MkInfo from '@/components/ui/info.vue';
-import FormSwitch from '@/components/form/switch.vue';
-import FormSelect from '@/components/form/select.vue';
-import FormLink from '@/components/form/link.vue';
-import FormBase from '@/components/form/base.vue';
-import FormGroup from '@/components/form/group.vue';
-import FormButton from '@/components/form/button.vue';
-import FormKeyValueView from '@/components/form/key-value-view.vue';
-import * as os from '@/os';
+import MkInfo from '@client/components/ui/info.vue';
+import FormSwitch from '@client/components/form/switch.vue';
+import FormSelect from '@client/components/form/select.vue';
+import FormLink from '@client/components/form/link.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormGroup from '@client/components/form/group.vue';
+import FormButton from '@client/components/form/button.vue';
+import FormKeyValueView from '@client/components/form/key-value-view.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/settings/security.vue b/src/client/pages/settings/security.vue
index cdb5705c0b..7d6aaa652f 100644
--- a/src/client/pages/settings/security.vue
+++ b/src/client/pages/settings/security.vue
@@ -26,12 +26,12 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faCheck, faTimesCircle, faLock, faSyncAlt, faMobileAlt } from '@fortawesome/free-solid-svg-icons';
-import FormBase from '@/components/form/base.vue';
-import FormLink from '@/components/form/link.vue';
-import FormGroup from '@/components/form/group.vue';
-import FormButton from '@/components/form/button.vue';
-import FormPagination from '@/components/form/pagination.vue';
-import * as os from '@/os';
+import FormBase from '@client/components/form/base.vue';
+import FormLink from '@client/components/form/link.vue';
+import FormGroup from '@client/components/form/group.vue';
+import FormButton from '@client/components/form/button.vue';
+import FormPagination from '@client/components/form/pagination.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/settings/sidebar.vue b/src/client/pages/settings/sidebar.vue
index 51f2ba17e1..bbb1b43afb 100644
--- a/src/client/pages/settings/sidebar.vue
+++ b/src/client/pages/settings/sidebar.vue
@@ -20,15 +20,15 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faListUl, faSave, faRedo } from '@fortawesome/free-solid-svg-icons';
-import FormSwitch from '@/components/form/switch.vue';
-import FormTextarea from '@/components/form/textarea.vue';
-import FormRadios from '@/components/form/radios.vue';
-import FormBase from '@/components/form/base.vue';
-import FormGroup from '@/components/form/group.vue';
-import FormButton from '@/components/form/button.vue';
-import * as os from '@/os';
-import { sidebarDef } from '@/sidebar';
-import { defaultStore } from '@/store';
+import FormSwitch from '@client/components/form/switch.vue';
+import FormTextarea from '@client/components/form/textarea.vue';
+import FormRadios from '@client/components/form/radios.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormGroup from '@client/components/form/group.vue';
+import FormButton from '@client/components/form/button.vue';
+import * as os from '@client/os';
+import { sidebarDef } from '@client/sidebar';
+import { defaultStore } from '@client/store';
export default defineComponent({
components: {
diff --git a/src/client/pages/settings/sounds.vue b/src/client/pages/settings/sounds.vue
index c53968da4b..8305744109 100644
--- a/src/client/pages/settings/sounds.vue
+++ b/src/client/pages/settings/sounds.vue
@@ -20,14 +20,14 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faMusic, faPlay, faVolumeUp, faVolumeMute, faChevronDown, faRedo } from '@fortawesome/free-solid-svg-icons';
-import FormRange from '@/components/form/range.vue';
-import FormSelect from '@/components/form/select.vue';
-import FormBase from '@/components/form/base.vue';
-import FormButton from '@/components/form/button.vue';
-import FormGroup from '@/components/form/group.vue';
-import * as os from '@/os';
-import { ColdDeviceStorage } from '@/store';
-import { playFile } from '@/scripts/sound';
+import FormRange from '@client/components/form/range.vue';
+import FormSelect from '@client/components/form/select.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormButton from '@client/components/form/button.vue';
+import FormGroup from '@client/components/form/group.vue';
+import * as os from '@client/os';
+import { ColdDeviceStorage } from '@client/store';
+import { playFile } from '@client/scripts/sound';
const soundsTypes = [
null,
diff --git a/src/client/pages/settings/theme.install.vue b/src/client/pages/settings/theme.install.vue
index 852d39f78b..6184383657 100644
--- a/src/client/pages/settings/theme.install.vue
+++ b/src/client/pages/settings/theme.install.vue
@@ -15,17 +15,17 @@
import { defineComponent } from 'vue';
import { faPalette, faDownload, faFolderOpen, faCheck, faTrashAlt, faEye } from '@fortawesome/free-solid-svg-icons';
import * as JSON5 from 'json5';
-import FormTextarea from '@/components/form/textarea.vue';
-import FormSelect from '@/components/form/select.vue';
-import FormRadios from '@/components/form/radios.vue';
-import FormBase from '@/components/form/base.vue';
-import FormGroup from '@/components/form/group.vue';
-import FormLink from '@/components/form/link.vue';
-import FormButton from '@/components/form/button.vue';
-import { applyTheme, validateTheme } from '@/scripts/theme';
-import * as os from '@/os';
-import { ColdDeviceStorage } from '@/store';
-import { addTheme, getThemes } from '@/theme-store';
+import FormTextarea from '@client/components/form/textarea.vue';
+import FormSelect from '@client/components/form/select.vue';
+import FormRadios from '@client/components/form/radios.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormGroup from '@client/components/form/group.vue';
+import FormLink from '@client/components/form/link.vue';
+import FormButton from '@client/components/form/button.vue';
+import { applyTheme, validateTheme } from '@client/scripts/theme';
+import * as os from '@client/os';
+import { ColdDeviceStorage } from '@client/store';
+import { addTheme, getThemes } from '@client/theme-store';
export default defineComponent({
components: {
diff --git a/src/client/pages/settings/theme.manage.vue b/src/client/pages/settings/theme.manage.vue
index f08c354718..da7bb27030 100644
--- a/src/client/pages/settings/theme.manage.vue
+++ b/src/client/pages/settings/theme.manage.vue
@@ -26,18 +26,18 @@
import { defineComponent } from 'vue';
import { faPalette, faDownload, faFolderOpen, faCheck, faTrashAlt, faEye } from '@fortawesome/free-solid-svg-icons';
import * as JSON5 from 'json5';
-import FormTextarea from '@/components/form/textarea.vue';
-import FormSelect from '@/components/form/select.vue';
-import FormRadios from '@/components/form/radios.vue';
-import FormBase from '@/components/form/base.vue';
-import FormGroup from '@/components/form/group.vue';
-import FormInput from '@/components/form/input.vue';
-import FormButton from '@/components/form/button.vue';
-import { Theme, builtinThemes } from '@/scripts/theme';
-import copyToClipboard from '@/scripts/copy-to-clipboard';
-import * as os from '@/os';
-import { ColdDeviceStorage } from '@/store';
-import { getThemes, removeTheme } from '@/theme-store';
+import FormTextarea from '@client/components/form/textarea.vue';
+import FormSelect from '@client/components/form/select.vue';
+import FormRadios from '@client/components/form/radios.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormGroup from '@client/components/form/group.vue';
+import FormInput from '@client/components/form/input.vue';
+import FormButton from '@client/components/form/button.vue';
+import { Theme, builtinThemes } from '@client/scripts/theme';
+import copyToClipboard from '@client/scripts/copy-to-clipboard';
+import * as os from '@client/os';
+import { ColdDeviceStorage } from '@client/store';
+import { getThemes, removeTheme } from '@client/theme-store';
export default defineComponent({
components: {
diff --git a/src/client/pages/settings/theme.vue b/src/client/pages/settings/theme.vue
index ac57c51df4..14cdb533ac 100644
--- a/src/client/pages/settings/theme.vue
+++ b/src/client/pages/settings/theme.vue
@@ -65,19 +65,19 @@
<script lang="ts">
import { computed, defineComponent, onMounted, ref, watch } from 'vue';
import { faPalette, faDownload, faFolderOpen, faCheck, faTrashAlt, faEye, faGlobe, faPaintRoller } from '@fortawesome/free-solid-svg-icons';
-import FormSwitch from '@/components/form/switch.vue';
-import FormSelect from '@/components/form/select.vue';
-import FormBase from '@/components/form/base.vue';
-import FormGroup from '@/components/form/group.vue';
-import FormLink from '@/components/form/link.vue';
-import FormButton from '@/components/form/button.vue';
-import { builtinThemes, applyTheme } from '@/scripts/theme';
-import { selectFile } from '@/scripts/select-file';
-import { isDeviceDarkmode } from '@/scripts/is-device-darkmode';
-import { ColdDeviceStorage } from '@/store';
-import { i18n } from '@/i18n';
-import { defaultStore } from '@/store';
-import { fetchThemes, getThemes } from '@/theme-store';
+import FormSwitch from '@client/components/form/switch.vue';
+import FormSelect from '@client/components/form/select.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormGroup from '@client/components/form/group.vue';
+import FormLink from '@client/components/form/link.vue';
+import FormButton from '@client/components/form/button.vue';
+import { builtinThemes, applyTheme } from '@client/scripts/theme';
+import { selectFile } from '@client/scripts/select-file';
+import { isDeviceDarkmode } from '@client/scripts/is-device-darkmode';
+import { ColdDeviceStorage } from '@client/store';
+import { i18n } from '@client/i18n';
+import { defaultStore } from '@client/store';
+import { fetchThemes, getThemes } from '@client/theme-store';
export default defineComponent({
components: {
diff --git a/src/client/pages/settings/update.vue b/src/client/pages/settings/update.vue
index d172ceb10a..a8da8bf11c 100644
--- a/src/client/pages/settings/update.vue
+++ b/src/client/pages/settings/update.vue
@@ -31,16 +31,16 @@
<script lang="ts">
import { defineAsyncComponent, defineComponent } from 'vue';
import { faInfoCircle, faSyncAlt } from '@fortawesome/free-solid-svg-icons';
-import FormSwitch from '@/components/form/switch.vue';
-import FormSelect from '@/components/form/select.vue';
-import FormLink from '@/components/form/link.vue';
-import FormBase from '@/components/form/base.vue';
-import FormGroup from '@/components/form/group.vue';
-import FormButton from '@/components/form/button.vue';
-import FormKeyValueView from '@/components/form/key-value-view.vue';
-import MkInfo from '@/components/ui/info.vue';
-import * as os from '@/os';
-import { version, instanceName } from '@/config';
+import FormSwitch from '@client/components/form/switch.vue';
+import FormSelect from '@client/components/form/select.vue';
+import FormLink from '@client/components/form/link.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormGroup from '@client/components/form/group.vue';
+import FormButton from '@client/components/form/button.vue';
+import FormKeyValueView from '@client/components/form/key-value-view.vue';
+import MkInfo from '@client/components/ui/info.vue';
+import * as os from '@client/os';
+import { version, instanceName } from '@client/config';
export default defineComponent({
components: {
diff --git a/src/client/pages/settings/word-mute.vue b/src/client/pages/settings/word-mute.vue
index 38dbc2c629..26cc7a3d85 100644
--- a/src/client/pages/settings/word-mute.vue
+++ b/src/client/pages/settings/word-mute.vue
@@ -33,14 +33,14 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faCommentSlash, faSave } from '@fortawesome/free-solid-svg-icons';
-import FormTextarea from '@/components/form/textarea.vue';
-import FormBase from '@/components/form/base.vue';
-import FormKeyValueView from '@/components/form/key-value-view.vue';
-import FormButton from '@/components/form/button.vue';
-import MkTab from '@/components/tab.vue';
-import MkInfo from '@/components/ui/info.vue';
-import * as os from '@/os';
-import number from '@/filters/number';
+import FormTextarea from '@client/components/form/textarea.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormKeyValueView from '@client/components/form/key-value-view.vue';
+import FormButton from '@client/components/form/button.vue';
+import MkTab from '@client/components/tab.vue';
+import MkInfo from '@client/components/ui/info.vue';
+import * as os from '@client/os';
+import number from '@client/filters/number';
export default defineComponent({
components: {
diff --git a/src/client/pages/share.vue b/src/client/pages/share.vue
index 7912e5421f..41ce4d21f7 100644
--- a/src/client/pages/share.vue
+++ b/src/client/pages/share.vue
@@ -14,9 +14,9 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faShareAlt } from '@fortawesome/free-solid-svg-icons';
-import MkButton from '@/components/ui/button.vue';
-import XPostForm from '@/components/post-form.vue';
-import * as os from '@/os';
+import MkButton from '@client/components/ui/button.vue';
+import XPostForm from '@client/components/post-form.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/tag.vue b/src/client/pages/tag.vue
index 910e7cd028..7561eba2ed 100644
--- a/src/client/pages/tag.vue
+++ b/src/client/pages/tag.vue
@@ -7,8 +7,8 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faHashtag } from '@fortawesome/free-solid-svg-icons';
-import Progress from '@/scripts/loading';
-import XNotes from '@/components/notes.vue';
+import Progress from '@client/scripts/loading';
+import XNotes from '@client/components/notes.vue';
export default defineComponent({
components: {
diff --git a/src/client/pages/test.vue b/src/client/pages/test.vue
index 2f890e78a6..af8395b2c3 100644
--- a/src/client/pages/test.vue
+++ b/src/client/pages/test.vue
@@ -133,12 +133,12 @@
<script lang="ts">
import { defineComponent, defineAsyncComponent } from 'vue';
import { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons';
-import MkButton from '@/components/ui/button.vue';
-import MkInput from '@/components/ui/input.vue';
-import MkSwitch from '@/components/ui/switch.vue';
-import MkTextarea from '@/components/ui/textarea.vue';
-import MkRadio from '@/components/ui/radio.vue';
-import * as os from '@/os';
+import MkButton from '@client/components/ui/button.vue';
+import MkInput from '@client/components/ui/input.vue';
+import MkSwitch from '@client/components/ui/switch.vue';
+import MkTextarea from '@client/components/ui/textarea.vue';
+import MkRadio from '@client/components/ui/radio.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/theme-editor.vue b/src/client/pages/theme-editor.vue
index 2bf0a4383e..5ee0a704b0 100644
--- a/src/client/pages/theme-editor.vue
+++ b/src/client/pages/theme-editor.vue
@@ -57,16 +57,16 @@ import * as tinycolor from 'tinycolor2';
import { v4 as uuid} from 'uuid';
import * as JSON5 from 'json5';
-import FormBase from '@/components/form/base.vue';
-import FormButton from '@/components/form/button.vue';
-import FormTextarea from '@/components/form/textarea.vue';
-import FormGroup from '@/components/form/group.vue';
+import FormBase from '@client/components/form/base.vue';
+import FormButton from '@client/components/form/button.vue';
+import FormTextarea from '@client/components/form/textarea.vue';
+import FormGroup from '@client/components/form/group.vue';
-import { Theme, applyTheme, validateTheme, darkTheme, lightTheme } from '@/scripts/theme';
-import { host } from '@/config';
-import * as os from '@/os';
-import { ColdDeviceStorage } from '@/store';
-import { addTheme } from '@/theme-store';
+import { Theme, applyTheme, validateTheme, darkTheme, lightTheme } from '@client/scripts/theme';
+import { host } from '@client/config';
+import * as os from '@client/os';
+import { ColdDeviceStorage } from '@client/store';
+import { addTheme } from '@client/theme-store';
export default defineComponent({
components: {
diff --git a/src/client/pages/timeline.tutorial.vue b/src/client/pages/timeline.tutorial.vue
index 203527ef0a..bcbf16acc7 100644
--- a/src/client/pages/timeline.tutorial.vue
+++ b/src/client/pages/timeline.tutorial.vue
@@ -68,7 +68,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faInfoCircle, faChevronLeft, faChevronRight, faCheck } from '@fortawesome/free-solid-svg-icons'
-import MkButton from '@/components/ui/button.vue';
+import MkButton from '@client/components/ui/button.vue';
export default defineComponent({
components: {
diff --git a/src/client/pages/timeline.vue b/src/client/pages/timeline.vue
index cb3ec2a7ef..e0c0b2995a 100644
--- a/src/client/pages/timeline.vue
+++ b/src/client/pages/timeline.vue
@@ -41,11 +41,11 @@
import { defineComponent, defineAsyncComponent, computed } from 'vue';
import { faAngleDown, faAngleUp, faHome, faShareAlt, faGlobe, faListUl, faSatellite, faSatelliteDish, faCircle, faEllipsisH, faPencilAlt, faAt } from '@fortawesome/free-solid-svg-icons';
import { faComments, faEnvelope } from '@fortawesome/free-regular-svg-icons';
-import Progress from '@/scripts/loading';
-import XTimeline from '@/components/timeline.vue';
-import XPostForm from '@/components/post-form.vue';
-import { scroll } from '@/scripts/scroll';
-import * as os from '@/os';
+import Progress from '@client/scripts/loading';
+import XTimeline from '@client/components/timeline.vue';
+import XPostForm from '@client/components/post-form.vue';
+import { scroll } from '@client/scripts/scroll';
+import * as os from '@client/os';
export default defineComponent({
name: 'timeline',
diff --git a/src/client/pages/user/clips.vue b/src/client/pages/user/clips.vue
index 2a66b6752d..cf713d6daa 100644
--- a/src/client/pages/user/clips.vue
+++ b/src/client/pages/user/clips.vue
@@ -11,7 +11,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import MkPagination from '@/components/ui/pagination.vue';
+import MkPagination from '@client/components/ui/pagination.vue';
import { userPage, acct } from '../../filters/user';
export default defineComponent({
diff --git a/src/client/pages/user/follow-list.vue b/src/client/pages/user/follow-list.vue
index 90a67e9a8e..eef8409a06 100644
--- a/src/client/pages/user/follow-list.vue
+++ b/src/client/pages/user/follow-list.vue
@@ -10,8 +10,8 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import MkUserInfo from '@/components/user-info.vue';
-import MkPagination from '@/components/ui/pagination.vue';
+import MkUserInfo from '@client/components/user-info.vue';
+import MkPagination from '@client/components/ui/pagination.vue';
import { userPage, acct } from '../../filters/user';
export default defineComponent({
diff --git a/src/client/pages/user/index.activity.vue b/src/client/pages/user/index.activity.vue
index 838fbc223f..3eca1ab210 100644
--- a/src/client/pages/user/index.activity.vue
+++ b/src/client/pages/user/index.activity.vue
@@ -12,8 +12,8 @@
import { defineComponent } from 'vue';
import ApexCharts from 'apexcharts';
import { faChartBar } from '@fortawesome/free-solid-svg-icons';
-import * as os from '@/os';
-import MkContainer from '@/components/ui/container.vue';
+import * as os from '@client/os';
+import MkContainer from '@client/components/ui/container.vue';
export default defineComponent({
components: {
diff --git a/src/client/pages/user/index.photos.vue b/src/client/pages/user/index.photos.vue
index d0c6f19349..54796bccbc 100644
--- a/src/client/pages/user/index.photos.vue
+++ b/src/client/pages/user/index.photos.vue
@@ -18,10 +18,10 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faImage } from '@fortawesome/free-solid-svg-icons';
-import { getStaticImageUrl } from '@/scripts/get-static-image-url';
+import { getStaticImageUrl } from '@client/scripts/get-static-image-url';
import notePage from '../../filters/note';
-import * as os from '@/os';
-import MkContainer from '@/components/ui/container.vue';
+import * as os from '@client/os';
+import MkContainer from '@client/components/ui/container.vue';
export default defineComponent({
components: {
diff --git a/src/client/pages/user/index.timeline.vue b/src/client/pages/user/index.timeline.vue
index f16297e21f..8c824a2111 100644
--- a/src/client/pages/user/index.timeline.vue
+++ b/src/client/pages/user/index.timeline.vue
@@ -11,9 +11,9 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import XNotes from '@/components/notes.vue';
-import MkTab from '@/components/tab.vue';
-import * as os from '@/os';
+import XNotes from '@client/components/notes.vue';
+import MkTab from '@client/components/tab.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/user/index.vue b/src/client/pages/user/index.vue
index 5229db9ee3..5ca29a3e41 100644
--- a/src/client/pages/user/index.vue
+++ b/src/client/pages/user/index.vue
@@ -221,19 +221,19 @@ import { faExclamationTriangle, faEllipsisH, faRobot, faLock, faBookmark, faChar
import { faCalendarAlt, faBookmark as farBookmark, faCommentAlt } from '@fortawesome/free-regular-svg-icons';
import * as age from 's-age';
import XUserTimeline from './index.timeline.vue';
-import XNote from '@/components/note.vue';
-import MkFollowButton from '@/components/follow-button.vue';
-import MkContainer from '@/components/ui/container.vue';
-import MkFolder from '@/components/ui/folder.vue';
-import MkRemoteCaution from '@/components/remote-caution.vue';
-import MkTab from '@/components/tab.vue';
-import Progress from '@/scripts/loading';
-import parseAcct from '../../../misc/acct/parse';
-import { getScrollPosition } from '@/scripts/scroll';
-import { getUserMenu } from '@/scripts/get-user-menu';
+import XNote from '@client/components/note.vue';
+import MkFollowButton from '@client/components/follow-button.vue';
+import MkContainer from '@client/components/ui/container.vue';
+import MkFolder from '@client/components/ui/folder.vue';
+import MkRemoteCaution from '@client/components/remote-caution.vue';
+import MkTab from '@client/components/tab.vue';
+import Progress from '@client/scripts/loading';
+import parseAcct from '@/misc/acct/parse';
+import { getScrollPosition } from '@client/scripts/scroll';
+import { getUserMenu } from '@client/scripts/get-user-menu';
import number from '../../filters/number';
import { userPage, acct as getAcct } from '../../filters/user';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/user/pages.vue b/src/client/pages/user/pages.vue
index 66658ac57d..1d2e96b351 100644
--- a/src/client/pages/user/pages.vue
+++ b/src/client/pages/user/pages.vue
@@ -8,8 +8,8 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import MkPagePreview from '@/components/page-preview.vue';
-import MkPagination from '@/components/ui/pagination.vue';
+import MkPagePreview from '@client/components/page-preview.vue';
+import MkPagination from '@client/components/ui/pagination.vue';
import { userPage, acct } from '../../filters/user';
export default defineComponent({
diff --git a/src/client/pages/v.vue b/src/client/pages/v.vue
index f456a29993..a9deea24b4 100644
--- a/src/client/pages/v.vue
+++ b/src/client/pages/v.vue
@@ -13,7 +13,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faInfoCircle } from '@fortawesome/free-solid-svg-icons';
-import { version } from '@/config';
+import { version } from '@client/config';
export default defineComponent({
data() {
diff --git a/src/client/pages/welcome.entrance.a.vue b/src/client/pages/welcome.entrance.a.vue
index fa69c1a124..9a24f868b6 100644
--- a/src/client/pages/welcome.entrance.a.vue
+++ b/src/client/pages/welcome.entrance.a.vue
@@ -54,15 +54,15 @@
import { defineComponent } from 'vue';
import { faEllipsisH, faInfoCircle, faQuestionCircle } from '@fortawesome/free-solid-svg-icons';
import { toUnicode } from 'punycode';
-import XSigninDialog from '@/components/signin-dialog.vue';
-import XSignupDialog from '@/components/signup-dialog.vue';
-import MkButton from '@/components/ui/button.vue';
-import XNote from '@/components/note.vue';
-import MkFeaturedPhotos from '@/components/featured-photos.vue';
+import XSigninDialog from '@client/components/signin-dialog.vue';
+import XSignupDialog from '@client/components/signup-dialog.vue';
+import MkButton from '@client/components/ui/button.vue';
+import XNote from '@client/components/note.vue';
+import MkFeaturedPhotos from '@client/components/featured-photos.vue';
import XTimeline from './welcome.timeline.vue';
-import { host, instanceName } from '@/config';
-import * as os from '@/os';
-import number from '@/filters/number';
+import { host, instanceName } from '@client/config';
+import * as os from '@client/os';
+import number from '@client/filters/number';
export default defineComponent({
components: {
diff --git a/src/client/pages/welcome.entrance.b.vue b/src/client/pages/welcome.entrance.b.vue
index 203618f17e..6e93f17404 100644
--- a/src/client/pages/welcome.entrance.b.vue
+++ b/src/client/pages/welcome.entrance.b.vue
@@ -38,15 +38,15 @@
import { defineComponent } from 'vue';
import { faEllipsisH, faInfoCircle, faQuestionCircle } from '@fortawesome/free-solid-svg-icons';
import { toUnicode } from 'punycode';
-import XSigninDialog from '@/components/signin-dialog.vue';
-import XSignupDialog from '@/components/signup-dialog.vue';
-import MkButton from '@/components/ui/button.vue';
-import XNote from '@/components/note.vue';
-import MkFeaturedPhotos from '@/components/featured-photos.vue';
+import XSigninDialog from '@client/components/signin-dialog.vue';
+import XSignupDialog from '@client/components/signup-dialog.vue';
+import MkButton from '@client/components/ui/button.vue';
+import XNote from '@client/components/note.vue';
+import MkFeaturedPhotos from '@client/components/featured-photos.vue';
import XTimeline from './welcome.timeline.vue';
-import { host, instanceName } from '@/config';
-import * as os from '@/os';
-import number from '@/filters/number';
+import { host, instanceName } from '@client/config';
+import * as os from '@client/os';
+import number from '@client/filters/number';
export default defineComponent({
components: {
diff --git a/src/client/pages/welcome.entrance.c.vue b/src/client/pages/welcome.entrance.c.vue
index 4c98baf8ea..cefe239da9 100644
--- a/src/client/pages/welcome.entrance.c.vue
+++ b/src/client/pages/welcome.entrance.c.vue
@@ -58,15 +58,15 @@
import { defineComponent } from 'vue';
import { faEllipsisH, faInfoCircle, faQuestionCircle } from '@fortawesome/free-solid-svg-icons';
import { toUnicode } from 'punycode';
-import XSigninDialog from '@/components/signin-dialog.vue';
-import XSignupDialog from '@/components/signup-dialog.vue';
-import MkButton from '@/components/ui/button.vue';
-import XNote from '@/components/note.vue';
-import MkFeaturedPhotos from '@/components/featured-photos.vue';
+import XSigninDialog from '@client/components/signin-dialog.vue';
+import XSignupDialog from '@client/components/signup-dialog.vue';
+import MkButton from '@client/components/ui/button.vue';
+import XNote from '@client/components/note.vue';
+import MkFeaturedPhotos from '@client/components/featured-photos.vue';
import XTimeline from './welcome.timeline.vue';
-import { host, instanceName } from '@/config';
-import * as os from '@/os';
-import number from '@/filters/number';
+import { host, instanceName } from '@client/config';
+import * as os from '@client/os';
+import number from '@client/filters/number';
export default defineComponent({
components: {
diff --git a/src/client/pages/welcome.setup.vue b/src/client/pages/welcome.setup.vue
index bc994099ac..db64f6b194 100644
--- a/src/client/pages/welcome.setup.vue
+++ b/src/client/pages/welcome.setup.vue
@@ -22,11 +22,11 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faLock } from '@fortawesome/free-solid-svg-icons';
-import MkButton from '@/components/ui/button.vue';
-import MkInput from '@/components/ui/input.vue';
-import { host } from '@/config';
-import * as os from '@/os';
-import { login } from '@/account';
+import MkButton from '@client/components/ui/button.vue';
+import MkInput from '@client/components/ui/input.vue';
+import { host } from '@client/config';
+import * as os from '@client/os';
+import { login } from '@client/account';
export default defineComponent({
components: {
diff --git a/src/client/pages/welcome.timeline.vue b/src/client/pages/welcome.timeline.vue
index a498b578e2..12c8a4d4f4 100644
--- a/src/client/pages/welcome.timeline.vue
+++ b/src/client/pages/welcome.timeline.vue
@@ -11,8 +11,8 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import XReactionsViewer from '@/components/reactions-viewer.vue';
-import * as os from '@/os';
+import XReactionsViewer from '@client/components/reactions-viewer.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/pages/welcome.vue b/src/client/pages/welcome.vue
index 99560eea21..845a304854 100644
--- a/src/client/pages/welcome.vue
+++ b/src/client/pages/welcome.vue
@@ -9,8 +9,8 @@
import { defineComponent } from 'vue';
import XSetup from './welcome.setup.vue';
import XEntrance from './welcome.entrance.a.vue';
-import { instanceName } from '@/config';
-import * as os from '@/os';
+import { instanceName } from '@client/config';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/plugin.ts b/src/client/plugin.ts
index c56ee1eb25..6bdc4fe4d5 100644
--- a/src/client/plugin.ts
+++ b/src/client/plugin.ts
@@ -1,9 +1,9 @@
import { AiScript, utils, values } from '@syuilo/aiscript';
import { deserialize } from '@syuilo/aiscript/built/serializer';
import { jsToVal } from '@syuilo/aiscript/built/interpreter/util';
-import { createAiScriptEnv } from '@/scripts/aiscript/api';
-import { dialog } from '@/os';
-import { noteActions, notePostInterruptors, noteViewInterruptors, postFormActions, userActions } from '@/store';
+import { createAiScriptEnv } from '@client/scripts/aiscript/api';
+import { dialog } from '@client/os';
+import { noteActions, notePostInterruptors, noteViewInterruptors, postFormActions, userActions } from '@client/store';
const pluginContexts = new Map<string, AiScript>();
diff --git a/src/client/router.ts b/src/client/router.ts
index d3cfead258..53516db97b 100644
--- a/src/client/router.ts
+++ b/src/client/router.ts
@@ -1,8 +1,8 @@
import { defineAsyncComponent, markRaw } from 'vue';
import { createRouter, createWebHistory } from 'vue-router';
-import MkLoading from '@/pages/_loading_.vue';
-import MkError from '@/pages/_error_.vue';
-import MkTimeline from '@/pages/timeline.vue';
+import MkLoading from '@client/pages/_loading_.vue';
+import MkError from '@client/pages/_error_.vue';
+import MkTimeline from '@client/pages/timeline.vue';
import { $i } from './account';
const page = (path: string) => defineAsyncComponent({
diff --git a/src/client/scripts/aiscript/api.ts b/src/client/scripts/aiscript/api.ts
index 20c15d809e..5dd08f34ac 100644
--- a/src/client/scripts/aiscript/api.ts
+++ b/src/client/scripts/aiscript/api.ts
@@ -1,6 +1,6 @@
import { utils, values } from '@syuilo/aiscript';
-import * as os from '@/os';
-import { $i } from '@/account';
+import * as os from '@client/os';
+import { $i } from '@client/account';
export function createAiScriptEnv(opts) {
let apiRequests = 0;
diff --git a/src/client/scripts/autocomplete.ts b/src/client/scripts/autocomplete.ts
index 83ceece5df..eab893a386 100644
--- a/src/client/scripts/autocomplete.ts
+++ b/src/client/scripts/autocomplete.ts
@@ -1,7 +1,7 @@
import { Ref, ref } from 'vue';
import * as getCaretCoordinates from 'textarea-caret';
import { toASCII } from 'punycode';
-import { popup } from '@/os';
+import { popup } from '@client/os';
export class Autocomplete {
private suggestion: {
@@ -150,7 +150,7 @@ export class Autocomplete {
const _y = ref(y);
const _q = ref(q);
- const { dispose } = await popup(import('@/components/autocomplete.vue'), {
+ const { dispose } = await popup(import('@client/components/autocomplete.vue'), {
textarea: this.textarea,
close: this.close,
type: type,
diff --git a/src/client/scripts/gen-search-query.ts b/src/client/scripts/gen-search-query.ts
index 670d915104..a1db267123 100644
--- a/src/client/scripts/gen-search-query.ts
+++ b/src/client/scripts/gen-search-query.ts
@@ -1,5 +1,5 @@
-import parseAcct from '../../misc/acct/parse';
-import { host as localHost } from '@/config';
+import parseAcct from '@/misc/acct/parse';
+import { host as localHost } from '@client/config';
export async function genSearchQuery(v: any, q: string) {
let host: string;
diff --git a/src/client/scripts/get-static-image-url.ts b/src/client/scripts/get-static-image-url.ts
index e932eb6da5..e2728d73f4 100644
--- a/src/client/scripts/get-static-image-url.ts
+++ b/src/client/scripts/get-static-image-url.ts
@@ -1,4 +1,4 @@
-import { url as instanceUrl } from '@/config';
+import { url as instanceUrl } from '@client/config';
import * as url from '../../prelude/url';
export function getStaticImageUrl(baseUrl: string): string {
diff --git a/src/client/scripts/get-user-menu.ts b/src/client/scripts/get-user-menu.ts
index 0e4e4af5d3..163eff619c 100644
--- a/src/client/scripts/get-user-menu.ts
+++ b/src/client/scripts/get-user-menu.ts
@@ -1,13 +1,13 @@
import { faAt, faListUl, faEye, faEyeSlash, faBan, faPencilAlt, faComments, faUsers, faMicrophoneSlash, faPlug, faExclamationCircle } from '@fortawesome/free-solid-svg-icons';
import { faSnowflake, faEnvelope } from '@fortawesome/free-regular-svg-icons';
-import { i18n } from '@/i18n';
-import copyToClipboard from '@/scripts/copy-to-clipboard';
-import { host } from '@/config';
-import getAcct from '../../misc/acct/render';
-import * as os from '@/os';
-import { userActions } from '@/store';
-import { router } from '@/router';
-import { $i } from '@/account';
+import { i18n } from '@client/i18n';
+import copyToClipboard from '@client/scripts/copy-to-clipboard';
+import { host } from '@client/config';
+import getAcct from '@/misc/acct/render';
+import * as os from '@client/os';
+import { userActions } from '@client/store';
+import { router } from '@client/router';
+import { $i } from '@client/account';
export function getUserMenu(user) {
const meId = $i ? $i.id : null;
@@ -104,7 +104,7 @@ export function getUserMenu(user) {
}
function reportAbuse() {
- os.popup(import('@/components/abuse-report-window.vue'), {
+ os.popup(import('@client/components/abuse-report-window.vue'), {
user: user,
}, {}, 'closed');
}
diff --git a/src/client/scripts/hpml/evaluator.ts b/src/client/scripts/hpml/evaluator.ts
index 20261d333d..68d140ff50 100644
--- a/src/client/scripts/hpml/evaluator.ts
+++ b/src/client/scripts/hpml/evaluator.ts
@@ -1,11 +1,11 @@
import autobind from 'autobind-decorator';
import { PageVar, envVarsDef, Fn, HpmlScope, HpmlError } from '.';
-import { version } from '@/config';
+import { version } from '@client/config';
import { AiScript, utils, values } from '@syuilo/aiscript';
import { createAiScriptEnv } from '../aiscript/api';
import { collectPageVars } from '../collect-page-vars';
import { initHpmlLib, initAiLib } from './lib';
-import * as os from '@/os';
+import * as os from '@client/os';
import { markRaw, ref, Ref, unref } from 'vue';
import { Expr, isLiteralValue, Variable } from './expr';
diff --git a/src/client/scripts/initialize-sw.ts b/src/client/scripts/initialize-sw.ts
index d6dbd5dbd4..6f1874572a 100644
--- a/src/client/scripts/initialize-sw.ts
+++ b/src/client/scripts/initialize-sw.ts
@@ -1,7 +1,7 @@
-import { instance } from '@/instance';
-import { $i } from '@/account';
-import { api } from '@/os';
-import { lang } from '@/config';
+import { instance } from '@client/instance';
+import { $i } from '@client/account';
+import { api } from '@client/os';
+import { lang } from '@client/config';
export async function initializeSw() {
if (instance.swPublickey &&
diff --git a/src/client/scripts/paging.ts b/src/client/scripts/paging.ts
index 6e3da94124..2e49f1a64c 100644
--- a/src/client/scripts/paging.ts
+++ b/src/client/scripts/paging.ts
@@ -1,5 +1,5 @@
import { markRaw } from 'vue';
-import * as os from '@/os';
+import * as os from '@client/os';
import { onScrollTop, isTopVisible, getScrollPosition, getScrollContainer } from './scroll';
const SECOND_FETCH_LIMIT = 30;
diff --git a/src/client/scripts/please-login.ts b/src/client/scripts/please-login.ts
index 928f6ec0f4..a584e9fa96 100644
--- a/src/client/scripts/please-login.ts
+++ b/src/client/scripts/please-login.ts
@@ -1,6 +1,6 @@
-import { $i } from '@/account';
-import { i18n } from '@/i18n';
-import { dialog } from '@/os';
+import { $i } from '@client/account';
+import { i18n } from '@client/i18n';
+import { dialog } from '@client/os';
export function pleaseLogin() {
if ($i) return;
diff --git a/src/client/scripts/popout.ts b/src/client/scripts/popout.ts
index 51b8d72868..6d92af4a05 100644
--- a/src/client/scripts/popout.ts
+++ b/src/client/scripts/popout.ts
@@ -1,4 +1,4 @@
-import * as config from '@/config';
+import * as config from '@client/config';
export function popout(path: string, w?: HTMLElement) {
let url = path.startsWith('http://') || path.startsWith('https://') ? path : config.url + path;
diff --git a/src/client/scripts/reaction-picker.ts b/src/client/scripts/reaction-picker.ts
index e923326ece..38699c0979 100644
--- a/src/client/scripts/reaction-picker.ts
+++ b/src/client/scripts/reaction-picker.ts
@@ -1,5 +1,5 @@
import { Ref, ref } from 'vue';
-import { popup } from '@/os';
+import { popup } from '@client/os';
class ReactionPicker {
private src: Ref<HTMLElement | null> = ref(null);
@@ -12,7 +12,7 @@ class ReactionPicker {
}
public async init() {
- await popup(import('@/components/emoji-picker-dialog.vue'), {
+ await popup(import('@client/components/emoji-picker-dialog.vue'), {
src: this.src,
asReactionPicker: true,
manualShowing: this.manualShowing
diff --git a/src/client/scripts/search.ts b/src/client/scripts/search.ts
index 3e442cb94d..829065534c 100644
--- a/src/client/scripts/search.ts
+++ b/src/client/scripts/search.ts
@@ -1,7 +1,7 @@
import { faHistory } from '@fortawesome/free-solid-svg-icons';
-import * as os from '@/os';
-import { i18n } from '@/i18n';
-import { router } from '@/router';
+import * as os from '@client/os';
+import { i18n } from '@client/i18n';
+import { router } from '@client/router';
export async function search() {
const { canceled, result: query } = await os.dialog({
diff --git a/src/client/scripts/select-file.ts b/src/client/scripts/select-file.ts
index c083e1ef88..03ac863aa0 100644
--- a/src/client/scripts/select-file.ts
+++ b/src/client/scripts/select-file.ts
@@ -1,6 +1,6 @@
import { faUpload, faCloud, faLink } from '@fortawesome/free-solid-svg-icons';
-import * as os from '@/os';
-import { i18n } from '@/i18n';
+import * as os from '@client/os';
+import { i18n } from '@client/i18n';
export function selectFile(src: any, label: string | null, multiple = false) {
return new Promise((res, rej) => {
diff --git a/src/client/scripts/sound.ts b/src/client/scripts/sound.ts
index 9b7061d5fc..d3422bfff2 100644
--- a/src/client/scripts/sound.ts
+++ b/src/client/scripts/sound.ts
@@ -1,4 +1,4 @@
-import { ColdDeviceStorage } from '@/store';
+import { ColdDeviceStorage } from '@client/store';
const cache = new Map<string, HTMLAudioElement>();
diff --git a/src/client/scripts/stream.ts b/src/client/scripts/stream.ts
index 7330a2f8bb..065059221d 100644
--- a/src/client/scripts/stream.ts
+++ b/src/client/scripts/stream.ts
@@ -2,7 +2,7 @@ import autobind from 'autobind-decorator';
import { EventEmitter } from 'eventemitter3';
import ReconnectingWebsocket from 'reconnecting-websocket';
import { markRaw } from 'vue';
-import { debug, wsUrl } from '@/config';
+import { debug, wsUrl } from '@client/config';
import { query as urlQuery } from '../../prelude/url';
/**
diff --git a/src/client/sidebar.ts b/src/client/sidebar.ts
index 6bc786fdc0..97036042cf 100644
--- a/src/client/sidebar.ts
+++ b/src/client/sidebar.ts
@@ -1,11 +1,11 @@
import { faBell, faComments, faEnvelope } from '@fortawesome/free-regular-svg-icons';
import { faAt, faBroadcastTower, faCloud, faColumns, faDoorClosed, faFileAlt, faFireAlt, faGamepad, faHashtag, faListUl, faPaperclip, faSatellite, faSatelliteDish, faSearch, faStar, faTerminal, faUserClock, faUsers } from '@fortawesome/free-solid-svg-icons';
import { computed } from 'vue';
-import { search } from '@/scripts/search';
-import * as os from '@/os';
-import { i18n } from '@/i18n';
+import { search } from '@client/scripts/search';
+import * as os from '@client/os';
+import { i18n } from '@client/i18n';
import { $i } from './account';
-import { unisonReload } from '@/scripts/unison-reload';
+import { unisonReload } from '@client/scripts/unison-reload';
export const sidebarDef = {
notifications: {
diff --git a/src/client/sw/compose-notification.ts b/src/client/sw/compose-notification.ts
index e9586dd574..7ed0a95359 100644
--- a/src/client/sw/compose-notification.ts
+++ b/src/client/sw/compose-notification.ts
@@ -3,8 +3,8 @@
*/
declare var self: ServiceWorkerGlobalScope;
-import { getNoteSummary } from '../../misc/get-note-summary';
-import getUserName from '../../misc/get-user-name';
+import { getNoteSummary } from '@/misc/get-note-summary';
+import getUserName from '@/misc/get-user-name';
export default async function(type, data, i18n): Promise<[string, NotificationOptions] | null | undefined> {
if (!i18n) {
diff --git a/src/client/sw/sw.ts b/src/client/sw/sw.ts
index ec4de17551..5be4eb9770 100644
--- a/src/client/sw/sw.ts
+++ b/src/client/sw/sw.ts
@@ -4,8 +4,8 @@
declare var self: ServiceWorkerGlobalScope;
import { get, set } from 'idb-keyval';
-import composeNotification from '@/sw/compose-notification';
-import { I18n } from '../../misc/i18n';
+import composeNotification from '@client/sw/compose-notification';
+import { I18n } from '@/misc/i18n';
//#region Variables
const version = _VERSION_;
diff --git a/src/client/theme-store.ts b/src/client/theme-store.ts
index 8e21af70fc..3793debb9e 100644
--- a/src/client/theme-store.ts
+++ b/src/client/theme-store.ts
@@ -1,5 +1,5 @@
-import { api } from '@/os';
-import { $i } from '@/account';
+import { api } from '@client/os';
+import { $i } from '@client/account';
import { ColdDeviceStorage } from './store';
import { Theme } from './scripts/theme';
diff --git a/src/client/tsconfig.json b/src/client/tsconfig.json
index 01a77cec3a..ac7ef7ddfc 100644
--- a/src/client/tsconfig.json
+++ b/src/client/tsconfig.json
@@ -20,7 +20,8 @@
"resolveJsonModule": true,
"baseUrl": ".",
"paths": {
- "@/*": ["./*"]
+ "@/*": ["../*"],
+ "@client/*": ["./*"]
},
"typeRoots": [
"node_modules/@types",
diff --git a/src/client/ui/_common_/common.vue b/src/client/ui/_common_/common.vue
index e5cdaca235..785b1631db 100644
--- a/src/client/ui/_common_/common.vue
+++ b/src/client/ui/_common_/common.vue
@@ -15,9 +15,9 @@
<script lang="ts">
import { defineAsyncComponent, defineComponent } from 'vue';
-import { stream, popup, popups, uploads, pendingApiRequestsCount } from '@/os';
-import * as sound from '@/scripts/sound';
-import { $i } from '@/account';
+import { stream, popup, popups, uploads, pendingApiRequestsCount } from '@client/os';
+import * as sound from '@client/scripts/sound';
+import { $i } from '@client/account';
export default defineComponent({
components: {
@@ -34,7 +34,7 @@ export default defineComponent({
id: notification.id
});
- popup(import('@/components/toast.vue'), {
+ popup(import('@client/components/toast.vue'), {
notification
}, {}, 'closed');
}
diff --git a/src/client/ui/_common_/stream-indicator.vue b/src/client/ui/_common_/stream-indicator.vue
index 8b1b4b567c..23f2357d85 100644
--- a/src/client/ui/_common_/stream-indicator.vue
+++ b/src/client/ui/_common_/stream-indicator.vue
@@ -10,7 +10,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
data() {
diff --git a/src/client/ui/_common_/upload.vue b/src/client/ui/_common_/upload.vue
index c1986737d7..bd3b2cd684 100644
--- a/src/client/ui/_common_/upload.vue
+++ b/src/client/ui/_common_/upload.vue
@@ -20,7 +20,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faSpinner } from '@fortawesome/free-solid-svg-icons';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
data() {
diff --git a/src/client/ui/chat/header-clock.vue b/src/client/ui/chat/header-clock.vue
index 3488289c21..69ec3cb64b 100644
--- a/src/client/ui/chat/header-clock.vue
+++ b/src/client/ui/chat/header-clock.vue
@@ -15,7 +15,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
data() {
diff --git a/src/client/ui/chat/index.vue b/src/client/ui/chat/index.vue
index 26c81a1aa9..91d3fb5c9d 100644
--- a/src/client/ui/chat/index.vue
+++ b/src/client/ui/chat/index.vue
@@ -135,18 +135,18 @@
import { defineComponent, defineAsyncComponent } from 'vue';
import { faLayerGroup, faBars, faHome, faCircle, faWindowMaximize, faColumns, faPencilAlt, faShareAlt, faSatelliteDish, faListUl, faSatellite, faCog, faSearch, faPlus, faStar, faAt, faLink, faEllipsisH, faGlobe } from '@fortawesome/free-solid-svg-icons';
import { faBell, faStar as farStar, faEnvelope, faComments, faCalendarAlt } from '@fortawesome/free-regular-svg-icons';
-import { instanceName, url } from '@/config';
-import XSidebar from '@/components/sidebar.vue';
+import { instanceName, url } from '@client/config';
+import XSidebar from '@client/components/sidebar.vue';
import XWidgets from './widgets.vue';
import XCommon from '../_common_/common.vue';
import XSide from './side.vue';
import XTimeline from './timeline.vue';
import XHeaderClock from './header-clock.vue';
-import * as os from '@/os';
-import { router } from '@/router';
-import { sidebarDef } from '@/sidebar';
-import { search } from '@/scripts/search';
-import copyToClipboard from '@/scripts/copy-to-clipboard';
+import * as os from '@client/os';
+import { router } from '@client/router';
+import { sidebarDef } from '@client/sidebar';
+import { search } from '@client/scripts/search';
+import copyToClipboard from '@client/scripts/copy-to-clipboard';
import { store } from './store';
export default defineComponent({
diff --git a/src/client/ui/chat/note-header.vue b/src/client/ui/chat/note-header.vue
index cda8ae00e2..55228c4c38 100644
--- a/src/client/ui/chat/note-header.vue
+++ b/src/client/ui/chat/note-header.vue
@@ -26,9 +26,9 @@
import { defineComponent } from 'vue';
import { faHome, faUnlock, faEnvelope, faMobileAlt, faBookmark, faBiohazard } from '@fortawesome/free-solid-svg-icons';
import { faBookmark as farBookmark } from '@fortawesome/free-regular-svg-icons';
-import notePage from '@/filters/note';
-import { userPage } from '@/filters/user';
-import * as os from '@/os';
+import notePage from '@client/filters/note';
+import { userPage } from '@client/filters/user';
+import * as os from '@client/os';
export default defineComponent({
props: {
diff --git a/src/client/ui/chat/note-preview.vue b/src/client/ui/chat/note-preview.vue
index 4861473701..77949e314b 100644
--- a/src/client/ui/chat/note-preview.vue
+++ b/src/client/ui/chat/note-preview.vue
@@ -20,8 +20,8 @@
import { defineComponent } from 'vue';
import XNoteHeader from './note-header.vue';
import XSubNoteContent from './sub-note-content.vue';
-import XCwButton from '@/components/cw-button.vue';
-import * as os from '@/os';
+import XCwButton from '@client/components/cw-button.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/ui/chat/note.sub.vue b/src/client/ui/chat/note.sub.vue
index 6f365c29e9..6c778d1468 100644
--- a/src/client/ui/chat/note.sub.vue
+++ b/src/client/ui/chat/note.sub.vue
@@ -23,8 +23,8 @@
import { defineComponent } from 'vue';
import XNoteHeader from './note-header.vue';
import XSubNoteContent from './sub-note-content.vue';
-import XCwButton from '@/components/cw-button.vue';
-import * as os from '@/os';
+import XCwButton from '@client/components/cw-button.vue';
+import * as os from '@client/os';
export default defineComponent({
name: 'XSub',
diff --git a/src/client/ui/chat/note.vue b/src/client/ui/chat/note.vue
index 97275875ca..4afd7989e1 100644
--- a/src/client/ui/chat/note.vue
+++ b/src/client/ui/chat/note.vue
@@ -109,19 +109,19 @@ import { sum, unique } from '../../../prelude/array';
import XSub from './note.sub.vue';
import XNoteHeader from './note-header.vue';
import XNotePreview from './note-preview.vue';
-import XReactionsViewer from '@/components/reactions-viewer.vue';
-import XMediaList from '@/components/media-list.vue';
-import XCwButton from '@/components/cw-button.vue';
-import XPoll from '@/components/poll.vue';
-import { pleaseLogin } from '@/scripts/please-login';
-import { focusPrev, focusNext } from '@/scripts/focus';
-import { url } from '@/config';
-import copyToClipboard from '@/scripts/copy-to-clipboard';
-import { checkWordMute } from '@/scripts/check-word-mute';
-import { userPage } from '@/filters/user';
-import * as os from '@/os';
-import { noteActions, noteViewInterruptors } from '@/store';
-import { reactionPicker } from '@/scripts/reaction-picker';
+import XReactionsViewer from '@client/components/reactions-viewer.vue';
+import XMediaList from '@client/components/media-list.vue';
+import XCwButton from '@client/components/cw-button.vue';
+import XPoll from '@client/components/poll.vue';
+import { pleaseLogin } from '@client/scripts/please-login';
+import { focusPrev, focusNext } from '@client/scripts/focus';
+import { url } from '@client/config';
+import copyToClipboard from '@client/scripts/copy-to-clipboard';
+import { checkWordMute } from '@client/scripts/check-word-mute';
+import { userPage } from '@client/filters/user';
+import * as os from '@client/os';
+import { noteActions, noteViewInterruptors } from '@client/store';
+import { reactionPicker } from '@client/scripts/reaction-picker';
function markRawAll(...xs) {
for (const x of xs) {
@@ -140,8 +140,8 @@ export default defineComponent({
XMediaList,
XCwButton,
XPoll,
- MkUrlPreview: defineAsyncComponent(() => import('@/components/url-preview.vue')),
- MkInstanceTicker: defineAsyncComponent(() => import('@/components/instance-ticker.vue')),
+ MkUrlPreview: defineAsyncComponent(() => import('@client/components/url-preview.vue')),
+ MkInstanceTicker: defineAsyncComponent(() => import('@client/components/instance-ticker.vue')),
},
inject: {
@@ -669,7 +669,7 @@ export default defineComponent({
text: this.$ts.reportAbuse,
action: () => {
const u = `${url}/notes/${this.appearNote.id}`;
- os.popup(import('@/components/abuse-report-window.vue'), {
+ os.popup(import('@client/components/abuse-report-window.vue'), {
user: this.appearNote.user,
initialComment: `Note: ${u}\n-----\n`
}, {}, 'closed');
diff --git a/src/client/ui/chat/notes.vue b/src/client/ui/chat/notes.vue
index 3a169cc20a..45c2bd17a1 100644
--- a/src/client/ui/chat/notes.vue
+++ b/src/client/ui/chat/notes.vue
@@ -29,10 +29,10 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import paging from '@/scripts/paging';
+import paging from '@client/scripts/paging';
import XNote from './note.vue';
import XList from './date-separated-list.vue';
-import MkButton from '@/components/ui/button.vue';
+import MkButton from '@client/components/ui/button.vue';
export default defineComponent({
components: {
diff --git a/src/client/ui/chat/post-form.vue b/src/client/ui/chat/post-form.vue
index 9388989d5d..5bb1a04d58 100644
--- a/src/client/ui/chat/post-form.vue
+++ b/src/client/ui/chat/post-form.vue
@@ -54,23 +54,23 @@ import insertTextAtCursor from 'insert-text-at-cursor';
import { length } from 'stringz';
import { toASCII } from 'punycode';
import { parse } from '../../../mfm/parse';
-import { host, url } from '@/config';
+import { host, url } from '@client/config';
import { erase, unique } from '../../../prelude/array';
-import extractMentions from '../../../misc/extract-mentions';
-import getAcct from '../../../misc/acct/render';
-import { formatTimeString } from '../../../misc/format-time-string';
-import { Autocomplete } from '@/scripts/autocomplete';
+import extractMentions from '@/misc/extract-mentions';
+import getAcct from '@/misc/acct/render';
+import { formatTimeString } from '@/misc/format-time-string';
+import { Autocomplete } from '@client/scripts/autocomplete';
import { noteVisibilities } from '../../../types';
-import * as os from '@/os';
-import { selectFile } from '@/scripts/select-file';
-import { notePostInterruptors, postFormActions } from '@/store';
-import { isMobile } from '@/scripts/is-mobile';
+import * as os from '@client/os';
+import { selectFile } from '@client/scripts/select-file';
+import { notePostInterruptors, postFormActions } from '@client/store';
+import { isMobile } from '@client/scripts/is-mobile';
import { throttle } from 'throttle-debounce';
export default defineComponent({
components: {
- XPostFormAttaches: defineAsyncComponent(() => import('@/components/post-form-attaches.vue')),
- XPollEditor: defineAsyncComponent(() => import('@/components/poll-editor.vue'))
+ XPostFormAttaches: defineAsyncComponent(() => import('@client/components/post-form-attaches.vue')),
+ XPollEditor: defineAsyncComponent(() => import('@client/components/poll-editor.vue'))
},
props: {
@@ -387,7 +387,7 @@ export default defineComponent({
return;
}
- os.popup(import('@/components/visibility-picker.vue'), {
+ os.popup(import('@client/components/visibility-picker.vue'), {
currentVisibility: this.visibility,
currentLocalOnly: this.localOnly,
src: this.$refs.visibilityButton
diff --git a/src/client/ui/chat/side.vue b/src/client/ui/chat/side.vue
index 0003158e53..2645874ce4 100644
--- a/src/client/ui/chat/side.vue
+++ b/src/client/ui/chat/side.vue
@@ -13,10 +13,10 @@
import { defineComponent } from 'vue';
import { faTimes, faChevronLeft, faExpandAlt, faWindowMaximize, faExternalLinkAlt, faLink } from '@fortawesome/free-solid-svg-icons';
import XHeader from '../_common_/header.vue';
-import * as os from '@/os';
-import copyToClipboard from '@/scripts/copy-to-clipboard';
-import { resolve } from '@/router';
-import { url } from '@/config';
+import * as os from '@client/os';
+import copyToClipboard from '@client/scripts/copy-to-clipboard';
+import { resolve } from '@client/router';
+import { url } from '@client/config';
export default defineComponent({
components: {
diff --git a/src/client/ui/chat/sub-note-content.vue b/src/client/ui/chat/sub-note-content.vue
index 7e742b8e54..e530a88172 100644
--- a/src/client/ui/chat/sub-note-content.vue
+++ b/src/client/ui/chat/sub-note-content.vue
@@ -21,9 +21,9 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faReply } from '@fortawesome/free-solid-svg-icons';
-import XPoll from '@/components/poll.vue';
-import XMediaList from '@/components/media-list.vue';
-import * as os from '@/os';
+import XPoll from '@client/components/poll.vue';
+import XMediaList from '@client/components/media-list.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/ui/chat/timeline.vue b/src/client/ui/chat/timeline.vue
index 232e749c1c..13032cce09 100644
--- a/src/client/ui/chat/timeline.vue
+++ b/src/client/ui/chat/timeline.vue
@@ -25,12 +25,12 @@
<script lang="ts">
import { defineComponent } from 'vue';
import XNotes from './notes.vue';
-import * as os from '@/os';
-import * as sound from '@/scripts/sound';
-import { scrollToBottom, getScrollPosition, getScrollContainer } from '@/scripts/scroll';
-import follow from '@/directives/follow-append';
+import * as os from '@client/os';
+import * as sound from '@client/scripts/sound';
+import { scrollToBottom, getScrollPosition, getScrollContainer } from '@client/scripts/scroll';
+import follow from '@client/directives/follow-append';
import XPostForm from './post-form.vue';
-import MkInfo from '@/components/ui/info.vue';
+import MkInfo from '@client/components/ui/info.vue';
export default defineComponent({
components: {
diff --git a/src/client/ui/chat/widgets.vue b/src/client/ui/chat/widgets.vue
index 6b12f9dac9..4d1865f616 100644
--- a/src/client/ui/chat/widgets.vue
+++ b/src/client/ui/chat/widgets.vue
@@ -9,7 +9,7 @@
<script lang="ts">
import { defineComponent, defineAsyncComponent } from 'vue';
-import XWidgets from '@/components/widgets.vue';
+import XWidgets from '@client/components/widgets.vue';
import { store } from './store';
export default defineComponent({
diff --git a/src/client/ui/deck.vue b/src/client/ui/deck.vue
index a074629ddd..a63db17b01 100644
--- a/src/client/ui/deck.vue
+++ b/src/client/ui/deck.vue
@@ -34,12 +34,12 @@ import { defineComponent } from 'vue';
import { faPlus, faPencilAlt, faChevronLeft, faBars, faCircle } from '@fortawesome/free-solid-svg-icons';
import { } from '@fortawesome/free-regular-svg-icons';
import { v4 as uuid } from 'uuid';
-import { host } from '@/config';
-import DeckColumnCore from '@/ui/deck/column-core.vue';
-import XSidebar from '@/components/sidebar.vue';
-import { getScrollContainer } from '@/scripts/scroll';
-import * as os from '@/os';
-import { sidebarDef } from '@/sidebar';
+import { host } from '@client/config';
+import DeckColumnCore from '@client/ui/deck/column-core.vue';
+import XSidebar from '@client/components/sidebar.vue';
+import { getScrollContainer } from '@client/scripts/scroll';
+import * as os from '@client/os';
+import { sidebarDef } from '@client/sidebar';
import XCommon from './_common_/common.vue';
import { deckStore, addColumn, loadDeck } from './deck/deck-store';
diff --git a/src/client/ui/deck/antenna-column.vue b/src/client/ui/deck/antenna-column.vue
index c6aa201e40..0de870233a 100644
--- a/src/client/ui/deck/antenna-column.vue
+++ b/src/client/ui/deck/antenna-column.vue
@@ -12,8 +12,8 @@
import { defineComponent } from 'vue';
import { faSatellite, faCog } from '@fortawesome/free-solid-svg-icons';
import XColumn from './column.vue';
-import XTimeline from '@/components/timeline.vue';
-import * as os from '@/os';
+import XTimeline from '@client/components/timeline.vue';
+import * as os from '@client/os';
import { updateColumn } from './deck-store';
export default defineComponent({
diff --git a/src/client/ui/deck/column.vue b/src/client/ui/deck/column.vue
index d0a39965b1..6a242c691a 100644
--- a/src/client/ui/deck/column.vue
+++ b/src/client/ui/deck/column.vue
@@ -34,7 +34,7 @@
import { defineComponent } from 'vue';
import { faArrowUp, faArrowDown, faAngleUp, faAngleDown, faCaretDown, faArrowRight, faArrowLeft, faPencilAlt, faCog } from '@fortawesome/free-solid-svg-icons';
import { faWindowMaximize, faTrashAlt, faWindowRestore } from '@fortawesome/free-regular-svg-icons';
-import * as os from '@/os';
+import * as os from '@client/os';
import { updateColumn, swapLeftColumn, swapRightColumn, swapUpColumn, swapDownColumn, stackLeftColumn, popRightColumn, removeColumn, swapColumn } from './deck-store';
import { deckStore } from './deck-store';
diff --git a/src/client/ui/deck/deck-store.ts b/src/client/ui/deck/deck-store.ts
index 025d5d70f4..aa389d7610 100644
--- a/src/client/ui/deck/deck-store.ts
+++ b/src/client/ui/deck/deck-store.ts
@@ -1,6 +1,6 @@
import { throttle } from 'throttle-debounce';
-import { i18n } from '@/i18n';
-import { api } from '@/os';
+import { i18n } from '@client/i18n';
+import { api } from '@client/os';
import { markRaw, watch } from 'vue';
import { Storage } from '../../pizzax';
diff --git a/src/client/ui/deck/direct-column.vue b/src/client/ui/deck/direct-column.vue
index 2ffbed562d..6fceae4ed7 100644
--- a/src/client/ui/deck/direct-column.vue
+++ b/src/client/ui/deck/direct-column.vue
@@ -9,10 +9,10 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faEnvelope } from '@fortawesome/free-solid-svg-icons';
-import Progress from '@/scripts/loading';
+import Progress from '@client/scripts/loading';
import XColumn from './column.vue';
-import XNotes from '@/components/notes.vue';
-import * as os from '@/os';
+import XNotes from '@client/components/notes.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/ui/deck/list-column.vue b/src/client/ui/deck/list-column.vue
index 32807aabc9..c70abc9f6e 100644
--- a/src/client/ui/deck/list-column.vue
+++ b/src/client/ui/deck/list-column.vue
@@ -12,8 +12,8 @@
import { defineComponent } from 'vue';
import { faListUl, faCog } from '@fortawesome/free-solid-svg-icons';
import XColumn from './column.vue';
-import XTimeline from '@/components/timeline.vue';
-import * as os from '@/os';
+import XTimeline from '@client/components/timeline.vue';
+import * as os from '@client/os';
import { updateColumn } from './deck-store';
export default defineComponent({
diff --git a/src/client/ui/deck/main-column.vue b/src/client/ui/deck/main-column.vue
index 6d798c130c..4577b0b533 100644
--- a/src/client/ui/deck/main-column.vue
+++ b/src/client/ui/deck/main-column.vue
@@ -18,10 +18,10 @@
import { defineComponent } from 'vue';
import { faWindowMaximize } from '@fortawesome/free-solid-svg-icons';
import XColumn from './column.vue';
-import XNotes from '@/components/notes.vue';
-import XHeader from '@/ui/_common_/header.vue';
-import { deckStore } from '@/ui/deck/deck-store';
-import * as os from '@/os';
+import XNotes from '@client/components/notes.vue';
+import XHeader from '@client/ui/_common_/header.vue';
+import { deckStore } from '@client/ui/deck/deck-store';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/ui/deck/mentions-column.vue b/src/client/ui/deck/mentions-column.vue
index e79a9eb245..996123cb1f 100644
--- a/src/client/ui/deck/mentions-column.vue
+++ b/src/client/ui/deck/mentions-column.vue
@@ -9,10 +9,10 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faAt } from '@fortawesome/free-solid-svg-icons';
-import Progress from '@/scripts/loading';
+import Progress from '@client/scripts/loading';
import XColumn from './column.vue';
-import XNotes from '@/components/notes.vue';
-import * as os from '@/os';
+import XNotes from '@client/components/notes.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/ui/deck/notifications-column.vue b/src/client/ui/deck/notifications-column.vue
index 5feab8bab5..1b29a2d54f 100644
--- a/src/client/ui/deck/notifications-column.vue
+++ b/src/client/ui/deck/notifications-column.vue
@@ -11,8 +11,8 @@ import { defineComponent } from 'vue';
import { faCog } from '@fortawesome/free-solid-svg-icons';
import { faBell } from '@fortawesome/free-regular-svg-icons';
import XColumn from './column.vue';
-import XNotifications from '@/components/notifications.vue';
-import * as os from '@/os';
+import XNotifications from '@client/components/notifications.vue';
+import * as os from '@client/os';
import { updateColumn } from './deck-store';
export default defineComponent({
@@ -40,7 +40,7 @@ export default defineComponent({
methods: {
func() {
- os.popup(import('@/components/notification-setting-window.vue'), {
+ os.popup(import('@client/components/notification-setting-window.vue'), {
includingTypes: this.column.includingTypes,
}, {
done: async (res) => {
diff --git a/src/client/ui/deck/tl-column.vue b/src/client/ui/deck/tl-column.vue
index 02af6a3311..d4908d0edf 100644
--- a/src/client/ui/deck/tl-column.vue
+++ b/src/client/ui/deck/tl-column.vue
@@ -23,8 +23,8 @@
import { defineComponent } from 'vue';
import { faMinusCircle, faHome, faComments, faShareAlt, faGlobe, faCog } from '@fortawesome/free-solid-svg-icons';
import XColumn from './column.vue';
-import XTimeline from '@/components/timeline.vue';
-import * as os from '@/os';
+import XTimeline from '@client/components/timeline.vue';
+import * as os from '@client/os';
import { removeColumn, updateColumn } from './deck-store';
export default defineComponent({
diff --git a/src/client/ui/deck/widgets-column.vue b/src/client/ui/deck/widgets-column.vue
index b7740c270d..992845ff7e 100644
--- a/src/client/ui/deck/widgets-column.vue
+++ b/src/client/ui/deck/widgets-column.vue
@@ -11,7 +11,7 @@
<script lang="ts">
import { defineComponent, defineAsyncComponent } from 'vue';
import { faWindowMaximize, faTimes, faCog, faPlus } from '@fortawesome/free-solid-svg-icons';
-import XWidgets from '@/components/widgets.vue';
+import XWidgets from '@client/components/widgets.vue';
import XColumn from './column.vue';
import { addColumnWidget, removeColumnWidget, setColumnWidgets, updateColumnWidget } from './deck-store';
diff --git a/src/client/ui/default.side.vue b/src/client/ui/default.side.vue
index b58c339f2b..995f987a6a 100644
--- a/src/client/ui/default.side.vue
+++ b/src/client/ui/default.side.vue
@@ -16,10 +16,10 @@
import { defineComponent } from 'vue';
import { faTimes, faChevronLeft, faExpandAlt, faWindowMaximize, faExternalLinkAlt, faLink } from '@fortawesome/free-solid-svg-icons';
import XHeader from './_common_/header.vue';
-import * as os from '@/os';
-import copyToClipboard from '@/scripts/copy-to-clipboard';
-import { resolve } from '@/router';
-import { url } from '@/config';
+import * as os from '@client/os';
+import copyToClipboard from '@client/scripts/copy-to-clipboard';
+import { resolve } from '@client/router';
+import { url } from '@client/config';
export default defineComponent({
components: {
diff --git a/src/client/ui/default.vue b/src/client/ui/default.vue
index 220dee9d6d..38f98f6365 100644
--- a/src/client/ui/default.vue
+++ b/src/client/ui/default.vue
@@ -57,14 +57,14 @@
import { defineComponent, defineAsyncComponent } from 'vue';
import { faLayerGroup, faBars, faHome, faCircle, faWindowMaximize, faColumns, faPencilAlt } from '@fortawesome/free-solid-svg-icons';
import { faBell } from '@fortawesome/free-regular-svg-icons';
-import { instanceName } from '@/config';
-import { StickySidebar } from '@/scripts/sticky-sidebar';
-import XSidebar from '@/components/sidebar.vue';
+import { instanceName } from '@client/config';
+import { StickySidebar } from '@client/scripts/sticky-sidebar';
+import XSidebar from '@client/components/sidebar.vue';
import XCommon from './_common_/common.vue';
import XHeader from './_common_/header.vue';
import XSide from './default.side.vue';
-import * as os from '@/os';
-import { sidebarDef } from '@/sidebar';
+import * as os from '@client/os';
+import { sidebarDef } from '@client/sidebar';
const DESKTOP_THRESHOLD = 1100;
diff --git a/src/client/ui/default.widgets.vue b/src/client/ui/default.widgets.vue
index ff7cdf1140..35d3442bb2 100644
--- a/src/client/ui/default.widgets.vue
+++ b/src/client/ui/default.widgets.vue
@@ -10,8 +10,8 @@
<script lang="ts">
import { defineComponent, defineAsyncComponent } from 'vue';
import { faPencilAlt, faPlus, faBars, faTimes, faCheck } from '@fortawesome/free-solid-svg-icons';
-import XWidgets from '@/components/widgets.vue';
-import * as os from '@/os';
+import XWidgets from '@client/components/widgets.vue';
+import * as os from '@client/os';
export default defineComponent({
components: {
diff --git a/src/client/ui/desktop.vue b/src/client/ui/desktop.vue
index a1f58af5cc..1480fd1840 100644
--- a/src/client/ui/desktop.vue
+++ b/src/client/ui/desktop.vue
@@ -8,13 +8,13 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import { host } from '@/config';
-import { search } from '@/scripts/search';
+import { host } from '@client/config';
+import { search } from '@client/scripts/search';
import XCommon from './_common_/common.vue';
-import * as os from '@/os';
-import XSidebar from '@/components/sidebar.vue';
-import { sidebarDef } from '@/sidebar';
-import { ColdDeviceStorage } from '@/store';
+import * as os from '@client/os';
+import XSidebar from '@client/components/sidebar.vue';
+import { sidebarDef } from '@client/sidebar';
+import { ColdDeviceStorage } from '@client/store';
export default defineComponent({
components: {
diff --git a/src/client/ui/visitor/a.vue b/src/client/ui/visitor/a.vue
index d25b5591ef..2aed50100c 100644
--- a/src/client/ui/visitor/a.vue
+++ b/src/client/ui/visitor/a.vue
@@ -42,13 +42,13 @@
<script lang="ts">
import { defineComponent, defineAsyncComponent } from 'vue';
import { } from '@fortawesome/free-solid-svg-icons';
-import { host, instanceName } from '@/config';
-import { search } from '@/scripts/search';
-import * as os from '@/os';
-import MkPagination from '@/components/ui/pagination.vue';
-import MkButton from '@/components/ui/button.vue';
+import { host, instanceName } from '@client/config';
+import { search } from '@client/scripts/search';
+import * as os from '@client/os';
+import MkPagination from '@client/components/ui/pagination.vue';
+import MkButton from '@client/components/ui/button.vue';
import XHeader from './header.vue';
-import { ColdDeviceStorage } from '@/store';
+import { ColdDeviceStorage } from '@client/store';
const DESKTOP_THRESHOLD = 1100;
diff --git a/src/client/ui/visitor/b.vue b/src/client/ui/visitor/b.vue
index 1f559c8917..bd00773c57 100644
--- a/src/client/ui/visitor/b.vue
+++ b/src/client/ui/visitor/b.vue
@@ -51,16 +51,16 @@
<script lang="ts">
import { defineComponent, defineAsyncComponent } from 'vue';
import { } from '@fortawesome/free-solid-svg-icons';
-import { host, instanceName } from '@/config';
-import { search } from '@/scripts/search';
-import * as os from '@/os';
-import MkPagination from '@/components/ui/pagination.vue';
-import XSigninDialog from '@/components/signin-dialog.vue';
-import XSignupDialog from '@/components/signup-dialog.vue';
-import MkButton from '@/components/ui/button.vue';
+import { host, instanceName } from '@client/config';
+import { search } from '@client/scripts/search';
+import * as os from '@client/os';
+import MkPagination from '@client/components/ui/pagination.vue';
+import XSigninDialog from '@client/components/signin-dialog.vue';
+import XSignupDialog from '@client/components/signup-dialog.vue';
+import MkButton from '@client/components/ui/button.vue';
import XHeader from './header.vue';
import XKanban from './kanban.vue';
-import { ColdDeviceStorage } from '@/store';
+import { ColdDeviceStorage } from '@client/store';
const DESKTOP_THRESHOLD = 1100;
diff --git a/src/client/ui/visitor/header.vue b/src/client/ui/visitor/header.vue
index 9a7bf96fc0..a66c4d5fb0 100644
--- a/src/client/ui/visitor/header.vue
+++ b/src/client/ui/visitor/header.vue
@@ -42,10 +42,10 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faSearch, faHome, faFireAlt, faHashtag, faSatelliteDish, faBars } from '@fortawesome/free-solid-svg-icons';
-import XSigninDialog from '@/components/signin-dialog.vue';
-import XSignupDialog from '@/components/signup-dialog.vue';
-import * as os from '@/os';
-import { search } from '@/scripts/search';
+import XSigninDialog from '@client/components/signin-dialog.vue';
+import XSignupDialog from '@client/components/signup-dialog.vue';
+import * as os from '@client/os';
+import { search } from '@client/scripts/search';
export default defineComponent({
props: {
diff --git a/src/client/ui/visitor/kanban.vue b/src/client/ui/visitor/kanban.vue
index 6a4bcd1adb..8317f24402 100644
--- a/src/client/ui/visitor/kanban.vue
+++ b/src/client/ui/visitor/kanban.vue
@@ -39,12 +39,12 @@
<script lang="ts">
import { defineComponent, defineAsyncComponent } from 'vue';
import { } from '@fortawesome/free-solid-svg-icons';
-import { host, instanceName } from '@/config';
-import * as os from '@/os';
-import MkPagination from '@/components/ui/pagination.vue';
-import XSigninDialog from '@/components/signin-dialog.vue';
-import XSignupDialog from '@/components/signup-dialog.vue';
-import MkButton from '@/components/ui/button.vue';
+import { host, instanceName } from '@client/config';
+import * as os from '@client/os';
+import MkPagination from '@client/components/ui/pagination.vue';
+import XSigninDialog from '@client/components/signin-dialog.vue';
+import XSignupDialog from '@client/components/signup-dialog.vue';
+import MkButton from '@client/components/ui/button.vue';
export default defineComponent({
components: {
diff --git a/src/client/ui/zen.vue b/src/client/ui/zen.vue
index ab9e08e768..9215a639b0 100644
--- a/src/client/ui/zen.vue
+++ b/src/client/ui/zen.vue
@@ -25,7 +25,7 @@
import { defineComponent, defineAsyncComponent } from 'vue';
import { faLayerGroup, faBars, faHome, faCircle } from '@fortawesome/free-solid-svg-icons';
import { faBell } from '@fortawesome/free-regular-svg-icons';
-import { host } from '@/config';
+import { host } from '@client/config';
import XHeader from './_common_/header.vue';
import XCommon from './_common_/common.vue';
diff --git a/src/client/widgets/activity.calendar.vue b/src/client/widgets/activity.calendar.vue
index b833bd65ca..ff767190f6 100644
--- a/src/client/widgets/activity.calendar.vue
+++ b/src/client/widgets/activity.calendar.vue
@@ -25,7 +25,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import * as os from '@/os';
+import * as os from '@client/os';
export default defineComponent({
props: ['data'],
diff --git a/src/client/widgets/activity.chart.vue b/src/client/widgets/activity.chart.vue
index 9702d66663..ee5bc25113 100644
--- a/src/client/widgets/activity.chart.vue
+++ b/src/client/widgets/activity.chart.vue
@@ -26,7 +26,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import * as os from '@/os';
+import * as os from '@client/os';
function dragListen(fn) {
window.addEventListener('mousemove', fn);
diff --git a/src/client/widgets/activity.vue b/src/client/widgets/activity.vue
index a92644e0ab..9623765e40 100644
--- a/src/client/widgets/activity.vue
+++ b/src/client/widgets/activity.vue
@@ -16,11 +16,11 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faChartBar, faSort } from '@fortawesome/free-solid-svg-icons';
-import MkContainer from '@/components/ui/container.vue';
+import MkContainer from '@client/components/ui/container.vue';
import define from './define';
import XCalendar from './activity.calendar.vue';
import XChart from './activity.chart.vue';
-import * as os from '@/os';
+import * as os from '@client/os';
const widget = define({
name: 'activity',
diff --git a/src/client/widgets/aiscript.vue b/src/client/widgets/aiscript.vue
index f885db886b..84390866bd 100644
--- a/src/client/widgets/aiscript.vue
+++ b/src/client/widgets/aiscript.vue
@@ -15,11 +15,11 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faTerminal } from '@fortawesome/free-solid-svg-icons';
-import MkContainer from '@/components/ui/container.vue';
+import MkContainer from '@client/components/ui/container.vue';
import define from './define';
-import * as os from '@/os';
+import * as os from '@client/os';
import { AiScript, parse, utils } from '@syuilo/aiscript';
-import { createAiScriptEnv } from '@/scripts/aiscript/api';
+import { createAiScriptEnv } from '@client/scripts/aiscript/api';
const widget = define({
name: 'aiscript',
diff --git a/src/client/widgets/button.vue b/src/client/widgets/button.vue
index 3417181d0c..af6718c507 100644
--- a/src/client/widgets/button.vue
+++ b/src/client/widgets/button.vue
@@ -9,10 +9,10 @@
<script lang="ts">
import { defineComponent } from 'vue';
import define from './define';
-import MkButton from '@/components/ui/button.vue';
-import * as os from '@/os';
+import MkButton from '@client/components/ui/button.vue';
+import * as os from '@client/os';
import { AiScript, parse, utils } from '@syuilo/aiscript';
-import { createAiScriptEnv } from '@/scripts/aiscript/api';
+import { createAiScriptEnv } from '@client/scripts/aiscript/api';
const widget = define({
name: 'button',
diff --git a/src/client/widgets/calendar.vue b/src/client/widgets/calendar.vue
index 545072e87b..fe39145f0d 100644
--- a/src/client/widgets/calendar.vue
+++ b/src/client/widgets/calendar.vue
@@ -34,7 +34,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import define from './define';
-import * as os from '@/os';
+import * as os from '@client/os';
const widget = define({
name: 'calendar',
diff --git a/src/client/widgets/clock.vue b/src/client/widgets/clock.vue
index 2aad24baec..e0689a294f 100644
--- a/src/client/widgets/clock.vue
+++ b/src/client/widgets/clock.vue
@@ -9,9 +9,9 @@
<script lang="ts">
import { defineComponent } from 'vue';
import define from './define';
-import MkContainer from '@/components/ui/container.vue';
-import MkAnalogClock from '@/components/analog-clock.vue';
-import * as os from '@/os';
+import MkContainer from '@client/components/ui/container.vue';
+import MkAnalogClock from '@client/components/analog-clock.vue';
+import * as os from '@client/os';
const widget = define({
name: 'clock',
diff --git a/src/client/widgets/define.ts b/src/client/widgets/define.ts
index 08a346d97c..22b7fb30a1 100644
--- a/src/client/widgets/define.ts
+++ b/src/client/widgets/define.ts
@@ -1,7 +1,7 @@
import { defineComponent } from 'vue';
import { throttle } from 'throttle-debounce';
-import { Form } from '@/scripts/form';
-import * as os from '@/os';
+import { Form } from '@client/scripts/form';
+import * as os from '@client/os';
export default function <T extends Form>(data: {
name: string;
diff --git a/src/client/widgets/digital-clock.vue b/src/client/widgets/digital-clock.vue
index 9d32e8b9fe..2202c9ed4b 100644
--- a/src/client/widgets/digital-clock.vue
+++ b/src/client/widgets/digital-clock.vue
@@ -15,7 +15,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import define from './define';
-import * as os from '@/os';
+import * as os from '@client/os';
const widget = define({
name: 'digitalClock',
diff --git a/src/client/widgets/federation.vue b/src/client/widgets/federation.vue
index 6e76bc40e9..6eb656ce05 100644
--- a/src/client/widgets/federation.vue
+++ b/src/client/widgets/federation.vue
@@ -21,10 +21,10 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faGlobe } from '@fortawesome/free-solid-svg-icons';
-import MkContainer from '@/components/ui/container.vue';
+import MkContainer from '@client/components/ui/container.vue';
import define from './define';
-import MkMiniChart from '@/components/mini-chart.vue';
-import * as os from '@/os';
+import MkMiniChart from '@client/components/mini-chart.vue';
+import * as os from '@client/os';
const widget = define({
name: 'federation',
diff --git a/src/client/widgets/job-queue.vue b/src/client/widgets/job-queue.vue
index b7bfb6de27..aaf2b2fc8f 100644
--- a/src/client/widgets/job-queue.vue
+++ b/src/client/widgets/job-queue.vue
@@ -49,8 +49,8 @@
import { defineComponent } from 'vue';
import { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons';
import define from './define';
-import * as os from '@/os';
-import number from '@/filters/number';
+import * as os from '@client/os';
+import number from '@client/filters/number';
const widget = define({
name: 'jobQueue',
diff --git a/src/client/widgets/memo.vue b/src/client/widgets/memo.vue
index 3512429e0d..4a7786312a 100644
--- a/src/client/widgets/memo.vue
+++ b/src/client/widgets/memo.vue
@@ -12,9 +12,9 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faStickyNote } from '@fortawesome/free-solid-svg-icons';
-import MkContainer from '@/components/ui/container.vue';
+import MkContainer from '@client/components/ui/container.vue';
import define from './define';
-import * as os from '@/os';
+import * as os from '@client/os';
const widget = define({
name: 'memo',
diff --git a/src/client/widgets/notifications.vue b/src/client/widgets/notifications.vue
index c3eb6ee79a..b4c2201862 100644
--- a/src/client/widgets/notifications.vue
+++ b/src/client/widgets/notifications.vue
@@ -12,10 +12,10 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faBell, faCog } from '@fortawesome/free-solid-svg-icons';
-import MkContainer from '@/components/ui/container.vue';
-import XNotifications from '@/components/notifications.vue';
+import MkContainer from '@client/components/ui/container.vue';
+import XNotifications from '@client/components/notifications.vue';
import define from './define';
-import * as os from '@/os';
+import * as os from '@client/os';
const widget = define({
name: 'notifications',
@@ -52,7 +52,7 @@ export default defineComponent({
methods: {
configure() {
- os.popup(import('@/components/notification-setting-window.vue'), {
+ os.popup(import('@client/components/notification-setting-window.vue'), {
includingTypes: this.props.includingTypes,
}, {
done: async (res) => {
diff --git a/src/client/widgets/online-users.vue b/src/client/widgets/online-users.vue
index 5b889f4816..37060fca43 100644
--- a/src/client/widgets/online-users.vue
+++ b/src/client/widgets/online-users.vue
@@ -9,7 +9,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
import define from './define';
-import * as os from '@/os';
+import * as os from '@client/os';
const widget = define({
name: 'onlineUsers',
diff --git a/src/client/widgets/photos.vue b/src/client/widgets/photos.vue
index ada15486ba..f1041b4ec2 100644
--- a/src/client/widgets/photos.vue
+++ b/src/client/widgets/photos.vue
@@ -17,10 +17,10 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faCamera } from '@fortawesome/free-solid-svg-icons';
-import MkContainer from '@/components/ui/container.vue';
+import MkContainer from '@client/components/ui/container.vue';
import define from './define';
-import { getStaticImageUrl } from '@/scripts/get-static-image-url';
-import * as os from '@/os';
+import { getStaticImageUrl } from '@client/scripts/get-static-image-url';
+import * as os from '@client/os';
const widget = define({
name: 'photos',
diff --git a/src/client/widgets/post-form.vue b/src/client/widgets/post-form.vue
index 5ecaa67b5a..1f260c20d9 100644
--- a/src/client/widgets/post-form.vue
+++ b/src/client/widgets/post-form.vue
@@ -4,7 +4,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import XPostForm from '@/components/post-form.vue';
+import XPostForm from '@client/components/post-form.vue';
import define from './define';
const widget = define({
diff --git a/src/client/widgets/rss.vue b/src/client/widgets/rss.vue
index 1140a4252f..78ad390d27 100644
--- a/src/client/widgets/rss.vue
+++ b/src/client/widgets/rss.vue
@@ -15,9 +15,9 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faRssSquare, faCog } from '@fortawesome/free-solid-svg-icons';
-import MkContainer from '@/components/ui/container.vue';
+import MkContainer from '@client/components/ui/container.vue';
import define from './define';
-import * as os from '@/os';
+import * as os from '@client/os';
const widget = define({
name: 'rss',
diff --git a/src/client/widgets/server-metric/disk.vue b/src/client/widgets/server-metric/disk.vue
index 41f967d291..fa5933e7b9 100644
--- a/src/client/widgets/server-metric/disk.vue
+++ b/src/client/widgets/server-metric/disk.vue
@@ -14,7 +14,7 @@
import { defineComponent } from 'vue';
import { faHdd } from '@fortawesome/free-solid-svg-icons';
import XPie from './pie.vue';
-import bytes from '@/filters/bytes';
+import bytes from '@client/filters/bytes';
export default defineComponent({
components: {
diff --git a/src/client/widgets/server-metric/index.vue b/src/client/widgets/server-metric/index.vue
index 2ce87ba416..7f2aea6b49 100644
--- a/src/client/widgets/server-metric/index.vue
+++ b/src/client/widgets/server-metric/index.vue
@@ -17,13 +17,13 @@
import { defineComponent } from 'vue';
import { faServer, faSort } from '@fortawesome/free-solid-svg-icons';
import define from '../define';
-import MkContainer from '@/components/ui/container.vue';
+import MkContainer from '@client/components/ui/container.vue';
import XCpuMemory from './cpu-mem.vue';
import XNet from './net.vue';
import XCpu from './cpu.vue';
import XMemory from './mem.vue';
import XDisk from './disk.vue';
-import * as os from '@/os';
+import * as os from '@client/os';
const widget = define({
name: 'serverMetric',
diff --git a/src/client/widgets/server-metric/mem.vue b/src/client/widgets/server-metric/mem.vue
index 83aa71aa09..89fa8fef43 100644
--- a/src/client/widgets/server-metric/mem.vue
+++ b/src/client/widgets/server-metric/mem.vue
@@ -14,7 +14,7 @@
import { defineComponent } from 'vue';
import { faMemory } from '@fortawesome/free-solid-svg-icons';
import XPie from './pie.vue';
-import bytes from '@/filters/bytes';
+import bytes from '@client/filters/bytes';
export default defineComponent({
components: {
diff --git a/src/client/widgets/server-metric/net.vue b/src/client/widgets/server-metric/net.vue
index 23c148eeb6..569c15b58b 100644
--- a/src/client/widgets/server-metric/net.vue
+++ b/src/client/widgets/server-metric/net.vue
@@ -45,7 +45,7 @@
<script lang="ts">
import { defineComponent } from 'vue';
-import bytes from '@/filters/bytes';
+import bytes from '@client/filters/bytes';
export default defineComponent({
props: {
diff --git a/src/client/widgets/slideshow.vue b/src/client/widgets/slideshow.vue
index 5d2e2b1ebd..69c5cc01b2 100644
--- a/src/client/widgets/slideshow.vue
+++ b/src/client/widgets/slideshow.vue
@@ -16,7 +16,7 @@
import { defineComponent } from 'vue';
import { } from '@fortawesome/free-solid-svg-icons';
import define from './define';
-import * as os from '@/os';
+import * as os from '@client/os';
const widget = define({
name: 'slideshow',
diff --git a/src/client/widgets/timeline.vue b/src/client/widgets/timeline.vue
index ee60790cb6..f1ddc9cb80 100644
--- a/src/client/widgets/timeline.vue
+++ b/src/client/widgets/timeline.vue
@@ -23,10 +23,10 @@
import { defineComponent } from 'vue';
import { faAngleDown, faAngleUp, faHome, faShareAlt, faGlobe, faListUl, faSatellite } from '@fortawesome/free-solid-svg-icons';
import { faComments } from '@fortawesome/free-regular-svg-icons';
-import MkContainer from '@/components/ui/container.vue';
-import XTimeline from '@/components/timeline.vue';
+import MkContainer from '@client/components/ui/container.vue';
+import XTimeline from '@client/components/timeline.vue';
import define from './define';
-import * as os from '@/os';
+import * as os from '@client/os';
const widget = define({
name: 'timeline',
diff --git a/src/client/widgets/trends.vue b/src/client/widgets/trends.vue
index 3734573e3c..300e3b31de 100644
--- a/src/client/widgets/trends.vue
+++ b/src/client/widgets/trends.vue
@@ -20,10 +20,10 @@
<script lang="ts">
import { defineComponent } from 'vue';
import { faHashtag } from '@fortawesome/free-solid-svg-icons';
-import MkContainer from '@/components/ui/container.vue';
+import MkContainer from '@client/components/ui/container.vue';
import define from './define';
-import MkMiniChart from '@/components/mini-chart.vue';
-import * as os from '@/os';
+import MkMiniChart from '@client/components/mini-chart.vue';
+import * as os from '@client/os';
const widget = define({
name: 'hashtags',
diff --git a/src/config/load.ts b/src/config/load.ts
index 558bc68e10..0929e80414 100644
--- a/src/config/load.ts
+++ b/src/config/load.ts
@@ -5,7 +5,7 @@
import * as fs from 'fs';
import * as yaml from 'js-yaml';
import { Source, Mixin } from './types';
-import * as meta from '../meta.json';
+const meta = require('../meta.json');
/**
* Path of configuration directory
diff --git a/src/db/elasticsearch.ts b/src/db/elasticsearch.ts
index 048e399bdf..58455b510d 100644
--- a/src/db/elasticsearch.ts
+++ b/src/db/elasticsearch.ts
@@ -1,5 +1,5 @@
import * as elasticsearch from '@elastic/elasticsearch';
-import config from '../config';
+import config from '@/config';
const index = {
settings: {
diff --git a/src/db/postgre.ts b/src/db/postgre.ts
index 831e5e0592..d53d315f7b 100644
--- a/src/db/postgre.ts
+++ b/src/db/postgre.ts
@@ -3,7 +3,7 @@ const types = require('pg').types;
types.setTypeParser(20, Number);
import { createConnection, Logger, getConnection } from 'typeorm';
-import config from '../config';
+import config from '@/config';
import { entities as charts } from '../services/chart/entities';
import { dbLogger } from './logger';
import * as highlight from 'cli-highlight';
diff --git a/src/db/redis.ts b/src/db/redis.ts
index 41d030149c..a10422846f 100644
--- a/src/db/redis.ts
+++ b/src/db/redis.ts
@@ -1,12 +1,19 @@
import * as redis from 'redis';
-import config from '../config';
+import config from '@/config';
-export default redis.createClient(
- config.redis.port,
- config.redis.host,
- {
- password: config.redis.pass,
- prefix: config.redis.prefix,
- db: config.redis.db || 0
- }
-);
+export function createConnection() {
+ return redis.createClient(
+ config.redis.port,
+ config.redis.host,
+ {
+ password: config.redis.pass,
+ prefix: config.redis.prefix,
+ db: config.redis.db || 0
+ }
+ );
+}
+
+export const subsdcriber = createConnection();
+subsdcriber.subscribe(config.host);
+
+export const redisClient = createConnection();
diff --git a/src/mfm/language.ts b/src/mfm/language.ts
index cf00f06324..bad7b10a0d 100644
--- a/src/mfm/language.ts
+++ b/src/mfm/language.ts
@@ -1,9 +1,9 @@
import * as P from 'parsimmon';
import { createLeaf, createTree, urlRegex } from './prelude';
import { takeWhile, cumulativeSum } from '../prelude/array';
-import parseAcct from '../misc/acct/parse';
+import parseAcct from '@/misc/acct/parse';
import { toUnicode } from 'punycode';
-import { emojiRegex } from '../misc/emoji-regex';
+import { emojiRegex } from '@/misc/emoji-regex';
export function removeOrphanedBrackets(s: string): string {
const openBrackets = ['(', '「', '['];
diff --git a/src/mfm/to-html.ts b/src/mfm/to-html.ts
index c09272caad..66015d539f 100644
--- a/src/mfm/to-html.ts
+++ b/src/mfm/to-html.ts
@@ -1,5 +1,5 @@
import { JSDOM } from 'jsdom';
-import config from '../config';
+import config from '@/config';
import { intersperse } from '../prelude/array';
import { MfmForest, MfmTree } from './prelude';
import { IMentionedRemoteUsers } from '../models/entities/note';
diff --git a/src/mfm/to-string.ts b/src/mfm/to-string.ts
index b70b99cbda..347c94c247 100644
--- a/src/mfm/to-string.ts
+++ b/src/mfm/to-string.ts
@@ -1,5 +1,5 @@
import { MfmForest, MfmTree } from './prelude';
-import { nyaize } from '../misc/nyaize';
+import { nyaize } from '@/misc/nyaize';
export type RestoreOptions = {
doNyaize?: boolean;
diff --git a/src/misc/antenna-cache.ts b/src/misc/antenna-cache.ts
new file mode 100644
index 0000000000..6be1c18db5
--- /dev/null
+++ b/src/misc/antenna-cache.ts
@@ -0,0 +1,36 @@
+import { Antennas } from '../models';
+import { Antenna } from '../models/entities/antenna';
+import { subsdcriber } from '../db/redis';
+
+let antennasFetched = false;
+let antennas: Antenna[] = [];
+
+export async function getAntennas() {
+ if (!antennasFetched) {
+ antennas = await Antennas.find();
+ antennasFetched = true;
+ }
+
+ return antennas;
+}
+
+subsdcriber.on('message', async (_, data) => {
+ const obj = JSON.parse(data);
+
+ if (obj.channel === 'internal') {
+ const { type, body } = obj.message;
+ switch (type) {
+ case 'antennaCreated':
+ antennas.push(body);
+ break;
+ case 'antennaUpdated':
+ antennas[antennas.findIndex(a => a.id === body.id)] = body;
+ break;
+ case 'antennaDeleted':
+ antennas = antennas.filter(a => a.id !== body.id);
+ break;
+ default:
+ break;
+ }
+ }
+});
diff --git a/src/misc/app-lock.ts b/src/misc/app-lock.ts
index 847299b46d..9ae2cba478 100644
--- a/src/misc/app-lock.ts
+++ b/src/misc/app-lock.ts
@@ -1,4 +1,4 @@
-import redis from '../db/redis';
+import { redisClient } from '../db/redis';
import { promisify } from 'util';
/**
@@ -7,8 +7,8 @@ import { promisify } from 'util';
const retryDelay = 100;
const lock: (key: string, timeout?: number) => Promise<() => void>
- = redis
- ? promisify(require('redis-lock')(redis, retryDelay))
+ = redisClient
+ ? promisify(require('redis-lock')(redisClient, retryDelay))
: async () => () => { };
/**
diff --git a/src/misc/captcha.ts b/src/misc/captcha.ts
index 87ec143ca8..727c86af0f 100644
--- a/src/misc/captcha.ts
+++ b/src/misc/captcha.ts
@@ -1,7 +1,7 @@
import fetch from 'node-fetch';
import { URLSearchParams } from 'url';
import { getAgentByUrl } from './fetch';
-import config from '../config';
+import config from '@/config';
export async function verifyRecaptcha(secret: string, response: string) {
const result = await getCaptchaResponse('https://www.recaptcha.net/recaptcha/api/siteverify', secret, response).catch(e => {
diff --git a/src/misc/check-hit-antenna.ts b/src/misc/check-hit-antenna.ts
index 0464f14131..9897dd414e 100644
--- a/src/misc/check-hit-antenna.ts
+++ b/src/misc/check-hit-antenna.ts
@@ -4,18 +4,24 @@ import { User } from '../models/entities/user';
import { UserListJoinings, UserGroupJoinings } from '../models';
import parseAcct from './acct/parse';
import { getFullApAccount } from './convert-host';
+import { PackedNote } from '../models/repositories/note';
-export async function checkHitAntenna(antenna: Antenna, note: Note, noteUser: User, followers: User['id'][]): Promise<boolean> {
+/**
+ * noteUserFollowers / antennaUserFollowing はどちらか一方が指定されていればよい
+ */
+export async function checkHitAntenna(antenna: Antenna, note: (Note | PackedNote), noteUser: { username: string; host: string | null; }, noteUserFollowers?: User['id'][], antennaUserFollowing?: User['id'][]): Promise<boolean> {
if (note.visibility === 'specified') return false;
if (note.visibility === 'followers') {
- if (!followers.includes(antenna.userId)) return false;
+ if (noteUserFollowers && !noteUserFollowers.includes(antenna.userId)) return false;
+ if (antennaUserFollowing && !antennaUserFollowing.includes(note.userId)) return false;
}
if (!antenna.withReplies && note.replyId != null) return false;
if (antenna.src === 'home') {
- if (!followers.includes(antenna.userId)) return false;
+ if (noteUserFollowers && !noteUserFollowers.includes(antenna.userId)) return false;
+ if (antennaUserFollowing && !antennaUserFollowing.includes(note.userId)) return false;
} else if (antenna.src === 'list') {
const listUsers = (await UserListJoinings.find({
userListId: antenna.userListId!
@@ -75,7 +81,7 @@ export async function checkHitAntenna(antenna: Antenna, note: Note, noteUser: Us
}
if (antenna.withFile) {
- if (note.fileIds.length === 0) return false;
+ if (note.fileIds && note.fileIds.length === 0) return false;
}
// TODO: eval expression
diff --git a/src/misc/convert-host.ts b/src/misc/convert-host.ts
index ad52e12588..f8957a64a8 100644
--- a/src/misc/convert-host.ts
+++ b/src/misc/convert-host.ts
@@ -1,4 +1,5 @@
-import config from '../config';
+import { URL } from 'url';
+import config from '@/config';
import { toASCII } from 'punycode';
export function getFullApAccount(username: string, host: string | null) {
diff --git a/src/misc/download-url.ts b/src/misc/download-url.ts
index aaba302a5c..dafeff6fc8 100644
--- a/src/misc/download-url.ts
+++ b/src/misc/download-url.ts
@@ -1,10 +1,11 @@
import * as fs from 'fs';
import * as stream from 'stream';
import * as util from 'util';
+import { URL } from 'url';
import fetch from 'node-fetch';
import { getAgentByUrl } from './fetch';
import { AbortController } from 'abort-controller';
-import config from '../config';
+import config from '@/config';
import * as chalk from 'chalk';
import Logger from '../services/logger';
diff --git a/src/misc/fetch.ts b/src/misc/fetch.ts
index 90d89a4392..ee671f59be 100644
--- a/src/misc/fetch.ts
+++ b/src/misc/fetch.ts
@@ -4,7 +4,7 @@ import * as cache from 'lookup-dns-cache';
import fetch, { HeadersInit } from 'node-fetch';
import { HttpProxyAgent } from 'http-proxy-agent';
import { HttpsProxyAgent } from 'https-proxy-agent';
-import config from '../config';
+import config from '@/config';
import { URL } from 'url';
export async function getJson(url: string, accept = 'application/json, */*', timeout = 10000, headers?: HeadersInit) {
diff --git a/src/misc/gen-id.ts b/src/misc/gen-id.ts
index 8562767bf8..8e7e0b6113 100644
--- a/src/misc/gen-id.ts
+++ b/src/misc/gen-id.ts
@@ -3,7 +3,7 @@ import { genAid } from './id/aid';
import { genMeid } from './id/meid';
import { genMeidg } from './id/meidg';
import { genObjectId } from './id/object-id';
-import config from '../config';
+import config from '@/config';
const metohd = config.id.toLowerCase();
diff --git a/src/models/repositories/antenna.ts b/src/models/repositories/antenna.ts
index 84e082bd25..787e5c8e2b 100644
--- a/src/models/repositories/antenna.ts
+++ b/src/models/repositories/antenna.ts
@@ -1,6 +1,6 @@
import { EntityRepository, Repository } from 'typeorm';
import { Antenna } from '../entities/antenna';
-import { SchemaType } from '../../misc/schema';
+import { SchemaType } from '@/misc/schema';
import { AntennaNotes, UserGroupJoinings } from '..';
export type PackedAntenna = SchemaType<typeof packedAntennaSchema>;
diff --git a/src/models/repositories/app.ts b/src/models/repositories/app.ts
index 33e0f41156..c919a9bdb1 100644
--- a/src/models/repositories/app.ts
+++ b/src/models/repositories/app.ts
@@ -1,7 +1,7 @@
import { EntityRepository, Repository } from 'typeorm';
import { App } from '../entities/app';
import { AccessTokens } from '..';
-import { SchemaType } from '../../misc/schema';
+import { SchemaType } from '@/misc/schema';
export type PackedApp = SchemaType<typeof packedAppSchema>;
@@ -9,7 +9,7 @@ export type PackedApp = SchemaType<typeof packedAppSchema>;
export class AppRepository extends Repository<App> {
public async pack(
src: App['id'] | App,
- me?: any,
+ me?: { id: User['id'] } | null | undefined,
options?: {
detail?: boolean,
includeSecret?: boolean,
diff --git a/src/models/repositories/auth-session.ts b/src/models/repositories/auth-session.ts
index e985d6925f..f513357e1b 100644
--- a/src/models/repositories/auth-session.ts
+++ b/src/models/repositories/auth-session.ts
@@ -2,12 +2,13 @@ import { EntityRepository, Repository } from 'typeorm';
import { Apps } from '..';
import { AuthSession } from '../entities/auth-session';
import { awaitAll } from '../../prelude/await-all';
+import { User } from '../entities/user';
@EntityRepository(AuthSession)
export class AuthSessionRepository extends Repository<AuthSession> {
public async pack(
src: AuthSession['id'] | AuthSession,
- me?: any
+ me?: { id: User['id'] } | null | undefined
) {
const session = typeof src === 'object' ? src : await this.findOneOrFail(src);
diff --git a/src/models/repositories/blocking.ts b/src/models/repositories/blocking.ts
index 314f459e65..60b43fae3e 100644
--- a/src/models/repositories/blocking.ts
+++ b/src/models/repositories/blocking.ts
@@ -2,7 +2,8 @@ import { EntityRepository, Repository } from 'typeorm';
import { Users } from '..';
import { Blocking } from '../entities/blocking';
import { awaitAll } from '../../prelude/await-all';
-import { SchemaType } from '../../misc/schema';
+import { SchemaType } from '@/misc/schema';
+import { User } from '../entities/user';
export type PackedBlocking = SchemaType<typeof packedBlockingSchema>;
@@ -10,7 +11,7 @@ export type PackedBlocking = SchemaType<typeof packedBlockingSchema>;
export class BlockingRepository extends Repository<Blocking> {
public async pack(
src: Blocking['id'] | Blocking,
- me?: any
+ me?: { id: User['id'] } | null | undefined
): Promise<PackedBlocking> {
const blocking = typeof src === 'object' ? src : await this.findOneOrFail(src);
@@ -26,7 +27,7 @@ export class BlockingRepository extends Repository<Blocking> {
public packMany(
blockings: any[],
- me: any
+ me: { id: User['id'] }
) {
return Promise.all(blockings.map(x => this.pack(x, me)));
}
diff --git a/src/models/repositories/channel.ts b/src/models/repositories/channel.ts
index 2654c9d6f3..a1c85f2bd7 100644
--- a/src/models/repositories/channel.ts
+++ b/src/models/repositories/channel.ts
@@ -1,6 +1,6 @@
import { EntityRepository, Repository } from 'typeorm';
import { Channel } from '../entities/channel';
-import { SchemaType } from '../../misc/schema';
+import { SchemaType } from '@/misc/schema';
import { DriveFiles, ChannelFollowings, NoteUnreads } from '..';
import { User } from '../entities/user';
@@ -10,19 +10,19 @@ export type PackedChannel = SchemaType<typeof packedChannelSchema>;
export class ChannelRepository extends Repository<Channel> {
public async pack(
src: Channel['id'] | Channel,
- me?: User['id'] | User | null | undefined,
+ me?: { id: User['id'] } | null | undefined,
): Promise<PackedChannel> {
const channel = typeof src === 'object' ? src : await this.findOneOrFail(src);
- const meId = me ? typeof me === 'string' ? me : me.id : null;
+ const meId = me ? me.id : null;
const banner = channel.bannerId ? await DriveFiles.findOne(channel.bannerId) : null;
- const hasUnreadNote = me ? (await NoteUnreads.findOne({ noteChannelId: channel.id, userId: meId })) != null : undefined;
+ const hasUnreadNote = meId ? (await NoteUnreads.findOne({ noteChannelId: channel.id, userId: meId })) != null : undefined;
- const following = await ChannelFollowings.findOne({
+ const following = meId ? await ChannelFollowings.findOne({
followerId: meId,
followeeId: channel.id,
- });
+ }) : null;
return {
id: channel.id,
diff --git a/src/models/repositories/clip.ts b/src/models/repositories/clip.ts
index 84891a4372..8d1f63c44b 100644
--- a/src/models/repositories/clip.ts
+++ b/src/models/repositories/clip.ts
@@ -1,6 +1,6 @@
import { EntityRepository, Repository } from 'typeorm';
import { Clip } from '../entities/clip';
-import { SchemaType } from '../../misc/schema';
+import { SchemaType } from '@/misc/schema';
import { Users } from '..';
import { awaitAll } from '../../prelude/await-all';
diff --git a/src/models/repositories/drive-file.ts b/src/models/repositories/drive-file.ts
index 61d24bd24e..590079fe4a 100644
--- a/src/models/repositories/drive-file.ts
+++ b/src/models/repositories/drive-file.ts
@@ -2,13 +2,13 @@ import { EntityRepository, Repository } from 'typeorm';
import { DriveFile } from '../entities/drive-file';
import { Users, DriveFolders } from '..';
import { User } from '../entities/user';
-import { toPuny } from '../../misc/convert-host';
+import { toPuny } from '@/misc/convert-host';
import { awaitAll } from '../../prelude/await-all';
-import { SchemaType } from '../../misc/schema';
-import config from '../../config';
+import { SchemaType } from '@/misc/schema';
+import config from '@/config';
import { query, appendQuery } from '../../prelude/url';
import { Meta } from '../entities/meta';
-import { fetchMeta } from '../../misc/fetch-meta';
+import { fetchMeta } from '@/misc/fetch-meta';
export type PackedDriveFile = SchemaType<typeof packedDriveFileSchema>;
@@ -53,7 +53,7 @@ export class DriveFileRepository extends Repository<DriveFile> {
return thumbnail ? (file.thumbnailUrl || (isImage ? (file.webpublicUrl || file.url) : null)) : (file.webpublicUrl || file.url);
}
- public async calcDriveUsageOf(user: User['id'] | User): Promise<number> {
+ public async calcDriveUsageOf(user: User['id'] | { id: User['id'] }): Promise<number> {
const id = typeof user === 'object' ? user.id : user;
const { sum } = await this
diff --git a/src/models/repositories/drive-folder.ts b/src/models/repositories/drive-folder.ts
index 2a18220384..cc07c56675 100644
--- a/src/models/repositories/drive-folder.ts
+++ b/src/models/repositories/drive-folder.ts
@@ -2,7 +2,7 @@ import { EntityRepository, Repository } from 'typeorm';
import { DriveFolders, DriveFiles } from '..';
import { DriveFolder } from '../entities/drive-folder';
import { awaitAll } from '../../prelude/await-all';
-import { SchemaType } from '../../misc/schema';
+import { SchemaType } from '@/misc/schema';
export type PackedDriveFolder = SchemaType<typeof packedDriveFolderSchema>;
diff --git a/src/models/repositories/federation-instance.ts b/src/models/repositories/federation-instance.ts
index c6b08dc101..15e8023ee9 100644
--- a/src/models/repositories/federation-instance.ts
+++ b/src/models/repositories/federation-instance.ts
@@ -1,4 +1,4 @@
-import config from '../../config';
+import config from '@/config';
export const packedFederationInstanceSchema = {
type: 'object' as const,
diff --git a/src/models/repositories/follow-request.ts b/src/models/repositories/follow-request.ts
index 0d96b8eb53..31e5fb2d90 100644
--- a/src/models/repositories/follow-request.ts
+++ b/src/models/repositories/follow-request.ts
@@ -1,12 +1,13 @@
import { EntityRepository, Repository } from 'typeorm';
import { FollowRequest } from '../entities/follow-request';
import { Users } from '..';
+import { User } from '../entities/user';
@EntityRepository(FollowRequest)
export class FollowRequestRepository extends Repository<FollowRequest> {
public async pack(
src: FollowRequest['id'] | FollowRequest,
- me?: any
+ me?: { id: User['id'] } | null | undefined
) {
const request = typeof src === 'object' ? src : await this.findOneOrFail(src);
diff --git a/src/models/repositories/following.ts b/src/models/repositories/following.ts
index 986f107e7d..b886432978 100644
--- a/src/models/repositories/following.ts
+++ b/src/models/repositories/following.ts
@@ -2,7 +2,8 @@ import { EntityRepository, Repository } from 'typeorm';
import { Users } from '..';
import { Following } from '../entities/following';
import { awaitAll } from '../../prelude/await-all';
-import { SchemaType } from '../../misc/schema';
+import { SchemaType } from '@/misc/schema';
+import { User } from '../entities/user';
type LocalFollowerFollowing = Following & {
followerHost: null;
@@ -50,7 +51,7 @@ export class FollowingRepository extends Repository<Following> {
public async pack(
src: Following['id'] | Following,
- me?: any,
+ me?: { id: User['id'] } | null | undefined,
opts?: {
populateFollowee?: boolean;
populateFollower?: boolean;
@@ -76,7 +77,7 @@ export class FollowingRepository extends Repository<Following> {
public packMany(
followings: any[],
- me?: any,
+ me?: { id: User['id'] } | null | undefined,
opts?: {
populateFollowee?: boolean;
populateFollower?: boolean;
diff --git a/src/models/repositories/games/reversi/game.ts b/src/models/repositories/games/reversi/game.ts
index e23247f664..344cf7b20e 100644
--- a/src/models/repositories/games/reversi/game.ts
+++ b/src/models/repositories/games/reversi/game.ts
@@ -1,3 +1,4 @@
+import { User } from '@/models/entities/user';
import { EntityRepository, Repository } from 'typeorm';
import { Users } from '../../..';
import { ReversiGame } from '../../../entities/games/reversi/game';
@@ -6,7 +7,7 @@ import { ReversiGame } from '../../../entities/games/reversi/game';
export class ReversiGameRepository extends Repository<ReversiGame> {
public async pack(
src: ReversiGame['id'] | ReversiGame,
- me?: any,
+ me?: { id: User['id'] } | null | undefined,
options?: {
detail?: boolean
}
@@ -16,7 +17,6 @@ export class ReversiGameRepository extends Repository<ReversiGame> {
}, options);
const game = typeof src === 'object' ? src : await this.findOneOrFail(src);
- const meId = me ? typeof me === 'string' ? me : me.id : null;
return {
id: game.id,
@@ -30,10 +30,10 @@ export class ReversiGameRepository extends Repository<ReversiGame> {
user2Accepted: game.user2Accepted,
user1Id: game.user1Id,
user2Id: game.user2Id,
- user1: await Users.pack(game.user1Id, meId),
- user2: await Users.pack(game.user2Id, meId),
+ user1: await Users.pack(game.user1Id, me),
+ user2: await Users.pack(game.user2Id, me),
winnerId: game.winnerId,
- winner: game.winnerId ? await Users.pack(game.winnerId, meId) : null,
+ winner: game.winnerId ? await Users.pack(game.winnerId, me) : null,
surrendered: game.surrendered,
black: game.black,
bw: game.bw,
diff --git a/src/models/repositories/games/reversi/matching.ts b/src/models/repositories/games/reversi/matching.ts
index 51f17c9a4e..013021eb90 100644
--- a/src/models/repositories/games/reversi/matching.ts
+++ b/src/models/repositories/games/reversi/matching.ts
@@ -2,12 +2,13 @@ import { EntityRepository, Repository } from 'typeorm';
import { ReversiMatching } from '../../../entities/games/reversi/matching';
import { Users } from '../../..';
import { awaitAll } from '../../../../prelude/await-all';
+import { User } from '@/models/entities/user';
@EntityRepository(ReversiMatching)
export class ReversiMatchingRepository extends Repository<ReversiMatching> {
public async pack(
src: ReversiMatching['id'] | ReversiMatching,
- me: any
+ me: { id: User['id'] }
) {
const matching = typeof src === 'object' ? src : await this.findOneOrFail(src);
diff --git a/src/models/repositories/hashtag.ts b/src/models/repositories/hashtag.ts
index fb54a12e13..0089ab50db 100644
--- a/src/models/repositories/hashtag.ts
+++ b/src/models/repositories/hashtag.ts
@@ -1,6 +1,6 @@
import { EntityRepository, Repository } from 'typeorm';
import { Hashtag } from '../entities/hashtag';
-import { SchemaType } from '../../misc/schema';
+import { SchemaType } from '@/misc/schema';
export type PackedHashtag = SchemaType<typeof packedHashtagSchema>;
diff --git a/src/models/repositories/messaging-message.ts b/src/models/repositories/messaging-message.ts
index 0e04c25864..8d6d03a236 100644
--- a/src/models/repositories/messaging-message.ts
+++ b/src/models/repositories/messaging-message.ts
@@ -1,7 +1,8 @@
import { EntityRepository, Repository } from 'typeorm';
import { MessagingMessage } from '../entities/messaging-message';
import { Users, DriveFiles, UserGroups } from '..';
-import { SchemaType } from '../../misc/schema';
+import { SchemaType } from '@/misc/schema';
+import { User } from '../entities/user';
export type PackedMessagingMessage = SchemaType<typeof packedMessagingMessageSchema>;
@@ -13,7 +14,7 @@ export class MessagingMessageRepository extends Repository<MessagingMessage> {
public async pack(
src: MessagingMessage['id'] | MessagingMessage,
- me?: any,
+ me?: { id: User['id'] } | null | undefined,
options?: {
populateRecipient?: boolean,
populateGroup?: boolean,
diff --git a/src/models/repositories/muting.ts b/src/models/repositories/muting.ts
index 5fd409df78..b5bbe8a0a3 100644
--- a/src/models/repositories/muting.ts
+++ b/src/models/repositories/muting.ts
@@ -2,7 +2,8 @@ import { EntityRepository, Repository } from 'typeorm';
import { Users } from '..';
import { Muting } from '../entities/muting';
import { awaitAll } from '../../prelude/await-all';
-import { SchemaType } from '../../misc/schema';
+import { SchemaType } from '@/misc/schema';
+import { User } from '../entities/user';
export type PackedMuting = SchemaType<typeof packedMutingSchema>;
@@ -10,7 +11,7 @@ export type PackedMuting = SchemaType<typeof packedMutingSchema>;
export class MutingRepository extends Repository<Muting> {
public async pack(
src: Muting['id'] | Muting,
- me?: any
+ me?: { id: User['id'] } | null | undefined
): Promise<PackedMuting> {
const muting = typeof src === 'object' ? src : await this.findOneOrFail(src);
@@ -26,7 +27,7 @@ export class MutingRepository extends Repository<Muting> {
public packMany(
mutings: any[],
- me: any
+ me: { id: User['id'] }
) {
return Promise.all(mutings.map(x => this.pack(x, me)));
}
diff --git a/src/models/repositories/note-favorite.ts b/src/models/repositories/note-favorite.ts
index eb2ffff4c1..316ebdff35 100644
--- a/src/models/repositories/note-favorite.ts
+++ b/src/models/repositories/note-favorite.ts
@@ -1,12 +1,13 @@
import { EntityRepository, Repository } from 'typeorm';
import { NoteFavorite } from '../entities/note-favorite';
import { Notes } from '..';
+import { User } from '../entities/user';
@EntityRepository(NoteFavorite)
export class NoteFavoriteRepository extends Repository<NoteFavorite> {
public async pack(
src: NoteFavorite['id'] | NoteFavorite,
- me?: any
+ me?: { id: User['id'] } | null | undefined
) {
const favorite = typeof src === 'object' ? src : await this.findOneOrFail(src);
@@ -20,7 +21,7 @@ export class NoteFavoriteRepository extends Repository<NoteFavorite> {
public packMany(
favorites: any[],
- me: any
+ me: { id: User['id'] }
) {
return Promise.all(favorites.map(x => this.pack(x, me)));
}
diff --git a/src/models/repositories/note-reaction.ts b/src/models/repositories/note-reaction.ts
index 785a876bf8..4c56809603 100644
--- a/src/models/repositories/note-reaction.ts
+++ b/src/models/repositories/note-reaction.ts
@@ -1,8 +1,9 @@
import { EntityRepository, Repository } from 'typeorm';
import { NoteReaction } from '../entities/note-reaction';
import { Users } from '..';
-import { SchemaType } from '../../misc/schema';
-import { convertLegacyReaction } from '../../misc/reaction-lib';
+import { SchemaType } from '@/misc/schema';
+import { convertLegacyReaction } from '@/misc/reaction-lib';
+import { User } from '../entities/user';
export type PackedNoteReaction = SchemaType<typeof packedNoteReactionSchema>;
@@ -10,7 +11,7 @@ export type PackedNoteReaction = SchemaType<typeof packedNoteReactionSchema>;
export class NoteReactionRepository extends Repository<NoteReaction> {
public async pack(
src: NoteReaction['id'] | NoteReaction,
- me?: any
+ me?: { id: User['id'] } | null | undefined
): Promise<PackedNoteReaction> {
const reaction = typeof src === 'object' ? src : await this.findOneOrFail(src);
diff --git a/src/models/repositories/note.ts b/src/models/repositories/note.ts
index 73e18f6c5b..3642a03c2c 100644
--- a/src/models/repositories/note.ts
+++ b/src/models/repositories/note.ts
@@ -2,13 +2,13 @@ import { EntityRepository, Repository, In } from 'typeorm';
import { Note } from '../entities/note';
import { User } from '../entities/user';
import { Users, PollVotes, DriveFiles, NoteReactions, Followings, Polls, Channels } from '..';
-import { SchemaType } from '../../misc/schema';
+import { SchemaType } from '@/misc/schema';
import { awaitAll } from '../../prelude/await-all';
-import { convertLegacyReaction, convertLegacyReactions, decodeReaction } from '../../misc/reaction-lib';
+import { convertLegacyReaction, convertLegacyReactions, decodeReaction } from '@/misc/reaction-lib';
import { toString } from '../../mfm/to-string';
import { parse } from '../../mfm/parse';
import { NoteReaction } from '../entities/note-reaction';
-import { aggregateNoteEmojis, populateEmojis, prefetchEmojis } from '../../misc/populate-emojis';
+import { aggregateNoteEmojis, populateEmojis, prefetchEmojis } from '@/misc/populate-emojis';
export type PackedNote = SchemaType<typeof packedNoteSchema>;
@@ -79,7 +79,7 @@ export class NoteRepository extends Repository<Note> {
public async pack(
src: Note['id'] | Note,
- me?: User['id'] | User | null | undefined,
+ me?: { id: User['id'] } | null | undefined,
options?: {
detail?: boolean;
skipHide?: boolean;
@@ -93,7 +93,7 @@ export class NoteRepository extends Repository<Note> {
skipHide: false
}, options);
- const meId = me ? typeof me === 'string' ? me : me.id : null;
+ const meId = me ? me.id : null;
const note = typeof src === 'object' ? src : await this.findOneOrFail(src);
const host = note.userHost;
@@ -174,7 +174,7 @@ export class NoteRepository extends Repository<Note> {
id: note.id,
createdAt: note.createdAt.toISOString(),
userId: note.userId,
- user: Users.pack(note.user || note.userId, meId, {
+ user: Users.pack(note.user || note.userId, me, {
detail: false,
}),
text: text,
@@ -204,12 +204,12 @@ export class NoteRepository extends Repository<Note> {
_prId_: (note as any)._prId_ || undefined,
...(opts.detail ? {
- reply: note.replyId ? this.pack(note.reply || note.replyId, meId, {
+ reply: note.replyId ? this.pack(note.reply || note.replyId, me, {
detail: false,
_hint_: options?._hint_
}) : undefined,
- renote: note.renoteId ? this.pack(note.renote || note.renoteId, meId, {
+ renote: note.renoteId ? this.pack(note.renote || note.renoteId, me, {
detail: true,
_hint_: options?._hint_
}) : undefined,
@@ -236,7 +236,7 @@ export class NoteRepository extends Repository<Note> {
public async packMany(
notes: Note[],
- me?: User['id'] | User | null | undefined,
+ me?: { id: User['id'] } | null | undefined,
options?: {
detail?: boolean;
skipHide?: boolean;
@@ -244,7 +244,7 @@ export class NoteRepository extends Repository<Note> {
) {
if (notes.length === 0) return [];
- const meId = me ? typeof me === 'string' ? me : me.id : null;
+ const meId = me ? me.id : null;
const myReactionsMap = new Map<Note['id'], NoteReaction | null>();
if (meId) {
const renoteIds = notes.filter(n => n.renoteId != null).map(n => n.renoteId!);
diff --git a/src/models/repositories/notification.ts b/src/models/repositories/notification.ts
index 83fe11d5f7..abadea4632 100644
--- a/src/models/repositories/notification.ts
+++ b/src/models/repositories/notification.ts
@@ -2,11 +2,11 @@ import { EntityRepository, In, Repository } from 'typeorm';
import { Users, Notes, UserGroupInvitations, AccessTokens, NoteReactions } from '..';
import { Notification } from '../entities/notification';
import { awaitAll } from '../../prelude/await-all';
-import { SchemaType } from '../../misc/schema';
+import { SchemaType } from '@/misc/schema';
import { Note } from '../entities/note';
import { NoteReaction } from '../entities/note-reaction';
import { User } from '../entities/user';
-import { aggregateNoteEmojis, prefetchEmojis } from '../../misc/populate-emojis';
+import { aggregateNoteEmojis, prefetchEmojis } from '@/misc/populate-emojis';
export type PackedNotification = SchemaType<typeof packedNotificationSchema>;
@@ -31,38 +31,38 @@ export class NotificationRepository extends Repository<Notification> {
userId: notification.notifierId,
user: notification.notifierId ? Users.pack(notification.notifier || notification.notifierId) : null,
...(notification.type === 'mention' ? {
- note: Notes.pack(notification.note || notification.noteId!, notification.notifieeId, {
+ note: Notes.pack(notification.note || notification.noteId!, { id: notification.notifieeId }, {
detail: true,
_hint_: options._hintForEachNotes_
}),
} : {}),
...(notification.type === 'reply' ? {
- note: Notes.pack(notification.note || notification.noteId!, notification.notifieeId, {
+ note: Notes.pack(notification.note || notification.noteId!, { id: notification.notifieeId }, {
detail: true,
_hint_: options._hintForEachNotes_
}),
} : {}),
...(notification.type === 'renote' ? {
- note: Notes.pack(notification.note || notification.noteId!, notification.notifieeId, {
+ note: Notes.pack(notification.note || notification.noteId!, { id: notification.notifieeId }, {
detail: true,
_hint_: options._hintForEachNotes_
}),
} : {}),
...(notification.type === 'quote' ? {
- note: Notes.pack(notification.note || notification.noteId!, notification.notifieeId, {
+ note: Notes.pack(notification.note || notification.noteId!, { id: notification.notifieeId }, {
detail: true,
_hint_: options._hintForEachNotes_
}),
} : {}),
...(notification.type === 'reaction' ? {
- note: Notes.pack(notification.note || notification.noteId!, notification.notifieeId, {
+ note: Notes.pack(notification.note || notification.noteId!, { id: notification.notifieeId }, {
detail: true,
_hint_: options._hintForEachNotes_
}),
reaction: notification.reaction
} : {}),
...(notification.type === 'pollVote' ? {
- note: Notes.pack(notification.note || notification.noteId!, notification.notifieeId, {
+ note: Notes.pack(notification.note || notification.noteId!, { id: notification.notifieeId }, {
detail: true,
_hint_: options._hintForEachNotes_
}),
diff --git a/src/models/repositories/page-like.ts b/src/models/repositories/page-like.ts
index 94b1685e5e..cfef950f3b 100644
--- a/src/models/repositories/page-like.ts
+++ b/src/models/repositories/page-like.ts
@@ -1,12 +1,13 @@
import { EntityRepository, Repository } from 'typeorm';
import { PageLike } from '../entities/page-like';
import { Pages } from '..';
+import { User } from '../entities/user';
@EntityRepository(PageLike)
export class PageLikeRepository extends Repository<PageLike> {
public async pack(
src: PageLike['id'] | PageLike,
- me?: any
+ me?: { id: User['id'] } | null | undefined
) {
const like = typeof src === 'object' ? src : await this.findOneOrFail(src);
@@ -18,7 +19,7 @@ export class PageLikeRepository extends Repository<PageLike> {
public packMany(
likes: any[],
- me: any
+ me: { id: User['id'] }
) {
return Promise.all(likes.map(x => this.pack(x, me)));
}
diff --git a/src/models/repositories/page.ts b/src/models/repositories/page.ts
index 1b30b6645b..a162a50321 100644
--- a/src/models/repositories/page.ts
+++ b/src/models/repositories/page.ts
@@ -1,6 +1,6 @@
import { EntityRepository, Repository } from 'typeorm';
import { Page } from '../entities/page';
-import { SchemaType } from '../../misc/schema';
+import { SchemaType } from '@/misc/schema';
import { Users, DriveFiles, PageLikes } from '..';
import { awaitAll } from '../../prelude/await-all';
import { DriveFile } from '../entities/drive-file';
@@ -12,9 +12,9 @@ export type PackedPage = SchemaType<typeof packedPageSchema>;
export class PageRepository extends Repository<Page> {
public async pack(
src: Page['id'] | Page,
- me?: User['id'] | User | null | undefined,
+ me?: { id: User['id'] } | null | undefined,
): Promise<PackedPage> {
- const meId = me ? typeof me === 'string' ? me : me.id : null;
+ const meId = me ? me.id : null;
const page = typeof src === 'object' ? src : await this.findOneOrFail(src);
const attachedFiles: Promise<DriveFile | undefined>[] = [];
@@ -84,7 +84,7 @@ export class PageRepository extends Repository<Page> {
public packMany(
pages: Page[],
- me?: User['id'] | User | null | undefined,
+ me?: { id: User['id'] } | null | undefined,
) {
return Promise.all(pages.map(x => this.pack(x, me)));
}
diff --git a/src/models/repositories/user-group.ts b/src/models/repositories/user-group.ts
index a1b226f154..9861b23356 100644
--- a/src/models/repositories/user-group.ts
+++ b/src/models/repositories/user-group.ts
@@ -1,7 +1,7 @@
import { EntityRepository, Repository } from 'typeorm';
import { UserGroup } from '../entities/user-group';
import { UserGroupJoinings } from '..';
-import { SchemaType } from '../../misc/schema';
+import { SchemaType } from '@/misc/schema';
export type PackedUserGroup = SchemaType<typeof packedUserGroupSchema>;
diff --git a/src/models/repositories/user-list.ts b/src/models/repositories/user-list.ts
index 9421aeb0c7..094abace63 100644
--- a/src/models/repositories/user-list.ts
+++ b/src/models/repositories/user-list.ts
@@ -1,7 +1,7 @@
import { EntityRepository, Repository } from 'typeorm';
import { UserList } from '../entities/user-list';
import { UserListJoinings } from '..';
-import { SchemaType } from '../../misc/schema';
+import { SchemaType } from '@/misc/schema';
export type PackedUserList = SchemaType<typeof packedUserListSchema>;
diff --git a/src/models/repositories/user.ts b/src/models/repositories/user.ts
index 53c06f3f16..bb084f0245 100644
--- a/src/models/repositories/user.ts
+++ b/src/models/repositories/user.ts
@@ -2,10 +2,11 @@ import $ from 'cafy';
import { EntityRepository, Repository, In, Not } from 'typeorm';
import { User, ILocalUser, IRemoteUser } from '../entities/user';
import { Notes, NoteUnreads, FollowRequests, Notifications, MessagingMessages, UserNotePinings, Followings, Blockings, Mutings, UserProfiles, UserSecurityKeys, UserGroupJoinings, Pages, Announcements, AnnouncementReads, Antennas, AntennaNotes, ChannelFollowings, Instances } from '..';
-import config from '../../config';
-import { SchemaType } from '../../misc/schema';
+import config from '@/config';
+import { SchemaType } from '@/misc/schema';
import { awaitAll } from '../../prelude/await-all';
-import { populateEmojis } from '../../misc/populate-emojis';
+import { populateEmojis } from '@/misc/populate-emojis';
+import { getAntennas } from '@/misc/antenna-cache';
export type PackedUser = SchemaType<typeof packedUserSchema>;
@@ -97,10 +98,10 @@ export class UserRepository extends Repository<User> {
}
public async getHasUnreadAntenna(userId: User['id']): Promise<boolean> {
- const antennas = await Antennas.find({ userId });
+ const myAntennas = (await getAntennas()).filter(a => a.userId === userId);
- const unread = antennas.length > 0 ? await AntennaNotes.findOne({
- antennaId: In(antennas.map(x => x.id)),
+ const unread = myAntennas.length > 0 ? await AntennaNotes.findOne({
+ antennaId: In(myAntennas.map(x => x.id)),
read: false
}) : null;
@@ -146,7 +147,7 @@ export class UserRepository extends Repository<User> {
public async pack(
src: User['id'] | User,
- me?: User['id'] | User | null | undefined,
+ me?: { id: User['id'] } | null | undefined,
options?: {
detail?: boolean,
includeSecrets?: boolean,
@@ -158,7 +159,7 @@ export class UserRepository extends Repository<User> {
}, options);
const user = typeof src === 'object' ? src : await this.findOneOrFail(src);
- const meId = me ? typeof me === 'string' ? me : me.id : null;
+ const meId = me ? me.id : null;
const relation = meId && (meId !== user.id) && opts.detail ? await this.getRelation(meId, user.id) : null;
const pins = opts.detail ? await UserNotePinings.createQueryBuilder('pin')
@@ -212,11 +213,11 @@ export class UserRepository extends Repository<User> {
followingCount: user.followingCount,
notesCount: user.notesCount,
pinnedNoteIds: pins.map(pin => pin.noteId),
- pinnedNotes: Notes.packMany(pins.map(pin => pin.note!), meId, {
+ pinnedNotes: Notes.packMany(pins.map(pin => pin.note!), me, {
detail: true
}),
pinnedPageId: profile!.pinnedPageId,
- pinnedPage: profile!.pinnedPageId ? Pages.pack(profile!.pinnedPageId, meId) : null,
+ pinnedPage: profile!.pinnedPageId ? Pages.pack(profile!.pinnedPageId, me) : null,
twoFactorEnabled: profile!.twoFactorEnabled,
usePasswordLessLogin: profile!.usePasswordLessLogin,
securityKeys: profile!.twoFactorEnabled
@@ -285,7 +286,7 @@ export class UserRepository extends Repository<User> {
public packMany(
users: (User['id'] | User)[],
- me?: User['id'] | User | null | undefined,
+ me?: { id: User['id'] } | null | undefined,
options?: {
detail?: boolean,
includeSecrets?: boolean,
@@ -294,11 +295,15 @@ export class UserRepository extends Repository<User> {
return Promise.all(users.map(u => this.pack(u, me, options)));
}
- public isLocalUser(user: User): user is ILocalUser {
+ public isLocalUser(user: User): user is ILocalUser;
+ public isLocalUser<T extends { host: User['host'] }>(user: T): user is T & { host: null; };
+ public isLocalUser(user: User | { host: User['host'] }): boolean {
return user.host == null;
}
- public isRemoteUser(user: User): user is IRemoteUser {
+ public isRemoteUser(user: User): user is IRemoteUser;
+ public isRemoteUser<T extends { host: User['host'] }>(user: T): user is T & { host: string; };
+ public isRemoteUser(user: User | { host: User['host'] }): boolean {
return !this.isLocalUser(user);
}
diff --git a/src/queue/index.ts b/src/queue/index.ts
index 9fb4595a35..201b663799 100644
--- a/src/queue/index.ts
+++ b/src/queue/index.ts
@@ -1,7 +1,7 @@
import * as httpSignature from 'http-signature';
-import config from '../config';
-import { ILocalUser } from '../models/entities/user';
+import config from '@/config';
+import { User } from '../models/entities/user';
import { program } from '../argv';
import processDeliver from './processors/deliver';
@@ -65,7 +65,7 @@ objectStorageQueue
.on('error', (job: any, err: Error) => objectStorageLogger.error(`error ${err}`, { job, e: renderError(err) }))
.on('stalled', (job) => objectStorageLogger.warn(`stalled id=${job.id}`));
-export function deliver(user: ILocalUser, content: any, to: any) {
+export function deliver(user: { id: User['id']; host: null; }, content: any, to: any) {
if (content == null) return null;
const data = {
@@ -102,7 +102,7 @@ export function inbox(activity: any, signature: httpSignature.IParsedSignature)
});
}
-export function createDeleteDriveFilesJob(user: ILocalUser) {
+export function createDeleteDriveFilesJob(user: { id: User['id'] }) {
return dbQueue.add('deleteDriveFiles', {
user: user
}, {
@@ -111,7 +111,7 @@ export function createDeleteDriveFilesJob(user: ILocalUser) {
});
}
-export function createExportNotesJob(user: ILocalUser) {
+export function createExportNotesJob(user: { id: User['id'] }) {
return dbQueue.add('exportNotes', {
user: user
}, {
@@ -120,7 +120,7 @@ export function createExportNotesJob(user: ILocalUser) {
});
}
-export function createExportFollowingJob(user: ILocalUser) {
+export function createExportFollowingJob(user: { id: User['id'] }) {
return dbQueue.add('exportFollowing', {
user: user
}, {
@@ -129,7 +129,7 @@ export function createExportFollowingJob(user: ILocalUser) {
});
}
-export function createExportMuteJob(user: ILocalUser) {
+export function createExportMuteJob(user: { id: User['id'] }) {
return dbQueue.add('exportMute', {
user: user
}, {
@@ -138,7 +138,7 @@ export function createExportMuteJob(user: ILocalUser) {
});
}
-export function createExportBlockingJob(user: ILocalUser) {
+export function createExportBlockingJob(user: { id: User['id'] }) {
return dbQueue.add('exportBlocking', {
user: user
}, {
@@ -147,7 +147,7 @@ export function createExportBlockingJob(user: ILocalUser) {
});
}
-export function createExportUserListsJob(user: ILocalUser) {
+export function createExportUserListsJob(user: { id: User['id'] }) {
return dbQueue.add('exportUserLists', {
user: user
}, {
@@ -156,7 +156,7 @@ export function createExportUserListsJob(user: ILocalUser) {
});
}
-export function createImportFollowingJob(user: ILocalUser, fileId: DriveFile['id']) {
+export function createImportFollowingJob(user: { id: User['id'] }, fileId: DriveFile['id']) {
return dbQueue.add('importFollowing', {
user: user,
fileId: fileId
@@ -166,7 +166,7 @@ export function createImportFollowingJob(user: ILocalUser, fileId: DriveFile['id
});
}
-export function createImportUserListsJob(user: ILocalUser, fileId: DriveFile['id']) {
+export function createImportUserListsJob(user: { id: User['id'] }, fileId: DriveFile['id']) {
return dbQueue.add('importUserLists', {
user: user,
fileId: fileId
diff --git a/src/queue/initialize.ts b/src/queue/initialize.ts
index 92579531e4..941fe4bc33 100644
--- a/src/queue/initialize.ts
+++ b/src/queue/initialize.ts
@@ -1,5 +1,5 @@
import * as Queue from 'bull';
-import config from '../config';
+import config from '@/config';
export function initialize(name: string, limitPerSec = -1) {
return new Queue(name, {
diff --git a/src/queue/processors/db/export-blocking.ts b/src/queue/processors/db/export-blocking.ts
index 0504ab8c30..9bbc9b2f12 100644
--- a/src/queue/processors/db/export-blocking.ts
+++ b/src/queue/processors/db/export-blocking.ts
@@ -5,7 +5,7 @@ import * as fs from 'fs';
import { queueLogger } from '../../logger';
import addFile from '../../../services/drive/add-file';
import dateFormat = require('dateformat');
-import { getFullApAccount } from '../../../misc/convert-host';
+import { getFullApAccount } from '@/misc/convert-host';
import { Users, Blockings } from '../../../models';
import { MoreThan } from 'typeorm';
diff --git a/src/queue/processors/db/export-following.ts b/src/queue/processors/db/export-following.ts
index 996ef6310d..79df2298d8 100644
--- a/src/queue/processors/db/export-following.ts
+++ b/src/queue/processors/db/export-following.ts
@@ -5,7 +5,7 @@ import * as fs from 'fs';
import { queueLogger } from '../../logger';
import addFile from '../../../services/drive/add-file';
import dateFormat = require('dateformat');
-import { getFullApAccount } from '../../../misc/convert-host';
+import { getFullApAccount } from '@/misc/convert-host';
import { Users, Followings } from '../../../models';
import { MoreThan } from 'typeorm';
diff --git a/src/queue/processors/db/export-mute.ts b/src/queue/processors/db/export-mute.ts
index 5531553220..c10556f882 100644
--- a/src/queue/processors/db/export-mute.ts
+++ b/src/queue/processors/db/export-mute.ts
@@ -5,7 +5,7 @@ import * as fs from 'fs';
import { queueLogger } from '../../logger';
import addFile from '../../../services/drive/add-file';
import dateFormat = require('dateformat');
-import { getFullApAccount } from '../../../misc/convert-host';
+import { getFullApAccount } from '@/misc/convert-host';
import { Users, Mutings } from '../../../models';
import { MoreThan } from 'typeorm';
diff --git a/src/queue/processors/db/export-user-lists.ts b/src/queue/processors/db/export-user-lists.ts
index 447cdaa174..b6c527fc78 100644
--- a/src/queue/processors/db/export-user-lists.ts
+++ b/src/queue/processors/db/export-user-lists.ts
@@ -5,7 +5,7 @@ import * as fs from 'fs';
import { queueLogger } from '../../logger';
import addFile from '../../../services/drive/add-file';
import dateFormat = require('dateformat');
-import { getFullApAccount } from '../../../misc/convert-host';
+import { getFullApAccount } from '@/misc/convert-host';
import { Users, UserLists, UserListJoinings } from '../../../models';
import { In } from 'typeorm';
diff --git a/src/queue/processors/db/import-following.ts b/src/queue/processors/db/import-following.ts
index ff4ff6b6ab..554337849e 100644
--- a/src/queue/processors/db/import-following.ts
+++ b/src/queue/processors/db/import-following.ts
@@ -2,10 +2,10 @@ import * as Bull from 'bull';
import { queueLogger } from '../../logger';
import follow from '../../../services/following/create';
-import parseAcct from '../../../misc/acct/parse';
+import parseAcct from '@/misc/acct/parse';
import { resolveUser } from '../../../remote/resolve-user';
-import { downloadTextFile } from '../../../misc/download-text-file';
-import { isSelfHost, toPuny } from '../../../misc/convert-host';
+import { downloadTextFile } from '@/misc/download-text-file';
+import { isSelfHost, toPuny } from '@/misc/convert-host';
import { Users, DriveFiles } from '../../../models';
const logger = queueLogger.createSubLogger('import-following');
diff --git a/src/queue/processors/db/import-user-lists.ts b/src/queue/processors/db/import-user-lists.ts
index 4692d8cf49..2fe023da7d 100644
--- a/src/queue/processors/db/import-user-lists.ts
+++ b/src/queue/processors/db/import-user-lists.ts
@@ -1,13 +1,13 @@
import * as Bull from 'bull';
import { queueLogger } from '../../logger';
-import parseAcct from '../../../misc/acct/parse';
+import parseAcct from '@/misc/acct/parse';
import { resolveUser } from '../../../remote/resolve-user';
import { pushUserToUserList } from '../../../services/user-list/push';
-import { downloadTextFile } from '../../../misc/download-text-file';
-import { isSelfHost, toPuny } from '../../../misc/convert-host';
+import { downloadTextFile } from '@/misc/download-text-file';
+import { isSelfHost, toPuny } from '@/misc/convert-host';
import { DriveFiles, Users, UserLists, UserListJoinings } from '../../../models';
-import { genId } from '../../../misc/gen-id';
+import { genId } from '@/misc/gen-id';
const logger = queueLogger.createSubLogger('import-user-lists');
diff --git a/src/queue/processors/deliver.ts b/src/queue/processors/deliver.ts
index a8b4ed4fe3..b167154fcd 100644
--- a/src/queue/processors/deliver.ts
+++ b/src/queue/processors/deliver.ts
@@ -1,3 +1,4 @@
+import { URL } from 'url';
import * as Bull from 'bull';
import request from '../../remote/activitypub/request';
import { registerOrFetchInstanceDoc } from '../../services/register-or-fetch-instance-doc';
@@ -5,9 +6,9 @@ import Logger from '../../services/logger';
import { Instances } from '../../models';
import { instanceChart } from '../../services/chart';
import { fetchInstanceMetadata } from '../../services/fetch-instance-metadata';
-import { fetchMeta } from '../../misc/fetch-meta';
-import { toPuny } from '../../misc/convert-host';
-import { Cache } from '../../misc/cache';
+import { fetchMeta } from '@/misc/fetch-meta';
+import { toPuny } from '@/misc/convert-host';
+import { Cache } from '@/misc/cache';
import { Instance } from '../../models/entities/instance';
const logger = new Logger('deliver');
diff --git a/src/queue/processors/inbox.ts b/src/queue/processors/inbox.ts
index a5822ff25f..7c746eb25d 100644
--- a/src/queue/processors/inbox.ts
+++ b/src/queue/processors/inbox.ts
@@ -1,3 +1,4 @@
+import { URL } from 'url';
import * as Bull from 'bull';
import * as httpSignature from 'http-signature';
import perform from '../../remote/activitypub/perform';
@@ -5,8 +6,8 @@ import Logger from '../../services/logger';
import { registerOrFetchInstanceDoc } from '../../services/register-or-fetch-instance-doc';
import { Instances } from '../../models';
import { instanceChart } from '../../services/chart';
-import { fetchMeta } from '../../misc/fetch-meta';
-import { toPuny, extractDbHost } from '../../misc/convert-host';
+import { fetchMeta } from '@/misc/fetch-meta';
+import { toPuny, extractDbHost } from '@/misc/convert-host';
import { getApId } from '../../remote/activitypub/type';
import { fetchInstanceMetadata } from '../../services/fetch-instance-metadata';
import { InboxJobData } from '..';
diff --git a/src/queue/queues.ts b/src/queue/queues.ts
index d589d9f7da..819bcf31d8 100644
--- a/src/queue/queues.ts
+++ b/src/queue/queues.ts
@@ -1,4 +1,4 @@
-import config from '../config';
+import config from '@/config';
import { initialize as initializeQueue } from './initialize';
export const deliverQueue = initializeQueue('deliver', config.deliverJobPerSec || 128);
diff --git a/src/remote/activitypub/db-resolver.ts b/src/remote/activitypub/db-resolver.ts
index 26162b6b23..dba1f0f0b1 100644
--- a/src/remote/activitypub/db-resolver.ts
+++ b/src/remote/activitypub/db-resolver.ts
@@ -1,4 +1,4 @@
-import config from '../../config';
+import config from '@/config';
import { Note } from '../../models/entities/note';
import { User, IRemoteUser } from '../../models/entities/user';
import { UserPublickey } from '../../models/entities/user-publickey';
diff --git a/src/remote/activitypub/deliver-manager.ts b/src/remote/activitypub/deliver-manager.ts
index 92721f5525..f112b02b4f 100644
--- a/src/remote/activitypub/deliver-manager.ts
+++ b/src/remote/activitypub/deliver-manager.ts
@@ -1,5 +1,5 @@
import { Users, Followings } from '../../models';
-import { ILocalUser, IRemoteUser } from '../../models/entities/user';
+import { ILocalUser, IRemoteUser, User } from '../../models/entities/user';
import { deliver } from '../../queue';
//#region types
@@ -24,7 +24,7 @@ const isDirect = (recipe: any): recipe is IDirectRecipe =>
//#endregion
export default class DeliverManager {
- private actor: ILocalUser;
+ private actor: { id: User['id']; host: null; };
private activity: any;
private recipes: IRecipe[] = [];
@@ -33,7 +33,7 @@ export default class DeliverManager {
* @param actor Actor
* @param activity Activity to deliver
*/
- constructor(actor: ILocalUser, activity: any) {
+ constructor(actor: { id: User['id']; host: null; }, activity: any) {
this.actor = actor;
this.activity = activity;
}
diff --git a/src/remote/activitypub/kernel/announce/note.ts b/src/remote/activitypub/kernel/announce/note.ts
index 765180742a..d5176897bc 100644
--- a/src/remote/activitypub/kernel/announce/note.ts
+++ b/src/remote/activitypub/kernel/announce/note.ts
@@ -4,9 +4,9 @@ import { IRemoteUser } from '../../../../models/entities/user';
import { IAnnounce, getApId } from '../../type';
import { fetchNote, resolveNote } from '../../models/note';
import { apLogger } from '../../logger';
-import { extractDbHost } from '../../../../misc/convert-host';
-import { fetchMeta } from '../../../../misc/fetch-meta';
-import { getApLock } from '../../../../misc/app-lock';
+import { extractDbHost } from '@/misc/convert-host';
+import { fetchMeta } from '@/misc/fetch-meta';
+import { getApLock } from '@/misc/app-lock';
import { parseAudience } from '../../audience';
const logger = apLogger;
diff --git a/src/remote/activitypub/kernel/create/note.ts b/src/remote/activitypub/kernel/create/note.ts
index f4fb8e5647..69499d303e 100644
--- a/src/remote/activitypub/kernel/create/note.ts
+++ b/src/remote/activitypub/kernel/create/note.ts
@@ -2,8 +2,8 @@ import Resolver from '../../resolver';
import { IRemoteUser } from '../../../../models/entities/user';
import { createNote, fetchNote } from '../../models/note';
import { getApId, IObject, ICreate } from '../../type';
-import { getApLock } from '../../../../misc/app-lock';
-import { extractDbHost } from '../../../../misc/convert-host';
+import { getApLock } from '@/misc/app-lock';
+import { extractDbHost } from '@/misc/convert-host';
/**
* 投稿作成アクティビティを捌きます
diff --git a/src/remote/activitypub/kernel/delete/note.ts b/src/remote/activitypub/kernel/delete/note.ts
index 8fa2285dba..1a7844f68b 100644
--- a/src/remote/activitypub/kernel/delete/note.ts
+++ b/src/remote/activitypub/kernel/delete/note.ts
@@ -2,7 +2,7 @@ import { IRemoteUser } from '../../../../models/entities/user';
import deleteNode from '../../../../services/note/delete';
import { apLogger } from '../../logger';
import DbResolver from '../../db-resolver';
-import { getApLock } from '../../../../misc/app-lock';
+import { getApLock } from '@/misc/app-lock';
import { deleteMessage } from '../../../../services/messages/delete';
const logger = apLogger;
diff --git a/src/remote/activitypub/kernel/flag/index.ts b/src/remote/activitypub/kernel/flag/index.ts
index 46ea789b4b..5f5357a3ed 100644
--- a/src/remote/activitypub/kernel/flag/index.ts
+++ b/src/remote/activitypub/kernel/flag/index.ts
@@ -1,9 +1,9 @@
import { IRemoteUser } from '../../../../models/entities/user';
-import config from '../../../../config';
+import config from '@/config';
import { IFlag, getApIds } from '../../type';
import { AbuseUserReports, Users } from '../../../../models';
import { In } from 'typeorm';
-import { genId } from '../../../../misc/gen-id';
+import { genId } from '@/misc/gen-id';
export default async (actor: IRemoteUser, activity: IFlag): Promise<string> => {
// objectは `(User|Note) | (User|Note)[]` だけど、全パターンDBスキーマと対応させられないので
diff --git a/src/remote/activitypub/kernel/read.ts b/src/remote/activitypub/kernel/read.ts
index e4049fa7ef..edbc8e68ed 100644
--- a/src/remote/activitypub/kernel/read.ts
+++ b/src/remote/activitypub/kernel/read.ts
@@ -1,6 +1,6 @@
import { IRemoteUser } from '../../../models/entities/user';
import { IRead, getApId } from '../type';
-import { isSelfHost, extractDbHost } from '../../../misc/convert-host';
+import { isSelfHost, extractDbHost } from '@/misc/convert-host';
import { MessagingMessages } from '../../../models';
import { readUserMessagingMessage } from '../../../server/api/common/read-messaging-message';
diff --git a/src/remote/activitypub/misc/ld-signature.ts b/src/remote/activitypub/misc/ld-signature.ts
index 070e39edfb..dec07ea81b 100644
--- a/src/remote/activitypub/misc/ld-signature.ts
+++ b/src/remote/activitypub/misc/ld-signature.ts
@@ -2,7 +2,7 @@ import * as crypto from 'crypto';
import * as jsonld from 'jsonld';
import { CONTEXTS } from './contexts';
import fetch from 'node-fetch';
-import { httpAgent, httpsAgent } from '../../../misc/fetch';
+import { httpAgent, httpsAgent } from '@/misc/fetch';
// RsaSignature2017 based from https://github.com/transmute-industries/RsaSignature2017
diff --git a/src/remote/activitypub/models/image.ts b/src/remote/activitypub/models/image.ts
index dd8086cbeb..79fc2bf4a6 100644
--- a/src/remote/activitypub/models/image.ts
+++ b/src/remote/activitypub/models/image.ts
@@ -1,7 +1,7 @@
import uploadFromUrl from '../../../services/drive/upload-from-url';
import { IRemoteUser } from '../../../models/entities/user';
import Resolver from '../resolver';
-import { fetchMeta } from '../../../misc/fetch-meta';
+import { fetchMeta } from '@/misc/fetch-meta';
import { apLogger } from '../logger';
import { DriveFile } from '../../../models/entities/drive-file';
import { DriveFiles } from '../../../models';
diff --git a/src/remote/activitypub/models/note.ts b/src/remote/activitypub/models/note.ts
index e3488800ca..09e066708f 100644
--- a/src/remote/activitypub/models/note.ts
+++ b/src/remote/activitypub/models/note.ts
@@ -1,6 +1,6 @@
import * as promiseLimit from 'promise-limit';
-import config from '../../../config';
+import config from '@/config';
import Resolver from '../resolver';
import post from '../../../services/note/create';
import { resolvePerson, updatePerson } from './person';
@@ -14,14 +14,14 @@ import vote from '../../../services/note/polls/vote';
import { apLogger } from '../logger';
import { DriveFile } from '../../../models/entities/drive-file';
import { deliverQuestionUpdate } from '../../../services/note/polls/update';
-import { extractDbHost, toPuny } from '../../../misc/convert-host';
+import { extractDbHost, toPuny } from '@/misc/convert-host';
import { Emojis, Polls, MessagingMessages } from '../../../models';
import { Note } from '../../../models/entities/note';
import { IObject, getOneApId, getApId, getOneApHrefNullable, validPost, IPost, isEmoji } from '../type';
import { Emoji } from '../../../models/entities/emoji';
-import { genId } from '../../../misc/gen-id';
-import { fetchMeta } from '../../../misc/fetch-meta';
-import { getApLock } from '../../../misc/app-lock';
+import { genId } from '@/misc/gen-id';
+import { fetchMeta } from '@/misc/fetch-meta';
+import { getApLock } from '@/misc/app-lock';
import { createMessage } from '../../../services/messages/create';
import { parseAudience } from '../audience';
import { extractApMentions } from './mention';
diff --git a/src/remote/activitypub/models/person.ts b/src/remote/activitypub/models/person.ts
index 93e95df0a4..5b032d9d9c 100644
--- a/src/remote/activitypub/models/person.ts
+++ b/src/remote/activitypub/models/person.ts
@@ -1,6 +1,7 @@
+import { URL } from 'url';
import * as promiseLimit from 'promise-limit';
-import config from '../../../config';
+import config from '@/config';
import Resolver from '../resolver';
import { resolveImage } from './image';
import { isCollectionOrOrderedCollection, isCollection, IPerson, getApId, getOneApHrefNullable, IObject, isPropertyValue, IApPropertyValue } from '../type';
@@ -16,17 +17,17 @@ import { Users, Instances, DriveFiles, Followings, UserProfiles, UserPublickeys
import { User, IRemoteUser } from '../../../models/entities/user';
import { Emoji } from '../../../models/entities/emoji';
import { UserNotePining } from '../../../models/entities/user-note-pining';
-import { genId } from '../../../misc/gen-id';
+import { genId } from '@/misc/gen-id';
import { instanceChart, usersChart } from '../../../services/chart';
import { UserPublickey } from '../../../models/entities/user-publickey';
-import { isDuplicateKeyValueError } from '../../../misc/is-duplicate-key-value-error';
-import { toPuny } from '../../../misc/convert-host';
+import { isDuplicateKeyValueError } from '@/misc/is-duplicate-key-value-error';
+import { toPuny } from '@/misc/convert-host';
import { UserProfile } from '../../../models/entities/user-profile';
import { validActor } from '../../../remote/activitypub/type';
import { getConnection } from 'typeorm';
import { toArray } from '../../../prelude/array';
import { fetchInstanceMetadata } from '../../../services/fetch-instance-metadata';
-import { normalizeForSearch } from '../../../misc/normalize-for-search';
+import { normalizeForSearch } from '@/misc/normalize-for-search';
const logger = apLogger;
diff --git a/src/remote/activitypub/models/question.ts b/src/remote/activitypub/models/question.ts
index 6b6749894a..966b15af11 100644
--- a/src/remote/activitypub/models/question.ts
+++ b/src/remote/activitypub/models/question.ts
@@ -1,4 +1,4 @@
-import config from '../../../config';
+import config from '@/config';
import Resolver from '../resolver';
import { IObject, IQuestion, isQuestion, } from '../type';
import { apLogger } from '../logger';
diff --git a/src/remote/activitypub/renderer/accept.ts b/src/remote/activitypub/renderer/accept.ts
index 21b4629074..8725a30e7c 100644
--- a/src/remote/activitypub/renderer/accept.ts
+++ b/src/remote/activitypub/renderer/accept.ts
@@ -1,7 +1,7 @@
-import config from '../../../config';
-import { ILocalUser } from '../../../models/entities/user';
+import config from '@/config';
+import { User } from '@/models/entities/user';
-export default (object: any, user: ILocalUser) => ({
+export default (object: any, user: { id: User['id']; host: null }) => ({
type: 'Accept',
actor: `${config.url}/users/${user.id}`,
object
diff --git a/src/remote/activitypub/renderer/add.ts b/src/remote/activitypub/renderer/add.ts
index 46f937f61d..18f9ccacf5 100644
--- a/src/remote/activitypub/renderer/add.ts
+++ b/src/remote/activitypub/renderer/add.ts
@@ -1,4 +1,4 @@
-import config from '../../../config';
+import config from '@/config';
import { ILocalUser } from '../../../models/entities/user';
export default (user: ILocalUser, target: any, object: any) => ({
diff --git a/src/remote/activitypub/renderer/announce.ts b/src/remote/activitypub/renderer/announce.ts
index d82bf6a693..f577dbbc89 100644
--- a/src/remote/activitypub/renderer/announce.ts
+++ b/src/remote/activitypub/renderer/announce.ts
@@ -1,4 +1,4 @@
-import config from '../../../config';
+import config from '@/config';
import { Note } from '../../../models/entities/note';
export default (object: any, note: Note) => {
diff --git a/src/remote/activitypub/renderer/block.ts b/src/remote/activitypub/renderer/block.ts
index c29a9aea82..26b7dd580a 100644
--- a/src/remote/activitypub/renderer/block.ts
+++ b/src/remote/activitypub/renderer/block.ts
@@ -1,4 +1,4 @@
-import config from '../../../config';
+import config from '@/config';
import { ILocalUser, IRemoteUser } from '../../../models/entities/user';
export default (blocker: ILocalUser, blockee: IRemoteUser) => ({
diff --git a/src/remote/activitypub/renderer/create.ts b/src/remote/activitypub/renderer/create.ts
index e1fc0515c8..ff0840b9e6 100644
--- a/src/remote/activitypub/renderer/create.ts
+++ b/src/remote/activitypub/renderer/create.ts
@@ -1,4 +1,4 @@
-import config from '../../../config';
+import config from '@/config';
import { Note } from '../../../models/entities/note';
export default (object: any, note: Note) => {
diff --git a/src/remote/activitypub/renderer/delete.ts b/src/remote/activitypub/renderer/delete.ts
index a98c97e6e9..710f0482a6 100644
--- a/src/remote/activitypub/renderer/delete.ts
+++ b/src/remote/activitypub/renderer/delete.ts
@@ -1,7 +1,7 @@
-import config from '../../../config';
-import { ILocalUser } from '../../../models/entities/user';
+import config from '@/config';
+import { User } from '../../../models/entities/user';
-export default (object: any, user: ILocalUser) => ({
+export default (object: any, user: { id: User['id']; host: null }) => ({
type: 'Delete',
actor: `${config.url}/users/${user.id}`,
object
diff --git a/src/remote/activitypub/renderer/emoji.ts b/src/remote/activitypub/renderer/emoji.ts
index 947a96df37..b62259c32e 100644
--- a/src/remote/activitypub/renderer/emoji.ts
+++ b/src/remote/activitypub/renderer/emoji.ts
@@ -1,4 +1,4 @@
-import config from '../../../config';
+import config from '@/config';
import { Emoji } from '../../../models/entities/emoji';
export default (emoji: Emoji) => ({
diff --git a/src/remote/activitypub/renderer/follow-relay.ts b/src/remote/activitypub/renderer/follow-relay.ts
index 58bc0c90c3..d53bd05825 100644
--- a/src/remote/activitypub/renderer/follow-relay.ts
+++ b/src/remote/activitypub/renderer/follow-relay.ts
@@ -1,4 +1,4 @@
-import config from '../../../config';
+import config from '@/config';
import { Relay } from '../../../models/entities/relay';
import { ILocalUser } from '../../../models/entities/user';
diff --git a/src/remote/activitypub/renderer/follow-user.ts b/src/remote/activitypub/renderer/follow-user.ts
index bfc91bb4cb..744361a24f 100644
--- a/src/remote/activitypub/renderer/follow-user.ts
+++ b/src/remote/activitypub/renderer/follow-user.ts
@@ -1,4 +1,4 @@
-import config from '../../../config';
+import config from '@/config';
import { Users } from '../../../models';
import { User } from '../../../models/entities/user';
diff --git a/src/remote/activitypub/renderer/follow.ts b/src/remote/activitypub/renderer/follow.ts
index 400b15ec7b..252b0b2838 100644
--- a/src/remote/activitypub/renderer/follow.ts
+++ b/src/remote/activitypub/renderer/follow.ts
@@ -1,8 +1,8 @@
-import config from '../../../config';
+import config from '@/config';
import { User } from '../../../models/entities/user';
import { Users } from '../../../models';
-export default (follower: User, followee: User, requestId?: string) => {
+export default (follower: { id: User['id']; host: User['host']; uri: User['host'] }, followee: { id: User['id']; host: User['host']; uri: User['host'] }, requestId?: string) => {
const follow = {
type: 'Follow',
actor: Users.isLocalUser(follower) ? `${config.url}/users/${follower.id}` : follower.uri,
diff --git a/src/remote/activitypub/renderer/hashtag.ts b/src/remote/activitypub/renderer/hashtag.ts
index 36563c2df5..a739a4b0b6 100644
--- a/src/remote/activitypub/renderer/hashtag.ts
+++ b/src/remote/activitypub/renderer/hashtag.ts
@@ -1,4 +1,4 @@
-import config from '../../../config';
+import config from '@/config';
export default (tag: string) => ({
type: 'Hashtag',
diff --git a/src/remote/activitypub/renderer/index.ts b/src/remote/activitypub/renderer/index.ts
index 4c33fdafb1..3283c88bd4 100644
--- a/src/remote/activitypub/renderer/index.ts
+++ b/src/remote/activitypub/renderer/index.ts
@@ -1,9 +1,9 @@
-import config from '../../../config';
+import config from '@/config';
import { v4 as uuid } from 'uuid';
import { IActivity } from '../type';
import { LdSignature } from '../misc/ld-signature';
-import { ILocalUser } from '../../../models/entities/user';
-import { getUserKeypair } from '../../../misc/keypair-store';
+import { getUserKeypair } from '@/misc/keypair-store';
+import { User } from '@/models/entities/user';
export const renderActivity = (x: any): IActivity | null => {
if (x == null) return null;
@@ -20,7 +20,7 @@ export const renderActivity = (x: any): IActivity | null => {
}, x);
};
-export const attachLdSignature = async (activity: any, user: ILocalUser): Promise<IActivity | null> => {
+export const attachLdSignature = async (activity: any, user: { id: User['id']; host: null; }): Promise<IActivity | null> => {
if (activity == null) return null;
const keypair = await getUserKeypair(user.id);
diff --git a/src/remote/activitypub/renderer/key.ts b/src/remote/activitypub/renderer/key.ts
index e792f487fd..547059dd3c 100644
--- a/src/remote/activitypub/renderer/key.ts
+++ b/src/remote/activitypub/renderer/key.ts
@@ -1,4 +1,4 @@
-import config from '../../../config';
+import config from '@/config';
import { ILocalUser } from '../../../models/entities/user';
import { UserKeypair } from '../../../models/entities/user-keypair';
import { createPublicKey } from 'crypto';
diff --git a/src/remote/activitypub/renderer/like.ts b/src/remote/activitypub/renderer/like.ts
index d4dd3663d4..5967836846 100644
--- a/src/remote/activitypub/renderer/like.ts
+++ b/src/remote/activitypub/renderer/like.ts
@@ -1,4 +1,4 @@
-import config from '../../../config';
+import config from '@/config';
import { NoteReaction } from '../../../models/entities/note-reaction';
import { Note } from '../../../models/entities/note';
import { Emojis } from '../../../models';
diff --git a/src/remote/activitypub/renderer/mention.ts b/src/remote/activitypub/renderer/mention.ts
index 3b5e8f27af..14c4c40d47 100644
--- a/src/remote/activitypub/renderer/mention.ts
+++ b/src/remote/activitypub/renderer/mention.ts
@@ -1,4 +1,4 @@
-import config from '../../../config';
+import config from '@/config';
import { User, ILocalUser } from '../../../models/entities/user';
import { Users } from '../../../models';
diff --git a/src/remote/activitypub/renderer/note.ts b/src/remote/activitypub/renderer/note.ts
index 8e3e0e9ba1..54dee07892 100644
--- a/src/remote/activitypub/renderer/note.ts
+++ b/src/remote/activitypub/renderer/note.ts
@@ -2,7 +2,7 @@ import renderDocument from './document';
import renderHashtag from './hashtag';
import renderMention from './mention';
import renderEmoji from './emoji';
-import config from '../../../config';
+import config from '@/config';
import toHtml from '../misc/get-note-html';
import { Note, IMentionedRemoteUsers } from '../../../models/entities/note';
import { DriveFile } from '../../../models/entities/drive-file';
diff --git a/src/remote/activitypub/renderer/person.ts b/src/remote/activitypub/renderer/person.ts
index 479e6d76bf..e4e8f24f10 100644
--- a/src/remote/activitypub/renderer/person.ts
+++ b/src/remote/activitypub/renderer/person.ts
@@ -1,6 +1,7 @@
+import { URL } from 'url';
import renderImage from './image';
import renderKey from './key';
-import config from '../../../config';
+import config from '@/config';
import { ILocalUser } from '../../../models/entities/user';
import { toHtml } from '../../../mfm/to-html';
import { parse } from '../../../mfm/parse';
@@ -9,7 +10,7 @@ import renderEmoji from './emoji';
import { IIdentifier } from '../models/identifier';
import renderHashtag from './hashtag';
import { DriveFiles, UserProfiles } from '../../../models';
-import { getUserKeypair } from '../../../misc/keypair-store';
+import { getUserKeypair } from '@/misc/keypair-store';
export async function renderPerson(user: ILocalUser) {
const id = `${config.url}/users/${user.id}`;
diff --git a/src/remote/activitypub/renderer/question.ts b/src/remote/activitypub/renderer/question.ts
index 6ade10d1bf..99670f80a1 100644
--- a/src/remote/activitypub/renderer/question.ts
+++ b/src/remote/activitypub/renderer/question.ts
@@ -1,9 +1,9 @@
-import config from '../../../config';
-import { ILocalUser } from '../../../models/entities/user';
+import config from '@/config';
+import { User } from '@/models/entities/user';
import { Note } from '../../../models/entities/note';
import { Poll } from '../../../models/entities/poll';
-export default async function renderQuestion(user: ILocalUser, note: Note, poll: Poll) {
+export default async function renderQuestion(user: { id: User['id'] }, note: Note, poll: Poll) {
const question = {
type: 'Question',
id: `${config.url}/questions/${note.id}`,
diff --git a/src/remote/activitypub/renderer/read.ts b/src/remote/activitypub/renderer/read.ts
index c53b47859f..1287f4ccb0 100644
--- a/src/remote/activitypub/renderer/read.ts
+++ b/src/remote/activitypub/renderer/read.ts
@@ -1,8 +1,8 @@
-import config from '../../../config';
-import { ILocalUser } from '../../../models/entities/user';
+import config from '@/config';
+import { User } from '@/models/entities/user';
import { MessagingMessage } from '../../../models/entities/messaging-message';
-export const renderReadActivity = (user: ILocalUser, message: MessagingMessage) => ({
+export const renderReadActivity = (user: { id: User['id'] }, message: MessagingMessage) => ({
type: 'Read',
actor: `${config.url}/users/${user.id}`,
object: message.uri
diff --git a/src/remote/activitypub/renderer/reject.ts b/src/remote/activitypub/renderer/reject.ts
index c4e0ba0d0a..e1eb5b004e 100644
--- a/src/remote/activitypub/renderer/reject.ts
+++ b/src/remote/activitypub/renderer/reject.ts
@@ -1,7 +1,7 @@
-import config from '../../../config';
-import { ILocalUser } from '../../../models/entities/user';
+import config from '@/config';
+import { User } from '@/models/entities/user';
-export default (object: any, user: ILocalUser) => ({
+export default (object: any, user: { id: User['id'] }) => ({
type: 'Reject',
actor: `${config.url}/users/${user.id}`,
object
diff --git a/src/remote/activitypub/renderer/remove.ts b/src/remote/activitypub/renderer/remove.ts
index 1b9a6b8c05..ff1fab8e57 100644
--- a/src/remote/activitypub/renderer/remove.ts
+++ b/src/remote/activitypub/renderer/remove.ts
@@ -1,7 +1,7 @@
-import config from '../../../config';
-import { ILocalUser } from '../../../models/entities/user';
+import config from '@/config';
+import { User } from '@/models/entities/user';
-export default (user: ILocalUser, target: any, object: any) => ({
+export default (user: { id: User['id'] }, target: any, object: any) => ({
type: 'Remove',
actor: `${config.url}/users/${user.id}`,
target,
diff --git a/src/remote/activitypub/renderer/undo.ts b/src/remote/activitypub/renderer/undo.ts
index 2ff6b61b90..6f367415c4 100644
--- a/src/remote/activitypub/renderer/undo.ts
+++ b/src/remote/activitypub/renderer/undo.ts
@@ -1,7 +1,7 @@
-import config from '../../../config';
+import config from '@/config';
import { ILocalUser, User } from '../../../models/entities/user';
-export default (object: any, user: ILocalUser | User) => ({
+export default (object: any, user: { id: User['id'] }) => ({
type: 'Undo',
actor: `${config.url}/users/${user.id}`,
object
diff --git a/src/remote/activitypub/renderer/update.ts b/src/remote/activitypub/renderer/update.ts
index c1d5ba29b2..4295fc64f3 100644
--- a/src/remote/activitypub/renderer/update.ts
+++ b/src/remote/activitypub/renderer/update.ts
@@ -1,7 +1,7 @@
-import config from '../../../config';
-import { ILocalUser } from '../../../models/entities/user';
+import config from '@/config';
+import { User } from '@/models/entities/user';
-export default (object: any, user: ILocalUser) => {
+export default (object: any, user: { id: User['id'] }) => {
const activity = {
id: `${config.url}/users/${user.id}#updates/${new Date().getTime()}`,
actor: `${config.url}/users/${user.id}`,
diff --git a/src/remote/activitypub/renderer/vote.ts b/src/remote/activitypub/renderer/vote.ts
index 8929c03460..529fdaafcd 100644
--- a/src/remote/activitypub/renderer/vote.ts
+++ b/src/remote/activitypub/renderer/vote.ts
@@ -1,10 +1,10 @@
-import config from '../../../config';
+import config from '@/config';
import { Note } from '../../../models/entities/note';
-import { IRemoteUser, ILocalUser } from '../../../models/entities/user';
+import { IRemoteUser, User } from '../../../models/entities/user';
import { PollVote } from '../../../models/entities/poll-vote';
import { Poll } from '../../../models/entities/poll';
-export default async function renderVote(user: ILocalUser, vote: PollVote, note: Note, poll: Poll, pollOwner: IRemoteUser): Promise<any> {
+export default async function renderVote(user: { id: User['id'] }, vote: PollVote, note: Note, poll: Poll, pollOwner: IRemoteUser): Promise<any> {
return {
id: `${config.url}/users/${user.id}#votes/${vote.id}/activity`,
actor: `${config.url}/users/${user.id}`,
diff --git a/src/remote/activitypub/request.ts b/src/remote/activitypub/request.ts
index 5f15d5480c..e4dca32329 100644
--- a/src/remote/activitypub/request.ts
+++ b/src/remote/activitypub/request.ts
@@ -3,15 +3,15 @@ import * as https from 'https';
import { sign } from 'http-signature';
import * as crypto from 'crypto';
-import config from '../../config';
-import { ILocalUser } from '../../models/entities/user';
-import { getAgentByUrl } from '../../misc/fetch';
+import config from '@/config';
+import { User } from '@/models/entities/user';
+import { getAgentByUrl } from '@/misc/fetch';
import { URL } from 'url';
import got from 'got';
import * as Got from 'got';
-import { getUserKeypair } from '../../misc/keypair-store';
+import { getUserKeypair } from '@/misc/keypair-store';
-export default async (user: ILocalUser, url: string, object: any) => {
+export default async (user: { id: User['id'] }, url: string, object: any) => {
const timeout = 10 * 1000;
const { protocol, hostname, port, pathname, search } = new URL(url);
@@ -24,7 +24,7 @@ export default async (user: ILocalUser, url: string, object: any) => {
const keypair = await getUserKeypair(user.id);
- await new Promise((resolve, reject) => {
+ await new Promise<void>((resolve, reject) => {
const req = https.request({
agent: getAgentByUrl(new URL(`https://example.net`)),
protocol,
@@ -69,7 +69,7 @@ export default async (user: ILocalUser, url: string, object: any) => {
* @param user http-signature user
* @param url URL to fetch
*/
-export async function signedGet(url: string, user: ILocalUser) {
+export async function signedGet(url: string, user: { id: User['id'] }) {
const timeout = 10 * 1000;
const keypair = await getUserKeypair(user.id);
diff --git a/src/remote/activitypub/resolver.ts b/src/remote/activitypub/resolver.ts
index 2871c1cb41..066bde0883 100644
--- a/src/remote/activitypub/resolver.ts
+++ b/src/remote/activitypub/resolver.ts
@@ -1,5 +1,5 @@
-import config from '../../config';
-import { getJson } from '../../misc/fetch';
+import config from '@/config';
+import { getJson } from '@/misc/fetch';
import { ILocalUser } from '../../models/entities/user';
import { getInstanceActor } from '../../services/instance-actor';
import { signedGet } from './request';
diff --git a/src/remote/resolve-user.ts b/src/remote/resolve-user.ts
index 8149c184fe..1bcecee3c1 100644
--- a/src/remote/resolve-user.ts
+++ b/src/remote/resolve-user.ts
@@ -1,11 +1,12 @@
+import { URL } from 'url';
import webFinger from './webfinger';
-import config from '../config';
+import config from '@/config';
import { createPerson, updatePerson } from './activitypub/models/person';
import { remoteLogger } from './logger';
import * as chalk from 'chalk';
import { User, IRemoteUser } from '../models/entities/user';
import { Users } from '../models';
-import { toPuny } from '../misc/convert-host';
+import { toPuny } from '@/misc/convert-host';
const logger = remoteLogger.createSubLogger('resolve-user');
diff --git a/src/remote/webfinger.ts b/src/remote/webfinger.ts
index 04f978a35d..744ab3639a 100644
--- a/src/remote/webfinger.ts
+++ b/src/remote/webfinger.ts
@@ -1,4 +1,5 @@
-import { getJson } from '../misc/fetch';
+import { URL } from 'url';
+import { getJson } from '@/misc/fetch';
import { query as urlQuery } from '../prelude/url';
type ILink = {
diff --git a/src/server/activitypub.ts b/src/server/activitypub.ts
index 694807239b..0ddc4683fe 100644
--- a/src/server/activitypub.ts
+++ b/src/server/activitypub.ts
@@ -12,12 +12,12 @@ import Followers from './activitypub/followers';
import Following from './activitypub/following';
import Featured from './activitypub/featured';
import { inbox as processInbox } from '../queue';
-import { isSelfHost } from '../misc/convert-host';
+import { isSelfHost } from '@/misc/convert-host';
import { Notes, Users, Emojis, NoteReactions } from '../models';
import { ILocalUser, User } from '../models/entities/user';
import { In } from 'typeorm';
import { renderLike } from '../remote/activitypub/renderer/like';
-import { getUserKeypair } from '../misc/keypair-store';
+import { getUserKeypair } from '@/misc/keypair-store';
// Init router
const router = new Router();
diff --git a/src/server/activitypub/featured.ts b/src/server/activitypub/featured.ts
index 66ad2aa86e..02d4a30a5d 100644
--- a/src/server/activitypub/featured.ts
+++ b/src/server/activitypub/featured.ts
@@ -1,5 +1,5 @@
import * as Router from '@koa/router';
-import config from '../../config';
+import config from '@/config';
import { renderActivity } from '../../remote/activitypub/renderer';
import renderOrderedCollection from '../../remote/activitypub/renderer/ordered-collection';
import { setResponseType } from '../activitypub';
diff --git a/src/server/activitypub/followers.ts b/src/server/activitypub/followers.ts
index d7b5a15b1e..a4f2e666d0 100644
--- a/src/server/activitypub/followers.ts
+++ b/src/server/activitypub/followers.ts
@@ -1,7 +1,7 @@
import * as Router from '@koa/router';
-import config from '../../config';
+import config from '@/config';
import $ from 'cafy';
-import { ID } from '../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import * as url from '../../prelude/url';
import { renderActivity } from '../../remote/activitypub/renderer';
import renderOrderedCollection from '../../remote/activitypub/renderer/ordered-collection';
diff --git a/src/server/activitypub/following.ts b/src/server/activitypub/following.ts
index d39e680d9e..f5e5c62364 100644
--- a/src/server/activitypub/following.ts
+++ b/src/server/activitypub/following.ts
@@ -1,7 +1,7 @@
import * as Router from '@koa/router';
-import config from '../../config';
+import config from '@/config';
import $ from 'cafy';
-import { ID } from '../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import * as url from '../../prelude/url';
import { renderActivity } from '../../remote/activitypub/renderer';
import renderOrderedCollection from '../../remote/activitypub/renderer/ordered-collection';
diff --git a/src/server/activitypub/outbox.ts b/src/server/activitypub/outbox.ts
index 3c1b07a679..338e177370 100644
--- a/src/server/activitypub/outbox.ts
+++ b/src/server/activitypub/outbox.ts
@@ -1,7 +1,7 @@
import * as Router from '@koa/router';
-import config from '../../config';
+import config from '@/config';
import $ from 'cafy';
-import { ID } from '../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import { renderActivity } from '../../remote/activitypub/renderer';
import renderOrderedCollection from '../../remote/activitypub/renderer/ordered-collection';
import renderOrderedCollectionPage from '../../remote/activitypub/renderer/ordered-collection-page';
diff --git a/src/server/api/2fa.ts b/src/server/api/2fa.ts
index 8e6e635bb0..77f0f8cd04 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';
import * as jsrsasign from 'jsrsasign';
const ECC_PRELUDE = Buffer.from([0x04]);
diff --git a/src/server/api/authenticate.ts b/src/server/api/authenticate.ts
index 9c9ef74352..6ea5a111bc 100644
--- a/src/server/api/authenticate.ts
+++ b/src/server/api/authenticate.ts
@@ -2,7 +2,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 { Cache } from '../../misc/cache';
+import { Cache } from '@/misc/cache';
// TODO: TypeORMのカスタムキャッシュプロバイダを使っても良いかも
// ref. https://github.com/typeorm/typeorm/blob/master/docs/caching.md
diff --git a/src/server/api/common/generate-block-query.ts b/src/server/api/common/generate-block-query.ts
index 3636410485..fa2179ae64 100644
--- a/src/server/api/common/generate-block-query.ts
+++ b/src/server/api/common/generate-block-query.ts
@@ -2,7 +2,7 @@ import { User } from '../../../models/entities/user';
import { Blockings } from '../../../models';
import { SelectQueryBuilder } from 'typeorm';
-export function generateBlockQueryForUsers(q: SelectQueryBuilder<any>, me: User) {
+export function generateBlockQueryForUsers(q: SelectQueryBuilder<any>, me: { id: User['id'] }) {
const blockingQuery = Blockings.createQueryBuilder('blocking')
.select('blocking.blockeeId')
.where('blocking.blockerId = :blockerId', { blockerId: me.id });
diff --git a/src/server/api/common/generate-channel-query.ts b/src/server/api/common/generate-channel-query.ts
index c0337b2c6b..74a6d68c40 100644
--- a/src/server/api/common/generate-channel-query.ts
+++ b/src/server/api/common/generate-channel-query.ts
@@ -2,7 +2,7 @@ import { User } from '../../../models/entities/user';
import { ChannelFollowings } from '../../../models';
import { Brackets, SelectQueryBuilder } from 'typeorm';
-export function generateChannelQuery(q: SelectQueryBuilder<any>, me?: User | null) {
+export function generateChannelQuery(q: SelectQueryBuilder<any>, me?: { id: User['id'] } | null) {
if (me == null) {
q.andWhere('note.channelId IS NULL');
} else {
diff --git a/src/server/api/common/generate-muted-note-query.ts b/src/server/api/common/generate-muted-note-query.ts
index 498930476c..c7f9f7c5a3 100644
--- a/src/server/api/common/generate-muted-note-query.ts
+++ b/src/server/api/common/generate-muted-note-query.ts
@@ -2,7 +2,7 @@ import { User } from '../../../models/entities/user';
import { MutedNotes } from '../../../models';
import { SelectQueryBuilder } from 'typeorm';
-export function generateMutedNoteQuery(q: SelectQueryBuilder<any>, me: User) {
+export function generateMutedNoteQuery(q: SelectQueryBuilder<any>, me: { id: User['id'] }) {
const mutedQuery = MutedNotes.createQueryBuilder('muted')
.select('muted.noteId')
.where('muted.userId = :userId', { userId: me.id });
diff --git a/src/server/api/common/generate-muted-user-query.ts b/src/server/api/common/generate-muted-user-query.ts
index b346f2f0fb..f5e072ba93 100644
--- a/src/server/api/common/generate-muted-user-query.ts
+++ b/src/server/api/common/generate-muted-user-query.ts
@@ -2,7 +2,7 @@ import { User } from '../../../models/entities/user';
import { Mutings } from '../../../models';
import { SelectQueryBuilder, Brackets } from 'typeorm';
-export function generateMutedUserQuery(q: SelectQueryBuilder<any>, me: User, exclude?: User) {
+export function generateMutedUserQuery(q: SelectQueryBuilder<any>, me: { id: User['id'] }, exclude?: User) {
const mutingQuery = Mutings.createQueryBuilder('muting')
.select('muting.muteeId')
.where('muting.muterId = :muterId', { muterId: me.id });
@@ -28,7 +28,7 @@ export function generateMutedUserQuery(q: SelectQueryBuilder<any>, me: User, exc
q.setParameters(mutingQuery.getParameters());
}
-export function generateMutedUserQueryForUsers(q: SelectQueryBuilder<any>, me: User) {
+export function generateMutedUserQueryForUsers(q: SelectQueryBuilder<any>, me: { id: User['id'] }) {
const mutingQuery = Mutings.createQueryBuilder('muting')
.select('muting.muteeId')
.where('muting.muterId = :muterId', { muterId: me.id });
diff --git a/src/server/api/common/generate-native-user-token.ts b/src/server/api/common/generate-native-user-token.ts
index cd30ba98f9..1f791c57ce 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';
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 8ebe93f20a..29b1e17c2e 100644
--- a/src/server/api/common/generate-replies-query.ts
+++ b/src/server/api/common/generate-replies-query.ts
@@ -1,7 +1,7 @@
import { User } from '../../../models/entities/user';
import { Brackets, SelectQueryBuilder } from 'typeorm';
-export function generateRepliesQuery(q: SelectQueryBuilder<any>, me?: User | null) {
+export function generateRepliesQuery(q: SelectQueryBuilder<any>, me?: { id: User['id'] } | null) {
if (me == null) {
q.andWhere(new Brackets(qb => { qb
.where(`note.replyId IS NULL`) // 返信ではない
diff --git a/src/server/api/common/generate-visibility-query.ts b/src/server/api/common/generate-visibility-query.ts
index d981b4a613..72ed1c46ea 100644
--- a/src/server/api/common/generate-visibility-query.ts
+++ b/src/server/api/common/generate-visibility-query.ts
@@ -2,7 +2,7 @@ import { User } from '../../../models/entities/user';
import { Followings } from '../../../models';
import { Brackets, SelectQueryBuilder } from 'typeorm';
-export function generateVisibilityQuery(q: SelectQueryBuilder<any>, me?: User | null) {
+export function generateVisibilityQuery(q: SelectQueryBuilder<any>, me?: { id: User['id'] } | null) {
if (me == null) {
q.andWhere(new Brackets(qb => { qb
.where(`note.visibility = 'public'`)
diff --git a/src/server/api/common/getters.ts b/src/server/api/common/getters.ts
index 04716d19c6..73fbadfee6 100644
--- a/src/server/api/common/getters.ts
+++ b/src/server/api/common/getters.ts
@@ -1,4 +1,4 @@
-import { IdentifiableError } from '../../../misc/identifiable-error';
+import { IdentifiableError } from '@/misc/identifiable-error';
import { User } from '../../../models/entities/user';
import { Note } from '../../../models/entities/note';
import { Notes, Users } from '../../../models';
diff --git a/src/server/api/common/read-messaging-message.ts b/src/server/api/common/read-messaging-message.ts
index 90510bb393..6c9fcf973f 100644
--- a/src/server/api/common/read-messaging-message.ts
+++ b/src/server/api/common/read-messaging-message.ts
@@ -1,11 +1,11 @@
import { publishMainStream, publishGroupMessagingStream } from '../../../services/stream';
import { publishMessagingStream } from '../../../services/stream';
import { publishMessagingIndexStream } from '../../../services/stream';
-import { User, ILocalUser, IRemoteUser } from '../../../models/entities/user';
+import { User, IRemoteUser } from '../../../models/entities/user';
import { MessagingMessage } from '../../../models/entities/messaging-message';
import { MessagingMessages, UserGroupJoinings, Users } from '../../../models';
import { In } from 'typeorm';
-import { IdentifiableError } from '../../../misc/identifiable-error';
+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';
@@ -107,7 +107,7 @@ export async function readGroupMessagingMessage(
}
}
-export async function deliverReadActivity(user: ILocalUser, recipient: IRemoteUser, messages: MessagingMessage | MessagingMessage[]) {
+export async function deliverReadActivity(user: { id: User['id']; host: null; }, recipient: IRemoteUser, messages: MessagingMessage | MessagingMessage[]) {
messages = toArray(messages).filter(x => x.uri);
const contents = messages.map(x => renderReadActivity(user, x));
diff --git a/src/server/api/common/signin.ts b/src/server/api/common/signin.ts
index 50f79f1919..af09a70340 100644
--- a/src/server/api/common/signin.ts
+++ b/src/server/api/common/signin.ts
@@ -1,9 +1,9 @@
import * as Koa from 'koa';
-import config from '../../../config';
+import config from '@/config';
import { ILocalUser } from '../../../models/entities/user';
import { Signins } from '../../../models';
-import { genId } from '../../../misc/gen-id';
+import { genId } from '@/misc/gen-id';
import { publishMainStream } from '../../../services/stream';
export default function(ctx: Koa.Context, user: ILocalUser, redirect = false) {
diff --git a/src/server/api/common/signup.ts b/src/server/api/common/signup.ts
index 26a9d03e0f..b8d197317a 100644
--- a/src/server/api/common/signup.ts
+++ b/src/server/api/common/signup.ts
@@ -5,8 +5,8 @@ import { User } from '../../../models/entities/user';
import { Users, UsedUsernames } from '../../../models';
import { UserProfile } from '../../../models/entities/user-profile';
import { getConnection } from 'typeorm';
-import { genId } from '../../../misc/gen-id';
-import { toPunyNullable } from '../../../misc/convert-host';
+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';
diff --git a/src/server/api/define.ts b/src/server/api/define.ts
index 4e59357c13..432d5017e8 100644
--- a/src/server/api/define.ts
+++ b/src/server/api/define.ts
@@ -2,9 +2,21 @@ 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 { SchemaType } from '@/misc/schema';
import { AccessToken } from '../../models/entities/access-token';
+type SimpleUserInfo = {
+ id: ILocalUser['id'];
+ host: ILocalUser['host'];
+ username: ILocalUser['username'];
+ uri: ILocalUser['uri'];
+ inbox: ILocalUser['inbox'];
+ sharedInbox: ILocalUser['sharedInbox'];
+ isAdmin: ILocalUser['isAdmin'];
+ isModerator: ILocalUser['isModerator'];
+ isSilenced: ILocalUser['isSilenced'];
+};
+
// TODO: defaultが設定されている場合はその型も考慮する
type Params<T extends IEndpointMeta> = {
[P in keyof T['params']]: NonNullable<T['params']>[P]['transform'] extends Function
@@ -15,13 +27,12 @@ type Params<T extends IEndpointMeta> = {
export type Response = Record<string, any> | void;
type executor<T extends IEndpointMeta> =
- (params: Params<T>, user: T['requireCredential'] extends true ? ILocalUser : ILocalUser | null, token: AccessToken | null, file?: any, cleanup?: Function) =>
+ (params: Params<T>, user: T['requireCredential'] extends true ? SimpleUserInfo : SimpleUserInfo | null, token: AccessToken | null, file?: any, cleanup?: Function) =>
Promise<T['res'] extends undefined ? Response : SchemaType<NonNullable<T['res']>>>;
-// TODO: API関数に user まるごと渡すのではなくユーザーIDなどの最小限のプロパティだけ渡すようにしたい(キャッシュとか考えないでよくなるため)
export default function <T extends IEndpointMeta>(meta: T, cb: executor<T>)
- : (params: any, user: T['requireCredential'] extends true ? ILocalUser : ILocalUser | null, token: AccessToken | null, file?: any) => Promise<any> {
- return (params: any, user: T['requireCredential'] extends true ? ILocalUser : ILocalUser | null, token: AccessToken | null, file?: any) => {
+ : (params: any, user: T['requireCredential'] extends true ? SimpleUserInfo : SimpleUserInfo | null, token: AccessToken | null, file?: any) => Promise<any> {
+ return (params: any, user: T['requireCredential'] extends true ? SimpleUserInfo : SimpleUserInfo | null, token: AccessToken | null, file?: any) => {
function cleanup() {
fs.unlink(file.path, () => {});
}
diff --git a/src/server/api/endpoints.ts b/src/server/api/endpoints.ts
index 1a8fca6dfa..9847cd2bb6 100644
--- a/src/server/api/endpoints.ts
+++ b/src/server/api/endpoints.ts
@@ -1,7 +1,7 @@
import { Context } from 'cafy';
import * as path from 'path';
import * as glob from 'glob';
-import { Schema } from '../../misc/schema';
+import { Schema } from '@/misc/schema';
export type Param = {
validator: Context<any>;
diff --git a/src/server/api/endpoints/admin/abuse-user-reports.ts b/src/server/api/endpoints/admin/abuse-user-reports.ts
index d63997d203..bbb696394e 100644
--- a/src/server/api/endpoints/admin/abuse-user-reports.ts
+++ b/src/server/api/endpoints/admin/abuse-user-reports.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { AbuseUserReports } from '../../../../models';
import { makePaginationQuery } from '../../common/make-pagination-query';
diff --git a/src/server/api/endpoints/admin/accounts/create.ts b/src/server/api/endpoints/admin/accounts/create.ts
index 27ceca158b..9e3fc46acd 100644
--- a/src/server/api/endpoints/admin/accounts/create.ts
+++ b/src/server/api/endpoints/admin/accounts/create.ts
@@ -34,7 +34,8 @@ export const meta = {
}
};
-export default define(meta, async (ps, me) => {
+export default define(meta, async (ps, _me) => {
+ const me = _me ? await Users.findOneOrFail(_me.id) : null;
const noUsers = (await Users.count({
host: null,
})) === 0;
diff --git a/src/server/api/endpoints/admin/announcements/create.ts b/src/server/api/endpoints/admin/announcements/create.ts
index dc01621c75..3675e50bac 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 { genId } from '@/misc/gen-id';
export const meta = {
desc: {
diff --git a/src/server/api/endpoints/admin/announcements/delete.ts b/src/server/api/endpoints/admin/announcements/delete.ts
index 6c9c065757..44a46ae435 100644
--- a/src/server/api/endpoints/admin/announcements/delete.ts
+++ b/src/server/api/endpoints/admin/announcements/delete.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../../define';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import { Announcements } from '../../../../../models';
import { ApiError } from '../../../error';
diff --git a/src/server/api/endpoints/admin/announcements/list.ts b/src/server/api/endpoints/admin/announcements/list.ts
index 5489b0d2c7..a42f24c45e 100644
--- a/src/server/api/endpoints/admin/announcements/list.ts
+++ b/src/server/api/endpoints/admin/announcements/list.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { Announcements, AnnouncementReads } from '../../../../../models';
import { makePaginationQuery } from '../../../common/make-pagination-query';
diff --git a/src/server/api/endpoints/admin/announcements/update.ts b/src/server/api/endpoints/admin/announcements/update.ts
index 9c4165eae0..c869e7c9c6 100644
--- a/src/server/api/endpoints/admin/announcements/update.ts
+++ b/src/server/api/endpoints/admin/announcements/update.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../../define';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import { Announcements } from '../../../../../models';
import { ApiError } from '../../../error';
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 9da3b632ac..8143239b54 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
@@ -2,7 +2,7 @@ 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 { ID } from '@/misc/cafy-id';
export const meta = {
desc: {
diff --git a/src/server/api/endpoints/admin/delete-logs.ts b/src/server/api/endpoints/admin/delete-logs.ts
index 3719387312..1caea46ea0 100644
--- a/src/server/api/endpoints/admin/delete-logs.ts
+++ b/src/server/api/endpoints/admin/delete-logs.ts
@@ -14,5 +14,5 @@ export const meta = {
};
export default define(meta, async (ps) => {
- await Logs.delete({});
+ await Logs.clear(); // TRUNCATE
});
diff --git a/src/server/api/endpoints/admin/drive/files.ts b/src/server/api/endpoints/admin/drive/files.ts
index 496050d2df..1a5c940f1e 100644
--- a/src/server/api/endpoints/admin/drive/files.ts
+++ b/src/server/api/endpoints/admin/drive/files.ts
@@ -2,7 +2,7 @@ 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 { ID } from '@/misc/cafy-id';
export const meta = {
desc: {
diff --git a/src/server/api/endpoints/admin/drive/show-file.ts b/src/server/api/endpoints/admin/drive/show-file.ts
index 96478a1c7d..cfe25306c2 100644
--- a/src/server/api/endpoints/admin/drive/show-file.ts
+++ b/src/server/api/endpoints/admin/drive/show-file.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
import { DriveFiles } from '../../../../../models';
diff --git a/src/server/api/endpoints/admin/emoji/add.ts b/src/server/api/endpoints/admin/emoji/add.ts
index 77e29cfb2a..04eac79d6a 100644
--- a/src/server/api/endpoints/admin/emoji/add.ts
+++ b/src/server/api/endpoints/admin/emoji/add.ts
@@ -1,11 +1,11 @@
import $ from 'cafy';
import define from '../../../define';
import { Emojis, DriveFiles } from '../../../../../models';
-import { genId } from '../../../../../misc/gen-id';
+import { genId } from '@/misc/gen-id';
import { getConnection } from 'typeorm';
import { insertModerationLog } from '../../../../../services/insert-moderation-log';
import { ApiError } from '../../../error';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import rndstr from 'rndstr';
import { publishBroadcastStream } from '../../../../../services/stream';
diff --git a/src/server/api/endpoints/admin/emoji/copy.ts b/src/server/api/endpoints/admin/emoji/copy.ts
index 5c3c4f6fc5..7df7830072 100644
--- a/src/server/api/endpoints/admin/emoji/copy.ts
+++ b/src/server/api/endpoints/admin/emoji/copy.ts
@@ -1,11 +1,11 @@
import $ from 'cafy';
import define from '../../../define';
import { Emojis } from '../../../../../models';
-import { genId } from '../../../../../misc/gen-id';
+import { genId } from '@/misc/gen-id';
import { getConnection } from 'typeorm';
import { ApiError } from '../../../error';
import { DriveFile } from '../../../../../models/entities/drive-file';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import uploadFromUrl from '../../../../../services/drive/upload-from-url';
export const meta = {
diff --git a/src/server/api/endpoints/admin/emoji/list-remote.ts b/src/server/api/endpoints/admin/emoji/list-remote.ts
index 81029fbbba..6a4e86c342 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 { toPuny } from '@/misc/convert-host';
import { makePaginationQuery } from '../../../common/make-pagination-query';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
export const meta = {
desc: {
diff --git a/src/server/api/endpoints/admin/emoji/list.ts b/src/server/api/endpoints/admin/emoji/list.ts
index 6d042b0afd..9e50ce61c8 100644
--- a/src/server/api/endpoints/admin/emoji/list.ts
+++ b/src/server/api/endpoints/admin/emoji/list.ts
@@ -2,7 +2,7 @@ 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 { ID } from '@/misc/cafy-id';
import { Emoji } from '../../../../../models/entities/emoji';
export const meta = {
@@ -96,9 +96,9 @@ export default define(meta, async (ps) => {
emojis = await q.getMany();
emojis = emojis.filter(emoji =>
- emoji.name.includes(ps.query) ||
- emoji.aliases.some(a => a.includes(ps.query)) ||
- emoji.category?.includes(ps.query));
+ emoji.name.includes(ps.query!) ||
+ emoji.aliases.some(a => a.includes(ps.query!)) ||
+ emoji.category?.includes(ps.query!));
emojis.splice(ps.limit! + 1);
} else {
diff --git a/src/server/api/endpoints/admin/emoji/remove.ts b/src/server/api/endpoints/admin/emoji/remove.ts
index 19ffa1c166..3f87dded3b 100644
--- a/src/server/api/endpoints/admin/emoji/remove.ts
+++ b/src/server/api/endpoints/admin/emoji/remove.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../../define';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import { Emojis } from '../../../../../models';
import { getConnection } from 'typeorm';
import { insertModerationLog } from '../../../../../services/insert-moderation-log';
diff --git a/src/server/api/endpoints/admin/emoji/update.ts b/src/server/api/endpoints/admin/emoji/update.ts
index 2493b62c2a..2fa6587e2b 100644
--- a/src/server/api/endpoints/admin/emoji/update.ts
+++ b/src/server/api/endpoints/admin/emoji/update.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../../define';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import { Emojis } from '../../../../../models';
import { getConnection } from 'typeorm';
import { ApiError } from '../../../error';
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 923a5f52cb..65b3b6e260 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,7 +1,7 @@
import $ from 'cafy';
import define from '../../../define';
import { Instances } from '../../../../../models';
-import { toPuny } from '../../../../../misc/convert-host';
+import { toPuny } from '@/misc/convert-host';
import { fetchInstanceMetadata } from '../../../../../services/fetch-instance-metadata';
export const meta = {
diff --git a/src/server/api/endpoints/admin/federation/update-instance.ts b/src/server/api/endpoints/admin/federation/update-instance.ts
index 7206e4fb2e..3e9d243d74 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 { toPuny } from '@/misc/convert-host';
export const meta = {
desc: {
diff --git a/src/server/api/endpoints/admin/invite.ts b/src/server/api/endpoints/admin/invite.ts
index 987105791f..2a87fae714 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 { genId } from '@/misc/gen-id';
export const meta = {
desc: {
diff --git a/src/server/api/endpoints/admin/moderators/add.ts b/src/server/api/endpoints/admin/moderators/add.ts
index fd862a9a4f..a96cf35db1 100644
--- a/src/server/api/endpoints/admin/moderators/add.ts
+++ b/src/server/api/endpoints/admin/moderators/add.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { Users } from '../../../../../models';
diff --git a/src/server/api/endpoints/admin/moderators/remove.ts b/src/server/api/endpoints/admin/moderators/remove.ts
index 1eee750bc4..c9c884092c 100644
--- a/src/server/api/endpoints/admin/moderators/remove.ts
+++ b/src/server/api/endpoints/admin/moderators/remove.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { Users } from '../../../../../models';
diff --git a/src/server/api/endpoints/admin/promo/create.ts b/src/server/api/endpoints/admin/promo/create.ts
index aa22e68ebd..3ee1616145 100644
--- a/src/server/api/endpoints/admin/promo/create.ts
+++ b/src/server/api/endpoints/admin/promo/create.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
import { getNote } from '../../../common/getters';
diff --git a/src/server/api/endpoints/admin/queue/deliver-delayed.ts b/src/server/api/endpoints/admin/queue/deliver-delayed.ts
index 221aa35e48..1de5b060e2 100644
--- a/src/server/api/endpoints/admin/queue/deliver-delayed.ts
+++ b/src/server/api/endpoints/admin/queue/deliver-delayed.ts
@@ -1,5 +1,6 @@
+import { deliverQueue } from '@/queue/queues';
+import { URL } from 'url';
import define from '../../../define';
-import { deliverQueue } from '../../../../../queue';
export const meta = {
desc: {
diff --git a/src/server/api/endpoints/admin/queue/inbox-delayed.ts b/src/server/api/endpoints/admin/queue/inbox-delayed.ts
index 52f67cb514..3599c012a5 100644
--- a/src/server/api/endpoints/admin/queue/inbox-delayed.ts
+++ b/src/server/api/endpoints/admin/queue/inbox-delayed.ts
@@ -1,3 +1,4 @@
+import { URL } from 'url';
import define from '../../../define';
import { inboxQueue } from '../../../../../queue';
diff --git a/src/server/api/endpoints/admin/queue/jobs.ts b/src/server/api/endpoints/admin/queue/jobs.ts
index 5ab78e3c48..ffae1426be 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 $ from 'cafy';
import define from '../../../define';
-import { deliverQueue, inboxQueue, dbQueue, objectStorageQueue } from '../../../../../queue';
export const meta = {
desc: {
diff --git a/src/server/api/endpoints/admin/queue/stats.ts b/src/server/api/endpoints/admin/queue/stats.ts
index bd64d2ac06..cc1cf8a9e0 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';
export const meta = {
desc: {
diff --git a/src/server/api/endpoints/admin/relays/add.ts b/src/server/api/endpoints/admin/relays/add.ts
index 831e05c835..e10bd92c8d 100644
--- a/src/server/api/endpoints/admin/relays/add.ts
+++ b/src/server/api/endpoints/admin/relays/add.ts
@@ -1,3 +1,4 @@
+import { URL } from 'url';
import $ from 'cafy';
import define from '../../../define';
import { addRelay } from '../../../../../services/relay';
diff --git a/src/server/api/endpoints/admin/reset-password.ts b/src/server/api/endpoints/admin/reset-password.ts
index 2f55cf23a1..a316ef9c1d 100644
--- a/src/server/api/endpoints/admin/reset-password.ts
+++ b/src/server/api/endpoints/admin/reset-password.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import * as bcrypt from 'bcryptjs';
import rndstr from 'rndstr';
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 f8cd8def57..1446951828 100644
--- a/src/server/api/endpoints/admin/resolve-abuse-user-report.ts
+++ b/src/server/api/endpoints/admin/resolve-abuse-user-report.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { AbuseUserReports } from '../../../../models';
diff --git a/src/server/api/endpoints/admin/server-info.ts b/src/server/api/endpoints/admin/server-info.ts
index 3b48a811e5..33e6190974 100644
--- a/src/server/api/endpoints/admin/server-info.ts
+++ b/src/server/api/endpoints/admin/server-info.ts
@@ -2,7 +2,7 @@ import * as os from 'os';
import * as si from 'systeminformation';
import { getConnection } from 'typeorm';
import define from '../../define';
-import redis from '../../../../db/redis';
+import { redisClient } from '../../../../db/redis';
export const meta = {
requireCredential: true as const,
@@ -115,7 +115,7 @@ export default define(meta, async () => {
os: os.platform(),
node: process.version,
psql: await getConnection().query('SHOW server_version').then(x => x[0].server_version),
- redis: redis.server_info.redis_version,
+ redis: redisClient.server_info.redis_version,
cpu: {
model: os.cpus()[0].model,
cores: os.cpus().length
diff --git a/src/server/api/endpoints/admin/show-moderation-logs.ts b/src/server/api/endpoints/admin/show-moderation-logs.ts
index f41d91647a..59e6f0033d 100644
--- a/src/server/api/endpoints/admin/show-moderation-logs.ts
+++ b/src/server/api/endpoints/admin/show-moderation-logs.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ModerationLogs } from '../../../../models';
import { makePaginationQuery } from '../../common/make-pagination-query';
diff --git a/src/server/api/endpoints/admin/show-user.ts b/src/server/api/endpoints/admin/show-user.ts
index 63889a9e6b..52c4458c35 100644
--- a/src/server/api/endpoints/admin/show-user.ts
+++ b/src/server/api/endpoints/admin/show-user.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { Users } from '../../../../models';
diff --git a/src/server/api/endpoints/admin/silence-user.ts b/src/server/api/endpoints/admin/silence-user.ts
index cd5c339a5b..d057459824 100644
--- a/src/server/api/endpoints/admin/silence-user.ts
+++ b/src/server/api/endpoints/admin/silence-user.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { Users } from '../../../../models';
import { insertModerationLog } from '../../../../services/insert-moderation-log';
diff --git a/src/server/api/endpoints/admin/suspend-user.ts b/src/server/api/endpoints/admin/suspend-user.ts
index 10be88b8f1..a4485445c9 100644
--- a/src/server/api/endpoints/admin/suspend-user.ts
+++ b/src/server/api/endpoints/admin/suspend-user.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import deleteFollowing from '../../../../services/following/delete';
import { Users, Followings, Notifications } from '../../../../models';
diff --git a/src/server/api/endpoints/admin/unsilence-user.ts b/src/server/api/endpoints/admin/unsilence-user.ts
index 63e4be06f3..c811ae5d1c 100644
--- a/src/server/api/endpoints/admin/unsilence-user.ts
+++ b/src/server/api/endpoints/admin/unsilence-user.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { Users } from '../../../../models';
import { insertModerationLog } from '../../../../services/insert-moderation-log';
diff --git a/src/server/api/endpoints/admin/unsuspend-user.ts b/src/server/api/endpoints/admin/unsuspend-user.ts
index 9690d6ef0b..7658d37f8b 100644
--- a/src/server/api/endpoints/admin/unsuspend-user.ts
+++ b/src/server/api/endpoints/admin/unsuspend-user.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { Users } from '../../../../models';
import { insertModerationLog } from '../../../../services/insert-moderation-log';
diff --git a/src/server/api/endpoints/admin/update-meta.ts b/src/server/api/endpoints/admin/update-meta.ts
index 163d7a2519..d9ce7c061c 100644
--- a/src/server/api/endpoints/admin/update-meta.ts
+++ b/src/server/api/endpoints/admin/update-meta.ts
@@ -3,8 +3,8 @@ import define from '../../define';
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 { DB_MAX_NOTE_TEXT_LENGTH } from '@/misc/hard-limits';
+import { ID } from '@/misc/cafy-id';
export const meta = {
desc: {
diff --git a/src/server/api/endpoints/admin/update-remote-user.ts b/src/server/api/endpoints/admin/update-remote-user.ts
index a6b5ef1e85..9577ac0a55 100644
--- a/src/server/api/endpoints/admin/update-remote-user.ts
+++ b/src/server/api/endpoints/admin/update-remote-user.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { getRemoteUser } from '../../common/getters';
import { updatePerson } from '../../../../remote/activitypub/models/person';
diff --git a/src/server/api/endpoints/announcements.ts b/src/server/api/endpoints/announcements.ts
index 5d0fd9bdfa..a7c477bc7c 100644
--- a/src/server/api/endpoints/announcements.ts
+++ b/src/server/api/endpoints/announcements.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../define';
import { Announcements, AnnouncementReads } from '../../../models';
import { makePaginationQuery } from '../common/make-pagination-query';
diff --git a/src/server/api/endpoints/antennas/create.ts b/src/server/api/endpoints/antennas/create.ts
index b5f0eead2a..04ca21bba7 100644
--- a/src/server/api/endpoints/antennas/create.ts
+++ b/src/server/api/endpoints/antennas/create.ts
@@ -1,9 +1,10 @@
import $ from 'cafy';
import define from '../../define';
-import { genId } from '../../../../misc/gen-id';
+import { genId } from '@/misc/gen-id';
import { Antennas, UserLists, UserGroupJoinings } from '../../../../models';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import { ApiError } from '../../error';
+import { publishInternalEvent } from '../../../../services/stream';
export const meta = {
desc: {
@@ -88,7 +89,7 @@ export default define(meta, async (ps, user) => {
let userList;
let userGroupJoining;
- if (ps.src === 'list') {
+ if (ps.src === 'list' && ps.userListId) {
userList = await UserLists.findOne({
id: ps.userListId,
userId: user.id,
@@ -97,7 +98,7 @@ export default define(meta, async (ps, user) => {
if (userList == null) {
throw new ApiError(meta.errors.noSuchUserList);
}
- } else if (ps.src === 'group') {
+ } else if (ps.src === 'group' && ps.userGroupId) {
userGroupJoining = await UserGroupJoinings.findOne({
userGroupId: ps.userGroupId,
userId: user.id,
@@ -108,7 +109,7 @@ export default define(meta, async (ps, user) => {
}
}
- const antenna = await Antennas.save({
+ const antenna = await Antennas.insert({
id: genId(),
createdAt: new Date(),
userId: user.id,
@@ -123,7 +124,9 @@ export default define(meta, async (ps, user) => {
withReplies: ps.withReplies,
withFile: ps.withFile,
notify: ps.notify,
- });
+ }).then(x => Antennas.findOneOrFail(x.identifiers[0]));
+
+ publishInternalEvent('antennaCreated', antenna);
return await Antennas.pack(antenna);
});
diff --git a/src/server/api/endpoints/antennas/delete.ts b/src/server/api/endpoints/antennas/delete.ts
index 9008c37c8e..5d617bb5b5 100644
--- a/src/server/api/endpoints/antennas/delete.ts
+++ b/src/server/api/endpoints/antennas/delete.ts
@@ -1,8 +1,9 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
import { Antennas } from '../../../../models';
+import { publishInternalEvent } from '../../../../services/stream';
export const meta = {
desc: {
@@ -42,4 +43,6 @@ export default define(meta, async (ps, user) => {
}
await Antennas.delete(antenna.id);
+
+ publishInternalEvent('antennaDeleted', antenna);
});
diff --git a/src/server/api/endpoints/antennas/notes.ts b/src/server/api/endpoints/antennas/notes.ts
index 6fd3cf2df5..456c1b6e00 100644
--- a/src/server/api/endpoints/antennas/notes.ts
+++ b/src/server/api/endpoints/antennas/notes.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { Antennas, Notes, AntennaNotes } from '../../../../models';
import { makePaginationQuery } from '../../common/make-pagination-query';
diff --git a/src/server/api/endpoints/antennas/show.ts b/src/server/api/endpoints/antennas/show.ts
index ed400f830c..af2a28b793 100644
--- a/src/server/api/endpoints/antennas/show.ts
+++ b/src/server/api/endpoints/antennas/show.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
import { Antennas } from '../../../../models';
diff --git a/src/server/api/endpoints/antennas/update.ts b/src/server/api/endpoints/antennas/update.ts
index 58f4e68c89..17b0f854f3 100644
--- a/src/server/api/endpoints/antennas/update.ts
+++ b/src/server/api/endpoints/antennas/update.ts
@@ -1,8 +1,9 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+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';
export const meta = {
desc: {
@@ -107,7 +108,7 @@ export default define(meta, async (ps, user) => {
let userList;
let userGroupJoining;
- if (ps.src === 'list') {
+ if (ps.src === 'list' && ps.userListId) {
userList = await UserLists.findOne({
id: ps.userListId,
userId: user.id,
@@ -116,7 +117,7 @@ export default define(meta, async (ps, user) => {
if (userList == null) {
throw new ApiError(meta.errors.noSuchUserList);
}
- } else if (ps.src === 'group') {
+ } else if (ps.src === 'group' && ps.userGroupId) {
userGroupJoining = await UserGroupJoinings.findOne({
userGroupId: ps.userGroupId,
userId: user.id,
@@ -141,5 +142,7 @@ export default define(meta, async (ps, user) => {
notify: ps.notify,
});
+ publishInternalEvent('antennaUpdated', Antennas.findOneOrFail(antenna.id));
+
return await Antennas.pack(antenna.id);
});
diff --git a/src/server/api/endpoints/ap/show.ts b/src/server/api/endpoints/ap/show.ts
index e8297db472..2ce11160e8 100644
--- a/src/server/api/endpoints/ap/show.ts
+++ b/src/server/api/endpoints/ap/show.ts
@@ -1,15 +1,15 @@
import $ from 'cafy';
import define from '../../define';
-import config from '../../../../config';
+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 { 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 { fetchMeta } from '@/misc/fetch-meta';
import { validActor, validPost } from '../../../../remote/activitypub/type';
export const meta = {
diff --git a/src/server/api/endpoints/app/create.ts b/src/server/api/endpoints/app/create.ts
index 776865ffb6..db72bd1c42 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 { genId } from '@/misc/gen-id';
import { unique } from '../../../../prelude/array';
-import { secureRndstr } from '../../../../misc/secure-rndstr';
+import { secureRndstr } from '@/misc/secure-rndstr';
export const meta = {
tags: ['app'],
diff --git a/src/server/api/endpoints/app/show.ts b/src/server/api/endpoints/app/show.ts
index 254ae30884..65f8c77981 100644
--- a/src/server/api/endpoints/app/show.ts
+++ b/src/server/api/endpoints/app/show.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
import { Apps } from '../../../../models';
@@ -46,6 +46,6 @@ export default define(meta, async (ps, user, token) => {
return await Apps.pack(ap, user, {
detail: true,
- includeSecret: isSecure && (ap.userId === user.id)
+ includeSecret: isSecure && (ap.userId === user!.id)
});
});
diff --git a/src/server/api/endpoints/auth/accept.ts b/src/server/api/endpoints/auth/accept.ts
index 444053a946..ee0d0421c9 100644
--- a/src/server/api/endpoints/auth/accept.ts
+++ b/src/server/api/endpoints/auth/accept.ts
@@ -3,8 +3,8 @@ 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 { genId } from '@/misc/gen-id';
+import { secureRndstr } from '@/misc/secure-rndstr';
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 5596e6122b..e0d003c499 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 config from '@/config';
import define from '../../../define';
import { ApiError } from '../../../error';
import { Apps, AuthSessions } from '../../../../../models';
-import { genId } from '../../../../../misc/gen-id';
+import { genId } from '@/misc/gen-id';
export const meta = {
tags: ['auth'],
diff --git a/src/server/api/endpoints/blocking/create.ts b/src/server/api/endpoints/blocking/create.ts
index dfab338a8b..60fde8ad78 100644
--- a/src/server/api/endpoints/blocking/create.ts
+++ b/src/server/api/endpoints/blocking/create.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import * as ms from 'ms';
import create from '../../../../services/blocking/create';
import define from '../../define';
@@ -62,7 +62,7 @@ export const meta = {
};
export default define(meta, async (ps, user) => {
- const blocker = user;
+ const blocker = await Users.findOneOrFail(user.id);
// 自分自身
if (user.id === ps.userId) {
@@ -93,7 +93,7 @@ export default define(meta, async (ps, user) => {
noteUserId: blockee.id
});
- return await Users.pack(blockee.id, user, {
+ return await Users.pack(blockee.id, blocker, {
detail: true
});
});
diff --git a/src/server/api/endpoints/blocking/delete.ts b/src/server/api/endpoints/blocking/delete.ts
index 22d2df5970..8caa3efc88 100644
--- a/src/server/api/endpoints/blocking/delete.ts
+++ b/src/server/api/endpoints/blocking/delete.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import * as ms from 'ms';
import deleteBlocking from '../../../../services/blocking/delete';
import define from '../../define';
@@ -126,7 +126,7 @@ export const meta = {
};
export default define(meta, async (ps, user) => {
- const blocker = user;
+ const blocker = await Users.findOneOrFail(user.id);
// Check if the blockee is yourself
if (user.id === ps.userId) {
@@ -152,7 +152,7 @@ export default define(meta, async (ps, user) => {
// Delete blocking
await deleteBlocking(blocker, blockee);
- return await Users.pack(blockee.id, user, {
+ return await Users.pack(blockee.id, blocker, {
detail: true
});
});
diff --git a/src/server/api/endpoints/blocking/list.ts b/src/server/api/endpoints/blocking/list.ts
index a9bb1c5f96..fe8706b5c2 100644
--- a/src/server/api/endpoints/blocking/list.ts
+++ b/src/server/api/endpoints/blocking/list.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { Blockings } from '../../../../models';
import { makePaginationQuery } from '../../common/make-pagination-query';
diff --git a/src/server/api/endpoints/channels/create.ts b/src/server/api/endpoints/channels/create.ts
index 53436e703d..c6dc68faf8 100644
--- a/src/server/api/endpoints/channels/create.ts
+++ b/src/server/api/endpoints/channels/create.ts
@@ -3,8 +3,8 @@ 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 { genId } from '@/misc/gen-id';
+import { ID } from '@/misc/cafy-id';
export const meta = {
tags: ['channels'],
diff --git a/src/server/api/endpoints/channels/follow.ts b/src/server/api/endpoints/channels/follow.ts
index c5976a8a34..b264f7451a 100644
--- a/src/server/api/endpoints/channels/follow.ts
+++ b/src/server/api/endpoints/channels/follow.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+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 { genId } from '@/misc/gen-id';
import { publishUserEvent } from '../../../../services/stream';
export const meta = {
diff --git a/src/server/api/endpoints/channels/followed.ts b/src/server/api/endpoints/channels/followed.ts
index bd37d420f6..7f0cfe4941 100644
--- a/src/server/api/endpoints/channels/followed.ts
+++ b/src/server/api/endpoints/channels/followed.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { Channels, ChannelFollowings } from '../../../../models';
import { makePaginationQuery } from '../../common/make-pagination-query';
diff --git a/src/server/api/endpoints/channels/owned.ts b/src/server/api/endpoints/channels/owned.ts
index 1a7e04640d..4f538f651e 100644
--- a/src/server/api/endpoints/channels/owned.ts
+++ b/src/server/api/endpoints/channels/owned.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { Channels } from '../../../../models';
import { makePaginationQuery } from '../../common/make-pagination-query';
diff --git a/src/server/api/endpoints/channels/show.ts b/src/server/api/endpoints/channels/show.ts
index 63057dd57f..d5f182da11 100644
--- a/src/server/api/endpoints/channels/show.ts
+++ b/src/server/api/endpoints/channels/show.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
import { Channels } from '../../../../models';
diff --git a/src/server/api/endpoints/channels/timeline.ts b/src/server/api/endpoints/channels/timeline.ts
index 00a7cd86d5..494221010a 100644
--- a/src/server/api/endpoints/channels/timeline.ts
+++ b/src/server/api/endpoints/channels/timeline.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
import { Notes, Channels } from '../../../../models';
@@ -97,7 +97,7 @@ export default define(meta, async (ps, user) => {
const timeline = await query.take(ps.limit!).getMany();
- activeUsersChart.update(user);
+ if (user) activeUsersChart.update(user);
return await Notes.packMany(timeline, user);
});
diff --git a/src/server/api/endpoints/channels/unfollow.ts b/src/server/api/endpoints/channels/unfollow.ts
index 3eb0f1519b..116af50337 100644
--- a/src/server/api/endpoints/channels/unfollow.ts
+++ b/src/server/api/endpoints/channels/unfollow.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
import { Channels, ChannelFollowings } from '../../../../models';
diff --git a/src/server/api/endpoints/channels/update.ts b/src/server/api/endpoints/channels/update.ts
index ca35fe85cb..1495297ee5 100644
--- a/src/server/api/endpoints/channels/update.ts
+++ b/src/server/api/endpoints/channels/update.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
import { Channels, DriveFiles } from '../../../../models';
diff --git a/src/server/api/endpoints/charts/user/drive.ts b/src/server/api/endpoints/charts/user/drive.ts
index 5aae5bd757..7f4218b924 100644
--- a/src/server/api/endpoints/charts/user/drive.ts
+++ b/src/server/api/endpoints/charts/user/drive.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../../define';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import { convertLog } from '../../../../../services/chart/core';
import { perUserDriveChart } from '../../../../../services/chart';
diff --git a/src/server/api/endpoints/charts/user/following.ts b/src/server/api/endpoints/charts/user/following.ts
index 9d772c39c9..63eb90a49a 100644
--- a/src/server/api/endpoints/charts/user/following.ts
+++ b/src/server/api/endpoints/charts/user/following.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../../define';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import { convertLog } from '../../../../../services/chart/core';
import { perUserFollowingChart } from '../../../../../services/chart';
diff --git a/src/server/api/endpoints/charts/user/notes.ts b/src/server/api/endpoints/charts/user/notes.ts
index 8de7c0c3e4..87425e3dc8 100644
--- a/src/server/api/endpoints/charts/user/notes.ts
+++ b/src/server/api/endpoints/charts/user/notes.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../../define';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import { convertLog } from '../../../../../services/chart/core';
import { perUserNotesChart } from '../../../../../services/chart';
diff --git a/src/server/api/endpoints/charts/user/reactions.ts b/src/server/api/endpoints/charts/user/reactions.ts
index 4c37305fc3..7ded604ac2 100644
--- a/src/server/api/endpoints/charts/user/reactions.ts
+++ b/src/server/api/endpoints/charts/user/reactions.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../../define';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import { convertLog } from '../../../../../services/chart/core';
import { perUserReactionsChart } from '../../../../../services/chart';
diff --git a/src/server/api/endpoints/clips/add-note.ts b/src/server/api/endpoints/clips/add-note.ts
index ee6a117b2d..3d72def4f5 100644
--- a/src/server/api/endpoints/clips/add-note.ts
+++ b/src/server/api/endpoints/clips/add-note.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+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 { genId } from '@/misc/gen-id';
import { getNote } from '../../common/getters';
export const meta = {
diff --git a/src/server/api/endpoints/clips/create.ts b/src/server/api/endpoints/clips/create.ts
index b26c42c56c..fb2a77fe5b 100644
--- a/src/server/api/endpoints/clips/create.ts
+++ b/src/server/api/endpoints/clips/create.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../define';
-import { genId } from '../../../../misc/gen-id';
+import { genId } from '@/misc/gen-id';
import { Clips } from '../../../../models';
export const meta = {
@@ -32,14 +32,14 @@ export const meta = {
};
export default define(meta, async (ps, user) => {
- const clip = await Clips.save({
+ const clip = await Clips.insert({
id: genId(),
createdAt: new Date(),
userId: user.id,
name: ps.name,
isPublic: ps.isPublic,
description: ps.description,
- });
+ }).then(x => Clips.findOneOrFail(x.identifiers[0]));
return await Clips.pack(clip);
});
diff --git a/src/server/api/endpoints/clips/delete.ts b/src/server/api/endpoints/clips/delete.ts
index 746f93188c..20b2addb76 100644
--- a/src/server/api/endpoints/clips/delete.ts
+++ b/src/server/api/endpoints/clips/delete.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
import { Clips } from '../../../../models';
diff --git a/src/server/api/endpoints/clips/notes.ts b/src/server/api/endpoints/clips/notes.ts
index 676629c328..5fd17584d3 100644
--- a/src/server/api/endpoints/clips/notes.ts
+++ b/src/server/api/endpoints/clips/notes.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ClipNotes, Clips, Notes } from '../../../../models';
import { makePaginationQuery } from '../../common/make-pagination-query';
diff --git a/src/server/api/endpoints/clips/show.ts b/src/server/api/endpoints/clips/show.ts
index 8c285d88b5..43d2719129 100644
--- a/src/server/api/endpoints/clips/show.ts
+++ b/src/server/api/endpoints/clips/show.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
import { Clips } from '../../../../models';
diff --git a/src/server/api/endpoints/clips/update.ts b/src/server/api/endpoints/clips/update.ts
index 041691da2a..a368174e76 100644
--- a/src/server/api/endpoints/clips/update.ts
+++ b/src/server/api/endpoints/clips/update.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
import { Clips } from '../../../../models';
diff --git a/src/server/api/endpoints/drive.ts b/src/server/api/endpoints/drive.ts
index 527b7719a4..0100d4da79 100644
--- a/src/server/api/endpoints/drive.ts
+++ b/src/server/api/endpoints/drive.ts
@@ -1,5 +1,5 @@
import define from '../define';
-import { fetchMeta } from '../../../misc/fetch-meta';
+import { fetchMeta } from '@/misc/fetch-meta';
import { DriveFiles } from '../../../models';
export const meta = {
@@ -34,7 +34,7 @@ export default define(meta, async (ps, user) => {
const instance = await fetchMeta(true);
// Calculate drive usage
- const usage = await DriveFiles.calcDriveUsageOf(user);
+ const usage = await DriveFiles.calcDriveUsageOf(user.id);
return {
capacity: 1024 * 1024 * instance.localDriveCapacityMb,
diff --git a/src/server/api/endpoints/drive/files.ts b/src/server/api/endpoints/drive/files.ts
index 00705fb9b7..85dc07cc16 100644
--- a/src/server/api/endpoints/drive/files.ts
+++ b/src/server/api/endpoints/drive/files.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { DriveFiles } from '../../../../models';
import { makePaginationQuery } from '../../common/make-pagination-query';
diff --git a/src/server/api/endpoints/drive/files/attached-notes.ts b/src/server/api/endpoints/drive/files/attached-notes.ts
index e1fc27f599..ea09581ba9 100644
--- a/src/server/api/endpoints/drive/files/attached-notes.ts
+++ b/src/server/api/endpoints/drive/files/attached-notes.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
import { DriveFiles, Notes } from '../../../../../models';
diff --git a/src/server/api/endpoints/drive/files/create.ts b/src/server/api/endpoints/drive/files/create.ts
index c0bb6bcc6e..82ff04e092 100644
--- a/src/server/api/endpoints/drive/files/create.ts
+++ b/src/server/api/endpoints/drive/files/create.ts
@@ -1,6 +1,6 @@
import * as ms from 'ms';
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import create from '../../../../../services/drive/add-file';
import define from '../../../define';
import { apiLogger } from '../../../logger';
diff --git a/src/server/api/endpoints/drive/files/delete.ts b/src/server/api/endpoints/drive/files/delete.ts
index 77d112ec94..211afaaba1 100644
--- a/src/server/api/endpoints/drive/files/delete.ts
+++ b/src/server/api/endpoints/drive/files/delete.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import { deleteFile } from '../../../../../services/drive/delete-file';
import { publishDriveStream } from '../../../../../services/stream';
import define from '../../../define';
diff --git a/src/server/api/endpoints/drive/files/find.ts b/src/server/api/endpoints/drive/files/find.ts
index 5872e2c0c1..b3613ca01b 100644
--- a/src/server/api/endpoints/drive/files/find.ts
+++ b/src/server/api/endpoints/drive/files/find.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { DriveFiles } from '../../../../../models';
diff --git a/src/server/api/endpoints/drive/files/show.ts b/src/server/api/endpoints/drive/files/show.ts
index 39f4b7d2f7..f4922bff13 100644
--- a/src/server/api/endpoints/drive/files/show.ts
+++ b/src/server/api/endpoints/drive/files/show.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
import { DriveFile } from '../../../../../models/entities/drive-file';
diff --git a/src/server/api/endpoints/drive/files/update.ts b/src/server/api/endpoints/drive/files/update.ts
index 7e43765c06..6eda83967b 100644
--- a/src/server/api/endpoints/drive/files/update.ts
+++ b/src/server/api/endpoints/drive/files/update.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import { publishDriveStream } from '../../../../../services/stream';
import define from '../../../define';
import { ApiError } from '../../../error';
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 296211c091..1b33099aa4 100644
--- a/src/server/api/endpoints/drive/files/upload-from-url.ts
+++ b/src/server/api/endpoints/drive/files/upload-from-url.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import * as ms from 'ms';
import uploadFromUrl from '../../../../../services/drive/upload-from-url';
import define from '../../../define';
diff --git a/src/server/api/endpoints/drive/folders.ts b/src/server/api/endpoints/drive/folders.ts
index f662d53ba6..89453e6e09 100644
--- a/src/server/api/endpoints/drive/folders.ts
+++ b/src/server/api/endpoints/drive/folders.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { DriveFolders } from '../../../../models';
import { makePaginationQuery } from '../../common/make-pagination-query';
diff --git a/src/server/api/endpoints/drive/folders/create.ts b/src/server/api/endpoints/drive/folders/create.ts
index edaa74532d..d2c5e00a9f 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 { 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 { genId } from '@/misc/gen-id';
export const meta = {
desc: {
@@ -68,13 +68,13 @@ export default define(meta, async (ps, user) => {
}
// Create folder
- const folder = await DriveFolders.save({
+ const folder = await DriveFolders.insert({
id: genId(),
createdAt: new Date(),
name: ps.name,
parentId: parent !== null ? parent.id : null,
userId: user.id
- });
+ }).then(x => DriveFolders.findOneOrFail(x.identifiers[0]));
const folderObj = await DriveFolders.pack(folder);
diff --git a/src/server/api/endpoints/drive/folders/delete.ts b/src/server/api/endpoints/drive/folders/delete.ts
index 439ef06a50..2a418069c9 100644
--- a/src/server/api/endpoints/drive/folders/delete.ts
+++ b/src/server/api/endpoints/drive/folders/delete.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { publishDriveStream } from '../../../../../services/stream';
import { ApiError } from '../../../error';
diff --git a/src/server/api/endpoints/drive/folders/find.ts b/src/server/api/endpoints/drive/folders/find.ts
index 72ce1d192b..e3f6aa4a91 100644
--- a/src/server/api/endpoints/drive/folders/find.ts
+++ b/src/server/api/endpoints/drive/folders/find.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { DriveFolders } from '../../../../../models';
diff --git a/src/server/api/endpoints/drive/folders/show.ts b/src/server/api/endpoints/drive/folders/show.ts
index b600b5e39f..ae00b9e367 100644
--- a/src/server/api/endpoints/drive/folders/show.ts
+++ b/src/server/api/endpoints/drive/folders/show.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
import { DriveFolders } from '../../../../../models';
diff --git a/src/server/api/endpoints/drive/folders/update.ts b/src/server/api/endpoints/drive/folders/update.ts
index c2a272c247..066013287c 100644
--- a/src/server/api/endpoints/drive/folders/update.ts
+++ b/src/server/api/endpoints/drive/folders/update.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import { publishDriveStream } from '../../../../../services/stream';
import define from '../../../define';
import { ApiError } from '../../../error';
diff --git a/src/server/api/endpoints/drive/stream.ts b/src/server/api/endpoints/drive/stream.ts
index 94c2051bbe..ca88acf5fe 100644
--- a/src/server/api/endpoints/drive/stream.ts
+++ b/src/server/api/endpoints/drive/stream.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { DriveFiles } from '../../../../models';
import { makePaginationQuery } from '../../common/make-pagination-query';
diff --git a/src/server/api/endpoints/federation/followers.ts b/src/server/api/endpoints/federation/followers.ts
index a5c564b0a8..727eada682 100644
--- a/src/server/api/endpoints/federation/followers.ts
+++ b/src/server/api/endpoints/federation/followers.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { Followings } from '../../../../models';
import { makePaginationQuery } from '../../common/make-pagination-query';
diff --git a/src/server/api/endpoints/federation/following.ts b/src/server/api/endpoints/federation/following.ts
index 80820f5a26..c6bc71a982 100644
--- a/src/server/api/endpoints/federation/following.ts
+++ b/src/server/api/endpoints/federation/following.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { Followings } from '../../../../models';
import { makePaginationQuery } from '../../common/make-pagination-query';
diff --git a/src/server/api/endpoints/federation/instances.ts b/src/server/api/endpoints/federation/instances.ts
index 239756af53..29515f0eb4 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 config from '@/config';
import define from '../../define';
import { Instances } from '../../../../models';
-import { fetchMeta } from '../../../../misc/fetch-meta';
+import { fetchMeta } from '@/misc/fetch-meta';
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 1a0bcdb23e..549d7340fb 100644
--- a/src/server/api/endpoints/federation/show-instance.ts
+++ b/src/server/api/endpoints/federation/show-instance.ts
@@ -1,8 +1,7 @@
import $ from 'cafy';
import define from '../../define';
import { Instances } from '../../../../models';
-import { toPuny } from '../../../../misc/convert-host';
-import config from '../../../../config';
+import { toPuny } from '@/misc/convert-host';
export const meta = {
tags: ['federation'],
diff --git a/src/server/api/endpoints/federation/users.ts b/src/server/api/endpoints/federation/users.ts
index 1bd053ae85..77d9e2e076 100644
--- a/src/server/api/endpoints/federation/users.ts
+++ b/src/server/api/endpoints/federation/users.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { Users } from '../../../../models';
import { makePaginationQuery } from '../../common/make-pagination-query';
diff --git a/src/server/api/endpoints/following/create.ts b/src/server/api/endpoints/following/create.ts
index ca46d59c78..6ce71089b5 100644
--- a/src/server/api/endpoints/following/create.ts
+++ b/src/server/api/endpoints/following/create.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import * as ms from 'ms';
import create from '../../../../services/following/create';
import define from '../../define';
diff --git a/src/server/api/endpoints/following/delete.ts b/src/server/api/endpoints/following/delete.ts
index d3abda9265..823d85c170 100644
--- a/src/server/api/endpoints/following/delete.ts
+++ b/src/server/api/endpoints/following/delete.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import * as ms from 'ms';
import deleteFollowing from '../../../../services/following/delete';
import define from '../../define';
diff --git a/src/server/api/endpoints/following/requests/accept.ts b/src/server/api/endpoints/following/requests/accept.ts
index 6dd93c0d45..4a0fdb0af9 100644
--- a/src/server/api/endpoints/following/requests/accept.ts
+++ b/src/server/api/endpoints/following/requests/accept.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import acceptFollowRequest from '../../../../../services/following/requests/accept';
import define from '../../../define';
import { ApiError } from '../../../error';
diff --git a/src/server/api/endpoints/following/requests/cancel.ts b/src/server/api/endpoints/following/requests/cancel.ts
index ef21ee4f27..8d4538d43e 100644
--- a/src/server/api/endpoints/following/requests/cancel.ts
+++ b/src/server/api/endpoints/following/requests/cancel.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import cancelFollowRequest from '../../../../../services/following/requests/cancel';
import define from '../../../define';
import { ApiError } from '../../../error';
diff --git a/src/server/api/endpoints/following/requests/reject.ts b/src/server/api/endpoints/following/requests/reject.ts
index d5c9a5b7e4..8ef2c93341 100644
--- a/src/server/api/endpoints/following/requests/reject.ts
+++ b/src/server/api/endpoints/following/requests/reject.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import rejectFollowRequest from '../../../../../services/following/requests/reject';
import define from '../../../define';
import { ApiError } from '../../../error';
diff --git a/src/server/api/endpoints/games/reversi/games.ts b/src/server/api/endpoints/games/reversi/games.ts
index fa8bf20353..6ac150ef2c 100644
--- a/src/server/api/endpoints/games/reversi/games.ts
+++ b/src/server/api/endpoints/games/reversi/games.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ReversiGames } from '../../../../../models';
import { makePaginationQuery } from '../../../common/make-pagination-query';
@@ -140,7 +140,7 @@ export default define(meta, async (ps, user) => {
const query = makePaginationQuery(ReversiGames.createQueryBuilder('game'), ps.sinceId, ps.untilId)
.andWhere('game.isStarted = TRUE');
- if (ps.my) {
+ if (ps.my && user) {
query.andWhere(new Brackets(qb => { qb
.where('game.user1Id = :userId', { userId: user.id })
.orWhere('game.user2Id = :userId', { userId: user.id });
diff --git a/src/server/api/endpoints/games/reversi/games/show.ts b/src/server/api/endpoints/games/reversi/games/show.ts
index 75599885c9..a6fbdbaf6d 100644
--- a/src/server/api/endpoints/games/reversi/games/show.ts
+++ b/src/server/api/endpoints/games/reversi/games/show.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import Reversi from '../../../../../../games/reversi/core';
import define from '../../../../define';
import { ApiError } from '../../../../error';
diff --git a/src/server/api/endpoints/games/reversi/games/surrender.ts b/src/server/api/endpoints/games/reversi/games/surrender.ts
index 9fb436d427..346293f11d 100644
--- a/src/server/api/endpoints/games/reversi/games/surrender.ts
+++ b/src/server/api/endpoints/games/reversi/games/surrender.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import { publishReversiGameStream } from '../../../../../../services/stream';
import define from '../../../../define';
import { ApiError } from '../../../../error';
diff --git a/src/server/api/endpoints/games/reversi/match.ts b/src/server/api/endpoints/games/reversi/match.ts
index f1eb3aba28..2c4ec2ebd8 100644
--- a/src/server/api/endpoints/games/reversi/match.ts
+++ b/src/server/api/endpoints/games/reversi/match.ts
@@ -1,11 +1,11 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+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 { 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';
@@ -72,7 +72,7 @@ export default define(meta, async (ps, user) => {
isLlotheo: false
} as Partial<ReversiGame>);
- publishReversiStream(exist.parentId, 'matched', await ReversiGames.pack(game, exist.parentId));
+ publishReversiStream(exist.parentId, 'matched', await ReversiGames.pack(game, { id: exist.parentId }));
const other = await ReversiMatchings.count({
childId: user.id
diff --git a/src/server/api/endpoints/get-online-users-count.ts b/src/server/api/endpoints/get-online-users-count.ts
index 7521104886..150ac9e365 100644
--- a/src/server/api/endpoints/get-online-users-count.ts
+++ b/src/server/api/endpoints/get-online-users-count.ts
@@ -1,6 +1,6 @@
import define from '../define';
-import redis from '../../../db/redis';
-import config from '../../../config';
+import { redisClient } from '../../../db/redis';
+import config from '@/config';
export const meta = {
tags: ['meta'],
@@ -13,7 +13,7 @@ export const meta = {
export default define(meta, (ps, user) => {
return new Promise((res, rej) => {
- redis.pubsub('numsub', config.host, (_, x) => {
+ redisClient.pubsub('numsub', config.host, (_, x) => {
res({
count: x[1]
});
diff --git a/src/server/api/endpoints/hashtags/show.ts b/src/server/api/endpoints/hashtags/show.ts
index 49aa36e05a..f80ef38af0 100644
--- a/src/server/api/endpoints/hashtags/show.ts
+++ b/src/server/api/endpoints/hashtags/show.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import define from '../../define';
import { ApiError } from '../../error';
import { Hashtags } from '../../../../models';
-import { normalizeForSearch } from '../../../../misc/normalize-for-search';
+import { normalizeForSearch } from '@/misc/normalize-for-search';
export const meta = {
desc: {
diff --git a/src/server/api/endpoints/hashtags/trend.ts b/src/server/api/endpoints/hashtags/trend.ts
index 3b5dd3c0c1..5341c3e584 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 { 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 { safeForSql } from '@/misc/safe-for-sql';
+import { normalizeForSearch } from '@/misc/normalize-for-search';
/*
トレンドに載るためには「『直近a分間のユニーク投稿数が今からa分前~今からb分前の間のユニーク投稿数のn倍以上』のハッシュタグの上位5位以内に入る」ことが必要
diff --git a/src/server/api/endpoints/hashtags/users.ts b/src/server/api/endpoints/hashtags/users.ts
index d2f5998681..cecbc80cd2 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 { normalizeForSearch } from '@/misc/normalize-for-search';
export const meta = {
requireCredential: false 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 4634944ca7..923a8b386c 100644
--- a/src/server/api/endpoints/i/2fa/key-done.ts
+++ b/src/server/api/endpoints/i/2fa/key-done.ts
@@ -9,7 +9,7 @@ import {
AttestationChallenges,
Users
} from '../../../../../models';
-import config from '../../../../../config';
+import config from '@/config';
import { procedures, hash } from '../../../2fa';
import { publishMainStream } from '../../../../../services/stream';
diff --git a/src/server/api/endpoints/i/2fa/register-key.ts b/src/server/api/endpoints/i/2fa/register-key.ts
index d5cc11c7fb..75f578fc5f 100644
--- a/src/server/api/endpoints/i/2fa/register-key.ts
+++ b/src/server/api/endpoints/i/2fa/register-key.ts
@@ -4,7 +4,7 @@ import define from '../../../define';
import { UserProfiles, AttestationChallenges } from '../../../../../models';
import { promisify } from 'util';
import * as crypto from 'crypto';
-import { genId } from '../../../../../misc/gen-id';
+import { genId } from '@/misc/gen-id';
import { hash } from '../../../2fa';
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 a39b2963e9..d40997d6ed 100644
--- a/src/server/api/endpoints/i/2fa/register.ts
+++ b/src/server/api/endpoints/i/2fa/register.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import * as bcrypt from 'bcryptjs';
import * as speakeasy from 'speakeasy';
import * as QRCode from 'qrcode';
-import config from '../../../../../config';
+import config from '@/config';
import define from '../../../define';
import { UserProfiles } from '../../../../../models';
diff --git a/src/server/api/endpoints/i/favorites.ts b/src/server/api/endpoints/i/favorites.ts
index 3518bd9c4d..b0d20e9ac9 100644
--- a/src/server/api/endpoints/i/favorites.ts
+++ b/src/server/api/endpoints/i/favorites.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { NoteFavorites } from '../../../../models';
import { makePaginationQuery } from '../../common/make-pagination-query';
diff --git a/src/server/api/endpoints/i/import-following.ts b/src/server/api/endpoints/i/import-following.ts
index c8a539cda3..0349551073 100644
--- a/src/server/api/endpoints/i/import-following.ts
+++ b/src/server/api/endpoints/i/import-following.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { createImportFollowingJob } from '../../../../queue';
import ms = require('ms');
diff --git a/src/server/api/endpoints/i/import-user-lists.ts b/src/server/api/endpoints/i/import-user-lists.ts
index e360a54681..f40eb2745d 100644
--- a/src/server/api/endpoints/i/import-user-lists.ts
+++ b/src/server/api/endpoints/i/import-user-lists.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { createImportUserListsJob } from '../../../../queue';
import ms = require('ms');
diff --git a/src/server/api/endpoints/i/notifications.ts b/src/server/api/endpoints/i/notifications.ts
index 812a4bd1dd..b481fdba8f 100644
--- a/src/server/api/endpoints/i/notifications.ts
+++ b/src/server/api/endpoints/i/notifications.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import { readNotification } from '../../common/read-notification';
import define from '../../define';
import { makePaginationQuery } from '../../common/make-pagination-query';
diff --git a/src/server/api/endpoints/i/page-likes.ts b/src/server/api/endpoints/i/page-likes.ts
index 9a83cc1d43..cd5ec3da70 100644
--- a/src/server/api/endpoints/i/page-likes.ts
+++ b/src/server/api/endpoints/i/page-likes.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { PageLikes } from '../../../../models';
import { makePaginationQuery } from '../../common/make-pagination-query';
diff --git a/src/server/api/endpoints/i/pages.ts b/src/server/api/endpoints/i/pages.ts
index 3fc00e370a..ab42ab6d3f 100644
--- a/src/server/api/endpoints/i/pages.ts
+++ b/src/server/api/endpoints/i/pages.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { Pages } from '../../../../models';
import { makePaginationQuery } from '../../common/make-pagination-query';
diff --git a/src/server/api/endpoints/i/pin.ts b/src/server/api/endpoints/i/pin.ts
index e13873f601..4bed566935 100644
--- a/src/server/api/endpoints/i/pin.ts
+++ b/src/server/api/endpoints/i/pin.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import { addPinned } from '../../../../services/i/pin';
import define from '../../define';
import { ApiError } from '../../error';
@@ -61,7 +61,7 @@ export default define(meta, async (ps, user) => {
throw e;
});
- return await Users.pack(user, user, {
+ return await Users.pack(user.id, user, {
detail: true
});
});
diff --git a/src/server/api/endpoints/i/read-announcement.ts b/src/server/api/endpoints/i/read-announcement.ts
index d6acb3d2e6..a0c59a15d6 100644
--- a/src/server/api/endpoints/i/read-announcement.ts
+++ b/src/server/api/endpoints/i/read-announcement.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
-import { genId } from '../../../../misc/gen-id';
+import { genId } from '@/misc/gen-id';
import { AnnouncementReads, Announcements, Users } from '../../../../models';
import { publishMainStream } from '../../../../services/stream';
diff --git a/src/server/api/endpoints/i/registry/scopes.ts b/src/server/api/endpoints/i/registry/scopes.ts
index 8b0e1a7fd8..baf3ebdeca 100644
--- a/src/server/api/endpoints/i/registry/scopes.ts
+++ b/src/server/api/endpoints/i/registry/scopes.ts
@@ -1,4 +1,3 @@
-import $ from 'cafy';
import define from '../../../define';
import { RegistryItems } from '../../../../../models';
diff --git a/src/server/api/endpoints/i/registry/set.ts b/src/server/api/endpoints/i/registry/set.ts
index c732cfc8f5..40f6368017 100644
--- a/src/server/api/endpoints/i/registry/set.ts
+++ b/src/server/api/endpoints/i/registry/set.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { publishMainStream } from '../../../../../services/stream';
import define from '../../../define';
import { RegistryItems } from '../../../../../models';
-import { genId } from '../../../../../misc/gen-id';
+import { genId } from '@/misc/gen-id';
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 ce688c5755..d71a1bd135 100644
--- a/src/server/api/endpoints/i/revoke-token.ts
+++ b/src/server/api/endpoints/i/revoke-token.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../define';
import { AccessTokens } from '../../../../models';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
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 4f7da7d343..0395206144 100644
--- a/src/server/api/endpoints/i/signin-history.ts
+++ b/src/server/api/endpoints/i/signin-history.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { Signins } from '../../../../models';
import { makePaginationQuery } from '../../common/make-pagination-query';
diff --git a/src/server/api/endpoints/i/unpin.ts b/src/server/api/endpoints/i/unpin.ts
index 6f06e38598..bb8b36a166 100644
--- a/src/server/api/endpoints/i/unpin.ts
+++ b/src/server/api/endpoints/i/unpin.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import { removePinned } from '../../../../services/i/pin';
import define from '../../define';
import { ApiError } from '../../error';
@@ -47,7 +47,7 @@ export default define(meta, async (ps, user) => {
throw e;
});
- return await Users.pack(user, user, {
+ return await Users.pack(user.id, user, {
detail: true
});
});
diff --git a/src/server/api/endpoints/i/update-email.ts b/src/server/api/endpoints/i/update-email.ts
index 730918aebe..cd0e989e51 100644
--- a/src/server/api/endpoints/i/update-email.ts
+++ b/src/server/api/endpoints/i/update-email.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { publishMainStream } from '../../../../services/stream';
import define from '../../define';
import rndstr from 'rndstr';
-import config from '../../../../config';
+import config from '@/config';
import * as ms from 'ms';
import * as bcrypt from 'bcryptjs';
import { Users, UserProfiles } from '../../../../models';
diff --git a/src/server/api/endpoints/i/update.ts b/src/server/api/endpoints/i/update.ts
index 92be2e9e6d..0554fe76fb 100644
--- a/src/server/api/endpoints/i/update.ts
+++ b/src/server/api/endpoints/i/update.ts
@@ -1,12 +1,12 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+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 { parse, parsePlain } from '../../../../mfm/parse';
-import extractEmojis from '../../../../misc/extract-emojis';
-import extractHashtags from '../../../../misc/extract-hashtags';
+import extractEmojis from '@/misc/extract-emojis';
+import extractHashtags from '@/misc/extract-hashtags';
import * as langmap from 'langmap';
import { updateUsertags } from '../../../../services/update-hashtag';
import { ApiError } from '../../error';
@@ -14,7 +14,7 @@ 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 { normalizeForSearch } from '@/misc/normalize-for-search';
export const meta = {
desc: {
@@ -205,7 +205,8 @@ export const meta = {
}
};
-export default define(meta, async (ps, user, token) => {
+export default define(meta, async (ps, _user, token) => {
+ const user = await Users.findOneOrFail(_user.id);
const isSecure = token == null;
const updates = {} as Partial<User>;
diff --git a/src/server/api/endpoints/i/user-group-invites.ts b/src/server/api/endpoints/i/user-group-invites.ts
index 4c5105fa7b..9bfb17ab4e 100644
--- a/src/server/api/endpoints/i/user-group-invites.ts
+++ b/src/server/api/endpoints/i/user-group-invites.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { UserGroupInvitations } from '../../../../models';
import { makePaginationQuery } from '../../common/make-pagination-query';
diff --git a/src/server/api/endpoints/messaging/messages.ts b/src/server/api/endpoints/messaging/messages.ts
index 479f8da8ad..8beb7e87f0 100644
--- a/src/server/api/endpoints/messaging/messages.ts
+++ b/src/server/api/endpoints/messaging/messages.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
import { getUser } from '../../common/getters';
diff --git a/src/server/api/endpoints/messaging/messages/create.ts b/src/server/api/endpoints/messaging/messages/create.ts
index 3d7a1f4c4a..c9abb299fd 100644
--- a/src/server/api/endpoints/messaging/messages/create.ts
+++ b/src/server/api/endpoints/messaging/messages/create.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
import { getUser } from '../../../common/getters';
diff --git a/src/server/api/endpoints/messaging/messages/delete.ts b/src/server/api/endpoints/messaging/messages/delete.ts
index 2fce93e9b9..128ef0263e 100644
--- a/src/server/api/endpoints/messaging/messages/delete.ts
+++ b/src/server/api/endpoints/messaging/messages/delete.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import * as ms from 'ms';
import { ApiError } from '../../../error';
diff --git a/src/server/api/endpoints/messaging/messages/read.ts b/src/server/api/endpoints/messaging/messages/read.ts
index 3a7aae1bd0..c591cb28e0 100644
--- a/src/server/api/endpoints/messaging/messages/read.ts
+++ b/src/server/api/endpoints/messaging/messages/read.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
import { MessagingMessages } from '../../../../../models';
diff --git a/src/server/api/endpoints/meta.ts b/src/server/api/endpoints/meta.ts
index c2f4190e1c..2a94ae35f6 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 config from '@/config';
import define from '../define';
-import { fetchMeta } from '../../../misc/fetch-meta';
+import { fetchMeta } from '@/misc/fetch-meta';
import { Emojis, Users } from '../../../models';
-import { DB_MAX_NOTE_TEXT_LENGTH } from '../../../misc/hard-limits';
+import { DB_MAX_NOTE_TEXT_LENGTH } from '@/misc/hard-limits';
export const meta = {
desc: {
diff --git a/src/server/api/endpoints/miauth/gen-token.ts b/src/server/api/endpoints/miauth/gen-token.ts
index 401ed16389..68ef00eb28 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 { genId } from '@/misc/gen-id';
+import { secureRndstr } from '@/misc/secure-rndstr';
export const meta = {
tags: ['auth'],
diff --git a/src/server/api/endpoints/mute/create.ts b/src/server/api/endpoints/mute/create.ts
index ebfc6028ed..6c1e1e2fdd 100644
--- a/src/server/api/endpoints/mute/create.ts
+++ b/src/server/api/endpoints/mute/create.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+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 { genId } from '@/misc/gen-id';
import { Mutings, NoteWatchings } from '../../../../models';
import { Muting } from '../../../../models/entities/muting';
import { publishUserEvent } from '../../../../services/stream';
diff --git a/src/server/api/endpoints/mute/delete.ts b/src/server/api/endpoints/mute/delete.ts
index 67a59e3ae4..2a008b64c7 100644
--- a/src/server/api/endpoints/mute/delete.ts
+++ b/src/server/api/endpoints/mute/delete.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
import { getUser } from '../../common/getters';
diff --git a/src/server/api/endpoints/mute/list.ts b/src/server/api/endpoints/mute/list.ts
index 1a8fc92159..daa52b9ff5 100644
--- a/src/server/api/endpoints/mute/list.ts
+++ b/src/server/api/endpoints/mute/list.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { makePaginationQuery } from '../../common/make-pagination-query';
import { Mutings } from '../../../../models';
diff --git a/src/server/api/endpoints/notes.ts b/src/server/api/endpoints/notes.ts
index 30e6e92fec..0e89295351 100644
--- a/src/server/api/endpoints/notes.ts
+++ b/src/server/api/endpoints/notes.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../define';
import { makePaginationQuery } from '../common/make-pagination-query';
import { Notes } from '../../../models';
diff --git a/src/server/api/endpoints/notes/children.ts b/src/server/api/endpoints/notes/children.ts
index 072a25e024..bbfd0632c3 100644
--- a/src/server/api/endpoints/notes/children.ts
+++ b/src/server/api/endpoints/notes/children.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { makePaginationQuery } from '../../common/make-pagination-query';
import { generateVisibilityQuery } from '../../common/generate-visibility-query';
diff --git a/src/server/api/endpoints/notes/clips.ts b/src/server/api/endpoints/notes/clips.ts
index 432dd8a467..d116370b46 100644
--- a/src/server/api/endpoints/notes/clips.ts
+++ b/src/server/api/endpoints/notes/clips.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ClipNotes, Clips } from '../../../../models';
import { getNote } from '../../common/getters';
diff --git a/src/server/api/endpoints/notes/conversation.ts b/src/server/api/endpoints/notes/conversation.ts
index 0dea309b88..95ab4ec1e0 100644
--- a/src/server/api/endpoints/notes/conversation.ts
+++ b/src/server/api/endpoints/notes/conversation.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
import { getNote } from '../../common/getters';
diff --git a/src/server/api/endpoints/notes/create.ts b/src/server/api/endpoints/notes/create.ts
index 6ca22113c7..29cc650b8d 100644
--- a/src/server/api/endpoints/notes/create.ts
+++ b/src/server/api/endpoints/notes/create.ts
@@ -3,14 +3,14 @@ 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 { fetchMeta } from '@/misc/fetch-meta';
import { ApiError } from '../../error';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import { User } from '../../../../models/entities/user';
import { Users, DriveFiles, Notes, Channels } 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 { DB_MAX_NOTE_TEXT_LENGTH } from '@/misc/hard-limits';
import { noteVisibilities } from '../../../../types';
import { Channel } from '../../../../models/entities/channel';
diff --git a/src/server/api/endpoints/notes/delete.ts b/src/server/api/endpoints/notes/delete.ts
index 5afd911ca9..154cff0741 100644
--- a/src/server/api/endpoints/notes/delete.ts
+++ b/src/server/api/endpoints/notes/delete.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import deleteNote from '../../../../services/note/delete';
import define from '../../define';
import * as ms from 'ms';
diff --git a/src/server/api/endpoints/notes/favorites/create.ts b/src/server/api/endpoints/notes/favorites/create.ts
index d66ce37a46..846c80a8d6 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 { 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 { genId } from '@/misc/gen-id';
export const meta = {
desc: {
diff --git a/src/server/api/endpoints/notes/favorites/delete.ts b/src/server/api/endpoints/notes/favorites/delete.ts
index 1b36b7d68c..2be4f6408e 100644
--- a/src/server/api/endpoints/notes/favorites/delete.ts
+++ b/src/server/api/endpoints/notes/favorites/delete.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
import { getNote } from '../../../common/getters';
diff --git a/src/server/api/endpoints/notes/global-timeline.ts b/src/server/api/endpoints/notes/global-timeline.ts
index 64fc3cbf6c..1e1df4040d 100644
--- a/src/server/api/endpoints/notes/global-timeline.ts
+++ b/src/server/api/endpoints/notes/global-timeline.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { fetchMeta } from '../../../../misc/fetch-meta';
+import { fetchMeta } from '@/misc/fetch-meta';
import { ApiError } from '../../error';
import { makePaginationQuery } from '../../common/make-pagination-query';
import { Notes } from '../../../../models';
diff --git a/src/server/api/endpoints/notes/hybrid-timeline.ts b/src/server/api/endpoints/notes/hybrid-timeline.ts
index 19c4593f5b..ac44e747dc 100644
--- a/src/server/api/endpoints/notes/hybrid-timeline.ts
+++ b/src/server/api/endpoints/notes/hybrid-timeline.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { fetchMeta } from '../../../../misc/fetch-meta';
+import { fetchMeta } from '@/misc/fetch-meta';
import { ApiError } from '../../error';
import { makePaginationQuery } from '../../common/make-pagination-query';
import { Followings, Notes } from '../../../../models';
diff --git a/src/server/api/endpoints/notes/local-timeline.ts b/src/server/api/endpoints/notes/local-timeline.ts
index 546d3619f7..113078a988 100644
--- a/src/server/api/endpoints/notes/local-timeline.ts
+++ b/src/server/api/endpoints/notes/local-timeline.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { fetchMeta } from '../../../../misc/fetch-meta';
+import { fetchMeta } from '@/misc/fetch-meta';
import { ApiError } from '../../error';
import { Notes } from '../../../../models';
import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
diff --git a/src/server/api/endpoints/notes/mentions.ts b/src/server/api/endpoints/notes/mentions.ts
index 30368ea578..34936c9b54 100644
--- a/src/server/api/endpoints/notes/mentions.ts
+++ b/src/server/api/endpoints/notes/mentions.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import read from '../../../../services/note/read';
import { Notes, Followings } from '../../../../models';
@@ -83,7 +83,7 @@ export default define(meta, async (ps, user) => {
const mentions = await query.take(ps.limit!).getMany();
- read(user.id, mentions.map(note => note.id));
+ read(user.id, mentions);
return await Notes.packMany(mentions, user);
});
diff --git a/src/server/api/endpoints/notes/polls/vote.ts b/src/server/api/endpoints/notes/polls/vote.ts
index 6113d7ea9a..51dcec89c7 100644
--- a/src/server/api/endpoints/notes/polls/vote.ts
+++ b/src/server/api/endpoints/notes/polls/vote.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import { publishNoteStream } from '../../../../../services/stream';
import { createNotification } from '../../../../../services/create-notification';
import define from '../../../define';
@@ -12,7 +12,7 @@ import { deliverQuestionUpdate } from '../../../../../services/note/polls/update
import { PollVotes, NoteWatchings, Users, Polls } from '../../../../../models';
import { Not } from 'typeorm';
import { IRemoteUser } from '../../../../../models/entities/user';
-import { genId } from '../../../../../misc/gen-id';
+import { genId } from '@/misc/gen-id';
export const meta = {
desc: {
diff --git a/src/server/api/endpoints/notes/reactions.ts b/src/server/api/endpoints/notes/reactions.ts
index 2621e2a12f..3c60fa2e8e 100644
--- a/src/server/api/endpoints/notes/reactions.ts
+++ b/src/server/api/endpoints/notes/reactions.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { getNote } from '../../common/getters';
import { ApiError } from '../../error';
diff --git a/src/server/api/endpoints/notes/reactions/create.ts b/src/server/api/endpoints/notes/reactions/create.ts
index 9017d9f36f..17a6f391d4 100644
--- a/src/server/api/endpoints/notes/reactions/create.ts
+++ b/src/server/api/endpoints/notes/reactions/create.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import createReaction from '../../../../../services/note/reaction/create';
import define from '../../../define';
import { getNote } from '../../../common/getters';
diff --git a/src/server/api/endpoints/notes/reactions/delete.ts b/src/server/api/endpoints/notes/reactions/delete.ts
index 267d8417c2..b95c7f891b 100644
--- a/src/server/api/endpoints/notes/reactions/delete.ts
+++ b/src/server/api/endpoints/notes/reactions/delete.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import * as ms from 'ms';
import deleteReaction from '../../../../../services/note/reaction/delete';
diff --git a/src/server/api/endpoints/notes/renotes.ts b/src/server/api/endpoints/notes/renotes.ts
index dcda213918..d26192d10a 100644
--- a/src/server/api/endpoints/notes/renotes.ts
+++ b/src/server/api/endpoints/notes/renotes.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { getNote } from '../../common/getters';
import { ApiError } from '../../error';
diff --git a/src/server/api/endpoints/notes/replies.ts b/src/server/api/endpoints/notes/replies.ts
index 6f33e2f233..e91a1cf0bf 100644
--- a/src/server/api/endpoints/notes/replies.ts
+++ b/src/server/api/endpoints/notes/replies.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { Notes } from '../../../../models';
import { makePaginationQuery } from '../../common/make-pagination-query';
diff --git a/src/server/api/endpoints/notes/search-by-tag.ts b/src/server/api/endpoints/notes/search-by-tag.ts
index 47b41d9294..61f62dd5a6 100644
--- a/src/server/api/endpoints/notes/search-by-tag.ts
+++ b/src/server/api/endpoints/notes/search-by-tag.ts
@@ -1,13 +1,13 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+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 { Brackets } from 'typeorm';
-import { safeForSql } from '../../../../misc/safe-for-sql';
-import { normalizeForSearch } from '../../../../misc/normalize-for-search';
+import { safeForSql } from '@/misc/safe-for-sql';
+import { normalizeForSearch } from '@/misc/normalize-for-search';
export const meta = {
desc: {
diff --git a/src/server/api/endpoints/notes/search.ts b/src/server/api/endpoints/notes/search.ts
index 230d2b0294..e3454be9d3 100644
--- a/src/server/api/endpoints/notes/search.ts
+++ b/src/server/api/endpoints/notes/search.ts
@@ -3,8 +3,8 @@ import es from '../../../../db/elasticsearch';
import define from '../../define';
import { Notes } from '../../../../models';
import { In } from 'typeorm';
-import { ID } from '../../../../misc/cafy-id';
-import config from '../../../../config';
+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';
diff --git a/src/server/api/endpoints/notes/show.ts b/src/server/api/endpoints/notes/show.ts
index 984b5c726a..e592076a2e 100644
--- a/src/server/api/endpoints/notes/show.ts
+++ b/src/server/api/endpoints/notes/show.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { getNote } from '../../common/getters';
import { ApiError } from '../../error';
diff --git a/src/server/api/endpoints/notes/state.ts b/src/server/api/endpoints/notes/state.ts
index b8b17820ee..60151f7e32 100644
--- a/src/server/api/endpoints/notes/state.ts
+++ b/src/server/api/endpoints/notes/state.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { NoteFavorites, NoteWatchings } from '../../../../models';
diff --git a/src/server/api/endpoints/notes/timeline.ts b/src/server/api/endpoints/notes/timeline.ts
index d025944cc2..0871a96882 100644
--- a/src/server/api/endpoints/notes/timeline.ts
+++ b/src/server/api/endpoints/notes/timeline.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { makePaginationQuery } from '../../common/make-pagination-query';
import { Notes, Followings } from '../../../../models';
diff --git a/src/server/api/endpoints/notes/unrenote.ts b/src/server/api/endpoints/notes/unrenote.ts
index af558a9897..0233b9db12 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 { ID } from '@/misc/cafy-id';
import deleteNote from '../../../../services/note/delete';
import define from '../../define';
import * as ms from 'ms';
import { getNote } from '../../common/getters';
import { ApiError } from '../../error';
-import { Notes } from '../../../../models';
+import { Notes, Users } from '../../../../models';
export const meta = {
desc: {
@@ -55,6 +55,6 @@ export default define(meta, async (ps, user) => {
});
for (const note of renotes) {
- deleteNote(user, note);
+ deleteNote(await Users.findOneOrFail(user.id), note);
}
});
diff --git a/src/server/api/endpoints/notes/user-list-timeline.ts b/src/server/api/endpoints/notes/user-list-timeline.ts
index 9ffb38bddc..cb3c18505d 100644
--- a/src/server/api/endpoints/notes/user-list-timeline.ts
+++ b/src/server/api/endpoints/notes/user-list-timeline.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
import { UserLists, UserListJoinings, Notes } from '../../../../models';
diff --git a/src/server/api/endpoints/notes/watching/create.ts b/src/server/api/endpoints/notes/watching/create.ts
index b2a758fc74..7667ebdedd 100644
--- a/src/server/api/endpoints/notes/watching/create.ts
+++ b/src/server/api/endpoints/notes/watching/create.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import watch from '../../../../../services/note/watch';
import { getNote } from '../../../common/getters';
diff --git a/src/server/api/endpoints/notes/watching/delete.ts b/src/server/api/endpoints/notes/watching/delete.ts
index 75b4f2355f..77b4ff15c8 100644
--- a/src/server/api/endpoints/notes/watching/delete.ts
+++ b/src/server/api/endpoints/notes/watching/delete.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import unwatch from '../../../../../services/note/unwatch';
import { getNote } from '../../../common/getters';
diff --git a/src/server/api/endpoints/page-push.ts b/src/server/api/endpoints/page-push.ts
index 3b19e1e192..9ec9f9184c 100644
--- a/src/server/api/endpoints/page-push.ts
+++ b/src/server/api/endpoints/page-push.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../define';
-import { ID } from '../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import { publishMainStream } from '../../../services/stream';
import { Users, Pages } from '../../../models';
import { ApiError } from '../error';
@@ -43,7 +43,7 @@ export default define(meta, async (ps, user) => {
event: ps.event,
var: ps.var,
userId: user.id,
- user: await Users.pack(user, page.userId, {
+ user: await Users.pack(user.id, { id: page.userId }, {
detail: true
})
});
diff --git a/src/server/api/endpoints/pages/create.ts b/src/server/api/endpoints/pages/create.ts
index 6d41a4afeb..4134455123 100644
--- a/src/server/api/endpoints/pages/create.ts
+++ b/src/server/api/endpoints/pages/create.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
import * as ms from 'ms';
import define from '../../define';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import { Pages, DriveFiles } from '../../../../models';
-import { genId } from '../../../../misc/gen-id';
+import { genId } from '@/misc/gen-id';
import { Page } from '../../../../models/entities/page';
import { ApiError } from '../../error';
diff --git a/src/server/api/endpoints/pages/delete.ts b/src/server/api/endpoints/pages/delete.ts
index 99849ab5fe..51704c866e 100644
--- a/src/server/api/endpoints/pages/delete.ts
+++ b/src/server/api/endpoints/pages/delete.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import define from '../../define';
import { ApiError } from '../../error';
import { Pages } from '../../../../models';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
export const meta = {
desc: {
diff --git a/src/server/api/endpoints/pages/like.ts b/src/server/api/endpoints/pages/like.ts
index 3fc2b6ca23..e6c15164c0 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 { 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 { genId } from '@/misc/gen-id';
export const meta = {
desc: {
diff --git a/src/server/api/endpoints/pages/show.ts b/src/server/api/endpoints/pages/show.ts
index c8e5ad1d9b..13fa9ba1d0 100644
--- a/src/server/api/endpoints/pages/show.ts
+++ b/src/server/api/endpoints/pages/show.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import define from '../../define';
import { ApiError } from '../../error';
import { Pages, Users } from '../../../../models';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import { Page } from '../../../../models/entities/page';
export const meta = {
diff --git a/src/server/api/endpoints/pages/unlike.ts b/src/server/api/endpoints/pages/unlike.ts
index 865df91c3e..2008dd8bef 100644
--- a/src/server/api/endpoints/pages/unlike.ts
+++ b/src/server/api/endpoints/pages/unlike.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
import { Pages, PageLikes } from '../../../../models';
diff --git a/src/server/api/endpoints/pages/update.ts b/src/server/api/endpoints/pages/update.ts
index 2d93dd4ae4..d52d5964cb 100644
--- a/src/server/api/endpoints/pages/update.ts
+++ b/src/server/api/endpoints/pages/update.ts
@@ -3,7 +3,7 @@ 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 { ID } from '@/misc/cafy-id';
import { Not } from 'typeorm';
export const meta = {
diff --git a/src/server/api/endpoints/pinned-users.ts b/src/server/api/endpoints/pinned-users.ts
index a129a56d87..ae165ab46d 100644
--- a/src/server/api/endpoints/pinned-users.ts
+++ b/src/server/api/endpoints/pinned-users.ts
@@ -1,7 +1,7 @@
import define from '../define';
import { Users } from '../../../models';
-import { fetchMeta } from '../../../misc/fetch-meta';
-import parseAcct from '../../../misc/acct/parse';
+import { fetchMeta } from '@/misc/fetch-meta';
+import parseAcct from '@/misc/acct/parse';
import { User } from '../../../models/entities/user';
export const meta = {
diff --git a/src/server/api/endpoints/promo/read.ts b/src/server/api/endpoints/promo/read.ts
index 63c90e5d7f..325a96e572 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 { 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 { genId } from '@/misc/gen-id';
export const meta = {
desc: {
diff --git a/src/server/api/endpoints/room/show.ts b/src/server/api/endpoints/room/show.ts
index a12d9b8f26..13f9df19ac 100644
--- a/src/server/api/endpoints/room/show.ts
+++ b/src/server/api/endpoints/room/show.ts
@@ -2,8 +2,8 @@ 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 { ID } from '@/misc/cafy-id';
+import { toPunyNullable } from '@/misc/convert-host';
export const meta = {
desc: {
diff --git a/src/server/api/endpoints/sw/register.ts b/src/server/api/endpoints/sw/register.ts
index 9fc70b5609..43d4118df6 100644
--- a/src/server/api/endpoints/sw/register.ts
+++ b/src/server/api/endpoints/sw/register.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../define';
-import { fetchMeta } from '../../../../misc/fetch-meta';
-import { genId } from '../../../../misc/gen-id';
+import { fetchMeta } from '@/misc/fetch-meta';
+import { genId } from '@/misc/gen-id';
import { SwSubscriptions } from '../../../../models';
export const meta = {
diff --git a/src/server/api/endpoints/users/clips.ts b/src/server/api/endpoints/users/clips.ts
index 72aae7252c..12aa964034 100644
--- a/src/server/api/endpoints/users/clips.ts
+++ b/src/server/api/endpoints/users/clips.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { Clips } from '../../../../models';
import { makePaginationQuery } from '../../common/make-pagination-query';
diff --git a/src/server/api/endpoints/users/followers.ts b/src/server/api/endpoints/users/followers.ts
index fb83d7beb8..da8a1ea1b2 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 { 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 { toPunyNullable } from '@/misc/convert-host';
export const meta = {
desc: {
diff --git a/src/server/api/endpoints/users/following.ts b/src/server/api/endpoints/users/following.ts
index d5e8dc1f92..832a51d297 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 { 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 { toPunyNullable } from '@/misc/convert-host';
export const meta = {
desc: {
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 d0650a172d..98b8a49fda 100644
--- a/src/server/api/endpoints/users/get-frequently-replied-users.ts
+++ b/src/server/api/endpoints/users/get-frequently-replied-users.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { maximum } from '../../../../prelude/array';
import { ApiError } from '../../error';
diff --git a/src/server/api/endpoints/users/groups/create.ts b/src/server/api/endpoints/users/groups/create.ts
index 78d2714874..0966ef7819 100644
--- a/src/server/api/endpoints/users/groups/create.ts
+++ b/src/server/api/endpoints/users/groups/create.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../../define';
import { UserGroups, UserGroupJoinings } from '../../../../../models';
-import { genId } from '../../../../../misc/gen-id';
+import { genId } from '@/misc/gen-id';
import { UserGroup } from '../../../../../models/entities/user-group';
import { UserGroupJoining } from '../../../../../models/entities/user-group-joining';
@@ -31,12 +31,12 @@ export const meta = {
};
export default define(meta, async (ps, user) => {
- const userGroup = await UserGroups.save({
+ const userGroup = await UserGroups.insert({
id: genId(),
createdAt: new Date(),
userId: user.id,
name: ps.name,
- } as UserGroup);
+ } as UserGroup).then(x => UserGroups.findOneOrFail(x.identifiers[0]));
// Push the owner
await UserGroupJoinings.insert({
diff --git a/src/server/api/endpoints/users/groups/delete.ts b/src/server/api/endpoints/users/groups/delete.ts
index 71b8825169..85e2e73325 100644
--- a/src/server/api/endpoints/users/groups/delete.ts
+++ b/src/server/api/endpoints/users/groups/delete.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
import { UserGroups } from '../../../../../models';
diff --git a/src/server/api/endpoints/users/groups/invitations/accept.ts b/src/server/api/endpoints/users/groups/invitations/accept.ts
index 2fa22bcf7e..d6d419826e 100644
--- a/src/server/api/endpoints/users/groups/invitations/accept.ts
+++ b/src/server/api/endpoints/users/groups/invitations/accept.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
-import { ID } from '../../../../../../misc/cafy-id';
+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 { genId } from '@/misc/gen-id';
import { UserGroupJoining } from '../../../../../../models/entities/user-group-joining';
export const meta = {
diff --git a/src/server/api/endpoints/users/groups/invitations/reject.ts b/src/server/api/endpoints/users/groups/invitations/reject.ts
index 42803d37c7..98dc7bfbdf 100644
--- a/src/server/api/endpoints/users/groups/invitations/reject.ts
+++ b/src/server/api/endpoints/users/groups/invitations/reject.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../../../define';
import { ApiError } from '../../../../error';
import { UserGroupInvitations } from '../../../../../../models';
diff --git a/src/server/api/endpoints/users/groups/invite.ts b/src/server/api/endpoints/users/groups/invite.ts
index a0f5091b07..00d4932f55 100644
--- a/src/server/api/endpoints/users/groups/invite.ts
+++ b/src/server/api/endpoints/users/groups/invite.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+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 { genId } from '@/misc/gen-id';
import { UserGroupInvitation } from '../../../../../models/entities/user-group-invitation';
import { createNotification } from '../../../../../services/create-notification';
@@ -96,12 +96,12 @@ export default define(meta, async (ps, me) => {
throw new ApiError(meta.errors.alreadyInvited);
}
- const invitation = await UserGroupInvitations.save({
+ const invitation = await UserGroupInvitations.insert({
id: genId(),
createdAt: new Date(),
userId: user.id,
userGroupId: userGroup.id
- } as UserGroupInvitation);
+ } as UserGroupInvitation).then(x => UserGroupInvitations.findOneOrFail(x.identifiers[0]));
// 通知を作成
createNotification(user.id, 'groupInvited', {
diff --git a/src/server/api/endpoints/users/groups/pull.ts b/src/server/api/endpoints/users/groups/pull.ts
index f4af884dd1..82d45e31ad 100644
--- a/src/server/api/endpoints/users/groups/pull.ts
+++ b/src/server/api/endpoints/users/groups/pull.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
import { getUser } from '../../../common/getters';
diff --git a/src/server/api/endpoints/users/groups/show.ts b/src/server/api/endpoints/users/groups/show.ts
index 13f171f614..c174a7973c 100644
--- a/src/server/api/endpoints/users/groups/show.ts
+++ b/src/server/api/endpoints/users/groups/show.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
import { UserGroups, UserGroupJoinings } from '../../../../../models';
diff --git a/src/server/api/endpoints/users/groups/transfer.ts b/src/server/api/endpoints/users/groups/transfer.ts
index 03f5f39279..08aa1b7357 100644
--- a/src/server/api/endpoints/users/groups/transfer.ts
+++ b/src/server/api/endpoints/users/groups/transfer.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
import { getUser } from '../../../common/getters';
diff --git a/src/server/api/endpoints/users/groups/update.ts b/src/server/api/endpoints/users/groups/update.ts
index 805b2de6a8..8dc5a7f1b9 100644
--- a/src/server/api/endpoints/users/groups/update.ts
+++ b/src/server/api/endpoints/users/groups/update.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
import { UserGroups } from '../../../../../models';
diff --git a/src/server/api/endpoints/users/lists/create.ts b/src/server/api/endpoints/users/lists/create.ts
index d02696aed4..9891a6dae0 100644
--- a/src/server/api/endpoints/users/lists/create.ts
+++ b/src/server/api/endpoints/users/lists/create.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../../define';
import { UserLists } from '../../../../../models';
-import { genId } from '../../../../../misc/gen-id';
+import { genId } from '@/misc/gen-id';
import { UserList } from '../../../../../models/entities/user-list';
export const meta = {
@@ -30,12 +30,12 @@ export const meta = {
};
export default define(meta, async (ps, user) => {
- const userList = await UserLists.save({
+ const userList = await UserLists.insert({
id: genId(),
createdAt: new Date(),
userId: user.id,
name: ps.name,
- } as UserList);
+ } as UserList).then(x => UserLists.findOneOrFail(x.identifiers[0]));
return await UserLists.pack(userList);
});
diff --git a/src/server/api/endpoints/users/lists/delete.ts b/src/server/api/endpoints/users/lists/delete.ts
index 930af1827f..d3132025c5 100644
--- a/src/server/api/endpoints/users/lists/delete.ts
+++ b/src/server/api/endpoints/users/lists/delete.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
import { UserLists } from '../../../../../models';
diff --git a/src/server/api/endpoints/users/lists/pull.ts b/src/server/api/endpoints/users/lists/pull.ts
index 1a5be2afc4..ddf5864a39 100644
--- a/src/server/api/endpoints/users/lists/pull.ts
+++ b/src/server/api/endpoints/users/lists/pull.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import { publishUserListStream } from '../../../../../services/stream';
import define from '../../../define';
import { ApiError } from '../../../error';
diff --git a/src/server/api/endpoints/users/lists/push.ts b/src/server/api/endpoints/users/lists/push.ts
index fd76cb8159..c94c759d0c 100644
--- a/src/server/api/endpoints/users/lists/push.ts
+++ b/src/server/api/endpoints/users/lists/push.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
import { getUser } from '../../../common/getters';
diff --git a/src/server/api/endpoints/users/lists/show.ts b/src/server/api/endpoints/users/lists/show.ts
index 5d80a8f472..aee1c13dee 100644
--- a/src/server/api/endpoints/users/lists/show.ts
+++ b/src/server/api/endpoints/users/lists/show.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
import { UserLists } from '../../../../../models';
diff --git a/src/server/api/endpoints/users/lists/update.ts b/src/server/api/endpoints/users/lists/update.ts
index 3ced871ae8..342791e5f3 100644
--- a/src/server/api/endpoints/users/lists/update.ts
+++ b/src/server/api/endpoints/users/lists/update.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
import { UserLists } from '../../../../../models';
diff --git a/src/server/api/endpoints/users/notes.ts b/src/server/api/endpoints/users/notes.ts
index fc5998c378..b886756c02 100644
--- a/src/server/api/endpoints/users/notes.ts
+++ b/src/server/api/endpoints/users/notes.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
import { getUser } from '../../common/getters';
diff --git a/src/server/api/endpoints/users/pages.ts b/src/server/api/endpoints/users/pages.ts
index 706a2e115b..b9f37f3210 100644
--- a/src/server/api/endpoints/users/pages.ts
+++ b/src/server/api/endpoints/users/pages.ts
@@ -1,5 +1,5 @@
import $ from 'cafy';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { Pages } from '../../../../models';
import { makePaginationQuery } from '../../common/make-pagination-query';
diff --git a/src/server/api/endpoints/users/relation.ts b/src/server/api/endpoints/users/relation.ts
index 1beb925398..fc294eb64d 100644
--- a/src/server/api/endpoints/users/relation.ts
+++ b/src/server/api/endpoints/users/relation.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../define';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import { Users } from '../../../../models';
export const meta = {
diff --git a/src/server/api/endpoints/users/report-abuse.ts b/src/server/api/endpoints/users/report-abuse.ts
index eaa4cd6258..671eca0298 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 { 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 { genId } from '@/misc/gen-id';
export const meta = {
desc: {
diff --git a/src/server/api/endpoints/users/show.ts b/src/server/api/endpoints/users/show.ts
index 9e0771a55a..11d36d2ae9 100644
--- a/src/server/api/endpoints/users/show.ts
+++ b/src/server/api/endpoints/users/show.ts
@@ -3,9 +3,10 @@ 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 { ID } from '@/misc/cafy-id';
import { Users } from '../../../../models';
import { In } from 'typeorm';
+import { User } from '@/models/entities/user';
export const meta = {
desc: {
@@ -81,9 +82,9 @@ export default define(meta, async (ps, me) => {
});
// リクエストされた通りに並べ替え
- const _users = [];
+ const _users: User[] = [];
for (const id of ps.userIds) {
- _users.push(users.find(x => x.id === id));
+ _users.push(users.find(x => x.id === id)!);
}
return await Promise.all(_users.map(u => Users.pack(u, me, {
diff --git a/src/server/api/endpoints/users/stats.ts b/src/server/api/endpoints/users/stats.ts
index 50730e7cd0..6763c1774e 100644
--- a/src/server/api/endpoints/users/stats.ts
+++ b/src/server/api/endpoints/users/stats.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../define';
import { ApiError } from '../../error';
-import { ID } from '../../../../misc/cafy-id';
+import { ID } from '@/misc/cafy-id';
import { DriveFiles, Followings, NoteFavorites, NoteReactions, Notes, PageLikes, PollVotes, ReversiGames, Users } from '../../../../models';
export const meta = {
diff --git a/src/server/api/limiter.ts b/src/server/api/limiter.ts
index 48d12d3cc6..1e8715a7c4 100644
--- a/src/server/api/limiter.ts
+++ b/src/server/api/limiter.ts
@@ -1,13 +1,13 @@
import * as Limiter from 'ratelimiter';
-import limiterDB from '../../db/redis';
+import { redisClient } from '../../db/redis';
import { IEndpoint } from './endpoints';
-import getAcct from '../../misc/acct/render';
+import getAcct from '@/misc/acct/render';
import { User } from '../../models/entities/user';
import Logger from '../../services/logger';
const logger = new Logger('limiter');
-export default (endpoint: IEndpoint, user: User) => new Promise((ok, reject) => {
+export default (endpoint: IEndpoint, user: User) => new Promise<void>((ok, reject) => {
const limitation = endpoint.meta.limit!;
const key = limitation.hasOwnProperty('key')
@@ -35,7 +35,7 @@ export default (endpoint: IEndpoint, user: User) => new Promise((ok, reject) =>
id: `${user.id}:${key}:min`,
duration: limitation.minInterval,
max: 1,
- db: limiterDB!
+ db: redisClient
});
minIntervalLimiter.get((err, info) => {
@@ -63,7 +63,7 @@ export default (endpoint: IEndpoint, user: User) => new Promise((ok, reject) =>
id: `${user.id}:${key}`,
duration: limitation.duration,
max: limitation.max,
- db: limiterDB!
+ db: redisClient
});
limiter.get((err, info) => {
diff --git a/src/server/api/openapi/description.ts b/src/server/api/openapi/description.ts
index e0527dd1ae..6306920b7a 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 { kinds as kindsList } from '@/misc/api-permissions';
export interface IKindInfo {
endpoints: string[];
diff --git a/src/server/api/openapi/gen-spec.ts b/src/server/api/openapi/gen-spec.ts
index 5185696675..221e0a32df 100644
--- a/src/server/api/openapi/gen-spec.ts
+++ b/src/server/api/openapi/gen-spec.ts
@@ -1,6 +1,6 @@
import endpoints from '../endpoints';
import { Context } from 'cafy';
-import config from '../../../config';
+import config from '@/config';
import { errors as basicErrors } from './errors';
import { schemas, convertSchemaToOpenApiSchema } from './schemas';
import { getDescription } from './description';
diff --git a/src/server/api/openapi/schemas.ts b/src/server/api/openapi/schemas.ts
index 99107c986e..78aae3b999 100644
--- a/src/server/api/openapi/schemas.ts
+++ b/src/server/api/openapi/schemas.ts
@@ -1,5 +1,5 @@
import { packedUserSchema } from '../../../models/repositories/user';
-import { Schema } from '../../../misc/schema';
+import { Schema } from '@/misc/schema';
import { packedNoteSchema } from '../../../models/repositories/note';
import { packedUserListSchema } from '../../../models/repositories/user-list';
import { packedAppSchema } from '../../../models/repositories/app';
diff --git a/src/server/api/private/signin.ts b/src/server/api/private/signin.ts
index d8f2e6d516..0a17b0bd02 100644
--- a/src/server/api/private/signin.ts
+++ b/src/server/api/private/signin.ts
@@ -2,10 +2,10 @@ 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 config from '@/config';
import { Users, Signins, UserProfiles, UserSecurityKeys, AttestationChallenges } from '../../../models';
import { ILocalUser } from '../../../models/entities/user';
-import { genId } from '../../../misc/gen-id';
+import { genId } from '@/misc/gen-id';
import { verifyLogin, hash } from '../2fa';
import { randomBytes } from 'crypto';
diff --git a/src/server/api/private/signup.ts b/src/server/api/private/signup.ts
index 3d467a0e68..f0cf75797a 100644
--- a/src/server/api/private/signup.ts
+++ b/src/server/api/private/signup.ts
@@ -1,6 +1,6 @@
import * as Koa from 'koa';
-import { fetchMeta } from '../../../misc/fetch-meta';
-import { verifyHcaptcha, verifyRecaptcha } from '../../../misc/captcha';
+import { fetchMeta } from '@/misc/fetch-meta';
+import { verifyHcaptcha, verifyRecaptcha } from '@/misc/captcha';
import { Users, RegistrationTickets } from '../../../models';
import { signup } from '../common/signup';
diff --git a/src/server/api/service/discord.ts b/src/server/api/service/discord.ts
index fce840cde5..a684e71fc6 100644
--- a/src/server/api/service/discord.ts
+++ b/src/server/api/service/discord.ts
@@ -1,13 +1,13 @@
import * as Koa from 'koa';
import * as Router from '@koa/router';
-import { getJson } from '../../../misc/fetch';
+import { getJson } from '@/misc/fetch';
import { OAuth2 } from 'oauth';
-import config from '../../../config';
+import config from '@/config';
import { publishMainStream } from '../../../services/stream';
-import redis from '../../../db/redis';
+import { redisClient } from '../../../db/redis';
import { v4 as uuid } from 'uuid';
import signin from '../common/signin';
-import { fetchMeta } from '../../../misc/fetch-meta';
+import { fetchMeta } from '@/misc/fetch-meta';
import { Users, UserProfiles } from '../../../models';
import { ILocalUser } from '../../../models/entities/user';
@@ -96,7 +96,7 @@ router.get('/connect/discord', async ctx => {
response_type: 'code'
};
- redis.set(userToken, JSON.stringify(params));
+ redisClient.set(userToken, JSON.stringify(params));
const oauth2 = await getOAuth2();
ctx.redirect(oauth2!.getAuthorizeUrl(params));
@@ -118,7 +118,7 @@ router.get('/signin/discord', async ctx => {
httpOnly: true
});
- redis.set(sessid, JSON.stringify(params));
+ redisClient.set(sessid, JSON.stringify(params));
const oauth2 = await getOAuth2();
ctx.redirect(oauth2!.getAuthorizeUrl(params));
@@ -145,7 +145,7 @@ router.get('/dc/cb', async ctx => {
}
const { redirect_uri, state } = await new Promise<any>((res, rej) => {
- redis.get(sessid, async (_, state) => {
+ redisClient.get(sessid, async (_, state) => {
res(JSON.parse(state));
});
});
@@ -216,7 +216,7 @@ router.get('/dc/cb', async ctx => {
}
const { redirect_uri, state } = await new Promise<any>((res, rej) => {
- redis.get(userToken, async (_, state) => {
+ redisClient.get(userToken, async (_, state) => {
res(JSON.parse(state));
});
});
diff --git a/src/server/api/service/github.ts b/src/server/api/service/github.ts
index 2b10fa02a0..12435b7e81 100644
--- a/src/server/api/service/github.ts
+++ b/src/server/api/service/github.ts
@@ -1,13 +1,13 @@
import * as Koa from 'koa';
import * as Router from '@koa/router';
-import { getJson } from '../../../misc/fetch';
+import { getJson } from '@/misc/fetch';
import { OAuth2 } from 'oauth';
-import config from '../../../config';
+import config from '@/config';
import { publishMainStream } from '../../../services/stream';
-import redis from '../../../db/redis';
+import { redisClient } from '../../../db/redis';
import { v4 as uuid } from 'uuid';
import signin from '../common/signin';
-import { fetchMeta } from '../../../misc/fetch-meta';
+import { fetchMeta } from '@/misc/fetch-meta';
import { Users, UserProfiles } from '../../../models';
import { ILocalUser } from '../../../models/entities/user';
@@ -95,7 +95,7 @@ router.get('/connect/github', async ctx => {
state: uuid()
};
- redis.set(userToken, JSON.stringify(params));
+ redisClient.set(userToken, JSON.stringify(params));
const oauth2 = await getOath2();
ctx.redirect(oauth2!.getAuthorizeUrl(params));
@@ -116,7 +116,7 @@ router.get('/signin/github', async ctx => {
httpOnly: true
});
- redis.set(sessid, JSON.stringify(params));
+ redisClient.set(sessid, JSON.stringify(params));
const oauth2 = await getOath2();
ctx.redirect(oauth2!.getAuthorizeUrl(params));
@@ -143,7 +143,7 @@ router.get('/gh/cb', async ctx => {
}
const { redirect_uri, state } = await new Promise<any>((res, rej) => {
- redis.get(sessid, async (_, state) => {
+ redisClient.get(sessid, async (_, state) => {
res(JSON.parse(state));
});
});
@@ -194,7 +194,7 @@ router.get('/gh/cb', async ctx => {
}
const { redirect_uri, state } = await new Promise<any>((res, rej) => {
- redis.get(userToken, async (_, state) => {
+ redisClient.get(userToken, async (_, state) => {
res(JSON.parse(state));
});
});
diff --git a/src/server/api/service/twitter.ts b/src/server/api/service/twitter.ts
index 97e9d3a7fc..8520a5656f 100644
--- a/src/server/api/service/twitter.ts
+++ b/src/server/api/service/twitter.ts
@@ -2,11 +2,11 @@ import * as Koa from 'koa';
import * as Router from '@koa/router';
import { v4 as uuid } from 'uuid';
import autwh from 'autwh';
-import redis from '../../../db/redis';
+import { redisClient } from '../../../db/redis';
import { publishMainStream } from '../../../services/stream';
-import config from '../../../config';
+import config from '@/config';
import signin from '../common/signin';
-import { fetchMeta } from '../../../misc/fetch-meta';
+import { fetchMeta } from '@/misc/fetch-meta';
import { Users, UserProfiles } from '../../../models';
import { ILocalUser } from '../../../models/entities/user';
@@ -89,7 +89,7 @@ router.get('/connect/twitter', async ctx => {
const twAuth = await getTwAuth();
const twCtx = await twAuth!.begin();
- redis.set(userToken, JSON.stringify(twCtx));
+ redisClient.set(userToken, JSON.stringify(twCtx));
ctx.redirect(twCtx.url);
});
@@ -99,7 +99,7 @@ router.get('/signin/twitter', async ctx => {
const sessid = uuid();
- redis.set(sessid, JSON.stringify(twCtx));
+ redisClient.set(sessid, JSON.stringify(twCtx));
ctx.cookies.set('signin_with_twitter_sid', sessid, {
path: '/',
@@ -124,7 +124,7 @@ router.get('/tw/cb', async ctx => {
}
const get = new Promise<any>((res, rej) => {
- redis.get(sessid, async (_, twCtx) => {
+ redisClient.get(sessid, async (_, twCtx) => {
res(twCtx);
});
});
@@ -153,7 +153,7 @@ router.get('/tw/cb', async ctx => {
}
const get = new Promise<any>((res, rej) => {
- redis.get(userToken, async (_, twCtx) => {
+ redisClient.get(userToken, async (_, twCtx) => {
res(twCtx);
});
});
diff --git a/src/server/api/stream/channels/antenna.ts b/src/server/api/stream/channels/antenna.ts
index 36a474f2ac..d93143f4d8 100644
--- a/src/server/api/stream/channels/antenna.ts
+++ b/src/server/api/stream/channels/antenna.ts
@@ -1,7 +1,7 @@
import autobind from 'autobind-decorator';
import Channel from '../channel';
import { Notes } from '../../../../models';
-import { isMutedUserRelated } from '../../../../misc/is-muted-user-related';
+import { isMutedUserRelated } from '@/misc/is-muted-user-related';
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 47a52465b2..6af2d80e0c 100644
--- a/src/server/api/stream/channels/channel.ts
+++ b/src/server/api/stream/channels/channel.ts
@@ -1,7 +1,7 @@
import autobind from 'autobind-decorator';
import Channel from '../channel';
import { Notes, Users } from '../../../../models';
-import { isMutedUserRelated } from '../../../../misc/is-muted-user-related';
+import { isMutedUserRelated } from '@/misc/is-muted-user-related';
import { PackedNote } from '../../../../models/repositories/note';
import { User } from '../../../../models/entities/user';
diff --git a/src/server/api/stream/channels/games/reversi.ts b/src/server/api/stream/channels/games/reversi.ts
index 3db338386a..e0e41d9acd 100644
--- a/src/server/api/stream/channels/games/reversi.ts
+++ b/src/server/api/stream/channels/games/reversi.ts
@@ -26,7 +26,7 @@ export default class extends Channel {
childId: body.id
});
if (matching == null) return;
- publishMainStream(matching.childId, 'reversiInvited', await ReversiMatchings.pack(matching, matching.childId));
+ publishMainStream(matching.childId, 'reversiInvited', await ReversiMatchings.pack(matching, { id: matching.childId }));
break;
}
}
diff --git a/src/server/api/stream/channels/global-timeline.ts b/src/server/api/stream/channels/global-timeline.ts
index 8353f45323..c59eb37779 100644
--- a/src/server/api/stream/channels/global-timeline.ts
+++ b/src/server/api/stream/channels/global-timeline.ts
@@ -1,10 +1,10 @@
import autobind from 'autobind-decorator';
-import { isMutedUserRelated } from '../../../../misc/is-muted-user-related';
+import { isMutedUserRelated } from '@/misc/is-muted-user-related';
import Channel from '../channel';
-import { fetchMeta } from '../../../../misc/fetch-meta';
+import { fetchMeta } from '@/misc/fetch-meta';
import { Notes } from '../../../../models';
import { PackedNote } from '../../../../models/repositories/note';
-import { checkWordMute } from '../../../../misc/check-word-mute';
+import { checkWordMute } from '@/misc/check-word-mute';
export default class extends Channel {
public readonly chName = 'globalTimeline';
@@ -42,8 +42,9 @@ export default class extends Channel {
// 関係ない返信は除外
if (note.reply) {
+ const reply = note.reply as PackedNote;
// 「チャンネル接続主への返信」でもなければ、「チャンネル接続主が行った返信」でもなければ、「投稿者の投稿者自身への返信」でもない場合
- if (note.reply.userId !== this.user!.id && note.userId !== this.user!.id && note.reply.userId !== note.userId) return;
+ if (reply.userId !== this.user!.id && note.userId !== this.user!.id && reply.userId !== note.userId) return;
}
// 流れてきたNoteがミュートしているユーザーが関わるものだったら無視する
diff --git a/src/server/api/stream/channels/hashtag.ts b/src/server/api/stream/channels/hashtag.ts
index 1b7f8efcc1..b662af0723 100644
--- a/src/server/api/stream/channels/hashtag.ts
+++ b/src/server/api/stream/channels/hashtag.ts
@@ -1,9 +1,9 @@
import autobind from 'autobind-decorator';
-import { isMutedUserRelated } from '../../../../misc/is-muted-user-related';
+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 { normalizeForSearch } from '@/misc/normalize-for-search';
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 59ba31c316..b1091a46e1 100644
--- a/src/server/api/stream/channels/home-timeline.ts
+++ b/src/server/api/stream/channels/home-timeline.ts
@@ -1,9 +1,9 @@
import autobind from 'autobind-decorator';
-import { isMutedUserRelated } from '../../../../misc/is-muted-user-related';
+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 { checkWordMute } from '@/misc/check-word-mute';
export default class extends Channel {
public readonly chName = 'homeTimeline';
@@ -50,8 +50,9 @@ export default class extends Channel {
// 関係ない返信は除外
if (note.reply) {
+ const reply = note.reply as PackedNote;
// 「チャンネル接続主への返信」でもなければ、「チャンネル接続主が行った返信」でもなければ、「投稿者の投稿者自身への返信」でもない場合
- if (note.reply.userId !== this.user!.id && note.userId !== this.user!.id && note.reply.userId !== note.userId) return;
+ if (reply.userId !== this.user!.id && note.userId !== this.user!.id && reply.userId !== note.userId) return;
}
// 流れてきたNoteがミュートしているユーザーが関わるものだったら無視する
diff --git a/src/server/api/stream/channels/hybrid-timeline.ts b/src/server/api/stream/channels/hybrid-timeline.ts
index 9715e9973f..d769a24373 100644
--- a/src/server/api/stream/channels/hybrid-timeline.ts
+++ b/src/server/api/stream/channels/hybrid-timeline.ts
@@ -1,11 +1,11 @@
import autobind from 'autobind-decorator';
-import { isMutedUserRelated } from '../../../../misc/is-muted-user-related';
+import { isMutedUserRelated } from '@/misc/is-muted-user-related';
import Channel from '../channel';
-import { fetchMeta } from '../../../../misc/fetch-meta';
+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 { checkWordMute } from '@/misc/check-word-mute';
export default class extends Channel {
public readonly chName = 'hybridTimeline';
@@ -59,8 +59,9 @@ export default class extends Channel {
// 関係ない返信は除外
if (note.reply) {
+ const reply = note.reply as PackedNote;
// 「チャンネル接続主への返信」でもなければ、「チャンネル接続主が行った返信」でもなければ、「投稿者の投稿者自身への返信」でもない場合
- if (note.reply.userId !== this.user!.id && note.userId !== this.user!.id && note.reply.userId !== note.userId) return;
+ if (reply.userId !== this.user!.id && note.userId !== this.user!.id && reply.userId !== note.userId) return;
}
// 流れてきたNoteがミュートしているユーザーが関わるものだったら無視する
diff --git a/src/server/api/stream/channels/local-timeline.ts b/src/server/api/stream/channels/local-timeline.ts
index e159c72d60..aa0b6c4026 100644
--- a/src/server/api/stream/channels/local-timeline.ts
+++ b/src/server/api/stream/channels/local-timeline.ts
@@ -1,11 +1,11 @@
import autobind from 'autobind-decorator';
-import { isMutedUserRelated } from '../../../../misc/is-muted-user-related';
+import { isMutedUserRelated } from '@/misc/is-muted-user-related';
import Channel from '../channel';
-import { fetchMeta } from '../../../../misc/fetch-meta';
+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 { checkWordMute } from '@/misc/check-word-mute';
export default class extends Channel {
public readonly chName = 'localTimeline';
@@ -44,8 +44,9 @@ export default class extends Channel {
// 関係ない返信は除外
if (note.reply) {
+ const reply = note.reply as PackedNote;
// 「チャンネル接続主への返信」でもなければ、「チャンネル接続主が行った返信」でもなければ、「投稿者の投稿者自身への返信」でもない場合
- if (note.reply.userId !== this.user!.id && note.userId !== this.user!.id && note.reply.userId !== note.userId) return;
+ if (reply.userId !== this.user!.id && note.userId !== this.user!.id && reply.userId !== note.userId) return;
}
// 流れてきたNoteがミュートしているユーザーが関わるものだったら無視する
diff --git a/src/server/api/stream/channels/user-list.ts b/src/server/api/stream/channels/user-list.ts
index 4191a0de54..da227f24ec 100644
--- a/src/server/api/stream/channels/user-list.ts
+++ b/src/server/api/stream/channels/user-list.ts
@@ -1,7 +1,7 @@
import autobind from 'autobind-decorator';
import Channel from '../channel';
import { Notes, UserListJoinings, UserLists } from '../../../../models';
-import { isMutedUserRelated } from '../../../../misc/is-muted-user-related';
+import { isMutedUserRelated } from '@/misc/is-muted-user-related';
import { User } from '../../../../models/entities/user';
import { PackedNote } from '../../../../models/repositories/note';
diff --git a/src/server/api/stream/index.ts b/src/server/api/stream/index.ts
index 99ae558696..647b890ff8 100644
--- a/src/server/api/stream/index.ts
+++ b/src/server/api/stream/index.ts
@@ -156,8 +156,8 @@ export default class Connection {
};
add(note);
- if (note.reply) add(note.reply);
- if (note.renote) add(note.renote);
+ if (note.reply) add(note.reply as PackedNote);
+ if (note.renote) add(note.renote as PackedNote);
}
@autobind
@@ -168,17 +168,10 @@ export default class Connection {
if (note == null) return;
if (this.user && (note.userId !== this.user.id)) {
- if (note.mentions && note.mentions.includes(this.user.id)) {
- readNote(this.user.id, [note]);
- } else if (note.visibleUserIds && note.visibleUserIds.includes(this.user.id)) {
- readNote(this.user.id, [note]);
- }
-
- if (this.followingChannels.has(note.channelId)) {
- // TODO
- }
-
- // TODO: アンテナの既読処理
+ readNote(this.user.id, [note], {
+ following: this.following,
+ followingChannels: this.followingChannels,
+ });
}
}
diff --git a/src/server/api/streaming.ts b/src/server/api/streaming.ts
index 10f2a70bad..81b83edcf5 100644
--- a/src/server/api/streaming.ts
+++ b/src/server/api/streaming.ts
@@ -1,12 +1,11 @@
import * as http from 'http';
import * as websocket from 'websocket';
-import * as redis from 'redis';
import MainStreamConnection from './stream';
import { ParsedUrlQuery } from 'querystring';
import authenticate from './authenticate';
import { EventEmitter } from 'events';
-import config from '../../config';
+import { subsdcriber as redisClient } from '../../db/redis';
module.exports = (server: http.Server) => {
// Init websocket server
@@ -24,37 +23,21 @@ module.exports = (server: http.Server) => {
const connection = request.accept();
- let ev: EventEmitter;
+ const ev = new EventEmitter();
- // Connect to Redis
- const subscriber = redis.createClient(
- config.redis.port,
- config.redis.host,
- {
- password: config.redis.pass
- }
- );
-
- subscriber.subscribe(config.host);
-
- ev = new EventEmitter();
-
- subscriber.on('message', async (_, data) => {
- const obj = JSON.parse(data);
+ async function onRedisMessage(_: string, data: string) {
+ const parsed = JSON.parse(data);
+ ev.emit(parsed.channel, parsed.message);
+ }
- ev.emit(obj.channel, obj.message);
- });
-
- connection.once('close', () => {
- subscriber.unsubscribe();
- subscriber.quit();
- });
+ redisClient.on('message', onRedisMessage);
const main = new MainStreamConnection(connection, ev, user, app);
connection.once('close', () => {
ev.removeAllListeners();
main.dispose();
+ redisClient.off('message', onRedisMessage);
});
connection.on('message', async (data) => {
diff --git a/src/server/file/send-drive-file.ts b/src/server/file/send-drive-file.ts
index 9dea2df8e7..9745b1201d 100644
--- a/src/server/file/send-drive-file.ts
+++ b/src/server/file/send-drive-file.ts
@@ -4,11 +4,11 @@ import * as rename from 'rename';
import * as tmp from 'tmp';
import * as fs from 'fs';
import { serverLogger } from '..';
-import { contentDisposition } from '../../misc/content-disposition';
+import { contentDisposition } from '@/misc/content-disposition';
import { DriveFiles } from '../../models';
import { InternalStorage } from '../../services/drive/internal-storage';
-import { downloadUrl } from '../../misc/download-url';
-import { detectType } from '../../misc/get-file-info';
+import { downloadUrl } from '@/misc/download-url';
+import { detectType } from '@/misc/get-file-info';
import { convertToJpeg, convertToPngOrJpeg } from '../../services/drive/image-processor';
import { GenerateVideoThumbnail } from '../../services/drive/generate-video-thumbnail';
diff --git a/src/server/index.ts b/src/server/index.ts
index 5a7bb99c63..3b43aa7674 100644
--- a/src/server/index.ts
+++ b/src/server/index.ts
@@ -16,15 +16,15 @@ import * as slow from 'koa-slow';
import activityPub from './activitypub';
import nodeinfo from './nodeinfo';
import wellKnown from './well-known';
-import config from '../config';
+import config from '@/config';
import apiServer from './api';
import { sum } from '../prelude/array';
import Logger from '../services/logger';
import { program } from '../argv';
import { UserProfiles, Users } from '../models';
import { networkChart } from '../services/chart';
-import { genAvatar } from '../misc/gen-avatar';
-import { createTemp } from '../misc/create-temp';
+import { genAvatar } from '@/misc/gen-avatar';
+import { createTemp } from '@/misc/create-temp';
import { publishMainStream } from '../services/stream';
export const serverLogger = new Logger('server', 'gray', false);
@@ -89,7 +89,7 @@ router.get('/verify-email/:code', async ctx => {
emailVerifyCode: null
});
- publishMainStream(profile.userId, 'meUpdated', await Users.pack(profile.userId, profile.userId, {
+ publishMainStream(profile.userId, 'meUpdated', await Users.pack(profile.userId, { id: profile.userId }, {
detail: true,
includeSecrets: true
}));
diff --git a/src/server/nodeinfo.ts b/src/server/nodeinfo.ts
index 5c51137c92..7a1d5b6292 100644
--- a/src/server/nodeinfo.ts
+++ b/src/server/nodeinfo.ts
@@ -1,6 +1,6 @@
import * as Router from '@koa/router';
-import config from '../config';
-import { fetchMeta } from '../misc/fetch-meta';
+import config from '@/config';
+import { fetchMeta } from '@/misc/fetch-meta';
import { Users } from '../models';
// import User from '../models/user';
// import Note from '../models/note';
diff --git a/src/server/proxy/proxy-media.ts b/src/server/proxy/proxy-media.ts
index 4373cc20f5..f91df55624 100644
--- a/src/server/proxy/proxy-media.ts
+++ b/src/server/proxy/proxy-media.ts
@@ -2,9 +2,9 @@ import * as fs from 'fs';
import * as Koa from 'koa';
import { serverLogger } from '..';
import { IImage, convertToPng, convertToJpeg } from '../../services/drive/image-processor';
-import { createTemp } from '../../misc/create-temp';
-import { downloadUrl } from '../../misc/download-url';
-import { detectType } from '../../misc/get-file-info';
+import { createTemp } from '@/misc/create-temp';
+import { downloadUrl } from '@/misc/download-url';
+import { detectType } from '@/misc/get-file-info';
export async function proxyMedia(ctx: Koa.Context) {
const url = 'url' in ctx.query ? ctx.query.url : 'https://' + ctx.params.url;
diff --git a/src/server/web/feed.ts b/src/server/web/feed.ts
index 6078fbe0f3..d4792c63aa 100644
--- a/src/server/web/feed.ts
+++ b/src/server/web/feed.ts
@@ -1,5 +1,5 @@
import { Feed } from 'feed';
-import config from '../../config';
+import config from '@/config';
import { User } from '../../models/entities/user';
import { Notes, DriveFiles, UserProfiles } from '../../models';
import { In } from 'typeorm';
diff --git a/src/server/web/index.ts b/src/server/web/index.ts
index ea356206ff..953f2b47f1 100644
--- a/src/server/web/index.ts
+++ b/src/server/web/index.ts
@@ -14,14 +14,14 @@ import * as glob from 'glob';
import * as MarkdownIt from 'markdown-it';
import packFeed from './feed';
-import { fetchMeta } from '../../misc/fetch-meta';
+import { fetchMeta } from '@/misc/fetch-meta';
import { genOpenapiSpec } from '../api/openapi/gen-spec';
-import config from '../../config';
+import config from '@/config';
import { Users, Notes, Emojis, UserProfiles, Pages, Channels, Clips } from '../../models';
-import parseAcct from '../../misc/acct/parse';
-import { getNoteSummary } from '../../misc/get-note-summary';
+import parseAcct from '@/misc/acct/parse';
+import { getNoteSummary } from '@/misc/get-note-summary';
import { getConnection } from 'typeorm';
-import redis from '../../db/redis';
+import { redisClient } from '../../db/redis';
import locales = require('../../../locales');
const markdown = MarkdownIt({
@@ -379,7 +379,7 @@ router.get('/info', async ctx => {
os: os.platform(),
node: process.version,
psql: await getConnection().query('SHOW server_version').then(x => x[0].server_version),
- redis: redis.server_info.redis_version,
+ redis: redisClient.server_info.redis_version,
cpu: {
model: os.cpus()[0].model,
cores: os.cpus().length
diff --git a/src/server/web/manifest.json b/src/server/web/manifest.json
new file mode 100644
index 0000000000..48030a2980
--- /dev/null
+++ b/src/server/web/manifest.json
@@ -0,0 +1,28 @@
+{
+ "short_name": "Misskey",
+ "name": "Misskey",
+ "start_url": "/",
+ "display": "standalone",
+ "background_color": "#313a42",
+ "theme_color": "#86b300",
+ "icons": [
+ {
+ "src": "/static-assets/icons/192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/static-assets/icons/512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "share_target": {
+ "action": "/share/",
+ "params": {
+ "title": "title",
+ "text": "text",
+ "url": "url"
+ }
+ }
+}
diff --git a/src/server/web/manifest.ts b/src/server/web/manifest.ts
index 2f3eb89030..918fe27c03 100644
--- a/src/server/web/manifest.ts
+++ b/src/server/web/manifest.ts
@@ -1,6 +1,6 @@
import * as Koa from 'koa';
-import * as manifest from '../../../assets/client/manifest.json';
-import { fetchMeta } from '../../misc/fetch-meta';
+import * as manifest from './manifest.json';
+import { fetchMeta } from '@/misc/fetch-meta';
module.exports = async (ctx: Koa.Context) => {
const json = JSON.parse(JSON.stringify(manifest));
diff --git a/src/server/web/url-preview.ts b/src/server/web/url-preview.ts
index 4dae6baafb..1ba8e0034a 100644
--- a/src/server/web/url-preview.ts
+++ b/src/server/web/url-preview.ts
@@ -1,10 +1,10 @@
import * as Koa from 'koa';
import summaly from 'summaly';
-import { fetchMeta } from '../../misc/fetch-meta';
+import { fetchMeta } from '@/misc/fetch-meta';
import Logger from '../../services/logger';
-import config from '../../config';
+import config from '@/config';
import { query } from '../../prelude/url';
-import { getJson } from '../../misc/fetch';
+import { getJson } from '@/misc/fetch';
const logger = new Logger('url-preview');
diff --git a/src/server/well-known.ts b/src/server/well-known.ts
index ff3c346255..b1b6b2a771 100644
--- a/src/server/well-known.ts
+++ b/src/server/well-known.ts
@@ -1,8 +1,8 @@
import * as Router from '@koa/router';
-import config from '../config';
-import parseAcct from '../misc/acct/parse';
-import Acct from '../misc/acct/type';
+import config from '@/config';
+import parseAcct from '@/misc/acct/parse';
+import Acct from '@/misc/acct/type';
import { links } from './nodeinfo';
import { escapeAttribute, escapeValue } from '../prelude/xml';
import { Users } from '../models';
diff --git a/src/services/add-note-to-antenna.ts b/src/services/add-note-to-antenna.ts
index 3ba3d1eef5..56d0149155 100644
--- a/src/services/add-note-to-antenna.ts
+++ b/src/services/add-note-to-antenna.ts
@@ -1,12 +1,12 @@
import { Antenna } from '../models/entities/antenna';
import { Note } from '../models/entities/note';
import { AntennaNotes, Mutings, Notes } from '../models';
-import { genId } from '../misc/gen-id';
-import { isMutedUserRelated } from '../misc/is-muted-user-related';
+import { genId } from '@/misc/gen-id';
+import { isMutedUserRelated } from '@/misc/is-muted-user-related';
import { publishAntennaStream, publishMainStream } from './stream';
import { User } from '../models/entities/user';
-export async function addNoteToAntenna(antenna: Antenna, note: Note, noteUser: User) {
+export async function addNoteToAntenna(antenna: Antenna, note: Note, noteUser: { id: User['id']; }) {
// 通知しない設定になっているか、自分自身の投稿なら既読にする
const read = !antenna.notify || (antenna.userId === noteUser.id);
diff --git a/src/services/blocking/create.ts b/src/services/blocking/create.ts
index dec48d26de..be2a62692b 100644
--- a/src/services/blocking/create.ts
+++ b/src/services/blocking/create.ts
@@ -8,7 +8,7 @@ import renderReject from '../../remote/activitypub/renderer/reject';
import { User } from '../../models/entities/user';
import { Blockings, Users, FollowRequests, Followings } from '../../models';
import { perUserFollowingChart } from '../chart';
-import { genId } from '../../misc/gen-id';
+import { genId } from '@/misc/gen-id';
export default async function(blocker: User, blockee: User) {
await Promise.all([
diff --git a/src/services/chart/charts/classes/active-users.ts b/src/services/chart/charts/classes/active-users.ts
index 4820f8281b..e732b25d24 100644
--- a/src/services/chart/charts/classes/active-users.ts
+++ b/src/services/chart/charts/classes/active-users.ts
@@ -1,7 +1,7 @@
import autobind from 'autobind-decorator';
import Chart, { Obj, DeepPartial } from '../../core';
import { User } from '../../../../models/entities/user';
-import { SchemaType } from '../../../../misc/schema';
+import { SchemaType } from '@/misc/schema';
import { Users } from '../../../../models';
import { name, schema } from '../schemas/active-users';
@@ -35,7 +35,7 @@ export default class ActiveUsersChart extends Chart<ActiveUsersLog> {
}
@autobind
- public async update(user: User) {
+ public async update(user: { id: User['id'], host: User['host'] }) {
const update: Obj = {
users: [user.id]
};
diff --git a/src/services/chart/charts/classes/drive.ts b/src/services/chart/charts/classes/drive.ts
index 46399a34d8..18537918f0 100644
--- a/src/services/chart/charts/classes/drive.ts
+++ b/src/services/chart/charts/classes/drive.ts
@@ -1,6 +1,6 @@
import autobind from 'autobind-decorator';
import Chart, { Obj, DeepPartial } from '../../core';
-import { SchemaType } from '../../../../misc/schema';
+import { SchemaType } from '@/misc/schema';
import { DriveFiles } from '../../../../models';
import { Not, IsNull } from 'typeorm';
import { DriveFile } from '../../../../models/entities/drive-file';
diff --git a/src/services/chart/charts/classes/federation.ts b/src/services/chart/charts/classes/federation.ts
index ab6ec2d4dd..e593a53cf1 100644
--- a/src/services/chart/charts/classes/federation.ts
+++ b/src/services/chart/charts/classes/federation.ts
@@ -1,6 +1,6 @@
import autobind from 'autobind-decorator';
import Chart, { Obj, DeepPartial } from '../../core';
-import { SchemaType } from '../../../../misc/schema';
+import { SchemaType } from '@/misc/schema';
import { Instances } from '../../../../models';
import { name, schema } from '../schemas/federation';
diff --git a/src/services/chart/charts/classes/hashtag.ts b/src/services/chart/charts/classes/hashtag.ts
index 43db5b0a83..98d5421c9b 100644
--- a/src/services/chart/charts/classes/hashtag.ts
+++ b/src/services/chart/charts/classes/hashtag.ts
@@ -1,7 +1,7 @@
import autobind from 'autobind-decorator';
import Chart, { Obj, DeepPartial } from '../../core';
import { User } from '../../../../models/entities/user';
-import { SchemaType } from '../../../../misc/schema';
+import { SchemaType } from '@/misc/schema';
import { Users } from '../../../../models';
import { name, schema } from '../schemas/hashtag';
@@ -35,7 +35,7 @@ export default class HashtagChart extends Chart<HashtagLog> {
}
@autobind
- public async update(hashtag: string, user: User) {
+ public async update(hashtag: string, user: { id: User['id'], host: User['host'] }) {
const update: Obj = {
users: [user.id]
};
diff --git a/src/services/chart/charts/classes/instance.ts b/src/services/chart/charts/classes/instance.ts
index c32b864d87..f93da58d61 100644
--- a/src/services/chart/charts/classes/instance.ts
+++ b/src/services/chart/charts/classes/instance.ts
@@ -1,11 +1,11 @@
import autobind from 'autobind-decorator';
import Chart, { Obj, DeepPartial } from '../../core';
-import { SchemaType } from '../../../../misc/schema';
+import { SchemaType } from '@/misc/schema';
import { DriveFiles, Followings, Users, Notes } from '../../../../models';
import { DriveFile } from '../../../../models/entities/drive-file';
import { name, schema } from '../schemas/instance';
import { Note } from '../../../../models/entities/note';
-import { toPuny } from '../../../../misc/convert-host';
+import { toPuny } from '@/misc/convert-host';
type InstanceLog = SchemaType<typeof schema>;
diff --git a/src/services/chart/charts/classes/network.ts b/src/services/chart/charts/classes/network.ts
index 693af48f73..2ce75e0b34 100644
--- a/src/services/chart/charts/classes/network.ts
+++ b/src/services/chart/charts/classes/network.ts
@@ -1,6 +1,6 @@
import autobind from 'autobind-decorator';
import Chart, { DeepPartial } from '../../core';
-import { SchemaType } from '../../../../misc/schema';
+import { SchemaType } from '@/misc/schema';
import { name, schema } from '../schemas/network';
type NetworkLog = SchemaType<typeof schema>;
diff --git a/src/services/chart/charts/classes/notes.ts b/src/services/chart/charts/classes/notes.ts
index 965087bc08..a6eb653b70 100644
--- a/src/services/chart/charts/classes/notes.ts
+++ b/src/services/chart/charts/classes/notes.ts
@@ -1,6 +1,6 @@
import autobind from 'autobind-decorator';
import Chart, { Obj, DeepPartial } from '../../core';
-import { SchemaType } from '../../../../misc/schema';
+import { SchemaType } from '@/misc/schema';
import { Notes } from '../../../../models';
import { Not, IsNull } from 'typeorm';
import { Note } from '../../../../models/entities/note';
diff --git a/src/services/chart/charts/classes/per-user-drive.ts b/src/services/chart/charts/classes/per-user-drive.ts
index e778f7bf61..182e5927e8 100644
--- a/src/services/chart/charts/classes/per-user-drive.ts
+++ b/src/services/chart/charts/classes/per-user-drive.ts
@@ -1,6 +1,6 @@
import autobind from 'autobind-decorator';
import Chart, { Obj, DeepPartial } from '../../core';
-import { SchemaType } from '../../../../misc/schema';
+import { SchemaType } from '@/misc/schema';
import { DriveFiles } from '../../../../models';
import { DriveFile } from '../../../../models/entities/drive-file';
import { name, schema } from '../schemas/per-user-drive';
diff --git a/src/services/chart/charts/classes/per-user-following.ts b/src/services/chart/charts/classes/per-user-following.ts
index 8b536009c8..5972d3759b 100644
--- a/src/services/chart/charts/classes/per-user-following.ts
+++ b/src/services/chart/charts/classes/per-user-following.ts
@@ -1,6 +1,6 @@
import autobind from 'autobind-decorator';
import Chart, { Obj, DeepPartial } from '../../core';
-import { SchemaType } from '../../../../misc/schema';
+import { SchemaType } from '@/misc/schema';
import { Followings, Users } from '../../../../models';
import { Not, IsNull } from 'typeorm';
import { User } from '../../../../models/entities/user';
@@ -100,7 +100,7 @@ export default class PerUserFollowingChart extends Chart<PerUserFollowingLog> {
}
@autobind
- public async update(follower: User, followee: User, isFollow: boolean) {
+ public async update(follower: { id: User['id']; host: User['host']; }, followee: { id: User['id']; host: User['host']; }, isFollow: boolean) {
const update: Obj = {};
update.total = isFollow ? 1 : -1;
diff --git a/src/services/chart/charts/classes/per-user-notes.ts b/src/services/chart/charts/classes/per-user-notes.ts
index 8d1fb8d2b0..7f93965adb 100644
--- a/src/services/chart/charts/classes/per-user-notes.ts
+++ b/src/services/chart/charts/classes/per-user-notes.ts
@@ -1,7 +1,7 @@
import autobind from 'autobind-decorator';
import Chart, { Obj, DeepPartial } from '../../core';
import { User } from '../../../../models/entities/user';
-import { SchemaType } from '../../../../misc/schema';
+import { SchemaType } from '@/misc/schema';
import { Notes } from '../../../../models';
import { Note } from '../../../../models/entities/note';
import { name, schema } from '../schemas/per-user-notes';
@@ -46,7 +46,7 @@ export default class PerUserNotesChart extends Chart<PerUserNotesLog> {
}
@autobind
- public async update(user: User, note: Note, isAdditional: boolean) {
+ public async update(user: { id: User['id'] }, note: Note, isAdditional: boolean) {
const update: Obj = {
diffs: {}
};
diff --git a/src/services/chart/charts/classes/per-user-reactions.ts b/src/services/chart/charts/classes/per-user-reactions.ts
index b4cdced40c..69ed81cd44 100644
--- a/src/services/chart/charts/classes/per-user-reactions.ts
+++ b/src/services/chart/charts/classes/per-user-reactions.ts
@@ -2,7 +2,7 @@ import autobind from 'autobind-decorator';
import Chart, { DeepPartial } from '../../core';
import { User } from '../../../../models/entities/user';
import { Note } from '../../../../models/entities/note';
-import { SchemaType } from '../../../../misc/schema';
+import { SchemaType } from '@/misc/schema';
import { Users } from '../../../../models';
import { name, schema } from '../schemas/per-user-reactions';
@@ -36,7 +36,7 @@ export default class PerUserReactionsChart extends Chart<PerUserReactionsLog> {
}
@autobind
- public async update(user: User, note: Note) {
+ public async update(user: { id: User['id'], host: User['host'] }, note: Note) {
this.inc({
[Users.isLocalUser(user) ? 'local' : 'remote']: { count: 1 }
}, note.userId);
diff --git a/src/services/chart/charts/classes/test-grouped.ts b/src/services/chart/charts/classes/test-grouped.ts
index 92c8df636e..84e6d5e33f 100644
--- a/src/services/chart/charts/classes/test-grouped.ts
+++ b/src/services/chart/charts/classes/test-grouped.ts
@@ -1,6 +1,6 @@
import autobind from 'autobind-decorator';
import Chart, { Obj, DeepPartial } from '../../core';
-import { SchemaType } from '../../../../misc/schema';
+import { SchemaType } from '@/misc/schema';
import { name, schema } from '../schemas/test-grouped';
type TestGroupedLog = SchemaType<typeof schema>;
diff --git a/src/services/chart/charts/classes/test-unique.ts b/src/services/chart/charts/classes/test-unique.ts
index 5680d713ec..559fda13c9 100644
--- a/src/services/chart/charts/classes/test-unique.ts
+++ b/src/services/chart/charts/classes/test-unique.ts
@@ -1,6 +1,6 @@
import autobind from 'autobind-decorator';
import Chart, { DeepPartial } from '../../core';
-import { SchemaType } from '../../../../misc/schema';
+import { SchemaType } from '@/misc/schema';
import { name, schema } from '../schemas/test-unique';
type TestUniqueLog = SchemaType<typeof schema>;
diff --git a/src/services/chart/charts/classes/test.ts b/src/services/chart/charts/classes/test.ts
index d37d298de7..a91d5e1895 100644
--- a/src/services/chart/charts/classes/test.ts
+++ b/src/services/chart/charts/classes/test.ts
@@ -1,6 +1,6 @@
import autobind from 'autobind-decorator';
import Chart, { Obj, DeepPartial } from '../../core';
-import { SchemaType } from '../../../../misc/schema';
+import { SchemaType } from '@/misc/schema';
import { name, schema } from '../schemas/test';
type TestLog = SchemaType<typeof schema>;
diff --git a/src/services/chart/charts/classes/users.ts b/src/services/chart/charts/classes/users.ts
index 87b19d88f9..8f208de6d6 100644
--- a/src/services/chart/charts/classes/users.ts
+++ b/src/services/chart/charts/classes/users.ts
@@ -1,6 +1,6 @@
import autobind from 'autobind-decorator';
import Chart, { Obj, DeepPartial } from '../../core';
-import { SchemaType } from '../../../../misc/schema';
+import { SchemaType } from '@/misc/schema';
import { Users } from '../../../../models';
import { Not, IsNull } from 'typeorm';
import { User } from '../../../../models/entities/user';
@@ -59,7 +59,7 @@ export default class UsersChart extends Chart<UsersLog> {
}
@autobind
- public async update(user: User, isAdditional: boolean) {
+ public async update(user: { id: User['id'], host: User['host'] }, isAdditional: boolean) {
const update: Obj = {};
update.total = isAdditional ? 1 : -1;
diff --git a/src/services/chart/core.ts b/src/services/chart/core.ts
index 10621be073..d956d33bd7 100644
--- a/src/services/chart/core.ts
+++ b/src/services/chart/core.ts
@@ -7,10 +7,10 @@
import * as nestedProperty from 'nested-property';
import autobind from 'autobind-decorator';
import Logger from '../logger';
-import { Schema } from '../../misc/schema';
+import { Schema } from '@/misc/schema';
import { EntitySchema, getRepository, Repository, LessThan, Between } from 'typeorm';
import { dateUTC, isTimeSame, isTimeBefore, subtractTime, addTime } from '../../prelude/time';
-import { getChartInsertLock } from '../../misc/app-lock';
+import { getChartInsertLock } from '@/misc/app-lock';
const logger = new Logger('chart', 'white', process.env.NODE_ENV !== 'test');
diff --git a/src/services/chart/index.ts b/src/services/chart/index.ts
index dde02bd64d..61eb431ea3 100644
--- a/src/services/chart/index.ts
+++ b/src/services/chart/index.ts
@@ -10,7 +10,7 @@ import PerUserReactionsChart from './charts/classes/per-user-reactions';
import HashtagChart from './charts/classes/hashtag';
import PerUserFollowingChart from './charts/classes/per-user-following';
import PerUserDriveChart from './charts/classes/per-user-drive';
-import { beforeShutdown } from '../../misc/before-shutdown';
+import { beforeShutdown } from '@/misc/before-shutdown';
export const federationChart = new FederationChart();
export const notesChart = new NotesChart();
diff --git a/src/services/create-notification.ts b/src/services/create-notification.ts
index dedb8eac8d..261b36814c 100644
--- a/src/services/create-notification.ts
+++ b/src/services/create-notification.ts
@@ -1,7 +1,7 @@
import { publishMainStream } from './stream';
import pushSw from './push-notification';
import { Notifications, Mutings, UserProfiles } from '../models';
-import { genId } from '../misc/gen-id';
+import { genId } from '@/misc/gen-id';
import { User } from '../models/entities/user';
import { Notification } from '../models/entities/notification';
import { sendEmailNotification } from './send-email-notification';
diff --git a/src/services/create-system-user.ts b/src/services/create-system-user.ts
index 39ddc92abd..052ceb6c99 100644
--- a/src/services/create-system-user.ts
+++ b/src/services/create-system-user.ts
@@ -1,11 +1,11 @@
import * as bcrypt from 'bcryptjs';
import { v4 as uuid } from 'uuid';
import generateNativeUserToken from '../server/api/common/generate-native-user-token';
-import { genRsaKeyPair } from '../misc/gen-key-pair';
+import { genRsaKeyPair } from '@/misc/gen-key-pair';
import { User } from '../models/entities/user';
import { UserProfile } from '../models/entities/user-profile';
import { getConnection } from 'typeorm';
-import { genId } from '../misc/gen-id';
+import { genId } from '@/misc/gen-id';
import { UserKeypair } from '../models/entities/user-keypair';
import { UsedUsername } from '../models/entities/used-username';
diff --git a/src/services/drive/add-file.ts b/src/services/drive/add-file.ts
index b5085ec8e3..ad9f753e79 100644
--- a/src/services/drive/add-file.ts
+++ b/src/services/drive/add-file.ts
@@ -4,19 +4,19 @@ import { v4 as uuid } from 'uuid';
import { publishMainStream, publishDriveStream } from '../stream';
import { deleteFile } from './delete-file';
-import { fetchMeta } from '../../misc/fetch-meta';
+import { fetchMeta } from '@/misc/fetch-meta';
import { GenerateVideoThumbnail } from './generate-video-thumbnail';
import { driveLogger } from './logger';
import { IImage, convertSharpToJpeg, convertSharpToWebp, convertSharpToPng, convertSharpToPngOrJpeg } from './image-processor';
-import { contentDisposition } from '../../misc/content-disposition';
-import { getFileInfo } from '../../misc/get-file-info';
+import { contentDisposition } from '@/misc/content-disposition';
+import { getFileInfo } from '@/misc/get-file-info';
import { DriveFiles, DriveFolders, Users, Instances, UserProfiles } from '../../models';
import { InternalStorage } from './internal-storage';
import { DriveFile } from '../../models/entities/drive-file';
import { IRemoteUser, User } from '../../models/entities/user';
import { driveChart, perUserDriveChart, instanceChart } from '../chart';
-import { genId } from '../../misc/gen-id';
-import { isDuplicateKeyValueError } from '../../misc/is-duplicate-key-value-error';
+import { genId } from '@/misc/gen-id';
+import { isDuplicateKeyValueError } from '@/misc/is-duplicate-key-value-error';
import * as S3 from 'aws-sdk/clients/s3';
import { getS3 } from './s3';
import * as sharp from 'sharp';
@@ -302,7 +302,7 @@ async function deleteOldFile(user: IRemoteUser) {
* @return Created drive file
*/
export default async function(
- user: User | null,
+ user: { id: User['id']; host: User['host'] } | null,
path: string,
name: string | null = null,
comment: string | null = null,
@@ -347,7 +347,7 @@ export default async function(
throw new Error('no-free-space');
} else {
// (アバターまたはバナーを含まず)最も古いファイルを削除する
- deleteOldFile(user as IRemoteUser);
+ deleteOldFile(await Users.findOneOrFail(user.id) as IRemoteUser);
}
}
}
diff --git a/src/services/drive/delete-file.ts b/src/services/drive/delete-file.ts
index f9141ebaac..bb9c0ae2c3 100644
--- a/src/services/drive/delete-file.ts
+++ b/src/services/drive/delete-file.ts
@@ -3,14 +3,14 @@ import { InternalStorage } from './internal-storage';
import { DriveFiles, Instances, Notes, Users } from '../../models';
import { driveChart, perUserDriveChart, instanceChart } from '../chart';
import { createDeleteObjectStorageFileJob } from '../../queue';
-import { fetchMeta } from '../../misc/fetch-meta';
+import { fetchMeta } from '@/misc/fetch-meta';
import { getS3 } from './s3';
import { v4 as uuid } from 'uuid';
import { Note } from '../../models/entities/note';
import { renderActivity } from '../../remote/activitypub/renderer';
import renderDelete from '../../remote/activitypub/renderer/delete';
import renderTombstone from '../../remote/activitypub/renderer/tombstone';
-import config from '../../config';
+import config from '@/config';
import { deliverToFollowers } from '../../remote/activitypub/deliver-manager';
import { Brackets } from 'typeorm';
import { deliverToRelays } from '../relay';
diff --git a/src/services/drive/internal-storage.ts b/src/services/drive/internal-storage.ts
index f8d7489a22..5ec563584f 100644
--- a/src/services/drive/internal-storage.ts
+++ b/src/services/drive/internal-storage.ts
@@ -1,6 +1,6 @@
import * as fs from 'fs';
import * as Path from 'path';
-import config from '../../config';
+import config from '@/config';
export class InternalStorage {
private static readonly path = Path.resolve(__dirname, '../../../files');
diff --git a/src/services/drive/s3.ts b/src/services/drive/s3.ts
index f419f09377..e75937861b 100644
--- a/src/services/drive/s3.ts
+++ b/src/services/drive/s3.ts
@@ -1,6 +1,7 @@
+import { URL } from 'url';
import * as S3 from 'aws-sdk/clients/s3';
import { Meta } from '../../models/entities/meta';
-import { getAgentByUrl } from '../../misc/fetch';
+import { getAgentByUrl } from '@/misc/fetch';
export function getS3(meta: Meta) {
const u = meta.objectStorageEndpoint != null
diff --git a/src/services/drive/upload-from-url.ts b/src/services/drive/upload-from-url.ts
index 96550f7121..2f4c5aeeaf 100644
--- a/src/services/drive/upload-from-url.ts
+++ b/src/services/drive/upload-from-url.ts
@@ -1,8 +1,9 @@
+import { URL } from 'url';
import create from './add-file';
import { User } from '../../models/entities/user';
import { driveLogger } from './logger';
-import { createTemp } from '../../misc/create-temp';
-import { downloadUrl } from '../../misc/download-url';
+import { createTemp } from '@/misc/create-temp';
+import { downloadUrl } from '@/misc/download-url';
import { DriveFolder } from '../../models/entities/drive-folder';
import { DriveFile } from '../../models/entities/drive-file';
import { DriveFiles } from '../../models';
@@ -11,7 +12,7 @@ const logger = driveLogger.createSubLogger('downloader');
export default async (
url: string,
- user: User | null,
+ user: { id: User['id']; host: User['host'] } | null,
folderId: DriveFolder['id'] | null = null,
uri: string | null = null,
sensitive = false,
diff --git a/src/services/fetch-instance-metadata.ts b/src/services/fetch-instance-metadata.ts
index c1caeef6e3..e016e73a60 100644
--- a/src/services/fetch-instance-metadata.ts
+++ b/src/services/fetch-instance-metadata.ts
@@ -1,9 +1,9 @@
import { DOMWindow, JSDOM } from 'jsdom';
import fetch from 'node-fetch';
-import { getJson, getHtml, getAgentByUrl } from '../misc/fetch';
+import { getJson, getHtml, getAgentByUrl } from '@/misc/fetch';
import { Instance } from '../models/entities/instance';
import { Instances } from '../models';
-import { getFetchInstanceMetadataLock } from '../misc/app-lock';
+import { getFetchInstanceMetadataLock } from '@/misc/app-lock';
import Logger from './logger';
import { URL } from 'url';
diff --git a/src/services/following/create.ts b/src/services/following/create.ts
index 1ce75caca0..de12285fc7 100644
--- a/src/services/following/create.ts
+++ b/src/services/following/create.ts
@@ -7,17 +7,17 @@ import { deliver } from '../../queue';
import createFollowRequest from './requests/create';
import { registerOrFetchInstanceDoc } from '../register-or-fetch-instance-doc';
import Logger from '../logger';
-import { IdentifiableError } from '../../misc/identifiable-error';
+import { IdentifiableError } from '@/misc/identifiable-error';
import { User } from '../../models/entities/user';
import { Followings, Users, FollowRequests, Blockings, Instances, UserProfiles } from '../../models';
import { instanceChart, perUserFollowingChart } from '../chart';
-import { genId } from '../../misc/gen-id';
+import { genId } from '@/misc/gen-id';
import { createNotification } from '../create-notification';
-import { isDuplicateKeyValueError } from '../../misc/is-duplicate-key-value-error';
+import { isDuplicateKeyValueError } from '@/misc/is-duplicate-key-value-error';
const logger = new Logger('following/create');
-export async function insertFollowingDoc(followee: User, follower: User) {
+export async function insertFollowingDoc(followee: { id: User['id']; host: User['host']; uri: User['host']; inbox: User['inbox']; sharedInbox: User['sharedInbox'] }, follower: { id: User['id']; host: User['host']; uri: User['host']; inbox: User['inbox']; sharedInbox: User['sharedInbox'] }) {
if (follower.id === followee.id) return;
let alreadyFollowed = false;
@@ -86,7 +86,7 @@ export async function insertFollowingDoc(followee: User, follower: User) {
// Publish follow event
if (Users.isLocalUser(follower)) {
- Users.pack(followee, follower, {
+ Users.pack(followee.id, follower, {
detail: true
}).then(packed => {
publishUserEvent(follower.id, 'follow', packed);
@@ -96,7 +96,7 @@ export async function insertFollowingDoc(followee: User, follower: User) {
// Publish followed event
if (Users.isLocalUser(followee)) {
- Users.pack(follower, followee).then(packed => publishMainStream(followee.id, 'followed', packed));
+ Users.pack(follower.id, followee).then(packed => publishMainStream(followee.id, 'followed', packed));
// 通知を作成
createNotification(followee.id, 'follow', {
@@ -105,7 +105,12 @@ export async function insertFollowingDoc(followee: User, follower: User) {
}
}
-export default async function(follower: User, followee: User, requestId?: string) {
+export default async function(_follower: { id: User['id'] }, _followee: { id: User['id'] }, requestId?: string) {
+ const [follower, followee] = await Promise.all([
+ Users.findOneOrFail(_follower.id),
+ Users.findOneOrFail(_followee.id)
+ ]);
+
// check blocking
const [blocking, blocked] = await Promise.all([
Blockings.findOne({
diff --git a/src/services/following/delete.ts b/src/services/following/delete.ts
index 32c47ea7f4..d0df0de6ae 100644
--- a/src/services/following/delete.ts
+++ b/src/services/following/delete.ts
@@ -11,7 +11,7 @@ import { instanceChart, perUserFollowingChart } from '../chart';
const logger = new Logger('following/delete');
-export default async function(follower: User, followee: User, silent = false) {
+export default async function(follower: { id: User['id']; host: User['host']; uri: User['host']; inbox: User['inbox']; sharedInbox: User['sharedInbox']; }, followee: { id: User['id']; host: User['host']; uri: User['host']; inbox: User['inbox']; sharedInbox: User['sharedInbox']; }, silent = false) {
const following = await Followings.findOne({
followerId: follower.id,
followeeId: followee.id
@@ -28,7 +28,7 @@ export default async function(follower: User, followee: User, silent = false) {
// Publish unfollow event
if (!silent && Users.isLocalUser(follower)) {
- Users.pack(followee, follower, {
+ Users.pack(followee.id, follower, {
detail: true
}).then(packed => {
publishUserEvent(follower.id, 'unfollow', packed);
@@ -42,7 +42,7 @@ export default async function(follower: User, followee: User, silent = false) {
}
}
-export async function decrementFollowing(follower: User, followee: User) {
+export async function decrementFollowing(follower: { id: User['id']; host: User['host']; }, followee: { id: User['id']; host: User['host']; }) {
//#region Decrement following count
Users.decrement({ id: follower.id }, 'followingCount', 1);
//#endregion
diff --git a/src/services/following/requests/accept-all.ts b/src/services/following/requests/accept-all.ts
index da39965349..5fc70fcf1b 100644
--- a/src/services/following/requests/accept-all.ts
+++ b/src/services/following/requests/accept-all.ts
@@ -6,7 +6,7 @@ import { FollowRequests, Users } from '../../../models';
* 指定したユーザー宛てのフォローリクエストをすべて承認
* @param user ユーザー
*/
-export default async function(user: User) {
+export default async function(user: { id: User['id']; host: User['host']; uri: User['host']; inbox: User['inbox']; sharedInbox: User['sharedInbox']; }) {
const requests = await FollowRequests.find({
followeeId: user.id
});
diff --git a/src/services/following/requests/accept.ts b/src/services/following/requests/accept.ts
index 6a072126b5..4277a1a1e9 100644
--- a/src/services/following/requests/accept.ts
+++ b/src/services/following/requests/accept.ts
@@ -6,9 +6,9 @@ import { publishMainStream } from '../../stream';
import { insertFollowingDoc } from '../create';
import { User, ILocalUser } from '../../../models/entities/user';
import { FollowRequests, Users } from '../../../models';
-import { IdentifiableError } from '../../../misc/identifiable-error';
+import { IdentifiableError } from '@/misc/identifiable-error';
-export default async function(followee: User, follower: User) {
+export default async function(followee: { id: User['id']; host: User['host']; uri: User['host']; inbox: User['inbox']; sharedInbox: User['sharedInbox']; }, follower: User) {
const request = await FollowRequests.findOne({
followeeId: followee.id,
followerId: follower.id
@@ -20,12 +20,12 @@ export default async function(followee: User, follower: User) {
await insertFollowingDoc(followee, follower);
- if (Users.isRemoteUser(follower)) {
- const content = renderActivity(renderAccept(renderFollow(follower, followee, request.requestId!), followee as ILocalUser));
- deliver(followee as ILocalUser, content, follower.inbox);
+ if (Users.isRemoteUser(follower) && Users.isLocalUser(followee)) {
+ const content = renderActivity(renderAccept(renderFollow(follower, followee, request.requestId!), followee));
+ deliver(followee, content, follower.inbox);
}
- Users.pack(followee, followee, {
+ Users.pack(followee.id, followee, {
detail: true
}).then(packed => publishMainStream(followee.id, 'meUpdated', packed));
}
diff --git a/src/services/following/requests/cancel.ts b/src/services/following/requests/cancel.ts
index 98fec5d331..53c20088ca 100644
--- a/src/services/following/requests/cancel.ts
+++ b/src/services/following/requests/cancel.ts
@@ -3,14 +3,17 @@ import renderFollow from '../../../remote/activitypub/renderer/follow';
import renderUndo from '../../../remote/activitypub/renderer/undo';
import { deliver } from '../../../queue';
import { publishMainStream } from '../../stream';
-import { IdentifiableError } from '../../../misc/identifiable-error';
+import { IdentifiableError } from '@/misc/identifiable-error';
import { User, ILocalUser } from '../../../models/entities/user';
import { Users, FollowRequests } from '../../../models';
-export default async function(followee: User, follower: User) {
+export default async function(followee: { id: User['id']; host: User['host']; uri: User['host']; inbox: User['inbox'] }, follower: { id: User['id']; host: User['host']; uri: User['host'] }) {
if (Users.isRemoteUser(followee)) {
const content = renderActivity(renderUndo(renderFollow(follower, followee), follower));
- deliver(follower as ILocalUser, content, followee.inbox);
+
+ if (Users.isLocalUser(follower)) { // 本来このチェックは不要だけどTSに怒られるので
+ deliver(follower, content, followee.inbox);
+ }
}
const request = await FollowRequests.findOne({
@@ -27,7 +30,7 @@ export default async function(followee: User, follower: User) {
followerId: follower.id
});
- Users.pack(followee, followee, {
+ Users.pack(followee.id, followee, {
detail: true
}).then(packed => publishMainStream(followee.id, 'meUpdated', packed));
}
diff --git a/src/services/following/requests/create.ts b/src/services/following/requests/create.ts
index deaeedb9a8..584591b003 100644
--- a/src/services/following/requests/create.ts
+++ b/src/services/following/requests/create.ts
@@ -4,10 +4,10 @@ import renderFollow from '../../../remote/activitypub/renderer/follow';
import { deliver } from '../../../queue';
import { User } from '../../../models/entities/user';
import { Blockings, FollowRequests, Users } from '../../../models';
-import { genId } from '../../../misc/gen-id';
+import { genId } from '@/misc/gen-id';
import { createNotification } from '../../create-notification';
-export default async function(follower: User, followee: User, requestId?: string) {
+export default async function(follower: { id: User['id']; host: User['host']; uri: User['host']; inbox: User['inbox']; sharedInbox: User['sharedInbox']; }, followee: { id: User['id']; host: User['host']; uri: User['host']; inbox: User['inbox']; sharedInbox: User['sharedInbox']; }, requestId?: string) {
if (follower.id === followee.id) return;
// check blocking
@@ -43,9 +43,9 @@ export default async function(follower: User, followee: User, requestId?: string
// Publish receiveRequest event
if (Users.isLocalUser(followee)) {
- Users.pack(follower, followee).then(packed => publishMainStream(followee.id, 'receiveFollowRequest', packed));
+ Users.pack(follower.id, followee).then(packed => publishMainStream(followee.id, 'receiveFollowRequest', packed));
- Users.pack(followee, followee, {
+ Users.pack(followee.id, followee, {
detail: true
}).then(packed => publishMainStream(followee.id, 'meUpdated', packed));
diff --git a/src/services/following/requests/reject.ts b/src/services/following/requests/reject.ts
index d8d3788088..45effc5802 100644
--- a/src/services/following/requests/reject.ts
+++ b/src/services/following/requests/reject.ts
@@ -7,15 +7,15 @@ import { User, ILocalUser } from '../../../models/entities/user';
import { Users, FollowRequests, Followings } from '../../../models';
import { decrementFollowing } from '../delete';
-export default async function(followee: User, follower: User) {
- if (Users.isRemoteUser(follower)) {
+export default async function(followee: { id: User['id']; host: User['host']; uri: User['host'] }, follower: User) {
+ if (Users.isRemoteUser(follower) && Users.isLocalUser(followee)) {
const request = await FollowRequests.findOne({
followeeId: followee.id,
followerId: follower.id
});
- const content = renderActivity(renderReject(renderFollow(follower, followee, request!.requestId!), followee as ILocalUser));
- deliver(followee as ILocalUser, content, follower.inbox);
+ const content = renderActivity(renderReject(renderFollow(follower, followee, request!.requestId!), followee));
+ deliver(followee, content, follower.inbox);
}
const request = await FollowRequests.findOne({
@@ -37,7 +37,7 @@ export default async function(followee: User, follower: User) {
}
}
- Users.pack(followee, follower, {
+ Users.pack(followee.id, follower, {
detail: true
}).then(packed => {
publishUserEvent(follower.id, 'unfollow', packed);
diff --git a/src/services/i/pin.ts b/src/services/i/pin.ts
index f727a10fb6..e3a73b5b98 100644
--- a/src/services/i/pin.ts
+++ b/src/services/i/pin.ts
@@ -1,13 +1,13 @@
-import config from '../../config';
+import config from '@/config';
import renderAdd from '../../remote/activitypub/renderer/add';
import renderRemove from '../../remote/activitypub/renderer/remove';
import { renderActivity } from '../../remote/activitypub/renderer';
-import { IdentifiableError } from '../../misc/identifiable-error';
+import { IdentifiableError } from '@/misc/identifiable-error';
import { User } from '../../models/entities/user';
import { Note } from '../../models/entities/note';
import { Notes, UserNotePinings, Users } from '../../models';
import { UserNotePining } from '../../models/entities/user-note-pining';
-import { genId } from '../../misc/gen-id';
+import { genId } from '@/misc/gen-id';
import { deliverToFollowers } from '../../remote/activitypub/deliver-manager';
import { deliverToRelays } from '../relay';
@@ -16,7 +16,7 @@ import { deliverToRelays } from '../relay';
* @param user
* @param noteId
*/
-export async function addPinned(user: User, noteId: Note['id']) {
+export async function addPinned(user: { id: User['id']; host: User['host']; }, noteId: Note['id']) {
// Fetch pinee
const note = await Notes.findOne({
id: noteId,
@@ -55,7 +55,7 @@ export async function addPinned(user: User, noteId: Note['id']) {
* @param user
* @param noteId
*/
-export async function removePinned(user: User, noteId: Note['id']) {
+export async function removePinned(user: { id: User['id']; host: User['host']; }, noteId: Note['id']) {
// Fetch unpinee
const note = await Notes.findOne({
id: noteId,
diff --git a/src/services/insert-moderation-log.ts b/src/services/insert-moderation-log.ts
index 87587d3bed..8ba64fa34b 100644
--- a/src/services/insert-moderation-log.ts
+++ b/src/services/insert-moderation-log.ts
@@ -1,8 +1,8 @@
-import { ILocalUser } from '../models/entities/user';
import { ModerationLogs } from '../models';
-import { genId } from '../misc/gen-id';
+import { genId } from '@/misc/gen-id';
+import { User } from '@/models/entities/user';
-export async function insertModerationLog(moderator: ILocalUser, type: string, info?: Record<string, any>) {
+export async function insertModerationLog(moderator: { id: User['id'] }, type: string, info?: Record<string, any>) {
await ModerationLogs.insert({
id: genId(),
createdAt: new Date(),
diff --git a/src/services/instance-actor.ts b/src/services/instance-actor.ts
index 74591846fa..9b9c746061 100644
--- a/src/services/instance-actor.ts
+++ b/src/services/instance-actor.ts
@@ -1,17 +1,27 @@
import { createSystemUser } from './create-system-user';
import { ILocalUser } from '../models/entities/user';
import { Users } from '../models';
+import { Cache } from '@/misc/cache';
const ACTOR_USERNAME = 'instance.actor' as const;
+const cache = new Cache<ILocalUser>(Infinity);
+
export async function getInstanceActor(): Promise<ILocalUser> {
+ const cached = cache.get(null);
+ if (cached) return cached;
+
const user = await Users.findOne({
host: null,
username: ACTOR_USERNAME
- });
-
- if (user) return user as ILocalUser;
+ }) as ILocalUser | undefined;
- const created = await createSystemUser(ACTOR_USERNAME);
- return created as ILocalUser;
+ if (user) {
+ cache.set(null, user);
+ return user;
+ } else {
+ const created = await createSystemUser(ACTOR_USERNAME) as ILocalUser;
+ cache.set(null, created);
+ return created;
+ }
}
diff --git a/src/services/logger.ts b/src/services/logger.ts
index c7483d3faa..de62b3aca9 100644
--- a/src/services/logger.ts
+++ b/src/services/logger.ts
@@ -5,8 +5,8 @@ import * as dateformat from 'dateformat';
import { program } from '../argv';
import { getRepository } from 'typeorm';
import { Log } from '../models/entities/log';
-import { genId } from '../misc/gen-id';
-import config from '../config';
+import { genId } from '@/misc/gen-id';
+import config from '@/config';
const SyslogPro = require('syslog-pro');
diff --git a/src/services/messages/create.ts b/src/services/messages/create.ts
index 413266d029..f84729cdeb 100644
--- a/src/services/messages/create.ts
+++ b/src/services/messages/create.ts
@@ -2,7 +2,7 @@ import { User } from '../../models/entities/user';
import { UserGroup } from '../../models/entities/user-group';
import { DriveFile } from '../../models/entities/drive-file';
import { MessagingMessages, UserGroupJoinings, Mutings, Users } from '../../models';
-import { genId } from '../../misc/gen-id';
+import { genId } from '@/misc/gen-id';
import { MessagingMessage } from '../../models/entities/messaging-message';
import { publishMessagingStream, publishMessagingIndexStream, publishMainStream, publishGroupMessagingStream } from '../stream';
import pushNotification from '../push-notification';
@@ -13,7 +13,7 @@ import renderCreate from '../../remote/activitypub/renderer/create';
import { renderActivity } from '../../remote/activitypub/renderer';
import { deliver } from '../../queue';
-export async function createMessage(user: User, recipientUser: User | undefined, recipientGroup: UserGroup | undefined, text: string | undefined, file: DriveFile | null, uri?: string) {
+export async function createMessage(user: { id: User['id']; host: User['host']; }, recipientUser: User | undefined, recipientGroup: UserGroup | undefined, text: string | undefined, file: DriveFile | null, uri?: string) {
const message = {
id: genId(),
createdAt: new Date(),
diff --git a/src/services/messages/delete.ts b/src/services/messages/delete.ts
index c94a7b67db..522815e554 100644
--- a/src/services/messages/delete.ts
+++ b/src/services/messages/delete.ts
@@ -1,4 +1,4 @@
-import config from '../../config';
+import config from '@/config';
import { MessagingMessages, Users } from '../../models';
import { MessagingMessage } from '../../models/entities/messaging-message';
import { publishGroupMessagingStream, publishMessagingStream } from '../stream';
diff --git a/src/services/note/create.ts b/src/services/note/create.ts
index 4a737e8516..64d5513ecc 100644
--- a/src/services/note/create.ts
+++ b/src/services/note/create.ts
@@ -7,44 +7,45 @@ import renderAnnounce from '../../remote/activitypub/renderer/announce';
import { renderActivity } from '../../remote/activitypub/renderer';
import { parse } from '../../mfm/parse';
import { resolveUser } from '../../remote/resolve-user';
-import config from '../../config';
+import config from '@/config';
import { updateHashtags } from '../update-hashtag';
import { concat } from '../../prelude/array';
import insertNoteUnread from './unread';
import { registerOrFetchInstanceDoc } from '../register-or-fetch-instance-doc';
-import extractMentions from '../../misc/extract-mentions';
-import extractEmojis from '../../misc/extract-emojis';
-import extractHashtags from '../../misc/extract-hashtags';
+import extractMentions from '@/misc/extract-mentions';
+import extractEmojis from '@/misc/extract-emojis';
+import extractHashtags from '@/misc/extract-hashtags';
import { Note, IMentionedRemoteUsers } from '../../models/entities/note';
import { Mutings, Users, NoteWatchings, Notes, Instances, UserProfiles, Antennas, Followings, MutedNotes, Channels, ChannelFollowings } from '../../models';
import { DriveFile } from '../../models/entities/drive-file';
import { App } from '../../models/entities/app';
import { Not, getConnection, In } from 'typeorm';
import { User, ILocalUser, IRemoteUser } from '../../models/entities/user';
-import { genId } from '../../misc/gen-id';
+import { genId } from '@/misc/gen-id';
import { notesChart, perUserNotesChart, activeUsersChart, instanceChart } from '../chart';
import { Poll, IPoll } from '../../models/entities/poll';
import { createNotification } from '../create-notification';
-import { isDuplicateKeyValueError } from '../../misc/is-duplicate-key-value-error';
-import { checkHitAntenna } from '../../misc/check-hit-antenna';
-import { checkWordMute } from '../../misc/check-word-mute';
+import { isDuplicateKeyValueError } from '@/misc/is-duplicate-key-value-error';
+import { checkHitAntenna } from '@/misc/check-hit-antenna';
+import { checkWordMute } from '@/misc/check-word-mute';
import { addNoteToAntenna } from '../add-note-to-antenna';
-import { countSameRenotes } from '../../misc/count-same-renotes';
+import { countSameRenotes } from '@/misc/count-same-renotes';
import { deliverToRelays } from '../relay';
import { Channel } from '../../models/entities/channel';
-import { normalizeForSearch } from '../../misc/normalize-for-search';
+import { normalizeForSearch } from '@/misc/normalize-for-search';
+import { getAntennas } from '@/misc/antenna-cache';
type NotificationType = 'reply' | 'renote' | 'quote' | 'mention';
class NotificationManager {
- private notifier: User;
+ private notifier: { id: User['id']; };
private note: Note;
private queue: {
target: ILocalUser['id'];
reason: NotificationType;
}[];
- constructor(notifier: User, note: Note) {
+ constructor(notifier: { id: User['id']; }, note: Note) {
this.notifier = notifier;
this.note = note;
this.queue = [];
@@ -111,7 +112,7 @@ type Option = {
app?: App | null;
};
-export default async (user: User, data: Option, silent = false) => new Promise<Note>(async (res, rej) => {
+export default async (user: { id: User['id']; username: User['username']; host: User['host']; isSilenced: User['isSilenced']; }, data: Option, silent = false) => new Promise<Note>(async (res, rej) => {
// チャンネル外にリプライしたら対象のスコープに合わせる
// (クライアントサイドでやっても良い処理だと思うけどとりあえずサーバーサイドで)
if (data.reply && data.channel && data.reply.channelId !== data.channel.id) {
@@ -241,6 +242,7 @@ export default async (user: User, data: Option, silent = false) => new Promise<N
incNotesCountOfUser(user);
// Word mute
+ // TODO: cache
UserProfiles.find({
enableWordMute: true
}).then(us => {
@@ -262,17 +264,15 @@ export default async (user: User, data: Option, silent = false) => new Promise<N
Followings.createQueryBuilder('following')
.andWhere(`following.followeeId = :userId`, { userId: note.userId })
.getMany()
- .then(followings => {
+ .then(async followings => {
const followers = followings.map(f => f.followerId);
- Antennas.find().then(async antennas => {
- for (const antenna of antennas) {
- checkHitAntenna(antenna, note, user, followers).then(hit => {
- if (hit) {
- addNoteToAntenna(antenna, note, user);
- }
- });
- }
- });
+ for (const antenna of (await getAntennas())) {
+ checkHitAntenna(antenna, note, user, followers).then(hit => {
+ if (hit) {
+ addNoteToAntenna(antenna, note, user);
+ }
+ });
+ }
});
// Channel
@@ -328,10 +328,6 @@ export default async (user: User, data: Option, silent = false) => new Promise<N
// Pack the note
const noteObj = await Notes.pack(note);
- if (user.notesCount === 0) {
- (noteObj as any).isFirstNote = true;
- }
-
publishNotesStream(noteObj);
const nm = new NotificationManager(user, note);
@@ -424,7 +420,7 @@ export default async (user: User, data: Option, silent = false) => new Promise<N
// この処理が行われるのはノート作成後なので、ノートが一つしかなかったら最初の投稿だと判断できる
// TODO: とはいえノートを削除して何回も投稿すればその分だけインクリメントされる雑さもあるのでどうにかしたい
if (count === 1) {
- Channels.increment({ id: data.channel.id }, 'usersCount', 1);
+ Channels.increment({ id: data.channel!.id }, 'usersCount', 1);
}
});
}
@@ -453,7 +449,7 @@ function incRenoteCount(renote: Note) {
.execute();
}
-async function insertNote(user: User, data: Option, tags: string[], emojis: string[], mentionedUsers: User[]) {
+async function insertNote(user: { id: User['id']; host: User['host']; }, data: Option, tags: string[], emojis: string[], mentionedUsers: User[]) {
const insert = new Note({
id: genId(data.createdAt!),
createdAt: data.createdAt!,
@@ -559,7 +555,7 @@ function index(note: Note) {
});
}
-async function notifyToWatchersOfRenotee(renote: Note, user: User, nm: NotificationManager, type: NotificationType) {
+async function notifyToWatchersOfRenotee(renote: Note, user: { id: User['id']; }, nm: NotificationManager, type: NotificationType) {
const watchers = await NoteWatchings.find({
noteId: renote.id,
userId: Not(user.id)
@@ -570,7 +566,7 @@ async function notifyToWatchersOfRenotee(renote: Note, user: User, nm: Notificat
}
}
-async function notifyToWatchersOfReplyee(reply: Note, user: User, nm: NotificationManager) {
+async function notifyToWatchersOfReplyee(reply: Note, user: { id: User['id']; }, nm: NotificationManager) {
const watchers = await NoteWatchings.find({
noteId: reply.id,
userId: Not(user.id)
@@ -598,7 +594,7 @@ function saveReply(reply: Note, note: Note) {
Notes.increment({ id: reply.id }, 'repliesCount', 1);
}
-function incNotesCountOfUser(user: User) {
+function incNotesCountOfUser(user: { id: User['id']; }) {
Users.createQueryBuilder().update()
.set({
updatedAt: new Date(),
@@ -608,7 +604,7 @@ function incNotesCountOfUser(user: User) {
.execute();
}
-async function extractMentionedUsers(user: User, tokens: ReturnType<typeof parse>): Promise<User[]> {
+async function extractMentionedUsers(user: { host: User['host']; }, tokens: ReturnType<typeof parse>): Promise<User[]> {
if (tokens == null) return [];
const mentions = extractMentions(tokens);
diff --git a/src/services/note/delete.ts b/src/services/note/delete.ts
index 5526302602..3f4f8b404c 100644
--- a/src/services/note/delete.ts
+++ b/src/services/note/delete.ts
@@ -4,14 +4,14 @@ import renderAnnounce from '../../remote/activitypub/renderer/announce';
import renderUndo from '../../remote/activitypub/renderer/undo';
import { renderActivity } from '../../remote/activitypub/renderer';
import renderTombstone from '../../remote/activitypub/renderer/tombstone';
-import config from '../../config';
+import config from '@/config';
import { registerOrFetchInstanceDoc } from '../register-or-fetch-instance-doc';
import { User, ILocalUser, IRemoteUser } from '../../models/entities/user';
import { Note, IMentionedRemoteUsers } from '../../models/entities/note';
import { Notes, Users, Instances } from '../../models';
import { notesChart, perUserNotesChart, instanceChart } from '../chart';
import { deliverToFollowers, deliverToUser } from '../../remote/activitypub/deliver-manager';
-import { countSameRenotes } from '../../misc/count-same-renotes';
+import { countSameRenotes } from '@/misc/count-same-renotes';
import { deliverToRelays } from '../relay';
import { Brackets, In } from 'typeorm';
diff --git a/src/services/note/polls/vote.ts b/src/services/note/polls/vote.ts
index b4ce03ab60..aea157e558 100644
--- a/src/services/note/polls/vote.ts
+++ b/src/services/note/polls/vote.ts
@@ -3,7 +3,7 @@ import { User } from '../../../models/entities/user';
import { Note } from '../../../models/entities/note';
import { PollVotes, NoteWatchings, Polls } from '../../../models';
import { Not } from 'typeorm';
-import { genId } from '../../../misc/gen-id';
+import { genId } from '@/misc/gen-id';
import { createNotification } from '../../create-notification';
export default async function(user: User, note: Note, choice: number) {
diff --git a/src/services/note/reaction/create.ts b/src/services/note/reaction/create.ts
index 181099cc2d..e2e7fc54ef 100644
--- a/src/services/note/reaction/create.ts
+++ b/src/services/note/reaction/create.ts
@@ -2,19 +2,19 @@ import { publishNoteStream } from '../../stream';
import { renderLike } from '../../../remote/activitypub/renderer/like';
import DeliverManager from '../../../remote/activitypub/deliver-manager';
import { renderActivity } from '../../../remote/activitypub/renderer';
-import { toDbReaction, decodeReaction } from '../../../misc/reaction-lib';
+import { toDbReaction, decodeReaction } from '@/misc/reaction-lib';
import { User, IRemoteUser } from '../../../models/entities/user';
import { Note } from '../../../models/entities/note';
import { NoteReactions, Users, NoteWatchings, Notes, Emojis } from '../../../models';
import { Not } from 'typeorm';
import { perUserReactionsChart } from '../../chart';
-import { genId } from '../../../misc/gen-id';
+import { genId } from '@/misc/gen-id';
import { createNotification } from '../../create-notification';
import deleteReaction from './delete';
-import { isDuplicateKeyValueError } from '../../../misc/is-duplicate-key-value-error';
+import { isDuplicateKeyValueError } from '@/misc/is-duplicate-key-value-error';
import { NoteReaction } from '../../../models/entities/note-reaction';
-export default async (user: User, note: Note, reaction?: string) => {
+export default async (user: { id: User['id']; host: User['host']; }, note: Note, reaction?: string) => {
// TODO: cache
reaction = await toDbReaction(reaction, user.host);
diff --git a/src/services/note/reaction/delete.ts b/src/services/note/reaction/delete.ts
index 8d2f0682ca..712031fa88 100644
--- a/src/services/note/reaction/delete.ts
+++ b/src/services/note/reaction/delete.ts
@@ -3,13 +3,13 @@ import { renderLike } from '../../../remote/activitypub/renderer/like';
import renderUndo from '../../../remote/activitypub/renderer/undo';
import { renderActivity } from '../../../remote/activitypub/renderer';
import DeliverManager from '../../../remote/activitypub/deliver-manager';
-import { IdentifiableError } from '../../../misc/identifiable-error';
+import { IdentifiableError } from '@/misc/identifiable-error';
import { User, IRemoteUser } from '../../../models/entities/user';
import { Note } from '../../../models/entities/note';
import { NoteReactions, Users, Notes } from '../../../models';
-import { decodeReaction } from '../../../misc/reaction-lib';
+import { decodeReaction } from '@/misc/reaction-lib';
-export default async (user: User, note: Note) => {
+export default async (user: { id: User['id']; host: User['host']; }, note: Note) => {
// if already unreacted
const exist = await NoteReactions.findOne({
noteId: note.id,
diff --git a/src/services/note/read.ts b/src/services/note/read.ts
index 35279db411..2bdb859476 100644
--- a/src/services/note/read.ts
+++ b/src/services/note/read.ts
@@ -1,23 +1,72 @@
import { publishMainStream } from '../stream';
import { Note } from '../../models/entities/note';
import { User } from '../../models/entities/user';
-import { NoteUnreads, Antennas, AntennaNotes, Users } from '../../models';
+import { NoteUnreads, AntennaNotes, Users, Followings, ChannelFollowings } from '../../models';
import { Not, IsNull, In } from 'typeorm';
+import { Channel } from '../../models/entities/channel';
+import { checkHitAntenna } from '@/misc/check-hit-antenna';
+import { getAntennas } from '@/misc/antenna-cache';
+import { PackedNote } from '../../models/repositories/note';
/**
* Mark notes as read
*/
export default async function(
userId: User['id'],
- noteIds: Note['id'][]
+ notes: (Note | PackedNote)[],
+ info?: {
+ following: Set<User['id']>;
+ followingChannels: Set<Channel['id']>;
+ }
) {
- async function careNoteUnreads() {
+ const following = info?.following ? info.following : new Set<string>((await Followings.find({
+ where: {
+ followerId: userId
+ },
+ select: ['followeeId']
+ })).map(x => x.followeeId));
+ const followingChannels = info?.followingChannels ? info.followingChannels : new Set<string>((await ChannelFollowings.find({
+ where: {
+ followerId: userId
+ },
+ select: ['followeeId']
+ })).map(x => x.followeeId));
+
+ const myAntennas = (await getAntennas()).filter(a => a.userId === userId);
+ const readMentions: (Note | PackedNote)[] = [];
+ const readSpecifiedNotes: (Note | PackedNote)[] = [];
+ const readChannelNotes: (Note | PackedNote)[] = [];
+ const readAntennaNotes: (Note | PackedNote)[] = [];
+
+ for (const note of notes) {
+ if (note.mentions && note.mentions.includes(userId)) {
+ readMentions.push(note);
+ } else if (note.visibleUserIds && note.visibleUserIds.includes(userId)) {
+ readSpecifiedNotes.push(note);
+ }
+
+ if (note.channelId && followingChannels.has(note.channelId)) {
+ readChannelNotes.push(note);
+ }
+
+ if (note.user != null) { // たぶんnullになることは無いはずだけど一応
+ for (const antenna of myAntennas) {
+ if (checkHitAntenna(antenna, note, note.user as any, undefined, Array.from(following))) {
+ readAntennaNotes.push(note);
+ }
+ }
+ }
+ }
+
+ if ((readMentions.length > 0) || (readSpecifiedNotes.length > 0) || (readChannelNotes.length > 0)) {
// Remove the record
await NoteUnreads.delete({
userId: userId,
- noteId: In(noteIds),
+ noteId: In([...readMentions.map(n => n.id), ...readSpecifiedNotes.map(n => n.id), ...readChannelNotes.map(n => n.id)]),
});
+ // TODO: ↓まとめてクエリしたい
+
NoteUnreads.count({
userId: userId,
isMentioned: true
@@ -49,33 +98,25 @@ export default async function(
});
}
- async function careAntenna() {
- const antennas = await Antennas.find({ userId });
-
- await Promise.all(antennas.map(async antenna => {
- const countBefore = await AntennaNotes.count({
- antennaId: antenna.id,
- read: false
- });
-
- if (countBefore === 0) return;
-
- await AntennaNotes.update({
- antennaId: antenna.id,
- noteId: In(noteIds)
- }, {
- read: true
- });
+ if (readAntennaNotes.length > 0) {
+ await AntennaNotes.update({
+ antennaId: In(myAntennas.map(a => a.id)),
+ noteId: In(readAntennaNotes.map(n => n.id))
+ }, {
+ read: true
+ });
- const countAfter = await AntennaNotes.count({
+ // TODO: まとめてクエリしたい
+ for (const antenna of myAntennas) {
+ const count = await AntennaNotes.count({
antennaId: antenna.id,
read: false
});
- if (countAfter === 0) {
+ if (count === 0) {
publishMainStream(userId, 'readAntenna', antenna);
}
- }));
+ }
Users.getHasUnreadAntenna(userId).then(unread => {
if (!unread) {
@@ -83,7 +124,4 @@ export default async function(
}
});
}
-
- careNoteUnreads();
- careAntenna();
}
diff --git a/src/services/note/unread.ts b/src/services/note/unread.ts
index 8e6fb4abe8..5cfba0f342 100644
--- a/src/services/note/unread.ts
+++ b/src/services/note/unread.ts
@@ -2,7 +2,7 @@ import { Note } from '../../models/entities/note';
import { publishMainStream } from '../stream';
import { User } from '../../models/entities/user';
import { Mutings, NoteUnreads } from '../../models';
-import { genId } from '../../misc/gen-id';
+import { genId } from '@/misc/gen-id';
export default async function(userId: User['id'], note: Note, params: {
// NOTE: isSpecifiedがtrueならisMentionedは必ずfalse
diff --git a/src/services/note/watch.ts b/src/services/note/watch.ts
index 966b7f0054..e333f04286 100644
--- a/src/services/note/watch.ts
+++ b/src/services/note/watch.ts
@@ -1,7 +1,7 @@
import { User } from '../../models/entities/user';
import { Note } from '../../models/entities/note';
import { NoteWatchings } from '../../models';
-import { genId } from '../../misc/gen-id';
+import { genId } from '@/misc/gen-id';
import { NoteWatching } from '../../models/entities/note-watching';
export default async (me: User['id'], note: Note) => {
diff --git a/src/services/push-notification.ts b/src/services/push-notification.ts
index d0a0c04d62..6c0b77c31f 100644
--- a/src/services/push-notification.ts
+++ b/src/services/push-notification.ts
@@ -1,7 +1,7 @@
import * as push from 'web-push';
-import config from '../config';
+import config from '@/config';
import { SwSubscriptions } from '../models';
-import { fetchMeta } from '../misc/fetch-meta';
+import { fetchMeta } from '@/misc/fetch-meta';
import { PackedNotification } from '../models/repositories/notification';
import { PackedMessagingMessage } from '../models/repositories/messaging-message';
diff --git a/src/services/register-or-fetch-instance-doc.ts b/src/services/register-or-fetch-instance-doc.ts
index 2c39502288..2edf85fd9f 100644
--- a/src/services/register-or-fetch-instance-doc.ts
+++ b/src/services/register-or-fetch-instance-doc.ts
@@ -1,9 +1,9 @@
import { Instance } from '../models/entities/instance';
import { Instances } from '../models';
import { federationChart } from './chart';
-import { genId } from '../misc/gen-id';
-import { toPuny } from '../misc/convert-host';
-import { Cache } from '../misc/cache';
+import { genId } from '@/misc/gen-id';
+import { toPuny } from '@/misc/convert-host';
+import { Cache } from '@/misc/cache';
const cache = new Cache<Instance>(1000 * 60 * 60);
diff --git a/src/services/relay.ts b/src/services/relay.ts
index 0eb3bb41a1..a2cc711bd3 100644
--- a/src/services/relay.ts
+++ b/src/services/relay.ts
@@ -3,9 +3,9 @@ import { renderFollowRelay } from '../remote/activitypub/renderer/follow-relay';
import { renderActivity, attachLdSignature } from '../remote/activitypub/renderer';
import renderUndo from '../remote/activitypub/renderer/undo';
import { deliver } from '../queue';
-import { ILocalUser } from '../models/entities/user';
+import { ILocalUser, User } from '../models/entities/user';
import { Users, Relays } from '../models';
-import { genId } from '../misc/gen-id';
+import { genId } from '@/misc/gen-id';
const ACTOR_USERNAME = 'relay.actor' as const;
@@ -75,7 +75,7 @@ export async function relayRejected(id: string) {
return JSON.stringify(result);
}
-export async function deliverToRelays(user: ILocalUser, activity: any) {
+export async function deliverToRelays(user: { id: User['id']; host: null; }, activity: any) {
if (activity == null) return;
const relays = await Relays.find({
diff --git a/src/services/send-email-notification.ts b/src/services/send-email-notification.ts
index 7579d5b674..08cd04289b 100644
--- a/src/services/send-email-notification.ts
+++ b/src/services/send-email-notification.ts
@@ -2,7 +2,7 @@ import { UserProfiles } from '../models';
import { User } from '../models/entities/user';
import { sendEmail } from './send-email';
import * as locales from '../../locales/';
-import { I18n } from '../misc/i18n';
+import { I18n } from '@/misc/i18n';
// TODO: locale ファイルをクライアント用とサーバー用で分けたい
diff --git a/src/services/send-email.ts b/src/services/send-email.ts
index 4814808392..4784ba5510 100644
--- a/src/services/send-email.ts
+++ b/src/services/send-email.ts
@@ -1,7 +1,7 @@
import * as nodemailer from 'nodemailer';
-import { fetchMeta } from '../misc/fetch-meta';
+import { fetchMeta } from '@/misc/fetch-meta';
import Logger from './logger';
-import config from '../config';
+import config from '@/config';
export const logger = new Logger('email');
diff --git a/src/services/stream.ts b/src/services/stream.ts
index 75385847ce..6258dc5a7d 100644
--- a/src/services/stream.ts
+++ b/src/services/stream.ts
@@ -1,10 +1,10 @@
-import redis from '../db/redis';
+import { redisClient } from '../db/redis';
import { User } from '../models/entities/user';
import { Note } from '../models/entities/note';
import { UserList } from '../models/entities/user-list';
import { ReversiGame } from '../models/entities/games/reversi/game';
import { UserGroup } from '../models/entities/user-group';
-import config from '../config';
+import config from '@/config';
import { Antenna } from '../models/entities/antenna';
import { Channel } from '../models/entities/channel';
@@ -14,12 +14,16 @@ class Publisher {
{ type: type, body: null } :
{ type: type, body: value };
- redis.publish(config.host, JSON.stringify({
+ redisClient.publish(config.host, JSON.stringify({
channel: channel,
message: message
}));
}
+ public publishInternalEvent = (type: string, value?: any): void => {
+ this.publish('internal', type, typeof value === 'undefined' ? null : value);
+ }
+
public publishUserEvent = (userId: User['id'], type: string, value?: any): void => {
this.publish(`user:${userId}`, type, typeof value === 'undefined' ? null : value);
}
@@ -88,6 +92,7 @@ const publisher = new Publisher();
export default publisher;
+export const publishInternalEvent = publisher.publishInternalEvent;
export const publishUserEvent = publisher.publishUserEvent;
export const publishBroadcastStream = publisher.publishBroadcastStream;
export const publishMainStream = publisher.publishMainStream;
diff --git a/src/services/suspend-user.ts b/src/services/suspend-user.ts
index a85188acbe..c868c01305 100644
--- a/src/services/suspend-user.ts
+++ b/src/services/suspend-user.ts
@@ -1,12 +1,12 @@
import renderDelete from '../remote/activitypub/renderer/delete';
import { renderActivity } from '../remote/activitypub/renderer';
import { deliver } from '../queue';
-import config from '../config';
+import config from '@/config';
import { User } from '../models/entities/user';
import { Users, Followings } from '../models';
import { Not, IsNull } from 'typeorm';
-export async function doPostSuspend(user: User) {
+export async function doPostSuspend(user: { id: User['id']; host: User['host'] }) {
if (Users.isLocalUser(user)) {
// 知り得る全SharedInboxにDelete配信
const content = renderActivity(renderDelete(`${config.url}/users/${user.id}`, user));
@@ -28,7 +28,7 @@ export async function doPostSuspend(user: User) {
}
for (const inbox of queue) {
- deliver(user as any, content, inbox);
+ deliver(user, content, inbox);
}
}
}
diff --git a/src/services/unsuspend-user.ts b/src/services/unsuspend-user.ts
index 6cab375821..5bc4bba423 100644
--- a/src/services/unsuspend-user.ts
+++ b/src/services/unsuspend-user.ts
@@ -2,7 +2,7 @@ import renderDelete from '../remote/activitypub/renderer/delete';
import renderUndo from '../remote/activitypub/renderer/undo';
import { renderActivity } from '../remote/activitypub/renderer';
import { deliver } from '../queue';
-import config from '../config';
+import config from '@/config';
import { User } from '../models/entities/user';
import { Users, Followings } from '../models';
import { Not, IsNull } from 'typeorm';
diff --git a/src/services/update-hashtag.ts b/src/services/update-hashtag.ts
index 3e22846731..6b7208f005 100644
--- a/src/services/update-hashtag.ts
+++ b/src/services/update-hashtag.ts
@@ -1,11 +1,11 @@
import { User } from '../models/entities/user';
import { Hashtags, Users } from '../models';
import { hashtagChart } from './chart';
-import { genId } from '../misc/gen-id';
+import { genId } from '@/misc/gen-id';
import { Hashtag } from '../models/entities/hashtag';
-import { normalizeForSearch } from '../misc/normalize-for-search';
+import { normalizeForSearch } from '@/misc/normalize-for-search';
-export async function updateHashtags(user: User, tags: string[]) {
+export async function updateHashtags(user: { id: User['id']; host: User['host']; }, tags: string[]) {
for (const tag of tags) {
await updateHashtag(user, tag);
}
@@ -21,7 +21,7 @@ export async function updateUsertags(user: User, tags: string[]) {
}
}
-export async function updateHashtag(user: User, tag: string, isUserAttached = false, inc = true) {
+export async function updateHashtag(user: { id: User['id']; host: User['host']; }, tag: string, isUserAttached = false, inc = true) {
tag = normalizeForSearch(tag);
const index = await Hashtags.findOne({ name: tag });
diff --git a/src/services/user-list/push.ts b/src/services/user-list/push.ts
index ba54c04475..3dd9a8576b 100644
--- a/src/services/user-list/push.ts
+++ b/src/services/user-list/push.ts
@@ -3,8 +3,8 @@ import { User } from '../../models/entities/user';
import { UserList } from '../../models/entities/user-list';
import { UserListJoinings, Users } from '../../models';
import { UserListJoining } from '../../models/entities/user-list-joining';
-import { genId } from '../../misc/gen-id';
-import { fetchProxyAccount } from '../../misc/fetch-proxy-account';
+import { genId } from '@/misc/gen-id';
+import { fetchProxyAccount } from '@/misc/fetch-proxy-account';
import createFollowing from '../following/create';
export async function pushUserToUserList(target: User, list: UserList) {
diff --git a/src/tools/accept-migration.ts b/src/tools/accept-migration.ts
index addce86f1f..0622869398 100644
--- a/src/tools/accept-migration.ts
+++ b/src/tools/accept-migration.ts
@@ -1,7 +1,7 @@
// ex) node built/tools/accept-migration Yo 1000000000001
import { createConnection } from 'typeorm';
-import config from '../config';
+import config from '@/config';
createConnection({
type: 'postgres',
diff --git a/src/tools/add-emoji.ts b/src/tools/add-emoji.ts
index 3745b48889..ca25d1348b 100644
--- a/src/tools/add-emoji.ts
+++ b/src/tools/add-emoji.ts
@@ -1,5 +1,5 @@
import { Emojis } from '../models';
-import { genId } from '../misc/gen-id';
+import { genId } from '@/misc/gen-id';
async function main(name: string, url: string, alias?: string): Promise<any> {
const aliases = alias != null ? [ alias ] : [];
diff --git a/src/tools/resync-remote-user.ts b/src/tools/resync-remote-user.ts
index c9d1ed588c..9897cba9f8 100644
--- a/src/tools/resync-remote-user.ts
+++ b/src/tools/resync-remote-user.ts
@@ -1,4 +1,4 @@
-import parseAcct from '../misc/acct/parse';
+import parseAcct from '@/misc/acct/parse';
import { resolveUser } from '../remote/resolve-user';
async function main(acct: string): Promise<any> {
diff --git a/src/tsconfig.json b/src/tsconfig.json
index 95cb35fc5f..9389008eef 100644
--- a/src/tsconfig.json
+++ b/src/tsconfig.json
@@ -5,7 +5,7 @@
"noImplicitAny": true,
"noImplicitReturns": true,
"noUnusedParameters": false,
- "noUnusedLocals": true,
+ "noUnusedLocals": false,
"noFallthroughCasesInSwitch": true,
"declaration": false,
"sourceMap": true,
@@ -21,6 +21,12 @@
"emitDecoratorMetadata": true,
"resolveJsonModule": true,
"isolatedModules": true,
+ "rootDir": "./",
+ "baseUrl": "./",
+ "paths": {
+ "@/*": ["./*"]
+ },
+ "outDir": "../built",
"typeRoots": [
"../node_modules/@types",
"./@types"