@@ -175,6 +175,10 @@ export default defineComponent({
window.scroll({ top: 0, behavior: 'smooth' });
},
+ back() {
+ history.back();
+ },
+
onTransition() {
if (window._scroll) window._scroll();
},
@@ -253,11 +257,16 @@ export default defineComponent({
//backdrop-filter: var(--blur, blur(4px));
}
+ > .sidebar {
+ border-right: solid 0.5px var(--divider);
+ }
+
> .contents {
width: 100%;
min-width: 0;
--stickyTop: #{$header-height};
padding-top: $header-height;
+ background: var(--panel);
> .header {
position: fixed;
@@ -272,7 +281,7 @@ export default defineComponent({
-webkit-backdrop-filter: var(--blur, blur(32px));
backdrop-filter: var(--blur, blur(32px));
background-color: var(--header);
- //border-bottom: solid 0.5px var(--divider);
+ border-bottom: solid 0.5px var(--divider);
user-select: none;
}
diff --git a/src/client/widgets/job-queue.vue b/src/client/widgets/job-queue.vue
index beb80f7faf..327d8ede6d 100644
--- a/src/client/widgets/job-queue.vue
+++ b/src/client/widgets/job-queue.vue
@@ -50,6 +50,7 @@ import { defineComponent, markRaw } from 'vue';
import define from './define';
import * as os from '@client/os';
import number from '@client/filters/number';
+import * as sound from '@client/scripts/sound';
const widget = define({
name: 'jobQueue',
@@ -58,6 +59,10 @@ const widget = define({
type: 'boolean',
default: false,
},
+ sound: {
+ type: 'boolean',
+ default: false,
+ },
})
});
@@ -79,6 +84,7 @@ export default defineComponent({
delayed: 0,
},
prev: {},
+ sound: sound.setVolume(sound.getAudio('syuilo/queue-jammed'), 1)
};
},
created() {
@@ -107,6 +113,10 @@ export default defineComponent({
this[domain].active = stats[domain].active;
this[domain].waiting = stats[domain].waiting;
this[domain].delayed = stats[domain].delayed;
+
+ if (this[domain].waiting > 0 && this.props.sound && this.sound.paused) {
+ this.sound.play();
+ }
}
},
diff --git a/src/config/load.ts b/src/config/load.ts
index 0929e80414..6a1cf60a41 100644
--- a/src/config/load.ts
+++ b/src/config/load.ts
@@ -3,14 +3,20 @@
*/
import * as fs from 'fs';
+import { fileURLToPath } from 'url';
+import { dirname } from 'path';
import * as yaml from 'js-yaml';
import { Source, Mixin } from './types';
-const meta = require('../meta.json');
+import * as meta from '../meta.json';
+
+//const _filename = fileURLToPath(import.meta.url);
+const _filename = __filename;
+const _dirname = dirname(_filename);
/**
* Path of configuration directory
*/
-const dir = `${__dirname}/../../.config`;
+const dir = `${_dirname}/../../.config`;
/**
* Path of configuration file
diff --git a/src/daemons/janitor.ts b/src/daemons/janitor.ts
index c079086427..72568cfe18 100644
--- a/src/daemons/janitor.ts
+++ b/src/daemons/janitor.ts
@@ -1,7 +1,7 @@
// TODO: 消したい
const interval = 30 * 60 * 1000;
-import { AttestationChallenges } from '../models';
+import { AttestationChallenges } from '@/models/index';
import { LessThan } from 'typeorm';
/**
diff --git a/src/db/elasticsearch.ts b/src/db/elasticsearch.ts
index 58455b510d..c99183007a 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/index';
const index = {
settings: {
diff --git a/src/db/logger.ts b/src/db/logger.ts
index 1f702c18e2..62f90555a0 100644
--- a/src/db/logger.ts
+++ b/src/db/logger.ts
@@ -1,3 +1,3 @@
-import Logger from '../services/logger';
+import Logger from '@/services/logger';
export const dbLogger = new Logger('db');
diff --git a/src/db/postgre.ts b/src/db/postgre.ts
index 3ad81203f2..c963242488 100644
--- a/src/db/postgre.ts
+++ b/src/db/postgre.ts
@@ -3,74 +3,74 @@ const types = require('pg').types;
types.setTypeParser(20, Number);
import { createConnection, Logger, getConnection } from 'typeorm';
-import config from '@/config';
-import { entities as charts } from '../services/chart/entities';
+import config from '@/config/index';
+import { entities as charts } from '@/services/chart/entities';
import { dbLogger } from './logger';
import * as highlight from 'cli-highlight';
-import { Log } from '../models/entities/log';
-import { User } from '../models/entities/user';
-import { DriveFile } from '../models/entities/drive-file';
-import { DriveFolder } from '../models/entities/drive-folder';
-import { AccessToken } from '../models/entities/access-token';
-import { App } from '../models/entities/app';
-import { PollVote } from '../models/entities/poll-vote';
-import { Note } from '../models/entities/note';
-import { NoteReaction } from '../models/entities/note-reaction';
-import { NoteWatching } from '../models/entities/note-watching';
-import { NoteUnread } from '../models/entities/note-unread';
-import { Notification } from '../models/entities/notification';
-import { Meta } from '../models/entities/meta';
-import { Following } from '../models/entities/following';
-import { Instance } from '../models/entities/instance';
-import { Muting } from '../models/entities/muting';
-import { SwSubscription } from '../models/entities/sw-subscription';
-import { Blocking } from '../models/entities/blocking';
-import { UserList } from '../models/entities/user-list';
-import { UserListJoining } from '../models/entities/user-list-joining';
-import { UserGroup } from '../models/entities/user-group';
-import { UserGroupJoining } from '../models/entities/user-group-joining';
-import { UserGroupInvitation } from '../models/entities/user-group-invitation';
-import { Hashtag } from '../models/entities/hashtag';
-import { NoteFavorite } from '../models/entities/note-favorite';
-import { AbuseUserReport } from '../models/entities/abuse-user-report';
-import { RegistrationTicket } from '../models/entities/registration-tickets';
-import { MessagingMessage } from '../models/entities/messaging-message';
-import { Signin } from '../models/entities/signin';
-import { AuthSession } from '../models/entities/auth-session';
-import { FollowRequest } from '../models/entities/follow-request';
-import { Emoji } from '../models/entities/emoji';
-import { ReversiGame } from '../models/entities/games/reversi/game';
-import { ReversiMatching } from '../models/entities/games/reversi/matching';
-import { UserNotePining } from '../models/entities/user-note-pining';
-import { Poll } from '../models/entities/poll';
-import { UserKeypair } from '../models/entities/user-keypair';
-import { UserPublickey } from '../models/entities/user-publickey';
-import { UserProfile } from '../models/entities/user-profile';
-import { UserSecurityKey } from '../models/entities/user-security-key';
-import { AttestationChallenge } from '../models/entities/attestation-challenge';
-import { Page } from '../models/entities/page';
-import { PageLike } from '../models/entities/page-like';
-import { GalleryPost } from '../models/entities/gallery-post';
-import { GalleryLike } from '../models/entities/gallery-like';
-import { ModerationLog } from '../models/entities/moderation-log';
-import { UsedUsername } from '../models/entities/used-username';
-import { Announcement } from '../models/entities/announcement';
-import { AnnouncementRead } from '../models/entities/announcement-read';
-import { Clip } from '../models/entities/clip';
-import { ClipNote } from '../models/entities/clip-note';
-import { Antenna } from '../models/entities/antenna';
-import { AntennaNote } from '../models/entities/antenna-note';
-import { PromoNote } from '../models/entities/promo-note';
-import { PromoRead } from '../models/entities/promo-read';
+import { Log } from '@/models/entities/log';
+import { User } from '@/models/entities/user';
+import { DriveFile } from '@/models/entities/drive-file';
+import { DriveFolder } from '@/models/entities/drive-folder';
+import { AccessToken } from '@/models/entities/access-token';
+import { App } from '@/models/entities/app';
+import { PollVote } from '@/models/entities/poll-vote';
+import { Note } from '@/models/entities/note';
+import { NoteReaction } from '@/models/entities/note-reaction';
+import { NoteWatching } from '@/models/entities/note-watching';
+import { NoteUnread } from '@/models/entities/note-unread';
+import { Notification } from '@/models/entities/notification';
+import { Meta } from '@/models/entities/meta';
+import { Following } from '@/models/entities/following';
+import { Instance } from '@/models/entities/instance';
+import { Muting } from '@/models/entities/muting';
+import { SwSubscription } from '@/models/entities/sw-subscription';
+import { Blocking } from '@/models/entities/blocking';
+import { UserList } from '@/models/entities/user-list';
+import { UserListJoining } from '@/models/entities/user-list-joining';
+import { UserGroup } from '@/models/entities/user-group';
+import { UserGroupJoining } from '@/models/entities/user-group-joining';
+import { UserGroupInvitation } from '@/models/entities/user-group-invitation';
+import { Hashtag } from '@/models/entities/hashtag';
+import { NoteFavorite } from '@/models/entities/note-favorite';
+import { AbuseUserReport } from '@/models/entities/abuse-user-report';
+import { RegistrationTicket } from '@/models/entities/registration-tickets';
+import { MessagingMessage } from '@/models/entities/messaging-message';
+import { Signin } from '@/models/entities/signin';
+import { AuthSession } from '@/models/entities/auth-session';
+import { FollowRequest } from '@/models/entities/follow-request';
+import { Emoji } from '@/models/entities/emoji';
+import { ReversiGame } from '@/models/entities/games/reversi/game';
+import { ReversiMatching } from '@/models/entities/games/reversi/matching';
+import { UserNotePining } from '@/models/entities/user-note-pining';
+import { Poll } from '@/models/entities/poll';
+import { UserKeypair } from '@/models/entities/user-keypair';
+import { UserPublickey } from '@/models/entities/user-publickey';
+import { UserProfile } from '@/models/entities/user-profile';
+import { UserSecurityKey } from '@/models/entities/user-security-key';
+import { AttestationChallenge } from '@/models/entities/attestation-challenge';
+import { Page } from '@/models/entities/page';
+import { PageLike } from '@/models/entities/page-like';
+import { GalleryPost } from '@/models/entities/gallery-post';
+import { GalleryLike } from '@/models/entities/gallery-like';
+import { ModerationLog } from '@/models/entities/moderation-log';
+import { UsedUsername } from '@/models/entities/used-username';
+import { Announcement } from '@/models/entities/announcement';
+import { AnnouncementRead } from '@/models/entities/announcement-read';
+import { Clip } from '@/models/entities/clip';
+import { ClipNote } from '@/models/entities/clip-note';
+import { Antenna } from '@/models/entities/antenna';
+import { AntennaNote } from '@/models/entities/antenna-note';
+import { PromoNote } from '@/models/entities/promo-note';
+import { PromoRead } from '@/models/entities/promo-read';
import { program } from '../argv';
-import { Relay } from '../models/entities/relay';
-import { MutedNote } from '../models/entities/muted-note';
-import { Channel } from '../models/entities/channel';
-import { ChannelFollowing } from '../models/entities/channel-following';
-import { ChannelNotePining } from '../models/entities/channel-note-pining';
-import { RegistryItem } from '../models/entities/registry-item';
-import { Ad } from '../models/entities/ad';
+import { Relay } from '@/models/entities/relay';
+import { MutedNote } from '@/models/entities/muted-note';
+import { Channel } from '@/models/entities/channel';
+import { ChannelFollowing } from '@/models/entities/channel-following';
+import { ChannelNotePining } from '@/models/entities/channel-note-pining';
+import { RegistryItem } from '@/models/entities/registry-item';
+import { Ad } from '@/models/entities/ad';
import { PasswordResetRequest } from '@/models/entities/password-reset-request';
const sqlLogger = dbLogger.createSubLogger('sql', 'white', false);
@@ -211,3 +211,13 @@ export function initDb(justBorrow = false, sync = false, forceRecreate = false)
entities: entities
});
}
+
+export async function resetDb() {
+ const conn = await getConnection();
+ const tables = await conn.query(`SELECT relname AS "table"
+ FROM pg_class C LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
+ WHERE nspname NOT IN ('pg_catalog', 'information_schema')
+ AND C.relkind = 'r'
+ AND nspname !~ '^pg_toast';`);
+ await Promise.all(tables.map(t => t.table).map(x => conn.query(`DELETE FROM "${x}" CASCADE`)));
+}
diff --git a/src/db/redis.ts b/src/db/redis.ts
index a10422846f..7e0ee1e3ce 100644
--- a/src/db/redis.ts
+++ b/src/db/redis.ts
@@ -1,5 +1,5 @@
import * as redis from 'redis';
-import config from '@/config';
+import config from '@/config/index';
export function createConnection() {
return redis.createClient(
diff --git a/src/docs/ar-SA/general/faq.md b/src/docs/ar-SA/general/faq.md
index ecb664e32e..1d0a63ce15 100644
--- a/src/docs/ar-SA/general/faq.md
+++ b/src/docs/ar-SA/general/faq.md
@@ -1,11 +1,14 @@
# よくある質問
ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。
-### iOS/Androidのアプリはありますか?
+## iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
+## Mastodonクライアントでログインできないのですが?
+MisskeyはMastodonのAPIと互換性がないため、一部を除きMastodonクライアントでMisskeyを利用することはできません。
+
## 他のサーバーのユーザーをフォローするときは?
メニューから検索を選び、ユーザー名をホスト込みで入力します。例: `@syuilo@misskey.io`
diff --git a/src/docs/ar-SA/general/glossary.md b/src/docs/ar-SA/general/glossary.md
index c538367f27..6062529322 100644
--- a/src/docs/ar-SA/general/glossary.md
+++ b/src/docs/ar-SA/general/glossary.md
@@ -1,7 +1,7 @@
# 用語集
Misskeyに関する用語集です。
-## AcitivityPub
+## ActivityPub
(読み: あくてぃびてぃぱぶ) 分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。
## AiScript
diff --git a/src/docs/ar-SA/general/misskey.md b/src/docs/ar-SA/general/misskey.md
index addeeffaeb..5c27323d74 100644
--- a/src/docs/ar-SA/general/misskey.md
+++ b/src/docs/ar-SA/general/misskey.md
@@ -3,7 +3,7 @@
Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。 開発は日本でsyuiloによって2014年から開始されました。 ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。
## 歴史
-開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にAcitivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
+開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
ℹ️ Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
誰でも開発に参加することができ、現在でも活発に開発が続いています。
@@ -72,7 +72,7 @@ Misskeyは開発が進むにつれ使用する技術も大きく変わってき
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。
### Mastodonのフォークですか?
-いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じAcitivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
+いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
### iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
diff --git a/src/docs/cs-CZ/general/faq.md b/src/docs/cs-CZ/general/faq.md
index ecb664e32e..1d0a63ce15 100644
--- a/src/docs/cs-CZ/general/faq.md
+++ b/src/docs/cs-CZ/general/faq.md
@@ -1,11 +1,14 @@
# よくある質問
ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。
-### iOS/Androidのアプリはありますか?
+## iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
+## Mastodonクライアントでログインできないのですが?
+MisskeyはMastodonのAPIと互換性がないため、一部を除きMastodonクライアントでMisskeyを利用することはできません。
+
## 他のサーバーのユーザーをフォローするときは?
メニューから検索を選び、ユーザー名をホスト込みで入力します。例: `@syuilo@misskey.io`
diff --git a/src/docs/cs-CZ/general/glossary.md b/src/docs/cs-CZ/general/glossary.md
index 8596303efb..22fa9654fe 100644
--- a/src/docs/cs-CZ/general/glossary.md
+++ b/src/docs/cs-CZ/general/glossary.md
@@ -1,7 +1,7 @@
# 用語集
Misskeyに関する用語集です。
-## AcitivityPub
+## ActivityPub
(読み: あくてぃびてぃぱぶ) 分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。
## AiScript
diff --git a/src/docs/cs-CZ/general/misskey.md b/src/docs/cs-CZ/general/misskey.md
index 2ad7e0da66..65ac31f86b 100644
--- a/src/docs/cs-CZ/general/misskey.md
+++ b/src/docs/cs-CZ/general/misskey.md
@@ -3,7 +3,7 @@
Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。 開発は日本でsyuiloによって2014年から開始されました。 ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。
## 歴史
-開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にAcitivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
+開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
ℹ️ Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
誰でも開発に参加することができ、現在でも活発に開発が続いています。
@@ -72,7 +72,7 @@ Misskeyは開発が進むにつれ使用する技術も大きく変わってき
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。
### Mastodonのフォークですか?
-いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じAcitivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
+いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
### iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
diff --git a/src/docs/da-DK/general/faq.md b/src/docs/da-DK/general/faq.md
index ecb664e32e..1d0a63ce15 100644
--- a/src/docs/da-DK/general/faq.md
+++ b/src/docs/da-DK/general/faq.md
@@ -1,11 +1,14 @@
# よくある質問
ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。
-### iOS/Androidのアプリはありますか?
+## iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
+## Mastodonクライアントでログインできないのですが?
+MisskeyはMastodonのAPIと互換性がないため、一部を除きMastodonクライアントでMisskeyを利用することはできません。
+
## 他のサーバーのユーザーをフォローするときは?
メニューから検索を選び、ユーザー名をホスト込みで入力します。例: `@syuilo@misskey.io`
diff --git a/src/docs/da-DK/general/glossary.md b/src/docs/da-DK/general/glossary.md
index 1f403a06d2..b2a1fb626f 100644
--- a/src/docs/da-DK/general/glossary.md
+++ b/src/docs/da-DK/general/glossary.md
@@ -1,7 +1,7 @@
# 用語集
Misskeyに関する用語集です。
-## AcitivityPub
+## ActivityPub
(読み: あくてぃびてぃぱぶ) 分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。
## AiScript
diff --git a/src/docs/da-DK/general/misskey.md b/src/docs/da-DK/general/misskey.md
index 1e64a10e28..d97664ddca 100644
--- a/src/docs/da-DK/general/misskey.md
+++ b/src/docs/da-DK/general/misskey.md
@@ -3,7 +3,7 @@
Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。 開発は日本でsyuiloによって2014年から開始されました。 ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。
## 歴史
-開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にAcitivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
+開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
ℹ️ Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
誰でも開発に参加することができ、現在でも活発に開発が続いています。
@@ -72,7 +72,7 @@ Misskeyは開発が進むにつれ使用する技術も大きく変わってき
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。
### Mastodonのフォークですか?
-いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じAcitivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
+いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
### iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
diff --git a/src/docs/de-DE/admin/disable-timelines.md b/src/docs/de-DE/admin/disable-timelines.md
index b081e35ab0..e114573142 100644
--- a/src/docs/de-DE/admin/disable-timelines.md
+++ b/src/docs/de-DE/admin/disable-timelines.md
@@ -1,8 +1,8 @@
-# LTL/STL/GTLの無効化
-Misskeyでは、LTL/STL/GTLをそれぞれ無効化することができます。有効/無効を切り替えるには、インスタンスコントロールパネルで設定します。
+# Lokale/soziale/globale Chronik deaktivieren
+Misskey erlaubt es, die lokale, soziale und globale Chronik jeweils zu deaktivieren. Die Chroniken können in den Instanzeinstellungen aktiviert bzw. deaktiviert werden.
-LTLやSTLは、そのインスタンス全員の投稿が見れるため、新規のユーザーにとってはユーザーを探す必要がなくなり、興味のあるユーザーを見つけやすいという利点があります。 しかし同時に、フォロー機能が活用されなくなったり、不適切な投稿が目につきやすくなったり、チャットのようになることで内輪感が生じて逆に新規ユーザーが参加しにくくなるといったデメリットも持ち合わせています。 サーバーによってメリット/デメリットどちらが優勢かは異なるので、オプションとして無効にできるようになっています。 もしデメリットの方が上回っていると感じたら、それらのタイムラインを無効化することも検討してください。
+Dass alle Notizen auf deiner Instanz auf der lokalen und sozialen Chronik erscheinen, erleichtert es neuen Nutzern, andere zu finden, ohne dafür die Suche benutzen zu müssen. Es bedeutet jedoch auch, dass es nicht unbedingt nötig ist, Nutzern zu folgen, um ihre Posts zu sehen, und dass häufiger unangebrachte Inhalte zu sehen sein könnten. Die Nutzung gleicht zudem eher der eines Chatrooms, was es neuen Nutzern wiederum erschweren könnte, in Gespräche unter Langzeitnutzern einzusteigen. Diese Vor- und Nachteile wiegen je nach Instanz unterschiedlich schwer, weshalb die Wahl letztendlich den Betreibern überlassen ist. Falls die Nachteile also in deinem Fall überwiegen, kannst du die jeweiligen Chroniken auch deaktivieren.
-
⚠️ 無効化を行うと、ユーザーが困惑し、短期的に見て利用者が減る可能性があります。そのため、無効化の際は影響を慎重に検討し、事前に説明してフォローを整える期間を一定程度設けることを推奨します。
+
⚠️ Das Deaktiveren von Chroniken kann Nutzer verwirren und kurzzeitig abschrecken. Daher solltest du diese Entscheidung gut begründen können und die Nutzer deiner Instanz im Vorfeld darüber aufklären, damit diese sich entsprechend vorbereiten können, beispielsweise indem sie Nutzern folgen, mit denen sie sich häufiger unterhalten.
-なお、管理者/モデレーターは、これらのタイムラインの無効化状態は適用されず、引き続き利用することが可能です。
+Beachte, dass Aministratoren und Moderatoren diese Chroniken weiterhin sehen können, auch nachdem sie deaktiviert wurden.
diff --git a/src/docs/de-DE/admin/faq.md b/src/docs/de-DE/admin/faq.md
index 317b4e0655..44083fcd63 100644
--- a/src/docs/de-DE/admin/faq.md
+++ b/src/docs/de-DE/admin/faq.md
@@ -1,5 +1,5 @@
-# よくある質問
-ここでは、サーバー管理者向けのよくある質問を掲載しています。
+# Häufig gestellte Fragen
+Dieses Dokument richtet sich an Administratoren und beantwortet besonders häufig gestellte Fragen.
-## デフォルトテーマを設定したい
-現在、デフォルトテーマ設定機能は実装されていません。
+## Wie kann ich ein standardmäßiges Farbschema für meine Instanz festlegen?
+Derzeit ist es noch nicht möglich, ein standardmäßiges Farbschema für eine Instanz festzulegen.
diff --git a/src/docs/de-DE/general/faq.md b/src/docs/de-DE/general/faq.md
index ecb664e32e..aa8d688754 100644
--- a/src/docs/de-DE/general/faq.md
+++ b/src/docs/de-DE/general/faq.md
@@ -1,11 +1,14 @@
-# よくある質問
+# Häufig gestellte Fragen
ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。
-### iOS/Androidのアプリはありますか?
+## iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
+## Mastodonクライアントでログインできないのですが?
+MisskeyはMastodonのAPIと互換性がないため、一部を除きMastodonクライアントでMisskeyを利用することはできません。
+
## 他のサーバーのユーザーをフォローするときは?
メニューから検索を選び、ユーザー名をホスト込みで入力します。例: `@syuilo@misskey.io`
diff --git a/src/docs/de-DE/general/glossary.md b/src/docs/de-DE/general/glossary.md
index a86b4d9000..e1bc6b7bae 100644
--- a/src/docs/de-DE/general/glossary.md
+++ b/src/docs/de-DE/general/glossary.md
@@ -1,7 +1,7 @@
# 用語集
Misskeyに関する用語集です。
-## AcitivityPub
+## ActivityPub
(読み: あくてぃびてぃぱぶ) 分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。
## AiScript
diff --git a/src/docs/de-DE/general/misskey.md b/src/docs/de-DE/general/misskey.md
index f56844060e..e3179488c3 100644
--- a/src/docs/de-DE/general/misskey.md
+++ b/src/docs/de-DE/general/misskey.md
@@ -3,7 +3,7 @@
Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。 開発は日本でsyuiloによって2014年から開始されました。 ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。
## 歴史
-開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にAcitivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
+開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
ℹ️ Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
誰でも開発に参加することができ、現在でも活発に開発が続いています。
@@ -43,7 +43,7 @@ Misskeyはビジネスではなく、利用は無料であるため、収益は
## クレジット
Misskeyの開発者や、Misskeyに寄付をしてくださった方の一覧は[こちら](/about-misskey)で見ることができます。
-## よくある質問
+## Häufig gestellte Fragen
### プロジェクトは何を目指していますか?
強いて言うと、漠然的になりますが広く使われる汎用的なプラットフォームになることを目指しています。 Misskeyは他のプロジェクトとは違い、何らかの思想(例えば、反中央集権)やビジョンに基づいて開発が行われているわけではなく、その点ではフラットです。 それが逆に、特定の方向性に縛られないフレキシブルさを生み出すことに繋がっていると感じています。
@@ -72,7 +72,7 @@ Misskeyは開発が進むにつれ使用する技術も大きく変わってき
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。
### Mastodonのフォークですか?
-いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じAcitivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
+いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
### iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
diff --git a/src/docs/en-US/features/note.md b/src/docs/en-US/features/note.md
index fbc47f1ac3..a835cf09a4 100644
--- a/src/docs/en-US/features/note.md
+++ b/src/docs/en-US/features/note.md
@@ -51,4 +51,4 @@ If you enable this option, your note won't be federated to remote instances.
By pinning a note to your profile it will be constantly displayed on your profile page. To pin a note, open the note menu and press "Pin to profile". It's also possible to pin multiple notes to your profile.
## Watch
-ノートをウォッチすると、自分以外のノートへのリアクションや返信などの通知を受け取ることができます。 ノートのメニューを開き、「ウォッチ」を選択してウォッチできます。
+You can get notifications for replies, reactions etc. for a note that is not yours by watching it. To watch a note, select "Watch" from the respective note's menu.
diff --git a/src/docs/en-US/general/faq.md b/src/docs/en-US/general/faq.md
index be4cb246f6..37827903a8 100644
--- a/src/docs/en-US/general/faq.md
+++ b/src/docs/en-US/general/faq.md
@@ -1,22 +1,25 @@
# Frequently Asked Questions
This document will list answers to frequently asked questions regarding the usage of Misskey. Answers to frequently asked questions related to Misskey as a project can be found [here](./misskey).
-### "Are there any apps for iOS / Android available?"
+## "Are there any apps for iOS / Android available?"
While no official Misskey app for either OS exists, there are several third-party applications. For details, please check [here](./apps).
-However, functionality of third-party applications will inevitably lag behind the official Web client, so unless you really want to use a native application, we recommend the official Web client instead. As the Misskey Web client supports PWA, it is possible to make it act as if it was a native application instead. For details regarding this, please check [here](todo).
+However, functionality of third-party applications will inevitably lag behind the official Web client, so unless you really want to use a native application, we recommend the official Web client instead. As the Misskey Web client supports PWA, it is also possible to make it act as if it was a native application instead. For details regarding this, please check [here](todo).
+
+## "Can't I log in through a Mastodon client?"
+As Misskey is not compatible with the Mastodon API, barring some exceptions, using Mastodon clients to log into Misskey is not possible.
## "What do I do when I want to follow users from other servers?"
-Select the search bar from the menu and enter their username including their host.E.g. `@syuilo@misskey.io`
+Select the search bar from the menu and enter their username including their host server. E.g.: `@syuilo@misskey.io`
## "How do I take back a Renote?"
-Press the three dots ("...") to the right of the renote timestamp and select "Take back Renote". To read more about Renotes, please check [here](../features/note).
+Press the three dots ("...") displayed next to the renote timestamp and select "Take back Renote". To read more about Renotes, please check [here](../features/note).
## "I don't want the preview of an URL to be displayed."
-You can disable an URL from being previewed using MFM.For details, please check the [MFM Cheatsheet](/mfm-cheat-sheet).
+You can prevent an URL from being previewed using MFM. Please check the [MFM Cheatsheet](/mfm-cheat-sheet) for more details.
## "I want to add custom emoji."
-Only administrators can add, edit or delete custom emoji.If you'd like to do either of these things, please ask your instance administrator.
+Only administrators can add, edit or delete custom emoji. If you'd like to do either of these things, please ask your instance administrator.
## "I want to develop a Bot."
-Anyone can develop a Misskey bot using the Misskey API.Please see [here](../advanced/develop-bot).
+It is possible to develop a Bot using the Misskey API. Please, [see here](../advanced/develop-bot).
diff --git a/src/docs/en-US/general/links.md b/src/docs/en-US/general/links.md
index 932db975b3..1952160359 100644
--- a/src/docs/en-US/general/links.md
+++ b/src/docs/en-US/general/links.md
@@ -1,8 +1,8 @@
# A collection of links
## Websites
+- [Official Discord](https://discord.gg/Wp8gVStHW3) - The official Discord server for Misskey
- [Misskey Forum](https://forum.misskey.io/) - A forum used for questions surrounding Misskey
-- [Misskey Forum](https://forum.misskey.io/) - Misskeyに関する話題を扱うフォーラム
## Accounts
- [@repo@misskey.io](https://misskey.io/@repo) - A bot that publishes posts about updates to the Misskey repository
diff --git a/src/docs/eo-UY/admin/disable-timelines.md b/src/docs/eo-UY/admin/disable-timelines.md
index b081e35ab0..6037653e3a 100644
--- a/src/docs/eo-UY/admin/disable-timelines.md
+++ b/src/docs/eo-UY/admin/disable-timelines.md
@@ -1,4 +1,4 @@
-# LTL/STL/GTLの無効化
+# Malebligo de loka/sociala/malloka templinio
Misskeyでは、LTL/STL/GTLをそれぞれ無効化することができます。有効/無効を切り替えるには、インスタンスコントロールパネルで設定します。
LTLやSTLは、そのインスタンス全員の投稿が見れるため、新規のユーザーにとってはユーザーを探す必要がなくなり、興味のあるユーザーを見つけやすいという利点があります。 しかし同時に、フォロー機能が活用されなくなったり、不適切な投稿が目につきやすくなったり、チャットのようになることで内輪感が生じて逆に新規ユーザーが参加しにくくなるといったデメリットも持ち合わせています。 サーバーによってメリット/デメリットどちらが優勢かは異なるので、オプションとして無効にできるようになっています。 もしデメリットの方が上回っていると感じたら、それらのタイムラインを無効化することも検討してください。
diff --git a/src/docs/eo-UY/advanced/api.md b/src/docs/eo-UY/advanced/api.md
index 76019b6145..6425f67f3c 100644
--- a/src/docs/eo-UY/advanced/api.md
+++ b/src/docs/eo-UY/advanced/api.md
@@ -32,7 +32,7 @@ UUIDを生成する。以後これをセッションIDと呼びます。
表示する際、URLにクエリパラメータとしていくつかのオプションを設定できます:
* `name` ... アプリケーション名
* > 例: `MissDeck`
-* `icon` ... アプリケーションのアイコン画像URL
+* `icon` ... URL de ikono de la programo
* > 例: `https://missdeck.example.com/icon.png`
* `callback` ... 認証が終わった後にリダイレクトするURL
* > 例: `https://missdeck.example.com/callback`
@@ -51,7 +51,7 @@ UUIDを生成する。以後これをセッションIDと呼びます。
[「APIの使い方」へ進む](#APIの使い方)
-## APIの使い方
+## Uzado de API
**APIはすべてPOSTで、リクエスト/レスポンスともにJSON形式です。RESTではありません。** アクセストークンは、`i`というパラメータ名でリクエストに含めます。
* [APIリファレンス](/api-doc)
diff --git a/src/docs/eo-UY/features/antenna.md b/src/docs/eo-UY/features/antenna.md
index 94ad9e4aea..b315a462fd 100644
--- a/src/docs/eo-UY/features/antenna.md
+++ b/src/docs/eo-UY/features/antenna.md
@@ -1,4 +1,4 @@
-# アンテナ
+# Antenoj
アンテナは、自由に条件を設定して、合致するノートを自動で収集することができる機能です。
条件を設定したアンテナが作成された状態で、条件に合致するノートが投稿されると、リアルタイムでそのアンテナのタイムラインにノートが追加されます。
diff --git a/src/docs/eo-UY/features/deck.md b/src/docs/eo-UY/features/deck.md
index 8057e262fd..a92e6162b8 100644
--- a/src/docs/eo-UY/features/deck.md
+++ b/src/docs/eo-UY/features/deck.md
@@ -1,4 +1,4 @@
-# デッキ
+# Kartaro
デッキは利用可能なUIのひとつです。「カラム」と呼ばれるビューを複数並べて表示させることで、カスタマイズ性が高く、情報量の多いUIが構築できることが特徴です。
diff --git a/src/docs/eo-UY/features/drive.md b/src/docs/eo-UY/features/drive.md
index 517050e0b4..ef654688e2 100644
--- a/src/docs/eo-UY/features/drive.md
+++ b/src/docs/eo-UY/features/drive.md
@@ -1,4 +1,4 @@
-# Diskingo
+# Disko
ドライブは、Misskey上でファイルを管理できる機能です。
[ドライブのページ](/my/drive)から任意のファイルをアップロードできるほか、アバターに設定した画像や、ノートに添付したファイルなどもすべてドライブにアップロードされます。
diff --git a/src/docs/eo-UY/features/keyboard-shortcut.md b/src/docs/eo-UY/features/keyboard-shortcut.md
index dd44428127..6741bffca2 100644
--- a/src/docs/eo-UY/features/keyboard-shortcut.md
+++ b/src/docs/eo-UY/features/keyboard-shortcut.md
@@ -1,6 +1,6 @@
# キーボードショートカット
-## Konfederacia
+## Malloka
これらのショートカットは基本的にどこでも使えます。
diff --git a/src/docs/eo-UY/features/note.md b/src/docs/eo-UY/features/note.md
index e183909f80..c507095fa3 100644
--- a/src/docs/eo-UY/features/note.md
+++ b/src/docs/eo-UY/features/note.md
@@ -51,4 +51,4 @@ Contents Warningの略で、ノートの内容を、閲覧者の操作なしに
ノートをピン留めすると、ユーザーページに常にそのノートを表示しておくことができます。 ノートのメニューを開き、「ピン留め」を選択してピン留めできます。 複数のノートをピン留めできます。
## Observi
-ノートをウォッチすると、自分以外のノートへのリアクションや返信などの通知を受け取ることができます。 ノートのメニューを開き、「ウォッチ」を選択してウォッチできます。
+Vi povas ricevi sciigojn pri reagoj, respondoj, ktp al noto, kiuj ne apartenas al vi. Por observu, malfermu respektivan menuon de noto, kaj elektu la "Observi" el ĝi.
diff --git a/src/docs/eo-UY/features/timeline.md b/src/docs/eo-UY/features/timeline.md
index 80ea42f040..51b8550bef 100644
--- a/src/docs/eo-UY/features/timeline.md
+++ b/src/docs/eo-UY/features/timeline.md
@@ -10,22 +10,22 @@
## Sociala
自分のフォローしているユーザーの投稿と、全てのローカルユーザーの「ホーム」指定されていない投稿が流れます。STLと略されます。
-## Konfederacia
+## Malloka
全てのローカルユーザーの「ホーム」指定されていない投稿と、サーバーに届いた全てのリモートユーザーの「ホーム」指定されていない投稿が流れます。GTLと略されます。
## 比較
-| ソース | | | Templinio | | |
-| ------------ | --------- | ----- | --------- | ------- | ------------ |
-| Uzanto | 公開範囲 | Hejmo | Loka | Sociala | Konfederacia |
-| ローカル (フォロー) | Publikigi | ✔ | ✔ | ✔ | ✔ |
-| | Hejmo | ✔ | | ✔ | |
-| | Sekvantoj | ✔ | ✔ | ✔ | ✔ |
-| リモート (フォロー) | Publikigi | ✔ | | ✔ | ✔ |
-| | Hejmo | ✔ | | ✔ | |
-| | Sekvantoj | ✔ | | ✔ | ✔ |
-| ローカル (未フォロー) | Publikigi | | ✔ | ✔ | ✔ |
-| | Hejmo | | | | |
-| | Sekvantoj | | | | |
-| リモート (未フォロー) | Publikigi | | | | ✔ |
-| | Hejmo | | | | |
-| | Sekvantoj | | | | |
+| ソース | | | Templinio | | |
+| ------------ | --------- | ----- | --------- | ------- | ------- |
+| Uzanto | 公開範囲 | Hejmo | Loka | Sociala | Malloka |
+| ローカル (フォロー) | Publikigi | ✔ | ✔ | ✔ | ✔ |
+| | Hejmo | ✔ | | ✔ | |
+| | Sekvantoj | ✔ | ✔ | ✔ | ✔ |
+| リモート (フォロー) | Publikigi | ✔ | | ✔ | ✔ |
+| | Hejmo | ✔ | | ✔ | |
+| | Sekvantoj | ✔ | | ✔ | ✔ |
+| ローカル (未フォロー) | Publikigi | | ✔ | ✔ | ✔ |
+| | Hejmo | | | | |
+| | Sekvantoj | | | | |
+| リモート (未フォロー) | Publikigi | | | | ✔ |
+| | Hejmo | | | | |
+| | Sekvantoj | | | | |
diff --git a/src/docs/eo-UY/general/apps.md b/src/docs/eo-UY/general/apps.md
index 1f4c85fe8f..793a2bdd61 100644
--- a/src/docs/eo-UY/general/apps.md
+++ b/src/docs/eo-UY/general/apps.md
@@ -1,5 +1,5 @@
# サードパーティアプリのリスト
-## クライアント
+## Klientoj
todo
## 連携サービス
diff --git a/src/docs/eo-UY/general/faq.md b/src/docs/eo-UY/general/faq.md
index ecb664e32e..1d0a63ce15 100644
--- a/src/docs/eo-UY/general/faq.md
+++ b/src/docs/eo-UY/general/faq.md
@@ -1,11 +1,14 @@
# よくある質問
ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。
-### iOS/Androidのアプリはありますか?
+## iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
+## Mastodonクライアントでログインできないのですが?
+MisskeyはMastodonのAPIと互換性がないため、一部を除きMastodonクライアントでMisskeyを利用することはできません。
+
## 他のサーバーのユーザーをフォローするときは?
メニューから検索を選び、ユーザー名をホスト込みで入力します。例: `@syuilo@misskey.io`
diff --git a/src/docs/eo-UY/general/glossary.md b/src/docs/eo-UY/general/glossary.md
index e599989eff..61dfe57f13 100644
--- a/src/docs/eo-UY/general/glossary.md
+++ b/src/docs/eo-UY/general/glossary.md
@@ -1,7 +1,7 @@
# 用語集
Misskeyに関する用語集です。
-## AcitivityPub
+## ActivityPub
(読み: あくてぃびてぃぱぶ) 分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。
## AiScript
@@ -19,14 +19,14 @@ Misskeyに関する用語集です。
## Fediverse
(読み: ふぇでぃばーす) Misskeyを含む様々な分散型ソフトウェアのサーバーで構成されたネットワーク。
-## GTL
-グローバルタイムライン(Global TimeLine)の略。タイムラインの詳細は[こちら。](../features/timeline)
+## MTL
+An abbreviation for "Malloka TempLinio".タイムラインの詳細は[こちら。](../features/timeline)
## HTL
ホームタイムライン(Home TimeLine)の略。タイムラインの詳細は[こちら。](../features/timeline)
## LTL
-ローカルタイムライン(Local TimeLine)の略。タイムラインの詳細は[こちら。](../features/timeline)
+An abbreviation for "Loka TempLinio".タイムラインの詳細は[こちら。](../features/timeline)
## MFM
(読み: えむえふえむ) Misskey Flavored Markdownの略で、Misskey上で使用できるマークアップ言語です。詳細は[こちら。](../features/mfm)
@@ -34,49 +34,49 @@ Misskeyに関する用語集です。
## NSFW
(読み: のっとせーふふぉーわーく) Not Safe For Workの略。画像を「閲覧注意」扱いにし、操作なしには表示しないようにすることができる機能。
-## Fari renoton
+## Renoto
(読み: りのーと) 既にあるノートを引用、もしくはそのノートを新しいノートとして共有する行為、またそれによって作成されたノート。詳細は[こちら。](../features/note)
## STL
-ソーシャルタイムライン(Social TimeLine)の略。タイムラインの詳細は[こちら。](../features/timeline)
+An abbreviation for "Sociala TempLinio".タイムラインの詳細は[こちら。](../features/timeline)
-## 藍
-(読み: あい) Misskeyの看板娘(公式キャラクター)です。
+## Ai
+Ai estas oficiala maskoto de Misskey.
-## アクティブユーザー
+## Aktivaj Uzantoj:
インスタンスにアカウントを作っているユーザーのうち、現在も実際にサービスを利用しているユーザーのこと。
## Ekzemplo
todo
-## コントロールパネル
+## Ŝaltpodio
インスタンスの設定画面のこと。
## Servilo
todo
## Mutigi
-ノートをパブリックな公開範囲で投稿できなくされている状態。モデレーターの判断でユーザーごとに設定されます。詳細は[こちら。](../features/silence)
+A state in which the visibility of the notes by said user cannot be set to "Publika" anymore.Can be set for individual users by Moderators.Rigardu por sciu pli tie[.](../features/silence)
## Flostigi
アカウントが使用不可に設定されている状態。
-## Diskingo
+## Disko
Misskeyにアップロードしたファイルを管理する機能。詳細は[こちら。](../features/drive)
## Notoj
Misskeyに投稿される、文章、ファイル、アンケートなどを含めることができるコンテンツ。詳細は[こちら。](../features/note)
-## ミスキスト
-Misskeyを使う人のこと。
+## Miskiisto
+Uzuloj de Misskey.
-## モデレーター
+## Moderigisto
スパムの凍結およびサイレンスや不適切な投稿の削除など、コミュニティ運営に関する権限を持つユーザー。
-## Transa
+## Transa aŭ fora
他サーバーのことを指します。リモートユーザーといったように接頭辞としても使われます。ローカルの逆です。
-## Konfederacio
+## Kunfederaĵo
サーバー上で作成された情報が他のサーバーに伝わること。
## Loka
diff --git a/src/docs/eo-UY/general/misskey.md b/src/docs/eo-UY/general/misskey.md
index 9220389b2f..e819ba24b8 100644
--- a/src/docs/eo-UY/general/misskey.md
+++ b/src/docs/eo-UY/general/misskey.md
@@ -1,9 +1,9 @@
-# Pri Miskejo
+# Pri Misskey
-Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。 開発は日本でsyuiloによって2014年から開始されました。 ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。
+Misskey estas malfermitkoda distribuita mikroblogo. Ĝia trajtoj estas diversaj funkcioj je disko aŭ reagoj ktp, kaj alte agordebla fasado. Evoluigo ekfaris de syuilo de 2014.
-## 歴史
-開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にAcitivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
+## Historio
+開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
ℹ️ Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
誰でも開発に参加することができ、現在でも活発に開発が続いています。
@@ -12,7 +12,7 @@ Misskeyはオープンソースの分散型マイクロブログプラットフ
分散(distributed)型とは、非中央集権(decentralized)とも呼ばれ、コミュニティが多数のサーバーに分散して存在し、それらが相互に通信(連合、federation)することでコンテンツ共有ネットワーク(Fediverse)を形成していることが特徴のサービスです。 単一のサーバーしか存在しない、もしくは複数存在しても互いに独立している場合は中央集権なサービスと言われ、例えばTwitterやFacebookなどほとんどのサービスがそれに該当します。 分散型のメリットは、自分に合った運営者やテーマのサーバーを選択できることです。自分でサーバーを作成することもできます。連合するおかげで、どのサーバーを選んでも、同じコミュニティにアクセスできます。
-## 常にオープンソース
+## Ĉiam malfermitkode
Misskeyはこれまでもこれからも、オープンソースであり続けます。オープンソースとは、簡単に言うとソフトウェアのソースコード(プログラム)が公開されていることです。ソースコードの修正や再配布が可能であることを定義に含めることもあります。 Misskeyのすべてのソースコードは[AGPL](https://github.com/misskey-dev/misskey/blob/develop/LICENSE)というオープンソースライセンスの下に[公開](https://github.com/misskey-dev)されていて、誰でも自由に閲覧、使用、修正、改変、再配布をすることができます。 オープンソースは、自分で好きなように変えたり、有害な処理が含まれていないことを確認することができたり、誰でも開発に参加できるなどの、様々なメリットがあります。 上述の分散型を実現するためにも、オープンソースであるということは必要不可欠な要素です。 再び引き合いに出しますが、TwitterやFacebookなどの利益を得ているほとんどのサービスはオープンソースではありません。
@@ -51,7 +51,7 @@ Misskeyの開発者や、Misskeyに寄付をしてくださった方の一覧は
### 企業によって開発されていますか?
いいえ。Misskeyの開発は個人で行われており、商業的でもないため、特定の企業の関りはありません。 開発メンバーも基本的にはボランティアです。 また、開発に対し企業のスポンサーがつくこともありますが、その場合でもやはり開発は個人のコミュニティが主体です。
-### 誰が運営していますか?
+### Kiu administras Misskey'on?
Misskeyは分散型なため、各サーバーにそれぞれ異なった運営者がいます。従って、特定の個人や企業によって、Misskeyの全てが運営されているわけではありません。 また、開発チームが運営を行うわけでもないため、運営に関する連絡は、お使いのサーバーの運営者に行ってください。 サーバーの運営者は、[このページ](/about)で確認することができます。 あなたがサーバーを作成すれば、あなたが運営者になります。
### どのサーバーを選べばいいですか?
@@ -72,7 +72,7 @@ Misskeyは開発が進むにつれ使用する技術も大きく変わってき
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。
### Mastodonのフォークですか?
-いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じAcitivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
+いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
### iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
diff --git a/src/docs/es-ES/general/faq.md b/src/docs/es-ES/general/faq.md
index ecb664e32e..1d0a63ce15 100644
--- a/src/docs/es-ES/general/faq.md
+++ b/src/docs/es-ES/general/faq.md
@@ -1,11 +1,14 @@
# よくある質問
ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。
-### iOS/Androidのアプリはありますか?
+## iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
+## Mastodonクライアントでログインできないのですが?
+MisskeyはMastodonのAPIと互換性がないため、一部を除きMastodonクライアントでMisskeyを利用することはできません。
+
## 他のサーバーのユーザーをフォローするときは?
メニューから検索を選び、ユーザー名をホスト込みで入力します。例: `@syuilo@misskey.io`
diff --git a/src/docs/es-ES/general/glossary.md b/src/docs/es-ES/general/glossary.md
index dcafe8e0cf..bf50b857a1 100644
--- a/src/docs/es-ES/general/glossary.md
+++ b/src/docs/es-ES/general/glossary.md
@@ -1,7 +1,7 @@
# 用語集
Misskeyに関する用語集です。
-## AcitivityPub
+## ActivityPub
(読み: あくてぃびてぃぱぶ) 分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。
## AiScript
diff --git a/src/docs/es-ES/general/misskey.md b/src/docs/es-ES/general/misskey.md
index 5a45c421ef..aa16437c26 100644
--- a/src/docs/es-ES/general/misskey.md
+++ b/src/docs/es-ES/general/misskey.md
@@ -3,7 +3,7 @@
Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。 開発は日本でsyuiloによって2014年から開始されました。 ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。
## 歴史
-開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にAcitivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
+開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
ℹ️ Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
誰でも開発に参加することができ、現在でも活発に開発が続いています。
@@ -72,7 +72,7 @@ Misskeyは開発が進むにつれ使用する技術も大きく変わってき
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。
### Mastodonのフォークですか?
-いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じAcitivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
+いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
### iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
diff --git a/src/docs/fr-FR/admin/faq.md b/src/docs/fr-FR/admin/faq.md
index 317b4e0655..9be3edc444 100644
--- a/src/docs/fr-FR/admin/faq.md
+++ b/src/docs/fr-FR/admin/faq.md
@@ -1,5 +1,5 @@
-# よくある質問
-ここでは、サーバー管理者向けのよくある質問を掲載しています。
+# Questions fréquentes
+Ici sont publiées les questions que les administrateur·rice·s de serveurs posent le plus fréquemment.
-## デフォルトテーマを設定したい
-現在、デフォルトテーマ設定機能は実装されていません。
+## « Je veux configurer un thème par défaut »
+Pour l'instant, il n'existe aucune fonctionnalité permettant de configurer un thème par défaut pour votre instance.
diff --git a/src/docs/fr-FR/features/antenna.md b/src/docs/fr-FR/features/antenna.md
index 450e7a7aa6..49746e7087 100644
--- a/src/docs/fr-FR/features/antenna.md
+++ b/src/docs/fr-FR/features/antenna.md
@@ -1,4 +1,4 @@
# Antennes
-アンテナは、自由に条件を設定して、合致するノートを自動で収集することができる機能です。
+Les antennes vous permettent de recueillir des notes automatiquement, en fonction de critères que vous définissez librement.
-条件を設定したアンテナが作成された状態で、条件に合致するノートが投稿されると、リアルタイムでそのアンテナのタイムラインにノートが追加されます。
+Ainsi, lorsqu'une note répondant aux critères que vous avez spécifiés dans une antenne est publiée, elle est ajoutée au fil de l'antenne correspondante en temps réel.
diff --git a/src/docs/fr-FR/general/apps.md b/src/docs/fr-FR/general/apps.md
index 1f4c85fe8f..7f9165a306 100644
--- a/src/docs/fr-FR/general/apps.md
+++ b/src/docs/fr-FR/general/apps.md
@@ -1,4 +1,4 @@
-# サードパーティアプリのリスト
+# Liste des applications tierces
## クライアント
todo
diff --git a/src/docs/fr-FR/general/changelog.md b/src/docs/fr-FR/general/changelog.md
index 6766a63b20..0f2c782a96 100644
--- a/src/docs/fr-FR/general/changelog.md
+++ b/src/docs/fr-FR/general/changelog.md
@@ -1,5 +1,5 @@
-# 更新履歴
-ℹ️ このサーバーの更新履歴です。Misskeyの最新のリリースについては、
GitHubをご確認ください。
+# Journal des changements
+ℹ️ Ce journal concerne uniquement les changements survenus sur ce serveur. Pour en savoir plus sur la dernière version de Misskey, merci de vous rendre sur
GitHub.
diff --git a/src/docs/fr-FR/general/faq.md b/src/docs/fr-FR/general/faq.md
index ecb664e32e..2a82eed4fd 100644
--- a/src/docs/fr-FR/general/faq.md
+++ b/src/docs/fr-FR/general/faq.md
@@ -1,22 +1,25 @@
-# よくある質問
-ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。
+# Questions fréquentes
+Vous trouverez ici les questions les plus fréquentes sur l'utilisation de Misskey. Les questions fréquentes concernant Misskey en tant que projet sont publiées [sur cette page](./misskey).
-### iOS/Androidのアプリはありますか?
+## « Existe-t-il des appli pour Android / iOS ? »
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
-## 他のサーバーのユーザーをフォローするときは?
-メニューから検索を選び、ユーザー名をホスト込みで入力します。例: `@syuilo@misskey.io`
+## « Ne peut-on pas utiliser un client Mastodon pour se connecter à Misskey ? »
+Étant donné que Misskey n'est pas compatible avec l'API Mastodon, sauf cas exceptionnels, il n'est pas possible d'utiliser un client Mastodon pour Misskey.
-## Renoteを削除するには?
-Renoteの時刻表示の隣にある「...」を押し、「Renote解除」を選択します。 Renoteについては[こちら](../features/note)をご確認ください。
+## « Comment faire pour suivre des utilisateur·rice·s d'autres instances ? »
+Sélectionnez la fonction « Recherche » depuis le menu et tapez le nom d'utilisateur·rice suivi du nom de l'instance. Ex. : `@syuilo@misskey.io`
-## URLのプレビューを表示させたくない
-MFMには、そのURLのプレビューを無効にする構文があります。詳細は[MFMチートシート](/mfm-cheat-sheet)をご確認ください。
+## « Comment puis-je annuler une Renote ? »
+Cliquez sur sur les trois points (« ... ») situés à côté de l'horodatage de votre Renote et sélectionnez « Annuler la Renote ». Pour en savoir plus sur les Renotes, vous pouvez consulter [cette page](../features/note).
-## カスタム絵文字を追加したい
-運営者のみがカスタム絵文字を追加、編集、削除できます。それらを希望する場合は運営者に依頼してください。
+## « Je ne veux pas afficher les aperçus d'URL. »
+Vous pouvez désactiver l'affichage des aperçus d'URL grâce au langage MFM. Voir l'[Antisèche MFM](/mfm-cheat-sheet) pour plus de détails.
-## Botを開発したい
-Misskey APIを利用してBotの開発が可能です。[こちら](../advanced/develop-bot)をご確認ください。
+## « Je veux ajouter des émojis personnalisés. »
+Seul·e·s les administrateur·rice·s peuvent ajouter, éditer ou effacer des émojis personnalisés. Ainsi, si vous avez une requête à ce sujet, merci de contacter votre administrateur·rice d'instance.
+
+## « Je veux créer un Bot. »
+Vous pouvez développer un Bot en utilisant l'API de Misskey. Plus d'informations sur [cette page](../advanced/develop-bot).
diff --git a/src/docs/fr-FR/general/glossary.md b/src/docs/fr-FR/general/glossary.md
index 1b5eab6412..679e7476b0 100644
--- a/src/docs/fr-FR/general/glossary.md
+++ b/src/docs/fr-FR/general/glossary.md
@@ -1,7 +1,7 @@
# 用語集
Misskeyに関する用語集です。
-## AcitivityPub
+## ActivityPub
(読み: あくてぃびてぃぱぶ) 分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。
## AiScript
diff --git a/src/docs/fr-FR/general/links.md b/src/docs/fr-FR/general/links.md
index 67adba2488..a8c08df93c 100644
--- a/src/docs/fr-FR/general/links.md
+++ b/src/docs/fr-FR/general/links.md
@@ -1,12 +1,12 @@
-# リンク集
+# Liens utiles
-## Webサイト
-- [Official Discord](https://discord.gg/Wp8gVStHW3) - Misskey公式Discordサーバー
-- [Misskey Forum](https://forum.misskey.io/) - Misskeyに関する話題を扱うフォーラム
+## Sites internet
+- [Official Discord](https://discord.gg/Wp8gVStHW3) - Serveur Discord officiel de Misskey
+- [Misskey Forum](https://forum.misskey.io/) - Forum pour discuter de tout sujet en lien avec Misskey
## Comptes
-- [@repo@misskey.io](https://misskey.io/@repo) - Misskeyのリポジトリの更新を投稿するbot
+- [@repo@misskey.io](https://misskey.io/@repo) - Bot publiant les mises à jour effectuées dans le dépôt Misskey
-## ライブラリ
-- [misskey-dev/misskey.js](https://github.com/misskey-dev/misskey.js) - JavaScriptのMisskey SDK
-- [misskey-dev/mfm.js](https://github.com/misskey-dev/mfm.js) - JavaScriptのMFMパーサー実装
+## Programmathèques
+- [misskey-dev/misskey.js](https://github.com/misskey-dev/misskey.js) - SDK de Misskey en JavaScript
+- [misskey-dev/mfm.js](https://github.com/misskey-dev/mfm.js) - Implémentation d'un analyseur MFM en JavaScript
diff --git a/src/docs/fr-FR/general/misskey.md b/src/docs/fr-FR/general/misskey.md
index 2a3ee09a96..c56c5a99f0 100644
--- a/src/docs/fr-FR/general/misskey.md
+++ b/src/docs/fr-FR/general/misskey.md
@@ -3,7 +3,7 @@
Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。 開発は日本でsyuiloによって2014年から開始されました。 ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。
## 歴史
-開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にAcitivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
+開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
ℹ️ Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
誰でも開発に参加することができ、現在でも活発に開発が続いています。
@@ -43,7 +43,7 @@ Misskeyはビジネスではなく、利用は無料であるため、収益は
## クレジット
Misskeyの開発者や、Misskeyに寄付をしてくださった方の一覧は[こちら](/about-misskey)で見ることができます。
-## よくある質問
+## Questions fréquentes
### プロジェクトは何を目指していますか?
強いて言うと、漠然的になりますが広く使われる汎用的なプラットフォームになることを目指しています。 Misskeyは他のプロジェクトとは違い、何らかの思想(例えば、反中央集権)やビジョンに基づいて開発が行われているわけではなく、その点ではフラットです。 それが逆に、特定の方向性に縛られないフレキシブルさを生み出すことに繋がっていると感じています。
@@ -72,9 +72,9 @@ Misskeyは開発が進むにつれ使用する技術も大きく変わってき
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。
### Mastodonのフォークですか?
-いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じAcitivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
+いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
-### iOS/Androidのアプリはありますか?
+### « Existe-t-il des appli pour Android / iOS ? »
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
diff --git a/src/docs/fr-FR/general/report-issue.md b/src/docs/fr-FR/general/report-issue.md
index 63527e32af..9033352182 100644
--- a/src/docs/fr-FR/general/report-issue.md
+++ b/src/docs/fr-FR/general/report-issue.md
@@ -1,8 +1,8 @@
-# 不具合の報告
-不具合と思われる状況に遭遇したときは、まず[トラブルシューティング](./troubleshooting)をご一読ください。 それでも問題が解決しないときは、以下の情報を含めて[フォーラム](https://forum.misskey.io/)に投稿してください。 投稿することで、解決策が見つかったり、不具合と判断されれば開発チームによって修正が行われます。
+# Signaler un problème
+Lorsque vous pensez rencontrer un bug, commencez par consulter la page [Résolution des problèmes](./troubleshooting). Si, malgré cela, vous ne parvenez toujours pas à résoudre le problème, vous pouvez le soumettre sur le [Forum](https://forum.misskey.io/) en incluant dans votre message les renseignements listés ci-dessous. Contribuer sur le Forum vous permettra soit de trouver une solution soit de conclure à un bug, auquel cas l'équipe de développement sera en mesure d'effectuer les corrections nécessaires.
-## 含める情報
-- Misskeyのバージョン([情報ページ](/about)で確認できます)
-- お使いのブラウザの種類とバージョン
-- お使いのOSの種類とバージョン
-- 問題の再現手順
+## Renseignements à inclure
+- La version de Misskey que vous utilisez (peut être consultée sur la page [À propos de Misskey](/about))
+- Le nom et la version du navigateur que vous utilisez
+- Le nom et la version du système d'exploitation que vous utilisez
+- Les étapes à suivre pour reproduire votre problème
diff --git a/src/docs/fr-FR/general/troubleshooting.md b/src/docs/fr-FR/general/troubleshooting.md
index 9d9361da7b..3627babb34 100644
--- a/src/docs/fr-FR/general/troubleshooting.md
+++ b/src/docs/fr-FR/general/troubleshooting.md
@@ -1,9 +1,9 @@
-# Résolution de problèmes
-
+# Résolution des problèmes
+
問題が発生したときは、まずこちらをご確認ください。 該当する項目が無い、もしくは手順を試しても効果がない場合は、サーバーの管理者に連絡するか[不具合を報告](./report-issue)してください。
-## クライアントが起動しない
+## Le client ne démarre pas
ほとんどの場合、お使いのブラウザまたはOSのバージョンが古いことが原因です。 ブラウザおよびOSのバージョンを最新のものに更新してから、再度試してみてください。
これは稀ですが、それでも起動しない場合は、キャッシュが原因の場合があります。ブラウザのキャッシュをクリアして、再度試してみてください。
@@ -15,7 +15,7 @@
まだ問題がある場合は、サーバーの問題と思われるのでサーバーの管理者に連絡してください。
-## クライアントの動作が遅い
+## Le client est lent
以下を試してみてください:
- クライアント設定で「UIのアニメーションを減らす」を有効にする
@@ -30,11 +30,11 @@
## 通知やアンテナ等の点滅が消えない
点滅は、未読のコンテンツがあることを示しています。通常点滅が消えない場合は、コンテンツを遡ると未読なコンテンツが残っています。 すべて既読にしたと思われるのに、それでもなお点滅が続く場合(おそらく不具合と思われます)は設定から強制的にすべて既読扱いにすることができます。
-## Renoteができない
+## La fonction « Renoter » ne fonctionne pas
フォロワー限定のノートはRenoteすることはできません。
-## UI上で特定の要素が表示されない
+## Des éléments spécifiques de l'interface ne s'affichent pas
広告ブロッカーを使用しているとそのような不具合が発生することがあります。Misskeyではオフにしてご利用ください。
-## UI上で未翻訳の部分がある
+## Certaines parties de l'interface ne sont pas traduites
ほとんどの場合、単に翻訳が間に合っていないだけで、不具合ではありません。翻訳が終わるまでお待ちください。 [翻訳に参加](./misskey)していただくことも可能です。
diff --git a/src/docs/ht-HT/general/faq.md b/src/docs/ht-HT/general/faq.md
index ecb664e32e..1d0a63ce15 100644
--- a/src/docs/ht-HT/general/faq.md
+++ b/src/docs/ht-HT/general/faq.md
@@ -1,11 +1,14 @@
# よくある質問
ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。
-### iOS/Androidのアプリはありますか?
+## iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
+## Mastodonクライアントでログインできないのですが?
+MisskeyはMastodonのAPIと互換性がないため、一部を除きMastodonクライアントでMisskeyを利用することはできません。
+
## 他のサーバーのユーザーをフォローするときは?
メニューから検索を選び、ユーザー名をホスト込みで入力します。例: `@syuilo@misskey.io`
diff --git a/src/docs/ht-HT/general/glossary.md b/src/docs/ht-HT/general/glossary.md
index 1f403a06d2..b2a1fb626f 100644
--- a/src/docs/ht-HT/general/glossary.md
+++ b/src/docs/ht-HT/general/glossary.md
@@ -1,7 +1,7 @@
# 用語集
Misskeyに関する用語集です。
-## AcitivityPub
+## ActivityPub
(読み: あくてぃびてぃぱぶ) 分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。
## AiScript
diff --git a/src/docs/ht-HT/general/misskey.md b/src/docs/ht-HT/general/misskey.md
index 1e64a10e28..d97664ddca 100644
--- a/src/docs/ht-HT/general/misskey.md
+++ b/src/docs/ht-HT/general/misskey.md
@@ -3,7 +3,7 @@
Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。 開発は日本でsyuiloによって2014年から開始されました。 ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。
## 歴史
-開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にAcitivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
+開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
ℹ️ Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
誰でも開発に参加することができ、現在でも活発に開発が続いています。
@@ -72,7 +72,7 @@ Misskeyは開発が進むにつれ使用する技術も大きく変わってき
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。
### Mastodonのフォークですか?
-いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じAcitivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
+いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
### iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
diff --git a/src/docs/id-ID/general/faq.md b/src/docs/id-ID/general/faq.md
index ecb664e32e..1d0a63ce15 100644
--- a/src/docs/id-ID/general/faq.md
+++ b/src/docs/id-ID/general/faq.md
@@ -1,11 +1,14 @@
# よくある質問
ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。
-### iOS/Androidのアプリはありますか?
+## iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
+## Mastodonクライアントでログインできないのですが?
+MisskeyはMastodonのAPIと互換性がないため、一部を除きMastodonクライアントでMisskeyを利用することはできません。
+
## 他のサーバーのユーザーをフォローするときは?
メニューから検索を選び、ユーザー名をホスト込みで入力します。例: `@syuilo@misskey.io`
diff --git a/src/docs/id-ID/general/glossary.md b/src/docs/id-ID/general/glossary.md
index 1f41236ad1..b8cd78bc65 100644
--- a/src/docs/id-ID/general/glossary.md
+++ b/src/docs/id-ID/general/glossary.md
@@ -1,7 +1,7 @@
# 用語集
Misskeyに関する用語集です。
-## AcitivityPub
+## ActivityPub
(読み: あくてぃびてぃぱぶ) 分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。
## AiScript
diff --git a/src/docs/id-ID/general/misskey.md b/src/docs/id-ID/general/misskey.md
index 3239b0141d..18e74c63db 100644
--- a/src/docs/id-ID/general/misskey.md
+++ b/src/docs/id-ID/general/misskey.md
@@ -3,7 +3,7 @@
Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。 開発は日本でsyuiloによって2014年から開始されました。 ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。
## 歴史
-開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にAcitivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
+開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
ℹ️ Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
誰でも開発に参加することができ、現在でも活発に開発が続いています。
@@ -72,7 +72,7 @@ Misskeyは開発が進むにつれ使用する技術も大きく変わってき
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。
### Mastodonのフォークですか?
-いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じAcitivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
+いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
### iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
diff --git a/src/docs/id-ID/general/troubleshooting.md b/src/docs/id-ID/general/troubleshooting.md
index f895b49847..5cdd0ae8d3 100644
--- a/src/docs/id-ID/general/troubleshooting.md
+++ b/src/docs/id-ID/general/troubleshooting.md
@@ -1,4 +1,4 @@
-# トラブルシューティング
+# Penyelesaian Masalah
問題が発生したときは、まずこちらをご確認ください。 該当する項目が無い、もしくは手順を試しても効果がない場合は、サーバーの管理者に連絡するか[不具合を報告](./report-issue)してください。
diff --git a/src/docs/it-IT/general/faq.md b/src/docs/it-IT/general/faq.md
index ecb664e32e..1d0a63ce15 100644
--- a/src/docs/it-IT/general/faq.md
+++ b/src/docs/it-IT/general/faq.md
@@ -1,11 +1,14 @@
# よくある質問
ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。
-### iOS/Androidのアプリはありますか?
+## iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
+## Mastodonクライアントでログインできないのですが?
+MisskeyはMastodonのAPIと互換性がないため、一部を除きMastodonクライアントでMisskeyを利用することはできません。
+
## 他のサーバーのユーザーをフォローするときは?
メニューから検索を選び、ユーザー名をホスト込みで入力します。例: `@syuilo@misskey.io`
diff --git a/src/docs/it-IT/general/glossary.md b/src/docs/it-IT/general/glossary.md
index 356f028e91..8564693cfe 100644
--- a/src/docs/it-IT/general/glossary.md
+++ b/src/docs/it-IT/general/glossary.md
@@ -1,7 +1,7 @@
# 用語集
Misskeyに関する用語集です。
-## AcitivityPub
+## ActivityPub
(読み: あくてぃびてぃぱぶ) 分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。
## AiScript
diff --git a/src/docs/it-IT/general/misskey.md b/src/docs/it-IT/general/misskey.md
index d9243c0c3e..c89ed28372 100644
--- a/src/docs/it-IT/general/misskey.md
+++ b/src/docs/it-IT/general/misskey.md
@@ -3,7 +3,7 @@
Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。 開発は日本でsyuiloによって2014年から開始されました。 ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。
## 歴史
-開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にAcitivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
+開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
ℹ️ Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
誰でも開発に参加することができ、現在でも活発に開発が続いています。
@@ -72,7 +72,7 @@ Misskeyは開発が進むにつれ使用する技術も大きく変わってき
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。
### Mastodonのフォークですか?
-いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じAcitivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
+いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
### iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
diff --git a/src/docs/ja-JP/features/mute-and-block.md b/src/docs/ja-JP/features/mute-and-block.md
new file mode 100644
index 0000000000..4a58440852
--- /dev/null
+++ b/src/docs/ja-JP/features/mute-and-block.md
@@ -0,0 +1,43 @@
+# ミュートとブロック
+好みではないユーザーがいる場合は、ミュートを行うことでそのユーザーが自分から見えないようにすることができます。
+また、より強力な措置として、ブロックを行うことでそのユーザーから自分のコンテンツが見えないようになるほか、自分に対して関わることができないようにすることができます。
+ミュートされていることは相手は分かりませんが、ブロックされていることは相手に分かります。どちらを選ぶかはご自身の判断で行ってください。
+
+ℹ️ ミュートとブロックは併用できます。
+
+⚠️ 利用規約に違反するような、迷惑なユーザーがいる場合は運営者に報告することも検討してください。
+
+設定>ミュートとブロック から、自分がミュートまたはブロックしているユーザー一覧を確認することができます。
+
+## ミュート
+ユーザーをミュートすると、そのユーザーに関する次のコンテンツがMisskeyに表示されなくなります:
+
+- タイムラインや投稿の検索結果内の、そのユーザーの投稿(およびそれらの投稿に対する返信やRenote)
+- そのユーザーからの通知
+- メッセージ履歴一覧内の、そのユーザーとのメッセージ履歴
+- など
+
+ユーザーをミュートするには、対象のユーザーのユーザーページのメニューを開き、「ミュート」ボタンを押します。
+
+ℹ️ ミュートを行ったことは相手に通知されず、ミュートされていることを知ることもできません。
+
+## ブロック
+ユーザーをブロックすると、そのユーザーからあなたのコンテンツが見えないようになり、またあなたに対して以下のようなアクションをすることができなくなります。
+
+- フォローする
+- ユーザーリストに追加する
+- 返信する、Renoteする
+- リアクションする、アンケートに投票する
+- メッセージを送信する
+- など
+
+また、
+
+- ブロックする際に既にそのユーザーからフォローされていた場合はフォローが解除されます。
+- ブロックする際に既にそのユーザーがあなたをユーザーリストに入れていた場合はそのリストからあなたが削除されます。
+
+ユーザーをブロックするには、対象のユーザーのユーザーページのメニューを開き、「ブロック」ボタンを押します。
+
+⚠️ ブロックを行ったこと自体は相手に通知されませんが、フォローを行ったりなどの上記のアクションが行えなくなるので間接的にブロックされていることは分かります。
+
+⚠️ 相手から自分のコンテンツが見えなくなりますが、相手がアカウントを切り替えたりログアウト状態になれば見ることができます。あくまで簡易的、補助的なものとしてお考えください。
diff --git a/src/docs/ja-JP/features/mute.md b/src/docs/ja-JP/features/mute.md
deleted file mode 100644
index 6a9608662a..0000000000
--- a/src/docs/ja-JP/features/mute.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# ミュート
-
-ユーザーをミュートすると、そのユーザーに関する次のコンテンツがMisskeyに表示されなくなります:
-
-* タイムラインや投稿の検索結果内の、そのユーザーの投稿(およびそれらの投稿に対する返信やRenote)
-* そのユーザーからの通知
-* メッセージ履歴一覧内の、そのユーザーとのメッセージ履歴
-
-ユーザーをミュートするには、対象のユーザーのユーザーページに表示されている「ミュート」ボタンを押します。
-
-ミュートを行ったことは相手に通知されず、ミュートされていることを知ることもできません。
-
-設定>ミュート から、自分がミュートしているユーザー一覧を確認することができます。
diff --git a/src/docs/ja-JP/general/faq.md b/src/docs/ja-JP/general/faq.md
index 9187fa3773..60cd5fad8c 100644
--- a/src/docs/ja-JP/general/faq.md
+++ b/src/docs/ja-JP/general/faq.md
@@ -2,7 +2,7 @@
ここでは利用上のよくある質問について掲載しています。
Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。
-### iOS/Androidのアプリはありますか?
+## iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。
詳しくは[こちら](./apps)をご覧ください。
@@ -10,6 +10,9 @@ Misskeyのプロジェクト自体についてのよくある質問は[こちら
なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。
詳しくは[こちら](todo)をご覧ください。
+## Mastodonクライアントでログインできないのですが?
+MisskeyはMastodonのAPIと互換性がないため、一部を除きMastodonクライアントでMisskeyを利用することはできません。
+
## 他のサーバーのユーザーをフォローするときは?
メニューから検索を選び、ユーザー名をホスト込みで入力します。例: `@syuilo@misskey.io`
@@ -25,3 +28,6 @@ MFMには、そのURLのプレビューを無効にする構文があります
## Botを開発したい
Misskey APIを利用してBotの開発が可能です。[こちら](../advanced/develop-bot)をご確認ください。
+
+## ノートの翻訳機能はどのサービスを使用していますか?
+[DeepL](https://www.deepl.com/)を使用しています。
diff --git a/src/docs/ja-JP/general/glossary.md b/src/docs/ja-JP/general/glossary.md
index b9df7cfa81..90bc1132ce 100644
--- a/src/docs/ja-JP/general/glossary.md
+++ b/src/docs/ja-JP/general/glossary.md
@@ -1,7 +1,7 @@
# 用語集
Misskeyに関する用語集です。
-## AcitivityPub
+## ActivityPub
(読み: あくてぃびてぃぱぶ)
分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。
@@ -59,6 +59,9 @@ Misskeyの看板娘(公式キャラクター)です。
## インスタンス
todo
+## カスタム絵文字
+サーバーで用意された絵文字。カスタム絵文字ではない通常の絵文字は「Unicode絵文字」と区別して呼ばれる。
+
## コントロールパネル
インスタンスの設定画面のこと。
@@ -68,6 +71,9 @@ todo
## サイレンス
ノートをパブリックな公開範囲で投稿できなくされている状態。モデレーターの判断でユーザーごとに設定されます。詳細は[こちら。](../features/silence)
+## ジョブキュー
+アクティビティ配送などを順番に行うためのシステム。
+
## 凍結
アカウントが使用不可に設定されている状態。
diff --git a/src/docs/ja-JP/general/misskey.md b/src/docs/ja-JP/general/misskey.md
index d364780ec7..ea65c07239 100644
--- a/src/docs/ja-JP/general/misskey.md
+++ b/src/docs/ja-JP/general/misskey.md
@@ -6,7 +6,7 @@ Misskeyはオープンソースの分散型マイクロブログプラットフ
## 歴史
開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。
-当初は分散型ではありませんでしたが、2018年にAcitivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
+当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
ℹ️ Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
誰でも開発に参加することができ、現在でも活発に開発が続いています。
@@ -103,7 +103,7 @@ Misskeyは開発が進むにつれ使用する技術も大きく変わってき
### Mastodonのフォークですか?
いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。
開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。
-同じAcitivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
+同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
### iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。
diff --git a/src/docs/ja-KS/features/antenna.md b/src/docs/ja-KS/features/antenna.md
index 94ad9e4aea..4e977f5699 100644
--- a/src/docs/ja-KS/features/antenna.md
+++ b/src/docs/ja-KS/features/antenna.md
@@ -1,4 +1,4 @@
# アンテナ
-アンテナは、自由に条件を設定して、合致するノートを自動で収集することができる機能です。
+アンテナは、自由に条件を設定して、それに合うたノートを自動で集められる機能や。
-条件を設定したアンテナが作成された状態で、条件に合致するノートが投稿されると、リアルタイムでそのアンテナのタイムラインにノートが追加されます。
+条件の設定されとうアンテナが作成されとう状態で、それに合うたノートが投稿されたら、リアルタイムでそのアンテナのタイムラインにノートが追加されるで。
diff --git a/src/docs/ja-KS/features/custom-emoji.md b/src/docs/ja-KS/features/custom-emoji.md
index ed2e92be16..6480fcd43a 100644
--- a/src/docs/ja-KS/features/custom-emoji.md
+++ b/src/docs/ja-KS/features/custom-emoji.md
@@ -1,2 +1,2 @@
# カスタム絵文字
-カスタム絵文字は、インスタンスで用意された画像を絵文字のように使える機能です。 ノート、リアクション、チャット、自己紹介、名前などの場所で使うことができます。 カスタム絵文字をそれらの場所で使うには、絵文字ピッカーボタン(ある場合)を押すか、`:`を入力して絵文字サジェストを表示します。 テキスト内に`:foo:`のような形式の文字列が見つかると、`foo`の部分がカスタム絵文字名と解釈され、表示時には対応したカスタム絵文字に置き換わります。
+カスタム絵文字は、インスタンスで用意されとう画像を絵文字みたいに使える機能や。ノート、リアクション、チャット、自己紹介、名前などの場所で使えるで。カスタム絵文字をそれらの場所で使うには、絵文字ピッカーボタン(あるなら)を押すか、`:`を入力して絵文字サジェストを表示したらええ。 テキスト内に`:foo:`のような形式の絵文字が見つかったら、`foo`の部分がカスタム絵文字名と解釈されて、表示時にはそれに合うたカスタム絵文字に置き換わるで。
diff --git a/src/docs/ja-KS/features/deck.md b/src/docs/ja-KS/features/deck.md
index 8057e262fd..42962db767 100644
--- a/src/docs/ja-KS/features/deck.md
+++ b/src/docs/ja-KS/features/deck.md
@@ -1,15 +1,15 @@
# デッキ
-デッキは利用可能なUIのひとつです。「カラム」と呼ばれるビューを複数並べて表示させることで、カスタマイズ性が高く、情報量の多いUIが構築できることが特徴です。
+デッキは利用可能なUIのひとつや。「カラム」っちゅうビューを複数並べて表示さすことで、カスタマイズ性が高うて、情報量がようさんあるUIを構築できることが特徴やで。
## カラムの追加
-デッキの背景を右クリックし、「カラムを追加」して任意のカラムを追加できます。
+デッキの背景を右クリックして、「カラムを追加」で任意のカラムを追加できるで。
## カラムの移動
-カラムは、ドラッグアンドドロップで他のカラムと位置を入れ替えることが出来るほか、カラムメニュー(カラムのヘッダー右クリック)から位置を移動させることもできます。
+カラムは、ドラッグアンドドロップで他のカラムと位置を入れ替えられる以外にも、カラムメニュー(カラムのヘッダー右クリック)から位置を移動させられるで。
## カラムの水平分割
-カラムは左右だけでなく、上下に並べることもできます。 カラムメニューを開き、「左に重ねる」を選択すると、左のカラムの下に現在のカラムが移動します。 上下分割を解除するには、カラムメニューの「右に出す」を選択します。
+カラムは左右だけやなく、上下にも並べられるんや。 カラムメニューを開いて、「左に重ねる」を選択したら、左のカラムの下に現在のカラムが移動すんねん。 上下分割を解除したいなら、カラムメニューの「右に出す」を選択したらええで。
## カラムの設定
カラムメニューの「編集」を選択するとカラムの設定を編集できます。カラムの名前を変えたり、幅を変えたりできます。
diff --git a/src/docs/ja-KS/general/faq.md b/src/docs/ja-KS/general/faq.md
index ecb664e32e..1d0a63ce15 100644
--- a/src/docs/ja-KS/general/faq.md
+++ b/src/docs/ja-KS/general/faq.md
@@ -1,11 +1,14 @@
# よくある質問
ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。
-### iOS/Androidのアプリはありますか?
+## iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
+## Mastodonクライアントでログインできないのですが?
+MisskeyはMastodonのAPIと互換性がないため、一部を除きMastodonクライアントでMisskeyを利用することはできません。
+
## 他のサーバーのユーザーをフォローするときは?
メニューから検索を選び、ユーザー名をホスト込みで入力します。例: `@syuilo@misskey.io`
diff --git a/src/docs/ja-KS/general/glossary.md b/src/docs/ja-KS/general/glossary.md
index 1f403a06d2..b2a1fb626f 100644
--- a/src/docs/ja-KS/general/glossary.md
+++ b/src/docs/ja-KS/general/glossary.md
@@ -1,7 +1,7 @@
# 用語集
Misskeyに関する用語集です。
-## AcitivityPub
+## ActivityPub
(読み: あくてぃびてぃぱぶ) 分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。
## AiScript
diff --git a/src/docs/ja-KS/general/misskey.md b/src/docs/ja-KS/general/misskey.md
index 3975b805d8..3a24502e50 100644
--- a/src/docs/ja-KS/general/misskey.md
+++ b/src/docs/ja-KS/general/misskey.md
@@ -3,7 +3,7 @@
Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。 開発は日本でsyuiloによって2014年から開始されました。 ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。
## 歴史
-開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にAcitivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
+開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
ℹ️ Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
誰でも開発に参加することができ、現在でも活発に開発が続いています。
@@ -72,7 +72,7 @@ Misskeyは開発が進むにつれ使用する技術も大きく変わってき
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。
### Mastodonのフォークですか?
-いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じAcitivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
+いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
### iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
diff --git a/src/docs/jbo-EN/general/faq.md b/src/docs/jbo-EN/general/faq.md
index ecb664e32e..1d0a63ce15 100644
--- a/src/docs/jbo-EN/general/faq.md
+++ b/src/docs/jbo-EN/general/faq.md
@@ -1,11 +1,14 @@
# よくある質問
ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。
-### iOS/Androidのアプリはありますか?
+## iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
+## Mastodonクライアントでログインできないのですが?
+MisskeyはMastodonのAPIと互換性がないため、一部を除きMastodonクライアントでMisskeyを利用することはできません。
+
## 他のサーバーのユーザーをフォローするときは?
メニューから検索を選び、ユーザー名をホスト込みで入力します。例: `@syuilo@misskey.io`
diff --git a/src/docs/jbo-EN/general/glossary.md b/src/docs/jbo-EN/general/glossary.md
index 1f403a06d2..b2a1fb626f 100644
--- a/src/docs/jbo-EN/general/glossary.md
+++ b/src/docs/jbo-EN/general/glossary.md
@@ -1,7 +1,7 @@
# 用語集
Misskeyに関する用語集です。
-## AcitivityPub
+## ActivityPub
(読み: あくてぃびてぃぱぶ) 分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。
## AiScript
diff --git a/src/docs/jbo-EN/general/misskey.md b/src/docs/jbo-EN/general/misskey.md
index 1e64a10e28..d97664ddca 100644
--- a/src/docs/jbo-EN/general/misskey.md
+++ b/src/docs/jbo-EN/general/misskey.md
@@ -3,7 +3,7 @@
Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。 開発は日本でsyuiloによって2014年から開始されました。 ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。
## 歴史
-開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にAcitivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
+開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
ℹ️ Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
誰でも開発に参加することができ、現在でも活発に開発が続いています。
@@ -72,7 +72,7 @@ Misskeyは開発が進むにつれ使用する技術も大きく変わってき
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。
### Mastodonのフォークですか?
-いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じAcitivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
+いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
### iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
diff --git a/src/docs/kab-KAB/general/faq.md b/src/docs/kab-KAB/general/faq.md
index ecb664e32e..1d0a63ce15 100644
--- a/src/docs/kab-KAB/general/faq.md
+++ b/src/docs/kab-KAB/general/faq.md
@@ -1,11 +1,14 @@
# よくある質問
ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。
-### iOS/Androidのアプリはありますか?
+## iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
+## Mastodonクライアントでログインできないのですが?
+MisskeyはMastodonのAPIと互換性がないため、一部を除きMastodonクライアントでMisskeyを利用することはできません。
+
## 他のサーバーのユーザーをフォローするときは?
メニューから検索を選び、ユーザー名をホスト込みで入力します。例: `@syuilo@misskey.io`
diff --git a/src/docs/kab-KAB/general/glossary.md b/src/docs/kab-KAB/general/glossary.md
index 1f403a06d2..b2a1fb626f 100644
--- a/src/docs/kab-KAB/general/glossary.md
+++ b/src/docs/kab-KAB/general/glossary.md
@@ -1,7 +1,7 @@
# 用語集
Misskeyに関する用語集です。
-## AcitivityPub
+## ActivityPub
(読み: あくてぃびてぃぱぶ) 分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。
## AiScript
diff --git a/src/docs/kab-KAB/general/misskey.md b/src/docs/kab-KAB/general/misskey.md
index 1e64a10e28..d97664ddca 100644
--- a/src/docs/kab-KAB/general/misskey.md
+++ b/src/docs/kab-KAB/general/misskey.md
@@ -3,7 +3,7 @@
Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。 開発は日本でsyuiloによって2014年から開始されました。 ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。
## 歴史
-開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にAcitivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
+開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
ℹ️ Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
誰でも開発に参加することができ、現在でも活発に開発が続いています。
@@ -72,7 +72,7 @@ Misskeyは開発が進むにつれ使用する技術も大きく変わってき
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。
### Mastodonのフォークですか?
-いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じAcitivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
+いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
### iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
diff --git a/src/docs/kn-IN/general/faq.md b/src/docs/kn-IN/general/faq.md
index ecb664e32e..1d0a63ce15 100644
--- a/src/docs/kn-IN/general/faq.md
+++ b/src/docs/kn-IN/general/faq.md
@@ -1,11 +1,14 @@
# よくある質問
ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。
-### iOS/Androidのアプリはありますか?
+## iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
+## Mastodonクライアントでログインできないのですが?
+MisskeyはMastodonのAPIと互換性がないため、一部を除きMastodonクライアントでMisskeyを利用することはできません。
+
## 他のサーバーのユーザーをフォローするときは?
メニューから検索を選び、ユーザー名をホスト込みで入力します。例: `@syuilo@misskey.io`
diff --git a/src/docs/kn-IN/general/glossary.md b/src/docs/kn-IN/general/glossary.md
index b580362844..02fb1b92bc 100644
--- a/src/docs/kn-IN/general/glossary.md
+++ b/src/docs/kn-IN/general/glossary.md
@@ -1,7 +1,7 @@
# 用語集
Misskeyに関する用語集です。
-## AcitivityPub
+## ActivityPub
(読み: あくてぃびてぃぱぶ) 分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。
## AiScript
diff --git a/src/docs/kn-IN/general/misskey.md b/src/docs/kn-IN/general/misskey.md
index 1e64a10e28..d97664ddca 100644
--- a/src/docs/kn-IN/general/misskey.md
+++ b/src/docs/kn-IN/general/misskey.md
@@ -3,7 +3,7 @@
Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。 開発は日本でsyuiloによって2014年から開始されました。 ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。
## 歴史
-開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にAcitivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
+開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
ℹ️ Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
誰でも開発に参加することができ、現在でも活発に開発が続いています。
@@ -72,7 +72,7 @@ Misskeyは開発が進むにつれ使用する技術も大きく変わってき
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。
### Mastodonのフォークですか?
-いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じAcitivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
+いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
### iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
diff --git a/src/docs/ko-KR/general/faq.md b/src/docs/ko-KR/general/faq.md
index ecb664e32e..1d0a63ce15 100644
--- a/src/docs/ko-KR/general/faq.md
+++ b/src/docs/ko-KR/general/faq.md
@@ -1,11 +1,14 @@
# よくある質問
ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。
-### iOS/Androidのアプリはありますか?
+## iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
+## Mastodonクライアントでログインできないのですが?
+MisskeyはMastodonのAPIと互換性がないため、一部を除きMastodonクライアントでMisskeyを利用することはできません。
+
## 他のサーバーのユーザーをフォローするときは?
メニューから検索を選び、ユーザー名をホスト込みで入力します。例: `@syuilo@misskey.io`
diff --git a/src/docs/ko-KR/general/glossary.md b/src/docs/ko-KR/general/glossary.md
index 34c798b8e6..3edb33a73b 100644
--- a/src/docs/ko-KR/general/glossary.md
+++ b/src/docs/ko-KR/general/glossary.md
@@ -1,7 +1,7 @@
# 用語集
Misskeyに関する用語集です。
-## AcitivityPub
+## ActivityPub
(読み: あくてぃびてぃぱぶ) 分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。
## AiScript
diff --git a/src/docs/ko-KR/general/misskey.md b/src/docs/ko-KR/general/misskey.md
index f4ddca5c2b..d35e2124ea 100644
--- a/src/docs/ko-KR/general/misskey.md
+++ b/src/docs/ko-KR/general/misskey.md
@@ -3,7 +3,7 @@
Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。 開発は日本でsyuiloによって2014年から開始されました。 ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。
## 歴史
-開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にAcitivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
+開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
ℹ️ Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
誰でも開発に参加することができ、現在でも活発に開発が続いています。
@@ -72,7 +72,7 @@ Misskeyは開発が進むにつれ使用する技術も大きく変わってき
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。
### Mastodonのフォークですか?
-いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じAcitivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
+いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
### iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
diff --git a/src/docs/ko-KR/general/troubleshooting.md b/src/docs/ko-KR/general/troubleshooting.md
index 1023a31f0c..aac96a9811 100644
--- a/src/docs/ko-KR/general/troubleshooting.md
+++ b/src/docs/ko-KR/general/troubleshooting.md
@@ -1,4 +1,4 @@
-# 트러블 슈팅
+# 문제 해결
問題が発生したときは、まずこちらをご確認ください。 該当する項目が無い、もしくは手順を試しても効果がない場合は、サーバーの管理者に連絡するか[不具合を報告](./report-issue)してください。
diff --git a/src/docs/nl-NL/general/faq.md b/src/docs/nl-NL/general/faq.md
index ecb664e32e..1d0a63ce15 100644
--- a/src/docs/nl-NL/general/faq.md
+++ b/src/docs/nl-NL/general/faq.md
@@ -1,11 +1,14 @@
# よくある質問
ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。
-### iOS/Androidのアプリはありますか?
+## iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
+## Mastodonクライアントでログインできないのですが?
+MisskeyはMastodonのAPIと互換性がないため、一部を除きMastodonクライアントでMisskeyを利用することはできません。
+
## 他のサーバーのユーザーをフォローするときは?
メニューから検索を選び、ユーザー名をホスト込みで入力します。例: `@syuilo@misskey.io`
diff --git a/src/docs/nl-NL/general/glossary.md b/src/docs/nl-NL/general/glossary.md
index 1f403a06d2..b2a1fb626f 100644
--- a/src/docs/nl-NL/general/glossary.md
+++ b/src/docs/nl-NL/general/glossary.md
@@ -1,7 +1,7 @@
# 用語集
Misskeyに関する用語集です。
-## AcitivityPub
+## ActivityPub
(読み: あくてぃびてぃぱぶ) 分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。
## AiScript
diff --git a/src/docs/nl-NL/general/misskey.md b/src/docs/nl-NL/general/misskey.md
index 1e64a10e28..d97664ddca 100644
--- a/src/docs/nl-NL/general/misskey.md
+++ b/src/docs/nl-NL/general/misskey.md
@@ -3,7 +3,7 @@
Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。 開発は日本でsyuiloによって2014年から開始されました。 ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。
## 歴史
-開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にAcitivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
+開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
ℹ️ Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
誰でも開発に参加することができ、現在でも活発に開発が続いています。
@@ -72,7 +72,7 @@ Misskeyは開発が進むにつれ使用する技術も大きく変わってき
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。
### Mastodonのフォークですか?
-いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じAcitivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
+いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
### iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
diff --git a/src/docs/no-NO/general/faq.md b/src/docs/no-NO/general/faq.md
index ecb664e32e..1d0a63ce15 100644
--- a/src/docs/no-NO/general/faq.md
+++ b/src/docs/no-NO/general/faq.md
@@ -1,11 +1,14 @@
# よくある質問
ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。
-### iOS/Androidのアプリはありますか?
+## iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
+## Mastodonクライアントでログインできないのですが?
+MisskeyはMastodonのAPIと互換性がないため、一部を除きMastodonクライアントでMisskeyを利用することはできません。
+
## 他のサーバーのユーザーをフォローするときは?
メニューから検索を選び、ユーザー名をホスト込みで入力します。例: `@syuilo@misskey.io`
diff --git a/src/docs/no-NO/general/glossary.md b/src/docs/no-NO/general/glossary.md
index 1f403a06d2..b2a1fb626f 100644
--- a/src/docs/no-NO/general/glossary.md
+++ b/src/docs/no-NO/general/glossary.md
@@ -1,7 +1,7 @@
# 用語集
Misskeyに関する用語集です。
-## AcitivityPub
+## ActivityPub
(読み: あくてぃびてぃぱぶ) 分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。
## AiScript
diff --git a/src/docs/no-NO/general/misskey.md b/src/docs/no-NO/general/misskey.md
index 1e64a10e28..d97664ddca 100644
--- a/src/docs/no-NO/general/misskey.md
+++ b/src/docs/no-NO/general/misskey.md
@@ -3,7 +3,7 @@
Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。 開発は日本でsyuiloによって2014年から開始されました。 ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。
## 歴史
-開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にAcitivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
+開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
ℹ️ Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
誰でも開発に参加することができ、現在でも活発に開発が続いています。
@@ -72,7 +72,7 @@ Misskeyは開発が進むにつれ使用する技術も大きく変わってき
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。
### Mastodonのフォークですか?
-いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じAcitivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
+いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
### iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
diff --git a/src/docs/pl-PL/general/faq.md b/src/docs/pl-PL/general/faq.md
index ecb664e32e..1d0a63ce15 100644
--- a/src/docs/pl-PL/general/faq.md
+++ b/src/docs/pl-PL/general/faq.md
@@ -1,11 +1,14 @@
# よくある質問
ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。
-### iOS/Androidのアプリはありますか?
+## iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
+## Mastodonクライアントでログインできないのですが?
+MisskeyはMastodonのAPIと互換性がないため、一部を除きMastodonクライアントでMisskeyを利用することはできません。
+
## 他のサーバーのユーザーをフォローするときは?
メニューから検索を選び、ユーザー名をホスト込みで入力します。例: `@syuilo@misskey.io`
diff --git a/src/docs/pl-PL/general/glossary.md b/src/docs/pl-PL/general/glossary.md
index 96a5ce2398..8a24bd214c 100644
--- a/src/docs/pl-PL/general/glossary.md
+++ b/src/docs/pl-PL/general/glossary.md
@@ -1,7 +1,7 @@
# 用語集
Misskeyに関する用語集です。
-## AcitivityPub
+## ActivityPub
(読み: あくてぃびてぃぱぶ) 分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。
## AiScript
diff --git a/src/docs/pl-PL/general/misskey.md b/src/docs/pl-PL/general/misskey.md
index 2ad7e0da66..65ac31f86b 100644
--- a/src/docs/pl-PL/general/misskey.md
+++ b/src/docs/pl-PL/general/misskey.md
@@ -3,7 +3,7 @@
Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。 開発は日本でsyuiloによって2014年から開始されました。 ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。
## 歴史
-開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にAcitivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
+開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
ℹ️ Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
誰でも開発に参加することができ、現在でも活発に開発が続いています。
@@ -72,7 +72,7 @@ Misskeyは開発が進むにつれ使用する技術も大きく変わってき
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。
### Mastodonのフォークですか?
-いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じAcitivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
+いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
### iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
diff --git a/src/docs/pt-PT/general/faq.md b/src/docs/pt-PT/general/faq.md
index ecb664e32e..1d0a63ce15 100644
--- a/src/docs/pt-PT/general/faq.md
+++ b/src/docs/pt-PT/general/faq.md
@@ -1,11 +1,14 @@
# よくある質問
ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。
-### iOS/Androidのアプリはありますか?
+## iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
+## Mastodonクライアントでログインできないのですが?
+MisskeyはMastodonのAPIと互換性がないため、一部を除きMastodonクライアントでMisskeyを利用することはできません。
+
## 他のサーバーのユーザーをフォローするときは?
メニューから検索を選び、ユーザー名をホスト込みで入力します。例: `@syuilo@misskey.io`
diff --git a/src/docs/pt-PT/general/glossary.md b/src/docs/pt-PT/general/glossary.md
index fbf52137b9..666f703585 100644
--- a/src/docs/pt-PT/general/glossary.md
+++ b/src/docs/pt-PT/general/glossary.md
@@ -1,7 +1,7 @@
# 用語集
Misskeyに関する用語集です。
-## AcitivityPub
+## ActivityPub
(読み: あくてぃびてぃぱぶ) 分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。
## AiScript
diff --git a/src/docs/pt-PT/general/misskey.md b/src/docs/pt-PT/general/misskey.md
index 1e64a10e28..d97664ddca 100644
--- a/src/docs/pt-PT/general/misskey.md
+++ b/src/docs/pt-PT/general/misskey.md
@@ -3,7 +3,7 @@
Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。 開発は日本でsyuiloによって2014年から開始されました。 ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。
## 歴史
-開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にAcitivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
+開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
ℹ️ Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
誰でも開発に参加することができ、現在でも活発に開発が続いています。
@@ -72,7 +72,7 @@ Misskeyは開発が進むにつれ使用する技術も大きく変わってき
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。
### Mastodonのフォークですか?
-いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じAcitivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
+いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
### iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
diff --git a/src/docs/ru-RU/general/faq.md b/src/docs/ru-RU/general/faq.md
index ecb664e32e..1d0a63ce15 100644
--- a/src/docs/ru-RU/general/faq.md
+++ b/src/docs/ru-RU/general/faq.md
@@ -1,11 +1,14 @@
# よくある質問
ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。
-### iOS/Androidのアプリはありますか?
+## iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
+## Mastodonクライアントでログインできないのですが?
+MisskeyはMastodonのAPIと互換性がないため、一部を除きMastodonクライアントでMisskeyを利用することはできません。
+
## 他のサーバーのユーザーをフォローするときは?
メニューから検索を選び、ユーザー名をホスト込みで入力します。例: `@syuilo@misskey.io`
diff --git a/src/docs/ru-RU/general/glossary.md b/src/docs/ru-RU/general/glossary.md
index 9ff9bd4589..573dd2a327 100644
--- a/src/docs/ru-RU/general/glossary.md
+++ b/src/docs/ru-RU/general/glossary.md
@@ -1,7 +1,7 @@
# 用語集
Misskeyに関する用語集です。
-## AcitivityPub
+## ActivityPub
(読み: あくてぃびてぃぱぶ) 分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。
## AiScript
diff --git a/src/docs/ru-RU/general/misskey.md b/src/docs/ru-RU/general/misskey.md
index 5ee0a9282f..f2426925db 100644
--- a/src/docs/ru-RU/general/misskey.md
+++ b/src/docs/ru-RU/general/misskey.md
@@ -1,87 +1,142 @@
# О Misskey
-Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。 開発は日本でsyuiloによって2014年から開始されました。 ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。
+Misskey (Миски) — проект распределённой площадки для микроблогов с открытым исходным кодом. Его характерные черты — обилие разнообразных функций, как например «Диск» или «Реакции», и невероятно гибко настраиваемый интерфейс пользователя. Проект родился в 2014 году благодаря программисту по имени syuilo из Японии.
-## 歴史
-開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にAcitivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
-ℹ️ Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
+## История
+В самом начале Misskey задумывался в первую очередь как доска объявлений. В какой-то момент сюда добавили хронологическую ленту для заметок, которая вдруг стала набирать популярность среди пользователей. Так постепенно разработка переместилась с доски объявлений в микроблоги. Misskey не сразу стал распределённым. Децентрализация пришла в проект вместе с реализацией протокола ActivityPub в 2018 году. Уже в таком виде он стал признан во всём мире и продолжает существовать по сей день.
+ℹ️ Название Misskey взято из песни Brain Diver певицы May'n. Её syuilo слушал в то время.
-誰でも開発に参加することができ、現在でも活発に開発が続いています。
+Сейчас каждый может присоединиться к разработке, и Misskey активно развивается при участии таких добровольцев.
-## 分散型とは何か?
+## «Децентрализация»? Что это?
-分散(distributed)型とは、非中央集権(decentralized)とも呼ばれ、コミュニティが多数のサーバーに分散して存在し、それらが相互に通信(連合、federation)することでコンテンツ共有ネットワーク(Fediverse)を形成していることが特徴のサービスです。 単一のサーバーしか存在しない、もしくは複数存在しても互いに独立している場合は中央集権なサービスと言われ、例えばTwitterやFacebookなどほとんどのサービスがそれに該当します。 分散型のメリットは、自分に合った運営者やテーマのサーバーを選択できることです。自分でサーバーを作成することもできます。連合するおかげで、どのサーバーを選んでも、同じコミュニティにアクセスできます。
+«Распределённые», или «децентрализованные» сервисы представляют собой множество независимых узлов, которые сообщаются (объединяются, federate) друг с другом, образуя единую федеративную сеть (Fediverse).
+Сервисы же, представляющие собой один единственный сервер, сайт, или множество разрозненных, не связанных друг с другом, называются централизованными. К таким можно отнести бо́льшую часть существующих, и Twitter или Facebook — их характерные примеры. У распределённых сервисов есть преимущество, заключающееся в том, что у вас есть свобода выбрать сервер по собственному вкусу и отношению к тем, кто его держит.Можно поднять и свой собственный.Благодаря федеративному устройству, вы будете на связи со всем сообществом, какой бы узел не выбрали.
-## 常にオープンソース
-Misskeyはこれまでもこれからも、オープンソースであり続けます。オープンソースとは、簡単に言うとソフトウェアのソースコード(プログラム)が公開されていることです。ソースコードの修正や再配布が可能であることを定義に含めることもあります。 Misskeyのすべてのソースコードは[AGPL](https://github.com/misskey-dev/misskey/blob/develop/LICENSE)というオープンソースライセンスの下に[公開](https://github.com/misskey-dev)されていて、誰でも自由に閲覧、使用、修正、改変、再配布をすることができます。 オープンソースは、自分で好きなように変えたり、有害な処理が含まれていないことを確認することができたり、誰でも開発に参加できるなどの、様々なメリットがあります。 上述の分散型を実現するためにも、オープンソースであるということは必要不可欠な要素です。 再び引き合いに出しますが、TwitterやFacebookなどの利益を得ているほとんどのサービスはオープンソースではありません。
+## Открытый исходный код навсегда
+У Misskey всегда был, есть и будет открытый исходный код.«Открытый исходный код», попросту говоря, — код программы, который свободно доступен для всех.Это определение включает также возможность изменять и распространять исходный код. Весь исходный код Misskey [распространяется под лицензией](https://github.com/misskey-dev)
+AGPL0>, и это значит, что любой может его изучать, использовать, исправлять, менять и распространять без ограничений. Открытый исходный код вообще даёт множество ценных возможностей для каждого: менять его под свои нужды и желания, проверять на отсутствие чего-то вредоносного, участвовать в развитии проектов и множество других. Эти качества для децентрализованного проекта, которым является Misskey, жизненно необходимы. И опять, такие созданные ради прибыли сервисы, как уже упомянутые выше Twitter и Facebook, не имеют открытого кода.
-
+
-## 開発に参加する、プロジェクトを支援する
-Misskeyを気に入っていただけたら、ぜひプロジェクトを支援してください。プロジェクトに貢献するには、以下で紹介するようにいろいろな方法があります。方法によっては開発のスキルは不要なので、誰でも気軽に参加し貢献することができます。いつでもお待ちしています。
+## Как принять участие в судьбе проекта
-### 機能を追加したり、バグを修正する
-ソフトウェアエンジニアのスキルをお持ちの方であれば、ソースコードを編集する形でプロジェクトに貢献することができます。 貢献についてのガイドは[こちら](https://github.com/misskey-dev/misskey/blob/develop/CONTRIBUTING.md)です。
+Если вам по душе Misskey, будет здорово, если вы поддержите проект.Это можно сделать множеством способов, и дальше будет рассказано про некоторые из них.Если вы думаете, для этого надо уметь программировать, то это не так — помочь может каждый.Мы всегда рады вашему участию.
-### 議論に参加する
-新しい機能、または既存の機能について意見を述べたり、不具合を報告したりすることでも貢献できます。 そのようなディスカッションは[GitHub](https://github.com/misskey-dev)上か、[フォーラム](https://forum.misskey.io/)等で行われます。
-### テキストを翻訳する
-Misskeyは様々な言語に対応しています(i18n -internationalizationの略- と呼ばれます)。元の言語は基本的に日本語ですが、有志によって他の言語へと翻訳されています。 その翻訳作業に加わっていただくことでもMisskeyに貢献できます。 Misskeyは[Crowdinというサービスを使用して翻訳の管理を行っています。](https://crowdin.com/project/misskey)
-### 感想を投稿する
-不具合報告等だけではなく、Misskeyの良い点、楽しい点といったポジティブな意見もぜひ共有してください。開発の励みになり、それは間接的ですがプロジェクトへの貢献です。
+### Добавить функцию и исправить ошибку
-### ミスキストを増やす
-ミスキストとは、Misskeyを使用する人のことです。 知り合いに紹介するなどしてMisskeyを広めていただければ、ミスキストが増え開発のモチベーションが上がります。
+Если вы умеете программировать, то можете непосредственно поучаствовать в разработке, внося изменения в ихсодный код. Ознакомьтесь с [руководством для разработчиков](https://github.com/misskey-dev/misskey/blob/develop/CONTRIBUTING.md) по ссылке для этого.
-### 寄付をする
-Misskeyはビジネスではなく、利用は無料であるため、収益は皆様からの寄付のみです。(インスタンスによっては広告収入を得ているような場合もありますが、それは運営者の収入であり直接開発者への収入にはなりません) 寄付をしていただければ、今後も開発を続けることが可能になり、プロジェクトへの貢献になります。 寄付は基本的には[Patreon](https://www.patreon.com/syuilo)で受け付けています。 一定額寄付していただけると、Misskeyの[情報ページ](/about-misskey)に名前を記載することができます。
-また、サーバーの運営者も、基本的には収益を得ていません。サーバーの運営にはコストがかかるので、運営者の支援をすることもご検討ください。 開発には直接関係しませんが、サーバーがあってこそのプロジェクトなので、運営が維持されるというのは開発と同じくらい重要なことです。
-## クレジット
-Misskeyの開発者や、Misskeyに寄付をしてくださった方の一覧は[こちら](/about-misskey)で見ることができます。
+### Поучаствовать в обсуждении
-## よくある質問
-### プロジェクトは何を目指していますか?
-強いて言うと、漠然的になりますが広く使われる汎用的なプラットフォームになることを目指しています。 Misskeyは他のプロジェクトとは違い、何らかの思想(例えば、反中央集権)やビジョンに基づいて開発が行われているわけではなく、その点ではフラットです。 それが逆に、特定の方向性に縛られないフレキシブルさを生み出すことに繋がっていると感じています。
+Если хотите поделиться соображениями о новых или уже существующих функциях, сообщить об ошибках, то добро пожаловать на [GitHub](https://github.com/misskey-dev), на [форум](https://forum.misskey.io/) и т. д.
+
+
+
+### Перевести на другой язык
+
+Misskey переводится на многие языки мира (так называемая i18n — интернационализация).Изначально здесь всё на японском языке, но энтузиасты делают переводы на другие языки. Перевод — это ещё один способ, которым вы можете помочь Misskey. Если готовы, переходите на [сайт Crowdin](https://crowdin.com/project/misskey)
+
+
+
+### Поделиться впечатлениями
+
+Не только сообщая об ошибках, но и рассказывая, за что вам нравится Misskey вы делаете его живым.Ваши слова поддерживают дух разработчиков, так что, пусть косвенно, но тоже являются вкладом в проект.
+
+
+
+### Увеличить численность мискийцев
+
+«Мискиец» означает того, кто пользуется Misskey. Знакомя окружающих с Misskey, вы помогаете пополнять ряды мискийцев, и это вдохновляет разработчиков делать его лучше.
+
+
+
+### Поддержать материально
+
+Misskey — некоммерческий проект, он бесплатен и держится на добровольных пожертвованиях.(Возможно, вы заметили, что на некоторых узлах есть реклама, но это заработок исключительно владельцев серверов, а никак не разработчиков). Деньги, которыми вы делитесь с разработчиками, позволяют развиваться проекту и дальше. Это ещё один способ поддержать проект. Основной способ такой поддержки — сайт [Patreon](https://www.patreon.com/syuilo). Если пожертвуете определённую сумму, что получите возможность указать своё имя на странице [о Misskey](/about-misskey).
+
+Кроме того, владельцы серверов как правило не зарабатывают на этом.Содержание сервера всё же стоит денег, поэтому ещё одной хорошей идеей будет материальная поддержка администраторов вашего узла. Это, конечно, не имеет отношения к разработке, но сохранение и развитие всей сети не менее важно, чем собственно Misskey.
+
+
+
+## Зал славы
+
+[Имена разработчиков и благотворителей можно увидеть по этой ссылке.](/about-misskey)
+
+
+
+## Часто задаваемые вопросы
+
+
+### Какие у проекта цели?
+
+Вообще говоря, на этот вопрос нет точного ответа. В общем, Misskey пытается стать универсальной платформой для широкого применения (что бы это не значило). Misskey не похож на другие проекты в том плане, что какой-то идеи (например, децентрализации), вокруг которой строится проект, или видения его развития нет. Можно сказать, он бесцельный. С другой стороны, отсутствие рамок даёт гибкость и чувство свободы.
-### 企業によって開発されていますか?
-いいえ。Misskeyの開発は個人で行われており、商業的でもないため、特定の企業の関りはありません。 開発メンバーも基本的にはボランティアです。 また、開発に対し企業のスポンサーがつくこともありますが、その場合でもやはり開発は個人のコミュニティが主体です。
+### Является ли Misskey продуктом коммерческой компании?
-### 誰が運営していますか?
-Misskeyは分散型なため、各サーバーにそれぞれ異なった運営者がいます。従って、特定の個人や企業によって、Misskeyの全てが運営されているわけではありません。 また、開発チームが運営を行うわけでもないため、運営に関する連絡は、お使いのサーバーの運営者に行ってください。 サーバーの運営者は、[このページ](/about)で確認することができます。 あなたがサーバーを作成すれば、あなたが運営者になります。
+Нет.Misskey разрабатывается частными лицами и не связан ни с какими компаниями с целью коммерциализации. В целом, участие в команде разработки добровольно и не предполагает оплаты. У проекта есть компании-спонсоры, однако развитие всё же в руках сообщества обычных людей.
-### どのサーバーを選べばいいですか?
-[サーバー一覧が公開されています。](https://join.misskey.page/ja-JP/instances) サーバーによってコミュニティのテーマ(特定のこと、ものが好き 等)が決められている場合があるので、自分に合ったテーマのサーバーがあれば、そこを選ぶと良いかもしれません。 他にも、サーバーの規模、ユーザー層、国および言語、運営者が信頼できるかどうか、などの観点があります。 なお、Misskey公式のサーバーというものはありません。自身で新しくサーバーを作成するという選択肢もあります。
-基本的にどのサーバーを選んだとしても、他の全てのサーバーのユーザーと繋がることができます。
-### サーバーを建てるにはどうしたらいいですか?
+### Кто управляет Misskey?
+
+Вы же помните, что Misskey децентрализован? У каждого узла Misskey свои хозяева.Сладовательно, у серверов Misskey нет единого человека или компании, управляющих ими. Так что команда разработки никак контролирует все эти узлы, и на все вопросы, касающихся отдельных узлов вам сможет ответить только их администрация. [Узнать, кто управляет данным узлом, можно на специальной странице.](/about) Создав собственный узел, уже вы станете его администратором.
+
+
+
+### Какой узел выбрать?
+
+[По ссылке есть (неполный) список узлов.](https://join.misskey.page/ja-JP/instances) У какого-то узла может быть заявлена объединяющая всех тематика (какое-то кино или хобби, например). Если такое вас интересует, присоединиться будет неплохим выбором. Кроме того, для вас могут быть важны размер сервера, коллектив, страна, язык, или доверяете ли вы его хозяевам. Какого-то особого «официального» сервера у Misskey нет.Ко всему прочему вы можете создать свой собственный узел на личном сервере.
+
+По большому счёту не важно, какой узел вы себе выберете. Независимо от этого вы будете на связи со всеми остальными узлами сети.
+
+
+
+### Как поднять свой собственный сервер?
+
Misskeyサーバーの作成に興味を持っていただきありがとうございます。 2021年現在、Misskeyのホスティングサービスは存在しないため、サーバーの作成にはある程度の知識が必要です。 サーバーの作成方法については[こちら](todo)をご覧ください。
-### どのような技術を使用していますか?
+
+
+### Какие технологии использует Misskey?
+
Misskeyは開発が進むにつれ使用する技術も大きく変わってきました。開発当初はMySQL + PHP + jQueryといった構成でしたが、現在は以下のようになっています。
-- サーバーサイド: Node.js
-- データベース: PostgreSQL、Redis
-- UIフレームワーク: Vue.js
-- プログラミング言語: TypeScript
+
+- ПО на стороне сервера: Node.js
+- Система управления базой данных: PostgreSQL, Redis
+- Интерфейс пользователя: Vue.js
+- Язык программирования: TypeScript
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。
-### Mastodonのフォークですか?
-いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じAcitivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
-### iOS/Androidのアプリはありますか?
+
+### А не клон ли это Mastodon?
+
+Нет.MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
+
+
+
+### Существуют ли приложения для iOS или Android?
+
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
-### Misskeyのロゴ、アイコンはどこで入手できますか?
-(準備中)
-### 時折目にする猫耳の可愛い女の子は?
-Misskeyの守り神、藍ちゃんです。アイチャンカワイイヤッター!
-
+
+### Где скачать логотип или значок Misskey?
+
+(Скоро будет)
+
+
+
+### Кто эта прелестная девочка с кошачьими ушками?
+
+Это бог-хранитель Misskey, Ай.(Ай назвали прелестной, урря!)
+
diff --git a/src/docs/ru-RU/general/troubleshooting.md b/src/docs/ru-RU/general/troubleshooting.md
index f895b49847..e325e4e944 100644
--- a/src/docs/ru-RU/general/troubleshooting.md
+++ b/src/docs/ru-RU/general/troubleshooting.md
@@ -1,4 +1,4 @@
-# トラブルシューティング
+# Разрешение проблем
問題が発生したときは、まずこちらをご確認ください。 該当する項目が無い、もしくは手順を試しても効果がない場合は、サーバーの管理者に連絡するか[不具合を報告](./report-issue)してください。
diff --git a/src/docs/th-TH/general/faq.md b/src/docs/th-TH/general/faq.md
index ecb664e32e..1d0a63ce15 100644
--- a/src/docs/th-TH/general/faq.md
+++ b/src/docs/th-TH/general/faq.md
@@ -1,11 +1,14 @@
# よくある質問
ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。
-### iOS/Androidのアプリはありますか?
+## iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
+## Mastodonクライアントでログインできないのですが?
+MisskeyはMastodonのAPIと互換性がないため、一部を除きMastodonクライアントでMisskeyを利用することはできません。
+
## 他のサーバーのユーザーをフォローするときは?
メニューから検索を選び、ユーザー名をホスト込みで入力します。例: `@syuilo@misskey.io`
diff --git a/src/docs/th-TH/general/glossary.md b/src/docs/th-TH/general/glossary.md
index 1f403a06d2..b2a1fb626f 100644
--- a/src/docs/th-TH/general/glossary.md
+++ b/src/docs/th-TH/general/glossary.md
@@ -1,7 +1,7 @@
# 用語集
Misskeyに関する用語集です。
-## AcitivityPub
+## ActivityPub
(読み: あくてぃびてぃぱぶ) 分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。
## AiScript
diff --git a/src/docs/th-TH/general/misskey.md b/src/docs/th-TH/general/misskey.md
index 1e64a10e28..d97664ddca 100644
--- a/src/docs/th-TH/general/misskey.md
+++ b/src/docs/th-TH/general/misskey.md
@@ -3,7 +3,7 @@
Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。 開発は日本でsyuiloによって2014年から開始されました。 ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。
## 歴史
-開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にAcitivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
+開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
ℹ️ Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
誰でも開発に参加することができ、現在でも活発に開発が続いています。
@@ -72,7 +72,7 @@ Misskeyは開発が進むにつれ使用する技術も大きく変わってき
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。
### Mastodonのフォークですか?
-いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じAcitivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
+いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
### iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
diff --git a/src/docs/ug-CN/general/faq.md b/src/docs/ug-CN/general/faq.md
index ecb664e32e..1d0a63ce15 100644
--- a/src/docs/ug-CN/general/faq.md
+++ b/src/docs/ug-CN/general/faq.md
@@ -1,11 +1,14 @@
# よくある質問
ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。
-### iOS/Androidのアプリはありますか?
+## iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
+## Mastodonクライアントでログインできないのですが?
+MisskeyはMastodonのAPIと互換性がないため、一部を除きMastodonクライアントでMisskeyを利用することはできません。
+
## 他のサーバーのユーザーをフォローするときは?
メニューから検索を選び、ユーザー名をホスト込みで入力します。例: `@syuilo@misskey.io`
diff --git a/src/docs/ug-CN/general/glossary.md b/src/docs/ug-CN/general/glossary.md
index 1f403a06d2..b2a1fb626f 100644
--- a/src/docs/ug-CN/general/glossary.md
+++ b/src/docs/ug-CN/general/glossary.md
@@ -1,7 +1,7 @@
# 用語集
Misskeyに関する用語集です。
-## AcitivityPub
+## ActivityPub
(読み: あくてぃびてぃぱぶ) 分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。
## AiScript
diff --git a/src/docs/ug-CN/general/misskey.md b/src/docs/ug-CN/general/misskey.md
index 1e64a10e28..d97664ddca 100644
--- a/src/docs/ug-CN/general/misskey.md
+++ b/src/docs/ug-CN/general/misskey.md
@@ -3,7 +3,7 @@
Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。 開発は日本でsyuiloによって2014年から開始されました。 ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。
## 歴史
-開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にAcitivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
+開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
ℹ️ Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
誰でも開発に参加することができ、現在でも活発に開発が続いています。
@@ -72,7 +72,7 @@ Misskeyは開発が進むにつれ使用する技術も大きく変わってき
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。
### Mastodonのフォークですか?
-いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じAcitivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
+いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
### iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
diff --git a/src/docs/uk-UA/general/faq.md b/src/docs/uk-UA/general/faq.md
index ecb664e32e..1d0a63ce15 100644
--- a/src/docs/uk-UA/general/faq.md
+++ b/src/docs/uk-UA/general/faq.md
@@ -1,11 +1,14 @@
# よくある質問
ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。
-### iOS/Androidのアプリはありますか?
+## iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
+## Mastodonクライアントでログインできないのですが?
+MisskeyはMastodonのAPIと互換性がないため、一部を除きMastodonクライアントでMisskeyを利用することはできません。
+
## 他のサーバーのユーザーをフォローするときは?
メニューから検索を選び、ユーザー名をホスト込みで入力します。例: `@syuilo@misskey.io`
diff --git a/src/docs/uk-UA/general/glossary.md b/src/docs/uk-UA/general/glossary.md
index 809babdca4..9cf155943b 100644
--- a/src/docs/uk-UA/general/glossary.md
+++ b/src/docs/uk-UA/general/glossary.md
@@ -1,7 +1,7 @@
# 用語集
Misskeyに関する用語集です。
-## AcitivityPub
+## ActivityPub
(読み: あくてぃびてぃぱぶ) 分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。
## AiScript
diff --git a/src/docs/uk-UA/general/misskey.md b/src/docs/uk-UA/general/misskey.md
index 293d7093fb..2c229c7496 100644
--- a/src/docs/uk-UA/general/misskey.md
+++ b/src/docs/uk-UA/general/misskey.md
@@ -3,7 +3,7 @@
Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。 開発は日本でsyuiloによって2014年から開始されました。 ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。
## 歴史
-開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にAcitivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
+開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
ℹ️ Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
誰でも開発に参加することができ、現在でも活発に開発が続いています。
@@ -72,7 +72,7 @@ Misskeyは開発が進むにつれ使用する技術も大きく変わってき
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。
### Mastodonのフォークですか?
-いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じAcitivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
+いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
### iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
diff --git a/src/docs/zh-CN/admin/disable-timelines.md b/src/docs/zh-CN/admin/disable-timelines.md
index fb20e91a43..fdc66a6898 100644
--- a/src/docs/zh-CN/admin/disable-timelines.md
+++ b/src/docs/zh-CN/admin/disable-timelines.md
@@ -1,8 +1,8 @@
# 禁用 LTL/STL/GTL
Misskey 允许您禁用 LTL/STL/GTL。如果需要启用/禁用,请在实例控制面板中进行设置。
-LTLやSTLは、そのインスタンス全員の投稿が見れるため、新規のユーザーにとってはユーザーを探す必要がなくなり、興味のあるユーザーを見つけやすいという利点があります。 しかし同時に、フォロー機能が活用されなくなったり、不適切な投稿が目につきやすくなったり、チャットのようになることで内輪感が生じて逆に新規ユーザーが参加しにくくなるといったデメリットも持ち合わせています。 サーバーによってメリット/デメリットどちらが優勢かは異なるので、オプションとして無効にできるようになっています。 もしデメリットの方が上回っていると感じたら、それらのタイムラインを無効化することも検討してください。
+LTL 和 STL 的优点是新用户不必寻找用户,因为他们可以查看来自所有实例的帖子,从而更容易找到感兴趣的用户。 但同时它也存在着诸多缺点,例如无法使用关注,容易看到不适宜的帖子,感觉像小圈子内部对话一样而使新用户难以参与等等。 不同的服务器会有不同的优缺点,因此可以选择禁用它们。 如果您认为弊大于利,请考虑禁用这些时间线。
-⚠️ 無効化を行うと、ユーザーが困惑し、短期的に見て利用者が減る可能性があります。そのため、無効化の際は影響を慎重に検討し、事前に説明してフォローを整える期間を一定程度設けることを推奨します。
+⚠️ 禁用后可能会使用户感到困惑,并导致短期内的用户数量减少。因此,建议在禁用时慎重考虑影响。建议事先发布声明并留出一定时间作为过渡。
-なお、管理者/モデレーターは、これらのタイムラインの無効化状態は適用されず、引き続き利用することが可能です。
+请注意,这些时间线的禁用状态不适用于管理员/版主,这些用户可以继续使用。
diff --git a/src/docs/zh-CN/advanced/api.md b/src/docs/zh-CN/advanced/api.md
index 76019b6145..a1ca2f470b 100644
--- a/src/docs/zh-CN/advanced/api.md
+++ b/src/docs/zh-CN/advanced/api.md
@@ -1,58 +1,58 @@
# Misskey API
-MisskeyAPIを使ってMisskeyクライアント、Misskey連携Webサービス、Bot等(以下「アプリケーション」と呼びます)を開発できます。 ストリーミングAPIもあるので、リアルタイム性のあるアプリケーションを作ることも可能です。
+您可以使用Misskey API来开发Misskey客户端、与Misskey链接的Web服务、Bot等应用(以下称为“应用程序”)。 另外还有一个流式API,因此还可以用来创建实时性的应用程序。
-APIを使い始めるには、まずアクセストークンを取得する必要があります。 このドキュメントでは、アクセストークンを取得する手順を説明した後、基本的なAPIの使い方を説明します。
+开始使用API前,您首先需要获取访问令牌。 本文档将向您介绍获取访问令牌所需的步骤,以及API的基本使用方法。
-## アクセストークンの取得
-基本的に、APIはリクエストにはアクセストークンが必要となります。 APIにリクエストするのが自分自身なのか、不特定の利用者に使ってもらうアプリケーションなのかによって取得手順は異なります。
+## 访问令牌的获取
+总的来说,API请求需要访问令牌。 获取方式则根据请求的API或者非特定用户所使用的应用程序而有所不同。
-* 前者の場合: [「自分自身のアクセストークンを手動発行する」](#自分自身のアクセストークンを手動発行する)に進む
-* 後者の場合: [「アプリケーション利用者にアクセストークンの発行をリクエストする」](#アプリケーション利用者にアクセストークンの発行をリクエストする)に進む
+* 对于前者:请转到[“手动发放自己的访问令牌”](#自分自身のアクセストークンを手動発行する)
+* 对于后者:请转到[“请求应用程序用户发放访问令牌”](#アプリケーション利用者にアクセストークンの発行をリクエストする)
-### 自分自身のアクセストークンを手動発行する
-「設定 > API」で、自分のアクセストークンを発行できます。
+### 手动发放自己的访问令牌
+您可以在“设置 > API”中发放自己的访问令牌。
-[「APIの使い方」へ進む](#APIの使い方)
+[请转到“API使用方法”](#APIの使い方)
-### アプリケーション利用者にアクセストークンの発行をリクエストする
-アプリケーション利用者のアクセストークンを取得するには、以下の手順で発行をリクエストします。
+### 请求应用程序用户发放访问令牌
+要获取应用程序用户的访问令牌,请按照以下步骤请求发放。
-#### Step 1
+#### 步骤 1
-UUIDを生成する。以後これをセッションIDと呼びます。
+生成UUID。以下将其称为会话ID。
-> このセッションIDは毎回生成し、使いまわさないようにしてください。
+> 此会话ID需要每次重新生成,请勿重复使用。
-#### Step 2
+#### 步骤 2
-`{_URL_}/miauth/{session}`をユーザーのブラウザで表示させる。`{session}`の部分は、セッションIDに置き換えてください。
+在用户的浏览器中显示`{_URL_}/miauth/{session}`。将`{session}`的部分替换为会话ID。
> 例: `{_URL_}/miauth/c1f6d42b-468b-4fd2-8274-e58abdedef6f`
-表示する際、URLにクエリパラメータとしていくつかのオプションを設定できます:
-* `name` ... アプリケーション名
+显示时,可以在URL中设置一些选项作为查询参数:
+* `name` ... 应用程序名称
* > 例: `MissDeck`
-* `icon` ... アプリケーションのアイコン画像URL
+* `icon` ... 应用程序图标URL
* > 例: `https://missdeck.example.com/icon.png`
-* `callback` ... 認証が終わった後にリダイレクトするURL
+* `callback` ... 认证后重定向的URL
* > 例: `https://missdeck.example.com/callback`
- * リダイレクト時には、`session`というクエリパラメータでセッションIDが付きます
-* `permission` ... アプリケーションが要求する権限
+ * 重定向时,会话ID将添加查询参数`session`
+* `permission` ... 应用程序要求的权限
* > 例: `write:notes,write:following,read:drive`
- * 要求する権限を`,`で区切って列挙します
- * どのような権限があるかは[APIリファレンス](/api-doc)で確認できます
+ * 要求的权限需要以`,`分隔
+ * 您可以在[API参考](/api-doc)中确认您所拥有的权限。
-#### Step 3
-ユーザーが発行を許可した後、`{_URL_}/api/miauth/{session}/check`にPOSTリクエストすると、レスポンスとしてアクセストークンを含むJSONが返ります。
+#### 步骤 3
+用户允许发行后,对`{_URL_}/api/miauth/{session}/check`的POST请求所返回的是一个包含访问令牌的JSON格式的响应。
-レスポンスに含まれるプロパティ:
-* `token` ... ユーザーのアクセストークン
-* `user` ... ユーザーの情報
+响应中包含的属性:
+* `token` ... 用户的访问令牌
+* `user` ... 用户信息
-[「APIの使い方」へ進む](#APIの使い方)
+[请转到“API使用方法”](#APIの使い方)
-## APIの使い方
-**APIはすべてPOSTで、リクエスト/レスポンスともにJSON形式です。RESTではありません。** アクセストークンは、`i`というパラメータ名でリクエストに含めます。
+## API使用方法
+**所有API均为POST,并且请求/响应均为JSON格式。不是REST。** 访问令牌包含在请求中,参数名为`i`。
-* [APIリファレンス](/api-doc)
-* [ストリーミングAPI](./stream)
+* [API 参考](/api-doc)
+* [流式API](./stream)
diff --git a/src/docs/zh-CN/advanced/create-plugin.md b/src/docs/zh-CN/advanced/create-plugin.md
index e444b9ed37..5a9e6a1cfa 100644
--- a/src/docs/zh-CN/advanced/create-plugin.md
+++ b/src/docs/zh-CN/advanced/create-plugin.md
@@ -1,65 +1,65 @@
-# プラグインの作成
-Misskey Webクライアントのプラグイン機能を使うと、クライアントを拡張し、様々な機能を追加できます。 ここではプラグインの作成にあたってのメタデータ定義や、AiScript APIリファレンスを掲載します。
+# 插件开发
+Misskey Web客户端插件功能使您可以扩展客户端并添加各种功能。 我们在这里给出用于创建插件的元数据定义和AiScript API参考。
## 元数据
プラグインは、AiScriptのメタデータ埋め込み機能を使って、デフォルトとしてプラグインのメタデータを定義する必要があります。 メタデータは次のプロパティを含むオブジェクトです。
### name
-プラグイン名
+插件名称
### author
-プラグイン作者
+插件作者
### version
-プラグインバージョン。数値を指定してください。
+插件版本。请使用数字。
### description
-プラグインの説明
+插件说明
### permissions
-プラグインが要求する権限。MisskeyAPIにリクエストする際に用いられます。
+插件要求的权限。需要在发送Misskey API请求时使用。
### config
-プラグインの設定情報を表すオブジェクト。 キーに設定名、値に以下のプロパティを含めます。
+表示插件设置信息的对象。 在键名中包含设置名称,在键值中包含以下属性。
#### type
-設定値の種類を表す文字列。以下から選択します。 string number boolean
+代表设置值的类型的字符串。从下列项中选择: string number boolean
#### label
-ユーザーに表示する設定名
+向用户显示的设置名称
#### description
-設定の説明
+设置说明
#### default
-設定のデフォルト値
+设置的默认值
-## APIリファレンス
-AiScript標準で組み込まれているAPIは掲載しません。
+## API 参考
+AiScript标准内置API将不会公布。
### Mk:dialog(title text type)
-ダイアログを表示します。typeには以下の値が設定できます。 info success warn error question 省略すると info になります。
+显示一个对话框。type可以设置为以下值: info success warn error question 默认值为info。
### Mk:confirm(title text type)
-確認ダイアログを表示します。typeには以下の値が設定できます。 info success warn error question 省略すると question になります。 ユーザーが"OK"を選択した場合は true を、"キャンセル"を選択した場合は false が返ります。
+显示确认对话框。type可以设置为以下值: info success warn error question 默认值为question。 如果用户选择“OK”,则返回true;如果用户选择“取消”,则返回false。
### Mk:api(endpoint params)
-Misskey APIにリクエストします。第一引数にエンドポイント名、第二引数にパラメータオブジェクトを渡します。
+通过Misskey API发送请求。在第一个参数中传入终端名称,在第二个参数中传入参数对象。
### Mk:save(key value)
-任意の値に任意の名前を付けて永続化します。永続化した値は、AiScriptコンテキストが終了しても残り、Mk:loadで読み取ることができます。
+给任意对象名赋值,并使其持久化。所谓的持久化的值,指的是该值即使在AiScript上下文结束后仍然保留,并且可以通过Mk:load读取。
### Mk:load(key)
-Mk:saveで永続化した指定の名前の値を読み取ります。
+读取由Mk:save生成的持久化的值。
### Plugin:register_post_form_action(title fn)
-投稿フォームにアクションを追加します。第一引数にアクション名、第二引数にアクションが選択された際のコールバック関数を渡します。 コールバック関数には、第一引数に投稿フォームオブジェクトが渡されます。
+将操作添加到发布表单。第一个参数是操作名,第二个参数是该操作对应的回调函数。 帖子表单对象作为第一个参数传给回调函数。
### Plugin:register_note_action(title fn)
-ノートメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。 コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。
+将项目添加到帖子菜单。第一个参数是菜单项名字,第二个参数是该菜单项对应的回调函数。 目标项目对象作为第一个参数传给回调函数。
### Plugin:register_user_action(title fn)
-ユーザーメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。 コールバック関数には、第一引数に対象のユーザーオブジェクトが渡されます。
+将项目添加到用户菜单。第一个参数是菜单项名字,第二个参数是该菜单项对应的回调函数。 目标用户对象作为第一个参数传给回调函数。
### Plugin:register_note_view_interruptor(fn)
UIに表示されるノート情報を書き換えます。 コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。 コールバック関数の返り値でノートが書き換えられます。
diff --git a/src/docs/zh-CN/advanced/stream.md b/src/docs/zh-CN/advanced/stream.md
index f9584e8c7f..b4cd7ec104 100644
--- a/src/docs/zh-CN/advanced/stream.md
+++ b/src/docs/zh-CN/advanced/stream.md
@@ -1,4 +1,4 @@
-# ストリーミングAPI
+# 流式API
ストリーミングAPIを使うと、リアルタイムで様々な情報(例えばタイムラインに新しい投稿が流れてきた、メッセージが届いた、フォローされた、など)を受け取ったり、様々な操作を行ったりすることができます。
diff --git a/src/docs/zh-CN/general/faq.md b/src/docs/zh-CN/general/faq.md
index 2d205d69cb..a430103eb0 100644
--- a/src/docs/zh-CN/general/faq.md
+++ b/src/docs/zh-CN/general/faq.md
@@ -1,11 +1,14 @@
# 常见问题
ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。
-### iOS/Androidのアプリはありますか?
+## iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
+## Mastodonクライアントでログインできないのですが?
+MisskeyはMastodonのAPIと互換性がないため、一部を除きMastodonクライアントでMisskeyを利用することはできません。
+
## 他のサーバーのユーザーをフォローするときは?
メニューから検索を選び、ユーザー名をホスト込みで入力します。例: `@syuilo@misskey.io`
@@ -15,8 +18,8 @@ Renoteの時刻表示の隣にある「...」を押し、「Renote解除」を
## URLのプレビューを表示させたくない
MFMには、そのURLのプレビューを無効にする構文があります。詳細は[MFMチートシート](/mfm-cheat-sheet)をご確認ください。
-## カスタム絵文字を追加したい
+## 想要添加自定义表情符号
運営者のみがカスタム絵文字を追加、編集、削除できます。それらを希望する場合は運営者に依頼してください。
-## Botを開発したい
-Misskey APIを利用してBotの開発が可能です。[こちら](../advanced/develop-bot)をご確認ください。
+## 想要开发一个Bot机器人
+您可以使用 Misskey API 开发Bot机器人。[こちら](../advanced/develop-bot)をご確認ください。
diff --git a/src/docs/zh-CN/general/glossary.md b/src/docs/zh-CN/general/glossary.md
index ed62212019..6ebd344db0 100644
--- a/src/docs/zh-CN/general/glossary.md
+++ b/src/docs/zh-CN/general/glossary.md
@@ -1,7 +1,7 @@
# 用語集
Misskeyに関する用語集です。
-## AcitivityPub
+## ActivityPub
(読み: あくてぃびてぃぱぶ) 分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。
## AiScript
diff --git a/src/docs/zh-CN/general/misskey.md b/src/docs/zh-CN/general/misskey.md
index 039900254a..e6376839e0 100644
--- a/src/docs/zh-CN/general/misskey.md
+++ b/src/docs/zh-CN/general/misskey.md
@@ -3,7 +3,7 @@
Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。 開発は日本でsyuiloによって2014年から開始されました。 ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。
## 歴史
-開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にAcitivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
+開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
ℹ️ Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
誰でも開発に参加することができ、現在でも活発に開発が続いています。
@@ -72,7 +72,7 @@ Misskeyは開発が進むにつれ使用する技術も大きく変わってき
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。
### Mastodonのフォークですか?
-いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じAcitivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
+いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
### iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
diff --git a/src/docs/zh-TW/general/faq.md b/src/docs/zh-TW/general/faq.md
index ecb664e32e..1d0a63ce15 100644
--- a/src/docs/zh-TW/general/faq.md
+++ b/src/docs/zh-TW/general/faq.md
@@ -1,11 +1,14 @@
# よくある質問
ここでは利用上のよくある質問について掲載しています。 Misskeyのプロジェクト自体についてのよくある質問は[こちら](./misskey)に掲載されています。
-### iOS/Androidのアプリはありますか?
+## iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。 なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。 詳しくは[こちら](todo)をご覧ください。
+## Mastodonクライアントでログインできないのですが?
+MisskeyはMastodonのAPIと互換性がないため、一部を除きMastodonクライアントでMisskeyを利用することはできません。
+
## 他のサーバーのユーザーをフォローするときは?
メニューから検索を選び、ユーザー名をホスト込みで入力します。例: `@syuilo@misskey.io`
diff --git a/src/docs/zh-TW/general/glossary.md b/src/docs/zh-TW/general/glossary.md
index 4515e7295c..e6860cb180 100644
--- a/src/docs/zh-TW/general/glossary.md
+++ b/src/docs/zh-TW/general/glossary.md
@@ -1,7 +1,7 @@
# 用語集
Misskeyに関する用語集です。
-## AcitivityPub
+## ActivityPub
(読み: あくてぃびてぃぱぶ) 分散型を実現するために用いられるプロトコル(仕様)。このプロトコルに則ってサーバー同士通信を行うことで、連合が行われ、Fediverseを形成しています。
## AiScript
diff --git a/src/docs/zh-TW/general/misskey.md b/src/docs/zh-TW/general/misskey.md
index b4f2192e8e..915684a820 100644
--- a/src/docs/zh-TW/general/misskey.md
+++ b/src/docs/zh-TW/general/misskey.md
@@ -3,7 +3,7 @@
Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。 開発は日本でsyuiloによって2014年から開始されました。 ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。
## 歴史
-開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にAcitivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
+開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。 当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
ℹ️ Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
誰でも開発に参加することができ、現在でも活発に開発が続いています。
@@ -72,7 +72,7 @@ Misskeyは開発が進むにつれ使用する技術も大きく変わってき
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。
### Mastodonのフォークですか?
-いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じAcitivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
+いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。 開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。 同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
### iOS/Androidのアプリはありますか?
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。 詳しくは[こちら](./apps)をご覧ください。
diff --git a/src/games/reversi/core.ts b/src/games/reversi/core.ts
index e7ae1af7a2..9bfce9834a 100644
--- a/src/games/reversi/core.ts
+++ b/src/games/reversi/core.ts
@@ -1,4 +1,4 @@
-import { count, concat } from '../../prelude/array';
+import { count, concat } from '@/prelude/array';
// MISSKEY REVERSI ENGINE
diff --git a/src/index.ts b/src/index.ts
index c4a1088c2e..db1b53f51b 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -6,7 +6,7 @@ Error.stackTraceLimit = Infinity;
require('events').EventEmitter.defaultMaxListeners = 128;
-import boot from './boot';
+import boot from './boot/index';
export default function() {
return boot();
diff --git a/src/mfm/to-html.ts b/src/mfm/to-html.ts
index aa39443c64..b3678a0dda 100644
--- a/src/mfm/to-html.ts
+++ b/src/mfm/to-html.ts
@@ -1,8 +1,8 @@
import { JSDOM } from 'jsdom';
import * as mfm from 'mfm-js';
-import config from '@/config';
-import { intersperse } from '../prelude/array';
-import { IMentionedRemoteUsers } from '../models/entities/note';
+import config from '@/config/index';
+import { intersperse } from '@/prelude/array';
+import { IMentionedRemoteUsers } from '@/models/entities/note';
import { wellKnownServices } from '../well-known-services';
export function toHtml(nodes: mfm.MfmNode[] | null, mentionedRemoteUsers: IMentionedRemoteUsers = []) {
diff --git a/src/misc/antenna-cache.ts b/src/misc/antenna-cache.ts
index 6be1c18db5..a23eeb45ec 100644
--- a/src/misc/antenna-cache.ts
+++ b/src/misc/antenna-cache.ts
@@ -1,5 +1,5 @@
-import { Antennas } from '../models';
-import { Antenna } from '../models/entities/antenna';
+import { Antennas } from '@/models/index';
+import { Antenna } from '@/models/entities/antenna';
import { subsdcriber } from '../db/redis';
let antennasFetched = false;
diff --git a/src/misc/app-lock.ts b/src/misc/app-lock.ts
index 9ae2cba478..a32b600612 100644
--- a/src/misc/app-lock.ts
+++ b/src/misc/app-lock.ts
@@ -1,5 +1,6 @@
import { redisClient } from '../db/redis';
import { promisify } from 'util';
+import * as redisLock from 'redis-lock';
/**
* Retry delay (ms) for lock acquisition
@@ -8,7 +9,7 @@ const retryDelay = 100;
const lock: (key: string, timeout?: number) => Promise<() => void>
= redisClient
- ? promisify(require('redis-lock')(redisClient, retryDelay))
+ ? promisify(redisLock(redisClient, retryDelay))
: async () => () => { };
/**
diff --git a/src/misc/captcha.ts b/src/misc/captcha.ts
index 727c86af0f..f36943b589 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/index';
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 3dfcb54c49..38965f4b0d 100644
--- a/src/misc/check-hit-antenna.ts
+++ b/src/misc/check-hit-antenna.ts
@@ -1,7 +1,7 @@
-import { Antenna } from '../models/entities/antenna';
-import { Note } from '../models/entities/note';
-import { User } from '../models/entities/user';
-import { UserListJoinings, UserGroupJoinings } from '../models';
+import { Antenna } from '@/models/entities/antenna';
+import { Note } from '@/models/entities/note';
+import { User } from '@/models/entities/user';
+import { UserListJoinings, UserGroupJoinings } from '@/models/index';
import { getFullApAccount } from './convert-host';
import { PackedNote } from '../models/repositories/note';
import { parseAcct } from '@/misc/acct';
diff --git a/src/misc/check-word-mute.ts b/src/misc/check-word-mute.ts
index 5af267d75d..e2e871dd2b 100644
--- a/src/misc/check-word-mute.ts
+++ b/src/misc/check-word-mute.ts
@@ -1,6 +1,6 @@
const RE2 = require('re2');
-import { Note } from '../models/entities/note';
-import { User } from '../models/entities/user';
+import { Note } from '@/models/entities/note';
+import { User } from '@/models/entities/user';
type NoteLike = {
userId: Note['userId'];
diff --git a/src/misc/convert-host.ts b/src/misc/convert-host.ts
index 7b0b0acf10..6e9f6ed3e9 100644
--- a/src/misc/convert-host.ts
+++ b/src/misc/convert-host.ts
@@ -1,5 +1,5 @@
import { URL } from 'url';
-import config from '@/config';
+import config from '@/config/index';
import { toASCII } from 'punycode/';
export function getFullApAccount(username: string, host: string | null) {
diff --git a/src/misc/count-same-renotes.ts b/src/misc/count-same-renotes.ts
index bc1072080a..6628761182 100644
--- a/src/misc/count-same-renotes.ts
+++ b/src/misc/count-same-renotes.ts
@@ -1,4 +1,4 @@
-import { Notes } from '../models';
+import { Notes } from '@/models/index';
export async function countSameRenotes(userId: string, renoteId: string, excludeNoteId: string | undefined): Promise {
// 指定したユーザーの指定したノートのリノートがいくつあるか数える
diff --git a/src/misc/download-text-file.ts b/src/misc/download-text-file.ts
index d6fd17fc13..e8e23cc120 100644
--- a/src/misc/download-text-file.ts
+++ b/src/misc/download-text-file.ts
@@ -1,6 +1,6 @@
import * as fs from 'fs';
import * as util from 'util';
-import Logger from '../services/logger';
+import Logger from '@/services/logger';
import { createTemp } from './create-temp';
import { downloadUrl } from './download-url';
diff --git a/src/misc/download-url.ts b/src/misc/download-url.ts
index dafeff6fc8..43e061c715 100644
--- a/src/misc/download-url.ts
+++ b/src/misc/download-url.ts
@@ -5,9 +5,9 @@ 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/index';
import * as chalk from 'chalk';
-import Logger from '../services/logger';
+import Logger from '@/services/logger';
const pipeline = util.promisify(stream.pipeline);
diff --git a/src/misc/fetch-meta.ts b/src/misc/fetch-meta.ts
index e7a945dc9e..a0bcdd4d48 100644
--- a/src/misc/fetch-meta.ts
+++ b/src/misc/fetch-meta.ts
@@ -1,4 +1,4 @@
-import { Meta } from '../models/entities/meta';
+import { Meta } from '@/models/entities/meta';
import { getConnection } from 'typeorm';
let cache: Meta;
diff --git a/src/misc/fetch-proxy-account.ts b/src/misc/fetch-proxy-account.ts
index 537edf2891..e0eedea4c8 100644
--- a/src/misc/fetch-proxy-account.ts
+++ b/src/misc/fetch-proxy-account.ts
@@ -1,6 +1,6 @@
import { fetchMeta } from './fetch-meta';
-import { ILocalUser } from '../models/entities/user';
-import { Users } from '../models';
+import { ILocalUser } from '@/models/entities/user';
+import { Users } from '@/models/index';
export async function fetchProxyAccount(): Promise {
const meta = await fetchMeta();
diff --git a/src/misc/fetch.ts b/src/misc/fetch.ts
index 37f8203543..82db2f2f8c 100644
--- a/src/misc/fetch.ts
+++ b/src/misc/fetch.ts
@@ -1,10 +1,9 @@
import * as http from 'http';
import * as https from 'https';
-import * as cache from 'lookup-dns-cache';
+import CacheableLookup from 'cacheable-lookup';
import fetch, { HeadersInit } from 'node-fetch';
-import { HttpProxyAgent } from 'http-proxy-agent';
-import { HttpsProxyAgent } from 'https-proxy-agent';
-import config from '@/config';
+import { HttpProxyAgent, HttpsProxyAgent } from 'hpagent';
+import config from '@/config/index';
import { URL } from 'url';
export async function getJson(url: string, accept = 'application/json, */*', timeout = 10000, headers?: HeadersInit) {
@@ -49,6 +48,12 @@ export async function getHtml(url: string, accept = 'text/html, */*', timeout =
return await res.text();
}
+const cache = new CacheableLookup({
+ maxTtl: 3600, // 1hours
+ errorTtl: 30, // 30secs
+ lookup: false, // nativeのdns.lookupにfallbackしない
+});
+
/**
* Get http non-proxy agent
*/
@@ -65,20 +70,36 @@ const _https = new https.Agent({
keepAlive: true,
keepAliveMsecs: 30 * 1000,
lookup: cache.lookup,
-});
+} as https.AgentOptions);
+
+const maxSockets = Math.max(256, config.deliverJobConcurrency || 128);
/**
* Get http proxy or non-proxy agent
*/
export const httpAgent = config.proxy
- ? new HttpProxyAgent(config.proxy)
+ ? new HttpProxyAgent({
+ keepAlive: true,
+ keepAliveMsecs: 30 * 1000,
+ maxSockets,
+ maxFreeSockets: 256,
+ scheduling: 'lifo',
+ proxy: config.proxy
+ })
: _http;
/**
* Get https proxy or non-proxy agent
*/
export const httpsAgent = config.proxy
- ? new HttpsProxyAgent(config.proxy)
+ ? new HttpsProxyAgent({
+ keepAlive: true,
+ keepAliveMsecs: 30 * 1000,
+ maxSockets,
+ maxFreeSockets: 256,
+ scheduling: 'lifo',
+ proxy: config.proxy
+ })
: _https;
/**
diff --git a/src/misc/gen-avatar.ts b/src/misc/gen-avatar.ts
index 7ff28b2e88..f03ca9f96d 100644
--- a/src/misc/gen-avatar.ts
+++ b/src/misc/gen-avatar.ts
@@ -2,7 +2,7 @@
* Random avatar generator
*/
-const p = require('pureimage');
+import * as p from 'pureimage';
import * as gen from 'random-seed';
import { WriteStream } from 'fs';
diff --git a/src/misc/gen-id.ts b/src/misc/gen-id.ts
index 8e7e0b6113..b1b542dc4b 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/index';
const metohd = config.id.toLowerCase();
diff --git a/src/misc/get-user-name.ts b/src/misc/get-user-name.ts
index b6b45118b0..3545e986e8 100644
--- a/src/misc/get-user-name.ts
+++ b/src/misc/get-user-name.ts
@@ -1,4 +1,4 @@
-import { User } from '../models/entities/user';
+import { User } from '@/models/entities/user';
export default function(user: User): string {
return user.name || user.username;
diff --git a/src/misc/is-blocker-user-related.ts b/src/misc/is-blocker-user-related.ts
new file mode 100644
index 0000000000..8c0ebfad9b
--- /dev/null
+++ b/src/misc/is-blocker-user-related.ts
@@ -0,0 +1,15 @@
+export function isBlockerUserRelated(note: any, blockerUserIds: Set): boolean {
+ if (blockerUserIds.has(note.userId)) {
+ return true;
+ }
+
+ if (note.reply != null && blockerUserIds.has(note.reply.userId)) {
+ return true;
+ }
+
+ if (note.renote != null && blockerUserIds.has(note.renote.userId)) {
+ return true;
+ }
+
+ return false;
+}
diff --git a/src/misc/is-quote.ts b/src/misc/is-quote.ts
index 0a2a72f4a0..2b57f036a2 100644
--- a/src/misc/is-quote.ts
+++ b/src/misc/is-quote.ts
@@ -1,4 +1,4 @@
-import { Note } from '../models/entities/note';
+import { Note } from '@/models/entities/note';
export default function(note: Note): boolean {
return note.renoteId != null && (note.text != null || note.hasPoll || (note.fileIds != null && note.fileIds.length > 0));
diff --git a/src/misc/keypair-store.ts b/src/misc/keypair-store.ts
index c78fdd7555..c018013b7b 100644
--- a/src/misc/keypair-store.ts
+++ b/src/misc/keypair-store.ts
@@ -1,6 +1,6 @@
-import { UserKeypairs } from '../models';
-import { User } from '../models/entities/user';
-import { UserKeypair } from '../models/entities/user-keypair';
+import { UserKeypairs } from '@/models/index';
+import { User } from '@/models/entities/user';
+import { UserKeypair } from '@/models/entities/user-keypair';
import { Cache } from './cache';
const cache = new Cache(Infinity);
diff --git a/src/misc/license.ts b/src/misc/license.ts
index d36af665cd..8b12923ca1 100644
--- a/src/misc/license.ts
+++ b/src/misc/license.ts
@@ -1,6 +1,12 @@
import * as fs from 'fs';
+import { fileURLToPath } from 'url';
+import { dirname } from 'path';
-const license = fs.readFileSync(__dirname + '/../../LICENSE', 'utf-8');
+//const _filename = fileURLToPath(import.meta.url);
+const _filename = __filename;
+const _dirname = dirname(_filename);
+
+const license = fs.readFileSync(_dirname + '/../../LICENSE', 'utf-8');
const licenseHtml = license
.replace(/\r\n/g, '\n')
diff --git a/src/misc/populate-emojis.ts b/src/misc/populate-emojis.ts
index 42aaaf0705..f0a8bde31e 100644
--- a/src/misc/populate-emojis.ts
+++ b/src/misc/populate-emojis.ts
@@ -1,11 +1,11 @@
import { In } from 'typeorm';
-import { Emojis } from '../models';
-import { Emoji } from '../models/entities/emoji';
-import { Note } from '../models/entities/note';
+import { Emojis } from '@/models/index';
+import { Emoji } from '@/models/entities/emoji';
+import { Note } from '@/models/entities/note';
import { Cache } from './cache';
import { isSelfHost, toPunyNullable } from './convert-host';
import { decodeReaction } from './reaction-lib';
-import config from '@/config';
+import config from '@/config/index';
import { query } from '@/prelude/url';
const cache = new Cache(1000 * 60 * 60 * 12);
diff --git a/src/misc/reaction-lib.ts b/src/misc/reaction-lib.ts
index b393154d9c..46dedfa24b 100644
--- a/src/misc/reaction-lib.ts
+++ b/src/misc/reaction-lib.ts
@@ -1,6 +1,6 @@
import { emojiRegex } from './emoji-regex';
import { fetchMeta } from './fetch-meta';
-import { Emojis } from '../models';
+import { Emojis } from '@/models/index';
import { toPunyNullable } from './convert-host';
const legacies: Record = {
diff --git a/src/misc/show-machine-info.ts b/src/misc/show-machine-info.ts
index 2aae019be2..58747c1152 100644
--- a/src/misc/show-machine-info.ts
+++ b/src/misc/show-machine-info.ts
@@ -1,6 +1,6 @@
import * as os from 'os';
import * as sysUtils from 'systeminformation';
-import Logger from '../services/logger';
+import Logger from '@/services/logger';
export async function showMachineInfo(parentLogger: Logger) {
const logger = parentLogger.createSubLogger('machine');
diff --git a/src/models/entities/channel.ts b/src/models/entities/channel.ts
index 1868f75143..f2d713612d 100644
--- a/src/models/entities/channel.ts
+++ b/src/models/entities/channel.ts
@@ -23,9 +23,10 @@ export class Channel {
@Index()
@Column({
...id(),
+ nullable: true,
comment: 'The owner ID.'
})
- public userId: User['id'];
+ public userId: User['id'] | null;
@ManyToOne(type => User, {
onDelete: 'SET NULL'
diff --git a/src/models/entities/meta.ts b/src/models/entities/meta.ts
index d0b6ee7f2b..2a0632c87c 100644
--- a/src/models/entities/meta.ts
+++ b/src/models/entities/meta.ts
@@ -313,6 +313,12 @@ export class Meta {
})
public discordClientSecret: string | null;
+ @Column('varchar', {
+ length: 128,
+ nullable: true
+ })
+ public deeplAuthKey: string | null;
+
@Column('varchar', {
length: 512,
nullable: true
diff --git a/src/models/repositories/abuse-user-report.ts b/src/models/repositories/abuse-user-report.ts
index cb33d2506e..039a9924d2 100644
--- a/src/models/repositories/abuse-user-report.ts
+++ b/src/models/repositories/abuse-user-report.ts
@@ -1,7 +1,7 @@
import { EntityRepository, Repository } from 'typeorm';
-import { Users } from '..';
-import { AbuseUserReport } from '../entities/abuse-user-report';
-import { awaitAll } from '../../prelude/await-all';
+import { Users } from '../index';
+import { AbuseUserReport } from '@/models/entities/abuse-user-report';
+import { awaitAll } from '@/prelude/await-all';
@EntityRepository(AbuseUserReport)
export class AbuseUserReportRepository extends Repository {
diff --git a/src/models/repositories/antenna.ts b/src/models/repositories/antenna.ts
index 787e5c8e2b..e61eed5e08 100644
--- a/src/models/repositories/antenna.ts
+++ b/src/models/repositories/antenna.ts
@@ -1,7 +1,7 @@
import { EntityRepository, Repository } from 'typeorm';
-import { Antenna } from '../entities/antenna';
+import { Antenna } from '@/models/entities/antenna';
import { SchemaType } from '@/misc/schema';
-import { AntennaNotes, UserGroupJoinings } from '..';
+import { AntennaNotes, UserGroupJoinings } from '../index';
export type PackedAntenna = SchemaType;
diff --git a/src/models/repositories/app.ts b/src/models/repositories/app.ts
index c919a9bdb1..2287bd4390 100644
--- a/src/models/repositories/app.ts
+++ b/src/models/repositories/app.ts
@@ -1,6 +1,6 @@
import { EntityRepository, Repository } from 'typeorm';
-import { App } from '../entities/app';
-import { AccessTokens } from '..';
+import { App } from '@/models/entities/app';
+import { AccessTokens } from '../index';
import { SchemaType } from '@/misc/schema';
export type PackedApp = SchemaType;
diff --git a/src/models/repositories/auth-session.ts b/src/models/repositories/auth-session.ts
index f513357e1b..c8f4c10f2a 100644
--- a/src/models/repositories/auth-session.ts
+++ b/src/models/repositories/auth-session.ts
@@ -1,8 +1,8 @@
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';
+import { Apps } from '../index';
+import { AuthSession } from '@/models/entities/auth-session';
+import { awaitAll } from '@/prelude/await-all';
+import { User } from '@/models/entities/user';
@EntityRepository(AuthSession)
export class AuthSessionRepository extends Repository {
diff --git a/src/models/repositories/blocking.ts b/src/models/repositories/blocking.ts
index 9a4f3f6c68..dd3a10905c 100644
--- a/src/models/repositories/blocking.ts
+++ b/src/models/repositories/blocking.ts
@@ -1,9 +1,9 @@
import { EntityRepository, Repository } from 'typeorm';
-import { Users } from '..';
-import { Blocking } from '../entities/blocking';
-import { awaitAll } from '../../prelude/await-all';
+import { Users } from '../index';
+import { Blocking } from '@/models/entities/blocking';
+import { awaitAll } from '@/prelude/await-all';
import { SchemaType } from '@/misc/schema';
-import { User } from '../entities/user';
+import { User } from '@/models/entities/user';
export type PackedBlocking = SchemaType;
diff --git a/src/models/repositories/channel.ts b/src/models/repositories/channel.ts
index 3a6bd4c923..4bb829f570 100644
--- a/src/models/repositories/channel.ts
+++ b/src/models/repositories/channel.ts
@@ -1,8 +1,8 @@
import { EntityRepository, Repository } from 'typeorm';
-import { Channel } from '../entities/channel';
+import { Channel } from '@/models/entities/channel';
import { SchemaType } from '@/misc/schema';
-import { DriveFiles, ChannelFollowings, NoteUnreads } from '..';
-import { User } from '../entities/user';
+import { DriveFiles, ChannelFollowings, NoteUnreads } from '../index';
+import { User } from '@/models/entities/user';
export type PackedChannel = SchemaType;
@@ -90,7 +90,7 @@ export const packedChannelSchema = {
},
userId: {
type: 'string' as const,
- nullable: false as const, optional: false as const,
+ nullable: true as const, optional: false as const,
format: 'id',
},
},
diff --git a/src/models/repositories/clip.ts b/src/models/repositories/clip.ts
index 293807b125..49dc3a332e 100644
--- a/src/models/repositories/clip.ts
+++ b/src/models/repositories/clip.ts
@@ -1,8 +1,8 @@
import { EntityRepository, Repository } from 'typeorm';
-import { Clip } from '../entities/clip';
+import { Clip } from '@/models/entities/clip';
import { SchemaType } from '@/misc/schema';
-import { Users } from '..';
-import { awaitAll } from '../../prelude/await-all';
+import { Users } from '../index';
+import { awaitAll } from '@/prelude/await-all';
export type PackedClip = SchemaType;
diff --git a/src/models/repositories/drive-file.ts b/src/models/repositories/drive-file.ts
index 675faca8e3..42a60ff03c 100644
--- a/src/models/repositories/drive-file.ts
+++ b/src/models/repositories/drive-file.ts
@@ -1,13 +1,13 @@
import { EntityRepository, Repository } from 'typeorm';
-import { DriveFile } from '../entities/drive-file';
-import { Users, DriveFolders } from '..';
-import { User } from '../entities/user';
+import { DriveFile } from '@/models/entities/drive-file';
+import { Users, DriveFolders } from '../index';
+import { User } from '@/models/entities/user';
import { toPuny } from '@/misc/convert-host';
-import { awaitAll } from '../../prelude/await-all';
+import { awaitAll } from '@/prelude/await-all';
import { SchemaType } from '@/misc/schema';
-import config from '@/config';
-import { query, appendQuery } from '../../prelude/url';
-import { Meta } from '../entities/meta';
+import config from '@/config/index';
+import { query, appendQuery } from '@/prelude/url';
+import { Meta } from '@/models/entities/meta';
import { fetchMeta } from '@/misc/fetch-meta';
export type PackedDriveFile = SchemaType;
diff --git a/src/models/repositories/drive-folder.ts b/src/models/repositories/drive-folder.ts
index d1922c96f8..4228284f82 100644
--- a/src/models/repositories/drive-folder.ts
+++ b/src/models/repositories/drive-folder.ts
@@ -1,7 +1,7 @@
import { EntityRepository, Repository } from 'typeorm';
-import { DriveFolders, DriveFiles } from '..';
-import { DriveFolder } from '../entities/drive-folder';
-import { awaitAll } from '../../prelude/await-all';
+import { DriveFolders, DriveFiles } from '../index';
+import { DriveFolder } from '@/models/entities/drive-folder';
+import { awaitAll } from '@/prelude/await-all';
import { SchemaType } from '@/misc/schema';
export type PackedDriveFolder = SchemaType;
diff --git a/src/models/repositories/emoji.ts b/src/models/repositories/emoji.ts
index 3490a6ac86..c3d7184ec9 100644
--- a/src/models/repositories/emoji.ts
+++ b/src/models/repositories/emoji.ts
@@ -1,5 +1,5 @@
import { EntityRepository, Repository } from 'typeorm';
-import { Emoji } from '../entities/emoji';
+import { Emoji } from '@/models/entities/emoji';
@EntityRepository(Emoji)
export class EmojiRepository extends Repository {
diff --git a/src/models/repositories/federation-instance.ts b/src/models/repositories/federation-instance.ts
index 15e8023ee9..4b70971ecf 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/index';
export const packedFederationInstanceSchema = {
type: 'object' as const,
diff --git a/src/models/repositories/follow-request.ts b/src/models/repositories/follow-request.ts
index 31e5fb2d90..d6ee58e235 100644
--- a/src/models/repositories/follow-request.ts
+++ b/src/models/repositories/follow-request.ts
@@ -1,7 +1,7 @@
import { EntityRepository, Repository } from 'typeorm';
-import { FollowRequest } from '../entities/follow-request';
-import { Users } from '..';
-import { User } from '../entities/user';
+import { FollowRequest } from '@/models/entities/follow-request';
+import { Users } from '../index';
+import { User } from '@/models/entities/user';
@EntityRepository(FollowRequest)
export class FollowRequestRepository extends Repository {
diff --git a/src/models/repositories/following.ts b/src/models/repositories/following.ts
index 3aed83f320..3bb120bc4b 100644
--- a/src/models/repositories/following.ts
+++ b/src/models/repositories/following.ts
@@ -1,9 +1,9 @@
import { EntityRepository, Repository } from 'typeorm';
-import { Users } from '..';
-import { Following } from '../entities/following';
-import { awaitAll } from '../../prelude/await-all';
+import { Users } from '../index';
+import { Following } from '@/models/entities/following';
+import { awaitAll } from '@/prelude/await-all';
import { SchemaType } from '@/misc/schema';
-import { User } from '../entities/user';
+import { User } from '@/models/entities/user';
type LocalFollowerFollowing = Following & {
followerHost: null;
diff --git a/src/models/repositories/gallery-like.ts b/src/models/repositories/gallery-like.ts
index e01c17cff5..79123e5eec 100644
--- a/src/models/repositories/gallery-like.ts
+++ b/src/models/repositories/gallery-like.ts
@@ -1,6 +1,6 @@
import { EntityRepository, Repository } from 'typeorm';
-import { GalleryLike } from '../entities/gallery-like';
-import { GalleryPosts } from '..';
+import { GalleryLike } from '@/models/entities/gallery-like';
+import { GalleryPosts } from '../index';
@EntityRepository(GalleryLike)
export class GalleryLikeRepository extends Repository {
diff --git a/src/models/repositories/gallery-post.ts b/src/models/repositories/gallery-post.ts
index f1d6fe6326..03edb35213 100644
--- a/src/models/repositories/gallery-post.ts
+++ b/src/models/repositories/gallery-post.ts
@@ -1,9 +1,9 @@
import { EntityRepository, Repository } from 'typeorm';
-import { GalleryPost } from '../entities/gallery-post';
+import { GalleryPost } from '@/models/entities/gallery-post';
import { SchemaType } from '../../misc/schema';
-import { Users, DriveFiles, GalleryLikes } from '..';
-import { awaitAll } from '../../prelude/await-all';
-import { User } from '../entities/user';
+import { Users, DriveFiles, GalleryLikes } from '../index';
+import { awaitAll } from '@/prelude/await-all';
+import { User } from '@/models/entities/user';
export type PackedGalleryPost = SchemaType;
diff --git a/src/models/repositories/games/reversi/game.ts b/src/models/repositories/games/reversi/game.ts
index 344cf7b20e..dc91ad51b8 100644
--- a/src/models/repositories/games/reversi/game.ts
+++ b/src/models/repositories/games/reversi/game.ts
@@ -1,7 +1,7 @@
import { User } from '@/models/entities/user';
import { EntityRepository, Repository } from 'typeorm';
-import { Users } from '../../..';
-import { ReversiGame } from '../../../entities/games/reversi/game';
+import { Users } from '../../../index';
+import { ReversiGame } from '@/models/entities/games/reversi/game';
@EntityRepository(ReversiGame)
export class ReversiGameRepository extends Repository {
diff --git a/src/models/repositories/games/reversi/matching.ts b/src/models/repositories/games/reversi/matching.ts
index 013021eb90..148221dee5 100644
--- a/src/models/repositories/games/reversi/matching.ts
+++ b/src/models/repositories/games/reversi/matching.ts
@@ -1,7 +1,7 @@
import { EntityRepository, Repository } from 'typeorm';
-import { ReversiMatching } from '../../../entities/games/reversi/matching';
-import { Users } from '../../..';
-import { awaitAll } from '../../../../prelude/await-all';
+import { ReversiMatching } from '@/models/entities/games/reversi/matching';
+import { Users } from '../../../index';
+import { awaitAll } from '@/prelude/await-all';
import { User } from '@/models/entities/user';
@EntityRepository(ReversiMatching)
diff --git a/src/models/repositories/hashtag.ts b/src/models/repositories/hashtag.ts
index 3fee2f771d..ee42ad16b6 100644
--- a/src/models/repositories/hashtag.ts
+++ b/src/models/repositories/hashtag.ts
@@ -1,5 +1,5 @@
import { EntityRepository, Repository } from 'typeorm';
-import { Hashtag } from '../entities/hashtag';
+import { Hashtag } from '@/models/entities/hashtag';
import { SchemaType } from '@/misc/schema';
export type PackedHashtag = SchemaType;
diff --git a/src/models/repositories/messaging-message.ts b/src/models/repositories/messaging-message.ts
index c77b14ca7f..1a4a8eecc4 100644
--- a/src/models/repositories/messaging-message.ts
+++ b/src/models/repositories/messaging-message.ts
@@ -1,8 +1,8 @@
import { EntityRepository, Repository } from 'typeorm';
-import { MessagingMessage } from '../entities/messaging-message';
-import { Users, DriveFiles, UserGroups } from '..';
+import { MessagingMessage } from '@/models/entities/messaging-message';
+import { Users, DriveFiles, UserGroups } from '../index';
import { SchemaType } from '@/misc/schema';
-import { User } from '../entities/user';
+import { User } from '@/models/entities/user';
export type PackedMessagingMessage = SchemaType;
diff --git a/src/models/repositories/moderation-logs.ts b/src/models/repositories/moderation-logs.ts
index 3d4c075701..c7df3afdc9 100644
--- a/src/models/repositories/moderation-logs.ts
+++ b/src/models/repositories/moderation-logs.ts
@@ -1,7 +1,7 @@
import { EntityRepository, Repository } from 'typeorm';
-import { Users } from '..';
-import { ModerationLog } from '../entities/moderation-log';
-import { awaitAll } from '../../prelude/await-all';
+import { Users } from '../index';
+import { ModerationLog } from '@/models/entities/moderation-log';
+import { awaitAll } from '@/prelude/await-all';
@EntityRepository(ModerationLog)
export class ModerationLogRepository extends Repository {
diff --git a/src/models/repositories/muting.ts b/src/models/repositories/muting.ts
index 32e681bf0b..e46f4ae448 100644
--- a/src/models/repositories/muting.ts
+++ b/src/models/repositories/muting.ts
@@ -1,9 +1,9 @@
import { EntityRepository, Repository } from 'typeorm';
-import { Users } from '..';
-import { Muting } from '../entities/muting';
-import { awaitAll } from '../../prelude/await-all';
+import { Users } from '../index';
+import { Muting } from '@/models/entities/muting';
+import { awaitAll } from '@/prelude/await-all';
import { SchemaType } from '@/misc/schema';
-import { User } from '../entities/user';
+import { User } from '@/models/entities/user';
export type PackedMuting = SchemaType;
diff --git a/src/models/repositories/note-favorite.ts b/src/models/repositories/note-favorite.ts
index e58b258fcb..3248c32ded 100644
--- a/src/models/repositories/note-favorite.ts
+++ b/src/models/repositories/note-favorite.ts
@@ -1,7 +1,7 @@
import { EntityRepository, Repository } from 'typeorm';
-import { NoteFavorite } from '../entities/note-favorite';
-import { Notes } from '..';
-import { User } from '../entities/user';
+import { NoteFavorite } from '@/models/entities/note-favorite';
+import { Notes } from '../index';
+import { User } from '@/models/entities/user';
@EntityRepository(NoteFavorite)
export class NoteFavoriteRepository extends Repository {
diff --git a/src/models/repositories/note-reaction.ts b/src/models/repositories/note-reaction.ts
index 5de9e1be65..c349edf182 100644
--- a/src/models/repositories/note-reaction.ts
+++ b/src/models/repositories/note-reaction.ts
@@ -1,9 +1,9 @@
import { EntityRepository, Repository } from 'typeorm';
-import { NoteReaction } from '../entities/note-reaction';
-import { Users } from '..';
+import { NoteReaction } from '@/models/entities/note-reaction';
+import { Users } from '../index';
import { SchemaType } from '@/misc/schema';
import { convertLegacyReaction } from '@/misc/reaction-lib';
-import { User } from '../entities/user';
+import { User } from '@/models/entities/user';
export type PackedNoteReaction = SchemaType;
diff --git a/src/models/repositories/note.ts b/src/models/repositories/note.ts
index df0ca8c6ad..a8e356abf2 100644
--- a/src/models/repositories/note.ts
+++ b/src/models/repositories/note.ts
@@ -1,13 +1,13 @@
import { EntityRepository, Repository, In } from 'typeorm';
import * as mfm from 'mfm-js';
-import { Note } from '../entities/note';
-import { User } from '../entities/user';
-import { Users, PollVotes, DriveFiles, NoteReactions, Followings, Polls, Channels } from '..';
+import { Note } from '@/models/entities/note';
+import { User } from '@/models/entities/user';
+import { Users, PollVotes, DriveFiles, NoteReactions, Followings, Polls, Channels } from '../index';
import { SchemaType } from '@/misc/schema';
import { nyaize } from '@/misc/nyaize';
-import { awaitAll } from '../../prelude/await-all';
+import { awaitAll } from '@/prelude/await-all';
import { convertLegacyReaction, convertLegacyReactions, decodeReaction } from '@/misc/reaction-lib';
-import { NoteReaction } from '../entities/note-reaction';
+import { NoteReaction } from '@/models/entities/note-reaction';
import { aggregateNoteEmojis, populateEmojis, prefetchEmojis } from '@/misc/populate-emojis';
export type PackedNote = SchemaType;
diff --git a/src/models/repositories/notification.ts b/src/models/repositories/notification.ts
index 94a2c3c91a..55af96b6d7 100644
--- a/src/models/repositories/notification.ts
+++ b/src/models/repositories/notification.ts
@@ -1,11 +1,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 { Users, Notes, UserGroupInvitations, AccessTokens, NoteReactions } from '../index';
+import { Notification } from '@/models/entities/notification';
+import { awaitAll } from '@/prelude/await-all';
import { SchemaType } from '@/misc/schema';
-import { Note } from '../entities/note';
-import { NoteReaction } from '../entities/note-reaction';
-import { User } from '../entities/user';
+import { Note } from '@/models/entities/note';
+import { NoteReaction } from '@/models/entities/note-reaction';
+import { User } from '@/models/entities/user';
import { aggregateNoteEmojis, prefetchEmojis } from '@/misc/populate-emojis';
export type PackedNotification = SchemaType;
diff --git a/src/models/repositories/page-like.ts b/src/models/repositories/page-like.ts
index cfef950f3b..28f34254d9 100644
--- a/src/models/repositories/page-like.ts
+++ b/src/models/repositories/page-like.ts
@@ -1,7 +1,7 @@
import { EntityRepository, Repository } from 'typeorm';
-import { PageLike } from '../entities/page-like';
-import { Pages } from '..';
-import { User } from '../entities/user';
+import { PageLike } from '@/models/entities/page-like';
+import { Pages } from '../index';
+import { User } from '@/models/entities/user';
@EntityRepository(PageLike)
export class PageLikeRepository extends Repository {
diff --git a/src/models/repositories/page.ts b/src/models/repositories/page.ts
index a162a50321..757aaa5a3f 100644
--- a/src/models/repositories/page.ts
+++ b/src/models/repositories/page.ts
@@ -1,10 +1,10 @@
import { EntityRepository, Repository } from 'typeorm';
-import { Page } from '../entities/page';
+import { Page } from '@/models/entities/page';
import { SchemaType } from '@/misc/schema';
-import { Users, DriveFiles, PageLikes } from '..';
-import { awaitAll } from '../../prelude/await-all';
-import { DriveFile } from '../entities/drive-file';
-import { User } from '../entities/user';
+import { Users, DriveFiles, PageLikes } from '../index';
+import { awaitAll } from '@/prelude/await-all';
+import { DriveFile } from '@/models/entities/drive-file';
+import { User } from '@/models/entities/user';
export type PackedPage = SchemaType;
diff --git a/src/models/repositories/relay.ts b/src/models/repositories/relay.ts
index 601bb5eb39..72ead899f1 100644
--- a/src/models/repositories/relay.ts
+++ b/src/models/repositories/relay.ts
@@ -1,5 +1,5 @@
import { EntityRepository, Repository } from 'typeorm';
-import { Relay } from '../entities/relay';
+import { Relay } from '@/models/entities/relay';
@EntityRepository(Relay)
export class RelayRepository extends Repository {
diff --git a/src/models/repositories/signin.ts b/src/models/repositories/signin.ts
index f5b90c0e9e..9942d2d962 100644
--- a/src/models/repositories/signin.ts
+++ b/src/models/repositories/signin.ts
@@ -1,5 +1,5 @@
import { EntityRepository, Repository } from 'typeorm';
-import { Signin } from '../entities/signin';
+import { Signin } from '@/models/entities/signin';
@EntityRepository(Signin)
export class SigninRepository extends Repository {
diff --git a/src/models/repositories/user-group-invitation.ts b/src/models/repositories/user-group-invitation.ts
index 2aa890361c..638603d6ea 100644
--- a/src/models/repositories/user-group-invitation.ts
+++ b/src/models/repositories/user-group-invitation.ts
@@ -1,6 +1,6 @@
import { EntityRepository, Repository } from 'typeorm';
-import { UserGroupInvitation } from '../entities/user-group-invitation';
-import { UserGroups } from '..';
+import { UserGroupInvitation } from '@/models/entities/user-group-invitation';
+import { UserGroups } from '../index';
@EntityRepository(UserGroupInvitation)
export class UserGroupInvitationRepository extends Repository {
diff --git a/src/models/repositories/user-group.ts b/src/models/repositories/user-group.ts
index c7d73ebe26..a76ac7b9d3 100644
--- a/src/models/repositories/user-group.ts
+++ b/src/models/repositories/user-group.ts
@@ -1,6 +1,6 @@
import { EntityRepository, Repository } from 'typeorm';
-import { UserGroup } from '../entities/user-group';
-import { UserGroupJoinings } from '..';
+import { UserGroup } from '@/models/entities/user-group';
+import { UserGroupJoinings } from '../index';
import { SchemaType } from '@/misc/schema';
export type PackedUserGroup = SchemaType;
diff --git a/src/models/repositories/user-list.ts b/src/models/repositories/user-list.ts
index 7710bebfcc..809dbe0268 100644
--- a/src/models/repositories/user-list.ts
+++ b/src/models/repositories/user-list.ts
@@ -1,6 +1,6 @@
import { EntityRepository, Repository } from 'typeorm';
-import { UserList } from '../entities/user-list';
-import { UserListJoinings } from '..';
+import { UserList } from '@/models/entities/user-list';
+import { UserListJoinings } from '../index';
import { SchemaType } from '@/misc/schema';
export type PackedUserList = SchemaType;
diff --git a/src/models/repositories/user.ts b/src/models/repositories/user.ts
index 1a191fe864..f56090bb82 100644
--- a/src/models/repositories/user.ts
+++ b/src/models/repositories/user.ts
@@ -1,10 +1,10 @@
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 { User, ILocalUser, IRemoteUser } from '@/models/entities/user';
+import { Notes, NoteUnreads, FollowRequests, Notifications, MessagingMessages, UserNotePinings, Followings, Blockings, Mutings, UserProfiles, UserSecurityKeys, UserGroupJoinings, Pages, Announcements, AnnouncementReads, Antennas, AntennaNotes, ChannelFollowings, Instances } from '../index';
+import config from '@/config/index';
import { SchemaType } from '@/misc/schema';
-import { awaitAll } from '../../prelude/await-all';
+import { awaitAll } from '@/prelude/await-all';
import { populateEmojis } from '@/misc/populate-emojis';
import { getAntennas } from '@/misc/antenna-cache';
import { USER_ACTIVE_THRESHOLD, USER_ONLINE_THRESHOLD } from '@/const';
diff --git a/src/queue/index.ts b/src/queue/index.ts
index c7b7f0392c..2facd9c8e1 100644
--- a/src/queue/index.ts
+++ b/src/queue/index.ts
@@ -1,14 +1,14 @@
import * as httpSignature from 'http-signature';
-import config from '@/config';
+import config from '@/config/index';
import { program } from '../argv';
import processDeliver from './processors/deliver';
import processInbox from './processors/inbox';
-import processDb from './processors/db';
-import procesObjectStorage from './processors/object-storage';
+import processDb from './processors/db/index';
+import procesObjectStorage from './processors/object-storage/index';
import { queueLogger } from './logger';
-import { DriveFile } from '../models/entities/drive-file';
+import { DriveFile } from '@/models/entities/drive-file';
import { getJobInfo } from './get-job-info';
import { dbQueue, deliverQueue, inboxQueue, objectStorageQueue } from './queues';
import { ThinUser } from './types';
diff --git a/src/queue/initialize.ts b/src/queue/initialize.ts
index 4c0e5f9d87..5fe5a9f6f3 100644
--- a/src/queue/initialize.ts
+++ b/src/queue/initialize.ts
@@ -1,5 +1,5 @@
import * as Bull from 'bull';
-import config from '@/config';
+import config from '@/config/index';
export function initialize(name: string, limitPerSec = -1) {
return new Bull(name, {
diff --git a/src/queue/logger.ts b/src/queue/logger.ts
index d6d0774680..f789b9d079 100644
--- a/src/queue/logger.ts
+++ b/src/queue/logger.ts
@@ -1,3 +1,3 @@
-import Logger from '../services/logger';
+import Logger from '@/services/logger';
export const queueLogger = new Logger('queue', 'orange');
diff --git a/src/queue/processors/db/delete-drive-files.ts b/src/queue/processors/db/delete-drive-files.ts
index 874623204b..8a28468b0d 100644
--- a/src/queue/processors/db/delete-drive-files.ts
+++ b/src/queue/processors/db/delete-drive-files.ts
@@ -1,8 +1,8 @@
import * as Bull from 'bull';
import { queueLogger } from '../../logger';
-import { deleteFileSync } from '../../../services/drive/delete-file';
-import { Users, DriveFiles } from '../../../models';
+import { deleteFileSync } from '@/services/drive/delete-file';
+import { Users, DriveFiles } from '@/models/index';
import { MoreThan } from 'typeorm';
import { DbUserJobData } from '@/queue/types';
diff --git a/src/queue/processors/db/export-blocking.ts b/src/queue/processors/db/export-blocking.ts
index 001b50a22c..a0fc385006 100644
--- a/src/queue/processors/db/export-blocking.ts
+++ b/src/queue/processors/db/export-blocking.ts
@@ -3,10 +3,10 @@ import * as tmp from 'tmp';
import * as fs from 'fs';
import { queueLogger } from '../../logger';
-import addFile from '../../../services/drive/add-file';
-import dateFormat = require('dateformat');
+import addFile from '@/services/drive/add-file';
+import dateFormat from 'dateformat';
import { getFullApAccount } from '@/misc/convert-host';
-import { Users, Blockings } from '../../../models';
+import { Users, Blockings } from '@/models/index';
import { MoreThan } from 'typeorm';
import { DbUserJobData } from '@/queue/types';
diff --git a/src/queue/processors/db/export-following.ts b/src/queue/processors/db/export-following.ts
index c1ccb7af4c..3612150363 100644
--- a/src/queue/processors/db/export-following.ts
+++ b/src/queue/processors/db/export-following.ts
@@ -3,10 +3,10 @@ import * as tmp from 'tmp';
import * as fs from 'fs';
import { queueLogger } from '../../logger';
-import addFile from '../../../services/drive/add-file';
-import dateFormat = require('dateformat');
+import addFile from '@/services/drive/add-file';
+import dateFormat from 'dateformat';
import { getFullApAccount } from '@/misc/convert-host';
-import { Users, Followings } from '../../../models';
+import { Users, Followings } from '@/models/index';
import { MoreThan } from 'typeorm';
import { DbUserJobData } from '@/queue/types';
diff --git a/src/queue/processors/db/export-mute.ts b/src/queue/processors/db/export-mute.ts
index 55d45cc29c..70b2272cdb 100644
--- a/src/queue/processors/db/export-mute.ts
+++ b/src/queue/processors/db/export-mute.ts
@@ -3,10 +3,10 @@ import * as tmp from 'tmp';
import * as fs from 'fs';
import { queueLogger } from '../../logger';
-import addFile from '../../../services/drive/add-file';
-import dateFormat = require('dateformat');
+import addFile from '@/services/drive/add-file';
+import dateFormat from 'dateformat';
import { getFullApAccount } from '@/misc/convert-host';
-import { Users, Mutings } from '../../../models';
+import { Users, Mutings } from '@/models/index';
import { MoreThan } from 'typeorm';
import { DbUserJobData } from '@/queue/types';
diff --git a/src/queue/processors/db/export-notes.ts b/src/queue/processors/db/export-notes.ts
index 2d09c0d201..3f146aff1b 100644
--- a/src/queue/processors/db/export-notes.ts
+++ b/src/queue/processors/db/export-notes.ts
@@ -3,12 +3,12 @@ import * as tmp from 'tmp';
import * as fs from 'fs';
import { queueLogger } from '../../logger';
-import addFile from '../../../services/drive/add-file';
-import dateFormat = require('dateformat');
-import { Users, Notes, Polls } from '../../../models';
+import addFile from '@/services/drive/add-file';
+import dateFormat from 'dateformat';
+import { Users, Notes, Polls } from '@/models/index';
import { MoreThan } from 'typeorm';
-import { Note } from '../../../models/entities/note';
-import { Poll } from '../../../models/entities/poll';
+import { Note } from '@/models/entities/note';
+import { Poll } from '@/models/entities/poll';
import { DbUserJobData } from '@/queue/types';
const logger = queueLogger.createSubLogger('export-notes');
diff --git a/src/queue/processors/db/export-user-lists.ts b/src/queue/processors/db/export-user-lists.ts
index 3f793e064f..89bbd5af18 100644
--- a/src/queue/processors/db/export-user-lists.ts
+++ b/src/queue/processors/db/export-user-lists.ts
@@ -3,10 +3,10 @@ import * as tmp from 'tmp';
import * as fs from 'fs';
import { queueLogger } from '../../logger';
-import addFile from '../../../services/drive/add-file';
-import dateFormat = require('dateformat');
+import addFile from '@/services/drive/add-file';
+import dateFormat from 'dateformat';
import { getFullApAccount } from '@/misc/convert-host';
-import { Users, UserLists, UserListJoinings } from '../../../models';
+import { Users, UserLists, UserListJoinings } from '@/models/index';
import { In } from 'typeorm';
import { DbUserJobData } from '@/queue/types';
diff --git a/src/queue/processors/db/import-following.ts b/src/queue/processors/db/import-following.ts
index 1156b5cafa..3d7b7ea404 100644
--- a/src/queue/processors/db/import-following.ts
+++ b/src/queue/processors/db/import-following.ts
@@ -1,12 +1,12 @@
import * as Bull from 'bull';
import { queueLogger } from '../../logger';
-import follow from '../../../services/following/create';
+import follow from '@/services/following/create';
import { parseAcct } from '@/misc/acct';
-import { resolveUser } from '../../../remote/resolve-user';
+import { resolveUser } from '@/remote/resolve-user';
import { downloadTextFile } from '@/misc/download-text-file';
import { isSelfHost, toPuny } from '@/misc/convert-host';
-import { Users, DriveFiles } from '../../../models';
+import { Users, DriveFiles } from '@/models/index';
import { DbUserImportJobData } from '@/queue/types';
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 d04ead869a..3b8c13262a 100644
--- a/src/queue/processors/db/import-user-lists.ts
+++ b/src/queue/processors/db/import-user-lists.ts
@@ -2,11 +2,11 @@ import * as Bull from 'bull';
import { queueLogger } from '../../logger';
import { parseAcct } from '@/misc/acct';
-import { resolveUser } from '../../../remote/resolve-user';
-import { pushUserToUserList } from '../../../services/user-list/push';
+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 { DriveFiles, Users, UserLists, UserListJoinings } from '../../../models';
+import { DriveFiles, Users, UserLists, UserListJoinings } from '@/models/index';
import { genId } from '@/misc/gen-id';
import { DbUserImportJobData } from '@/queue/types';
diff --git a/src/queue/processors/deliver.ts b/src/queue/processors/deliver.ts
index f9c53fc8f1..373e57cbd5 100644
--- a/src/queue/processors/deliver.ts
+++ b/src/queue/processors/deliver.ts
@@ -1,15 +1,15 @@
import { URL } from 'url';
import * as Bull from 'bull';
-import request from '../../remote/activitypub/request';
-import { registerOrFetchInstanceDoc } from '../../services/register-or-fetch-instance-doc';
-import Logger from '../../services/logger';
-import { Instances } from '../../models';
-import { instanceChart } from '../../services/chart';
-import { fetchInstanceMetadata } from '../../services/fetch-instance-metadata';
+import request from '@/remote/activitypub/request';
+import { registerOrFetchInstanceDoc } from '@/services/register-or-fetch-instance-doc';
+import Logger from '@/services/logger';
+import { Instances } from '@/models/index';
+import { instanceChart } from '@/services/chart/index';
+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 { Instance } from '../../models/entities/instance';
+import { Instance } from '@/models/entities/instance';
import { DeliverJobData } from '../types';
const logger = new Logger('deliver');
diff --git a/src/queue/processors/inbox.ts b/src/queue/processors/inbox.ts
index 5922c4c560..e2c271cdf8 100644
--- a/src/queue/processors/inbox.ts
+++ b/src/queue/processors/inbox.ts
@@ -1,19 +1,19 @@
import { URL } from 'url';
import * as Bull from 'bull';
import * as httpSignature from 'http-signature';
-import perform from '../../remote/activitypub/perform';
-import Logger from '../../services/logger';
-import { registerOrFetchInstanceDoc } from '../../services/register-or-fetch-instance-doc';
-import { Instances } from '../../models';
-import { instanceChart } from '../../services/chart';
+import perform from '@/remote/activitypub/perform';
+import Logger from '@/services/logger';
+import { registerOrFetchInstanceDoc } from '@/services/register-or-fetch-instance-doc';
+import { Instances } from '@/models/index';
+import { instanceChart } from '@/services/chart/index';
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 { getApId } from '@/remote/activitypub/type';
+import { fetchInstanceMetadata } from '@/services/fetch-instance-metadata';
import { InboxJobData } from '../types';
-import DbResolver from '../../remote/activitypub/db-resolver';
-import { resolvePerson } from '../../remote/activitypub/models/person';
-import { LdSignature } from '../../remote/activitypub/misc/ld-signature';
+import DbResolver from '@/remote/activitypub/db-resolver';
+import { resolvePerson } from '@/remote/activitypub/models/person';
+import { LdSignature } from '@/remote/activitypub/misc/ld-signature';
const logger = new Logger('inbox');
diff --git a/src/queue/processors/object-storage/clean-remote-files.ts b/src/queue/processors/object-storage/clean-remote-files.ts
index a922755f4d..3b2e4ea939 100644
--- a/src/queue/processors/object-storage/clean-remote-files.ts
+++ b/src/queue/processors/object-storage/clean-remote-files.ts
@@ -1,8 +1,8 @@
import * as Bull from 'bull';
import { queueLogger } from '../../logger';
-import { deleteFileSync } from '../../../services/drive/delete-file';
-import { DriveFiles } from '../../../models';
+import { deleteFileSync } from '@/services/drive/delete-file';
+import { DriveFiles } from '@/models/index';
import { MoreThan, Not, IsNull } from 'typeorm';
const logger = queueLogger.createSubLogger('clean-remote-files');
diff --git a/src/queue/processors/object-storage/delete-file.ts b/src/queue/processors/object-storage/delete-file.ts
index 31050998af..ed22968a27 100644
--- a/src/queue/processors/object-storage/delete-file.ts
+++ b/src/queue/processors/object-storage/delete-file.ts
@@ -1,6 +1,6 @@
import { ObjectStorageFileJobData } from '@/queue/types';
import * as Bull from 'bull';
-import { deleteObjectStorageFile } from '../../../services/drive/delete-file';
+import { deleteObjectStorageFile } from '@/services/drive/delete-file';
export default async (job: Bull.Job) => {
const key: string = job.data.key;
diff --git a/src/queue/queues.ts b/src/queue/queues.ts
index 5e2754b83f..d8c09ef86e 100644
--- a/src/queue/queues.ts
+++ b/src/queue/queues.ts
@@ -1,4 +1,4 @@
-import config from '@/config';
+import config from '@/config/index';
import { initialize as initializeQueue } from './initialize';
import { DeliverJobData, InboxJobData, DbJobData, ObjectStorageJobData } from './types';
diff --git a/src/remote/activitypub/audience.ts b/src/remote/activitypub/audience.ts
index 85a70f8286..3d2dab1459 100644
--- a/src/remote/activitypub/audience.ts
+++ b/src/remote/activitypub/audience.ts
@@ -1,9 +1,9 @@
import { ApObject, getApIds } from './type';
import Resolver from './resolver';
import { resolvePerson } from './models/person';
-import { unique, concat } from '../../prelude/array';
+import { unique, concat } from '@/prelude/array';
import * as promiseLimit from 'promise-limit';
-import { User, IRemoteUser } from '../../models/entities/user';
+import { User, IRemoteUser } from '@/models/entities/user';
type Visibility = 'public' | 'home' | 'followers' | 'specified';
diff --git a/src/remote/activitypub/db-resolver.ts b/src/remote/activitypub/db-resolver.ts
index 9fc6f0c3b7..289b6f0ee8 100644
--- a/src/remote/activitypub/db-resolver.ts
+++ b/src/remote/activitypub/db-resolver.ts
@@ -1,9 +1,9 @@
-import config from '@/config';
-import { Note } from '../../models/entities/note';
-import { User, IRemoteUser } from '../../models/entities/user';
-import { UserPublickey } from '../../models/entities/user-publickey';
-import { MessagingMessage } from '../../models/entities/messaging-message';
-import { Notes, Users, UserPublickeys, MessagingMessages } from '../../models';
+import config from '@/config/index';
+import { Note } from '@/models/entities/note';
+import { User, IRemoteUser } from '@/models/entities/user';
+import { UserPublickey } from '@/models/entities/user-publickey';
+import { MessagingMessage } from '@/models/entities/messaging-message';
+import { Notes, Users, UserPublickeys, MessagingMessages } from '@/models/index';
import { IObject, getApId } from './type';
import { resolvePerson } from './models/person';
import escapeRegexp = require('escape-regexp');
diff --git a/src/remote/activitypub/deliver-manager.ts b/src/remote/activitypub/deliver-manager.ts
index f112b02b4f..d37f97a447 100644
--- a/src/remote/activitypub/deliver-manager.ts
+++ b/src/remote/activitypub/deliver-manager.ts
@@ -1,6 +1,6 @@
-import { Users, Followings } from '../../models';
-import { ILocalUser, IRemoteUser, User } from '../../models/entities/user';
-import { deliver } from '../../queue';
+import { Users, Followings } from '@/models/index';
+import { ILocalUser, IRemoteUser, User } from '@/models/entities/user';
+import { deliver } from '@/queue/index';
//#region types
interface IRecipe {
diff --git a/src/remote/activitypub/kernel/accept/follow.ts b/src/remote/activitypub/kernel/accept/follow.ts
index 71c1bed9de..1afb733ab5 100644
--- a/src/remote/activitypub/kernel/accept/follow.ts
+++ b/src/remote/activitypub/kernel/accept/follow.ts
@@ -1,8 +1,8 @@
-import { IRemoteUser } from '../../../../models/entities/user';
-import accept from '../../../../services/following/requests/accept';
+import { IRemoteUser } from '@/models/entities/user';
+import accept from '@/services/following/requests/accept';
import { IFollow } from '../../type';
import DbResolver from '../../db-resolver';
-import { relayAccepted } from '../../../../services/relay';
+import { relayAccepted } from '@/services/relay';
export default async (actor: IRemoteUser, activity: IFollow): Promise => {
// ※ activityはこっちから投げたフォローリクエストなので、activity.actorは存在するローカルユーザーである必要がある
diff --git a/src/remote/activitypub/kernel/accept/index.ts b/src/remote/activitypub/kernel/accept/index.ts
index 79cdbb2ef7..5c6f81b2e3 100644
--- a/src/remote/activitypub/kernel/accept/index.ts
+++ b/src/remote/activitypub/kernel/accept/index.ts
@@ -1,5 +1,5 @@
import Resolver from '../../resolver';
-import { IRemoteUser } from '../../../../models/entities/user';
+import { IRemoteUser } from '@/models/entities/user';
import acceptFollow from './follow';
import { IAccept, isFollow, getApType } from '../../type';
import { apLogger } from '../../logger';
diff --git a/src/remote/activitypub/kernel/add/index.ts b/src/remote/activitypub/kernel/add/index.ts
index a5b2687416..b33be0cc85 100644
--- a/src/remote/activitypub/kernel/add/index.ts
+++ b/src/remote/activitypub/kernel/add/index.ts
@@ -1,7 +1,7 @@
-import { IRemoteUser } from '../../../../models/entities/user';
+import { IRemoteUser } from '@/models/entities/user';
import { IAdd } from '../../type';
import { resolveNote } from '../../models/note';
-import { addPinned } from '../../../../services/i/pin';
+import { addPinned } from '@/services/i/pin';
export default async (actor: IRemoteUser, activity: IAdd): Promise => {
if ('actor' in activity && actor.uri !== activity.actor) {
diff --git a/src/remote/activitypub/kernel/announce/index.ts b/src/remote/activitypub/kernel/announce/index.ts
index 28ad2fbcc1..581357e577 100644
--- a/src/remote/activitypub/kernel/announce/index.ts
+++ b/src/remote/activitypub/kernel/announce/index.ts
@@ -1,5 +1,5 @@
import Resolver from '../../resolver';
-import { IRemoteUser } from '../../../../models/entities/user';
+import { IRemoteUser } from '@/models/entities/user';
import announceNote from './note';
import { IAnnounce, getApId } from '../../type';
import { apLogger } from '../../logger';
diff --git a/src/remote/activitypub/kernel/announce/note.ts b/src/remote/activitypub/kernel/announce/note.ts
index d5176897bc..b6ec090b99 100644
--- a/src/remote/activitypub/kernel/announce/note.ts
+++ b/src/remote/activitypub/kernel/announce/note.ts
@@ -1,6 +1,6 @@
import Resolver from '../../resolver';
-import post from '../../../../services/note/create';
-import { IRemoteUser } from '../../../../models/entities/user';
+import post from '@/services/note/create';
+import { IRemoteUser } from '@/models/entities/user';
import { IAnnounce, getApId } from '../../type';
import { fetchNote, resolveNote } from '../../models/note';
import { apLogger } from '../../logger';
diff --git a/src/remote/activitypub/kernel/block/index.ts b/src/remote/activitypub/kernel/block/index.ts
index 6c794e1250..4fd1e07b9b 100644
--- a/src/remote/activitypub/kernel/block/index.ts
+++ b/src/remote/activitypub/kernel/block/index.ts
@@ -1,6 +1,6 @@
import { IBlock } from '../../type';
-import block from '../../../../services/blocking/create';
-import { IRemoteUser } from '../../../../models/entities/user';
+import block from '@/services/blocking/create';
+import { IRemoteUser } from '@/models/entities/user';
import DbResolver from '../../db-resolver';
export default async (actor: IRemoteUser, activity: IBlock): Promise => {
diff --git a/src/remote/activitypub/kernel/create/index.ts b/src/remote/activitypub/kernel/create/index.ts
index f1a3ebff43..ce039a363b 100644
--- a/src/remote/activitypub/kernel/create/index.ts
+++ b/src/remote/activitypub/kernel/create/index.ts
@@ -1,9 +1,9 @@
import Resolver from '../../resolver';
-import { IRemoteUser } from '../../../../models/entities/user';
+import { IRemoteUser } from '@/models/entities/user';
import createNote from './note';
import { ICreate, getApId, isPost, getApType } from '../../type';
import { apLogger } from '../../logger';
-import { toArray, concat, unique } from '../../../../prelude/array';
+import { toArray, concat, unique } from '@/prelude/array';
const logger = apLogger;
diff --git a/src/remote/activitypub/kernel/create/note.ts b/src/remote/activitypub/kernel/create/note.ts
index 69499d303e..5dda85d0f5 100644
--- a/src/remote/activitypub/kernel/create/note.ts
+++ b/src/remote/activitypub/kernel/create/note.ts
@@ -1,5 +1,5 @@
import Resolver from '../../resolver';
-import { IRemoteUser } from '../../../../models/entities/user';
+import { IRemoteUser } from '@/models/entities/user';
import { createNote, fetchNote } from '../../models/note';
import { getApId, IObject, ICreate } from '../../type';
import { getApLock } from '@/misc/app-lock';
diff --git a/src/remote/activitypub/kernel/delete/index.ts b/src/remote/activitypub/kernel/delete/index.ts
index 4fb3d40577..474f3f6d60 100644
--- a/src/remote/activitypub/kernel/delete/index.ts
+++ b/src/remote/activitypub/kernel/delete/index.ts
@@ -1,7 +1,7 @@
import deleteNote from './note';
-import { IRemoteUser } from '../../../../models/entities/user';
+import { IRemoteUser } from '@/models/entities/user';
import { IDelete, getApId, isTombstone, IObject, validPost, validActor } from '../../type';
-import { toSingle } from '../../../../prelude/array';
+import { toSingle } from '@/prelude/array';
/**
* 削除アクティビティを捌きます
diff --git a/src/remote/activitypub/kernel/delete/note.ts b/src/remote/activitypub/kernel/delete/note.ts
index 1a7844f68b..3875a33d13 100644
--- a/src/remote/activitypub/kernel/delete/note.ts
+++ b/src/remote/activitypub/kernel/delete/note.ts
@@ -1,9 +1,9 @@
-import { IRemoteUser } from '../../../../models/entities/user';
-import deleteNode from '../../../../services/note/delete';
+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 { deleteMessage } from '../../../../services/messages/delete';
+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 5f5357a3ed..7abfd694cd 100644
--- a/src/remote/activitypub/kernel/flag/index.ts
+++ b/src/remote/activitypub/kernel/flag/index.ts
@@ -1,7 +1,7 @@
-import { IRemoteUser } from '../../../../models/entities/user';
-import config from '@/config';
+import { IRemoteUser } from '@/models/entities/user';
+import config from '@/config/index';
import { IFlag, getApIds } from '../../type';
-import { AbuseUserReports, Users } from '../../../../models';
+import { AbuseUserReports, Users } from '@/models/index';
import { In } from 'typeorm';
import { genId } from '@/misc/gen-id';
diff --git a/src/remote/activitypub/kernel/follow.ts b/src/remote/activitypub/kernel/follow.ts
index 3e2063302a..3183207afa 100644
--- a/src/remote/activitypub/kernel/follow.ts
+++ b/src/remote/activitypub/kernel/follow.ts
@@ -1,5 +1,5 @@
-import { IRemoteUser } from '../../../models/entities/user';
-import follow from '../../../services/following/create';
+import { IRemoteUser } from '@/models/entities/user';
+import follow from '@/services/following/create';
import { IFollow } from '../type';
import DbResolver from '../db-resolver';
diff --git a/src/remote/activitypub/kernel/index.ts b/src/remote/activitypub/kernel/index.ts
index ff75f80299..20df28eec6 100644
--- a/src/remote/activitypub/kernel/index.ts
+++ b/src/remote/activitypub/kernel/index.ts
@@ -1,22 +1,22 @@
import { IObject, isCreate, isDelete, isUpdate, isRead, isFollow, isAccept, isReject, isAdd, isRemove, isAnnounce, isLike, isUndo, isBlock, isCollectionOrOrderedCollection, isCollection, isFlag } from '../type';
-import { IRemoteUser } from '../../../models/entities/user';
-import create from './create';
-import performDeleteActivity from './delete';
-import performUpdateActivity from './update';
+import { IRemoteUser } from '@/models/entities/user';
+import create from './create/index';
+import performDeleteActivity from './delete/index';
+import performUpdateActivity from './update/index';
import { performReadActivity } from './read';
import follow from './follow';
-import undo from './undo';
+import undo from './undo/index';
import like from './like';
-import announce from './announce';
-import accept from './accept';
-import reject from './reject';
-import add from './add';
-import remove from './remove';
-import block from './block';
-import flag from './flag';
+import announce from './announce/index';
+import accept from './accept/index';
+import reject from './reject/index';
+import add from './add/index';
+import remove from './remove/index';
+import block from './block/index';
+import flag from './flag/index';
import { apLogger } from '../logger';
import Resolver from '../resolver';
-import { toArray } from '../../../prelude/array';
+import { toArray } from '@/prelude/array';
export async function performActivity(actor: IRemoteUser, activity: IObject) {
if (isCollectionOrOrderedCollection(activity)) {
diff --git a/src/remote/activitypub/kernel/like.ts b/src/remote/activitypub/kernel/like.ts
index 6ba03e4a48..58d5aefefc 100644
--- a/src/remote/activitypub/kernel/like.ts
+++ b/src/remote/activitypub/kernel/like.ts
@@ -1,6 +1,6 @@
-import { IRemoteUser } from '../../../models/entities/user';
+import { IRemoteUser } from '@/models/entities/user';
import { ILike, getApId } from '../type';
-import create from '../../../services/note/reaction/create';
+import create from '@/services/note/reaction/create';
import { fetchNote, extractEmojis } from '../models/note';
export default async (actor: IRemoteUser, activity: ILike) => {
diff --git a/src/remote/activitypub/kernel/read.ts b/src/remote/activitypub/kernel/read.ts
index edbc8e68ed..11a1731869 100644
--- a/src/remote/activitypub/kernel/read.ts
+++ b/src/remote/activitypub/kernel/read.ts
@@ -1,7 +1,7 @@
-import { IRemoteUser } from '../../../models/entities/user';
+import { IRemoteUser } from '@/models/entities/user';
import { IRead, getApId } from '../type';
import { isSelfHost, extractDbHost } from '@/misc/convert-host';
-import { MessagingMessages } from '../../../models';
+import { MessagingMessages } from '@/models/index';
import { readUserMessagingMessage } from '../../../server/api/common/read-messaging-message';
export const performReadActivity = async (actor: IRemoteUser, activity: IRead): Promise => {
diff --git a/src/remote/activitypub/kernel/reject/follow.ts b/src/remote/activitypub/kernel/reject/follow.ts
index d97ced46b3..356547440f 100644
--- a/src/remote/activitypub/kernel/reject/follow.ts
+++ b/src/remote/activitypub/kernel/reject/follow.ts
@@ -1,8 +1,8 @@
-import { IRemoteUser } from '../../../../models/entities/user';
-import reject from '../../../../services/following/requests/reject';
+import { IRemoteUser } from '@/models/entities/user';
+import reject from '@/services/following/requests/reject';
import { IFollow } from '../../type';
import DbResolver from '../../db-resolver';
-import { relayRejected } from '../../../../services/relay';
+import { relayRejected } from '@/services/relay';
export default async (actor: IRemoteUser, activity: IFollow): Promise => {
// ※ activityはこっちから投げたフォローリクエストなので、activity.actorは存在するローカルユーザーである必要がある
diff --git a/src/remote/activitypub/kernel/reject/index.ts b/src/remote/activitypub/kernel/reject/index.ts
index d7a80fce7b..d0de9c329b 100644
--- a/src/remote/activitypub/kernel/reject/index.ts
+++ b/src/remote/activitypub/kernel/reject/index.ts
@@ -1,5 +1,5 @@
import Resolver from '../../resolver';
-import { IRemoteUser } from '../../../../models/entities/user';
+import { IRemoteUser } from '@/models/entities/user';
import rejectFollow from './follow';
import { IReject, isFollow, getApType } from '../../type';
import { apLogger } from '../../logger';
diff --git a/src/remote/activitypub/kernel/remove/index.ts b/src/remote/activitypub/kernel/remove/index.ts
index 32b8d66471..d59953e653 100644
--- a/src/remote/activitypub/kernel/remove/index.ts
+++ b/src/remote/activitypub/kernel/remove/index.ts
@@ -1,7 +1,7 @@
-import { IRemoteUser } from '../../../../models/entities/user';
+import { IRemoteUser } from '@/models/entities/user';
import { IRemove } from '../../type';
import { resolveNote } from '../../models/note';
-import { removePinned } from '../../../../services/i/pin';
+import { removePinned } from '@/services/i/pin';
export default async (actor: IRemoteUser, activity: IRemove): Promise => {
if ('actor' in activity && actor.uri !== activity.actor) {
diff --git a/src/remote/activitypub/kernel/undo/announce.ts b/src/remote/activitypub/kernel/undo/announce.ts
index e08fea188d..7bb9d7fcad 100644
--- a/src/remote/activitypub/kernel/undo/announce.ts
+++ b/src/remote/activitypub/kernel/undo/announce.ts
@@ -1,7 +1,7 @@
-import { Notes } from '../../../../models';
-import { IRemoteUser } from '../../../../models/entities/user';
+import { Notes } from '@/models/index';
+import { IRemoteUser } from '@/models/entities/user';
import { IAnnounce, getApId } from '../../type';
-import deleteNote from '../../../../services/note/delete';
+import deleteNote from '@/services/note/delete';
export const undoAnnounce = async (actor: IRemoteUser, activity: IAnnounce): Promise => {
const uri = getApId(activity);
diff --git a/src/remote/activitypub/kernel/undo/block.ts b/src/remote/activitypub/kernel/undo/block.ts
index 73000fc3f1..61940486be 100644
--- a/src/remote/activitypub/kernel/undo/block.ts
+++ b/src/remote/activitypub/kernel/undo/block.ts
@@ -1,6 +1,6 @@
import { IBlock } from '../../type';
-import unblock from '../../../../services/blocking/delete';
-import { IRemoteUser } from '../../../../models/entities/user';
+import unblock from '@/services/blocking/delete';
+import { IRemoteUser } from '@/models/entities/user';
import DbResolver from '../../db-resolver';
export default async (actor: IRemoteUser, activity: IBlock): Promise => {
diff --git a/src/remote/activitypub/kernel/undo/follow.ts b/src/remote/activitypub/kernel/undo/follow.ts
index 73a164030b..d85c7e4a71 100644
--- a/src/remote/activitypub/kernel/undo/follow.ts
+++ b/src/remote/activitypub/kernel/undo/follow.ts
@@ -1,8 +1,8 @@
-import unfollow from '../../../../services/following/delete';
-import cancelRequest from '../../../../services/following/requests/cancel';
+import unfollow from '@/services/following/delete';
+import cancelRequest from '@/services/following/requests/cancel';
import { IFollow } from '../../type';
-import { IRemoteUser } from '../../../../models/entities/user';
-import { FollowRequests, Followings } from '../../../../models';
+import { IRemoteUser } from '@/models/entities/user';
+import { FollowRequests, Followings } from '@/models/index';
import DbResolver from '../../db-resolver';
export default async (actor: IRemoteUser, activity: IFollow): Promise => {
diff --git a/src/remote/activitypub/kernel/undo/index.ts b/src/remote/activitypub/kernel/undo/index.ts
index 0bab3c9666..14b1add152 100644
--- a/src/remote/activitypub/kernel/undo/index.ts
+++ b/src/remote/activitypub/kernel/undo/index.ts
@@ -1,4 +1,4 @@
-import { IRemoteUser } from '../../../../models/entities/user';
+import { IRemoteUser } from '@/models/entities/user';
import { IUndo, isFollow, isBlock, isLike, isAnnounce, getApType } from '../../type';
import unfollow from './follow';
import unblock from './block';
diff --git a/src/remote/activitypub/kernel/undo/like.ts b/src/remote/activitypub/kernel/undo/like.ts
index bd6930c66b..7f821cada0 100644
--- a/src/remote/activitypub/kernel/undo/like.ts
+++ b/src/remote/activitypub/kernel/undo/like.ts
@@ -1,6 +1,6 @@
-import { IRemoteUser } from '../../../../models/entities/user';
+import { IRemoteUser } from '@/models/entities/user';
import { ILike, getApId } from '../../type';
-import deleteReaction from '../../../../services/note/reaction/delete';
+import deleteReaction from '@/services/note/reaction/delete';
import { fetchNote } from '../../models/note';
/**
diff --git a/src/remote/activitypub/kernel/update/index.ts b/src/remote/activitypub/kernel/update/index.ts
index 6dd3e5f296..52bfc5002e 100644
--- a/src/remote/activitypub/kernel/update/index.ts
+++ b/src/remote/activitypub/kernel/update/index.ts
@@ -1,4 +1,4 @@
-import { IRemoteUser } from '../../../../models/entities/user';
+import { IRemoteUser } from '@/models/entities/user';
import { getApType, IUpdate, isActor } from '../../type';
import { apLogger } from '../../logger';
import { updateQuestion } from '../../models/question';
diff --git a/src/remote/activitypub/misc/get-note-html.ts b/src/remote/activitypub/misc/get-note-html.ts
index 683860d9cc..043335a5be 100644
--- a/src/remote/activitypub/misc/get-note-html.ts
+++ b/src/remote/activitypub/misc/get-note-html.ts
@@ -1,5 +1,5 @@
import * as mfm from 'mfm-js';
-import { Note } from '../../../models/entities/note';
+import { Note } from '@/models/entities/note';
import { toHtml } from '../../../mfm/to-html';
export default function(note: Note) {
diff --git a/src/remote/activitypub/models/image.ts b/src/remote/activitypub/models/image.ts
index 7bec1d6030..cd28d59a16 100644
--- a/src/remote/activitypub/models/image.ts
+++ b/src/remote/activitypub/models/image.ts
@@ -1,10 +1,10 @@
-import uploadFromUrl from '../../../services/drive/upload-from-url';
-import { IRemoteUser } from '../../../models/entities/user';
+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 { apLogger } from '../logger';
-import { DriveFile } from '../../../models/entities/drive-file';
-import { DriveFiles } from '../../../models';
+import { DriveFile } from '@/models/entities/drive-file';
+import { DriveFiles } from '@/models/index';
const logger = apLogger;
diff --git a/src/remote/activitypub/models/mention.ts b/src/remote/activitypub/models/mention.ts
index 5d10328ef4..ade9c90806 100644
--- a/src/remote/activitypub/models/mention.ts
+++ b/src/remote/activitypub/models/mention.ts
@@ -1,9 +1,9 @@
-import { toArray, unique } from '../../../prelude/array';
+import { toArray, unique } from '@/prelude/array';
import { IObject, isMention, IApMention } from '../type';
import { resolvePerson } from './person';
import * as promiseLimit from 'promise-limit';
import Resolver from '../resolver';
-import { User } from '../../../models/entities/user';
+import { User } from '@/models/entities/user';
export async function extractApMentions(tags: IObject | IObject[] | null | undefined) {
const hrefs = unique(extractApMentionObjects(tags).map(x => x.href as string));
diff --git a/src/remote/activitypub/models/note.ts b/src/remote/activitypub/models/note.ts
index 6621ae3492..25004cb4d2 100644
--- a/src/remote/activitypub/models/note.ts
+++ b/src/remote/activitypub/models/note.ts
@@ -1,28 +1,28 @@
import * as promiseLimit from 'promise-limit';
-import config from '@/config';
+import config from '@/config/index';
import Resolver from '../resolver';
-import post from '../../../services/note/create';
+import post from '@/services/note/create';
import { resolvePerson, updatePerson } from './person';
import { resolveImage } from './image';
-import { IRemoteUser } from '../../../models/entities/user';
+import { IRemoteUser } from '@/models/entities/user';
import { htmlToMfm } from '../misc/html-to-mfm';
import { extractApHashtags } from './tag';
-import { unique, toArray, toSingle } from '../../../prelude/array';
+import { unique, toArray, toSingle } from '@/prelude/array';
import { extractPollFromQuestion } from './question';
-import vote from '../../../services/note/polls/vote';
+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 { DriveFile } from '@/models/entities/drive-file';
+import { deliverQuestionUpdate } from '@/services/note/polls/update';
import { extractDbHost, toPuny } from '@/misc/convert-host';
-import { Emojis, Polls, MessagingMessages } from '../../../models';
-import { Note } from '../../../models/entities/note';
+import { Emojis, Polls, MessagingMessages } from '@/models/index';
+import { Note } from '@/models/entities/note';
import { IObject, getOneApId, getApId, getOneApHrefNullable, validPost, IPost, isEmoji, getApType } from '../type';
-import { Emoji } from '../../../models/entities/emoji';
+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 { createMessage } from '../../../services/messages/create';
+import { createMessage } from '@/services/messages/create';
import { parseAudience } from '../audience';
import { extractApMentions } from './mention';
import DbResolver from '../db-resolver';
diff --git a/src/remote/activitypub/models/person.ts b/src/remote/activitypub/models/person.ts
index 829b4878f8..4823def7cb 100644
--- a/src/remote/activitypub/models/person.ts
+++ b/src/remote/activitypub/models/person.ts
@@ -2,35 +2,48 @@ import { URL } from 'url';
import * as promiseLimit from 'promise-limit';
import $, { Context } from 'cafy';
-import config from '@/config';
+import config from '@/config/index';
import Resolver from '../resolver';
import { resolveImage } from './image';
import { isCollectionOrOrderedCollection, isCollection, IActor, getApId, getOneApHrefNullable, IObject, isPropertyValue, IApPropertyValue, getApType, isActor } from '../type';
import { fromHtml } from '../../../mfm/from-html';
import { htmlToMfm } from '../misc/html-to-mfm';
import { resolveNote, extractEmojis } from './note';
-import { registerOrFetchInstanceDoc } from '../../../services/register-or-fetch-instance-doc';
+import { registerOrFetchInstanceDoc } from '@/services/register-or-fetch-instance-doc';
import { extractApHashtags } from './tag';
import { apLogger } from '../logger';
-import { Note } from '../../../models/entities/note';
-import { updateUsertags } from '../../../services/update-hashtag';
-import { Users, Instances, DriveFiles, Followings, UserProfiles, UserPublickeys } from '../../../models';
-import { User, IRemoteUser } from '../../../models/entities/user';
-import { Emoji } from '../../../models/entities/emoji';
-import { UserNotePining } from '../../../models/entities/user-note-pining';
+import { Note } from '@/models/entities/note';
+import { updateUsertags } from '@/services/update-hashtag';
+import { Users, Instances, DriveFiles, Followings, UserProfiles, UserPublickeys } from '@/models/index';
+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 { instanceChart, usersChart } from '../../../services/chart';
-import { UserPublickey } from '../../../models/entities/user-publickey';
+import { instanceChart, usersChart } from '@/services/chart/index';
+import { UserPublickey } from '@/models/entities/user-publickey';
import { isDuplicateKeyValueError } from '@/misc/is-duplicate-key-value-error';
import { toPuny } from '@/misc/convert-host';
-import { UserProfile } from '../../../models/entities/user-profile';
+import { UserProfile } from '@/models/entities/user-profile';
import { getConnection } from 'typeorm';
-import { toArray } from '../../../prelude/array';
-import { fetchInstanceMetadata } from '../../../services/fetch-instance-metadata';
+import { toArray } from '@/prelude/array';
+import { fetchInstanceMetadata } from '@/services/fetch-instance-metadata';
import { normalizeForSearch } from '@/misc/normalize-for-search';
const logger = apLogger;
+const nameLength = 128;
+const summaryLength = 2048;
+
+function truncate(input: string, size: number): string;
+function truncate(input: string | undefined, size: number): string | undefined;
+function truncate(input: string | undefined, size: number): string | undefined {
+ if (!input || input.length <= size) {
+ return input;
+ } else {
+ return input.substring(0, size);
+ }
+}
+
/**
* Validate and convert to actor object
* @param x Fetched object
@@ -55,8 +68,12 @@ function validateActor(x: IObject, uri: string): IActor {
validate('id', x.id, $.str.min(1));
validate('inbox', x.inbox, $.str.min(1));
validate('preferredUsername', x.preferredUsername, $.str.min(1).max(128).match(/^\w([\w-.]*\w)?$/));
- validate('name', x.name, $.optional.nullable.str.max(128));
- validate('summary', x.summary, $.optional.nullable.str.max(2048));
+
+ // These fields are only informational, and some AP software allows these
+ // fields to be very long. If they are too long, we cut them off. This way
+ // we can at least see these users and their activities.
+ validate('name', truncate(x.name, nameLength), $.optional.nullable.str);
+ validate('summary', truncate(x.summary, summaryLength), $.optional.nullable.str);
const idHost = toPuny(new URL(x.id!).hostname);
if (idHost !== expectHost) {
@@ -137,7 +154,7 @@ export async function createPerson(uri: string, resolver?: Resolver): Promise {
if (resolver == null) resolver = new Resolver();
diff --git a/src/remote/activitypub/models/tag.ts b/src/remote/activitypub/models/tag.ts
index d25cb463fe..fbc6b9b428 100644
--- a/src/remote/activitypub/models/tag.ts
+++ b/src/remote/activitypub/models/tag.ts
@@ -1,4 +1,4 @@
-import { toArray } from '../../../prelude/array';
+import { toArray } from '@/prelude/array';
import { IObject, isHashtag, IApHashtag } from '../type';
export function extractApHashtags(tags: IObject | IObject[] | null | undefined) {
diff --git a/src/remote/activitypub/perform.ts b/src/remote/activitypub/perform.ts
index 12e72fdea5..01f0e3676e 100644
--- a/src/remote/activitypub/perform.ts
+++ b/src/remote/activitypub/perform.ts
@@ -1,6 +1,6 @@
import { IObject } from './type';
-import { IRemoteUser } from '../../models/entities/user';
-import { performActivity } from './kernel';
+import { IRemoteUser } from '@/models/entities/user';
+import { performActivity } from './kernel/index';
export default async (actor: IRemoteUser, activity: IObject): Promise => {
await performActivity(actor, activity);
diff --git a/src/remote/activitypub/renderer/accept.ts b/src/remote/activitypub/renderer/accept.ts
index 8725a30e7c..f1e61f4c6a 100644
--- a/src/remote/activitypub/renderer/accept.ts
+++ b/src/remote/activitypub/renderer/accept.ts
@@ -1,4 +1,4 @@
-import config from '@/config';
+import config from '@/config/index';
import { User } from '@/models/entities/user';
export default (object: any, user: { id: User['id']; host: null }) => ({
diff --git a/src/remote/activitypub/renderer/add.ts b/src/remote/activitypub/renderer/add.ts
index 18f9ccacf5..21414a9380 100644
--- a/src/remote/activitypub/renderer/add.ts
+++ b/src/remote/activitypub/renderer/add.ts
@@ -1,5 +1,5 @@
-import config from '@/config';
-import { ILocalUser } from '../../../models/entities/user';
+import config from '@/config/index';
+import { ILocalUser } from '@/models/entities/user';
export default (user: ILocalUser, target: any, object: any) => ({
type: 'Add',
diff --git a/src/remote/activitypub/renderer/announce.ts b/src/remote/activitypub/renderer/announce.ts
index f577dbbc89..7bf90922be 100644
--- a/src/remote/activitypub/renderer/announce.ts
+++ b/src/remote/activitypub/renderer/announce.ts
@@ -1,5 +1,5 @@
-import config from '@/config';
-import { Note } from '../../../models/entities/note';
+import config from '@/config/index';
+import { Note } from '@/models/entities/note';
export default (object: any, note: Note) => {
const attributedTo = `${config.url}/users/${note.userId}`;
diff --git a/src/remote/activitypub/renderer/block.ts b/src/remote/activitypub/renderer/block.ts
index 26b7dd580a..bb3d74295a 100644
--- a/src/remote/activitypub/renderer/block.ts
+++ b/src/remote/activitypub/renderer/block.ts
@@ -1,5 +1,5 @@
-import config from '@/config';
-import { ILocalUser, IRemoteUser } from '../../../models/entities/user';
+import config from '@/config/index';
+import { ILocalUser, IRemoteUser } from '@/models/entities/user';
export default (blocker: ILocalUser, blockee: IRemoteUser) => ({
type: 'Block',
diff --git a/src/remote/activitypub/renderer/create.ts b/src/remote/activitypub/renderer/create.ts
index ff0840b9e6..04aa993a91 100644
--- a/src/remote/activitypub/renderer/create.ts
+++ b/src/remote/activitypub/renderer/create.ts
@@ -1,5 +1,5 @@
-import config from '@/config';
-import { Note } from '../../../models/entities/note';
+import config from '@/config/index';
+import { Note } from '@/models/entities/note';
export default (object: any, note: Note) => {
const activity = {
diff --git a/src/remote/activitypub/renderer/delete.ts b/src/remote/activitypub/renderer/delete.ts
index 710f0482a6..83b27fa866 100644
--- a/src/remote/activitypub/renderer/delete.ts
+++ b/src/remote/activitypub/renderer/delete.ts
@@ -1,5 +1,5 @@
-import config from '@/config';
-import { User } from '../../../models/entities/user';
+import config from '@/config/index';
+import { User } from '@/models/entities/user';
export default (object: any, user: { id: User['id']; host: null }) => ({
type: 'Delete',
diff --git a/src/remote/activitypub/renderer/document.ts b/src/remote/activitypub/renderer/document.ts
index f6e9dca45d..a9d86dea15 100644
--- a/src/remote/activitypub/renderer/document.ts
+++ b/src/remote/activitypub/renderer/document.ts
@@ -1,5 +1,5 @@
-import { DriveFile } from '../../../models/entities/drive-file';
-import { DriveFiles } from '../../../models';
+import { DriveFile } from '@/models/entities/drive-file';
+import { DriveFiles } from '@/models/index';
export default (file: DriveFile) => ({
type: 'Document',
diff --git a/src/remote/activitypub/renderer/emoji.ts b/src/remote/activitypub/renderer/emoji.ts
index b62259c32e..ca514c56b5 100644
--- a/src/remote/activitypub/renderer/emoji.ts
+++ b/src/remote/activitypub/renderer/emoji.ts
@@ -1,5 +1,5 @@
-import config from '@/config';
-import { Emoji } from '../../../models/entities/emoji';
+import config from '@/config/index';
+import { Emoji } from '@/models/entities/emoji';
export default (emoji: Emoji) => ({
id: `${config.url}/emojis/${emoji.name}`,
diff --git a/src/remote/activitypub/renderer/follow-relay.ts b/src/remote/activitypub/renderer/follow-relay.ts
index d53bd05825..984c3c7639 100644
--- a/src/remote/activitypub/renderer/follow-relay.ts
+++ b/src/remote/activitypub/renderer/follow-relay.ts
@@ -1,6 +1,6 @@
-import config from '@/config';
-import { Relay } from '../../../models/entities/relay';
-import { ILocalUser } from '../../../models/entities/user';
+import config from '@/config/index';
+import { Relay } from '@/models/entities/relay';
+import { ILocalUser } from '@/models/entities/user';
export function renderFollowRelay(relay: Relay, relayActor: ILocalUser) {
const follow = {
diff --git a/src/remote/activitypub/renderer/follow-user.ts b/src/remote/activitypub/renderer/follow-user.ts
index 744361a24f..e3dde7f7fe 100644
--- a/src/remote/activitypub/renderer/follow-user.ts
+++ b/src/remote/activitypub/renderer/follow-user.ts
@@ -1,6 +1,6 @@
-import config from '@/config';
-import { Users } from '../../../models';
-import { User } from '../../../models/entities/user';
+import config from '@/config/index';
+import { Users } from '@/models/index';
+import { User } from '@/models/entities/user';
/**
* Convert (local|remote)(Follower|Followee)ID to URL
diff --git a/src/remote/activitypub/renderer/follow.ts b/src/remote/activitypub/renderer/follow.ts
index 252b0b2838..c8a7946799 100644
--- a/src/remote/activitypub/renderer/follow.ts
+++ b/src/remote/activitypub/renderer/follow.ts
@@ -1,6 +1,6 @@
-import config from '@/config';
-import { User } from '../../../models/entities/user';
-import { Users } from '../../../models';
+import config from '@/config/index';
+import { User } from '@/models/entities/user';
+import { Users } from '@/models/index';
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 = {
diff --git a/src/remote/activitypub/renderer/hashtag.ts b/src/remote/activitypub/renderer/hashtag.ts
index a739a4b0b6..290c74c7fe 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/index';
export default (tag: string) => ({
type: 'Hashtag',
diff --git a/src/remote/activitypub/renderer/image.ts b/src/remote/activitypub/renderer/image.ts
index cbd4fbbe68..0cb3d6ed65 100644
--- a/src/remote/activitypub/renderer/image.ts
+++ b/src/remote/activitypub/renderer/image.ts
@@ -1,5 +1,5 @@
-import { DriveFile } from '../../../models/entities/drive-file';
-import { DriveFiles } from '../../../models';
+import { DriveFile } from '@/models/entities/drive-file';
+import { DriveFiles } from '@/models/index';
export default (file: DriveFile) => ({
type: 'Image',
diff --git a/src/remote/activitypub/renderer/index.ts b/src/remote/activitypub/renderer/index.ts
index 84500e9491..f6ec6583d0 100644
--- a/src/remote/activitypub/renderer/index.ts
+++ b/src/remote/activitypub/renderer/index.ts
@@ -1,4 +1,4 @@
-import config from '@/config';
+import config from '@/config/index';
import { v4 as uuid } from 'uuid';
import { IActivity } from '../type';
import { LdSignature } from '../misc/ld-signature';
diff --git a/src/remote/activitypub/renderer/key.ts b/src/remote/activitypub/renderer/key.ts
index 547059dd3c..992f98d79a 100644
--- a/src/remote/activitypub/renderer/key.ts
+++ b/src/remote/activitypub/renderer/key.ts
@@ -1,6 +1,6 @@
-import config from '@/config';
-import { ILocalUser } from '../../../models/entities/user';
-import { UserKeypair } from '../../../models/entities/user-keypair';
+import config from '@/config/index';
+import { ILocalUser } from '@/models/entities/user';
+import { UserKeypair } from '@/models/entities/user-keypair';
import { createPublicKey } from 'crypto';
export default (user: ILocalUser, key: UserKeypair, postfix?: string) => ({
diff --git a/src/remote/activitypub/renderer/like.ts b/src/remote/activitypub/renderer/like.ts
index 5967836846..a7e79a176f 100644
--- a/src/remote/activitypub/renderer/like.ts
+++ b/src/remote/activitypub/renderer/like.ts
@@ -1,7 +1,7 @@
-import config from '@/config';
-import { NoteReaction } from '../../../models/entities/note-reaction';
-import { Note } from '../../../models/entities/note';
-import { Emojis } from '../../../models';
+import config from '@/config/index';
+import { NoteReaction } from '@/models/entities/note-reaction';
+import { Note } from '@/models/entities/note';
+import { Emojis } from '@/models/index';
import renderEmoji from './emoji';
export const renderLike = async (noteReaction: NoteReaction, note: Note) => {
diff --git a/src/remote/activitypub/renderer/mention.ts b/src/remote/activitypub/renderer/mention.ts
index 14c4c40d47..06d2d33e59 100644
--- a/src/remote/activitypub/renderer/mention.ts
+++ b/src/remote/activitypub/renderer/mention.ts
@@ -1,6 +1,6 @@
-import config from '@/config';
-import { User, ILocalUser } from '../../../models/entities/user';
-import { Users } from '../../../models';
+import config from '@/config/index';
+import { User, ILocalUser } from '@/models/entities/user';
+import { Users } from '@/models/index';
export default (mention: User) => ({
type: 'Mention',
diff --git a/src/remote/activitypub/renderer/note.ts b/src/remote/activitypub/renderer/note.ts
index 54dee07892..84a1786784 100644
--- a/src/remote/activitypub/renderer/note.ts
+++ b/src/remote/activitypub/renderer/note.ts
@@ -2,14 +2,14 @@ import renderDocument from './document';
import renderHashtag from './hashtag';
import renderMention from './mention';
import renderEmoji from './emoji';
-import config from '@/config';
+import config from '@/config/index';
import toHtml from '../misc/get-note-html';
-import { Note, IMentionedRemoteUsers } from '../../../models/entities/note';
-import { DriveFile } from '../../../models/entities/drive-file';
-import { DriveFiles, Notes, Users, Emojis, Polls } from '../../../models';
+import { Note, IMentionedRemoteUsers } from '@/models/entities/note';
+import { DriveFile } from '@/models/entities/drive-file';
+import { DriveFiles, Notes, Users, Emojis, Polls } from '@/models/index';
import { In } from 'typeorm';
-import { Emoji } from '../../../models/entities/emoji';
-import { Poll } from '../../../models/entities/poll';
+import { Emoji } from '@/models/entities/emoji';
+import { Poll } from '@/models/entities/poll';
export default async function renderNote(note: Note, dive = true, isTalk = false): Promise {
const getPromisedFiles = async (ids: string[]) => {
diff --git a/src/remote/activitypub/renderer/person.ts b/src/remote/activitypub/renderer/person.ts
index 91b91bff92..f2a283a870 100644
--- a/src/remote/activitypub/renderer/person.ts
+++ b/src/remote/activitypub/renderer/person.ts
@@ -2,14 +2,14 @@ import { URL } from 'url';
import * as mfm from 'mfm-js';
import renderImage from './image';
import renderKey from './key';
-import config from '@/config';
-import { ILocalUser } from '../../../models/entities/user';
+import config from '@/config/index';
+import { ILocalUser } from '@/models/entities/user';
import { toHtml } from '../../../mfm/to-html';
import { getEmojis } from './note';
import renderEmoji from './emoji';
import { IIdentifier } from '../models/identifier';
import renderHashtag from './hashtag';
-import { DriveFiles, UserProfiles } from '../../../models';
+import { DriveFiles, UserProfiles } from '@/models/index';
import { getUserKeypair } from '@/misc/keypair-store';
export async function renderPerson(user: ILocalUser) {
diff --git a/src/remote/activitypub/renderer/question.ts b/src/remote/activitypub/renderer/question.ts
index 99670f80a1..246d599bab 100644
--- a/src/remote/activitypub/renderer/question.ts
+++ b/src/remote/activitypub/renderer/question.ts
@@ -1,7 +1,7 @@
-import config from '@/config';
+import config from '@/config/index';
import { User } from '@/models/entities/user';
-import { Note } from '../../../models/entities/note';
-import { Poll } from '../../../models/entities/poll';
+import { Note } from '@/models/entities/note';
+import { Poll } from '@/models/entities/poll';
export default async function renderQuestion(user: { id: User['id'] }, note: Note, poll: Poll) {
const question = {
diff --git a/src/remote/activitypub/renderer/read.ts b/src/remote/activitypub/renderer/read.ts
index 1287f4ccb0..95357f64d3 100644
--- a/src/remote/activitypub/renderer/read.ts
+++ b/src/remote/activitypub/renderer/read.ts
@@ -1,6 +1,6 @@
-import config from '@/config';
+import config from '@/config/index';
import { User } from '@/models/entities/user';
-import { MessagingMessage } from '../../../models/entities/messaging-message';
+import { MessagingMessage } from '@/models/entities/messaging-message';
export const renderReadActivity = (user: { id: User['id'] }, message: MessagingMessage) => ({
type: 'Read',
diff --git a/src/remote/activitypub/renderer/reject.ts b/src/remote/activitypub/renderer/reject.ts
index e1eb5b004e..42beffecf2 100644
--- a/src/remote/activitypub/renderer/reject.ts
+++ b/src/remote/activitypub/renderer/reject.ts
@@ -1,4 +1,4 @@
-import config from '@/config';
+import config from '@/config/index';
import { User } from '@/models/entities/user';
export default (object: any, user: { id: User['id'] }) => ({
diff --git a/src/remote/activitypub/renderer/remove.ts b/src/remote/activitypub/renderer/remove.ts
index ff1fab8e57..79d60edbaa 100644
--- a/src/remote/activitypub/renderer/remove.ts
+++ b/src/remote/activitypub/renderer/remove.ts
@@ -1,4 +1,4 @@
-import config from '@/config';
+import config from '@/config/index';
import { User } from '@/models/entities/user';
export default (user: { id: User['id'] }, target: any, object: any) => ({
diff --git a/src/remote/activitypub/renderer/undo.ts b/src/remote/activitypub/renderer/undo.ts
index 627a6533ab..f9082ffdfc 100644
--- a/src/remote/activitypub/renderer/undo.ts
+++ b/src/remote/activitypub/renderer/undo.ts
@@ -1,5 +1,5 @@
-import config from '@/config';
-import { ILocalUser, User } from '../../../models/entities/user';
+import config from '@/config/index';
+import { ILocalUser, User } from '@/models/entities/user';
export default (object: any, user: { id: User['id'] }) => {
if (object == null) return null;
diff --git a/src/remote/activitypub/renderer/update.ts b/src/remote/activitypub/renderer/update.ts
index 4295fc64f3..d9a8149af3 100644
--- a/src/remote/activitypub/renderer/update.ts
+++ b/src/remote/activitypub/renderer/update.ts
@@ -1,4 +1,4 @@
-import config from '@/config';
+import config from '@/config/index';
import { User } from '@/models/entities/user';
export default (object: any, user: { id: User['id'] }) => {
diff --git a/src/remote/activitypub/renderer/vote.ts b/src/remote/activitypub/renderer/vote.ts
index 529fdaafcd..ff038070f7 100644
--- a/src/remote/activitypub/renderer/vote.ts
+++ b/src/remote/activitypub/renderer/vote.ts
@@ -1,8 +1,8 @@
-import config from '@/config';
-import { Note } from '../../../models/entities/note';
-import { IRemoteUser, User } from '../../../models/entities/user';
-import { PollVote } from '../../../models/entities/poll-vote';
-import { Poll } from '../../../models/entities/poll';
+import config from '@/config/index';
+import { Note } from '@/models/entities/note';
+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: { id: User['id'] }, vote: PollVote, note: Note, poll: Poll, pollOwner: IRemoteUser): Promise {
return {
diff --git a/src/remote/activitypub/request.ts b/src/remote/activitypub/request.ts
index e4dca32329..fe1009243c 100644
--- a/src/remote/activitypub/request.ts
+++ b/src/remote/activitypub/request.ts
@@ -3,7 +3,7 @@ import * as https from 'https';
import { sign } from 'http-signature';
import * as crypto from 'crypto';
-import config from '@/config';
+import config from '@/config/index';
import { User } from '@/models/entities/user';
import { getAgentByUrl } from '@/misc/fetch';
import { URL } from 'url';
diff --git a/src/remote/activitypub/resolver.ts b/src/remote/activitypub/resolver.ts
index 066bde0883..32f3d9ef26 100644
--- a/src/remote/activitypub/resolver.ts
+++ b/src/remote/activitypub/resolver.ts
@@ -1,7 +1,7 @@
-import config from '@/config';
+import config from '@/config/index';
import { getJson } from '@/misc/fetch';
-import { ILocalUser } from '../../models/entities/user';
-import { getInstanceActor } from '../../services/instance-actor';
+import { ILocalUser } from '@/models/entities/user';
+import { getInstanceActor } from '@/services/instance-actor';
import { signedGet } from './request';
import { IObject, isCollectionOrOrderedCollection, ICollection, IOrderedCollection } from './type';
diff --git a/src/remote/logger.ts b/src/remote/logger.ts
index d7464e7fde..9ffad4d716 100644
--- a/src/remote/logger.ts
+++ b/src/remote/logger.ts
@@ -1,3 +1,3 @@
-import Logger from '../services/logger';
+import Logger from '@/services/logger';
export const remoteLogger = new Logger('remote', 'cyan');
diff --git a/src/remote/resolve-user.ts b/src/remote/resolve-user.ts
index 1bcecee3c1..a12396abc8 100644
--- a/src/remote/resolve-user.ts
+++ b/src/remote/resolve-user.ts
@@ -1,11 +1,11 @@
import { URL } from 'url';
import webFinger from './webfinger';
-import config from '@/config';
+import config from '@/config/index';
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 { User, IRemoteUser } from '@/models/entities/user';
+import { Users } from '@/models/index';
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 744ab3639a..f63fd03628 100644
--- a/src/remote/webfinger.ts
+++ b/src/remote/webfinger.ts
@@ -1,6 +1,6 @@
import { URL } from 'url';
import { getJson } from '@/misc/fetch';
-import { query as urlQuery } from '../prelude/url';
+import { query as urlQuery } from '@/prelude/url';
type ILink = {
href: string;
diff --git a/src/server/activitypub.ts b/src/server/activitypub.ts
index 0ddc4683fe..eabe681136 100644
--- a/src/server/activitypub.ts
+++ b/src/server/activitypub.ts
@@ -2,21 +2,21 @@ import * as Router from '@koa/router';
import * as json from 'koa-json-body';
import * as httpSignature from 'http-signature';
-import { renderActivity } from '../remote/activitypub/renderer';
-import renderNote from '../remote/activitypub/renderer/note';
-import renderKey from '../remote/activitypub/renderer/key';
-import { renderPerson } from '../remote/activitypub/renderer/person';
-import renderEmoji from '../remote/activitypub/renderer/emoji';
+import { renderActivity } from '@/remote/activitypub/renderer/index';
+import renderNote from '@/remote/activitypub/renderer/note';
+import renderKey from '@/remote/activitypub/renderer/key';
+import { renderPerson } from '@/remote/activitypub/renderer/person';
+import renderEmoji from '@/remote/activitypub/renderer/emoji';
import Outbox, { packActivity } from './activitypub/outbox';
import Followers from './activitypub/followers';
import Following from './activitypub/following';
import Featured from './activitypub/featured';
-import { inbox as processInbox } from '../queue';
+import { inbox as processInbox } from '@/queue/index';
import { isSelfHost } from '@/misc/convert-host';
-import { Notes, Users, Emojis, NoteReactions } from '../models';
-import { ILocalUser, User } from '../models/entities/user';
+import { Notes, Users, Emojis, NoteReactions } from '@/models/index';
+import { ILocalUser, User } from '@/models/entities/user';
import { In } from 'typeorm';
-import { renderLike } from '../remote/activitypub/renderer/like';
+import { renderLike } from '@/remote/activitypub/renderer/like';
import { getUserKeypair } from '@/misc/keypair-store';
// Init router
diff --git a/src/server/activitypub/featured.ts b/src/server/activitypub/featured.ts
index 02d4a30a5d..1598cc680f 100644
--- a/src/server/activitypub/featured.ts
+++ b/src/server/activitypub/featured.ts
@@ -1,10 +1,10 @@
import * as Router from '@koa/router';
-import config from '@/config';
-import { renderActivity } from '../../remote/activitypub/renderer';
-import renderOrderedCollection from '../../remote/activitypub/renderer/ordered-collection';
+import config from '@/config/index';
+import { renderActivity } from '@/remote/activitypub/renderer/index';
+import renderOrderedCollection from '@/remote/activitypub/renderer/ordered-collection';
import { setResponseType } from '../activitypub';
-import renderNote from '../../remote/activitypub/renderer/note';
-import { Users, Notes, UserNotePinings } from '../../models';
+import renderNote from '@/remote/activitypub/renderer/note';
+import { Users, Notes, UserNotePinings } from '@/models/index';
export default async (ctx: Router.RouterContext) => {
const userId = ctx.params.user;
diff --git a/src/server/activitypub/followers.ts b/src/server/activitypub/followers.ts
index a4f2e666d0..8b6a066bf0 100644
--- a/src/server/activitypub/followers.ts
+++ b/src/server/activitypub/followers.ts
@@ -1,14 +1,14 @@
import * as Router from '@koa/router';
-import config from '@/config';
+import config from '@/config/index';
import $ from 'cafy';
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';
-import renderOrderedCollectionPage from '../../remote/activitypub/renderer/ordered-collection-page';
-import renderFollowUser from '../../remote/activitypub/renderer/follow-user';
+import * as url from '@/prelude/url';
+import { renderActivity } from '@/remote/activitypub/renderer/index';
+import renderOrderedCollection from '@/remote/activitypub/renderer/ordered-collection';
+import renderOrderedCollectionPage from '@/remote/activitypub/renderer/ordered-collection-page';
+import renderFollowUser from '@/remote/activitypub/renderer/follow-user';
import { setResponseType } from '../activitypub';
-import { Users, Followings } from '../../models';
+import { Users, Followings } from '@/models/index';
import { LessThan } from 'typeorm';
export default async (ctx: Router.RouterContext) => {
diff --git a/src/server/activitypub/following.ts b/src/server/activitypub/following.ts
index f5e5c62364..5fc5d68a9c 100644
--- a/src/server/activitypub/following.ts
+++ b/src/server/activitypub/following.ts
@@ -1,16 +1,16 @@
import * as Router from '@koa/router';
-import config from '@/config';
+import config from '@/config/index';
import $ from 'cafy';
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';
-import renderOrderedCollectionPage from '../../remote/activitypub/renderer/ordered-collection-page';
-import renderFollowUser from '../../remote/activitypub/renderer/follow-user';
+import * as url from '@/prelude/url';
+import { renderActivity } from '@/remote/activitypub/renderer/index';
+import renderOrderedCollection from '@/remote/activitypub/renderer/ordered-collection';
+import renderOrderedCollectionPage from '@/remote/activitypub/renderer/ordered-collection-page';
+import renderFollowUser from '@/remote/activitypub/renderer/follow-user';
import { setResponseType } from '../activitypub';
-import { Users, Followings } from '../../models';
+import { Users, Followings } from '@/models/index';
import { LessThan, FindConditions } from 'typeorm';
-import { Following } from '../../models/entities/following';
+import { Following } from '@/models/entities/following';
export default async (ctx: Router.RouterContext) => {
const userId = ctx.params.user;
diff --git a/src/server/activitypub/outbox.ts b/src/server/activitypub/outbox.ts
index 338e177370..df528e8b5a 100644
--- a/src/server/activitypub/outbox.ts
+++ b/src/server/activitypub/outbox.ts
@@ -1,20 +1,20 @@
import * as Router from '@koa/router';
-import config from '@/config';
+import config from '@/config/index';
import $ from 'cafy';
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';
+import { renderActivity } from '@/remote/activitypub/renderer/index';
+import renderOrderedCollection from '@/remote/activitypub/renderer/ordered-collection';
+import renderOrderedCollectionPage from '@/remote/activitypub/renderer/ordered-collection-page';
import { setResponseType } from '../activitypub';
-import renderNote from '../../remote/activitypub/renderer/note';
-import renderCreate from '../../remote/activitypub/renderer/create';
-import renderAnnounce from '../../remote/activitypub/renderer/announce';
-import { countIf } from '../../prelude/array';
-import * as url from '../../prelude/url';
-import { Users, Notes } from '../../models';
+import renderNote from '@/remote/activitypub/renderer/note';
+import renderCreate from '@/remote/activitypub/renderer/create';
+import renderAnnounce from '@/remote/activitypub/renderer/announce';
+import { countIf } from '@/prelude/array';
+import * as url from '@/prelude/url';
+import { Users, Notes } from '@/models/index';
import { makePaginationQuery } from '../api/common/make-pagination-query';
import { Brackets } from 'typeorm';
-import { Note } from '../../models/entities/note';
+import { Note } from '@/models/entities/note';
export default async (ctx: Router.RouterContext) => {
const userId = ctx.params.user;
diff --git a/src/server/api/2fa.ts b/src/server/api/2fa.ts
index 77f0f8cd04..117446383d 100644
--- a/src/server/api/2fa.ts
+++ b/src/server/api/2fa.ts
@@ -1,5 +1,5 @@
import * as crypto from 'crypto';
-import config from '@/config';
+import config from '@/config/index';
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 6148ad33c5..b8e216edc4 100644
--- a/src/server/api/authenticate.ts
+++ b/src/server/api/authenticate.ts
@@ -1,7 +1,7 @@
import isNativeToken from './common/is-native-token';
-import { User } from '../../models/entities/user';
-import { Users, AccessTokens, Apps } from '../../models';
-import { AccessToken } from '../../models/entities/access-token';
+import { User } from '@/models/entities/user';
+import { Users, AccessTokens, Apps } from '@/models/index';
+import { AccessToken } from '@/models/entities/access-token';
export class AuthenticationError extends Error {
constructor(message: string) {
diff --git a/src/server/api/call.ts b/src/server/api/call.ts
index d50b6a1222..2768bde07e 100644
--- a/src/server/api/call.ts
+++ b/src/server/api/call.ts
@@ -1,10 +1,10 @@
import { performance } from 'perf_hooks';
import limiter from './limiter';
-import { User } from '../../models/entities/user';
+import { User } from '@/models/entities/user';
import endpoints from './endpoints';
import { ApiError } from './error';
import { apiLogger } from './logger';
-import { AccessToken } from '../../models/entities/access-token';
+import { AccessToken } from '@/models/entities/access-token';
const accessDenied = {
message: 'Access denied.',
diff --git a/src/server/api/common/generate-block-query.ts b/src/server/api/common/generate-block-query.ts
index fa2179ae64..4fd6184738 100644
--- a/src/server/api/common/generate-block-query.ts
+++ b/src/server/api/common/generate-block-query.ts
@@ -1,6 +1,29 @@
-import { User } from '../../../models/entities/user';
-import { Blockings } from '../../../models';
-import { SelectQueryBuilder } from 'typeorm';
+import { User } from '@/models/entities/user';
+import { Blockings } from '@/models/index';
+import { Brackets, SelectQueryBuilder } from 'typeorm';
+
+// ここでいうBlockedは被Blockedの意
+export function generateBlockedUserQuery(q: SelectQueryBuilder, me: { id: User['id'] }) {
+ const blockingQuery = Blockings.createQueryBuilder('blocking')
+ .select('blocking.blockerId')
+ .where('blocking.blockeeId = :blockeeId', { blockeeId: me.id });
+
+ // 投稿の作者にブロックされていない かつ
+ // 投稿の返信先の作者にブロックされていない かつ
+ // 投稿の引用元の作者にブロックされていない
+ q
+ .andWhere(`note.userId NOT IN (${ blockingQuery.getQuery() })`)
+ .andWhere(new Brackets(qb => { qb
+ .where(`note.replyUserId IS NULL`)
+ .orWhere(`note.replyUserId NOT IN (${ blockingQuery.getQuery() })`);
+ }))
+ .andWhere(new Brackets(qb => { qb
+ .where(`note.renoteUserId IS NULL`)
+ .orWhere(`note.renoteUserId NOT IN (${ blockingQuery.getQuery() })`);
+ }));
+
+ q.setParameters(blockingQuery.getParameters());
+}
export function generateBlockQueryForUsers(q: SelectQueryBuilder, me: { id: User['id'] }) {
const blockingQuery = Blockings.createQueryBuilder('blocking')
diff --git a/src/server/api/common/generate-channel-query.ts b/src/server/api/common/generate-channel-query.ts
index 74a6d68c40..80a0acf7f9 100644
--- a/src/server/api/common/generate-channel-query.ts
+++ b/src/server/api/common/generate-channel-query.ts
@@ -1,5 +1,5 @@
-import { User } from '../../../models/entities/user';
-import { ChannelFollowings } from '../../../models';
+import { User } from '@/models/entities/user';
+import { ChannelFollowings } from '@/models/index';
import { Brackets, SelectQueryBuilder } from 'typeorm';
export function generateChannelQuery(q: SelectQueryBuilder, me?: { id: User['id'] } | null) {
diff --git a/src/server/api/common/generate-muted-note-query.ts b/src/server/api/common/generate-muted-note-query.ts
index c7f9f7c5a3..0737842613 100644
--- a/src/server/api/common/generate-muted-note-query.ts
+++ b/src/server/api/common/generate-muted-note-query.ts
@@ -1,5 +1,5 @@
-import { User } from '../../../models/entities/user';
-import { MutedNotes } from '../../../models';
+import { User } from '@/models/entities/user';
+import { MutedNotes } from '@/models/index';
import { SelectQueryBuilder } from 'typeorm';
export function generateMutedNoteQuery(q: SelectQueryBuilder, me: { id: User['id'] }) {
diff --git a/src/server/api/common/generate-muted-user-query.ts b/src/server/api/common/generate-muted-user-query.ts
index f5e072ba93..7e200b87ef 100644
--- a/src/server/api/common/generate-muted-user-query.ts
+++ b/src/server/api/common/generate-muted-user-query.ts
@@ -1,5 +1,5 @@
-import { User } from '../../../models/entities/user';
-import { Mutings } from '../../../models';
+import { User } from '@/models/entities/user';
+import { Mutings } from '@/models/index';
import { SelectQueryBuilder, Brackets } from 'typeorm';
export function generateMutedUserQuery(q: SelectQueryBuilder, me: { id: User['id'] }, exclude?: User) {
diff --git a/src/server/api/common/generate-replies-query.ts b/src/server/api/common/generate-replies-query.ts
index 29b1e17c2e..fbc41b2c25 100644
--- a/src/server/api/common/generate-replies-query.ts
+++ b/src/server/api/common/generate-replies-query.ts
@@ -1,4 +1,4 @@
-import { User } from '../../../models/entities/user';
+import { User } from '@/models/entities/user';
import { Brackets, SelectQueryBuilder } from 'typeorm';
export function generateRepliesQuery(q: SelectQueryBuilder, me?: { id: User['id'] } | null) {
diff --git a/src/server/api/common/generate-visibility-query.ts b/src/server/api/common/generate-visibility-query.ts
index 00a50f8211..813e8b6c09 100644
--- a/src/server/api/common/generate-visibility-query.ts
+++ b/src/server/api/common/generate-visibility-query.ts
@@ -1,5 +1,5 @@
-import { User } from '../../../models/entities/user';
-import { Followings } from '../../../models';
+import { User } from '@/models/entities/user';
+import { Followings } from '@/models/index';
import { Brackets, SelectQueryBuilder } from 'typeorm';
export function generateVisibilityQuery(q: SelectQueryBuilder, me?: { id: User['id'] } | null) {
diff --git a/src/server/api/common/getters.ts b/src/server/api/common/getters.ts
index 73fbadfee6..4b2ee8f1da 100644
--- a/src/server/api/common/getters.ts
+++ b/src/server/api/common/getters.ts
@@ -1,7 +1,7 @@
import { IdentifiableError } from '@/misc/identifiable-error';
-import { User } from '../../../models/entities/user';
-import { Note } from '../../../models/entities/note';
-import { Notes, Users } from '../../../models';
+import { User } from '@/models/entities/user';
+import { Note } from '@/models/entities/note';
+import { Notes, Users } from '@/models/index';
/**
* Get note for API processing
diff --git a/src/server/api/common/inject-featured.ts b/src/server/api/common/inject-featured.ts
index bbed7f69cb..1dc13c83ef 100644
--- a/src/server/api/common/inject-featured.ts
+++ b/src/server/api/common/inject-featured.ts
@@ -1,8 +1,9 @@
import rndstr from 'rndstr';
-import { Note } from '../../../models/entities/note';
-import { User } from '../../../models/entities/user';
-import { Notes, UserProfiles, NoteReactions } from '../../../models';
+import { Note } from '@/models/entities/note';
+import { User } from '@/models/entities/user';
+import { Notes, UserProfiles, NoteReactions } from '@/models/index';
import { generateMutedUserQuery } from './generate-muted-user-query';
+import { generateBlockedUserQuery } from './generate-block-query';
// TODO: リアクション、Renote、返信などをしたノートは除外する
@@ -29,6 +30,7 @@ export async function injectFeatured(timeline: Note[], user?: User | null) {
query.andWhere('note.userId != :userId', { userId: user.id });
generateMutedUserQuery(query, user);
+ generateBlockedUserQuery(query, user);
const reactionQuery = NoteReactions.createQueryBuilder('reaction')
.select('reaction.noteId')
diff --git a/src/server/api/common/inject-promo.ts b/src/server/api/common/inject-promo.ts
index 2c16ca4cf7..87767a65bf 100644
--- a/src/server/api/common/inject-promo.ts
+++ b/src/server/api/common/inject-promo.ts
@@ -1,7 +1,7 @@
import rndstr from 'rndstr';
-import { Note } from '../../../models/entities/note';
-import { User } from '../../../models/entities/user';
-import { PromoReads, PromoNotes, Notes, Users } from '../../../models';
+import { Note } from '@/models/entities/note';
+import { User } from '@/models/entities/user';
+import { PromoReads, PromoNotes, Notes, Users } from '@/models/index';
export async function injectPromo(timeline: Note[], user?: User | null) {
if (timeline.length < 5) return;
diff --git a/src/server/api/common/read-messaging-message.ts b/src/server/api/common/read-messaging-message.ts
index 858c116276..a80a22ea99 100644
--- a/src/server/api/common/read-messaging-message.ts
+++ b/src/server/api/common/read-messaging-message.ts
@@ -1,18 +1,18 @@
-import { publishMainStream, publishGroupMessagingStream } from '../../../services/stream';
-import { publishMessagingStream } from '../../../services/stream';
-import { publishMessagingIndexStream } from '../../../services/stream';
-import { pushNotification } from '../../../services/push-notification';
-import { User, IRemoteUser } from '../../../models/entities/user';
-import { MessagingMessage } from '../../../models/entities/messaging-message';
-import { MessagingMessages, UserGroupJoinings, Users } from '../../../models';
+import { publishMainStream, publishGroupMessagingStream } from '@/services/stream';
+import { publishMessagingStream } from '@/services/stream';
+import { publishMessagingIndexStream } from '@/services/stream';
+import { pushNotification } from '@/services/push-notification';
+import { User, IRemoteUser } from '@/models/entities/user';
+import { MessagingMessage } from '@/models/entities/messaging-message';
+import { MessagingMessages, UserGroupJoinings, Users } from '@/models/index';
import { In } from 'typeorm';
import { IdentifiableError } from '@/misc/identifiable-error';
-import { UserGroup } from '../../../models/entities/user-group';
-import { toArray } from '../../../prelude/array';
-import { renderReadActivity } from '../../../remote/activitypub/renderer/read';
-import { renderActivity } from '../../../remote/activitypub/renderer';
-import { deliver } from '../../../queue';
-import orderedCollection from '../../../remote/activitypub/renderer/ordered-collection';
+import { UserGroup } from '@/models/entities/user-group';
+import { toArray } from '@/prelude/array';
+import { renderReadActivity } from '@/remote/activitypub/renderer/read';
+import { renderActivity } from '@/remote/activitypub/renderer/index';
+import { deliver } from '@/queue/index';
+import orderedCollection from '@/remote/activitypub/renderer/ordered-collection';
/**
* Mark messages as read
diff --git a/src/server/api/common/read-notification.ts b/src/server/api/common/read-notification.ts
index ffb23666a5..f4fb4d5744 100644
--- a/src/server/api/common/read-notification.ts
+++ b/src/server/api/common/read-notification.ts
@@ -1,8 +1,8 @@
-import { publishMainStream } from '../../../services/stream';
-import { pushNotification } from '../../../services/push-notification';
-import { User } from '../../../models/entities/user';
-import { Notification } from '../../../models/entities/notification';
-import { Notifications, Users } from '../../../models';
+import { publishMainStream } from '@/services/stream';
+import { pushNotification } from '@/services/push-notification';
+import { User } from '@/models/entities/user';
+import { Notification } from '@/models/entities/notification';
+import { Notifications, Users } from '@/models/index';
import { In } from 'typeorm';
export async function readNotification(
diff --git a/src/server/api/common/signin.ts b/src/server/api/common/signin.ts
index af09a70340..4c7aacf1cd 100644
--- a/src/server/api/common/signin.ts
+++ b/src/server/api/common/signin.ts
@@ -1,10 +1,10 @@
import * as Koa from 'koa';
-import config from '@/config';
-import { ILocalUser } from '../../../models/entities/user';
-import { Signins } from '../../../models';
+import config from '@/config/index';
+import { ILocalUser } from '@/models/entities/user';
+import { Signins } from '@/models/index';
import { genId } from '@/misc/gen-id';
-import { publishMainStream } from '../../../services/stream';
+import { publishMainStream } from '@/services/stream';
export default function(ctx: Koa.Context, user: ILocalUser, redirect = false) {
if (redirect) {
diff --git a/src/server/api/common/signup.ts b/src/server/api/common/signup.ts
index b8d197317a..eb3aa09c8c 100644
--- a/src/server/api/common/signup.ts
+++ b/src/server/api/common/signup.ts
@@ -1,15 +1,15 @@
import * as bcrypt from 'bcryptjs';
import { generateKeyPair } from 'crypto';
import generateUserToken from './generate-native-user-token';
-import { User } from '../../../models/entities/user';
-import { Users, UsedUsernames } from '../../../models';
-import { UserProfile } from '../../../models/entities/user-profile';
+import { User } from '@/models/entities/user';
+import { Users, UsedUsernames } from '@/models/index';
+import { UserProfile } from '@/models/entities/user-profile';
import { getConnection } from 'typeorm';
import { genId } from '@/misc/gen-id';
import { toPunyNullable } from '@/misc/convert-host';
-import { UserKeypair } from '../../../models/entities/user-keypair';
-import { usersChart } from '../../../services/chart';
-import { UsedUsername } from '../../../models/entities/used-username';
+import { UserKeypair } from '@/models/entities/user-keypair';
+import { usersChart } from '@/services/chart/index';
+import { UsedUsername } from '@/models/entities/used-username';
export async function signup(username: User['username'], password: UserProfile['password'], host: string | null = null) {
// Validate username
diff --git a/src/server/api/define.ts b/src/server/api/define.ts
index cba69cfdc4..4bd8f95e31 100644
--- a/src/server/api/define.ts
+++ b/src/server/api/define.ts
@@ -1,9 +1,9 @@
import * as fs from 'fs';
-import { ILocalUser } from '../../models/entities/user';
+import { ILocalUser } from '@/models/entities/user';
import { IEndpointMeta } from './endpoints';
import { ApiError } from './error';
import { SchemaType } from '@/misc/schema';
-import { AccessToken } from '../../models/entities/access-token';
+import { AccessToken } from '@/models/entities/access-token';
type NonOptional = T extends undefined ? never : T;
diff --git a/src/server/api/endpoints.ts b/src/server/api/endpoints.ts
index 24b58b873c..640b14ed6a 100644
--- a/src/server/api/endpoints.ts
+++ b/src/server/api/endpoints.ts
@@ -1,8 +1,14 @@
+import { fileURLToPath } from 'url';
+import { dirname } from 'path';
import { Context } from 'cafy';
import * as path from 'path';
import * as glob from 'glob';
import { Schema } from '@/misc/schema';
+//const _filename = fileURLToPath(import.meta.url);
+const _filename = __filename;
+const _dirname = dirname(_filename);
+
export type Param = {
validator: Context;
transform?: any;
@@ -102,7 +108,7 @@ export interface IEndpoint {
}
const files = glob.sync('**/*.js', {
- cwd: path.resolve(__dirname + '/endpoints/')
+ cwd: path.resolve(_dirname + '/endpoints/')
});
const endpoints: IEndpoint[] = files.map(f => {
diff --git a/src/server/api/endpoints/admin/abuse-user-reports.ts b/src/server/api/endpoints/admin/abuse-user-reports.ts
index 02291a3edd..403eb24191 100644
--- a/src/server/api/endpoints/admin/abuse-user-reports.ts
+++ b/src/server/api/endpoints/admin/abuse-user-reports.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { AbuseUserReports } from '../../../../models';
+import { AbuseUserReports } from '@/models/index';
import { makePaginationQuery } from '../../common/make-pagination-query';
export const meta = {
diff --git a/src/server/api/endpoints/admin/accounts/create.ts b/src/server/api/endpoints/admin/accounts/create.ts
index bceb210a82..9691b9c7e3 100644
--- a/src/server/api/endpoints/admin/accounts/create.ts
+++ b/src/server/api/endpoints/admin/accounts/create.ts
@@ -1,5 +1,5 @@
import define from '../../../define';
-import { Users } from '../../../../../models';
+import { Users } from '@/models/index';
import { signup } from '../../../common/signup';
export const meta = {
diff --git a/src/server/api/endpoints/admin/ad/create.ts b/src/server/api/endpoints/admin/ad/create.ts
index 337114a3fa..27c7b5d318 100644
--- a/src/server/api/endpoints/admin/ad/create.ts
+++ b/src/server/api/endpoints/admin/ad/create.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../../define';
-import { Ads } from '../../../../../models';
+import { Ads } from '@/models/index';
import { genId } from '@/misc/gen-id';
export const meta = {
diff --git a/src/server/api/endpoints/admin/ad/delete.ts b/src/server/api/endpoints/admin/ad/delete.ts
index 6a5f92193e..91934e1aab 100644
--- a/src/server/api/endpoints/admin/ad/delete.ts
+++ b/src/server/api/endpoints/admin/ad/delete.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../../define';
import { ID } from '@/misc/cafy-id';
-import { Ads } from '../../../../../models';
+import { Ads } from '@/models/index';
import { ApiError } from '../../../error';
export const meta = {
diff --git a/src/server/api/endpoints/admin/ad/list.ts b/src/server/api/endpoints/admin/ad/list.ts
index a323f2a9ed..000aaaba9d 100644
--- a/src/server/api/endpoints/admin/ad/list.ts
+++ b/src/server/api/endpoints/admin/ad/list.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
-import { Ads } from '../../../../../models';
+import { Ads } from '@/models/index';
import { makePaginationQuery } from '../../../common/make-pagination-query';
export const meta = {
diff --git a/src/server/api/endpoints/admin/ad/update.ts b/src/server/api/endpoints/admin/ad/update.ts
index 71e6054a88..36c87895c2 100644
--- a/src/server/api/endpoints/admin/ad/update.ts
+++ b/src/server/api/endpoints/admin/ad/update.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../../define';
import { ID } from '@/misc/cafy-id';
-import { Ads } from '../../../../../models';
+import { Ads } from '@/models/index';
import { ApiError } from '../../../error';
export const meta = {
diff --git a/src/server/api/endpoints/admin/announcements/create.ts b/src/server/api/endpoints/admin/announcements/create.ts
index 794c35023b..f1c07745f9 100644
--- a/src/server/api/endpoints/admin/announcements/create.ts
+++ b/src/server/api/endpoints/admin/announcements/create.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../../define';
-import { Announcements } from '../../../../../models';
+import { Announcements } from '@/models/index';
import { genId } from '@/misc/gen-id';
export const meta = {
diff --git a/src/server/api/endpoints/admin/announcements/delete.ts b/src/server/api/endpoints/admin/announcements/delete.ts
index 6c28054da8..7dbc05b4c9 100644
--- a/src/server/api/endpoints/admin/announcements/delete.ts
+++ b/src/server/api/endpoints/admin/announcements/delete.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../../define';
import { ID } from '@/misc/cafy-id';
-import { Announcements } from '../../../../../models';
+import { Announcements } from '@/models/index';
import { ApiError } from '../../../error';
export const meta = {
diff --git a/src/server/api/endpoints/admin/announcements/list.ts b/src/server/api/endpoints/admin/announcements/list.ts
index a14f0c0bdc..4039bcd88f 100644
--- a/src/server/api/endpoints/admin/announcements/list.ts
+++ b/src/server/api/endpoints/admin/announcements/list.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
-import { Announcements, AnnouncementReads } from '../../../../../models';
+import { Announcements, AnnouncementReads } from '@/models/index';
import { makePaginationQuery } from '../../../common/make-pagination-query';
export const meta = {
diff --git a/src/server/api/endpoints/admin/announcements/update.ts b/src/server/api/endpoints/admin/announcements/update.ts
index 6e9a43d346..343f37d626 100644
--- a/src/server/api/endpoints/admin/announcements/update.ts
+++ b/src/server/api/endpoints/admin/announcements/update.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../../define';
import { ID } from '@/misc/cafy-id';
-import { Announcements } from '../../../../../models';
+import { Announcements } from '@/models/index';
import { ApiError } from '../../../error';
export const meta = {
diff --git a/src/server/api/endpoints/admin/delete-all-files-of-a-user.ts b/src/server/api/endpoints/admin/delete-all-files-of-a-user.ts
index 3d49689cd7..988ab29558 100644
--- a/src/server/api/endpoints/admin/delete-all-files-of-a-user.ts
+++ b/src/server/api/endpoints/admin/delete-all-files-of-a-user.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../define';
-import { deleteFile } from '../../../../services/drive/delete-file';
-import { DriveFiles } from '../../../../models';
+import { deleteFile } from '@/services/drive/delete-file';
+import { DriveFiles } from '@/models/index';
import { ID } from '@/misc/cafy-id';
export const meta = {
diff --git a/src/server/api/endpoints/admin/delete-logs.ts b/src/server/api/endpoints/admin/delete-logs.ts
index 410588bc01..9d37ceb434 100644
--- a/src/server/api/endpoints/admin/delete-logs.ts
+++ b/src/server/api/endpoints/admin/delete-logs.ts
@@ -1,5 +1,5 @@
import define from '../../define';
-import { Logs } from '../../../../models';
+import { Logs } from '@/models/index';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/drive/clean-remote-files.ts b/src/server/api/endpoints/admin/drive/clean-remote-files.ts
index 5a5adb8a8b..76a6acff59 100644
--- a/src/server/api/endpoints/admin/drive/clean-remote-files.ts
+++ b/src/server/api/endpoints/admin/drive/clean-remote-files.ts
@@ -1,5 +1,5 @@
import define from '../../../define';
-import { createCleanRemoteFilesJob } from '../../../../../queue';
+import { createCleanRemoteFilesJob } from '@/queue/index';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/drive/cleanup.ts b/src/server/api/endpoints/admin/drive/cleanup.ts
index b76236a7f0..8497478da9 100644
--- a/src/server/api/endpoints/admin/drive/cleanup.ts
+++ b/src/server/api/endpoints/admin/drive/cleanup.ts
@@ -1,7 +1,7 @@
import { IsNull } from 'typeorm';
import define from '../../../define';
-import { deleteFile } from '../../../../../services/drive/delete-file';
-import { DriveFiles } from '../../../../../models';
+import { deleteFile } from '@/services/drive/delete-file';
+import { DriveFiles } from '@/models/index';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/drive/files.ts b/src/server/api/endpoints/admin/drive/files.ts
index efeef83ca3..c0788c8e02 100644
--- a/src/server/api/endpoints/admin/drive/files.ts
+++ b/src/server/api/endpoints/admin/drive/files.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../../define';
-import { DriveFiles } from '../../../../../models';
+import { DriveFiles } from '@/models/index';
import { makePaginationQuery } from '../../../common/make-pagination-query';
import { ID } from '@/misc/cafy-id';
diff --git a/src/server/api/endpoints/admin/drive/show-file.ts b/src/server/api/endpoints/admin/drive/show-file.ts
index 3489e5c816..270b89c4fa 100644
--- a/src/server/api/endpoints/admin/drive/show-file.ts
+++ b/src/server/api/endpoints/admin/drive/show-file.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
-import { DriveFiles } from '../../../../../models';
+import { DriveFiles } from '@/models/index';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/emoji/add.ts b/src/server/api/endpoints/admin/emoji/add.ts
index 0d4550bf3c..1af81fe46d 100644
--- a/src/server/api/endpoints/admin/emoji/add.ts
+++ b/src/server/api/endpoints/admin/emoji/add.ts
@@ -1,13 +1,13 @@
import $ from 'cafy';
import define from '../../../define';
-import { Emojis, DriveFiles } from '../../../../../models';
+import { Emojis, DriveFiles } from '@/models/index';
import { genId } from '@/misc/gen-id';
import { getConnection } from 'typeorm';
-import { insertModerationLog } from '../../../../../services/insert-moderation-log';
+import { insertModerationLog } from '@/services/insert-moderation-log';
import { ApiError } from '../../../error';
import { ID } from '@/misc/cafy-id';
import rndstr from 'rndstr';
-import { publishBroadcastStream } from '../../../../../services/stream';
+import { publishBroadcastStream } from '@/services/stream';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/emoji/copy.ts b/src/server/api/endpoints/admin/emoji/copy.ts
index 72c2b014a4..4c8ab99f7c 100644
--- a/src/server/api/endpoints/admin/emoji/copy.ts
+++ b/src/server/api/endpoints/admin/emoji/copy.ts
@@ -1,12 +1,12 @@
import $ from 'cafy';
import define from '../../../define';
-import { Emojis } from '../../../../../models';
+import { Emojis } from '@/models/index';
import { genId } from '@/misc/gen-id';
import { getConnection } from 'typeorm';
import { ApiError } from '../../../error';
-import { DriveFile } from '../../../../../models/entities/drive-file';
+import { DriveFile } from '@/models/entities/drive-file';
import { ID } from '@/misc/cafy-id';
-import uploadFromUrl from '../../../../../services/drive/upload-from-url';
+import uploadFromUrl from '@/services/drive/upload-from-url';
import { publishBroadcastStream } from '@/services/stream';
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 570db064ec..3c8ca22170 100644
--- a/src/server/api/endpoints/admin/emoji/list-remote.ts
+++ b/src/server/api/endpoints/admin/emoji/list-remote.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../../define';
-import { Emojis } from '../../../../../models';
+import { Emojis } from '@/models/index';
import { toPuny } from '@/misc/convert-host';
import { makePaginationQuery } from '../../../common/make-pagination-query';
import { ID } from '@/misc/cafy-id';
diff --git a/src/server/api/endpoints/admin/emoji/list.ts b/src/server/api/endpoints/admin/emoji/list.ts
index b864fed4b0..cb1e79e0fe 100644
--- a/src/server/api/endpoints/admin/emoji/list.ts
+++ b/src/server/api/endpoints/admin/emoji/list.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
import define from '../../../define';
-import { Emojis } from '../../../../../models';
+import { Emojis } from '@/models/index';
import { makePaginationQuery } from '../../../common/make-pagination-query';
import { ID } from '@/misc/cafy-id';
-import { Emoji } from '../../../../../models/entities/emoji';
+import { Emoji } from '@/models/entities/emoji';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/emoji/remove.ts b/src/server/api/endpoints/admin/emoji/remove.ts
index 22bbc76e78..259950e362 100644
--- a/src/server/api/endpoints/admin/emoji/remove.ts
+++ b/src/server/api/endpoints/admin/emoji/remove.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
import define from '../../../define';
import { ID } from '@/misc/cafy-id';
-import { Emojis } from '../../../../../models';
+import { Emojis } from '@/models/index';
import { getConnection } from 'typeorm';
-import { insertModerationLog } from '../../../../../services/insert-moderation-log';
+import { insertModerationLog } from '@/services/insert-moderation-log';
import { ApiError } from '../../../error';
export const meta = {
diff --git a/src/server/api/endpoints/admin/emoji/update.ts b/src/server/api/endpoints/admin/emoji/update.ts
index 70589d5cf7..3fd547d7e5 100644
--- a/src/server/api/endpoints/admin/emoji/update.ts
+++ b/src/server/api/endpoints/admin/emoji/update.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../../define';
import { ID } from '@/misc/cafy-id';
-import { Emojis } from '../../../../../models';
+import { Emojis } from '@/models/index';
import { getConnection } from 'typeorm';
import { ApiError } from '../../../error';
diff --git a/src/server/api/endpoints/admin/federation/delete-all-files.ts b/src/server/api/endpoints/admin/federation/delete-all-files.ts
index eef53cd92c..82540c5447 100644
--- a/src/server/api/endpoints/admin/federation/delete-all-files.ts
+++ b/src/server/api/endpoints/admin/federation/delete-all-files.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../../define';
-import { deleteFile } from '../../../../../services/drive/delete-file';
-import { DriveFiles } from '../../../../../models';
+import { deleteFile } from '@/services/drive/delete-file';
+import { DriveFiles } from '@/models/index';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/federation/refresh-remote-instance-metadata.ts b/src/server/api/endpoints/admin/federation/refresh-remote-instance-metadata.ts
index 65b3b6e260..65a6947ba0 100644
--- a/src/server/api/endpoints/admin/federation/refresh-remote-instance-metadata.ts
+++ b/src/server/api/endpoints/admin/federation/refresh-remote-instance-metadata.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
import define from '../../../define';
-import { Instances } from '../../../../../models';
+import { Instances } from '@/models/index';
import { toPuny } from '@/misc/convert-host';
-import { fetchInstanceMetadata } from '../../../../../services/fetch-instance-metadata';
+import { fetchInstanceMetadata } from '@/services/fetch-instance-metadata';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/federation/remove-all-following.ts b/src/server/api/endpoints/admin/federation/remove-all-following.ts
index e593193552..7935eaa631 100644
--- a/src/server/api/endpoints/admin/federation/remove-all-following.ts
+++ b/src/server/api/endpoints/admin/federation/remove-all-following.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../../define';
-import deleteFollowing from '../../../../../services/following/delete';
-import { Followings, Users } from '../../../../../models';
+import deleteFollowing from '@/services/following/delete';
+import { Followings, Users } from '@/models/index';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/federation/update-instance.ts b/src/server/api/endpoints/admin/federation/update-instance.ts
index 2d559e43e8..34eab27c78 100644
--- a/src/server/api/endpoints/admin/federation/update-instance.ts
+++ b/src/server/api/endpoints/admin/federation/update-instance.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../../define';
-import { Instances } from '../../../../../models';
+import { Instances } from '@/models/index';
import { toPuny } from '@/misc/convert-host';
export const meta = {
diff --git a/src/server/api/endpoints/admin/invite.ts b/src/server/api/endpoints/admin/invite.ts
index 141f27d95e..2c69eec535 100644
--- a/src/server/api/endpoints/admin/invite.ts
+++ b/src/server/api/endpoints/admin/invite.ts
@@ -1,6 +1,6 @@
import rndstr from 'rndstr';
import define from '../../define';
-import { RegistrationTickets } from '../../../../models';
+import { RegistrationTickets } from '@/models/index';
import { genId } from '@/misc/gen-id';
export const meta = {
diff --git a/src/server/api/endpoints/admin/logs.ts b/src/server/api/endpoints/admin/logs.ts
index 1ec7320399..776403a62e 100644
--- a/src/server/api/endpoints/admin/logs.ts
+++ b/src/server/api/endpoints/admin/logs.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../define';
-import { Logs } from '../../../../models';
+import { Logs } from '@/models/index';
import { Brackets } from 'typeorm';
export const meta = {
diff --git a/src/server/api/endpoints/admin/moderators/add.ts b/src/server/api/endpoints/admin/moderators/add.ts
index 2b4e8a8014..2b87fc217f 100644
--- a/src/server/api/endpoints/admin/moderators/add.ts
+++ b/src/server/api/endpoints/admin/moderators/add.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
-import { Users } from '../../../../../models';
+import { Users } from '@/models/index';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/moderators/remove.ts b/src/server/api/endpoints/admin/moderators/remove.ts
index fd6e29df54..cbb0625224 100644
--- a/src/server/api/endpoints/admin/moderators/remove.ts
+++ b/src/server/api/endpoints/admin/moderators/remove.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
-import { Users } from '../../../../../models';
+import { Users } from '@/models/index';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/promo/create.ts b/src/server/api/endpoints/admin/promo/create.ts
index 8468ab6545..3bdaaad4d9 100644
--- a/src/server/api/endpoints/admin/promo/create.ts
+++ b/src/server/api/endpoints/admin/promo/create.ts
@@ -3,7 +3,7 @@ import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
import { getNote } from '../../../common/getters';
-import { PromoNotes } from '../../../../../models';
+import { PromoNotes } from '@/models/index';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/queue/clear.ts b/src/server/api/endpoints/admin/queue/clear.ts
index 0375f55f01..fedb7065ab 100644
--- a/src/server/api/endpoints/admin/queue/clear.ts
+++ b/src/server/api/endpoints/admin/queue/clear.ts
@@ -1,6 +1,6 @@
import define from '../../../define';
-import { destroy } from '../../../../../queue';
-import { insertModerationLog } from '../../../../../services/insert-moderation-log';
+import { destroy } from '@/queue/index';
+import { insertModerationLog } from '@/services/insert-moderation-log';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/queue/inbox-delayed.ts b/src/server/api/endpoints/admin/queue/inbox-delayed.ts
index 119976c680..59e5c834ed 100644
--- a/src/server/api/endpoints/admin/queue/inbox-delayed.ts
+++ b/src/server/api/endpoints/admin/queue/inbox-delayed.ts
@@ -1,6 +1,6 @@
import { URL } from 'url';
import define from '../../../define';
-import { inboxQueue } from '../../../../../queue';
+import { inboxQueue } from '@/queue/index';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/relays/add.ts b/src/server/api/endpoints/admin/relays/add.ts
index 54d292ad55..567035fd3a 100644
--- a/src/server/api/endpoints/admin/relays/add.ts
+++ b/src/server/api/endpoints/admin/relays/add.ts
@@ -1,7 +1,7 @@
import { URL } from 'url';
import $ from 'cafy';
import define from '../../../define';
-import { addRelay } from '../../../../../services/relay';
+import { addRelay } from '@/services/relay';
import { ApiError } from '../../../error';
export const meta = {
diff --git a/src/server/api/endpoints/admin/relays/list.ts b/src/server/api/endpoints/admin/relays/list.ts
index 9f2474f10c..031ebe85d0 100644
--- a/src/server/api/endpoints/admin/relays/list.ts
+++ b/src/server/api/endpoints/admin/relays/list.ts
@@ -1,5 +1,5 @@
import define from '../../../define';
-import { listRelay } from '../../../../../services/relay';
+import { listRelay } from '@/services/relay';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/relays/remove.ts b/src/server/api/endpoints/admin/relays/remove.ts
index 220efab406..c1c50f5dc0 100644
--- a/src/server/api/endpoints/admin/relays/remove.ts
+++ b/src/server/api/endpoints/admin/relays/remove.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../../define';
-import { removeRelay } from '../../../../../services/relay';
+import { removeRelay } from '@/services/relay';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/reset-password.ts b/src/server/api/endpoints/admin/reset-password.ts
index 6ff49d83d5..0fc2c6a868 100644
--- a/src/server/api/endpoints/admin/reset-password.ts
+++ b/src/server/api/endpoints/admin/reset-password.ts
@@ -3,7 +3,7 @@ import { ID } from '@/misc/cafy-id';
import define from '../../define';
import * as bcrypt from 'bcryptjs';
import rndstr from 'rndstr';
-import { Users, UserProfiles } from '../../../../models';
+import { Users, UserProfiles } from '@/models/index';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/resolve-abuse-user-report.ts b/src/server/api/endpoints/admin/resolve-abuse-user-report.ts
index 38a5e81375..7b71f8e000 100644
--- a/src/server/api/endpoints/admin/resolve-abuse-user-report.ts
+++ b/src/server/api/endpoints/admin/resolve-abuse-user-report.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { AbuseUserReports } from '../../../../models';
+import { AbuseUserReports } from '@/models/index';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/resync-chart.ts b/src/server/api/endpoints/admin/resync-chart.ts
index 84e19d37e6..b0e687333f 100644
--- a/src/server/api/endpoints/admin/resync-chart.ts
+++ b/src/server/api/endpoints/admin/resync-chart.ts
@@ -1,6 +1,6 @@
import define from '../../define';
-import { driveChart, notesChart, usersChart, instanceChart } from '../../../../services/chart';
-import { insertModerationLog } from '../../../../services/insert-moderation-log';
+import { driveChart, notesChart, usersChart, instanceChart } from '@/services/chart/index';
+import { insertModerationLog } from '@/services/insert-moderation-log';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/send-email.ts b/src/server/api/endpoints/admin/send-email.ts
index c0e77e1621..6f67b78542 100644
--- a/src/server/api/endpoints/admin/send-email.ts
+++ b/src/server/api/endpoints/admin/send-email.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../define';
-import { sendEmail } from '../../../../services/send-email';
+import { sendEmail } from '@/services/send-email';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/show-moderation-logs.ts b/src/server/api/endpoints/admin/show-moderation-logs.ts
index cfceab9463..e9509568d0 100644
--- a/src/server/api/endpoints/admin/show-moderation-logs.ts
+++ b/src/server/api/endpoints/admin/show-moderation-logs.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { ModerationLogs } from '../../../../models';
+import { ModerationLogs } from '@/models/index';
import { makePaginationQuery } from '../../common/make-pagination-query';
export const meta = {
diff --git a/src/server/api/endpoints/admin/show-user.ts b/src/server/api/endpoints/admin/show-user.ts
index b1132ac207..963c123255 100644
--- a/src/server/api/endpoints/admin/show-user.ts
+++ b/src/server/api/endpoints/admin/show-user.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { Users } from '../../../../models';
+import { Users } from '@/models/index';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/show-users.ts b/src/server/api/endpoints/admin/show-users.ts
index 7ea0e0e864..20b63e7be6 100644
--- a/src/server/api/endpoints/admin/show-users.ts
+++ b/src/server/api/endpoints/admin/show-users.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../define';
-import { Users } from '../../../../models';
+import { Users } from '@/models/index';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/silence-user.ts b/src/server/api/endpoints/admin/silence-user.ts
index 73f9d03b70..9bfed2310a 100644
--- a/src/server/api/endpoints/admin/silence-user.ts
+++ b/src/server/api/endpoints/admin/silence-user.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { Users } from '../../../../models';
-import { insertModerationLog } from '../../../../services/insert-moderation-log';
+import { Users } from '@/models/index';
+import { insertModerationLog } from '@/services/insert-moderation-log';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/suspend-user.ts b/src/server/api/endpoints/admin/suspend-user.ts
index 912d6a5162..364f258ce8 100644
--- a/src/server/api/endpoints/admin/suspend-user.ts
+++ b/src/server/api/endpoints/admin/suspend-user.ts
@@ -1,11 +1,11 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import deleteFollowing from '../../../../services/following/delete';
-import { Users, Followings, Notifications } from '../../../../models';
-import { User } from '../../../../models/entities/user';
-import { insertModerationLog } from '../../../../services/insert-moderation-log';
-import { doPostSuspend } from '../../../../services/suspend-user';
+import deleteFollowing from '@/services/following/delete';
+import { Users, Followings, Notifications } from '@/models/index';
+import { User } from '@/models/entities/user';
+import { insertModerationLog } from '@/services/insert-moderation-log';
+import { doPostSuspend } from '@/services/suspend-user';
import { publishUserEvent } from '@/services/stream';
export const meta = {
diff --git a/src/server/api/endpoints/admin/unsilence-user.ts b/src/server/api/endpoints/admin/unsilence-user.ts
index 6083d87afc..9994fbf462 100644
--- a/src/server/api/endpoints/admin/unsilence-user.ts
+++ b/src/server/api/endpoints/admin/unsilence-user.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { Users } from '../../../../models';
-import { insertModerationLog } from '../../../../services/insert-moderation-log';
+import { Users } from '@/models/index';
+import { insertModerationLog } from '@/services/insert-moderation-log';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/unsuspend-user.ts b/src/server/api/endpoints/admin/unsuspend-user.ts
index 6d015b51ab..ab4c2d3dfe 100644
--- a/src/server/api/endpoints/admin/unsuspend-user.ts
+++ b/src/server/api/endpoints/admin/unsuspend-user.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { Users } from '../../../../models';
-import { insertModerationLog } from '../../../../services/insert-moderation-log';
-import { doPostUnsuspend } from '../../../../services/unsuspend-user';
+import { Users } from '@/models/index';
+import { insertModerationLog } from '@/services/insert-moderation-log';
+import { doPostUnsuspend } from '@/services/unsuspend-user';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/admin/update-meta.ts b/src/server/api/endpoints/admin/update-meta.ts
index a18956b3f7..5962dba98a 100644
--- a/src/server/api/endpoints/admin/update-meta.ts
+++ b/src/server/api/endpoints/admin/update-meta.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
import define from '../../define';
import { getConnection } from 'typeorm';
-import { Meta } from '../../../../models/entities/meta';
-import { insertModerationLog } from '../../../../services/insert-moderation-log';
+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';
@@ -145,6 +145,10 @@ export const meta = {
validator: $.optional.nullable.str,
},
+ deeplAuthKey: {
+ validator: $.optional.nullable.str,
+ },
+
enableTwitterIntegration: {
validator: $.optional.bool,
},
@@ -562,6 +566,14 @@ export default define(meta, async (ps, me) => {
set.objectStorageS3ForcePathStyle = ps.objectStorageS3ForcePathStyle;
}
+ if (ps.deeplAuthKey !== undefined) {
+ if (ps.deeplAuthKey === '') {
+ set.deeplAuthKey = null;
+ } else {
+ set.deeplAuthKey = ps.deeplAuthKey;
+ }
+ }
+
await getConnection().transaction(async transactionalEntityManager => {
const meta = await transactionalEntityManager.findOne(Meta, {
order: {
diff --git a/src/server/api/endpoints/admin/vacuum.ts b/src/server/api/endpoints/admin/vacuum.ts
index e041e65431..9a80d88c44 100644
--- a/src/server/api/endpoints/admin/vacuum.ts
+++ b/src/server/api/endpoints/admin/vacuum.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../define';
import { getConnection } from 'typeorm';
-import { insertModerationLog } from '../../../../services/insert-moderation-log';
+import { insertModerationLog } from '@/services/insert-moderation-log';
export const meta = {
tags: ['admin'],
diff --git a/src/server/api/endpoints/announcements.ts b/src/server/api/endpoints/announcements.ts
index 124682909c..a67737b2ff 100644
--- a/src/server/api/endpoints/announcements.ts
+++ b/src/server/api/endpoints/announcements.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../define';
-import { Announcements, AnnouncementReads } from '../../../models';
+import { Announcements, AnnouncementReads } from '@/models/index';
import { makePaginationQuery } from '../common/make-pagination-query';
export const meta = {
diff --git a/src/server/api/endpoints/antennas/create.ts b/src/server/api/endpoints/antennas/create.ts
index bff3c09f1c..4bdae8cc33 100644
--- a/src/server/api/endpoints/antennas/create.ts
+++ b/src/server/api/endpoints/antennas/create.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
import define from '../../define';
import { genId } from '@/misc/gen-id';
-import { Antennas, UserLists, UserGroupJoinings } from '../../../../models';
+import { Antennas, UserLists, UserGroupJoinings } from '@/models/index';
import { ID } from '@/misc/cafy-id';
import { ApiError } from '../../error';
-import { publishInternalEvent } from '../../../../services/stream';
+import { publishInternalEvent } from '@/services/stream';
export const meta = {
tags: ['antennas'],
diff --git a/src/server/api/endpoints/antennas/delete.ts b/src/server/api/endpoints/antennas/delete.ts
index 10a212897b..1cd136183e 100644
--- a/src/server/api/endpoints/antennas/delete.ts
+++ b/src/server/api/endpoints/antennas/delete.ts
@@ -2,8 +2,8 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
-import { Antennas } from '../../../../models';
-import { publishInternalEvent } from '../../../../services/stream';
+import { Antennas } from '@/models/index';
+import { publishInternalEvent } from '@/services/stream';
export const meta = {
tags: ['antennas'],
diff --git a/src/server/api/endpoints/antennas/list.ts b/src/server/api/endpoints/antennas/list.ts
index 6ae3c0cbb2..8baae8435b 100644
--- a/src/server/api/endpoints/antennas/list.ts
+++ b/src/server/api/endpoints/antennas/list.ts
@@ -1,5 +1,5 @@
import define from '../../define';
-import { Antennas } from '../../../../models';
+import { Antennas } from '@/models/index';
export const meta = {
tags: ['antennas', 'account'],
diff --git a/src/server/api/endpoints/antennas/notes.ts b/src/server/api/endpoints/antennas/notes.ts
index a244f7f9b4..3c8a4fbdae 100644
--- a/src/server/api/endpoints/antennas/notes.ts
+++ b/src/server/api/endpoints/antennas/notes.ts
@@ -1,11 +1,12 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { Antennas, Notes, AntennaNotes } from '../../../../models';
+import { Antennas, Notes, AntennaNotes } from '@/models/index';
import { makePaginationQuery } from '../../common/make-pagination-query';
import { generateVisibilityQuery } from '../../common/generate-visibility-query';
import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
import { ApiError } from '../../error';
+import { generateBlockedUserQuery } from '../../common/generate-block-query';
export const meta = {
tags: ['antennas', 'account', 'notes'],
@@ -77,6 +78,7 @@ export default define(meta, async (ps, user) => {
generateVisibilityQuery(query, user);
generateMutedUserQuery(query, user);
+ generateBlockedUserQuery(query, user);
const notes = await query
.take(ps.limit!)
diff --git a/src/server/api/endpoints/antennas/show.ts b/src/server/api/endpoints/antennas/show.ts
index 36045e47a4..3cdf4dcb61 100644
--- a/src/server/api/endpoints/antennas/show.ts
+++ b/src/server/api/endpoints/antennas/show.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
-import { Antennas } from '../../../../models';
+import { Antennas } from '@/models/index';
export const meta = {
tags: ['antennas', 'account'],
diff --git a/src/server/api/endpoints/antennas/update.ts b/src/server/api/endpoints/antennas/update.ts
index 9194c14795..ff13e89bcc 100644
--- a/src/server/api/endpoints/antennas/update.ts
+++ b/src/server/api/endpoints/antennas/update.ts
@@ -2,8 +2,8 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
-import { Antennas, UserLists, UserGroupJoinings } from '../../../../models';
-import { publishInternalEvent } from '../../../../services/stream';
+import { Antennas, UserLists, UserGroupJoinings } from '@/models/index';
+import { publishInternalEvent } from '@/services/stream';
export const meta = {
tags: ['antennas'],
diff --git a/src/server/api/endpoints/ap/get.ts b/src/server/api/endpoints/ap/get.ts
index f2b4c2408f..2cffce1f16 100644
--- a/src/server/api/endpoints/ap/get.ts
+++ b/src/server/api/endpoints/ap/get.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../define';
-import Resolver from '../../../../remote/activitypub/resolver';
+import Resolver from '@/remote/activitypub/resolver';
import { ApiError } from '../../error';
export const meta = {
diff --git a/src/server/api/endpoints/ap/show.ts b/src/server/api/endpoints/ap/show.ts
index 7f61055bfa..aa0dae070c 100644
--- a/src/server/api/endpoints/ap/show.ts
+++ b/src/server/api/endpoints/ap/show.ts
@@ -1,16 +1,16 @@
import $ from 'cafy';
import define from '../../define';
-import config from '@/config';
-import { createPerson } from '../../../../remote/activitypub/models/person';
-import { createNote } from '../../../../remote/activitypub/models/note';
-import Resolver from '../../../../remote/activitypub/resolver';
+import config from '@/config/index';
+import { createPerson } from '@/remote/activitypub/models/person';
+import { createNote } from '@/remote/activitypub/models/note';
+import Resolver from '@/remote/activitypub/resolver';
import { ApiError } from '../../error';
import { extractDbHost } from '@/misc/convert-host';
-import { Users, Notes } from '../../../../models';
-import { Note } from '../../../../models/entities/note';
-import { User } from '../../../../models/entities/user';
+import { Users, Notes } from '@/models/index';
+import { Note } from '@/models/entities/note';
+import { User } from '@/models/entities/user';
import { fetchMeta } from '@/misc/fetch-meta';
-import { isActor, isPost, getApId } from '../../../../remote/activitypub/type';
+import { isActor, isPost, getApId } from '@/remote/activitypub/type';
export const meta = {
tags: ['federation'],
diff --git a/src/server/api/endpoints/app/create.ts b/src/server/api/endpoints/app/create.ts
index 500567bf29..c2ce943dcc 100644
--- a/src/server/api/endpoints/app/create.ts
+++ b/src/server/api/endpoints/app/create.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
import define from '../../define';
-import { Apps } from '../../../../models';
+import { Apps } from '@/models/index';
import { genId } from '@/misc/gen-id';
-import { unique } from '../../../../prelude/array';
+import { unique } from '@/prelude/array';
import { secureRndstr } from '@/misc/secure-rndstr';
export const meta = {
diff --git a/src/server/api/endpoints/app/show.ts b/src/server/api/endpoints/app/show.ts
index 65f8c77981..27f12eb44f 100644
--- a/src/server/api/endpoints/app/show.ts
+++ b/src/server/api/endpoints/app/show.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
-import { Apps } from '../../../../models';
+import { Apps } from '@/models/index';
export const meta = {
tags: ['app'],
diff --git a/src/server/api/endpoints/auth/accept.ts b/src/server/api/endpoints/auth/accept.ts
index ee0d0421c9..1d1d8ac227 100644
--- a/src/server/api/endpoints/auth/accept.ts
+++ b/src/server/api/endpoints/auth/accept.ts
@@ -2,7 +2,7 @@ import * as crypto from 'crypto';
import $ from 'cafy';
import define from '../../define';
import { ApiError } from '../../error';
-import { AuthSessions, AccessTokens, Apps } from '../../../../models';
+import { AuthSessions, AccessTokens, Apps } from '@/models/index';
import { genId } from '@/misc/gen-id';
import { secureRndstr } from '@/misc/secure-rndstr';
diff --git a/src/server/api/endpoints/auth/session/generate.ts b/src/server/api/endpoints/auth/session/generate.ts
index 42f9e25c78..859cf52ed3 100644
--- a/src/server/api/endpoints/auth/session/generate.ts
+++ b/src/server/api/endpoints/auth/session/generate.ts
@@ -1,9 +1,9 @@
import { v4 as uuid } from 'uuid';
import $ from 'cafy';
-import config from '@/config';
+import config from '@/config/index';
import define from '../../../define';
import { ApiError } from '../../../error';
-import { Apps, AuthSessions } from '../../../../../models';
+import { Apps, AuthSessions } from '@/models/index';
import { genId } from '@/misc/gen-id';
export const meta = {
diff --git a/src/server/api/endpoints/auth/session/show.ts b/src/server/api/endpoints/auth/session/show.ts
index fd20884c02..23f1a56a37 100644
--- a/src/server/api/endpoints/auth/session/show.ts
+++ b/src/server/api/endpoints/auth/session/show.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../../define';
import { ApiError } from '../../../error';
-import { AuthSessions } from '../../../../../models';
+import { AuthSessions } from '@/models/index';
export const meta = {
tags: ['auth'],
diff --git a/src/server/api/endpoints/auth/session/userkey.ts b/src/server/api/endpoints/auth/session/userkey.ts
index 7059aacbea..72201cb207 100644
--- a/src/server/api/endpoints/auth/session/userkey.ts
+++ b/src/server/api/endpoints/auth/session/userkey.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../../define';
import { ApiError } from '../../../error';
-import { Apps, AuthSessions, AccessTokens, Users } from '../../../../../models';
+import { Apps, AuthSessions, AccessTokens, Users } from '@/models/index';
export const meta = {
tags: ['auth'],
diff --git a/src/server/api/endpoints/blocking/create.ts b/src/server/api/endpoints/blocking/create.ts
index dd976a7bf1..1bf5cf374b 100644
--- a/src/server/api/endpoints/blocking/create.ts
+++ b/src/server/api/endpoints/blocking/create.ts
@@ -1,11 +1,11 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import * as ms from 'ms';
-import create from '../../../../services/blocking/create';
+import create from '@/services/blocking/create';
import define from '../../define';
import { ApiError } from '../../error';
import { getUser } from '../../common/getters';
-import { Blockings, NoteWatchings, Users } from '../../../../models';
+import { Blockings, NoteWatchings, Users } from '@/models/index';
export const meta = {
tags: ['account'],
diff --git a/src/server/api/endpoints/blocking/delete.ts b/src/server/api/endpoints/blocking/delete.ts
index c69c8b14a7..a66e46fdf0 100644
--- a/src/server/api/endpoints/blocking/delete.ts
+++ b/src/server/api/endpoints/blocking/delete.ts
@@ -1,11 +1,11 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import * as ms from 'ms';
-import deleteBlocking from '../../../../services/blocking/delete';
+import deleteBlocking from '@/services/blocking/delete';
import define from '../../define';
import { ApiError } from '../../error';
import { getUser } from '../../common/getters';
-import { Blockings, Users } from '../../../../models';
+import { Blockings, Users } from '@/models/index';
export const meta = {
tags: ['account'],
diff --git a/src/server/api/endpoints/blocking/list.ts b/src/server/api/endpoints/blocking/list.ts
index db849338ac..fe25fdaba1 100644
--- a/src/server/api/endpoints/blocking/list.ts
+++ b/src/server/api/endpoints/blocking/list.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { Blockings } from '../../../../models';
+import { Blockings } from '@/models/index';
import { makePaginationQuery } from '../../common/make-pagination-query';
export const meta = {
diff --git a/src/server/api/endpoints/channels/create.ts b/src/server/api/endpoints/channels/create.ts
index c6dc68faf8..0cedfd6c6a 100644
--- a/src/server/api/endpoints/channels/create.ts
+++ b/src/server/api/endpoints/channels/create.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
import define from '../../define';
import { ApiError } from '../../error';
-import { Channels, DriveFiles } from '../../../../models';
-import { Channel } from '../../../../models/entities/channel';
+import { Channels, DriveFiles } from '@/models/index';
+import { Channel } from '@/models/entities/channel';
import { genId } from '@/misc/gen-id';
import { ID } from '@/misc/cafy-id';
diff --git a/src/server/api/endpoints/channels/featured.ts b/src/server/api/endpoints/channels/featured.ts
index abb0a19e2d..dc1f49f960 100644
--- a/src/server/api/endpoints/channels/featured.ts
+++ b/src/server/api/endpoints/channels/featured.ts
@@ -1,5 +1,5 @@
import define from '../../define';
-import { Channels } from '../../../../models';
+import { Channels } from '@/models/index';
export const meta = {
tags: ['channels'],
diff --git a/src/server/api/endpoints/channels/follow.ts b/src/server/api/endpoints/channels/follow.ts
index b264f7451a..d4664e6996 100644
--- a/src/server/api/endpoints/channels/follow.ts
+++ b/src/server/api/endpoints/channels/follow.ts
@@ -2,9 +2,9 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
-import { Channels, ChannelFollowings } from '../../../../models';
+import { Channels, ChannelFollowings } from '@/models/index';
import { genId } from '@/misc/gen-id';
-import { publishUserEvent } from '../../../../services/stream';
+import { publishUserEvent } from '@/services/stream';
export const meta = {
tags: ['channels'],
diff --git a/src/server/api/endpoints/channels/followed.ts b/src/server/api/endpoints/channels/followed.ts
index 7f0cfe4941..be239a01d6 100644
--- a/src/server/api/endpoints/channels/followed.ts
+++ b/src/server/api/endpoints/channels/followed.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { Channels, ChannelFollowings } from '../../../../models';
+import { Channels, ChannelFollowings } from '@/models/index';
import { makePaginationQuery } from '../../common/make-pagination-query';
export const meta = {
diff --git a/src/server/api/endpoints/channels/owned.ts b/src/server/api/endpoints/channels/owned.ts
index 4f538f651e..4a2e9db17b 100644
--- a/src/server/api/endpoints/channels/owned.ts
+++ b/src/server/api/endpoints/channels/owned.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { Channels } from '../../../../models';
+import { Channels } from '@/models/index';
import { makePaginationQuery } from '../../common/make-pagination-query';
export const meta = {
diff --git a/src/server/api/endpoints/channels/show.ts b/src/server/api/endpoints/channels/show.ts
index d5f182da11..803ce6363d 100644
--- a/src/server/api/endpoints/channels/show.ts
+++ b/src/server/api/endpoints/channels/show.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
-import { Channels } from '../../../../models';
+import { Channels } from '@/models/index';
export const meta = {
tags: ['channels'],
diff --git a/src/server/api/endpoints/channels/timeline.ts b/src/server/api/endpoints/channels/timeline.ts
index 9e5ecdeeb3..0ed057a11e 100644
--- a/src/server/api/endpoints/channels/timeline.ts
+++ b/src/server/api/endpoints/channels/timeline.ts
@@ -2,9 +2,9 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
-import { Notes, Channels } from '../../../../models';
+import { Notes, Channels } from '@/models/index';
import { makePaginationQuery } from '../../common/make-pagination-query';
-import { activeUsersChart } from '../../../../services/chart';
+import { activeUsersChart } from '@/services/chart/index';
export const meta = {
tags: ['notes', 'channels'],
diff --git a/src/server/api/endpoints/channels/unfollow.ts b/src/server/api/endpoints/channels/unfollow.ts
index 116af50337..700f8e93ba 100644
--- a/src/server/api/endpoints/channels/unfollow.ts
+++ b/src/server/api/endpoints/channels/unfollow.ts
@@ -2,8 +2,8 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
-import { Channels, ChannelFollowings } from '../../../../models';
-import { publishUserEvent } from '../../../../services/stream';
+import { Channels, ChannelFollowings } from '@/models/index';
+import { publishUserEvent } from '@/services/stream';
export const meta = {
tags: ['channels'],
diff --git a/src/server/api/endpoints/channels/update.ts b/src/server/api/endpoints/channels/update.ts
index 1495297ee5..9b447bd04b 100644
--- a/src/server/api/endpoints/channels/update.ts
+++ b/src/server/api/endpoints/channels/update.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
-import { Channels, DriveFiles } from '../../../../models';
+import { Channels, DriveFiles } from '@/models/index';
export const meta = {
tags: ['channels'],
diff --git a/src/server/api/endpoints/charts/active-users.ts b/src/server/api/endpoints/charts/active-users.ts
index fb177e5c94..c4878f7d61 100644
--- a/src/server/api/endpoints/charts/active-users.ts
+++ b/src/server/api/endpoints/charts/active-users.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../define';
-import { convertLog } from '../../../../services/chart/core';
-import { activeUsersChart } from '../../../../services/chart';
+import { convertLog } from '@/services/chart/core';
+import { activeUsersChart } from '@/services/chart/index';
export const meta = {
tags: ['charts', 'users'],
diff --git a/src/server/api/endpoints/charts/drive.ts b/src/server/api/endpoints/charts/drive.ts
index ba6556c597..07bff82cf4 100644
--- a/src/server/api/endpoints/charts/drive.ts
+++ b/src/server/api/endpoints/charts/drive.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../define';
-import { convertLog } from '../../../../services/chart/core';
-import { driveChart } from '../../../../services/chart';
+import { convertLog } from '@/services/chart/core';
+import { driveChart } from '@/services/chart/index';
export const meta = {
tags: ['charts', 'drive'],
diff --git a/src/server/api/endpoints/charts/federation.ts b/src/server/api/endpoints/charts/federation.ts
index 46eb87ac02..9575f9a7b7 100644
--- a/src/server/api/endpoints/charts/federation.ts
+++ b/src/server/api/endpoints/charts/federation.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../define';
-import { convertLog } from '../../../../services/chart/core';
-import { federationChart } from '../../../../services/chart';
+import { convertLog } from '@/services/chart/core';
+import { federationChart } from '@/services/chart/index';
export const meta = {
tags: ['charts'],
diff --git a/src/server/api/endpoints/charts/hashtag.ts b/src/server/api/endpoints/charts/hashtag.ts
index 5c2875ddd2..53dc61e51e 100644
--- a/src/server/api/endpoints/charts/hashtag.ts
+++ b/src/server/api/endpoints/charts/hashtag.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../define';
-import { convertLog } from '../../../../services/chart/core';
-import { hashtagChart } from '../../../../services/chart';
+import { convertLog } from '@/services/chart/core';
+import { hashtagChart } from '@/services/chart/index';
export const meta = {
tags: ['charts', 'hashtags'],
diff --git a/src/server/api/endpoints/charts/instance.ts b/src/server/api/endpoints/charts/instance.ts
index 9375992d21..1835023188 100644
--- a/src/server/api/endpoints/charts/instance.ts
+++ b/src/server/api/endpoints/charts/instance.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../define';
-import { convertLog } from '../../../../services/chart/core';
-import { instanceChart } from '../../../../services/chart';
+import { convertLog } from '@/services/chart/core';
+import { instanceChart } from '@/services/chart/index';
export const meta = {
tags: ['charts'],
diff --git a/src/server/api/endpoints/charts/network.ts b/src/server/api/endpoints/charts/network.ts
index d1fd404239..b524df93be 100644
--- a/src/server/api/endpoints/charts/network.ts
+++ b/src/server/api/endpoints/charts/network.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../define';
-import { convertLog } from '../../../../services/chart/core';
-import { networkChart } from '../../../../services/chart';
+import { convertLog } from '@/services/chart/core';
+import { networkChart } from '@/services/chart/index';
export const meta = {
tags: ['charts'],
diff --git a/src/server/api/endpoints/charts/notes.ts b/src/server/api/endpoints/charts/notes.ts
index 7141fe3b0a..676f302939 100644
--- a/src/server/api/endpoints/charts/notes.ts
+++ b/src/server/api/endpoints/charts/notes.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../define';
-import { convertLog } from '../../../../services/chart/core';
-import { notesChart } from '../../../../services/chart';
+import { convertLog } from '@/services/chart/core';
+import { notesChart } from '@/services/chart/index';
export const meta = {
tags: ['charts', 'notes'],
diff --git a/src/server/api/endpoints/charts/user/drive.ts b/src/server/api/endpoints/charts/user/drive.ts
index bacb022c81..f2770e2df8 100644
--- a/src/server/api/endpoints/charts/user/drive.ts
+++ b/src/server/api/endpoints/charts/user/drive.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
import define from '../../../define';
import { ID } from '@/misc/cafy-id';
-import { convertLog } from '../../../../../services/chart/core';
-import { perUserDriveChart } from '../../../../../services/chart';
+import { convertLog } from '@/services/chart/core';
+import { perUserDriveChart } from '@/services/chart/index';
export const meta = {
tags: ['charts', 'drive', 'users'],
diff --git a/src/server/api/endpoints/charts/user/following.ts b/src/server/api/endpoints/charts/user/following.ts
index ce41c231ba..8c97b63e89 100644
--- a/src/server/api/endpoints/charts/user/following.ts
+++ b/src/server/api/endpoints/charts/user/following.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
import define from '../../../define';
import { ID } from '@/misc/cafy-id';
-import { convertLog } from '../../../../../services/chart/core';
-import { perUserFollowingChart } from '../../../../../services/chart';
+import { convertLog } from '@/services/chart/core';
+import { perUserFollowingChart } from '@/services/chart/index';
export const meta = {
tags: ['charts', 'users', 'following'],
diff --git a/src/server/api/endpoints/charts/user/notes.ts b/src/server/api/endpoints/charts/user/notes.ts
index 470b7274bd..0d5f5a8b6a 100644
--- a/src/server/api/endpoints/charts/user/notes.ts
+++ b/src/server/api/endpoints/charts/user/notes.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
import define from '../../../define';
import { ID } from '@/misc/cafy-id';
-import { convertLog } from '../../../../../services/chart/core';
-import { perUserNotesChart } from '../../../../../services/chart';
+import { convertLog } from '@/services/chart/core';
+import { perUserNotesChart } from '@/services/chart/index';
export const meta = {
tags: ['charts', 'users', 'notes'],
diff --git a/src/server/api/endpoints/charts/user/reactions.ts b/src/server/api/endpoints/charts/user/reactions.ts
index 4ebe4623c0..3cabe40d56 100644
--- a/src/server/api/endpoints/charts/user/reactions.ts
+++ b/src/server/api/endpoints/charts/user/reactions.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
import define from '../../../define';
import { ID } from '@/misc/cafy-id';
-import { convertLog } from '../../../../../services/chart/core';
-import { perUserReactionsChart } from '../../../../../services/chart';
+import { convertLog } from '@/services/chart/core';
+import { perUserReactionsChart } from '@/services/chart/index';
export const meta = {
tags: ['charts', 'users', 'reactions'],
diff --git a/src/server/api/endpoints/charts/users.ts b/src/server/api/endpoints/charts/users.ts
index 4246a18e59..deac89b59d 100644
--- a/src/server/api/endpoints/charts/users.ts
+++ b/src/server/api/endpoints/charts/users.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../define';
-import { convertLog } from '../../../../services/chart/core';
-import { usersChart } from '../../../../services/chart';
+import { convertLog } from '@/services/chart/core';
+import { usersChart } from '@/services/chart/index';
export const meta = {
tags: ['charts', 'users'],
diff --git a/src/server/api/endpoints/clips/add-note.ts b/src/server/api/endpoints/clips/add-note.ts
index 3d72def4f5..79d7b8adde 100644
--- a/src/server/api/endpoints/clips/add-note.ts
+++ b/src/server/api/endpoints/clips/add-note.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { ClipNotes, Clips } from '../../../../models';
+import { ClipNotes, Clips } from '@/models/index';
import { ApiError } from '../../error';
import { genId } from '@/misc/gen-id';
import { getNote } from '../../common/getters';
diff --git a/src/server/api/endpoints/clips/create.ts b/src/server/api/endpoints/clips/create.ts
index fb2a77fe5b..02d2773709 100644
--- a/src/server/api/endpoints/clips/create.ts
+++ b/src/server/api/endpoints/clips/create.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../define';
import { genId } from '@/misc/gen-id';
-import { Clips } from '../../../../models';
+import { Clips } from '@/models/index';
export const meta = {
tags: ['clips'],
diff --git a/src/server/api/endpoints/clips/delete.ts b/src/server/api/endpoints/clips/delete.ts
index 20b2addb76..ca489af3bf 100644
--- a/src/server/api/endpoints/clips/delete.ts
+++ b/src/server/api/endpoints/clips/delete.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
-import { Clips } from '../../../../models';
+import { Clips } from '@/models/index';
export const meta = {
tags: ['clips'],
diff --git a/src/server/api/endpoints/clips/list.ts b/src/server/api/endpoints/clips/list.ts
index 6b90b114df..1f6db9b979 100644
--- a/src/server/api/endpoints/clips/list.ts
+++ b/src/server/api/endpoints/clips/list.ts
@@ -1,5 +1,5 @@
import define from '../../define';
-import { Clips } from '../../../../models';
+import { Clips } from '@/models/index';
export const meta = {
tags: ['clips', 'account'],
diff --git a/src/server/api/endpoints/clips/notes.ts b/src/server/api/endpoints/clips/notes.ts
index 5fd17584d3..5a9fed52fa 100644
--- a/src/server/api/endpoints/clips/notes.ts
+++ b/src/server/api/endpoints/clips/notes.ts
@@ -1,11 +1,12 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { ClipNotes, Clips, Notes } from '../../../../models';
+import { ClipNotes, Clips, Notes } from '@/models/index';
import { makePaginationQuery } from '../../common/make-pagination-query';
import { generateVisibilityQuery } from '../../common/generate-visibility-query';
import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
import { ApiError } from '../../error';
+import { generateBlockedUserQuery } from '../../common/generate-block-query';
export const meta = {
tags: ['account', 'notes', 'clips'],
@@ -81,6 +82,7 @@ export default define(meta, async (ps, user) => {
if (user) {
generateVisibilityQuery(query, user);
generateMutedUserQuery(query, user);
+ generateBlockedUserQuery(query, user);
}
const notes = await query
diff --git a/src/server/api/endpoints/clips/show.ts b/src/server/api/endpoints/clips/show.ts
index 43d2719129..8f245cd18e 100644
--- a/src/server/api/endpoints/clips/show.ts
+++ b/src/server/api/endpoints/clips/show.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
-import { Clips } from '../../../../models';
+import { Clips } from '@/models/index';
export const meta = {
tags: ['clips', 'account'],
diff --git a/src/server/api/endpoints/clips/update.ts b/src/server/api/endpoints/clips/update.ts
index a368174e76..7f645560bb 100644
--- a/src/server/api/endpoints/clips/update.ts
+++ b/src/server/api/endpoints/clips/update.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
-import { Clips } from '../../../../models';
+import { Clips } from '@/models/index';
export const meta = {
tags: ['clips'],
diff --git a/src/server/api/endpoints/drive.ts b/src/server/api/endpoints/drive.ts
index 2feb72ae12..2974ccfab9 100644
--- a/src/server/api/endpoints/drive.ts
+++ b/src/server/api/endpoints/drive.ts
@@ -1,6 +1,6 @@
import define from '../define';
import { fetchMeta } from '@/misc/fetch-meta';
-import { DriveFiles } from '../../../models';
+import { DriveFiles } from '@/models/index';
export const meta = {
tags: ['drive', 'account'],
diff --git a/src/server/api/endpoints/drive/files.ts b/src/server/api/endpoints/drive/files.ts
index 1e821b0085..95435e1e43 100644
--- a/src/server/api/endpoints/drive/files.ts
+++ b/src/server/api/endpoints/drive/files.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { DriveFiles } from '../../../../models';
+import { DriveFiles } from '@/models/index';
import { makePaginationQuery } from '../../common/make-pagination-query';
export const meta = {
diff --git a/src/server/api/endpoints/drive/files/attached-notes.ts b/src/server/api/endpoints/drive/files/attached-notes.ts
index dafbf30fbb..eec7d7877e 100644
--- a/src/server/api/endpoints/drive/files/attached-notes.ts
+++ b/src/server/api/endpoints/drive/files/attached-notes.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
-import { DriveFiles, Notes } from '../../../../../models';
+import { DriveFiles, Notes } from '@/models/index';
export const meta = {
tags: ['drive', 'notes'],
diff --git a/src/server/api/endpoints/drive/files/check-existence.ts b/src/server/api/endpoints/drive/files/check-existence.ts
index b20be44072..2c36078421 100644
--- a/src/server/api/endpoints/drive/files/check-existence.ts
+++ b/src/server/api/endpoints/drive/files/check-existence.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../../define';
-import { DriveFiles } from '../../../../../models';
+import { DriveFiles } from '@/models/index';
export const meta = {
tags: ['drive'],
diff --git a/src/server/api/endpoints/drive/files/create.ts b/src/server/api/endpoints/drive/files/create.ts
index a8f6b92014..2abc104e6c 100644
--- a/src/server/api/endpoints/drive/files/create.ts
+++ b/src/server/api/endpoints/drive/files/create.ts
@@ -1,11 +1,11 @@
import * as ms from 'ms';
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
-import create from '../../../../../services/drive/add-file';
+import create from '@/services/drive/add-file';
import define from '../../../define';
import { apiLogger } from '../../../logger';
import { ApiError } from '../../../error';
-import { DriveFiles } from '../../../../../models';
+import { DriveFiles } from '@/models/index';
export const meta = {
tags: ['drive'],
diff --git a/src/server/api/endpoints/drive/files/delete.ts b/src/server/api/endpoints/drive/files/delete.ts
index 520078948c..038325694d 100644
--- a/src/server/api/endpoints/drive/files/delete.ts
+++ b/src/server/api/endpoints/drive/files/delete.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
-import { deleteFile } from '../../../../../services/drive/delete-file';
-import { publishDriveStream } from '../../../../../services/stream';
+import { deleteFile } from '@/services/drive/delete-file';
+import { publishDriveStream } from '@/services/stream';
import define from '../../../define';
import { ApiError } from '../../../error';
-import { DriveFiles } from '../../../../../models';
+import { DriveFiles } from '@/models/index';
export const meta = {
tags: ['drive'],
diff --git a/src/server/api/endpoints/drive/files/find-by-hash.ts b/src/server/api/endpoints/drive/files/find-by-hash.ts
index ef0077392e..5fea7bbbb0 100644
--- a/src/server/api/endpoints/drive/files/find-by-hash.ts
+++ b/src/server/api/endpoints/drive/files/find-by-hash.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../../define';
-import { DriveFiles } from '../../../../../models';
+import { DriveFiles } from '@/models/index';
export const meta = {
tags: ['drive'],
diff --git a/src/server/api/endpoints/drive/files/find.ts b/src/server/api/endpoints/drive/files/find.ts
index b7f2571453..dd419f4c04 100644
--- a/src/server/api/endpoints/drive/files/find.ts
+++ b/src/server/api/endpoints/drive/files/find.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
-import { DriveFiles } from '../../../../../models';
+import { DriveFiles } from '@/models/index';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/drive/files/show.ts b/src/server/api/endpoints/drive/files/show.ts
index 33e88fa817..a96ebaa123 100644
--- a/src/server/api/endpoints/drive/files/show.ts
+++ b/src/server/api/endpoints/drive/files/show.ts
@@ -2,8 +2,8 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
-import { DriveFile } from '../../../../../models/entities/drive-file';
-import { DriveFiles } from '../../../../../models';
+import { DriveFile } from '@/models/entities/drive-file';
+import { DriveFiles } from '@/models/index';
export const meta = {
tags: ['drive'],
diff --git a/src/server/api/endpoints/drive/files/update.ts b/src/server/api/endpoints/drive/files/update.ts
index 29b4ba7a45..1ef445625c 100644
--- a/src/server/api/endpoints/drive/files/update.ts
+++ b/src/server/api/endpoints/drive/files/update.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
-import { publishDriveStream } from '../../../../../services/stream';
+import { publishDriveStream } from '@/services/stream';
import define from '../../../define';
import { ApiError } from '../../../error';
-import { DriveFiles, DriveFolders } from '../../../../../models';
+import { DriveFiles, DriveFolders } from '@/models/index';
export const meta = {
tags: ['drive'],
diff --git a/src/server/api/endpoints/drive/files/upload-from-url.ts b/src/server/api/endpoints/drive/files/upload-from-url.ts
index 8dfc86e660..f37f316efb 100644
--- a/src/server/api/endpoints/drive/files/upload-from-url.ts
+++ b/src/server/api/endpoints/drive/files/upload-from-url.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import * as ms from 'ms';
-import uploadFromUrl from '../../../../../services/drive/upload-from-url';
+import uploadFromUrl from '@/services/drive/upload-from-url';
import define from '../../../define';
-import { DriveFiles } from '../../../../../models';
-import { publishMainStream } from '../../../../../services/stream';
+import { DriveFiles } from '@/models/index';
+import { publishMainStream } from '@/services/stream';
export const meta = {
tags: ['drive'],
diff --git a/src/server/api/endpoints/drive/folders.ts b/src/server/api/endpoints/drive/folders.ts
index c446d546cc..6f16878b13 100644
--- a/src/server/api/endpoints/drive/folders.ts
+++ b/src/server/api/endpoints/drive/folders.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { DriveFolders } from '../../../../models';
+import { DriveFolders } from '@/models/index';
import { makePaginationQuery } from '../../common/make-pagination-query';
export const meta = {
diff --git a/src/server/api/endpoints/drive/folders/create.ts b/src/server/api/endpoints/drive/folders/create.ts
index e39f8f2cee..80f96bd641 100644
--- a/src/server/api/endpoints/drive/folders/create.ts
+++ b/src/server/api/endpoints/drive/folders/create.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
-import { publishDriveStream } from '../../../../../services/stream';
+import { publishDriveStream } from '@/services/stream';
import define from '../../../define';
import { ApiError } from '../../../error';
-import { DriveFolders } from '../../../../../models';
+import { DriveFolders } from '@/models/index';
import { genId } from '@/misc/gen-id';
export const meta = {
diff --git a/src/server/api/endpoints/drive/folders/delete.ts b/src/server/api/endpoints/drive/folders/delete.ts
index 253563a3ef..38b4aef103 100644
--- a/src/server/api/endpoints/drive/folders/delete.ts
+++ b/src/server/api/endpoints/drive/folders/delete.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
-import { publishDriveStream } from '../../../../../services/stream';
+import { publishDriveStream } from '@/services/stream';
import { ApiError } from '../../../error';
-import { DriveFolders, DriveFiles } from '../../../../../models';
+import { DriveFolders, DriveFiles } from '@/models/index';
export const meta = {
tags: ['drive'],
diff --git a/src/server/api/endpoints/drive/folders/find.ts b/src/server/api/endpoints/drive/folders/find.ts
index c8e7639e63..a6c5a49988 100644
--- a/src/server/api/endpoints/drive/folders/find.ts
+++ b/src/server/api/endpoints/drive/folders/find.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
-import { DriveFolders } from '../../../../../models';
+import { DriveFolders } from '@/models/index';
export const meta = {
tags: ['drive'],
diff --git a/src/server/api/endpoints/drive/folders/show.ts b/src/server/api/endpoints/drive/folders/show.ts
index fe1326da75..e907a24f05 100644
--- a/src/server/api/endpoints/drive/folders/show.ts
+++ b/src/server/api/endpoints/drive/folders/show.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
-import { DriveFolders } from '../../../../../models';
+import { DriveFolders } from '@/models/index';
export const meta = {
tags: ['drive'],
diff --git a/src/server/api/endpoints/drive/folders/update.ts b/src/server/api/endpoints/drive/folders/update.ts
index 9dfe33517e..612252e6df 100644
--- a/src/server/api/endpoints/drive/folders/update.ts
+++ b/src/server/api/endpoints/drive/folders/update.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
-import { publishDriveStream } from '../../../../../services/stream';
+import { publishDriveStream } from '@/services/stream';
import define from '../../../define';
import { ApiError } from '../../../error';
-import { DriveFolders } from '../../../../../models';
+import { DriveFolders } from '@/models/index';
export const meta = {
tags: ['drive'],
diff --git a/src/server/api/endpoints/drive/stream.ts b/src/server/api/endpoints/drive/stream.ts
index ca88acf5fe..141e02f748 100644
--- a/src/server/api/endpoints/drive/stream.ts
+++ b/src/server/api/endpoints/drive/stream.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { DriveFiles } from '../../../../models';
+import { DriveFiles } from '@/models/index';
import { makePaginationQuery } from '../../common/make-pagination-query';
export const meta = {
diff --git a/src/server/api/endpoints/federation/dns.ts b/src/server/api/endpoints/federation/dns.ts
index a188f46ac1..7ba566301a 100644
--- a/src/server/api/endpoints/federation/dns.ts
+++ b/src/server/api/endpoints/federation/dns.ts
@@ -1,7 +1,7 @@
import { promises as dns } from 'dns';
import $ from 'cafy';
import define from '../../define';
-import { Instances } from '../../../../models';
+import { Instances } from '@/models/index';
import { toPuny } from '@/misc/convert-host';
const resolver = new dns.Resolver();
diff --git a/src/server/api/endpoints/federation/followers.ts b/src/server/api/endpoints/federation/followers.ts
index 727eada682..655e7b7b9a 100644
--- a/src/server/api/endpoints/federation/followers.ts
+++ b/src/server/api/endpoints/federation/followers.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { Followings } from '../../../../models';
+import { Followings } from '@/models/index';
import { makePaginationQuery } from '../../common/make-pagination-query';
export const meta = {
diff --git a/src/server/api/endpoints/federation/following.ts b/src/server/api/endpoints/federation/following.ts
index c6bc71a982..5b283581a6 100644
--- a/src/server/api/endpoints/federation/following.ts
+++ b/src/server/api/endpoints/federation/following.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { Followings } from '../../../../models';
+import { Followings } from '@/models/index';
import { makePaginationQuery } from '../../common/make-pagination-query';
export const meta = {
diff --git a/src/server/api/endpoints/federation/instances.ts b/src/server/api/endpoints/federation/instances.ts
index 29515f0eb4..cf5e44ebd5 100644
--- a/src/server/api/endpoints/federation/instances.ts
+++ b/src/server/api/endpoints/federation/instances.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import config from '@/config';
+import config from '@/config/index';
import define from '../../define';
-import { Instances } from '../../../../models';
+import { Instances } from '@/models/index';
import { fetchMeta } from '@/misc/fetch-meta';
export const meta = {
diff --git a/src/server/api/endpoints/federation/show-instance.ts b/src/server/api/endpoints/federation/show-instance.ts
index 549d7340fb..f8352aefb3 100644
--- a/src/server/api/endpoints/federation/show-instance.ts
+++ b/src/server/api/endpoints/federation/show-instance.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../define';
-import { Instances } from '../../../../models';
+import { Instances } from '@/models/index';
import { toPuny } from '@/misc/convert-host';
export const meta = {
diff --git a/src/server/api/endpoints/federation/update-remote-user.ts b/src/server/api/endpoints/federation/update-remote-user.ts
index c4a6db0dd2..580c3cb3d9 100644
--- a/src/server/api/endpoints/federation/update-remote-user.ts
+++ b/src/server/api/endpoints/federation/update-remote-user.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { getRemoteUser } from '../../common/getters';
-import { updatePerson } from '../../../../remote/activitypub/models/person';
+import { updatePerson } from '@/remote/activitypub/models/person';
export const meta = {
tags: ['federation'],
diff --git a/src/server/api/endpoints/federation/users.ts b/src/server/api/endpoints/federation/users.ts
index 77d9e2e076..0e35df3e1c 100644
--- a/src/server/api/endpoints/federation/users.ts
+++ b/src/server/api/endpoints/federation/users.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { Users } from '../../../../models';
+import { Users } from '@/models/index';
import { makePaginationQuery } from '../../common/make-pagination-query';
export const meta = {
diff --git a/src/server/api/endpoints/following/create.ts b/src/server/api/endpoints/following/create.ts
index e4f9a86d99..ba9ca1092d 100644
--- a/src/server/api/endpoints/following/create.ts
+++ b/src/server/api/endpoints/following/create.ts
@@ -1,11 +1,11 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import * as ms from 'ms';
-import create from '../../../../services/following/create';
+import create from '@/services/following/create';
import define from '../../define';
import { ApiError } from '../../error';
import { getUser } from '../../common/getters';
-import { Followings, Users } from '../../../../models';
+import { Followings, Users } from '@/models/index';
export const meta = {
tags: ['following', 'users'],
diff --git a/src/server/api/endpoints/following/delete.ts b/src/server/api/endpoints/following/delete.ts
index e164cb25c9..0b0158b86e 100644
--- a/src/server/api/endpoints/following/delete.ts
+++ b/src/server/api/endpoints/following/delete.ts
@@ -1,11 +1,11 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import * as ms from 'ms';
-import deleteFollowing from '../../../../services/following/delete';
+import deleteFollowing from '@/services/following/delete';
import define from '../../define';
import { ApiError } from '../../error';
import { getUser } from '../../common/getters';
-import { Followings, Users } from '../../../../models';
+import { Followings, Users } from '@/models/index';
export const meta = {
tags: ['following', 'users'],
diff --git a/src/server/api/endpoints/following/requests/accept.ts b/src/server/api/endpoints/following/requests/accept.ts
index aa7085c53f..af39ea1d90 100644
--- a/src/server/api/endpoints/following/requests/accept.ts
+++ b/src/server/api/endpoints/following/requests/accept.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
-import acceptFollowRequest from '../../../../../services/following/requests/accept';
+import acceptFollowRequest from '@/services/following/requests/accept';
import define from '../../../define';
import { ApiError } from '../../../error';
import { getUser } from '../../../common/getters';
diff --git a/src/server/api/endpoints/following/requests/cancel.ts b/src/server/api/endpoints/following/requests/cancel.ts
index 09056f2620..b69c9d2fe1 100644
--- a/src/server/api/endpoints/following/requests/cancel.ts
+++ b/src/server/api/endpoints/following/requests/cancel.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
-import cancelFollowRequest from '../../../../../services/following/requests/cancel';
+import cancelFollowRequest from '@/services/following/requests/cancel';
import define from '../../../define';
import { ApiError } from '../../../error';
import { getUser } from '../../../common/getters';
-import { Users } from '../../../../../models';
+import { Users } from '@/models/index';
export const meta = {
tags: ['following', 'account'],
diff --git a/src/server/api/endpoints/following/requests/list.ts b/src/server/api/endpoints/following/requests/list.ts
index bf3bfc68fa..84440ccac7 100644
--- a/src/server/api/endpoints/following/requests/list.ts
+++ b/src/server/api/endpoints/following/requests/list.ts
@@ -1,5 +1,5 @@
import define from '../../../define';
-import { FollowRequests } from '../../../../../models';
+import { FollowRequests } from '@/models/index';
export const meta = {
tags: ['following', 'account'],
diff --git a/src/server/api/endpoints/following/requests/reject.ts b/src/server/api/endpoints/following/requests/reject.ts
index 1685a86137..620324361f 100644
--- a/src/server/api/endpoints/following/requests/reject.ts
+++ b/src/server/api/endpoints/following/requests/reject.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
-import rejectFollowRequest from '../../../../../services/following/requests/reject';
+import rejectFollowRequest from '@/services/following/requests/reject';
import define from '../../../define';
import { ApiError } from '../../../error';
import { getUser } from '../../../common/getters';
diff --git a/src/server/api/endpoints/gallery/featured.ts b/src/server/api/endpoints/gallery/featured.ts
index d09000cc71..30ef8cedec 100644
--- a/src/server/api/endpoints/gallery/featured.ts
+++ b/src/server/api/endpoints/gallery/featured.ts
@@ -1,5 +1,5 @@
import define from '../../define';
-import { GalleryPosts } from '../../../../models';
+import { GalleryPosts } from '@/models/index';
export const meta = {
tags: ['gallery'],
diff --git a/src/server/api/endpoints/gallery/popular.ts b/src/server/api/endpoints/gallery/popular.ts
index e240b14d27..18449b9654 100644
--- a/src/server/api/endpoints/gallery/popular.ts
+++ b/src/server/api/endpoints/gallery/popular.ts
@@ -1,5 +1,5 @@
import define from '../../define';
-import { GalleryPosts } from '../../../../models';
+import { GalleryPosts } from '@/models/index';
export const meta = {
tags: ['gallery'],
diff --git a/src/server/api/endpoints/gallery/posts.ts b/src/server/api/endpoints/gallery/posts.ts
index 656765d80a..53d3236d2d 100644
--- a/src/server/api/endpoints/gallery/posts.ts
+++ b/src/server/api/endpoints/gallery/posts.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { makePaginationQuery } from '../../common/make-pagination-query';
-import { GalleryPosts } from '../../../../models';
+import { GalleryPosts } from '@/models/index';
export const meta = {
tags: ['gallery'],
diff --git a/src/server/api/endpoints/gallery/posts/create.ts b/src/server/api/endpoints/gallery/posts/create.ts
index ed24a45f88..38b487e6ea 100644
--- a/src/server/api/endpoints/gallery/posts/create.ts
+++ b/src/server/api/endpoints/gallery/posts/create.ts
@@ -2,9 +2,9 @@ import $ from 'cafy';
import * as ms from 'ms';
import define from '../../../define';
import { ID } from '../../../../../misc/cafy-id';
-import { DriveFiles, GalleryPosts } from '../../../../../models';
+import { DriveFiles, GalleryPosts } from '@/models/index';
import { genId } from '../../../../../misc/gen-id';
-import { GalleryPost } from '../../../../../models/entities/gallery-post';
+import { GalleryPost } from '@/models/entities/gallery-post';
import { ApiError } from '../../../error';
import { DriveFile } from '@/models/entities/drive-file';
diff --git a/src/server/api/endpoints/gallery/posts/delete.ts b/src/server/api/endpoints/gallery/posts/delete.ts
index 8b54828b20..e5b7c07f2f 100644
--- a/src/server/api/endpoints/gallery/posts/delete.ts
+++ b/src/server/api/endpoints/gallery/posts/delete.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../../define';
import { ApiError } from '../../../error';
-import { GalleryPosts } from '../../../../../models';
+import { GalleryPosts } from '@/models/index';
import { ID } from '@/misc/cafy-id';
export const meta = {
diff --git a/src/server/api/endpoints/gallery/posts/like.ts b/src/server/api/endpoints/gallery/posts/like.ts
index 3bf37c13e3..81a25c0ad1 100644
--- a/src/server/api/endpoints/gallery/posts/like.ts
+++ b/src/server/api/endpoints/gallery/posts/like.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
-import { GalleryPosts, GalleryLikes } from '../../../../../models';
+import { GalleryPosts, GalleryLikes } from '@/models/index';
import { genId } from '@/misc/gen-id';
export const meta = {
diff --git a/src/server/api/endpoints/gallery/posts/show.ts b/src/server/api/endpoints/gallery/posts/show.ts
index 17628544b7..93852a5f8d 100644
--- a/src/server/api/endpoints/gallery/posts/show.ts
+++ b/src/server/api/endpoints/gallery/posts/show.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
-import { GalleryPosts } from '@/models';
+import { GalleryPosts } from '@/models/index';
export const meta = {
tags: ['gallery'],
diff --git a/src/server/api/endpoints/gallery/posts/unlike.ts b/src/server/api/endpoints/gallery/posts/unlike.ts
index 155949ae3d..0347cdf79e 100644
--- a/src/server/api/endpoints/gallery/posts/unlike.ts
+++ b/src/server/api/endpoints/gallery/posts/unlike.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
-import { GalleryPosts, GalleryLikes } from '../../../../../models';
+import { GalleryPosts, GalleryLikes } from '@/models/index';
export const meta = {
tags: ['gallery'],
diff --git a/src/server/api/endpoints/gallery/posts/update.ts b/src/server/api/endpoints/gallery/posts/update.ts
index d9176ea407..54eea130d3 100644
--- a/src/server/api/endpoints/gallery/posts/update.ts
+++ b/src/server/api/endpoints/gallery/posts/update.ts
@@ -2,8 +2,8 @@ import $ from 'cafy';
import * as ms from 'ms';
import define from '../../../define';
import { ID } from '../../../../../misc/cafy-id';
-import { DriveFiles, GalleryPosts } from '../../../../../models';
-import { GalleryPost } from '../../../../../models/entities/gallery-post';
+import { DriveFiles, GalleryPosts } from '@/models/index';
+import { GalleryPost } from '@/models/entities/gallery-post';
import { ApiError } from '../../../error';
import { DriveFile } from '@/models/entities/drive-file';
diff --git a/src/server/api/endpoints/games/reversi/games.ts b/src/server/api/endpoints/games/reversi/games.ts
index 6ac150ef2c..4db9ecb69f 100644
--- a/src/server/api/endpoints/games/reversi/games.ts
+++ b/src/server/api/endpoints/games/reversi/games.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
-import { ReversiGames } from '../../../../../models';
+import { ReversiGames } from '@/models/index';
import { makePaginationQuery } from '../../../common/make-pagination-query';
import { Brackets } from 'typeorm';
diff --git a/src/server/api/endpoints/games/reversi/games/show.ts b/src/server/api/endpoints/games/reversi/games/show.ts
index a6fbdbaf6d..93afffdb1f 100644
--- a/src/server/api/endpoints/games/reversi/games/show.ts
+++ b/src/server/api/endpoints/games/reversi/games/show.ts
@@ -3,7 +3,7 @@ import { ID } from '@/misc/cafy-id';
import Reversi from '../../../../../../games/reversi/core';
import define from '../../../../define';
import { ApiError } from '../../../../error';
-import { ReversiGames } from '../../../../../../models';
+import { ReversiGames } from '@/models/index';
export const meta = {
tags: ['games'],
diff --git a/src/server/api/endpoints/games/reversi/games/surrender.ts b/src/server/api/endpoints/games/reversi/games/surrender.ts
index 41896b4ab5..00d58b19e3 100644
--- a/src/server/api/endpoints/games/reversi/games/surrender.ts
+++ b/src/server/api/endpoints/games/reversi/games/surrender.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
-import { publishReversiGameStream } from '../../../../../../services/stream';
+import { publishReversiGameStream } from '@/services/stream';
import define from '../../../../define';
import { ApiError } from '../../../../error';
-import { ReversiGames } from '../../../../../../models';
+import { ReversiGames } from '@/models/index';
export const meta = {
tags: ['games'],
diff --git a/src/server/api/endpoints/games/reversi/invitations.ts b/src/server/api/endpoints/games/reversi/invitations.ts
index 6a73bdf0c4..c8629377b2 100644
--- a/src/server/api/endpoints/games/reversi/invitations.ts
+++ b/src/server/api/endpoints/games/reversi/invitations.ts
@@ -1,5 +1,5 @@
import define from '../../../define';
-import { ReversiMatchings } from '../../../../../models';
+import { ReversiMatchings } from '@/models/index';
export const meta = {
tags: ['games'],
diff --git a/src/server/api/endpoints/games/reversi/match.ts b/src/server/api/endpoints/games/reversi/match.ts
index 55ff9225d9..5ceb16c7d7 100644
--- a/src/server/api/endpoints/games/reversi/match.ts
+++ b/src/server/api/endpoints/games/reversi/match.ts
@@ -1,14 +1,14 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
-import { publishMainStream, publishReversiStream } from '../../../../../services/stream';
+import { publishMainStream, publishReversiStream } from '@/services/stream';
import { eighteight } from '../../../../../games/reversi/maps';
import define from '../../../define';
import { ApiError } from '../../../error';
import { getUser } from '../../../common/getters';
import { genId } from '@/misc/gen-id';
-import { ReversiMatchings, ReversiGames } from '../../../../../models';
-import { ReversiGame } from '../../../../../models/entities/games/reversi/game';
-import { ReversiMatching } from '../../../../../models/entities/games/reversi/matching';
+import { ReversiMatchings, ReversiGames } from '@/models/index';
+import { ReversiGame } from '@/models/entities/games/reversi/game';
+import { ReversiMatching } from '@/models/entities/games/reversi/matching';
export const meta = {
tags: ['games'],
diff --git a/src/server/api/endpoints/games/reversi/match/cancel.ts b/src/server/api/endpoints/games/reversi/match/cancel.ts
index 0abd4b5c8f..e4a138bb87 100644
--- a/src/server/api/endpoints/games/reversi/match/cancel.ts
+++ b/src/server/api/endpoints/games/reversi/match/cancel.ts
@@ -1,5 +1,5 @@
import define from '../../../../define';
-import { ReversiMatchings } from '../../../../../../models';
+import { ReversiMatchings } from '@/models/index';
export const meta = {
tags: ['games'],
diff --git a/src/server/api/endpoints/get-online-users-count.ts b/src/server/api/endpoints/get-online-users-count.ts
index a13363055f..5c80d588d3 100644
--- a/src/server/api/endpoints/get-online-users-count.ts
+++ b/src/server/api/endpoints/get-online-users-count.ts
@@ -1,5 +1,5 @@
import { USER_ONLINE_THRESHOLD } from '@/const';
-import { Users } from '@/models';
+import { Users } from '@/models/index';
import { MoreThan } from 'typeorm';
import define from '../define';
diff --git a/src/server/api/endpoints/hashtags/list.ts b/src/server/api/endpoints/hashtags/list.ts
index 6e37f909ee..821016a50c 100644
--- a/src/server/api/endpoints/hashtags/list.ts
+++ b/src/server/api/endpoints/hashtags/list.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../define';
-import { Hashtags } from '../../../../models';
+import { Hashtags } from '@/models/index';
export const meta = {
tags: ['hashtags'],
diff --git a/src/server/api/endpoints/hashtags/search.ts b/src/server/api/endpoints/hashtags/search.ts
index 372ccd5084..fd0cac3983 100644
--- a/src/server/api/endpoints/hashtags/search.ts
+++ b/src/server/api/endpoints/hashtags/search.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../define';
-import { Hashtags } from '../../../../models';
+import { Hashtags } from '@/models/index';
export const meta = {
tags: ['hashtags'],
diff --git a/src/server/api/endpoints/hashtags/show.ts b/src/server/api/endpoints/hashtags/show.ts
index 9e388ce145..f22edbfffd 100644
--- a/src/server/api/endpoints/hashtags/show.ts
+++ b/src/server/api/endpoints/hashtags/show.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../define';
import { ApiError } from '../../error';
-import { Hashtags } from '../../../../models';
+import { Hashtags } from '@/models/index';
import { normalizeForSearch } from '@/misc/normalize-for-search';
export const meta = {
diff --git a/src/server/api/endpoints/hashtags/trend.ts b/src/server/api/endpoints/hashtags/trend.ts
index 5341c3e584..3d67241ab6 100644
--- a/src/server/api/endpoints/hashtags/trend.ts
+++ b/src/server/api/endpoints/hashtags/trend.ts
@@ -1,8 +1,8 @@
import { Brackets } from 'typeorm';
import define from '../../define';
import { fetchMeta } from '@/misc/fetch-meta';
-import { Notes } from '../../../../models';
-import { Note } from '../../../../models/entities/note';
+import { Notes } from '@/models/index';
+import { Note } from '@/models/entities/note';
import { safeForSql } from '@/misc/safe-for-sql';
import { normalizeForSearch } from '@/misc/normalize-for-search';
diff --git a/src/server/api/endpoints/hashtags/users.ts b/src/server/api/endpoints/hashtags/users.ts
index cecbc80cd2..8c8cd1510b 100644
--- a/src/server/api/endpoints/hashtags/users.ts
+++ b/src/server/api/endpoints/hashtags/users.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../define';
-import { Users } from '../../../../models';
+import { Users } from '@/models/index';
import { normalizeForSearch } from '@/misc/normalize-for-search';
export const meta = {
diff --git a/src/server/api/endpoints/i.ts b/src/server/api/endpoints/i.ts
index c6b89124b6..0568a962d8 100644
--- a/src/server/api/endpoints/i.ts
+++ b/src/server/api/endpoints/i.ts
@@ -1,5 +1,5 @@
import define from '../define';
-import { Users } from '../../../models';
+import { Users } from '@/models/index';
export const meta = {
tags: ['account'],
diff --git a/src/server/api/endpoints/i/2fa/done.ts b/src/server/api/endpoints/i/2fa/done.ts
index 9a74d7675b..2bd2128cce 100644
--- a/src/server/api/endpoints/i/2fa/done.ts
+++ b/src/server/api/endpoints/i/2fa/done.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import * as speakeasy from 'speakeasy';
import define from '../../../define';
-import { UserProfiles } from '../../../../../models';
+import { UserProfiles } from '@/models/index';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/2fa/key-done.ts b/src/server/api/endpoints/i/2fa/key-done.ts
index 923a8b386c..b4d3af235a 100644
--- a/src/server/api/endpoints/i/2fa/key-done.ts
+++ b/src/server/api/endpoints/i/2fa/key-done.ts
@@ -8,10 +8,10 @@ import {
UserSecurityKeys,
AttestationChallenges,
Users
-} from '../../../../../models';
-import config from '@/config';
+} from '@/models/index';
+import config from '@/config/index';
import { procedures, hash } from '../../../2fa';
-import { publishMainStream } from '../../../../../services/stream';
+import { publishMainStream } from '@/services/stream';
const cborDecodeFirst = promisify(cbor.decodeFirst) as any;
diff --git a/src/server/api/endpoints/i/2fa/password-less.ts b/src/server/api/endpoints/i/2fa/password-less.ts
index ee0a065e43..064828b638 100644
--- a/src/server/api/endpoints/i/2fa/password-less.ts
+++ b/src/server/api/endpoints/i/2fa/password-less.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../../define';
-import { UserProfiles } from '../../../../../models';
+import { UserProfiles } from '@/models/index';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/2fa/register-key.ts b/src/server/api/endpoints/i/2fa/register-key.ts
index 75f578fc5f..1b385a10ee 100644
--- a/src/server/api/endpoints/i/2fa/register-key.ts
+++ b/src/server/api/endpoints/i/2fa/register-key.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import * as bcrypt from 'bcryptjs';
import define from '../../../define';
-import { UserProfiles, AttestationChallenges } from '../../../../../models';
+import { UserProfiles, AttestationChallenges } from '@/models/index';
import { promisify } from 'util';
import * as crypto from 'crypto';
import { genId } from '@/misc/gen-id';
diff --git a/src/server/api/endpoints/i/2fa/register.ts b/src/server/api/endpoints/i/2fa/register.ts
index d40997d6ed..b03b98188a 100644
--- a/src/server/api/endpoints/i/2fa/register.ts
+++ b/src/server/api/endpoints/i/2fa/register.ts
@@ -2,9 +2,9 @@ import $ from 'cafy';
import * as bcrypt from 'bcryptjs';
import * as speakeasy from 'speakeasy';
import * as QRCode from 'qrcode';
-import config from '@/config';
+import config from '@/config/index';
import define from '../../../define';
-import { UserProfiles } from '../../../../../models';
+import { UserProfiles } from '@/models/index';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/2fa/remove-key.ts b/src/server/api/endpoints/i/2fa/remove-key.ts
index 135f0eb284..dea56301ab 100644
--- a/src/server/api/endpoints/i/2fa/remove-key.ts
+++ b/src/server/api/endpoints/i/2fa/remove-key.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
import * as bcrypt from 'bcryptjs';
import define from '../../../define';
-import { UserProfiles, UserSecurityKeys, Users } from '../../../../../models';
-import { publishMainStream } from '../../../../../services/stream';
+import { UserProfiles, UserSecurityKeys, Users } from '@/models/index';
+import { publishMainStream } from '@/services/stream';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/2fa/unregister.ts b/src/server/api/endpoints/i/2fa/unregister.ts
index e809f40c71..af53033daa 100644
--- a/src/server/api/endpoints/i/2fa/unregister.ts
+++ b/src/server/api/endpoints/i/2fa/unregister.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import * as bcrypt from 'bcryptjs';
import define from '../../../define';
-import { UserProfiles } from '../../../../../models';
+import { UserProfiles } from '@/models/index';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/apps.ts b/src/server/api/endpoints/i/apps.ts
index 69958f1ca4..994528e5c9 100644
--- a/src/server/api/endpoints/i/apps.ts
+++ b/src/server/api/endpoints/i/apps.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../define';
-import { AccessTokens } from '../../../../models';
+import { AccessTokens } from '@/models/index';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/authorized-apps.ts b/src/server/api/endpoints/i/authorized-apps.ts
index 050d079d9b..042fcd14e8 100644
--- a/src/server/api/endpoints/i/authorized-apps.ts
+++ b/src/server/api/endpoints/i/authorized-apps.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../define';
-import { AccessTokens, Apps } from '../../../../models';
+import { AccessTokens, Apps } from '@/models/index';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/change-password.ts b/src/server/api/endpoints/i/change-password.ts
index 0a8b86e665..7ea5f8c488 100644
--- a/src/server/api/endpoints/i/change-password.ts
+++ b/src/server/api/endpoints/i/change-password.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import * as bcrypt from 'bcryptjs';
import define from '../../define';
-import { UserProfiles } from '../../../../models';
+import { UserProfiles } from '@/models/index';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/delete-account.ts b/src/server/api/endpoints/i/delete-account.ts
index f5f0f32a4a..f761e5cc34 100644
--- a/src/server/api/endpoints/i/delete-account.ts
+++ b/src/server/api/endpoints/i/delete-account.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
import * as bcrypt from 'bcryptjs';
import define from '../../define';
-import { Users, UserProfiles } from '../../../../models';
-import { doPostSuspend } from '../../../../services/suspend-user';
+import { Users, UserProfiles } from '@/models/index';
+import { doPostSuspend } from '@/services/suspend-user';
import { publishUserEvent } from '@/services/stream';
export const meta = {
diff --git a/src/server/api/endpoints/i/export-blocking.ts b/src/server/api/endpoints/i/export-blocking.ts
index 87cf7655b0..e4797da0c1 100644
--- a/src/server/api/endpoints/i/export-blocking.ts
+++ b/src/server/api/endpoints/i/export-blocking.ts
@@ -1,6 +1,6 @@
import define from '../../define';
-import { createExportBlockingJob } from '../../../../queue';
-import ms = require('ms');
+import { createExportBlockingJob } from '@/queue/index';
+import * as ms from 'ms';
export const meta = {
secure: true,
diff --git a/src/server/api/endpoints/i/export-following.ts b/src/server/api/endpoints/i/export-following.ts
index 9afc96a24a..b0f154cda8 100644
--- a/src/server/api/endpoints/i/export-following.ts
+++ b/src/server/api/endpoints/i/export-following.ts
@@ -1,6 +1,6 @@
import define from '../../define';
-import { createExportFollowingJob } from '../../../../queue';
-import ms = require('ms');
+import { createExportFollowingJob } from '@/queue/index';
+import * as ms from 'ms';
export const meta = {
secure: true,
diff --git a/src/server/api/endpoints/i/export-mute.ts b/src/server/api/endpoints/i/export-mute.ts
index 7bb24f8f84..46d547fa53 100644
--- a/src/server/api/endpoints/i/export-mute.ts
+++ b/src/server/api/endpoints/i/export-mute.ts
@@ -1,6 +1,6 @@
import define from '../../define';
-import { createExportMuteJob } from '../../../../queue';
-import ms = require('ms');
+import { createExportMuteJob } from '@/queue/index';
+import * as ms from 'ms';
export const meta = {
secure: true,
diff --git a/src/server/api/endpoints/i/export-notes.ts b/src/server/api/endpoints/i/export-notes.ts
index 368a340512..441bf16896 100644
--- a/src/server/api/endpoints/i/export-notes.ts
+++ b/src/server/api/endpoints/i/export-notes.ts
@@ -1,6 +1,6 @@
import define from '../../define';
-import { createExportNotesJob } from '../../../../queue';
-import ms = require('ms');
+import { createExportNotesJob } from '@/queue/index';
+import * as ms from 'ms';
export const meta = {
secure: true,
diff --git a/src/server/api/endpoints/i/export-user-lists.ts b/src/server/api/endpoints/i/export-user-lists.ts
index e1de59f321..24043a862a 100644
--- a/src/server/api/endpoints/i/export-user-lists.ts
+++ b/src/server/api/endpoints/i/export-user-lists.ts
@@ -1,6 +1,6 @@
import define from '../../define';
-import { createExportUserListsJob } from '../../../../queue';
-import ms = require('ms');
+import { createExportUserListsJob } from '@/queue/index';
+import * as ms from 'ms';
export const meta = {
secure: true,
diff --git a/src/server/api/endpoints/i/favorites.ts b/src/server/api/endpoints/i/favorites.ts
index eb97e8bab6..b79d68ae73 100644
--- a/src/server/api/endpoints/i/favorites.ts
+++ b/src/server/api/endpoints/i/favorites.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { NoteFavorites } from '../../../../models';
+import { NoteFavorites } from '@/models/index';
import { makePaginationQuery } from '../../common/make-pagination-query';
export const meta = {
diff --git a/src/server/api/endpoints/i/gallery/likes.ts b/src/server/api/endpoints/i/gallery/likes.ts
index e569261fa6..7a2935a5ec 100644
--- a/src/server/api/endpoints/i/gallery/likes.ts
+++ b/src/server/api/endpoints/i/gallery/likes.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
-import { GalleryLikes } from '../../../../../models';
+import { GalleryLikes } from '@/models/index';
import { makePaginationQuery } from '../../../common/make-pagination-query';
export const meta = {
diff --git a/src/server/api/endpoints/i/gallery/posts.ts b/src/server/api/endpoints/i/gallery/posts.ts
index d7c2e96c16..21bb8759fc 100644
--- a/src/server/api/endpoints/i/gallery/posts.ts
+++ b/src/server/api/endpoints/i/gallery/posts.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
-import { GalleryPosts } from '../../../../../models';
+import { GalleryPosts } from '@/models/index';
import { makePaginationQuery } from '../../../common/make-pagination-query';
export const meta = {
diff --git a/src/server/api/endpoints/i/get-word-muted-notes-count.ts b/src/server/api/endpoints/i/get-word-muted-notes-count.ts
index a69ebc286a..6b9be98582 100644
--- a/src/server/api/endpoints/i/get-word-muted-notes-count.ts
+++ b/src/server/api/endpoints/i/get-word-muted-notes-count.ts
@@ -1,5 +1,5 @@
import define from '../../define';
-import { MutedNotes } from '../../../../models';
+import { MutedNotes } from '@/models/index';
export const meta = {
tags: ['account'],
diff --git a/src/server/api/endpoints/i/import-following.ts b/src/server/api/endpoints/i/import-following.ts
index 0349551073..b3de397661 100644
--- a/src/server/api/endpoints/i/import-following.ts
+++ b/src/server/api/endpoints/i/import-following.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { createImportFollowingJob } from '../../../../queue';
-import ms = require('ms');
+import { createImportFollowingJob } from '@/queue/index';
+import * as ms from 'ms';
import { ApiError } from '../../error';
-import { DriveFiles } from '../../../../models';
+import { DriveFiles } from '@/models/index';
export const meta = {
secure: true,
diff --git a/src/server/api/endpoints/i/import-user-lists.ts b/src/server/api/endpoints/i/import-user-lists.ts
index f40eb2745d..9069a019a9 100644
--- a/src/server/api/endpoints/i/import-user-lists.ts
+++ b/src/server/api/endpoints/i/import-user-lists.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { createImportUserListsJob } from '../../../../queue';
-import ms = require('ms');
+import { createImportUserListsJob } from '@/queue/index';
+import * as ms from 'ms';
import { ApiError } from '../../error';
-import { DriveFiles } from '../../../../models';
+import { DriveFiles } from '@/models/index';
export const meta = {
secure: true,
diff --git a/src/server/api/endpoints/i/notifications.ts b/src/server/api/endpoints/i/notifications.ts
index a16766c92e..3c265a10c1 100644
--- a/src/server/api/endpoints/i/notifications.ts
+++ b/src/server/api/endpoints/i/notifications.ts
@@ -3,7 +3,7 @@ import { ID } from '@/misc/cafy-id';
import { readNotification } from '../../common/read-notification';
import define from '../../define';
import { makePaginationQuery } from '../../common/make-pagination-query';
-import { Notifications, Followings, Mutings, Users } from '../../../../models';
+import { Notifications, Followings, Mutings, Users } from '@/models/index';
import { notificationTypes } from '../../../../types';
import read from '@/services/note/read';
diff --git a/src/server/api/endpoints/i/page-likes.ts b/src/server/api/endpoints/i/page-likes.ts
index bb41499694..fa2bc31730 100644
--- a/src/server/api/endpoints/i/page-likes.ts
+++ b/src/server/api/endpoints/i/page-likes.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { PageLikes } from '../../../../models';
+import { PageLikes } from '@/models/index';
import { makePaginationQuery } from '../../common/make-pagination-query';
export const meta = {
diff --git a/src/server/api/endpoints/i/pages.ts b/src/server/api/endpoints/i/pages.ts
index 981686adb0..ee87fffa2d 100644
--- a/src/server/api/endpoints/i/pages.ts
+++ b/src/server/api/endpoints/i/pages.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { Pages } from '../../../../models';
+import { Pages } from '@/models/index';
import { makePaginationQuery } from '../../common/make-pagination-query';
export const meta = {
diff --git a/src/server/api/endpoints/i/pin.ts b/src/server/api/endpoints/i/pin.ts
index e1e0658996..de94220ba9 100644
--- a/src/server/api/endpoints/i/pin.ts
+++ b/src/server/api/endpoints/i/pin.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
-import { addPinned } from '../../../../services/i/pin';
+import { addPinned } from '@/services/i/pin';
import define from '../../define';
import { ApiError } from '../../error';
-import { Users } from '../../../../models';
+import { Users } from '@/models/index';
export const meta = {
tags: ['account', 'notes'],
diff --git a/src/server/api/endpoints/i/read-all-messaging-messages.ts b/src/server/api/endpoints/i/read-all-messaging-messages.ts
index dd26a10a73..9aca7611c9 100644
--- a/src/server/api/endpoints/i/read-all-messaging-messages.ts
+++ b/src/server/api/endpoints/i/read-all-messaging-messages.ts
@@ -1,6 +1,6 @@
-import { publishMainStream } from '../../../../services/stream';
+import { publishMainStream } from '@/services/stream';
import define from '../../define';
-import { MessagingMessages, UserGroupJoinings } from '../../../../models';
+import { MessagingMessages, UserGroupJoinings } from '@/models/index';
export const meta = {
tags: ['account', 'messaging'],
diff --git a/src/server/api/endpoints/i/read-all-unread-notes.ts b/src/server/api/endpoints/i/read-all-unread-notes.ts
index 64469a2ad5..2a7102a590 100644
--- a/src/server/api/endpoints/i/read-all-unread-notes.ts
+++ b/src/server/api/endpoints/i/read-all-unread-notes.ts
@@ -1,6 +1,6 @@
-import { publishMainStream } from '../../../../services/stream';
+import { publishMainStream } from '@/services/stream';
import define from '../../define';
-import { NoteUnreads } from '../../../../models';
+import { NoteUnreads } from '@/models/index';
export const meta = {
tags: ['account'],
diff --git a/src/server/api/endpoints/i/read-announcement.ts b/src/server/api/endpoints/i/read-announcement.ts
index 0f58b823fc..2f5036f953 100644
--- a/src/server/api/endpoints/i/read-announcement.ts
+++ b/src/server/api/endpoints/i/read-announcement.ts
@@ -3,8 +3,8 @@ import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
import { genId } from '@/misc/gen-id';
-import { AnnouncementReads, Announcements, Users } from '../../../../models';
-import { publishMainStream } from '../../../../services/stream';
+import { AnnouncementReads, Announcements, Users } from '@/models/index';
+import { publishMainStream } from '@/services/stream';
export const meta = {
tags: ['account'],
diff --git a/src/server/api/endpoints/i/regenerate-token.ts b/src/server/api/endpoints/i/regenerate-token.ts
index 3665ed0532..1cce2d37be 100644
--- a/src/server/api/endpoints/i/regenerate-token.ts
+++ b/src/server/api/endpoints/i/regenerate-token.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
import * as bcrypt from 'bcryptjs';
-import { publishMainStream, publishUserEvent } from '../../../../services/stream';
+import { publishMainStream, publishUserEvent } from '@/services/stream';
import generateUserToken from '../../common/generate-native-user-token';
import define from '../../define';
-import { Users, UserProfiles } from '../../../../models';
+import { Users, UserProfiles } from '@/models/index';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/registry/get-all.ts b/src/server/api/endpoints/i/registry/get-all.ts
index ce8653f22b..c8eaf83a25 100644
--- a/src/server/api/endpoints/i/registry/get-all.ts
+++ b/src/server/api/endpoints/i/registry/get-all.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../../define';
-import { RegistryItems } from '../../../../../models';
+import { RegistryItems } from '@/models/index';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/registry/get-detail.ts b/src/server/api/endpoints/i/registry/get-detail.ts
index 441833d3d7..992800c44c 100644
--- a/src/server/api/endpoints/i/registry/get-detail.ts
+++ b/src/server/api/endpoints/i/registry/get-detail.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../../define';
-import { RegistryItems } from '../../../../../models';
+import { RegistryItems } from '@/models/index';
import { ApiError } from '../../../error';
export const meta = {
diff --git a/src/server/api/endpoints/i/registry/get.ts b/src/server/api/endpoints/i/registry/get.ts
index 275e660cb6..569c3a9280 100644
--- a/src/server/api/endpoints/i/registry/get.ts
+++ b/src/server/api/endpoints/i/registry/get.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../../define';
-import { RegistryItems } from '../../../../../models';
+import { RegistryItems } from '@/models/index';
import { ApiError } from '../../../error';
export const meta = {
diff --git a/src/server/api/endpoints/i/registry/keys-with-type.ts b/src/server/api/endpoints/i/registry/keys-with-type.ts
index 06d77acbeb..16a4fee374 100644
--- a/src/server/api/endpoints/i/registry/keys-with-type.ts
+++ b/src/server/api/endpoints/i/registry/keys-with-type.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../../define';
-import { RegistryItems } from '../../../../../models';
+import { RegistryItems } from '@/models/index';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/registry/keys.ts b/src/server/api/endpoints/i/registry/keys.ts
index e4dd5044b4..3a8aeaa195 100644
--- a/src/server/api/endpoints/i/registry/keys.ts
+++ b/src/server/api/endpoints/i/registry/keys.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../../define';
-import { RegistryItems } from '../../../../../models';
+import { RegistryItems } from '@/models/index';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/registry/remove.ts b/src/server/api/endpoints/i/registry/remove.ts
index 4f04d653b3..07bc23d4a6 100644
--- a/src/server/api/endpoints/i/registry/remove.ts
+++ b/src/server/api/endpoints/i/registry/remove.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../../define';
-import { RegistryItems } from '../../../../../models';
+import { RegistryItems } from '@/models/index';
import { ApiError } from '../../../error';
export const meta = {
diff --git a/src/server/api/endpoints/i/registry/scopes.ts b/src/server/api/endpoints/i/registry/scopes.ts
index baf3ebdeca..ecbdb05a8e 100644
--- a/src/server/api/endpoints/i/registry/scopes.ts
+++ b/src/server/api/endpoints/i/registry/scopes.ts
@@ -1,5 +1,5 @@
import define from '../../../define';
-import { RegistryItems } from '../../../../../models';
+import { RegistryItems } from '@/models/index';
export const meta = {
requireCredential: true as const,
diff --git a/src/server/api/endpoints/i/registry/set.ts b/src/server/api/endpoints/i/registry/set.ts
index 40f6368017..f129ee1b70 100644
--- a/src/server/api/endpoints/i/registry/set.ts
+++ b/src/server/api/endpoints/i/registry/set.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import { publishMainStream } from '../../../../../services/stream';
+import { publishMainStream } from '@/services/stream';
import define from '../../../define';
-import { RegistryItems } from '../../../../../models';
+import { RegistryItems } from '@/models/index';
import { genId } from '@/misc/gen-id';
export const meta = {
diff --git a/src/server/api/endpoints/i/revoke-token.ts b/src/server/api/endpoints/i/revoke-token.ts
index d22d9ca693..bed868def4 100644
--- a/src/server/api/endpoints/i/revoke-token.ts
+++ b/src/server/api/endpoints/i/revoke-token.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../define';
-import { AccessTokens } from '../../../../models';
+import { AccessTokens } from '@/models/index';
import { ID } from '@/misc/cafy-id';
import { publishUserEvent } from '@/services/stream';
diff --git a/src/server/api/endpoints/i/signin-history.ts b/src/server/api/endpoints/i/signin-history.ts
index 0395206144..a2c10148c6 100644
--- a/src/server/api/endpoints/i/signin-history.ts
+++ b/src/server/api/endpoints/i/signin-history.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { Signins } from '../../../../models';
+import { Signins } from '@/models/index';
import { makePaginationQuery } from '../../common/make-pagination-query';
export const meta = {
diff --git a/src/server/api/endpoints/i/unpin.ts b/src/server/api/endpoints/i/unpin.ts
index fe19b20905..dc79e255ab 100644
--- a/src/server/api/endpoints/i/unpin.ts
+++ b/src/server/api/endpoints/i/unpin.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
-import { removePinned } from '../../../../services/i/pin';
+import { removePinned } from '@/services/i/pin';
import define from '../../define';
import { ApiError } from '../../error';
-import { Users } from '../../../../models';
+import { Users } from '@/models/index';
export const meta = {
tags: ['account', 'notes'],
diff --git a/src/server/api/endpoints/i/update-email.ts b/src/server/api/endpoints/i/update-email.ts
index cd0e989e51..14aedad88b 100644
--- a/src/server/api/endpoints/i/update-email.ts
+++ b/src/server/api/endpoints/i/update-email.ts
@@ -1,12 +1,12 @@
import $ from 'cafy';
-import { publishMainStream } from '../../../../services/stream';
+import { publishMainStream } from '@/services/stream';
import define from '../../define';
import rndstr from 'rndstr';
-import config from '@/config';
+import config from '@/config/index';
import * as ms from 'ms';
import * as bcrypt from 'bcryptjs';
-import { Users, UserProfiles } from '../../../../models';
-import { sendEmail } from '../../../../services/send-email';
+import { Users, UserProfiles } from '@/models/index';
+import { sendEmail } from '@/services/send-email';
import { ApiError } from '../../error';
export const meta = {
diff --git a/src/server/api/endpoints/i/update.ts b/src/server/api/endpoints/i/update.ts
index 96955354a3..fb7e12760e 100644
--- a/src/server/api/endpoints/i/update.ts
+++ b/src/server/api/endpoints/i/update.ts
@@ -1,18 +1,18 @@
import $ from 'cafy';
import * as mfm from 'mfm-js';
import { ID } from '@/misc/cafy-id';
-import { publishMainStream, publishUserEvent } from '../../../../services/stream';
-import acceptAllFollowRequests from '../../../../services/following/requests/accept-all';
-import { publishToFollowers } from '../../../../services/i/update';
+import { publishMainStream, publishUserEvent } from '@/services/stream';
+import acceptAllFollowRequests from '@/services/following/requests/accept-all';
+import { publishToFollowers } from '@/services/i/update';
import define from '../../define';
import { extractCustomEmojisFromMfm } from '@/misc/extract-custom-emojis-from-mfm';
import { extractHashtags } from '@/misc/extract-hashtags';
import * as langmap from 'langmap';
-import { updateUsertags } from '../../../../services/update-hashtag';
+import { updateUsertags } from '@/services/update-hashtag';
import { ApiError } from '../../error';
-import { Users, DriveFiles, UserProfiles, Pages } from '../../../../models';
-import { User } from '../../../../models/entities/user';
-import { UserProfile } from '../../../../models/entities/user-profile';
+import { Users, DriveFiles, UserProfiles, Pages } from '@/models/index';
+import { User } from '@/models/entities/user';
+import { UserProfile } from '@/models/entities/user-profile';
import { notificationTypes } from '../../../../types';
import { normalizeForSearch } from '@/misc/normalize-for-search';
diff --git a/src/server/api/endpoints/i/user-group-invites.ts b/src/server/api/endpoints/i/user-group-invites.ts
index 623274df92..1ebde243ca 100644
--- a/src/server/api/endpoints/i/user-group-invites.ts
+++ b/src/server/api/endpoints/i/user-group-invites.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { UserGroupInvitations } from '../../../../models';
+import { UserGroupInvitations } from '@/models/index';
import { makePaginationQuery } from '../../common/make-pagination-query';
export const meta = {
diff --git a/src/server/api/endpoints/messaging/history.ts b/src/server/api/endpoints/messaging/history.ts
index 5f4f02455d..e447703546 100644
--- a/src/server/api/endpoints/messaging/history.ts
+++ b/src/server/api/endpoints/messaging/history.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../define';
-import { MessagingMessage } from '../../../../models/entities/messaging-message';
-import { MessagingMessages, Mutings, UserGroupJoinings } from '../../../../models';
+import { MessagingMessage } from '@/models/entities/messaging-message';
+import { MessagingMessages, Mutings, UserGroupJoinings } from '@/models/index';
import { Brackets } from 'typeorm';
export const meta = {
diff --git a/src/server/api/endpoints/messaging/messages.ts b/src/server/api/endpoints/messaging/messages.ts
index 087f5a7d62..6baa24609e 100644
--- a/src/server/api/endpoints/messaging/messages.ts
+++ b/src/server/api/endpoints/messaging/messages.ts
@@ -3,7 +3,7 @@ import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
import { getUser } from '../../common/getters';
-import { MessagingMessages, UserGroups, UserGroupJoinings, Users } from '../../../../models';
+import { MessagingMessages, UserGroups, UserGroupJoinings, Users } from '@/models/index';
import { makePaginationQuery } from '../../common/make-pagination-query';
import { Brackets } from 'typeorm';
import { readUserMessagingMessage, readGroupMessagingMessage, deliverReadActivity } from '../../common/read-messaging-message';
diff --git a/src/server/api/endpoints/messaging/messages/create.ts b/src/server/api/endpoints/messaging/messages/create.ts
index 1cd50145b3..df0b455cbe 100644
--- a/src/server/api/endpoints/messaging/messages/create.ts
+++ b/src/server/api/endpoints/messaging/messages/create.ts
@@ -3,10 +3,10 @@ import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
import { getUser } from '../../../common/getters';
-import { MessagingMessages, DriveFiles, UserGroups, UserGroupJoinings } from '../../../../../models';
-import { User } from '../../../../../models/entities/user';
-import { UserGroup } from '../../../../../models/entities/user-group';
-import { createMessage } from '../../../../../services/messages/create';
+import { MessagingMessages, DriveFiles, UserGroups, UserGroupJoinings, Blockings } from '@/models/index';
+import { User } from '@/models/entities/user';
+import { UserGroup } from '@/models/entities/user-group';
+import { createMessage } from '@/services/messages/create';
export const meta = {
tags: ['messaging'],
@@ -74,7 +74,13 @@ export const meta = {
message: 'Content required. You need to set text or fileId.',
code: 'CONTENT_REQUIRED',
id: '25587321-b0e6-449c-9239-f8925092942c'
- }
+ },
+
+ youHaveBeenBlocked: {
+ message: 'You cannot send a message because you have been blocked by this user.',
+ code: 'YOU_HAVE_BEEN_BLOCKED',
+ id: 'c15a5199-7422-4968-941a-2a462c478f7d'
+ },
}
};
@@ -93,6 +99,15 @@ export default define(meta, async (ps, user) => {
if (e.id === '15348ddd-432d-49c2-8a5a-8069753becff') throw new ApiError(meta.errors.noSuchUser);
throw e;
});
+
+ // Check blocking
+ const block = await Blockings.findOne({
+ blockerId: recipientUser.id,
+ blockeeId: user.id,
+ });
+ if (block) {
+ throw new ApiError(meta.errors.youHaveBeenBlocked);
+ }
} else if (ps.groupId != null) {
// Fetch recipient (group)
recipientGroup = await UserGroups.findOne(ps.groupId);
diff --git a/src/server/api/endpoints/messaging/messages/delete.ts b/src/server/api/endpoints/messaging/messages/delete.ts
index 5e5aa5fd13..bd4890fc8a 100644
--- a/src/server/api/endpoints/messaging/messages/delete.ts
+++ b/src/server/api/endpoints/messaging/messages/delete.ts
@@ -3,8 +3,8 @@ import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import * as ms from 'ms';
import { ApiError } from '../../../error';
-import { MessagingMessages } from '../../../../../models';
-import { deleteMessage } from '../../../../../services/messages/delete';
+import { MessagingMessages } from '@/models/index';
+import { deleteMessage } from '@/services/messages/delete';
export const meta = {
tags: ['messaging'],
diff --git a/src/server/api/endpoints/messaging/messages/read.ts b/src/server/api/endpoints/messaging/messages/read.ts
index b17927da3f..a1747310d3 100644
--- a/src/server/api/endpoints/messaging/messages/read.ts
+++ b/src/server/api/endpoints/messaging/messages/read.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
-import { MessagingMessages } from '../../../../../models';
+import { MessagingMessages } from '@/models/index';
import { readUserMessagingMessage, readGroupMessagingMessage } from '../../../common/read-messaging-message';
export const meta = {
diff --git a/src/server/api/endpoints/meta.ts b/src/server/api/endpoints/meta.ts
index dd75149ad2..1c87952f6a 100644
--- a/src/server/api/endpoints/meta.ts
+++ b/src/server/api/endpoints/meta.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import config from '@/config';
+import config from '@/config/index';
import define from '../define';
import { fetchMeta } from '@/misc/fetch-meta';
-import { Ads, Emojis, Users } from '../../../models';
+import { Ads, Emojis, Users } from '@/models/index';
import { DB_MAX_NOTE_TEXT_LENGTH } from '@/misc/hard-limits';
import { MoreThan } from 'typeorm';
@@ -232,6 +232,10 @@ export const meta = {
type: 'boolean' as const,
optional: false as const, nullable: false as const
},
+ translatorAvailable: {
+ type: 'boolean' as const,
+ optional: false as const, nullable: false as const
+ },
proxyAccountName: {
type: 'string' as const,
optional: false as const, nullable: true as const
@@ -512,6 +516,8 @@ export default define(meta, async (ps, me) => {
enableServiceWorker: instance.enableServiceWorker,
+ translatorAvailable: instance.deeplAuthKey != null,
+
...(ps.detail ? {
pinnedPages: instance.pinnedPages,
pinnedClipId: instance.pinnedClipId,
diff --git a/src/server/api/endpoints/miauth/gen-token.ts b/src/server/api/endpoints/miauth/gen-token.ts
index 68ef00eb28..321fa42fc9 100644
--- a/src/server/api/endpoints/miauth/gen-token.ts
+++ b/src/server/api/endpoints/miauth/gen-token.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../define';
-import { AccessTokens } from '../../../../models';
+import { AccessTokens } from '@/models/index';
import { genId } from '@/misc/gen-id';
import { secureRndstr } from '@/misc/secure-rndstr';
diff --git a/src/server/api/endpoints/mute/create.ts b/src/server/api/endpoints/mute/create.ts
index 7f018a359a..5163ed63db 100644
--- a/src/server/api/endpoints/mute/create.ts
+++ b/src/server/api/endpoints/mute/create.ts
@@ -4,9 +4,9 @@ import define from '../../define';
import { ApiError } from '../../error';
import { getUser } from '../../common/getters';
import { genId } from '@/misc/gen-id';
-import { Mutings, NoteWatchings } from '../../../../models';
-import { Muting } from '../../../../models/entities/muting';
-import { publishUserEvent } from '../../../../services/stream';
+import { Mutings, NoteWatchings } from '@/models/index';
+import { Muting } from '@/models/entities/muting';
+import { publishUserEvent } from '@/services/stream';
export const meta = {
tags: ['account'],
diff --git a/src/server/api/endpoints/mute/delete.ts b/src/server/api/endpoints/mute/delete.ts
index bfb6a95e32..3ffd1f4562 100644
--- a/src/server/api/endpoints/mute/delete.ts
+++ b/src/server/api/endpoints/mute/delete.ts
@@ -3,8 +3,8 @@ import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
import { getUser } from '../../common/getters';
-import { Mutings } from '../../../../models';
-import { publishUserEvent } from '../../../../services/stream';
+import { Mutings } from '@/models/index';
+import { publishUserEvent } from '@/services/stream';
export const meta = {
tags: ['account'],
diff --git a/src/server/api/endpoints/mute/list.ts b/src/server/api/endpoints/mute/list.ts
index 45952ec72e..ae4c3a719d 100644
--- a/src/server/api/endpoints/mute/list.ts
+++ b/src/server/api/endpoints/mute/list.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { makePaginationQuery } from '../../common/make-pagination-query';
-import { Mutings } from '../../../../models';
+import { Mutings } from '@/models/index';
export const meta = {
tags: ['account'],
diff --git a/src/server/api/endpoints/my/apps.ts b/src/server/api/endpoints/my/apps.ts
index 908e24e1ba..d91562b62f 100644
--- a/src/server/api/endpoints/my/apps.ts
+++ b/src/server/api/endpoints/my/apps.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../define';
-import { Apps } from '../../../../models';
+import { Apps } from '@/models/index';
export const meta = {
tags: ['account', 'app'],
diff --git a/src/server/api/endpoints/notes.ts b/src/server/api/endpoints/notes.ts
index fdb8bad247..a3f6e187f2 100644
--- a/src/server/api/endpoints/notes.ts
+++ b/src/server/api/endpoints/notes.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../define';
import { makePaginationQuery } from '../common/make-pagination-query';
-import { Notes } from '../../../models';
+import { Notes } from '@/models/index';
export const meta = {
tags: ['notes'],
diff --git a/src/server/api/endpoints/notes/children.ts b/src/server/api/endpoints/notes/children.ts
index adbe714bf4..68881fda9e 100644
--- a/src/server/api/endpoints/notes/children.ts
+++ b/src/server/api/endpoints/notes/children.ts
@@ -5,7 +5,8 @@ import { makePaginationQuery } from '../../common/make-pagination-query';
import { generateVisibilityQuery } from '../../common/generate-visibility-query';
import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
import { Brackets } from 'typeorm';
-import { Notes } from '../../../../models';
+import { Notes } from '@/models/index';
+import { generateBlockedUserQuery } from '../../common/generate-block-query';
export const meta = {
tags: ['notes'],
@@ -63,6 +64,7 @@ export default define(meta, async (ps, user) => {
generateVisibilityQuery(query, user);
if (user) generateMutedUserQuery(query, user);
+ if (user) generateBlockedUserQuery(query, user);
const notes = await query.take(ps.limit!).getMany();
diff --git a/src/server/api/endpoints/notes/clips.ts b/src/server/api/endpoints/notes/clips.ts
index d116370b46..6b303d87ec 100644
--- a/src/server/api/endpoints/notes/clips.ts
+++ b/src/server/api/endpoints/notes/clips.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { ClipNotes, Clips } from '../../../../models';
+import { ClipNotes, Clips } from '@/models/index';
import { getNote } from '../../common/getters';
import { ApiError } from '../../error';
import { In } from 'typeorm';
diff --git a/src/server/api/endpoints/notes/conversation.ts b/src/server/api/endpoints/notes/conversation.ts
index 0fd10df077..0fe323ea00 100644
--- a/src/server/api/endpoints/notes/conversation.ts
+++ b/src/server/api/endpoints/notes/conversation.ts
@@ -3,8 +3,8 @@ import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
import { getNote } from '../../common/getters';
-import { Note } from '../../../../models/entities/note';
-import { Notes } from '../../../../models';
+import { Note } from '@/models/entities/note';
+import { Notes } from '@/models/index';
export const meta = {
tags: ['notes'],
diff --git a/src/server/api/endpoints/notes/create.ts b/src/server/api/endpoints/notes/create.ts
index ddb5c953ec..751673f955 100644
--- a/src/server/api/endpoints/notes/create.ts
+++ b/src/server/api/endpoints/notes/create.ts
@@ -1,18 +1,18 @@
import $ from 'cafy';
import * as ms from 'ms';
import { length } from 'stringz';
-import create from '../../../../services/note/create';
+import create from '@/services/note/create';
import define from '../../define';
import { fetchMeta } from '@/misc/fetch-meta';
import { ApiError } from '../../error';
import { ID } from '@/misc/cafy-id';
-import { User } from '../../../../models/entities/user';
-import { Users, DriveFiles, Notes, Channels } from '../../../../models';
-import { DriveFile } from '../../../../models/entities/drive-file';
-import { Note } from '../../../../models/entities/note';
+import { User } from '@/models/entities/user';
+import { Users, DriveFiles, Notes, Channels, Blockings } from '@/models/index';
+import { DriveFile } from '@/models/entities/drive-file';
+import { Note } from '@/models/entities/note';
import { DB_MAX_NOTE_TEXT_LENGTH } from '@/misc/hard-limits';
import { noteVisibilities } from '../../../../types';
-import { Channel } from '../../../../models/entities/channel';
+import { Channel } from '@/models/entities/channel';
let maxNoteTextLength = 500;
@@ -171,6 +171,12 @@ export const meta = {
code: 'NO_SUCH_CHANNEL',
id: 'b1653923-5453-4edc-b786-7c4f39bb0bbb'
},
+
+ youHaveBeenBlocked: {
+ message: 'You have been blocked by this user.',
+ code: 'YOU_HAVE_BEEN_BLOCKED',
+ id: 'b390d7e1-8a5e-46ed-b625-06271cafd3d3'
+ },
}
};
@@ -202,6 +208,17 @@ export default define(meta, async (ps, user) => {
} else if (renote.renoteId && !renote.text && !renote.fileIds) {
throw new ApiError(meta.errors.cannotReRenote);
}
+
+ // Check blocking
+ if (renote.userId !== user.id) {
+ const block = await Blockings.findOne({
+ blockerId: renote.userId,
+ blockeeId: user.id,
+ });
+ if (block) {
+ throw new ApiError(meta.errors.youHaveBeenBlocked);
+ }
+ }
}
let reply: Note | undefined;
@@ -217,6 +234,17 @@ export default define(meta, async (ps, user) => {
if (reply.renoteId && !reply.text && !reply.fileIds) {
throw new ApiError(meta.errors.cannotReplyToPureRenote);
}
+
+ // Check blocking
+ if (reply.userId !== user.id) {
+ const block = await Blockings.findOne({
+ blockerId: reply.userId,
+ blockeeId: user.id,
+ });
+ if (block) {
+ throw new ApiError(meta.errors.youHaveBeenBlocked);
+ }
+ }
}
if (ps.poll) {
diff --git a/src/server/api/endpoints/notes/delete.ts b/src/server/api/endpoints/notes/delete.ts
index 6a0652312a..7163a2b9d2 100644
--- a/src/server/api/endpoints/notes/delete.ts
+++ b/src/server/api/endpoints/notes/delete.ts
@@ -1,11 +1,11 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
-import deleteNote from '../../../../services/note/delete';
+import deleteNote from '@/services/note/delete';
import define from '../../define';
import * as ms from 'ms';
import { getNote } from '../../common/getters';
import { ApiError } from '../../error';
-import { Users } from '../../../../models';
+import { Users } from '@/models/index';
export const meta = {
tags: ['notes'],
diff --git a/src/server/api/endpoints/notes/favorites/create.ts b/src/server/api/endpoints/notes/favorites/create.ts
index b77b5d48ff..1bb25edd7f 100644
--- a/src/server/api/endpoints/notes/favorites/create.ts
+++ b/src/server/api/endpoints/notes/favorites/create.ts
@@ -3,7 +3,7 @@ import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
import { getNote } from '../../../common/getters';
-import { NoteFavorites } from '../../../../../models';
+import { NoteFavorites } from '@/models/index';
import { genId } from '@/misc/gen-id';
export const meta = {
diff --git a/src/server/api/endpoints/notes/favorites/delete.ts b/src/server/api/endpoints/notes/favorites/delete.ts
index 4a1fc71a0d..75eb9a359a 100644
--- a/src/server/api/endpoints/notes/favorites/delete.ts
+++ b/src/server/api/endpoints/notes/favorites/delete.ts
@@ -3,7 +3,7 @@ import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
import { getNote } from '../../../common/getters';
-import { NoteFavorites } from '../../../../../models';
+import { NoteFavorites } from '@/models/index';
export const meta = {
tags: ['notes', 'favorites'],
diff --git a/src/server/api/endpoints/notes/featured.ts b/src/server/api/endpoints/notes/featured.ts
index 5b4367f7a3..8d33c0e73d 100644
--- a/src/server/api/endpoints/notes/featured.ts
+++ b/src/server/api/endpoints/notes/featured.ts
@@ -1,7 +1,8 @@
import $ from 'cafy';
import define from '../../define';
import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
-import { Notes } from '../../../../models';
+import { Notes } from '@/models/index';
+import { generateBlockedUserQuery } from '../../common/generate-block-query';
export const meta = {
tags: ['notes'],
@@ -48,6 +49,7 @@ export default define(meta, async (ps, user) => {
.leftJoinAndSelect('renote.user', 'renoteUser');
if (user) generateMutedUserQuery(query, user);
+ if (user) generateBlockedUserQuery(query, user);
let notes = await query
.orderBy('note.score', 'DESC')
diff --git a/src/server/api/endpoints/notes/global-timeline.ts b/src/server/api/endpoints/notes/global-timeline.ts
index 741c5985a3..5902c0415c 100644
--- a/src/server/api/endpoints/notes/global-timeline.ts
+++ b/src/server/api/endpoints/notes/global-timeline.ts
@@ -4,11 +4,12 @@ import define from '../../define';
import { fetchMeta } from '@/misc/fetch-meta';
import { ApiError } from '../../error';
import { makePaginationQuery } from '../../common/make-pagination-query';
-import { Notes } from '../../../../models';
+import { Notes } from '@/models/index';
import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
-import { activeUsersChart } from '../../../../services/chart';
+import { activeUsersChart } from '@/services/chart/index';
import { generateRepliesQuery } from '../../common/generate-replies-query';
import { generateMutedNoteQuery } from '../../common/generate-muted-note-query';
+import { generateBlockedUserQuery } from '../../common/generate-block-query';
export const meta = {
tags: ['notes'],
@@ -81,6 +82,7 @@ export default define(meta, async (ps, user) => {
generateRepliesQuery(query, user);
if (user) generateMutedUserQuery(query, user);
if (user) generateMutedNoteQuery(query, user);
+ if (user) generateBlockedUserQuery(query, user);
if (ps.withFiles) {
query.andWhere('note.fileIds != \'{}\'');
diff --git a/src/server/api/endpoints/notes/hybrid-timeline.ts b/src/server/api/endpoints/notes/hybrid-timeline.ts
index 23fc5a6068..47f08f208b 100644
--- a/src/server/api/endpoints/notes/hybrid-timeline.ts
+++ b/src/server/api/endpoints/notes/hybrid-timeline.ts
@@ -4,14 +4,15 @@ import define from '../../define';
import { fetchMeta } from '@/misc/fetch-meta';
import { ApiError } from '../../error';
import { makePaginationQuery } from '../../common/make-pagination-query';
-import { Followings, Notes } from '../../../../models';
+import { Followings, Notes } from '@/models/index';
import { Brackets } from 'typeorm';
import { generateVisibilityQuery } from '../../common/generate-visibility-query';
import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
-import { activeUsersChart } from '../../../../services/chart';
+import { activeUsersChart } from '@/services/chart/index';
import { generateRepliesQuery } from '../../common/generate-replies-query';
import { generateMutedNoteQuery } from '../../common/generate-muted-note-query';
import { generateChannelQuery } from '../../common/generate-channel-query';
+import { generateBlockedUserQuery } from '../../common/generate-block-query';
export const meta = {
tags: ['notes'],
@@ -108,6 +109,7 @@ export default define(meta, async (ps, user) => {
generateVisibilityQuery(query, user);
generateMutedUserQuery(query, user);
generateMutedNoteQuery(query, user);
+ generateBlockedUserQuery(query, user);
if (ps.includeMyRenotes === false) {
query.andWhere(new Brackets(qb => {
diff --git a/src/server/api/endpoints/notes/local-timeline.ts b/src/server/api/endpoints/notes/local-timeline.ts
index 523fbee9a8..f670d478bf 100644
--- a/src/server/api/endpoints/notes/local-timeline.ts
+++ b/src/server/api/endpoints/notes/local-timeline.ts
@@ -3,15 +3,16 @@ import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { fetchMeta } from '@/misc/fetch-meta';
import { ApiError } from '../../error';
-import { Notes } from '../../../../models';
+import { Notes } from '@/models/index';
import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
import { makePaginationQuery } from '../../common/make-pagination-query';
import { generateVisibilityQuery } from '../../common/generate-visibility-query';
-import { activeUsersChart } from '../../../../services/chart';
+import { activeUsersChart } from '@/services/chart/index';
import { Brackets } from 'typeorm';
import { generateRepliesQuery } from '../../common/generate-replies-query';
import { generateMutedNoteQuery } from '../../common/generate-muted-note-query';
import { generateChannelQuery } from '../../common/generate-channel-query';
+import { generateBlockedUserQuery } from '../../common/generate-block-query';
export const meta = {
tags: ['notes'],
@@ -94,6 +95,7 @@ export default define(meta, async (ps, user) => {
generateVisibilityQuery(query, user);
if (user) generateMutedUserQuery(query, user);
if (user) generateMutedNoteQuery(query, user);
+ if (user) generateBlockedUserQuery(query, user);
if (ps.withFiles) {
query.andWhere('note.fileIds != \'{}\'');
diff --git a/src/server/api/endpoints/notes/mentions.ts b/src/server/api/endpoints/notes/mentions.ts
index e1e916c586..74f7911bfe 100644
--- a/src/server/api/endpoints/notes/mentions.ts
+++ b/src/server/api/endpoints/notes/mentions.ts
@@ -1,12 +1,13 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import read from '../../../../services/note/read';
-import { Notes, Followings } from '../../../../models';
+import read from '@/services/note/read';
+import { Notes, Followings } from '@/models/index';
import { generateVisibilityQuery } from '../../common/generate-visibility-query';
import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
import { makePaginationQuery } from '../../common/make-pagination-query';
import { Brackets } from 'typeorm';
+import { generateBlockedUserQuery } from '../../common/generate-block-query';
export const meta = {
tags: ['notes'],
@@ -66,6 +67,7 @@ export default define(meta, async (ps, user) => {
generateVisibilityQuery(query, user);
generateMutedUserQuery(query, user);
+ generateBlockedUserQuery(query, user);
if (ps.visibility) {
query.andWhere('note.visibility = :visibility', { visibility: ps.visibility });
diff --git a/src/server/api/endpoints/notes/polls/recommendation.ts b/src/server/api/endpoints/notes/polls/recommendation.ts
index af8a527398..0763f0c8fd 100644
--- a/src/server/api/endpoints/notes/polls/recommendation.ts
+++ b/src/server/api/endpoints/notes/polls/recommendation.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../../define';
-import { Polls, Mutings, Notes, PollVotes } from '../../../../../models';
+import { Polls, Mutings, Notes, PollVotes } from '@/models/index';
import { Brackets, In } from 'typeorm';
export const meta = {
diff --git a/src/server/api/endpoints/notes/polls/vote.ts b/src/server/api/endpoints/notes/polls/vote.ts
index b40e187fd8..f670501385 100644
--- a/src/server/api/endpoints/notes/polls/vote.ts
+++ b/src/server/api/endpoints/notes/polls/vote.ts
@@ -1,17 +1,17 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
-import { publishNoteStream } from '../../../../../services/stream';
-import { createNotification } from '../../../../../services/create-notification';
+import { publishNoteStream } from '@/services/stream';
+import { createNotification } from '@/services/create-notification';
import define from '../../../define';
import { ApiError } from '../../../error';
import { getNote } from '../../../common/getters';
-import { deliver } from '../../../../../queue';
-import { renderActivity } from '../../../../../remote/activitypub/renderer';
-import renderVote from '../../../../../remote/activitypub/renderer/vote';
-import { deliverQuestionUpdate } from '../../../../../services/note/polls/update';
-import { PollVotes, NoteWatchings, Users, Polls } from '../../../../../models';
+import { deliver } from '@/queue/index';
+import { renderActivity } from '@/remote/activitypub/renderer/index';
+import renderVote from '@/remote/activitypub/renderer/vote';
+import { deliverQuestionUpdate } from '@/services/note/polls/update';
+import { PollVotes, NoteWatchings, Users, Polls, Blockings } from '@/models/index';
import { Not } from 'typeorm';
-import { IRemoteUser } from '../../../../../models/entities/user';
+import { IRemoteUser } from '@/models/entities/user';
import { genId } from '@/misc/gen-id';
export const meta = {
@@ -61,6 +61,12 @@ export const meta = {
code: 'ALREADY_EXPIRED',
id: '1022a357-b085-4054-9083-8f8de358337e'
},
+
+ youHaveBeenBlocked: {
+ message: 'You cannot vote this poll because you have been blocked by this user.',
+ code: 'YOU_HAVE_BEEN_BLOCKED',
+ id: '85a5377e-b1e9-4617-b0b9-5bea73331e49'
+ },
}
};
@@ -77,6 +83,17 @@ export default define(meta, async (ps, user) => {
throw new ApiError(meta.errors.noPoll);
}
+ // Check blocking
+ if (note.userId !== user.id) {
+ const block = await Blockings.findOne({
+ blockerId: note.userId,
+ blockeeId: user.id,
+ });
+ if (block) {
+ throw new ApiError(meta.errors.youHaveBeenBlocked);
+ }
+ }
+
const poll = await Polls.findOneOrFail({ noteId: note.id });
if (poll.expiresAt && poll.expiresAt < createdAt) {
@@ -103,13 +120,13 @@ export default define(meta, async (ps, user) => {
}
// Create vote
- const vote = await PollVotes.save({
+ const vote = await PollVotes.insert({
id: genId(),
createdAt,
noteId: note.id,
userId: user.id,
choice: ps.choice
- });
+ }).then(x => PollVotes.findOneOrFail(x.identifiers[0]));
// Increment votes count
const index = ps.choice + 1; // In SQL, array index is 1 based
diff --git a/src/server/api/endpoints/notes/reactions.ts b/src/server/api/endpoints/notes/reactions.ts
index df780bfa06..09dd6b600b 100644
--- a/src/server/api/endpoints/notes/reactions.ts
+++ b/src/server/api/endpoints/notes/reactions.ts
@@ -3,9 +3,9 @@ import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { getNote } from '../../common/getters';
import { ApiError } from '../../error';
-import { NoteReactions } from '../../../../models';
+import { NoteReactions } from '@/models/index';
import { DeepPartial } from 'typeorm';
-import { NoteReaction } from '../../../../models/entities/note-reaction';
+import { NoteReaction } from '@/models/entities/note-reaction';
export const meta = {
tags: ['notes', 'reactions'],
diff --git a/src/server/api/endpoints/notes/reactions/create.ts b/src/server/api/endpoints/notes/reactions/create.ts
index e8533fee56..24a73a8d4f 100644
--- a/src/server/api/endpoints/notes/reactions/create.ts
+++ b/src/server/api/endpoints/notes/reactions/create.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
-import createReaction from '../../../../../services/note/reaction/create';
+import createReaction from '@/services/note/reaction/create';
import define from '../../../define';
import { getNote } from '../../../common/getters';
import { ApiError } from '../../../error';
@@ -33,7 +33,13 @@ export const meta = {
message: 'You are already reacting to that note.',
code: 'ALREADY_REACTED',
id: '71efcf98-86d6-4e2b-b2ad-9d032369366b'
- }
+ },
+
+ youHaveBeenBlocked: {
+ message: 'You cannot react this note because you have been blocked by this user.',
+ code: 'YOU_HAVE_BEEN_BLOCKED',
+ id: '20ef5475-9f38-4e4c-bd33-de6d979498ec'
+ },
}
};
@@ -44,6 +50,7 @@ export default define(meta, async (ps, user) => {
});
await createReaction(user, note, ps.reaction).catch(e => {
if (e.id === '51c42bb4-931a-456b-bff7-e5a8a70dd298') throw new ApiError(meta.errors.alreadyReacted);
+ if (e.id === 'e70412a4-7197-4726-8e74-f3e0deb92aa7') throw new ApiError(meta.errors.youHaveBeenBlocked);
throw e;
});
return;
diff --git a/src/server/api/endpoints/notes/reactions/delete.ts b/src/server/api/endpoints/notes/reactions/delete.ts
index b18cb533d6..69550f96de 100644
--- a/src/server/api/endpoints/notes/reactions/delete.ts
+++ b/src/server/api/endpoints/notes/reactions/delete.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import * as ms from 'ms';
-import deleteReaction from '../../../../../services/note/reaction/delete';
+import deleteReaction from '@/services/note/reaction/delete';
import { getNote } from '../../../common/getters';
import { ApiError } from '../../../error';
diff --git a/src/server/api/endpoints/notes/renotes.ts b/src/server/api/endpoints/notes/renotes.ts
index d384b7962f..26bfc1657d 100644
--- a/src/server/api/endpoints/notes/renotes.ts
+++ b/src/server/api/endpoints/notes/renotes.ts
@@ -6,7 +6,8 @@ import { ApiError } from '../../error';
import { generateVisibilityQuery } from '../../common/generate-visibility-query';
import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
import { makePaginationQuery } from '../../common/make-pagination-query';
-import { Notes } from '../../../../models';
+import { Notes } from '@/models/index';
+import { generateBlockedUserQuery } from '../../common/generate-block-query';
export const meta = {
tags: ['notes'],
@@ -67,6 +68,7 @@ export default define(meta, async (ps, user) => {
generateVisibilityQuery(query, user);
if (user) generateMutedUserQuery(query, user);
+ if (user) generateBlockedUserQuery(query, user);
const renotes = await query.take(ps.limit!).getMany();
diff --git a/src/server/api/endpoints/notes/replies.ts b/src/server/api/endpoints/notes/replies.ts
index 79a983e75f..0bb62413ae 100644
--- a/src/server/api/endpoints/notes/replies.ts
+++ b/src/server/api/endpoints/notes/replies.ts
@@ -1,10 +1,11 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { Notes } from '../../../../models';
+import { Notes } from '@/models/index';
import { makePaginationQuery } from '../../common/make-pagination-query';
import { generateVisibilityQuery } from '../../common/generate-visibility-query';
import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
+import { generateBlockedUserQuery } from '../../common/generate-block-query';
export const meta = {
tags: ['notes'],
@@ -52,6 +53,7 @@ export default define(meta, async (ps, user) => {
generateVisibilityQuery(query, user);
if (user) generateMutedUserQuery(query, user);
+ if (user) generateBlockedUserQuery(query, user);
const timeline = await query.take(ps.limit!).getMany();
diff --git a/src/server/api/endpoints/notes/search-by-tag.ts b/src/server/api/endpoints/notes/search-by-tag.ts
index bbada17613..40e1499736 100644
--- a/src/server/api/endpoints/notes/search-by-tag.ts
+++ b/src/server/api/endpoints/notes/search-by-tag.ts
@@ -2,12 +2,13 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { makePaginationQuery } from '../../common/make-pagination-query';
-import { Notes } from '../../../../models';
+import { Notes } from '@/models/index';
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 { generateBlockedUserQuery } from '../../common/generate-block-query';
export const meta = {
tags: ['notes', 'hashtags'],
@@ -75,6 +76,7 @@ export default define(meta, async (ps, me) => {
generateVisibilityQuery(query, me);
if (me) generateMutedUserQuery(query, me);
+ if (me) generateBlockedUserQuery(query, me);
try {
if (ps.tag) {
diff --git a/src/server/api/endpoints/notes/search.ts b/src/server/api/endpoints/notes/search.ts
index dc411283a2..eb832a6b31 100644
--- a/src/server/api/endpoints/notes/search.ts
+++ b/src/server/api/endpoints/notes/search.ts
@@ -1,13 +1,14 @@
import $ from 'cafy';
import es from '../../../../db/elasticsearch';
import define from '../../define';
-import { Notes } from '../../../../models';
+import { Notes } from '@/models/index';
import { In } from 'typeorm';
import { ID } from '@/misc/cafy-id';
-import config from '@/config';
+import config from '@/config/index';
import { makePaginationQuery } from '../../common/make-pagination-query';
import { generateVisibilityQuery } from '../../common/generate-visibility-query';
import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
+import { generateBlockedUserQuery } from '../../common/generate-block-query';
export const meta = {
tags: ['notes'],
@@ -82,6 +83,7 @@ export default define(meta, async (ps, me) => {
generateVisibilityQuery(query, me);
if (me) generateMutedUserQuery(query, me);
+ if (me) generateBlockedUserQuery(query, me);
const notes = await query.take(ps.limit!).getMany();
diff --git a/src/server/api/endpoints/notes/show.ts b/src/server/api/endpoints/notes/show.ts
index fc8e30788d..fad63d6483 100644
--- a/src/server/api/endpoints/notes/show.ts
+++ b/src/server/api/endpoints/notes/show.ts
@@ -3,7 +3,7 @@ import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { getNote } from '../../common/getters';
import { ApiError } from '../../error';
-import { Notes } from '../../../../models';
+import { Notes } from '@/models/index';
export const meta = {
tags: ['notes'],
diff --git a/src/server/api/endpoints/notes/state.ts b/src/server/api/endpoints/notes/state.ts
index 8af09f07dd..489902435d 100644
--- a/src/server/api/endpoints/notes/state.ts
+++ b/src/server/api/endpoints/notes/state.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { NoteFavorites, NoteWatchings } from '../../../../models';
+import { NoteFavorites, NoteWatchings } from '@/models/index';
export const meta = {
tags: ['notes'],
diff --git a/src/server/api/endpoints/notes/timeline.ts b/src/server/api/endpoints/notes/timeline.ts
index 687869a63d..1bd0e57d34 100644
--- a/src/server/api/endpoints/notes/timeline.ts
+++ b/src/server/api/endpoints/notes/timeline.ts
@@ -2,14 +2,15 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { makePaginationQuery } from '../../common/make-pagination-query';
-import { Notes, Followings } from '../../../../models';
+import { Notes, Followings } from '@/models/index';
import { generateVisibilityQuery } from '../../common/generate-visibility-query';
import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
-import { activeUsersChart } from '../../../../services/chart';
+import { activeUsersChart } from '@/services/chart/index';
import { Brackets } from 'typeorm';
import { generateRepliesQuery } from '../../common/generate-replies-query';
import { generateMutedNoteQuery } from '../../common/generate-muted-note-query';
import { generateChannelQuery } from '../../common/generate-channel-query';
+import { generateBlockedUserQuery } from '../../common/generate-block-query';
export const meta = {
tags: ['notes'],
@@ -100,6 +101,7 @@ export default define(meta, async (ps, user) => {
generateVisibilityQuery(query, user);
generateMutedUserQuery(query, user);
generateMutedNoteQuery(query, user);
+ generateBlockedUserQuery(query, user);
if (ps.includeMyRenotes === false) {
query.andWhere(new Brackets(qb => {
diff --git a/src/server/api/endpoints/notes/translate.ts b/src/server/api/endpoints/notes/translate.ts
new file mode 100644
index 0000000000..a5fdf70ce6
--- /dev/null
+++ b/src/server/api/endpoints/notes/translate.ts
@@ -0,0 +1,82 @@
+import $ from 'cafy';
+import { ID } from '@/misc/cafy-id';
+import define from '../../define';
+import { getNote } from '../../common/getters';
+import { ApiError } from '../../error';
+import fetch from 'node-fetch';
+import config from '@/config/index';
+import { getAgentByUrl } from '@/misc/fetch';
+import { URLSearchParams } from 'url';
+import { fetchMeta } from '@/misc/fetch-meta';
+
+export const meta = {
+ tags: ['notes'],
+
+ requireCredential: false as const,
+
+ params: {
+ noteId: {
+ validator: $.type(ID),
+ },
+ targetLang: {
+ validator: $.str,
+ },
+ },
+
+ res: {
+ type: 'object' as const,
+ optional: false as const, nullable: false as const,
+ },
+
+ errors: {
+ noSuchNote: {
+ message: 'No such note.',
+ code: 'NO_SUCH_NOTE',
+ id: 'bea9b03f-36e0-49c5-a4db-627a029f8971'
+ }
+ }
+};
+
+export default define(meta, async (ps, user) => {
+ const note = await getNote(ps.noteId).catch(e => {
+ if (e.id === '9725d0ce-ba28-4dde-95a7-2cbb2c15de24') throw new ApiError(meta.errors.noSuchNote);
+ throw e;
+ });
+
+ if (note.text == null) {
+ return 204;
+ }
+
+ const instance = await fetchMeta();
+
+ if (instance.deeplAuthKey == null) {
+ return 204; // TODO: 良い感じのエラー返す
+ }
+
+ let targetLang = ps.targetLang;
+ if (targetLang.includes('-')) targetLang = targetLang.split('-')[0];
+
+ const params = new URLSearchParams();
+ params.append('auth_key', instance.deeplAuthKey);
+ params.append('text', note.text);
+ params.append('target_lang', targetLang);
+
+ const res = await fetch('https://api-free.deepl.com/v2/translate', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded',
+ 'User-Agent': config.userAgent,
+ Accept: 'application/json, */*'
+ },
+ body: params,
+ timeout: 10000,
+ agent: getAgentByUrl,
+ });
+
+ const json = await res.json();
+
+ return {
+ sourceLang: json.translations[0].detected_source_language,
+ text: json.translations[0].text
+ };
+});
diff --git a/src/server/api/endpoints/notes/unrenote.ts b/src/server/api/endpoints/notes/unrenote.ts
index 5e016f293f..dce43d9d9c 100644
--- a/src/server/api/endpoints/notes/unrenote.ts
+++ b/src/server/api/endpoints/notes/unrenote.ts
@@ -1,11 +1,11 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
-import deleteNote from '../../../../services/note/delete';
+import 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, Users } from '../../../../models';
+import { Notes, Users } from '@/models/index';
export const meta = {
tags: ['notes'],
diff --git a/src/server/api/endpoints/notes/user-list-timeline.ts b/src/server/api/endpoints/notes/user-list-timeline.ts
index e160fff25a..32c370004c 100644
--- a/src/server/api/endpoints/notes/user-list-timeline.ts
+++ b/src/server/api/endpoints/notes/user-list-timeline.ts
@@ -2,10 +2,10 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
-import { UserLists, UserListJoinings, Notes } from '../../../../models';
+import { UserLists, UserListJoinings, Notes } from '@/models/index';
import { makePaginationQuery } from '../../common/make-pagination-query';
import { generateVisibilityQuery } from '../../common/generate-visibility-query';
-import { activeUsersChart } from '../../../../services/chart';
+import { activeUsersChart } from '@/services/chart/index';
import { Brackets } from 'typeorm';
export const meta = {
diff --git a/src/server/api/endpoints/notes/watching/create.ts b/src/server/api/endpoints/notes/watching/create.ts
index 74d31fe1a3..4d182d3715 100644
--- a/src/server/api/endpoints/notes/watching/create.ts
+++ b/src/server/api/endpoints/notes/watching/create.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
-import watch from '../../../../../services/note/watch';
+import watch from '@/services/note/watch';
import { getNote } from '../../../common/getters';
import { ApiError } from '../../../error';
diff --git a/src/server/api/endpoints/notes/watching/delete.ts b/src/server/api/endpoints/notes/watching/delete.ts
index a91d72be05..dd58c52b57 100644
--- a/src/server/api/endpoints/notes/watching/delete.ts
+++ b/src/server/api/endpoints/notes/watching/delete.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
-import unwatch from '../../../../../services/note/unwatch';
+import unwatch from '@/services/note/unwatch';
import { getNote } from '../../../common/getters';
import { ApiError } from '../../../error';
diff --git a/src/server/api/endpoints/notifications/create.ts b/src/server/api/endpoints/notifications/create.ts
index 6267699e90..8003c497ee 100644
--- a/src/server/api/endpoints/notifications/create.ts
+++ b/src/server/api/endpoints/notifications/create.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../define';
-import { createNotification } from '../../../../services/create-notification';
+import { createNotification } from '@/services/create-notification';
export const meta = {
tags: ['notifications'],
diff --git a/src/server/api/endpoints/notifications/mark-all-as-read.ts b/src/server/api/endpoints/notifications/mark-all-as-read.ts
index cce54587c7..8d4e512750 100644
--- a/src/server/api/endpoints/notifications/mark-all-as-read.ts
+++ b/src/server/api/endpoints/notifications/mark-all-as-read.ts
@@ -1,6 +1,6 @@
-import { publishMainStream } from '../../../../services/stream';
+import { publishMainStream } from '@/services/stream';
import define from '../../define';
-import { Notifications } from '../../../../models';
+import { Notifications } from '@/models/index';
export const meta = {
tags: ['notifications', 'account'],
diff --git a/src/server/api/endpoints/page-push.ts b/src/server/api/endpoints/page-push.ts
index 9ec9f9184c..a0412e89f1 100644
--- a/src/server/api/endpoints/page-push.ts
+++ b/src/server/api/endpoints/page-push.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
import define from '../define';
import { ID } from '@/misc/cafy-id';
-import { publishMainStream } from '../../../services/stream';
-import { Users, Pages } from '../../../models';
+import { publishMainStream } from '@/services/stream';
+import { Users, Pages } from '@/models/index';
import { ApiError } from '../error';
export const meta = {
diff --git a/src/server/api/endpoints/pages/create.ts b/src/server/api/endpoints/pages/create.ts
index 07e0969bdd..c23978f093 100644
--- a/src/server/api/endpoints/pages/create.ts
+++ b/src/server/api/endpoints/pages/create.ts
@@ -2,9 +2,9 @@ import $ from 'cafy';
import * as ms from 'ms';
import define from '../../define';
import { ID } from '@/misc/cafy-id';
-import { Pages, DriveFiles } from '../../../../models';
+import { Pages, DriveFiles } from '@/models/index';
import { genId } from '@/misc/gen-id';
-import { Page } from '../../../../models/entities/page';
+import { Page } from '@/models/entities/page';
import { ApiError } from '../../error';
export const meta = {
diff --git a/src/server/api/endpoints/pages/delete.ts b/src/server/api/endpoints/pages/delete.ts
index 12a3360e43..b1f8c8a709 100644
--- a/src/server/api/endpoints/pages/delete.ts
+++ b/src/server/api/endpoints/pages/delete.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../define';
import { ApiError } from '../../error';
-import { Pages } from '../../../../models';
+import { Pages } from '@/models/index';
import { ID } from '@/misc/cafy-id';
export const meta = {
diff --git a/src/server/api/endpoints/pages/featured.ts b/src/server/api/endpoints/pages/featured.ts
index 19802d0448..f891c45f05 100644
--- a/src/server/api/endpoints/pages/featured.ts
+++ b/src/server/api/endpoints/pages/featured.ts
@@ -1,5 +1,5 @@
import define from '../../define';
-import { Pages } from '../../../../models';
+import { Pages } from '@/models/index';
export const meta = {
tags: ['pages'],
diff --git a/src/server/api/endpoints/pages/like.ts b/src/server/api/endpoints/pages/like.ts
index bed8e975ec..a95a377802 100644
--- a/src/server/api/endpoints/pages/like.ts
+++ b/src/server/api/endpoints/pages/like.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
-import { Pages, PageLikes } from '../../../../models';
+import { Pages, PageLikes } from '@/models/index';
import { genId } from '@/misc/gen-id';
export const meta = {
diff --git a/src/server/api/endpoints/pages/show.ts b/src/server/api/endpoints/pages/show.ts
index d4d04bccff..7c55d4a9e6 100644
--- a/src/server/api/endpoints/pages/show.ts
+++ b/src/server/api/endpoints/pages/show.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
import define from '../../define';
import { ApiError } from '../../error';
-import { Pages, Users } from '../../../../models';
+import { Pages, Users } from '@/models/index';
import { ID } from '@/misc/cafy-id';
-import { Page } from '../../../../models/entities/page';
+import { Page } from '@/models/entities/page';
export const meta = {
tags: ['pages'],
diff --git a/src/server/api/endpoints/pages/unlike.ts b/src/server/api/endpoints/pages/unlike.ts
index a5e22a2c7b..facf2d6d5f 100644
--- a/src/server/api/endpoints/pages/unlike.ts
+++ b/src/server/api/endpoints/pages/unlike.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
-import { Pages, PageLikes } from '../../../../models';
+import { Pages, PageLikes } from '@/models/index';
export const meta = {
tags: ['pages'],
diff --git a/src/server/api/endpoints/pages/update.ts b/src/server/api/endpoints/pages/update.ts
index 6d1ae4c6fe..b3a7f26963 100644
--- a/src/server/api/endpoints/pages/update.ts
+++ b/src/server/api/endpoints/pages/update.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import * as ms from 'ms';
import define from '../../define';
import { ApiError } from '../../error';
-import { Pages, DriveFiles } from '../../../../models';
+import { Pages, DriveFiles } from '@/models/index';
import { ID } from '@/misc/cafy-id';
import { Not } from 'typeorm';
diff --git a/src/server/api/endpoints/pinned-users.ts b/src/server/api/endpoints/pinned-users.ts
index bcef072fed..e88dfbd535 100644
--- a/src/server/api/endpoints/pinned-users.ts
+++ b/src/server/api/endpoints/pinned-users.ts
@@ -1,8 +1,8 @@
import define from '../define';
-import { Users } from '../../../models';
+import { Users } from '@/models/index';
import { fetchMeta } from '@/misc/fetch-meta';
import { parseAcct } from '@/misc/acct';
-import { User } from '../../../models/entities/user';
+import { User } from '@/models/entities/user';
export const meta = {
tags: ['users'],
diff --git a/src/server/api/endpoints/promo/read.ts b/src/server/api/endpoints/promo/read.ts
index 32b543295d..ae57bf9cf1 100644
--- a/src/server/api/endpoints/promo/read.ts
+++ b/src/server/api/endpoints/promo/read.ts
@@ -3,7 +3,7 @@ import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
import { getNote } from '../../common/getters';
-import { PromoReads } from '../../../../models';
+import { PromoReads } from '@/models/index';
import { genId } from '@/misc/gen-id';
export const meta = {
diff --git a/src/server/api/endpoints/request-reset-password.ts b/src/server/api/endpoints/request-reset-password.ts
index c880df7527..f9928c2ee6 100644
--- a/src/server/api/endpoints/request-reset-password.ts
+++ b/src/server/api/endpoints/request-reset-password.ts
@@ -1,11 +1,11 @@
import $ from 'cafy';
-import { publishMainStream } from '../../../services/stream';
+import { publishMainStream } from '@/services/stream';
import define from '../define';
import rndstr from 'rndstr';
-import config from '@/config';
+import config from '@/config/index';
import * as ms from 'ms';
-import { Users, UserProfiles, PasswordResetRequests } from '../../../models';
-import { sendEmail } from '../../../services/send-email';
+import { Users, UserProfiles, PasswordResetRequests } from '@/models/index';
+import { sendEmail } from '@/services/send-email';
import { ApiError } from '../error';
import { genId } from '@/misc/gen-id';
import { IsNull } from 'typeorm';
diff --git a/src/server/api/endpoints/reset-db.ts b/src/server/api/endpoints/reset-db.ts
new file mode 100644
index 0000000000..f430869302
--- /dev/null
+++ b/src/server/api/endpoints/reset-db.ts
@@ -0,0 +1,21 @@
+import $ from 'cafy';
+import define from '../define';
+import { ApiError } from '../error';
+import { resetDb } from '@/db/postgre';
+
+export const meta = {
+ requireCredential: false as const,
+
+ params: {
+ },
+
+ errors: {
+
+ }
+};
+
+export default define(meta, async (ps, user) => {
+ if (process.env.NODE_ENV !== 'test') throw 'NODE_ENV is not a test';
+
+ await resetDb();
+});
diff --git a/src/server/api/endpoints/reset-password.ts b/src/server/api/endpoints/reset-password.ts
index 5f79bdbd00..53b0bfde0b 100644
--- a/src/server/api/endpoints/reset-password.ts
+++ b/src/server/api/endpoints/reset-password.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
import * as bcrypt from 'bcryptjs';
-import { publishMainStream } from '../../../services/stream';
+import { publishMainStream } from '@/services/stream';
import define from '../define';
-import { Users, UserProfiles, PasswordResetRequests } from '../../../models';
+import { Users, UserProfiles, PasswordResetRequests } from '@/models/index';
import { ApiError } from '../error';
export const meta = {
diff --git a/src/server/api/endpoints/room/show.ts b/src/server/api/endpoints/room/show.ts
index 85cd57aef4..a6461d4a6e 100644
--- a/src/server/api/endpoints/room/show.ts
+++ b/src/server/api/endpoints/room/show.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../define';
import { ApiError } from '../../error';
-import { Users, UserProfiles } from '../../../../models';
+import { Users, UserProfiles } from '@/models/index';
import { ID } from '@/misc/cafy-id';
import { toPunyNullable } from '@/misc/convert-host';
diff --git a/src/server/api/endpoints/room/update.ts b/src/server/api/endpoints/room/update.ts
index af8b80be9a..8c4cfbdea6 100644
--- a/src/server/api/endpoints/room/update.ts
+++ b/src/server/api/endpoints/room/update.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
-import { publishMainStream } from '../../../../services/stream';
+import { publishMainStream } from '@/services/stream';
import define from '../../define';
-import { Users, UserProfiles } from '../../../../models';
+import { Users, UserProfiles } from '@/models/index';
export const meta = {
tags: ['room'],
diff --git a/src/server/api/endpoints/stats.ts b/src/server/api/endpoints/stats.ts
index f9c17f86eb..15c8001742 100644
--- a/src/server/api/endpoints/stats.ts
+++ b/src/server/api/endpoints/stats.ts
@@ -1,6 +1,6 @@
import define from '../define';
-import { NoteReactions, Notes, Users } from '../../../models';
-import { federationChart, driveChart } from '../../../services/chart';
+import { NoteReactions, Notes, Users } from '@/models/index';
+import { federationChart, driveChart } from '@/services/chart/index';
export const meta = {
requireCredential: false as const,
diff --git a/src/server/api/endpoints/sw/register.ts b/src/server/api/endpoints/sw/register.ts
index 43d4118df6..6e14ba2669 100644
--- a/src/server/api/endpoints/sw/register.ts
+++ b/src/server/api/endpoints/sw/register.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import define from '../../define';
import { fetchMeta } from '@/misc/fetch-meta';
import { genId } from '@/misc/gen-id';
-import { SwSubscriptions } from '../../../../models';
+import { SwSubscriptions } from '@/models/index';
export const meta = {
tags: ['account'],
diff --git a/src/server/api/endpoints/username/available.ts b/src/server/api/endpoints/username/available.ts
index cd434b582e..1ae75448ea 100644
--- a/src/server/api/endpoints/username/available.ts
+++ b/src/server/api/endpoints/username/available.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../define';
-import { Users, UsedUsernames } from '../../../../models';
+import { Users, UsedUsernames } from '@/models/index';
export const meta = {
tags: ['users'],
diff --git a/src/server/api/endpoints/users.ts b/src/server/api/endpoints/users.ts
index 933eb70b6f..130ae30244 100644
--- a/src/server/api/endpoints/users.ts
+++ b/src/server/api/endpoints/users.ts
@@ -1,7 +1,8 @@
import $ from 'cafy';
import define from '../define';
-import { Users } from '../../../models';
+import { Users } from '@/models/index';
import { generateMutedUserQueryForUsers } from '../common/generate-muted-user-query';
+import { generateBlockedUserQuery } from '../common/generate-block-query';
export const meta = {
tags: ['users'],
@@ -89,6 +90,7 @@ export default define(meta, async (ps, me) => {
}
if (me) generateMutedUserQueryForUsers(query, me);
+ if (me) generateBlockedUserQuery(query, me);
query.take(ps.limit!);
query.skip(ps.offset);
diff --git a/src/server/api/endpoints/users/clips.ts b/src/server/api/endpoints/users/clips.ts
index 12aa964034..8feca9422a 100644
--- a/src/server/api/endpoints/users/clips.ts
+++ b/src/server/api/endpoints/users/clips.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { Clips } from '../../../../models';
+import { Clips } from '@/models/index';
import { makePaginationQuery } from '../../common/make-pagination-query';
export const meta = {
diff --git a/src/server/api/endpoints/users/followers.ts b/src/server/api/endpoints/users/followers.ts
index c9fe36e4e4..e54b6078ee 100644
--- a/src/server/api/endpoints/users/followers.ts
+++ b/src/server/api/endpoints/users/followers.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
-import { Users, Followings } from '../../../../models';
+import { Users, Followings } from '@/models/index';
import { makePaginationQuery } from '../../common/make-pagination-query';
import { toPunyNullable } from '@/misc/convert-host';
diff --git a/src/server/api/endpoints/users/following.ts b/src/server/api/endpoints/users/following.ts
index c3dd90ff7e..f2ef7f47e1 100644
--- a/src/server/api/endpoints/users/following.ts
+++ b/src/server/api/endpoints/users/following.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
import { ApiError } from '../../error';
-import { Users, Followings } from '../../../../models';
+import { Users, Followings } from '@/models/index';
import { makePaginationQuery } from '../../common/make-pagination-query';
import { toPunyNullable } from '@/misc/convert-host';
diff --git a/src/server/api/endpoints/users/gallery/posts.ts b/src/server/api/endpoints/users/gallery/posts.ts
index 1da6bced5c..845de1089c 100644
--- a/src/server/api/endpoints/users/gallery/posts.ts
+++ b/src/server/api/endpoints/users/gallery/posts.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
-import { GalleryPosts } from '../../../../../models';
+import { GalleryPosts } from '@/models/index';
import { makePaginationQuery } from '../../../common/make-pagination-query';
export const meta = {
diff --git a/src/server/api/endpoints/users/get-frequently-replied-users.ts b/src/server/api/endpoints/users/get-frequently-replied-users.ts
index bdfb7772ae..32ebfd683a 100644
--- a/src/server/api/endpoints/users/get-frequently-replied-users.ts
+++ b/src/server/api/endpoints/users/get-frequently-replied-users.ts
@@ -1,11 +1,11 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { maximum } from '../../../../prelude/array';
+import { maximum } from '@/prelude/array';
import { ApiError } from '../../error';
import { getUser } from '../../common/getters';
import { Not, In, IsNull } from 'typeorm';
-import { Notes, Users } from '../../../../models';
+import { Notes, Users } from '@/models/index';
export const meta = {
tags: ['users'],
diff --git a/src/server/api/endpoints/users/groups/create.ts b/src/server/api/endpoints/users/groups/create.ts
index 2cd0653baa..dc1ee3879e 100644
--- a/src/server/api/endpoints/users/groups/create.ts
+++ b/src/server/api/endpoints/users/groups/create.ts
@@ -1,9 +1,9 @@
import $ from 'cafy';
import define from '../../../define';
-import { UserGroups, UserGroupJoinings } from '../../../../../models';
+import { UserGroups, UserGroupJoinings } from '@/models/index';
import { genId } from '@/misc/gen-id';
-import { UserGroup } from '../../../../../models/entities/user-group';
-import { UserGroupJoining } from '../../../../../models/entities/user-group-joining';
+import { UserGroup } from '@/models/entities/user-group';
+import { UserGroupJoining } from '@/models/entities/user-group-joining';
export const meta = {
tags: ['groups'],
diff --git a/src/server/api/endpoints/users/groups/delete.ts b/src/server/api/endpoints/users/groups/delete.ts
index 4c4a8c15b1..7da1b4a273 100644
--- a/src/server/api/endpoints/users/groups/delete.ts
+++ b/src/server/api/endpoints/users/groups/delete.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
-import { UserGroups } from '../../../../../models';
+import { UserGroups } from '@/models/index';
export const meta = {
tags: ['groups'],
diff --git a/src/server/api/endpoints/users/groups/invitations/accept.ts b/src/server/api/endpoints/users/groups/invitations/accept.ts
index 943d158661..09e6ae2647 100644
--- a/src/server/api/endpoints/users/groups/invitations/accept.ts
+++ b/src/server/api/endpoints/users/groups/invitations/accept.ts
@@ -2,9 +2,9 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../../define';
import { ApiError } from '../../../../error';
-import { UserGroupJoinings, UserGroupInvitations } from '../../../../../../models';
+import { UserGroupJoinings, UserGroupInvitations } from '@/models/index';
import { genId } from '@/misc/gen-id';
-import { UserGroupJoining } from '../../../../../../models/entities/user-group-joining';
+import { UserGroupJoining } from '@/models/entities/user-group-joining';
export const meta = {
tags: ['groups', 'users'],
diff --git a/src/server/api/endpoints/users/groups/invitations/reject.ts b/src/server/api/endpoints/users/groups/invitations/reject.ts
index 4bc902ae5d..741fcefb35 100644
--- a/src/server/api/endpoints/users/groups/invitations/reject.ts
+++ b/src/server/api/endpoints/users/groups/invitations/reject.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../../define';
import { ApiError } from '../../../../error';
-import { UserGroupInvitations } from '../../../../../../models';
+import { UserGroupInvitations } from '@/models/index';
export const meta = {
tags: ['groups', 'users'],
diff --git a/src/server/api/endpoints/users/groups/invite.ts b/src/server/api/endpoints/users/groups/invite.ts
index 688b18f69d..f1ee8bf8b7 100644
--- a/src/server/api/endpoints/users/groups/invite.ts
+++ b/src/server/api/endpoints/users/groups/invite.ts
@@ -3,10 +3,10 @@ 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 { UserGroups, UserGroupJoinings, UserGroupInvitations } from '@/models/index';
import { genId } from '@/misc/gen-id';
-import { UserGroupInvitation } from '../../../../../models/entities/user-group-invitation';
-import { createNotification } from '../../../../../services/create-notification';
+import { UserGroupInvitation } from '@/models/entities/user-group-invitation';
+import { createNotification } from '@/services/create-notification';
export const meta = {
tags: ['groups', 'users'],
diff --git a/src/server/api/endpoints/users/groups/joined.ts b/src/server/api/endpoints/users/groups/joined.ts
index b25341c854..d5e8fe4032 100644
--- a/src/server/api/endpoints/users/groups/joined.ts
+++ b/src/server/api/endpoints/users/groups/joined.ts
@@ -1,5 +1,5 @@
import define from '../../../define';
-import { UserGroups, UserGroupJoinings } from '../../../../../models';
+import { UserGroups, UserGroupJoinings } from '@/models/index';
import { Not, In } from 'typeorm';
export const meta = {
diff --git a/src/server/api/endpoints/users/groups/owned.ts b/src/server/api/endpoints/users/groups/owned.ts
index e0b003c9e4..17de370dbc 100644
--- a/src/server/api/endpoints/users/groups/owned.ts
+++ b/src/server/api/endpoints/users/groups/owned.ts
@@ -1,5 +1,5 @@
import define from '../../../define';
-import { UserGroups } from '../../../../../models';
+import { UserGroups } from '@/models/index';
export const meta = {
tags: ['groups', 'account'],
diff --git a/src/server/api/endpoints/users/groups/pull.ts b/src/server/api/endpoints/users/groups/pull.ts
index d93a16bd9d..ce4d2e2881 100644
--- a/src/server/api/endpoints/users/groups/pull.ts
+++ b/src/server/api/endpoints/users/groups/pull.ts
@@ -3,7 +3,7 @@ import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
import { getUser } from '../../../common/getters';
-import { UserGroups, UserGroupJoinings } from '../../../../../models';
+import { UserGroups, UserGroupJoinings } from '@/models/index';
export const meta = {
tags: ['groups', 'users'],
diff --git a/src/server/api/endpoints/users/groups/show.ts b/src/server/api/endpoints/users/groups/show.ts
index 1b71933c20..3c030bf3a5 100644
--- a/src/server/api/endpoints/users/groups/show.ts
+++ b/src/server/api/endpoints/users/groups/show.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
-import { UserGroups, UserGroupJoinings } from '../../../../../models';
+import { UserGroups, UserGroupJoinings } from '@/models/index';
export const meta = {
tags: ['groups', 'account'],
diff --git a/src/server/api/endpoints/users/groups/transfer.ts b/src/server/api/endpoints/users/groups/transfer.ts
index d6376993c9..17c42e1127 100644
--- a/src/server/api/endpoints/users/groups/transfer.ts
+++ b/src/server/api/endpoints/users/groups/transfer.ts
@@ -3,7 +3,7 @@ import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
import { getUser } from '../../../common/getters';
-import { UserGroups, UserGroupJoinings } from '../../../../../models';
+import { UserGroups, UserGroupJoinings } from '@/models/index';
export const meta = {
tags: ['groups', 'users'],
diff --git a/src/server/api/endpoints/users/groups/update.ts b/src/server/api/endpoints/users/groups/update.ts
index a403152b4e..127bbc47a1 100644
--- a/src/server/api/endpoints/users/groups/update.ts
+++ b/src/server/api/endpoints/users/groups/update.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
-import { UserGroups } from '../../../../../models';
+import { UserGroups } from '@/models/index';
export const meta = {
tags: ['groups'],
diff --git a/src/server/api/endpoints/users/lists/create.ts b/src/server/api/endpoints/users/lists/create.ts
index c524130089..e0bfe611fc 100644
--- a/src/server/api/endpoints/users/lists/create.ts
+++ b/src/server/api/endpoints/users/lists/create.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
import define from '../../../define';
-import { UserLists } from '../../../../../models';
+import { UserLists } from '@/models/index';
import { genId } from '@/misc/gen-id';
-import { UserList } from '../../../../../models/entities/user-list';
+import { UserList } from '@/models/entities/user-list';
export const meta = {
tags: ['lists'],
diff --git a/src/server/api/endpoints/users/lists/delete.ts b/src/server/api/endpoints/users/lists/delete.ts
index ecae5641c5..5fe3bfb03d 100644
--- a/src/server/api/endpoints/users/lists/delete.ts
+++ b/src/server/api/endpoints/users/lists/delete.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
-import { UserLists } from '../../../../../models';
+import { UserLists } from '@/models/index';
export const meta = {
tags: ['lists'],
diff --git a/src/server/api/endpoints/users/lists/list.ts b/src/server/api/endpoints/users/lists/list.ts
index 1548208714..cf0c92bb84 100644
--- a/src/server/api/endpoints/users/lists/list.ts
+++ b/src/server/api/endpoints/users/lists/list.ts
@@ -1,5 +1,5 @@
import define from '../../../define';
-import { UserLists } from '../../../../../models';
+import { UserLists } from '@/models/index';
export const meta = {
tags: ['lists', 'account'],
diff --git a/src/server/api/endpoints/users/lists/pull.ts b/src/server/api/endpoints/users/lists/pull.ts
index f8b5df0fc5..d4357fc5e7 100644
--- a/src/server/api/endpoints/users/lists/pull.ts
+++ b/src/server/api/endpoints/users/lists/pull.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
-import { publishUserListStream } from '../../../../../services/stream';
+import { publishUserListStream } from '@/services/stream';
import define from '../../../define';
import { ApiError } from '../../../error';
import { getUser } from '../../../common/getters';
-import { UserLists, UserListJoinings, Users } from '../../../../../models';
+import { UserLists, UserListJoinings, Users } from '@/models/index';
export const meta = {
tags: ['lists', 'users'],
diff --git a/src/server/api/endpoints/users/lists/push.ts b/src/server/api/endpoints/users/lists/push.ts
index b81d5b8c76..8e21059d3d 100644
--- a/src/server/api/endpoints/users/lists/push.ts
+++ b/src/server/api/endpoints/users/lists/push.ts
@@ -3,8 +3,8 @@ import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
import { getUser } from '../../../common/getters';
-import { pushUserToUserList } from '../../../../../services/user-list/push';
-import { UserLists, UserListJoinings } from '../../../../../models';
+import { pushUserToUserList } from '@/services/user-list/push';
+import { UserLists, UserListJoinings, Blockings } from '@/models/index';
export const meta = {
tags: ['lists', 'users'],
@@ -40,7 +40,13 @@ export const meta = {
message: 'That user has already been added to that list.',
code: 'ALREADY_ADDED',
id: '1de7c884-1595-49e9-857e-61f12f4d4fc5'
- }
+ },
+
+ youHaveBeenBlocked: {
+ message: 'You cannot push this user because you have been blocked by this user.',
+ code: 'YOU_HAVE_BEEN_BLOCKED',
+ id: '990232c5-3f9d-4d83-9f3f-ef27b6332a4b'
+ },
}
};
@@ -61,6 +67,17 @@ export default define(meta, async (ps, me) => {
throw e;
});
+ // Check blocking
+ if (user.id !== me.id) {
+ const block = await Blockings.findOne({
+ blockerId: user.id,
+ blockeeId: me.id,
+ });
+ if (block) {
+ throw new ApiError(meta.errors.youHaveBeenBlocked);
+ }
+ }
+
const exist = await UserListJoinings.findOne({
userListId: userList.id,
userId: user.id
diff --git a/src/server/api/endpoints/users/lists/show.ts b/src/server/api/endpoints/users/lists/show.ts
index ff9ed001f7..f9a35cdab3 100644
--- a/src/server/api/endpoints/users/lists/show.ts
+++ b/src/server/api/endpoints/users/lists/show.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
-import { UserLists } from '../../../../../models';
+import { UserLists } from '@/models/index';
export const meta = {
tags: ['lists', 'account'],
diff --git a/src/server/api/endpoints/users/lists/update.ts b/src/server/api/endpoints/users/lists/update.ts
index eaa420a5b9..1185af5043 100644
--- a/src/server/api/endpoints/users/lists/update.ts
+++ b/src/server/api/endpoints/users/lists/update.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../../define';
import { ApiError } from '../../../error';
-import { UserLists } from '../../../../../models';
+import { UserLists } from '@/models/index';
export const meta = {
tags: ['lists'],
diff --git a/src/server/api/endpoints/users/notes.ts b/src/server/api/endpoints/users/notes.ts
index 55f07e390b..0afbad9d04 100644
--- a/src/server/api/endpoints/users/notes.ts
+++ b/src/server/api/endpoints/users/notes.ts
@@ -5,9 +5,10 @@ import { ApiError } from '../../error';
import { getUser } from '../../common/getters';
import { makePaginationQuery } from '../../common/make-pagination-query';
import { generateVisibilityQuery } from '../../common/generate-visibility-query';
-import { Notes } from '../../../../models';
+import { Notes } from '@/models/index';
import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
import { Brackets } from 'typeorm';
+import { generateBlockedUserQuery } from '../../common/generate-block-query';
export const meta = {
tags: ['users', 'notes'],
@@ -100,6 +101,7 @@ export default define(meta, async (ps, me) => {
generateVisibilityQuery(query, me);
if (me) generateMutedUserQuery(query, me, user);
+ if (me) generateBlockedUserQuery(query, me);
if (ps.withFiles) {
query.andWhere('note.fileIds != \'{}\'');
diff --git a/src/server/api/endpoints/users/pages.ts b/src/server/api/endpoints/users/pages.ts
index b9f37f3210..24e9e207fd 100644
--- a/src/server/api/endpoints/users/pages.ts
+++ b/src/server/api/endpoints/users/pages.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { Pages } from '../../../../models';
+import { Pages } from '@/models/index';
import { makePaginationQuery } from '../../common/make-pagination-query';
export const meta = {
diff --git a/src/server/api/endpoints/users/recommendation.ts b/src/server/api/endpoints/users/recommendation.ts
index 7c269268bf..dde6bb1037 100644
--- a/src/server/api/endpoints/users/recommendation.ts
+++ b/src/server/api/endpoints/users/recommendation.ts
@@ -1,9 +1,9 @@
import * as ms from 'ms';
import $ from 'cafy';
import define from '../../define';
-import { Users, Followings } from '../../../../models';
+import { Users, Followings } from '@/models/index';
import { generateMutedUserQueryForUsers } from '../../common/generate-muted-user-query';
-import { generateBlockQueryForUsers } from '../../common/generate-block-query';
+import { generateBlockedUserQuery, generateBlockQueryForUsers } from '../../common/generate-block-query';
export const meta = {
tags: ['users'],
@@ -46,6 +46,7 @@ export default define(meta, async (ps, me) => {
generateMutedUserQueryForUsers(query, me);
generateBlockQueryForUsers(query, me);
+ generateBlockedUserQuery(query, me);
const followingQuery = Followings.createQueryBuilder('following')
.select('following.followeeId')
diff --git a/src/server/api/endpoints/users/relation.ts b/src/server/api/endpoints/users/relation.ts
index 18ec5d44b3..32d76a5322 100644
--- a/src/server/api/endpoints/users/relation.ts
+++ b/src/server/api/endpoints/users/relation.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../define';
import { ID } from '@/misc/cafy-id';
-import { Users } from '../../../../models';
+import { Users } from '@/models/index';
export const meta = {
tags: ['users'],
diff --git a/src/server/api/endpoints/users/report-abuse.ts b/src/server/api/endpoints/users/report-abuse.ts
index 776d683700..2c8672cd47 100644
--- a/src/server/api/endpoints/users/report-abuse.ts
+++ b/src/server/api/endpoints/users/report-abuse.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
import { ID } from '@/misc/cafy-id';
import define from '../../define';
-import { publishAdminStream } from '../../../../services/stream';
+import { publishAdminStream } from '@/services/stream';
import { ApiError } from '../../error';
import { getUser } from '../../common/getters';
-import { AbuseUserReports, Users } from '../../../../models';
+import { AbuseUserReports, Users } from '@/models/index';
import { genId } from '@/misc/gen-id';
export const meta = {
diff --git a/src/server/api/endpoints/users/search-by-username-and-host.ts b/src/server/api/endpoints/users/search-by-username-and-host.ts
index 13c5a18dbe..b9fbf48fb2 100644
--- a/src/server/api/endpoints/users/search-by-username-and-host.ts
+++ b/src/server/api/endpoints/users/search-by-username-and-host.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../define';
-import { Users } from '../../../../models';
+import { Users } from '@/models/index';
export const meta = {
tags: ['users'],
diff --git a/src/server/api/endpoints/users/search.ts b/src/server/api/endpoints/users/search.ts
index c183194c41..8011d90b3d 100644
--- a/src/server/api/endpoints/users/search.ts
+++ b/src/server/api/endpoints/users/search.ts
@@ -1,7 +1,7 @@
import $ from 'cafy';
import define from '../../define';
-import { UserProfiles, Users } from '../../../../models';
-import { User } from '../../../../models/entities/user';
+import { UserProfiles, Users } from '@/models/index';
+import { User } from '@/models/entities/user';
export const meta = {
tags: ['users'],
diff --git a/src/server/api/endpoints/users/show.ts b/src/server/api/endpoints/users/show.ts
index fde2b5a14d..f056983636 100644
--- a/src/server/api/endpoints/users/show.ts
+++ b/src/server/api/endpoints/users/show.ts
@@ -1,10 +1,10 @@
import $ from 'cafy';
-import { resolveUser } from '../../../../remote/resolve-user';
+import { resolveUser } from '@/remote/resolve-user';
import define from '../../define';
import { apiLogger } from '../../logger';
import { ApiError } from '../../error';
import { ID } from '@/misc/cafy-id';
-import { Users } from '../../../../models';
+import { Users } from '@/models/index';
import { In } from 'typeorm';
import { User } from '@/models/entities/user';
diff --git a/src/server/api/endpoints/users/stats.ts b/src/server/api/endpoints/users/stats.ts
index 6763c1774e..ef8afd5625 100644
--- a/src/server/api/endpoints/users/stats.ts
+++ b/src/server/api/endpoints/users/stats.ts
@@ -2,7 +2,7 @@ import $ from 'cafy';
import define from '../../define';
import { ApiError } from '../../error';
import { ID } from '@/misc/cafy-id';
-import { DriveFiles, Followings, NoteFavorites, NoteReactions, Notes, PageLikes, PollVotes, ReversiGames, Users } from '../../../../models';
+import { DriveFiles, Followings, NoteFavorites, NoteReactions, Notes, PageLikes, PollVotes, ReversiGames, Users } from '@/models/index';
export const meta = {
tags: ['users'],
diff --git a/src/server/api/index.ts b/src/server/api/index.ts
index aec4a97379..55083261ee 100644
--- a/src/server/api/index.ts
+++ b/src/server/api/index.ts
@@ -15,7 +15,7 @@ import signin from './private/signin';
import discord from './service/discord';
import github from './service/github';
import twitter from './service/twitter';
-import { Instances, AccessTokens, Users } from '../../models';
+import { Instances, AccessTokens, Users } from '@/models/index';
// Init app
const app = new Koa();
diff --git a/src/server/api/limiter.ts b/src/server/api/limiter.ts
index 540ca24994..e677aad0b6 100644
--- a/src/server/api/limiter.ts
+++ b/src/server/api/limiter.ts
@@ -2,8 +2,8 @@ import * as Limiter from 'ratelimiter';
import { redisClient } from '../../db/redis';
import { IEndpoint } from './endpoints';
import { getAcct } from '@/misc/acct';
-import { User } from '../../models/entities/user';
-import Logger from '../../services/logger';
+import { User } from '@/models/entities/user';
+import Logger from '@/services/logger';
const logger = new Logger('limiter');
diff --git a/src/server/api/logger.ts b/src/server/api/logger.ts
index dde4b0d5fc..750defe547 100644
--- a/src/server/api/logger.ts
+++ b/src/server/api/logger.ts
@@ -1,3 +1,3 @@
-import Logger from '../../services/logger';
+import Logger from '@/services/logger';
export const apiLogger = new Logger('api');
diff --git a/src/server/api/openapi/description.ts b/src/server/api/openapi/description.ts
index 6306920b7a..e51b312259 100644
--- a/src/server/api/openapi/description.ts
+++ b/src/server/api/openapi/description.ts
@@ -1,5 +1,5 @@
import endpoints from '../endpoints';
-import * as locale from '../../../../locales/';
+import * as locale from '../../../../locales/index';
import { kinds as kindsList } from '@/misc/api-permissions';
export interface IKindInfo {
diff --git a/src/server/api/openapi/gen-spec.ts b/src/server/api/openapi/gen-spec.ts
index adac3bda2c..9db47c6dfc 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/index';
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 ee2773fe47..5402dc6f48 100644
--- a/src/server/api/openapi/schemas.ts
+++ b/src/server/api/openapi/schemas.ts
@@ -1,25 +1,25 @@
-import { packedUserSchema } from '../../../models/repositories/user';
+import { packedUserSchema } from '@/models/repositories/user';
import { Schema } from '@/misc/schema';
-import { packedNoteSchema } from '../../../models/repositories/note';
-import { packedUserListSchema } from '../../../models/repositories/user-list';
-import { packedAppSchema } from '../../../models/repositories/app';
-import { packedMessagingMessageSchema } from '../../../models/repositories/messaging-message';
-import { packedNotificationSchema } from '../../../models/repositories/notification';
-import { packedDriveFileSchema } from '../../../models/repositories/drive-file';
-import { packedDriveFolderSchema } from '../../../models/repositories/drive-folder';
-import { packedFollowingSchema } from '../../../models/repositories/following';
-import { packedMutingSchema } from '../../../models/repositories/muting';
-import { packedBlockingSchema } from '../../../models/repositories/blocking';
-import { packedNoteReactionSchema } from '../../../models/repositories/note-reaction';
-import { packedHashtagSchema } from '../../../models/repositories/hashtag';
-import { packedPageSchema } from '../../../models/repositories/page';
-import { packedUserGroupSchema } from '../../../models/repositories/user-group';
-import { packedNoteFavoriteSchema } from '../../../models/repositories/note-favorite';
-import { packedChannelSchema } from '../../../models/repositories/channel';
-import { packedAntennaSchema } from '../../../models/repositories/antenna';
-import { packedClipSchema } from '../../../models/repositories/clip';
-import { packedFederationInstanceSchema } from '../../../models/repositories/federation-instance';
-import { packedQueueCountSchema } from '../../../models/repositories/queue';
+import { packedNoteSchema } from '@/models/repositories/note';
+import { packedUserListSchema } from '@/models/repositories/user-list';
+import { packedAppSchema } from '@/models/repositories/app';
+import { packedMessagingMessageSchema } from '@/models/repositories/messaging-message';
+import { packedNotificationSchema } from '@/models/repositories/notification';
+import { packedDriveFileSchema } from '@/models/repositories/drive-file';
+import { packedDriveFolderSchema } from '@/models/repositories/drive-folder';
+import { packedFollowingSchema } from '@/models/repositories/following';
+import { packedMutingSchema } from '@/models/repositories/muting';
+import { packedBlockingSchema } from '@/models/repositories/blocking';
+import { packedNoteReactionSchema } from '@/models/repositories/note-reaction';
+import { packedHashtagSchema } from '@/models/repositories/hashtag';
+import { packedPageSchema } from '@/models/repositories/page';
+import { packedUserGroupSchema } from '@/models/repositories/user-group';
+import { packedNoteFavoriteSchema } from '@/models/repositories/note-favorite';
+import { packedChannelSchema } from '@/models/repositories/channel';
+import { packedAntennaSchema } from '@/models/repositories/antenna';
+import { packedClipSchema } from '@/models/repositories/clip';
+import { packedFederationInstanceSchema } from '@/models/repositories/federation-instance';
+import { packedQueueCountSchema } from '@/models/repositories/queue';
import { packedGalleryPostSchema } from '@/models/repositories/gallery-post';
export function convertSchemaToOpenApiSchema(schema: Schema) {
diff --git a/src/server/api/private/signin.ts b/src/server/api/private/signin.ts
index c01c1f265a..fff1037ff9 100644
--- a/src/server/api/private/signin.ts
+++ b/src/server/api/private/signin.ts
@@ -2,9 +2,9 @@ import * as Koa from 'koa';
import * as bcrypt from 'bcryptjs';
import * as speakeasy from 'speakeasy';
import signin from '../common/signin';
-import config from '@/config';
-import { Users, Signins, UserProfiles, UserSecurityKeys, AttestationChallenges } from '../../../models';
-import { ILocalUser } from '../../../models/entities/user';
+import config from '@/config/index';
+import { Users, Signins, UserProfiles, UserSecurityKeys, AttestationChallenges } from '@/models/index';
+import { ILocalUser } from '@/models/entities/user';
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 f0cf75797a..ef61767f65 100644
--- a/src/server/api/private/signup.ts
+++ b/src/server/api/private/signup.ts
@@ -1,7 +1,7 @@
import * as Koa from 'koa';
import { fetchMeta } from '@/misc/fetch-meta';
import { verifyHcaptcha, verifyRecaptcha } from '@/misc/captcha';
-import { Users, RegistrationTickets } from '../../../models';
+import { Users, RegistrationTickets } from '@/models/index';
import { signup } from '../common/signup';
export default async (ctx: Koa.Context) => {
diff --git a/src/server/api/service/discord.ts b/src/server/api/service/discord.ts
index a684e71fc6..dd52a23376 100644
--- a/src/server/api/service/discord.ts
+++ b/src/server/api/service/discord.ts
@@ -2,14 +2,14 @@ import * as Koa from 'koa';
import * as Router from '@koa/router';
import { getJson } from '@/misc/fetch';
import { OAuth2 } from 'oauth';
-import config from '@/config';
-import { publishMainStream } from '../../../services/stream';
+import config from '@/config/index';
+import { publishMainStream } from '@/services/stream';
import { redisClient } from '../../../db/redis';
import { v4 as uuid } from 'uuid';
import signin from '../common/signin';
import { fetchMeta } from '@/misc/fetch-meta';
-import { Users, UserProfiles } from '../../../models';
-import { ILocalUser } from '../../../models/entities/user';
+import { Users, UserProfiles } from '@/models/index';
+import { ILocalUser } from '@/models/entities/user';
function getUserToken(ctx: Koa.Context) {
return ((ctx.headers['cookie'] || '').match(/igi=(\w+)/) || [null, null])[1];
diff --git a/src/server/api/service/github.ts b/src/server/api/service/github.ts
index 12435b7e81..0616f3f773 100644
--- a/src/server/api/service/github.ts
+++ b/src/server/api/service/github.ts
@@ -2,14 +2,14 @@ import * as Koa from 'koa';
import * as Router from '@koa/router';
import { getJson } from '@/misc/fetch';
import { OAuth2 } from 'oauth';
-import config from '@/config';
-import { publishMainStream } from '../../../services/stream';
+import config from '@/config/index';
+import { publishMainStream } from '@/services/stream';
import { redisClient } from '../../../db/redis';
import { v4 as uuid } from 'uuid';
import signin from '../common/signin';
import { fetchMeta } from '@/misc/fetch-meta';
-import { Users, UserProfiles } from '../../../models';
-import { ILocalUser } from '../../../models/entities/user';
+import { Users, UserProfiles } from '@/models/index';
+import { ILocalUser } from '@/models/entities/user';
function getUserToken(ctx: Koa.Context) {
return ((ctx.headers['cookie'] || '').match(/igi=(\w+)/) || [null, null])[1];
diff --git a/src/server/api/service/twitter.ts b/src/server/api/service/twitter.ts
index 8520a5656f..8a6a58aeee 100644
--- a/src/server/api/service/twitter.ts
+++ b/src/server/api/service/twitter.ts
@@ -3,12 +3,12 @@ import * as Router from '@koa/router';
import { v4 as uuid } from 'uuid';
import autwh from 'autwh';
import { redisClient } from '../../../db/redis';
-import { publishMainStream } from '../../../services/stream';
-import config from '@/config';
+import { publishMainStream } from '@/services/stream';
+import config from '@/config/index';
import signin from '../common/signin';
import { fetchMeta } from '@/misc/fetch-meta';
-import { Users, UserProfiles } from '../../../models';
-import { ILocalUser } from '../../../models/entities/user';
+import { Users, UserProfiles } from '@/models/index';
+import { ILocalUser } from '@/models/entities/user';
function getUserToken(ctx: Koa.Context) {
return ((ctx.headers['cookie'] || '').match(/igi=(\w+)/) || [null, null])[1];
diff --git a/src/server/api/stream/channel.ts b/src/server/api/stream/channel.ts
index 9b7c31e7bb..2824d7d1b8 100644
--- a/src/server/api/stream/channel.ts
+++ b/src/server/api/stream/channel.ts
@@ -27,6 +27,10 @@ export default abstract class Channel {
return this.connection.muting;
}
+ protected get blocking() {
+ return this.connection.blocking;
+ }
+
protected get followingChannels() {
return this.connection.followingChannels;
}
diff --git a/src/server/api/stream/channels/antenna.ts b/src/server/api/stream/channels/antenna.ts
index d93143f4d8..bf9c53c453 100644
--- a/src/server/api/stream/channels/antenna.ts
+++ b/src/server/api/stream/channels/antenna.ts
@@ -1,7 +1,8 @@
import autobind from 'autobind-decorator';
import Channel from '../channel';
-import { Notes } from '../../../../models';
+import { Notes } from '@/models/index';
import { isMutedUserRelated } from '@/misc/is-muted-user-related';
+import { isBlockerUserRelated } from '@/misc/is-blocker-user-related';
export default class extends Channel {
public readonly chName = 'antenna';
@@ -26,6 +27,8 @@ export default class extends Channel {
// 流れてきたNoteがミュートしているユーザーが関わるものだったら無視する
if (isMutedUserRelated(note, this.muting)) return;
+ // 流れてきたNoteがブロックされているユーザーが関わるものだったら無視する
+ if (isBlockerUserRelated(note, this.blocking)) return;
this.connection.cacheNote(note);
diff --git a/src/server/api/stream/channels/channel.ts b/src/server/api/stream/channels/channel.ts
index 6af2d80e0c..e6a9a6c696 100644
--- a/src/server/api/stream/channels/channel.ts
+++ b/src/server/api/stream/channels/channel.ts
@@ -1,9 +1,10 @@
import autobind from 'autobind-decorator';
import Channel from '../channel';
-import { Notes, Users } from '../../../../models';
+import { Notes, Users } from '@/models/index';
import { isMutedUserRelated } from '@/misc/is-muted-user-related';
-import { PackedNote } from '../../../../models/repositories/note';
-import { User } from '../../../../models/entities/user';
+import { isBlockerUserRelated } from '@/misc/is-blocker-user-related';
+import { PackedNote } from '@/models/repositories/note';
+import { User } from '@/models/entities/user';
export default class extends Channel {
public readonly chName = 'channel';
@@ -42,6 +43,8 @@ export default class extends Channel {
// 流れてきたNoteがミュートしているユーザーが関わるものだったら無視する
if (isMutedUserRelated(note, this.muting)) return;
+ // 流れてきたNoteがブロックされているユーザーが関わるものだったら無視する
+ if (isBlockerUserRelated(note, this.blocking)) return;
this.connection.cacheNote(note);
diff --git a/src/server/api/stream/channels/games/reversi-game.ts b/src/server/api/stream/channels/games/reversi-game.ts
index e1c2116ac6..bfdbf1d266 100644
--- a/src/server/api/stream/channels/games/reversi-game.ts
+++ b/src/server/api/stream/channels/games/reversi-game.ts
@@ -1,12 +1,12 @@
import autobind from 'autobind-decorator';
import * as CRC32 from 'crc-32';
-import { publishReversiGameStream } from '../../../../../services/stream';
+import { publishReversiGameStream } from '@/services/stream';
import Reversi from '../../../../../games/reversi/core';
import * as maps from '../../../../../games/reversi/maps';
import Channel from '../../channel';
-import { ReversiGame } from '../../../../../models/entities/games/reversi/game';
-import { ReversiGames, Users } from '../../../../../models';
-import { User } from '../../../../../models/entities/user';
+import { ReversiGame } from '@/models/entities/games/reversi/game';
+import { ReversiGames, Users } from '@/models/index';
+import { User } from '@/models/entities/user';
export default class extends Channel {
public readonly chName = 'gamesReversiGame';
diff --git a/src/server/api/stream/channels/games/reversi.ts b/src/server/api/stream/channels/games/reversi.ts
index e0e41d9acd..3b89aac35c 100644
--- a/src/server/api/stream/channels/games/reversi.ts
+++ b/src/server/api/stream/channels/games/reversi.ts
@@ -1,7 +1,7 @@
import autobind from 'autobind-decorator';
-import { publishMainStream } from '../../../../../services/stream';
+import { publishMainStream } from '@/services/stream';
import Channel from '../../channel';
-import { ReversiMatchings } from '../../../../../models';
+import { ReversiMatchings } from '@/models/index';
export default class extends Channel {
public readonly chName = 'gamesReversi';
diff --git a/src/server/api/stream/channels/global-timeline.ts b/src/server/api/stream/channels/global-timeline.ts
index c59eb37779..2cb138966f 100644
--- a/src/server/api/stream/channels/global-timeline.ts
+++ b/src/server/api/stream/channels/global-timeline.ts
@@ -2,9 +2,10 @@ import autobind from 'autobind-decorator';
import { isMutedUserRelated } from '@/misc/is-muted-user-related';
import Channel from '../channel';
import { fetchMeta } from '@/misc/fetch-meta';
-import { Notes } from '../../../../models';
-import { PackedNote } from '../../../../models/repositories/note';
+import { Notes } from '@/models/index';
+import { PackedNote } from '@/models/repositories/note';
import { checkWordMute } from '@/misc/check-word-mute';
+import { isBlockerUserRelated } from '@/misc/is-blocker-user-related';
export default class extends Channel {
public readonly chName = 'globalTimeline';
@@ -49,6 +50,8 @@ export default class extends Channel {
// 流れてきたNoteがミュートしているユーザーが関わるものだったら無視する
if (isMutedUserRelated(note, this.muting)) return;
+ // 流れてきたNoteがブロックされているユーザーが関わるものだったら無視する
+ if (isBlockerUserRelated(note, this.blocking)) return;
// 流れてきたNoteがミュートすべきNoteだったら無視する
// TODO: 将来的には、単にMutedNoteテーブルにレコードがあるかどうかで判定したい(以下の理由により難しそうではある)
diff --git a/src/server/api/stream/channels/hashtag.ts b/src/server/api/stream/channels/hashtag.ts
index b662af0723..997ab75f6d 100644
--- a/src/server/api/stream/channels/hashtag.ts
+++ b/src/server/api/stream/channels/hashtag.ts
@@ -1,9 +1,10 @@
import autobind from 'autobind-decorator';
import { isMutedUserRelated } from '@/misc/is-muted-user-related';
import Channel from '../channel';
-import { Notes } from '../../../../models';
-import { PackedNote } from '../../../../models/repositories/note';
+import { Notes } from '@/models/index';
+import { PackedNote } from '@/models/repositories/note';
import { normalizeForSearch } from '@/misc/normalize-for-search';
+import { isBlockerUserRelated } from '@/misc/is-blocker-user-related';
export default class extends Channel {
public readonly chName = 'hashtag';
@@ -36,6 +37,8 @@ export default class extends Channel {
// 流れてきたNoteがミュートしているユーザーが関わるものだったら無視する
if (isMutedUserRelated(note, this.muting)) return;
+ // 流れてきたNoteがブロックされているユーザーが関わるものだったら無視する
+ if (isBlockerUserRelated(note, this.blocking)) return;
this.connection.cacheNote(note);
diff --git a/src/server/api/stream/channels/home-timeline.ts b/src/server/api/stream/channels/home-timeline.ts
index b1091a46e1..c7a9728741 100644
--- a/src/server/api/stream/channels/home-timeline.ts
+++ b/src/server/api/stream/channels/home-timeline.ts
@@ -1,9 +1,10 @@
import autobind from 'autobind-decorator';
import { isMutedUserRelated } from '@/misc/is-muted-user-related';
import Channel from '../channel';
-import { Notes } from '../../../../models';
-import { PackedNote } from '../../../../models/repositories/note';
+import { Notes } from '@/models/index';
+import { PackedNote } from '@/models/repositories/note';
import { checkWordMute } from '@/misc/check-word-mute';
+import { isBlockerUserRelated } from '@/misc/is-blocker-user-related';
export default class extends Channel {
public readonly chName = 'homeTimeline';
@@ -57,6 +58,8 @@ export default class extends Channel {
// 流れてきたNoteがミュートしているユーザーが関わるものだったら無視する
if (isMutedUserRelated(note, this.muting)) return;
+ // 流れてきたNoteがブロックされているユーザーが関わるものだったら無視する
+ if (isBlockerUserRelated(note, this.blocking)) return;
// 流れてきたNoteがミュートすべきNoteだったら無視する
// TODO: 将来的には、単にMutedNoteテーブルにレコードがあるかどうかで判定したい(以下の理由により難しそうではある)
diff --git a/src/server/api/stream/channels/hybrid-timeline.ts b/src/server/api/stream/channels/hybrid-timeline.ts
index d769a24373..5c454764ec 100644
--- a/src/server/api/stream/channels/hybrid-timeline.ts
+++ b/src/server/api/stream/channels/hybrid-timeline.ts
@@ -2,10 +2,11 @@ import autobind from 'autobind-decorator';
import { isMutedUserRelated } from '@/misc/is-muted-user-related';
import Channel from '../channel';
import { fetchMeta } from '@/misc/fetch-meta';
-import { Notes } from '../../../../models';
-import { PackedNote } from '../../../../models/repositories/note';
-import { PackedUser } from '../../../../models/repositories/user';
+import { Notes } from '@/models/index';
+import { PackedNote } from '@/models/repositories/note';
+import { PackedUser } from '@/models/repositories/user';
import { checkWordMute } from '@/misc/check-word-mute';
+import { isBlockerUserRelated } from '@/misc/is-blocker-user-related';
export default class extends Channel {
public readonly chName = 'hybridTimeline';
@@ -66,6 +67,8 @@ export default class extends Channel {
// 流れてきたNoteがミュートしているユーザーが関わるものだったら無視する
if (isMutedUserRelated(note, this.muting)) return;
+ // 流れてきたNoteがブロックされているユーザーが関わるものだったら無視する
+ if (isBlockerUserRelated(note, this.blocking)) return;
// 流れてきたNoteがミュートすべきNoteだったら無視する
// TODO: 将来的には、単にMutedNoteテーブルにレコードがあるかどうかで判定したい(以下の理由により難しそうではある)
diff --git a/src/server/api/stream/channels/local-timeline.ts b/src/server/api/stream/channels/local-timeline.ts
index aa0b6c4026..4bf0d02ed3 100644
--- a/src/server/api/stream/channels/local-timeline.ts
+++ b/src/server/api/stream/channels/local-timeline.ts
@@ -2,10 +2,11 @@ import autobind from 'autobind-decorator';
import { isMutedUserRelated } from '@/misc/is-muted-user-related';
import Channel from '../channel';
import { fetchMeta } from '@/misc/fetch-meta';
-import { Notes } from '../../../../models';
-import { PackedNote } from '../../../../models/repositories/note';
-import { PackedUser } from '../../../../models/repositories/user';
+import { Notes } from '@/models/index';
+import { PackedNote } from '@/models/repositories/note';
+import { PackedUser } from '@/models/repositories/user';
import { checkWordMute } from '@/misc/check-word-mute';
+import { isBlockerUserRelated } from '@/misc/is-blocker-user-related';
export default class extends Channel {
public readonly chName = 'localTimeline';
@@ -51,6 +52,8 @@ export default class extends Channel {
// 流れてきたNoteがミュートしているユーザーが関わるものだったら無視する
if (isMutedUserRelated(note, this.muting)) return;
+ // 流れてきたNoteがブロックされているユーザーが関わるものだったら無視する
+ if (isBlockerUserRelated(note, this.blocking)) return;
// 流れてきたNoteがミュートすべきNoteだったら無視する
// TODO: 将来的には、単にMutedNoteテーブルにレコードがあるかどうかで判定したい(以下の理由により難しそうではある)
diff --git a/src/server/api/stream/channels/main.ts b/src/server/api/stream/channels/main.ts
index 780bc0b89f..b99cb931da 100644
--- a/src/server/api/stream/channels/main.ts
+++ b/src/server/api/stream/channels/main.ts
@@ -1,6 +1,6 @@
import autobind from 'autobind-decorator';
import Channel from '../channel';
-import { Notes } from '../../../../models';
+import { Notes } from '@/models/index';
export default class extends Channel {
public readonly chName = 'main';
diff --git a/src/server/api/stream/channels/messaging.ts b/src/server/api/stream/channels/messaging.ts
index 58427e2771..015b0a7650 100644
--- a/src/server/api/stream/channels/messaging.ts
+++ b/src/server/api/stream/channels/messaging.ts
@@ -1,8 +1,8 @@
import autobind from 'autobind-decorator';
import { readUserMessagingMessage, readGroupMessagingMessage, deliverReadActivity } from '../../common/read-messaging-message';
import Channel from '../channel';
-import { UserGroupJoinings, Users, MessagingMessages } from '../../../../models';
-import { User, ILocalUser, IRemoteUser } from '../../../../models/entities/user';
+import { UserGroupJoinings, Users, MessagingMessages } from '@/models/index';
+import { User, ILocalUser, IRemoteUser } from '@/models/entities/user';
export default class extends Channel {
public readonly chName = 'messaging';
diff --git a/src/server/api/stream/channels/user-list.ts b/src/server/api/stream/channels/user-list.ts
index da227f24ec..0ca83cd658 100644
--- a/src/server/api/stream/channels/user-list.ts
+++ b/src/server/api/stream/channels/user-list.ts
@@ -1,9 +1,10 @@
import autobind from 'autobind-decorator';
import Channel from '../channel';
-import { Notes, UserListJoinings, UserLists } from '../../../../models';
+import { Notes, UserListJoinings, UserLists } from '@/models/index';
import { isMutedUserRelated } from '@/misc/is-muted-user-related';
-import { User } from '../../../../models/entities/user';
-import { PackedNote } from '../../../../models/repositories/note';
+import { User } from '@/models/entities/user';
+import { PackedNote } from '@/models/repositories/note';
+import { isBlockerUserRelated } from '@/misc/is-blocker-user-related';
export default class extends Channel {
public readonly chName = 'userList';
@@ -74,6 +75,8 @@ export default class extends Channel {
// 流れてきたNoteがミュートしているユーザーが関わるものだったら無視する
if (isMutedUserRelated(note, this.muting)) return;
+ // 流れてきたNoteがブロックされているユーザーが関わるものだったら無視する
+ if (isBlockerUserRelated(note, this.blocking)) return;
this.send('note', note);
}
diff --git a/src/server/api/stream/index.ts b/src/server/api/stream/index.ts
index 75d82cfe66..469f28f11c 100644
--- a/src/server/api/stream/index.ts
+++ b/src/server/api/stream/index.ts
@@ -2,19 +2,19 @@ import autobind from 'autobind-decorator';
import * as websocket from 'websocket';
import { readNotification } from '../common/read-notification';
import call from '../call';
-import readNote from '../../../services/note/read';
+import readNote from '@/services/note/read';
import Channel from './channel';
-import channels from './channels';
+import channels from './channels/index';
import { EventEmitter } from 'events';
-import { User } from '../../../models/entities/user';
-import { Channel as ChannelModel } from '../../../models/entities/channel';
-import { Users, Followings, Mutings, UserProfiles, ChannelFollowings } from '../../../models';
+import { User } from '@/models/entities/user';
+import { Channel as ChannelModel } from '@/models/entities/channel';
+import { Users, Followings, Mutings, UserProfiles, ChannelFollowings, Blockings } from '@/models/index';
import { ApiError } from '../error';
-import { AccessToken } from '../../../models/entities/access-token';
-import { UserProfile } from '../../../models/entities/user-profile';
-import { publishChannelStream, publishGroupMessagingStream, publishMessagingStream } from '../../../services/stream';
-import { UserGroup } from '../../../models/entities/user-group';
-import { PackedNote } from '../../../models/repositories/note';
+import { AccessToken } from '@/models/entities/access-token';
+import { UserProfile } from '@/models/entities/user-profile';
+import { publishChannelStream, publishGroupMessagingStream, publishMessagingStream } from '@/services/stream';
+import { UserGroup } from '@/models/entities/user-group';
+import { PackedNote } from '@/models/repositories/note';
/**
* Main stream connection
@@ -24,6 +24,7 @@ export default class Connection {
public userProfile?: UserProfile;
public following: Set = new Set();
public muting: Set = new Set();
+ public blocking: Set = new Set(); // "被"blocking
public followingChannels: Set = new Set();
public token?: AccessToken;
private wsConnection: websocket.connection;
@@ -52,6 +53,7 @@ export default class Connection {
if (this.user) {
this.updateFollowing();
this.updateMuting();
+ this.updateBlocking();
this.updateFollowingChannels();
this.updateUserProfile();
@@ -80,6 +82,8 @@ export default class Connection {
this.muting.delete(body.id);
break;
+ // TODO: block events
+
case 'followChannel':
this.followingChannels.add(body.id);
break;
@@ -375,6 +379,18 @@ export default class Connection {
this.muting = new Set(mutings.map(x => x.muteeId));
}
+ @autobind
+ private async updateBlocking() { // ここでいうBlockingは被Blockingの意
+ const blockings = await Blockings.find({
+ where: {
+ blockeeId: this.user!.id
+ },
+ select: ['blockerId']
+ });
+
+ this.blocking = new Set(blockings.map(x => x.blockerId));
+ }
+
@autobind
private async updateFollowingChannels() {
const followings = await ChannelFollowings.find({
diff --git a/src/server/api/streaming.ts b/src/server/api/streaming.ts
index b431bc5ad3..8808bc9860 100644
--- a/src/server/api/streaming.ts
+++ b/src/server/api/streaming.ts
@@ -1,12 +1,12 @@
import * as http from 'http';
import * as websocket from 'websocket';
-import MainStreamConnection from './stream';
+import MainStreamConnection from './stream/index';
import { ParsedUrlQuery } from 'querystring';
import authenticate from './authenticate';
import { EventEmitter } from 'events';
import { subsdcriber as redisClient } from '../../db/redis';
-import { Users } from '@/models';
+import { Users } from '@/models/index';
module.exports = (server: http.Server) => {
// Init websocket server
diff --git a/src/server/file/index.ts b/src/server/file/index.ts
index 0410efb99c..9b5d8f7267 100644
--- a/src/server/file/index.ts
+++ b/src/server/file/index.ts
@@ -3,11 +3,17 @@
*/
import * as fs from 'fs';
+import { fileURLToPath } from 'url';
+import { dirname } from 'path';
import * as Koa from 'koa';
import * as cors from '@koa/cors';
import * as Router from '@koa/router';
import sendDriveFile from './send-drive-file';
+//const _filename = fileURLToPath(import.meta.url);
+const _filename = __filename;
+const _dirname = dirname(_filename);
+
// Init app
const app = new Koa();
app.use(cors());
@@ -16,7 +22,7 @@ app.use(cors());
const router = new Router();
router.get('/app-default.jpg', ctx => {
- const file = fs.createReadStream(`${__dirname}/assets/dummy.png`);
+ const file = fs.createReadStream(`${_dirname}/assets/dummy.png`);
ctx.body = file;
ctx.set('Content-Type', 'image/jpeg');
ctx.set('Cache-Control', 'max-age=31536000, immutable');
diff --git a/src/server/file/send-drive-file.ts b/src/server/file/send-drive-file.ts
index 9745b1201d..c455de6447 100644
--- a/src/server/file/send-drive-file.ts
+++ b/src/server/file/send-drive-file.ts
@@ -1,18 +1,24 @@
+import * as fs from 'fs';
+import { fileURLToPath } from 'url';
+import { dirname } from 'path';
import * as Koa from 'koa';
import * as send from 'koa-send';
import * as rename from 'rename';
import * as tmp from 'tmp';
-import * as fs from 'fs';
-import { serverLogger } from '..';
+import { serverLogger } from '../index';
import { contentDisposition } from '@/misc/content-disposition';
-import { DriveFiles } from '../../models';
-import { InternalStorage } from '../../services/drive/internal-storage';
+import { DriveFiles } from '@/models/index';
+import { InternalStorage } from '@/services/drive/internal-storage';
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';
+import { convertToJpeg, convertToPngOrJpeg } from '@/services/drive/image-processor';
+import { GenerateVideoThumbnail } from '@/services/drive/generate-video-thumbnail';
-const assets = `${__dirname}/../../server/file/assets/`;
+//const _filename = fileURLToPath(import.meta.url);
+const _filename = __filename;
+const _dirname = dirname(_filename);
+
+const assets = `${_dirname}/../../server/file/assets/`;
const commonReadableHandlerGenerator = (ctx: Koa.Context) => (e: Error): void => {
serverLogger.error(e);
diff --git a/src/server/index.ts b/src/server/index.ts
index 3b43aa7674..fb4e48c1c6 100644
--- a/src/server/index.ts
+++ b/src/server/index.ts
@@ -16,16 +16,16 @@ import * as slow from 'koa-slow';
import activityPub from './activitypub';
import nodeinfo from './nodeinfo';
import wellKnown from './well-known';
-import config from '@/config';
-import apiServer from './api';
-import { sum } from '../prelude/array';
-import Logger from '../services/logger';
+import config from '@/config/index';
+import apiServer from './api/index';
+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 { UserProfiles, Users } from '@/models/index';
+import { networkChart } from '@/services/chart/index';
import { genAvatar } from '@/misc/gen-avatar';
import { createTemp } from '@/misc/create-temp';
-import { publishMainStream } from '../services/stream';
+import { publishMainStream } from '@/services/stream';
export const serverLogger = new Logger('server', 'gray', false);
diff --git a/src/server/nodeinfo.ts b/src/server/nodeinfo.ts
index 7a1d5b6292..dec2615086 100644
--- a/src/server/nodeinfo.ts
+++ b/src/server/nodeinfo.ts
@@ -1,7 +1,7 @@
import * as Router from '@koa/router';
-import config from '@/config';
+import config from '@/config/index';
import { fetchMeta } from '@/misc/fetch-meta';
-import { Users } from '../models';
+import { Users } from '@/models/index';
// 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 f91df55624..fb38a5c07b 100644
--- a/src/server/proxy/proxy-media.ts
+++ b/src/server/proxy/proxy-media.ts
@@ -1,7 +1,7 @@
import * as fs from 'fs';
import * as Koa from 'koa';
-import { serverLogger } from '..';
-import { IImage, convertToPng, convertToJpeg } from '../../services/drive/image-processor';
+import { serverLogger } from '../index';
+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';
diff --git a/src/server/web/feed.ts b/src/server/web/feed.ts
index d4792c63aa..4b6de517b7 100644
--- a/src/server/web/feed.ts
+++ b/src/server/web/feed.ts
@@ -1,7 +1,7 @@
import { Feed } from 'feed';
-import config from '@/config';
-import { User } from '../../models/entities/user';
-import { Notes, DriveFiles, UserProfiles } from '../../models';
+import config from '@/config/index';
+import { User } from '@/models/entities/user';
+import { Notes, DriveFiles, UserProfiles } from '@/models/index';
import { In } from 'typeorm';
export default async function(user: User) {
diff --git a/src/server/web/index.ts b/src/server/web/index.ts
index 44ab2a997f..8f9b6add6e 100644
--- a/src/server/web/index.ts
+++ b/src/server/web/index.ts
@@ -4,7 +4,9 @@
import * as os from 'os';
import * as fs from 'fs';
-import ms = require('ms');
+import { fileURLToPath } from 'url';
+import { dirname } from 'path';
+import * as ms from 'ms';
import * as Koa from 'koa';
import * as Router from '@koa/router';
import * as send from 'koa-send';
@@ -16,34 +18,38 @@ import * as MarkdownIt from 'markdown-it';
import packFeed from './feed';
import { fetchMeta } from '@/misc/fetch-meta';
import { genOpenapiSpec } from '../api/openapi/gen-spec';
-import config from '@/config';
-import { Users, Notes, Emojis, UserProfiles, Pages, Channels, Clips, GalleryPosts } from '../../models';
+import config from '@/config/index';
+import { Users, Notes, Emojis, UserProfiles, Pages, Channels, Clips, GalleryPosts } from '@/models/index';
import { parseAcct } from '@/misc/acct';
import { getNoteSummary } from '@/misc/get-note-summary';
import { getConnection } from 'typeorm';
import { redisClient } from '../../db/redis';
-import locales = require('../../../locales');
+import * as locales from '../../../locales/index';
+
+//const _filename = fileURLToPath(import.meta.url);
+const _filename = __filename;
+const _dirname = dirname(_filename);
const markdown = MarkdownIt({
html: true
});
-const changelog = fs.readFileSync(`${__dirname}/../../../CHANGELOG.md`, { encoding: 'utf8' });
+const changelog = fs.readFileSync(`${_dirname}/../../../CHANGELOG.md`, { encoding: 'utf8' });
function genDoc(path: string): string {
let md = fs.readFileSync(path, { encoding: 'utf8' });
md = md.replace('', changelog);
return md;
}
-const staticAssets = `${__dirname}/../../../assets/`;
-const docAssets = `${__dirname}/../../../src/docs/`;
-const assets = `${__dirname}/../../assets/`;
+const staticAssets = `${_dirname}/../../../assets/`;
+const docAssets = `${_dirname}/../../../src/docs/`;
+const assets = `${_dirname}/../../assets/`;
// Init app
const app = new Koa();
// Init renderer
-app.use(views(__dirname + '/views', {
+app.use(views(_dirname + '/views', {
extension: 'pug',
options: {
version: config.version,
@@ -52,7 +58,7 @@ app.use(views(__dirname + '/views', {
}));
// Serve favicon
-app.use(favicon(`${__dirname}/../../../assets/favicon.ico`));
+app.use(favicon(`${_dirname}/../../../assets/favicon.ico`));
// Common request handler
app.use(async (ctx, next) => {
@@ -75,7 +81,7 @@ router.get('/static-assets/(.*)', async ctx => {
router.get('/doc-assets/(.*)', async ctx => {
if (ctx.path.includes('..')) return;
- const path = `${__dirname}/../../../src/docs/${ctx.path.replace('/doc-assets/', '')}`;
+ const path = `${_dirname}/../../../src/docs/${ctx.path.replace('/doc-assets/', '')}`;
const doc = genDoc(path);
ctx.set('Content-Type', 'text/plain; charset=utf-8');
ctx.body = doc;
@@ -134,7 +140,7 @@ router.get('/docs.json', async ctx => {
ctx.body = [];
return;
}
- const dirPath = `${__dirname}/../../../src/docs/${lang}`.replace(/\\/g, '/');
+ const dirPath = `${_dirname}/../../../src/docs/${lang}`.replace(/\\/g, '/');
const paths = glob.sync(`${dirPath}/**/*.md`);
const docs: { path: string; title: string; summary: string; }[] = [];
for (const path of paths) {
diff --git a/src/server/web/url-preview.ts b/src/server/web/url-preview.ts
index 1ba8e0034a..1375420c0a 100644
--- a/src/server/web/url-preview.ts
+++ b/src/server/web/url-preview.ts
@@ -1,9 +1,9 @@
import * as Koa from 'koa';
import summaly from 'summaly';
import { fetchMeta } from '@/misc/fetch-meta';
-import Logger from '../../services/logger';
-import config from '@/config';
-import { query } from '../../prelude/url';
+import Logger from '@/services/logger';
+import config from '@/config/index';
+import { query } from '@/prelude/url';
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 5771db91d0..a2e6bc0bc4 100644
--- a/src/server/well-known.ts
+++ b/src/server/well-known.ts
@@ -1,11 +1,11 @@
import * as Router from '@koa/router';
-import config from '@/config';
+import config from '@/config/index';
import { parseAcct, Acct } from '@/misc/acct';
import { links } from './nodeinfo';
-import { escapeAttribute, escapeValue } from '../prelude/xml';
-import { Users } from '../models';
-import { User } from '../models/entities/user';
+import { escapeAttribute, escapeValue } from '@/prelude/xml';
+import { Users } from '@/models/index';
+import { User } from '@/models/entities/user';
// Init router
const router = new Router();
diff --git a/src/services/add-note-to-antenna.ts b/src/services/add-note-to-antenna.ts
index 56d0149155..3aedbd2c32 100644
--- a/src/services/add-note-to-antenna.ts
+++ b/src/services/add-note-to-antenna.ts
@@ -1,10 +1,10 @@
-import { Antenna } from '../models/entities/antenna';
-import { Note } from '../models/entities/note';
-import { AntennaNotes, Mutings, Notes } from '../models';
+import { Antenna } from '@/models/entities/antenna';
+import { Note } from '@/models/entities/note';
+import { AntennaNotes, Mutings, Notes } from '@/models/index';
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';
+import { publishAntennaStream, publishMainStream } from '@/services/stream';
+import { User } from '@/models/entities/user';
export async function addNoteToAntenna(antenna: Antenna, note: Note, noteUser: { id: User['id']; }) {
// 通知しない設定になっているか、自分自身の投稿なら既読にする
diff --git a/src/services/blocking/create.ts b/src/services/blocking/create.ts
index be2a62692b..76c4bda9dc 100644
--- a/src/services/blocking/create.ts
+++ b/src/services/blocking/create.ts
@@ -1,13 +1,13 @@
-import { publishMainStream, publishUserEvent } from '../stream';
-import { renderActivity } from '../../remote/activitypub/renderer';
-import renderFollow from '../../remote/activitypub/renderer/follow';
-import renderUndo from '../../remote/activitypub/renderer/undo';
-import renderBlock from '../../remote/activitypub/renderer/block';
-import { deliver } from '../../queue';
-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 { publishMainStream, publishUserEvent } from '@/services/stream';
+import { renderActivity } from '@/remote/activitypub/renderer/index';
+import renderFollow from '@/remote/activitypub/renderer/follow';
+import renderUndo from '@/remote/activitypub/renderer/undo';
+import renderBlock from '@/remote/activitypub/renderer/block';
+import { deliver } from '@/queue/index';
+import renderReject from '@/remote/activitypub/renderer/reject';
+import { User } from '@/models/entities/user';
+import { Blockings, Users, FollowRequests, Followings, UserListJoinings, UserLists } from '@/models/index';
+import { perUserFollowingChart } from '@/services/chart/index';
import { genId } from '@/misc/gen-id';
export default async function(blocker: User, blockee: User) {
@@ -15,7 +15,8 @@ export default async function(blocker: User, blockee: User) {
cancelRequest(blocker, blockee),
cancelRequest(blockee, blocker),
unFollow(blocker, blockee),
- unFollow(blockee, blocker)
+ unFollow(blockee, blocker),
+ removeFromList(blockee, blocker),
]);
await Blockings.insert({
@@ -112,3 +113,16 @@ async function unFollow(follower: User, followee: User) {
deliver(follower, content, followee.inbox);
}
}
+
+async function removeFromList(listOwner: User, user: User) {
+ const userLists = await UserLists.find({
+ userId: listOwner.id,
+ });
+
+ for (const userList of userLists) {
+ await UserListJoinings.delete({
+ userListId: userList.id,
+ userId: user.id,
+ });
+ }
+}
diff --git a/src/services/blocking/delete.ts b/src/services/blocking/delete.ts
index 2c05cb7f3f..de7efb1558 100644
--- a/src/services/blocking/delete.ts
+++ b/src/services/blocking/delete.ts
@@ -1,10 +1,10 @@
-import { renderActivity } from '../../remote/activitypub/renderer';
-import renderBlock from '../../remote/activitypub/renderer/block';
-import renderUndo from '../../remote/activitypub/renderer/undo';
-import { deliver } from '../../queue';
+import { renderActivity } from '@/remote/activitypub/renderer/index';
+import renderBlock from '@/remote/activitypub/renderer/block';
+import renderUndo from '@/remote/activitypub/renderer/undo';
+import { deliver } from '@/queue/index';
import Logger from '../logger';
-import { User } from '../../models/entities/user';
-import { Blockings, Users } from '../../models';
+import { User } from '@/models/entities/user';
+import { Blockings, Users } from '@/models/index';
const logger = new Logger('blocking/delete');
diff --git a/src/services/chart/charts/classes/active-users.ts b/src/services/chart/charts/classes/active-users.ts
index e732b25d24..f80d8a3322 100644
--- a/src/services/chart/charts/classes/active-users.ts
+++ b/src/services/chart/charts/classes/active-users.ts
@@ -1,8 +1,8 @@
import autobind from 'autobind-decorator';
import Chart, { Obj, DeepPartial } from '../../core';
-import { User } from '../../../../models/entities/user';
+import { User } from '@/models/entities/user';
import { SchemaType } from '@/misc/schema';
-import { Users } from '../../../../models';
+import { Users } from '@/models/index';
import { name, schema } from '../schemas/active-users';
type ActiveUsersLog = SchemaType;
diff --git a/src/services/chart/charts/classes/drive.ts b/src/services/chart/charts/classes/drive.ts
index 18537918f0..93eabf3096 100644
--- a/src/services/chart/charts/classes/drive.ts
+++ b/src/services/chart/charts/classes/drive.ts
@@ -1,9 +1,9 @@
import autobind from 'autobind-decorator';
import Chart, { Obj, DeepPartial } from '../../core';
import { SchemaType } from '@/misc/schema';
-import { DriveFiles } from '../../../../models';
+import { DriveFiles } from '@/models/index';
import { Not, IsNull } from 'typeorm';
-import { DriveFile } from '../../../../models/entities/drive-file';
+import { DriveFile } from '@/models/entities/drive-file';
import { name, schema } from '../schemas/drive';
type DriveLog = SchemaType;
diff --git a/src/services/chart/charts/classes/federation.ts b/src/services/chart/charts/classes/federation.ts
index e593a53cf1..5f918b294f 100644
--- a/src/services/chart/charts/classes/federation.ts
+++ b/src/services/chart/charts/classes/federation.ts
@@ -1,7 +1,7 @@
import autobind from 'autobind-decorator';
import Chart, { Obj, DeepPartial } from '../../core';
import { SchemaType } from '@/misc/schema';
-import { Instances } from '../../../../models';
+import { Instances } from '@/models/index';
import { name, schema } from '../schemas/federation';
type FederationLog = SchemaType;
diff --git a/src/services/chart/charts/classes/hashtag.ts b/src/services/chart/charts/classes/hashtag.ts
index 98d5421c9b..f7f5e17dec 100644
--- a/src/services/chart/charts/classes/hashtag.ts
+++ b/src/services/chart/charts/classes/hashtag.ts
@@ -1,8 +1,8 @@
import autobind from 'autobind-decorator';
import Chart, { Obj, DeepPartial } from '../../core';
-import { User } from '../../../../models/entities/user';
+import { User } from '@/models/entities/user';
import { SchemaType } from '@/misc/schema';
-import { Users } from '../../../../models';
+import { Users } from '@/models/index';
import { name, schema } from '../schemas/hashtag';
type HashtagLog = SchemaType;
diff --git a/src/services/chart/charts/classes/instance.ts b/src/services/chart/charts/classes/instance.ts
index f93da58d61..1032de7bc0 100644
--- a/src/services/chart/charts/classes/instance.ts
+++ b/src/services/chart/charts/classes/instance.ts
@@ -1,10 +1,10 @@
import autobind from 'autobind-decorator';
import Chart, { Obj, DeepPartial } from '../../core';
import { SchemaType } from '@/misc/schema';
-import { DriveFiles, Followings, Users, Notes } from '../../../../models';
-import { DriveFile } from '../../../../models/entities/drive-file';
+import { DriveFiles, Followings, Users, Notes } from '@/models/index';
+import { DriveFile } from '@/models/entities/drive-file';
import { name, schema } from '../schemas/instance';
-import { Note } from '../../../../models/entities/note';
+import { Note } from '@/models/entities/note';
import { toPuny } from '@/misc/convert-host';
type InstanceLog = SchemaType;
diff --git a/src/services/chart/charts/classes/notes.ts b/src/services/chart/charts/classes/notes.ts
index a6eb653b70..0675d346d1 100644
--- a/src/services/chart/charts/classes/notes.ts
+++ b/src/services/chart/charts/classes/notes.ts
@@ -1,9 +1,9 @@
import autobind from 'autobind-decorator';
import Chart, { Obj, DeepPartial } from '../../core';
import { SchemaType } from '@/misc/schema';
-import { Notes } from '../../../../models';
+import { Notes } from '@/models/index';
import { Not, IsNull } from 'typeorm';
-import { Note } from '../../../../models/entities/note';
+import { Note } from '@/models/entities/note';
import { name, schema } from '../schemas/notes';
type NotesLog = SchemaType;
diff --git a/src/services/chart/charts/classes/per-user-drive.ts b/src/services/chart/charts/classes/per-user-drive.ts
index 182e5927e8..f28987191b 100644
--- a/src/services/chart/charts/classes/per-user-drive.ts
+++ b/src/services/chart/charts/classes/per-user-drive.ts
@@ -1,8 +1,8 @@
import autobind from 'autobind-decorator';
import Chart, { Obj, DeepPartial } from '../../core';
import { SchemaType } from '@/misc/schema';
-import { DriveFiles } from '../../../../models';
-import { DriveFile } from '../../../../models/entities/drive-file';
+import { DriveFiles } from '@/models/index';
+import { DriveFile } from '@/models/entities/drive-file';
import { name, schema } from '../schemas/per-user-drive';
type PerUserDriveLog = SchemaType;
diff --git a/src/services/chart/charts/classes/per-user-following.ts b/src/services/chart/charts/classes/per-user-following.ts
index 5972d3759b..08a9ad1d2b 100644
--- a/src/services/chart/charts/classes/per-user-following.ts
+++ b/src/services/chart/charts/classes/per-user-following.ts
@@ -1,9 +1,9 @@
import autobind from 'autobind-decorator';
import Chart, { Obj, DeepPartial } from '../../core';
import { SchemaType } from '@/misc/schema';
-import { Followings, Users } from '../../../../models';
+import { Followings, Users } from '@/models/index';
import { Not, IsNull } from 'typeorm';
-import { User } from '../../../../models/entities/user';
+import { User } from '@/models/entities/user';
import { name, schema } from '../schemas/per-user-following';
type PerUserFollowingLog = SchemaType;
diff --git a/src/services/chart/charts/classes/per-user-notes.ts b/src/services/chart/charts/classes/per-user-notes.ts
index 7f93965adb..0e808766f5 100644
--- a/src/services/chart/charts/classes/per-user-notes.ts
+++ b/src/services/chart/charts/classes/per-user-notes.ts
@@ -1,9 +1,9 @@
import autobind from 'autobind-decorator';
import Chart, { Obj, DeepPartial } from '../../core';
-import { User } from '../../../../models/entities/user';
+import { User } from '@/models/entities/user';
import { SchemaType } from '@/misc/schema';
-import { Notes } from '../../../../models';
-import { Note } from '../../../../models/entities/note';
+import { Notes } from '@/models/index';
+import { Note } from '@/models/entities/note';
import { name, schema } from '../schemas/per-user-notes';
type PerUserNotesLog = SchemaType;
diff --git a/src/services/chart/charts/classes/per-user-reactions.ts b/src/services/chart/charts/classes/per-user-reactions.ts
index 69ed81cd44..e71bcb71c4 100644
--- a/src/services/chart/charts/classes/per-user-reactions.ts
+++ b/src/services/chart/charts/classes/per-user-reactions.ts
@@ -1,9 +1,9 @@
import autobind from 'autobind-decorator';
import Chart, { DeepPartial } from '../../core';
-import { User } from '../../../../models/entities/user';
-import { Note } from '../../../../models/entities/note';
+import { User } from '@/models/entities/user';
+import { Note } from '@/models/entities/note';
import { SchemaType } from '@/misc/schema';
-import { Users } from '../../../../models';
+import { Users } from '@/models/index';
import { name, schema } from '../schemas/per-user-reactions';
type PerUserReactionsLog = SchemaType;
diff --git a/src/services/chart/charts/classes/users.ts b/src/services/chart/charts/classes/users.ts
index 8f208de6d6..89b480ef77 100644
--- a/src/services/chart/charts/classes/users.ts
+++ b/src/services/chart/charts/classes/users.ts
@@ -1,9 +1,9 @@
import autobind from 'autobind-decorator';
import Chart, { Obj, DeepPartial } from '../../core';
import { SchemaType } from '@/misc/schema';
-import { Users } from '../../../../models';
+import { Users } from '@/models/index';
import { Not, IsNull } from 'typeorm';
-import { User } from '../../../../models/entities/user';
+import { User } from '@/models/entities/user';
import { name, schema } from '../schemas/users';
type UsersLog = SchemaType;
diff --git a/src/services/chart/core.ts b/src/services/chart/core.ts
index 14cbd92802..eee7d20efb 100644
--- a/src/services/chart/core.ts
+++ b/src/services/chart/core.ts
@@ -9,7 +9,7 @@ import autobind from 'autobind-decorator';
import Logger from '../logger';
import { Schema } from '@/misc/schema';
import { EntitySchema, getRepository, Repository, LessThan, Between } from 'typeorm';
-import { dateUTC, isTimeSame, isTimeBefore, subtractTime, addTime } from '../../prelude/time';
+import { dateUTC, isTimeSame, isTimeBefore, subtractTime, addTime } from '@/prelude/time';
import { getChartInsertLock } from '@/misc/app-lock';
const logger = new Logger('chart', 'white', process.env.NODE_ENV !== 'test');
@@ -201,11 +201,12 @@ export default abstract class Chart> {
...Chart.convertSchemaToFlatColumnDefinitions(schema)
},
indices: [{
- columns: ['date']
- }, {
- columns: ['group']
- }, {
- columns: ['date', 'group']
+ columns: ['date', 'group'],
+ unique: true,
+ }, { // groupにnullが含まれると↑のuniqueは機能しないので↓の部分インデックスでカバー
+ columns: ['date'],
+ unique: true,
+ where: '"group" IS NULL'
}]
});
}
@@ -314,11 +315,11 @@ export default abstract class Chart> {
if (currentLog != null) return currentLog;
// 新規ログ挿入
- log = await this.repository.save({
+ log = await this.repository.insert({
group: group,
date: date,
...Chart.convertObjectToFlattenColumns(data)
- });
+ }).then(x => this.repository.findOneOrFail(x.identifiers[0]));
logger.info(`${this.name + (group ? `:${group}` : '')}: New commit created`);
diff --git a/src/services/chart/entities.ts b/src/services/chart/entities.ts
index e3d5e6f8c6..23a97607eb 100644
--- a/src/services/chart/entities.ts
+++ b/src/services/chart/entities.ts
@@ -1,7 +1,13 @@
+import { fileURLToPath } from 'url';
+import { dirname } from 'path';
import Chart from './core';
+//const _filename = fileURLToPath(import.meta.url);
+const _filename = __filename;
+const _dirname = dirname(_filename);
+
export const entities = Object.values(require('require-all')({
- dirname: __dirname + '/charts/schemas',
+ dirname: _dirname + '/charts/schemas',
filter: /^.+\.[jt]s$/,
resolve: (x: any) => {
return Chart.schemaToEntity(x.name, x.schema);
diff --git a/src/services/create-notification.ts b/src/services/create-notification.ts
index da00cc3dab..9c50bacde7 100644
--- a/src/services/create-notification.ts
+++ b/src/services/create-notification.ts
@@ -1,9 +1,9 @@
-import { publishMainStream } from './stream';
-import { pushNotification } from './push-notification';
-import { Notifications, Mutings, UserProfiles, Users } from '../models';
+import { publishMainStream } from '@/services/stream';
+import { pushNotification } from '@/services/push-notification';
+import { Notifications, Mutings, UserProfiles, Users } from '@/models/index';
import { genId } from '@/misc/gen-id';
-import { User } from '../models/entities/user';
-import { Notification } from '../models/entities/notification';
+import { User } from '@/models/entities/user';
+import { Notification } from '@/models/entities/notification';
import { sendEmailNotification } from './send-email-notification';
export async function createNotification(
diff --git a/src/services/create-system-user.ts b/src/services/create-system-user.ts
index 052ceb6c99..71be8d4abf 100644
--- a/src/services/create-system-user.ts
+++ b/src/services/create-system-user.ts
@@ -2,12 +2,12 @@ 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 { User } from '../models/entities/user';
-import { UserProfile } from '../models/entities/user-profile';
+import { User } from '@/models/entities/user';
+import { UserProfile } from '@/models/entities/user-profile';
import { getConnection } from 'typeorm';
import { genId } from '@/misc/gen-id';
-import { UserKeypair } from '../models/entities/user-keypair';
-import { UsedUsername } from '../models/entities/used-username';
+import { UserKeypair } from '@/models/entities/user-keypair';
+import { UsedUsername } from '@/models/entities/used-username';
export async function createSystemUser(username: string) {
const password = uuid();
diff --git a/src/services/drive/add-file.ts b/src/services/drive/add-file.ts
index 2356a23cbe..6c5fefd4ad 100644
--- a/src/services/drive/add-file.ts
+++ b/src/services/drive/add-file.ts
@@ -2,7 +2,7 @@ import * as fs from 'fs';
import { v4 as uuid } from 'uuid';
-import { publishMainStream, publishDriveStream } from '../stream';
+import { publishMainStream, publishDriveStream } from '@/services/stream';
import { deleteFile } from './delete-file';
import { fetchMeta } from '@/misc/fetch-meta';
import { GenerateVideoThumbnail } from './generate-video-thumbnail';
@@ -10,11 +10,11 @@ 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 { DriveFiles, DriveFolders, Users, Instances, UserProfiles } from '../../models';
+import { DriveFiles, DriveFolders, Users, Instances, UserProfiles } from '@/models/index';
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 { DriveFile } from '@/models/entities/drive-file';
+import { IRemoteUser, User } from '@/models/entities/user';
+import { driveChart, perUserDriveChart, instanceChart } from '@/services/chart/index';
import { genId } from '@/misc/gen-id';
import { isDuplicateKeyValueError } from '@/misc/is-duplicate-key-value-error';
import * as S3 from 'aws-sdk/clients/s3';
diff --git a/src/services/drive/delete-file.ts b/src/services/drive/delete-file.ts
index 2dd2445321..2eab17ac1c 100644
--- a/src/services/drive/delete-file.ts
+++ b/src/services/drive/delete-file.ts
@@ -1,17 +1,17 @@
-import { DriveFile } from '../../models/entities/drive-file';
+import { DriveFile } from '@/models/entities/drive-file';
import { InternalStorage } from './internal-storage';
-import { DriveFiles, Instances, Notes, Users } from '../../models';
-import { driveChart, perUserDriveChart, instanceChart } from '../chart';
-import { createDeleteObjectStorageFileJob } from '../../queue';
+import { DriveFiles, Instances, Notes, Users } from '@/models/index';
+import { driveChart, perUserDriveChart, instanceChart } from '@/services/chart/index';
+import { createDeleteObjectStorageFileJob } from '@/queue/index';
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 { deliverToFollowers } from '../../remote/activitypub/deliver-manager';
+import { Note } from '@/models/entities/note';
+import { renderActivity } from '@/remote/activitypub/renderer/index';
+import renderDelete from '@/remote/activitypub/renderer/delete';
+import renderTombstone from '@/remote/activitypub/renderer/tombstone';
+import config from '@/config/index';
+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 5ec563584f..deaf3dc831 100644
--- a/src/services/drive/internal-storage.ts
+++ b/src/services/drive/internal-storage.ts
@@ -1,9 +1,15 @@
import * as fs from 'fs';
import * as Path from 'path';
-import config from '@/config';
+import { fileURLToPath } from 'url';
+import { dirname } from 'path';
+import config from '@/config/index';
+
+//const _filename = fileURLToPath(import.meta.url);
+const _filename = __filename;
+const _dirname = dirname(_filename);
export class InternalStorage {
- private static readonly path = Path.resolve(__dirname, '../../../files');
+ private static readonly path = Path.resolve(_dirname, '../../../files');
public static resolvePath = (key: string) => Path.resolve(InternalStorage.path, key);
diff --git a/src/services/drive/s3.ts b/src/services/drive/s3.ts
index e75937861b..f473c4a203 100644
--- a/src/services/drive/s3.ts
+++ b/src/services/drive/s3.ts
@@ -1,6 +1,6 @@
import { URL } from 'url';
import * as S3 from 'aws-sdk/clients/s3';
-import { Meta } from '../../models/entities/meta';
+import { Meta } from '@/models/entities/meta';
import { getAgentByUrl } from '@/misc/fetch';
export function getS3(meta: Meta) {
diff --git a/src/services/drive/upload-from-url.ts b/src/services/drive/upload-from-url.ts
index 2f660d9035..29788c4af4 100644
--- a/src/services/drive/upload-from-url.ts
+++ b/src/services/drive/upload-from-url.ts
@@ -1,12 +1,12 @@
import { URL } from 'url';
import create from './add-file';
-import { User } from '../../models/entities/user';
+import { User } from '@/models/entities/user';
import { driveLogger } from './logger';
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';
+import { DriveFolder } from '@/models/entities/drive-folder';
+import { DriveFile } from '@/models/entities/drive-file';
+import { DriveFiles } from '@/models/index';
const logger = driveLogger.createSubLogger('downloader');
diff --git a/src/services/fetch-instance-metadata.ts b/src/services/fetch-instance-metadata.ts
index e016e73a60..2c401508a9 100644
--- a/src/services/fetch-instance-metadata.ts
+++ b/src/services/fetch-instance-metadata.ts
@@ -1,8 +1,8 @@
import { DOMWindow, JSDOM } from 'jsdom';
import fetch from 'node-fetch';
import { getJson, getHtml, getAgentByUrl } from '@/misc/fetch';
-import { Instance } from '../models/entities/instance';
-import { Instances } from '../models';
+import { Instance } from '@/models/entities/instance';
+import { Instances } from '@/models/index';
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 de12285fc7..4d0754b504 100644
--- a/src/services/following/create.ts
+++ b/src/services/following/create.ts
@@ -1,16 +1,16 @@
-import { publishMainStream, publishUserEvent } from '../stream';
-import { renderActivity } from '../../remote/activitypub/renderer';
-import renderFollow from '../../remote/activitypub/renderer/follow';
-import renderAccept from '../../remote/activitypub/renderer/accept';
-import renderReject from '../../remote/activitypub/renderer/reject';
-import { deliver } from '../../queue';
+import { publishMainStream, publishUserEvent } from '@/services/stream';
+import { renderActivity } from '@/remote/activitypub/renderer/index';
+import renderFollow from '@/remote/activitypub/renderer/follow';
+import renderAccept from '@/remote/activitypub/renderer/accept';
+import renderReject from '@/remote/activitypub/renderer/reject';
+import { deliver } from '@/queue/index';
import createFollowRequest from './requests/create';
import { registerOrFetchInstanceDoc } from '../register-or-fetch-instance-doc';
import Logger from '../logger';
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 { User } from '@/models/entities/user';
+import { Followings, Users, FollowRequests, Blockings, Instances, UserProfiles } from '@/models/index';
+import { instanceChart, perUserFollowingChart } from '@/services/chart/index';
import { genId } from '@/misc/gen-id';
import { createNotification } from '../create-notification';
import { isDuplicateKeyValueError } from '@/misc/is-duplicate-key-value-error';
diff --git a/src/services/following/delete.ts b/src/services/following/delete.ts
index d0df0de6ae..29e3372b6a 100644
--- a/src/services/following/delete.ts
+++ b/src/services/following/delete.ts
@@ -1,13 +1,13 @@
-import { publishMainStream, publishUserEvent } from '../stream';
-import { renderActivity } from '../../remote/activitypub/renderer';
-import renderFollow from '../../remote/activitypub/renderer/follow';
-import renderUndo from '../../remote/activitypub/renderer/undo';
-import { deliver } from '../../queue';
+import { publishMainStream, publishUserEvent } from '@/services/stream';
+import { renderActivity } from '@/remote/activitypub/renderer/index';
+import renderFollow from '@/remote/activitypub/renderer/follow';
+import renderUndo from '@/remote/activitypub/renderer/undo';
+import { deliver } from '@/queue/index';
import Logger from '../logger';
import { registerOrFetchInstanceDoc } from '../register-or-fetch-instance-doc';
-import { User } from '../../models/entities/user';
-import { Followings, Users, Instances } from '../../models';
-import { instanceChart, perUserFollowingChart } from '../chart';
+import { User } from '@/models/entities/user';
+import { Followings, Users, Instances } from '@/models/index';
+import { instanceChart, perUserFollowingChart } from '@/services/chart/index';
const logger = new Logger('following/delete');
diff --git a/src/services/following/requests/accept-all.ts b/src/services/following/requests/accept-all.ts
index 5fc70fcf1b..23b4fd0a46 100644
--- a/src/services/following/requests/accept-all.ts
+++ b/src/services/following/requests/accept-all.ts
@@ -1,6 +1,6 @@
import accept from './accept';
-import { User } from '../../../models/entities/user';
-import { FollowRequests, Users } from '../../../models';
+import { User } from '@/models/entities/user';
+import { FollowRequests, Users } from '@/models/index';
/**
* 指定したユーザー宛てのフォローリクエストをすべて承認
diff --git a/src/services/following/requests/accept.ts b/src/services/following/requests/accept.ts
index 4277a1a1e9..316a6f1c12 100644
--- a/src/services/following/requests/accept.ts
+++ b/src/services/following/requests/accept.ts
@@ -1,11 +1,11 @@
-import { renderActivity } from '../../../remote/activitypub/renderer';
-import renderFollow from '../../../remote/activitypub/renderer/follow';
-import renderAccept from '../../../remote/activitypub/renderer/accept';
-import { deliver } from '../../../queue';
-import { publishMainStream } from '../../stream';
+import { renderActivity } from '@/remote/activitypub/renderer/index';
+import renderFollow from '@/remote/activitypub/renderer/follow';
+import renderAccept from '@/remote/activitypub/renderer/accept';
+import { deliver } from '@/queue/index';
+import { publishMainStream } from '@/services/stream';
import { insertFollowingDoc } from '../create';
-import { User, ILocalUser } from '../../../models/entities/user';
-import { FollowRequests, Users } from '../../../models';
+import { User, ILocalUser } from '@/models/entities/user';
+import { FollowRequests, Users } from '@/models/index';
import { IdentifiableError } from '@/misc/identifiable-error';
export default async function(followee: { id: User['id']; host: User['host']; uri: User['host']; inbox: User['inbox']; sharedInbox: User['sharedInbox']; }, follower: User) {
diff --git a/src/services/following/requests/cancel.ts b/src/services/following/requests/cancel.ts
index 53c20088ca..8895849857 100644
--- a/src/services/following/requests/cancel.ts
+++ b/src/services/following/requests/cancel.ts
@@ -1,11 +1,11 @@
-import { renderActivity } from '../../../remote/activitypub/renderer';
-import renderFollow from '../../../remote/activitypub/renderer/follow';
-import renderUndo from '../../../remote/activitypub/renderer/undo';
-import { deliver } from '../../../queue';
-import { publishMainStream } from '../../stream';
+import { renderActivity } from '@/remote/activitypub/renderer/index';
+import renderFollow from '@/remote/activitypub/renderer/follow';
+import renderUndo from '@/remote/activitypub/renderer/undo';
+import { deliver } from '@/queue/index';
+import { publishMainStream } from '@/services/stream';
import { IdentifiableError } from '@/misc/identifiable-error';
-import { User, ILocalUser } from '../../../models/entities/user';
-import { Users, FollowRequests } from '../../../models';
+import { User, ILocalUser } from '@/models/entities/user';
+import { Users, FollowRequests } from '@/models/index';
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)) {
diff --git a/src/services/following/requests/create.ts b/src/services/following/requests/create.ts
index 584591b003..507cb2b7d1 100644
--- a/src/services/following/requests/create.ts
+++ b/src/services/following/requests/create.ts
@@ -1,9 +1,9 @@
-import { publishMainStream } from '../../stream';
-import { renderActivity } from '../../../remote/activitypub/renderer';
-import renderFollow from '../../../remote/activitypub/renderer/follow';
-import { deliver } from '../../../queue';
-import { User } from '../../../models/entities/user';
-import { Blockings, FollowRequests, Users } from '../../../models';
+import { publishMainStream } from '@/services/stream';
+import { renderActivity } from '@/remote/activitypub/renderer/index';
+import renderFollow from '@/remote/activitypub/renderer/follow';
+import { deliver } from '@/queue/index';
+import { User } from '@/models/entities/user';
+import { Blockings, FollowRequests, Users } from '@/models/index';
import { genId } from '@/misc/gen-id';
import { createNotification } from '../../create-notification';
diff --git a/src/services/following/requests/reject.ts b/src/services/following/requests/reject.ts
index 45effc5802..41cebd9e41 100644
--- a/src/services/following/requests/reject.ts
+++ b/src/services/following/requests/reject.ts
@@ -1,10 +1,10 @@
-import { renderActivity } from '../../../remote/activitypub/renderer';
-import renderFollow from '../../../remote/activitypub/renderer/follow';
-import renderReject from '../../../remote/activitypub/renderer/reject';
-import { deliver } from '../../../queue';
-import { publishMainStream, publishUserEvent } from '../../stream';
-import { User, ILocalUser } from '../../../models/entities/user';
-import { Users, FollowRequests, Followings } from '../../../models';
+import { renderActivity } from '@/remote/activitypub/renderer/index';
+import renderFollow from '@/remote/activitypub/renderer/follow';
+import renderReject from '@/remote/activitypub/renderer/reject';
+import { deliver } from '@/queue/index';
+import { publishMainStream, publishUserEvent } from '@/services/stream';
+import { User, ILocalUser } from '@/models/entities/user';
+import { Users, FollowRequests, Followings } from '@/models/index';
import { decrementFollowing } from '../delete';
export default async function(followee: { id: User['id']; host: User['host']; uri: User['host'] }, follower: User) {
diff --git a/src/services/i/pin.ts b/src/services/i/pin.ts
index e3a73b5b98..b31beb6e1a 100644
--- a/src/services/i/pin.ts
+++ b/src/services/i/pin.ts
@@ -1,14 +1,14 @@
-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 config from '@/config/index';
+import renderAdd from '@/remote/activitypub/renderer/add';
+import renderRemove from '@/remote/activitypub/renderer/remove';
+import { renderActivity } from '@/remote/activitypub/renderer/index';
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 { User } from '@/models/entities/user';
+import { Note } from '@/models/entities/note';
+import { Notes, UserNotePinings, Users } from '@/models/index';
+import { UserNotePining } from '@/models/entities/user-note-pining';
import { genId } from '@/misc/gen-id';
-import { deliverToFollowers } from '../../remote/activitypub/deliver-manager';
+import { deliverToFollowers } from '@/remote/activitypub/deliver-manager';
import { deliverToRelays } from '../relay';
/**
diff --git a/src/services/i/update.ts b/src/services/i/update.ts
index 8d40b08a85..f700d9b48b 100644
--- a/src/services/i/update.ts
+++ b/src/services/i/update.ts
@@ -1,9 +1,9 @@
-import renderUpdate from '../../remote/activitypub/renderer/update';
-import { renderActivity } from '../../remote/activitypub/renderer';
-import { Users } from '../../models';
-import { User } from '../../models/entities/user';
-import { renderPerson } from '../../remote/activitypub/renderer/person';
-import { deliverToFollowers } from '../../remote/activitypub/deliver-manager';
+import renderUpdate from '@/remote/activitypub/renderer/update';
+import { renderActivity } from '@/remote/activitypub/renderer/index';
+import { Users } from '@/models/index';
+import { User } from '@/models/entities/user';
+import { renderPerson } from '@/remote/activitypub/renderer/person';
+import { deliverToFollowers } from '@/remote/activitypub/deliver-manager';
import { deliverToRelays } from '../relay';
export async function publishToFollowers(userId: User['id']) {
diff --git a/src/services/insert-moderation-log.ts b/src/services/insert-moderation-log.ts
index 8ba64fa34b..00397652ee 100644
--- a/src/services/insert-moderation-log.ts
+++ b/src/services/insert-moderation-log.ts
@@ -1,4 +1,4 @@
-import { ModerationLogs } from '../models';
+import { ModerationLogs } from '@/models/index';
import { genId } from '@/misc/gen-id';
import { User } from '@/models/entities/user';
diff --git a/src/services/instance-actor.ts b/src/services/instance-actor.ts
index 9b9c746061..b3625226c3 100644
--- a/src/services/instance-actor.ts
+++ b/src/services/instance-actor.ts
@@ -1,6 +1,6 @@
import { createSystemUser } from './create-system-user';
-import { ILocalUser } from '../models/entities/user';
-import { Users } from '../models';
+import { ILocalUser } from '@/models/entities/user';
+import { Users } from '@/models/index';
import { Cache } from '@/misc/cache';
const ACTOR_USERNAME = 'instance.actor' as const;
diff --git a/src/services/logger.ts b/src/services/logger.ts
index de62b3aca9..032e43c9ca 100644
--- a/src/services/logger.ts
+++ b/src/services/logger.ts
@@ -4,11 +4,11 @@ import * as chalk from 'chalk';
import * as dateformat from 'dateformat';
import { program } from '../argv';
import { getRepository } from 'typeorm';
-import { Log } from '../models/entities/log';
+import { Log } from '@/models/entities/log';
import { genId } from '@/misc/gen-id';
-import config from '@/config';
+import config from '@/config/index';
-const SyslogPro = require('syslog-pro');
+import SyslogPro from 'syslog-pro';
type Domain = {
name: string;
diff --git a/src/services/messages/create.ts b/src/services/messages/create.ts
index 03e2b93b3a..348b29ec62 100644
--- a/src/services/messages/create.ts
+++ b/src/services/messages/create.ts
@@ -1,17 +1,17 @@
-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 { 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/index';
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';
+import { MessagingMessage } from '@/models/entities/messaging-message';
+import { publishMessagingStream, publishMessagingIndexStream, publishMainStream, publishGroupMessagingStream } from '@/services/stream';
+import { pushNotification } from '@/services/push-notification';
import { Not } from 'typeorm';
-import { Note } from '../../models/entities/note';
-import renderNote from '../../remote/activitypub/renderer/note';
-import renderCreate from '../../remote/activitypub/renderer/create';
-import { renderActivity } from '../../remote/activitypub/renderer';
-import { deliver } from '../../queue';
+import { Note } from '@/models/entities/note';
+import renderNote from '@/remote/activitypub/renderer/note';
+import renderCreate from '@/remote/activitypub/renderer/create';
+import { renderActivity } from '@/remote/activitypub/renderer/index';
+import { deliver } from '@/queue/index';
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 = {
diff --git a/src/services/messages/delete.ts b/src/services/messages/delete.ts
index 522815e554..5c299c9a50 100644
--- a/src/services/messages/delete.ts
+++ b/src/services/messages/delete.ts
@@ -1,11 +1,11 @@
-import config from '@/config';
-import { MessagingMessages, Users } from '../../models';
-import { MessagingMessage } from '../../models/entities/messaging-message';
-import { publishGroupMessagingStream, publishMessagingStream } from '../stream';
-import { renderActivity } from '../../remote/activitypub/renderer';
-import renderDelete from '../../remote/activitypub/renderer/delete';
-import renderTombstone from '../../remote/activitypub/renderer/tombstone';
-import { deliver } from '../../queue';
+import config from '@/config/index';
+import { MessagingMessages, Users } from '@/models/index';
+import { MessagingMessage } from '@/models/entities/messaging-message';
+import { publishGroupMessagingStream, publishMessagingStream } from '@/services/stream';
+import { renderActivity } from '@/remote/activitypub/renderer/index';
+import renderDelete from '@/remote/activitypub/renderer/delete';
+import renderTombstone from '@/remote/activitypub/renderer/tombstone';
+import { deliver } from '@/queue/index';
export async function deleteMessage(message: MessagingMessage) {
await MessagingMessages.delete(message.id);
diff --git a/src/services/note/create.ts b/src/services/note/create.ts
index b9b39d25e4..8c996bdba6 100644
--- a/src/services/note/create.ts
+++ b/src/services/note/create.ts
@@ -1,29 +1,29 @@
import * as mfm from 'mfm-js';
import es from '../../db/elasticsearch';
-import { publishMainStream, publishNotesStream } from '../stream';
-import DeliverManager from '../../remote/activitypub/deliver-manager';
-import renderNote from '../../remote/activitypub/renderer/note';
-import renderCreate from '../../remote/activitypub/renderer/create';
-import renderAnnounce from '../../remote/activitypub/renderer/announce';
-import { renderActivity } from '../../remote/activitypub/renderer';
-import { resolveUser } from '../../remote/resolve-user';
-import config from '@/config';
+import { publishMainStream, publishNotesStream } from '@/services/stream';
+import DeliverManager from '@/remote/activitypub/deliver-manager';
+import renderNote from '@/remote/activitypub/renderer/note';
+import renderCreate from '@/remote/activitypub/renderer/create';
+import renderAnnounce from '@/remote/activitypub/renderer/announce';
+import { renderActivity } from '@/remote/activitypub/renderer/index';
+import { resolveUser } from '@/remote/resolve-user';
+import config from '@/config/index';
import { updateHashtags } from '../update-hashtag';
-import { concat } from '../../prelude/array';
+import { concat } from '@/prelude/array';
import insertNoteUnread from './unread';
import { registerOrFetchInstanceDoc } from '../register-or-fetch-instance-doc';
import { extractMentions } from '@/misc/extract-mentions';
import { extractCustomEmojisFromMfm } from '@/misc/extract-custom-emojis-from-mfm';
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 { Note, IMentionedRemoteUsers } from '@/models/entities/note';
+import { Mutings, Users, NoteWatchings, Notes, Instances, UserProfiles, Antennas, Followings, MutedNotes, Channels, ChannelFollowings, Blockings } from '@/models/index';
+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 { User, ILocalUser, IRemoteUser } from '@/models/entities/user';
import { genId } from '@/misc/gen-id';
-import { notesChart, perUserNotesChart, activeUsersChart, instanceChart } from '../chart';
-import { Poll, IPoll } from '../../models/entities/poll';
+import { notesChart, perUserNotesChart, activeUsersChart, instanceChart } from '@/services/chart/index';
+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';
@@ -31,7 +31,7 @@ import { checkWordMute } from '@/misc/check-word-mute';
import { addNoteToAntenna } from '../add-note-to-antenna';
import { countSameRenotes } from '@/misc/count-same-renotes';
import { deliverToRelays } from '../relay';
-import { Channel } from '../../models/entities/channel';
+import { Channel } from '@/models/entities/channel';
import { normalizeForSearch } from '@/misc/normalize-for-search';
import { getAntennas } from '@/misc/antenna-cache';
@@ -265,8 +265,10 @@ export default async (user: { id: User['id']; username: User['username']; host:
.andWhere(`following.followeeId = :userId`, { userId: note.userId })
.getMany()
.then(async followings => {
+ const blockings = await Blockings.find({ blockerId: user.id }); // TODO: キャッシュしたい
const followers = followings.map(f => f.followerId);
for (const antenna of (await getAntennas())) {
+ if (blockings.some(blocking => blocking.blockeeId === antenna.userId)) continue; // この処理は checkHitAntenna 内でやるようにしてもいいかも
checkHitAntenna(antenna, note, user, followers).then(hit => {
if (hit) {
addNoteToAntenna(antenna, note, user);
diff --git a/src/services/note/delete.ts b/src/services/note/delete.ts
index a7ac86e106..a14d84e7b2 100644
--- a/src/services/note/delete.ts
+++ b/src/services/note/delete.ts
@@ -1,16 +1,16 @@
-import { publishNoteStream } from '../stream';
-import renderDelete from '../../remote/activitypub/renderer/delete';
-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 { publishNoteStream } from '@/services/stream';
+import renderDelete from '@/remote/activitypub/renderer/delete';
+import renderAnnounce from '@/remote/activitypub/renderer/announce';
+import renderUndo from '@/remote/activitypub/renderer/undo';
+import { renderActivity } from '@/remote/activitypub/renderer/index';
+import renderTombstone from '@/remote/activitypub/renderer/tombstone';
+import config from '@/config/index';
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 { User, ILocalUser, IRemoteUser } from '@/models/entities/user';
+import { Note, IMentionedRemoteUsers } from '@/models/entities/note';
+import { Notes, Users, Instances } from '@/models/index';
+import { notesChart, perUserNotesChart, instanceChart } from '@/services/chart/index';
+import { deliverToFollowers, deliverToUser } from '@/remote/activitypub/deliver-manager';
import { countSameRenotes } from '@/misc/count-same-renotes';
import { deliverToRelays } from '../relay';
import { Brackets, In } from 'typeorm';
diff --git a/src/services/note/polls/update.ts b/src/services/note/polls/update.ts
index a33efab668..a22ce8e373 100644
--- a/src/services/note/polls/update.ts
+++ b/src/services/note/polls/update.ts
@@ -1,9 +1,9 @@
-import renderUpdate from '../../../remote/activitypub/renderer/update';
-import { renderActivity } from '../../../remote/activitypub/renderer';
-import renderNote from '../../../remote/activitypub/renderer/note';
-import { Users, Notes } from '../../../models';
-import { Note } from '../../../models/entities/note';
-import { deliverToFollowers } from '../../../remote/activitypub/deliver-manager';
+import renderUpdate from '@/remote/activitypub/renderer/update';
+import { renderActivity } from '@/remote/activitypub/renderer/index';
+import renderNote from '@/remote/activitypub/renderer/note';
+import { Users, Notes } from '@/models/index';
+import { Note } from '@/models/entities/note';
+import { deliverToFollowers } from '@/remote/activitypub/deliver-manager';
import { deliverToRelays } from '../../relay';
export async function deliverQuestionUpdate(noteId: Note['id']) {
diff --git a/src/services/note/polls/vote.ts b/src/services/note/polls/vote.ts
index aea157e558..886a09dde9 100644
--- a/src/services/note/polls/vote.ts
+++ b/src/services/note/polls/vote.ts
@@ -1,7 +1,7 @@
-import { publishNoteStream } from '../../stream';
-import { User } from '../../../models/entities/user';
-import { Note } from '../../../models/entities/note';
-import { PollVotes, NoteWatchings, Polls } from '../../../models';
+import { publishNoteStream } from '@/services/stream';
+import { User } from '@/models/entities/user';
+import { Note } from '@/models/entities/note';
+import { PollVotes, NoteWatchings, Polls, Blockings } from '@/models/index';
import { Not } from 'typeorm';
import { genId } from '@/misc/gen-id';
import { createNotification } from '../../create-notification';
@@ -14,6 +14,17 @@ export default async function(user: User, note: Note, choice: number) {
// Check whether is valid choice
if (poll.choices[choice] == null) throw new Error('invalid choice param');
+ // Check blocking
+ if (note.userId !== user.id) {
+ const block = await Blockings.findOne({
+ blockerId: note.userId,
+ blockeeId: user.id,
+ });
+ if (block) {
+ throw new Error('blocked');
+ }
+ }
+
// if already voted
const exist = await PollVotes.find({
noteId: note.id,
diff --git a/src/services/note/reaction/create.ts b/src/services/note/reaction/create.ts
index ce6ae08b30..308bd4dff7 100644
--- a/src/services/note/reaction/create.ts
+++ b/src/services/note/reaction/create.ts
@@ -1,21 +1,32 @@
-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 { publishNoteStream } from '@/services/stream';
+import { renderLike } from '@/remote/activitypub/renderer/like';
+import DeliverManager from '@/remote/activitypub/deliver-manager';
+import { renderActivity } from '@/remote/activitypub/renderer/index';
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 { User, IRemoteUser } from '@/models/entities/user';
+import { Note } from '@/models/entities/note';
+import { NoteReactions, Users, NoteWatchings, Notes, Emojis, Blockings } from '@/models/index';
import { Not } from 'typeorm';
-import { perUserReactionsChart } from '../../chart';
+import { perUserReactionsChart } from '@/services/chart/index';
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 { NoteReaction } from '../../../models/entities/note-reaction';
+import { NoteReaction } from '@/models/entities/note-reaction';
import { IdentifiableError } from '@/misc/identifiable-error';
export default async (user: { id: User['id']; host: User['host']; }, note: Note, reaction?: string) => {
+ // Check blocking
+ if (note.userId !== user.id) {
+ const block = await Blockings.findOne({
+ blockerId: note.userId,
+ blockeeId: user.id,
+ });
+ if (block) {
+ throw new IdentifiableError('e70412a4-7197-4726-8e74-f3e0deb92aa7');
+ }
+ }
+
// 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 712031fa88..062dbad6f1 100644
--- a/src/services/note/reaction/delete.ts
+++ b/src/services/note/reaction/delete.ts
@@ -1,12 +1,12 @@
-import { publishNoteStream } from '../../stream';
-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 { publishNoteStream } from '@/services/stream';
+import { renderLike } from '@/remote/activitypub/renderer/like';
+import renderUndo from '@/remote/activitypub/renderer/undo';
+import { renderActivity } from '@/remote/activitypub/renderer/index';
+import DeliverManager from '@/remote/activitypub/deliver-manager';
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 { User, IRemoteUser } from '@/models/entities/user';
+import { Note } from '@/models/entities/note';
+import { NoteReactions, Users, Notes } from '@/models/index';
import { decodeReaction } from '@/misc/reaction-lib';
export default async (user: { id: User['id']; host: User['host']; }, note: Note) => {
diff --git a/src/services/note/read.ts b/src/services/note/read.ts
index a661c0a9d0..2e221d553a 100644
--- a/src/services/note/read.ts
+++ b/src/services/note/read.ts
@@ -1,12 +1,12 @@
-import { publishMainStream } from '../stream';
-import { Note } from '../../models/entities/note';
-import { User } from '../../models/entities/user';
-import { NoteUnreads, AntennaNotes, Users, Followings, ChannelFollowings } from '../../models';
+import { publishMainStream } from '@/services/stream';
+import { Note } from '@/models/entities/note';
+import { User } from '@/models/entities/user';
+import { NoteUnreads, AntennaNotes, Users, Followings, ChannelFollowings } from '@/models/index';
import { Not, IsNull, In } from 'typeorm';
-import { Channel } from '../../models/entities/channel';
+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';
+import { PackedNote } from '@/models/repositories/note';
import { readNotificationByQuery } from '@/server/api/common/read-notification';
/**
diff --git a/src/services/note/unread.ts b/src/services/note/unread.ts
index 5cfba0f342..4a9df6083c 100644
--- a/src/services/note/unread.ts
+++ b/src/services/note/unread.ts
@@ -1,7 +1,7 @@
-import { Note } from '../../models/entities/note';
-import { publishMainStream } from '../stream';
-import { User } from '../../models/entities/user';
-import { Mutings, NoteUnreads } from '../../models';
+import { Note } from '@/models/entities/note';
+import { publishMainStream } from '@/services/stream';
+import { User } from '@/models/entities/user';
+import { Mutings, NoteUnreads } from '@/models/index';
import { genId } from '@/misc/gen-id';
export default async function(userId: User['id'], note: Note, params: {
diff --git a/src/services/note/unwatch.ts b/src/services/note/unwatch.ts
index 047ac343be..8ea02fe33c 100644
--- a/src/services/note/unwatch.ts
+++ b/src/services/note/unwatch.ts
@@ -1,6 +1,6 @@
-import { User } from '../../models/entities/user';
-import { NoteWatchings } from '../../models';
-import { Note } from '../../models/entities/note';
+import { User } from '@/models/entities/user';
+import { NoteWatchings } from '@/models/index';
+import { Note } from '@/models/entities/note';
export default async (me: User['id'], note: Note) => {
await NoteWatchings.delete({
diff --git a/src/services/note/watch.ts b/src/services/note/watch.ts
index e333f04286..e457191d99 100644
--- a/src/services/note/watch.ts
+++ b/src/services/note/watch.ts
@@ -1,8 +1,8 @@
-import { User } from '../../models/entities/user';
-import { Note } from '../../models/entities/note';
-import { NoteWatchings } from '../../models';
+import { User } from '@/models/entities/user';
+import { Note } from '@/models/entities/note';
+import { NoteWatchings } from '@/models/index';
import { genId } from '@/misc/gen-id';
-import { NoteWatching } from '../../models/entities/note-watching';
+import { NoteWatching } from '@/models/entities/note-watching';
export default async (me: User['id'], note: Note) => {
// 自分の投稿はwatchできない
diff --git a/src/services/push-notification.ts b/src/services/push-notification.ts
index f5f266a88e..dd1c32f458 100644
--- a/src/services/push-notification.ts
+++ b/src/services/push-notification.ts
@@ -1,6 +1,6 @@
import * as push from 'web-push';
-import config from '@/config';
-import { SwSubscriptions } from '../models';
+import config from '@/config/index';
+import { SwSubscriptions } from '@/models/index';
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 2edf85fd9f..a548ab0497 100644
--- a/src/services/register-or-fetch-instance-doc.ts
+++ b/src/services/register-or-fetch-instance-doc.ts
@@ -1,6 +1,6 @@
-import { Instance } from '../models/entities/instance';
-import { Instances } from '../models';
-import { federationChart } from './chart';
+import { Instance } from '@/models/entities/instance';
+import { Instances } from '@/models/index';
+import { federationChart } from '@/services/chart/index';
import { genId } from '@/misc/gen-id';
import { toPuny } from '@/misc/convert-host';
import { Cache } from '@/misc/cache';
diff --git a/src/services/relay.ts b/src/services/relay.ts
index a2cc711bd3..04775524fa 100644
--- a/src/services/relay.ts
+++ b/src/services/relay.ts
@@ -1,10 +1,10 @@
import { createSystemUser } from './create-system-user';
-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, User } from '../models/entities/user';
-import { Users, Relays } from '../models';
+import { renderFollowRelay } from '@/remote/activitypub/renderer/follow-relay';
+import { renderActivity, attachLdSignature } from '@/remote/activitypub/renderer/index';
+import renderUndo from '@/remote/activitypub/renderer/undo';
+import { deliver } from '@/queue/index';
+import { ILocalUser, User } from '@/models/entities/user';
+import { Users, Relays } from '@/models/index';
import { genId } from '@/misc/gen-id';
const ACTOR_USERNAME = 'relay.actor' as const;
diff --git a/src/services/send-email-notification.ts b/src/services/send-email-notification.ts
index ad17429516..519d56a06b 100644
--- a/src/services/send-email-notification.ts
+++ b/src/services/send-email-notification.ts
@@ -1,7 +1,7 @@
-import { UserProfiles } from '../models';
-import { User } from '../models/entities/user';
+import { UserProfiles } from '@/models/index';
+import { User } from '@/models/entities/user';
import { sendEmail } from './send-email';
-import * as locales from '../../locales/';
+import * as locales from '../../locales/index';
import { I18n } from '@/misc/i18n';
import { getAcct } from '@/misc/acct';
diff --git a/src/services/send-email.ts b/src/services/send-email.ts
index 4784ba5510..d24168ec46 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 Logger from './logger';
-import config from '@/config';
+import config from '@/config/index';
export const logger = new Logger('email');
diff --git a/src/services/stream.ts b/src/services/stream.ts
index 6258dc5a7d..4db1a77395 100644
--- a/src/services/stream.ts
+++ b/src/services/stream.ts
@@ -1,12 +1,12 @@
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 { Antenna } from '../models/entities/antenna';
-import { Channel } from '../models/entities/channel';
+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/index';
+import { Antenna } from '@/models/entities/antenna';
+import { Channel } from '@/models/entities/channel';
class Publisher {
private publish = (channel: string, type: string | null, value?: any): void => {
diff --git a/src/services/suspend-user.ts b/src/services/suspend-user.ts
index c868c01305..55be63172f 100644
--- a/src/services/suspend-user.ts
+++ b/src/services/suspend-user.ts
@@ -1,9 +1,9 @@
-import renderDelete from '../remote/activitypub/renderer/delete';
-import { renderActivity } from '../remote/activitypub/renderer';
-import { deliver } from '../queue';
-import config from '@/config';
-import { User } from '../models/entities/user';
-import { Users, Followings } from '../models';
+import renderDelete from '@/remote/activitypub/renderer/delete';
+import { renderActivity } from '@/remote/activitypub/renderer/index';
+import { deliver } from '@/queue/index';
+import config from '@/config/index';
+import { User } from '@/models/entities/user';
+import { Users, Followings } from '@/models/index';
import { Not, IsNull } from 'typeorm';
export async function doPostSuspend(user: { id: User['id']; host: User['host'] }) {
diff --git a/src/services/unsuspend-user.ts b/src/services/unsuspend-user.ts
index 5bc4bba423..bfffa036e5 100644
--- a/src/services/unsuspend-user.ts
+++ b/src/services/unsuspend-user.ts
@@ -1,10 +1,10 @@
-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 { User } from '../models/entities/user';
-import { Users, Followings } from '../models';
+import renderDelete from '@/remote/activitypub/renderer/delete';
+import renderUndo from '@/remote/activitypub/renderer/undo';
+import { renderActivity } from '@/remote/activitypub/renderer/index';
+import { deliver } from '@/queue/index';
+import config from '@/config/index';
+import { User } from '@/models/entities/user';
+import { Users, Followings } from '@/models/index';
import { Not, IsNull } from 'typeorm';
export async function doPostUnsuspend(user: User) {
diff --git a/src/services/update-hashtag.ts b/src/services/update-hashtag.ts
index 6b7208f005..e8504f6ff0 100644
--- a/src/services/update-hashtag.ts
+++ b/src/services/update-hashtag.ts
@@ -1,8 +1,8 @@
-import { User } from '../models/entities/user';
-import { Hashtags, Users } from '../models';
-import { hashtagChart } from './chart';
+import { User } from '@/models/entities/user';
+import { Hashtags, Users } from '@/models/index';
+import { hashtagChart } from '@/services/chart/index';
import { genId } from '@/misc/gen-id';
-import { Hashtag } from '../models/entities/hashtag';
+import { Hashtag } from '@/models/entities/hashtag';
import { normalizeForSearch } from '@/misc/normalize-for-search';
export async function updateHashtags(user: { id: User['id']; host: User['host']; }, tags: string[]) {
diff --git a/src/services/user-list/push.ts b/src/services/user-list/push.ts
index 3dd9a8576b..29d561b519 100644
--- a/src/services/user-list/push.ts
+++ b/src/services/user-list/push.ts
@@ -1,8 +1,8 @@
-import { publishUserListStream } from '../stream';
-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 { publishUserListStream } from '@/services/stream';
+import { User } from '@/models/entities/user';
+import { UserList } from '@/models/entities/user-list';
+import { UserListJoinings, Users } from '@/models/index';
+import { UserListJoining } from '@/models/entities/user-list-joining';
import { genId } from '@/misc/gen-id';
import { fetchProxyAccount } from '@/misc/fetch-proxy-account';
import createFollowing from '../following/create';
diff --git a/src/tools/accept-migration.ts b/src/tools/accept-migration.ts
index 0622869398..2e54fc129f 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/index';
createConnection({
type: 'postgres',
diff --git a/src/tools/add-emoji.ts b/src/tools/add-emoji.ts
index ca25d1348b..9ffe7dfa81 100644
--- a/src/tools/add-emoji.ts
+++ b/src/tools/add-emoji.ts
@@ -1,4 +1,4 @@
-import { Emojis } from '../models';
+import { Emojis } from '@/models/index';
import { genId } from '@/misc/gen-id';
async function main(name: string, url: string, alias?: string): Promise {
diff --git a/src/tools/demote-admin.ts b/src/tools/demote-admin.ts
index 5e3e64bffb..d7c6d1cec2 100644
--- a/src/tools/demote-admin.ts
+++ b/src/tools/demote-admin.ts
@@ -1,6 +1,6 @@
import { initDb } from '../db/postgre';
import { getRepository } from 'typeorm';
-import { User } from '../models/entities/user';
+import { User } from '@/models/entities/user';
async function main(username: string) {
if (!username) throw `username required`;
diff --git a/src/tools/mark-admin.ts b/src/tools/mark-admin.ts
index 5844bb464e..62ed0f09ee 100644
--- a/src/tools/mark-admin.ts
+++ b/src/tools/mark-admin.ts
@@ -1,6 +1,6 @@
import { initDb } from '../db/postgre';
import { getRepository } from 'typeorm';
-import { User } from '../models/entities/user';
+import { User } from '@/models/entities/user';
async function main(username: string) {
if (!username) throw `username required`;
diff --git a/src/tools/refresh-question.ts b/src/tools/refresh-question.ts
index 83d71ff303..98a3c2865f 100644
--- a/src/tools/refresh-question.ts
+++ b/src/tools/refresh-question.ts
@@ -1,4 +1,4 @@
-import { updateQuestion } from '../remote/activitypub/models/question';
+import { updateQuestion } from '@/remote/activitypub/models/question';
async function main(uri: string): Promise {
return await updateQuestion(uri);
diff --git a/src/tools/resync-remote-user.ts b/src/tools/resync-remote-user.ts
index ad2e231eb5..bc43e250cb 100644
--- a/src/tools/resync-remote-user.ts
+++ b/src/tools/resync-remote-user.ts
@@ -3,7 +3,7 @@ import { parseAcct } from '@/misc/acct';
async function main(acct: string): Promise {
await initDb();
- const { resolveUser } = await import('../remote/resolve-user');
+ const { resolveUser } = await import('@/remote/resolve-user');
const { username, host } = parseAcct(acct);
await resolveUser(username, host, {}, true);
diff --git a/src/tools/show-signin-history.ts b/src/tools/show-signin-history.ts
index fd7cd39e38..ad92316314 100644
--- a/src/tools/show-signin-history.ts
+++ b/src/tools/show-signin-history.ts
@@ -1,4 +1,4 @@
-import { Users, Signins } from '../models';
+import { Users, Signins } from '@/models/index';
// node built/tools/show-signin-history username
// => {Success} {Date} {IPAddrsss}
diff --git a/src/tsconfig.json b/src/tsconfig.json
index 9389008eef..4a03a17432 100644
--- a/src/tsconfig.json
+++ b/src/tsconfig.json
@@ -12,6 +12,7 @@
"target": "es2017",
"module": "commonjs",
"moduleResolution": "node",
+ "allowSyntheticDefaultImports": true,
"removeComments": false,
"noLib": false,
"strict": true,
diff --git a/test/activitypub.ts b/test/activitypub.ts
index 5699a8c8de..777e7f355b 100644
--- a/test/activitypub.ts
+++ b/test/activitypub.ts
@@ -1,12 +1,3 @@
-/*
- * Tests for ActivityPub
- *
- * How to run the tests:
- * > npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT="./test/tsconfig.json" mocha test/activitypub.ts --require ts-node/register
- *
- * To specify test:
- * > npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT="./test/tsconfig.json" npx mocha test/activitypub.ts --require ts-node/register -g 'test name'
- */
process.env.NODE_ENV = 'test';
import rndstr from 'rndstr';
@@ -70,4 +61,34 @@ describe('ActivityPub', () => {
assert.deepStrictEqual(note?.text, post.content);
});
});
+
+ describe('Truncate long name', () => {
+ const host = 'https://host1.test';
+ const preferredUsername = `${rndstr('A-Z', 4)}${rndstr('a-z', 4)}`;
+ const actorId = `${host}/users/${preferredUsername.toLowerCase()}`;
+
+ const name = rndstr('0-9a-z', 129);
+
+ const actor = {
+ '@context': 'https://www.w3.org/ns/activitystreams',
+ id: actorId,
+ type: 'Person',
+ preferredUsername,
+ name,
+ inbox: `${actorId}/inbox`,
+ outbox: `${actorId}/outbox`,
+ };
+
+ it('Actor', async () => {
+ const { MockResolver } = await import('./misc/mock-resolver');
+ const { createPerson } = await import('../src/remote/activitypub/models/person');
+
+ const resolver = new MockResolver();
+ resolver._register(actor.id, actor);
+
+ const user = await createPerson(actor.id, resolver);
+
+ assert.deepStrictEqual(user.name, actor.name.substr(0, 128));
+ });
+ });
});
diff --git a/test/api-visibility.ts b/test/api-visibility.ts
index 6548146c78..ade7b730b3 100644
--- a/test/api-visibility.ts
+++ b/test/api-visibility.ts
@@ -1,13 +1,3 @@
-/*
- * Tests of API (visibility)
- *
- * How to run the tests:
- * > npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true npx mocha test/api-visibility.ts --require ts-node/register
- *
- * To specify test:
- * > npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true npx mocha test/api-visibility.ts --require ts-node/register -g 'test name'
- */
-
process.env.NODE_ENV = 'test';
import * as assert from 'assert';
diff --git a/test/api.ts b/test/api.ts
index 68ab2aa179..99fb196dcd 100644
--- a/test/api.ts
+++ b/test/api.ts
@@ -1,12 +1,3 @@
-/*
- * Tests of API
- *
- * How to run the tests:
- * > npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true npx mocha test/api.ts --require ts-node/register
- *
- * To specify test:
- * > npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true npx mocha test/api.ts --require ts-node/register -g 'test name'
- */
/*
process.env.NODE_ENV = 'test';
diff --git a/test/block.ts b/test/block.ts
new file mode 100644
index 0000000000..6d9efb77b7
--- /dev/null
+++ b/test/block.ts
@@ -0,0 +1,85 @@
+process.env.NODE_ENV = 'test';
+
+import * as assert from 'assert';
+import * as childProcess from 'child_process';
+import { async, signup, request, post, startServer, shutdownServer } from './utils';
+
+describe('Block', () => {
+ let p: childProcess.ChildProcess;
+
+ // alice blocks bob
+ let alice: any;
+ let bob: any;
+ let carol: any;
+
+ before(async () => {
+ p = await startServer();
+ alice = await signup({ username: 'alice' });
+ bob = await signup({ username: 'bob' });
+ carol = await signup({ username: 'carol' });
+ });
+
+ after(async () => {
+ await shutdownServer(p);
+ });
+
+ it('Block作成', async(async () => {
+ const res = await request('/blocking/create', {
+ userId: bob.id
+ }, alice);
+
+ assert.strictEqual(res.status, 200);
+ }));
+
+ it('ブロックされているユーザーをフォローできない', async(async () => {
+ const res = await request('/following/create', { userId: alice.id }, bob);
+
+ assert.strictEqual(res.status, 400);
+ assert.strictEqual(res.body.error.id, 'c4ab57cc-4e41-45e9-bfd9-584f61e35ce0');
+ }));
+
+ it('ブロックされているユーザーにリアクションできない', async(async () => {
+ const note = await post(alice, { text: 'hello' });
+
+ const res = await request('/notes/reactions/create', { noteId: note.id, reaction: '👍' }, bob);
+
+ assert.strictEqual(res.status, 400);
+ assert.strictEqual(res.body.error.id, '20ef5475-9f38-4e4c-bd33-de6d979498ec');
+ }));
+
+ it('ブロックされているユーザーに返信できない', async(async () => {
+ const note = await post(alice, { text: 'hello' });
+
+ const res = await request('/notes/create', { replyId: note.id, text: 'yo' }, bob);
+
+ assert.strictEqual(res.status, 400);
+ assert.strictEqual(res.body.error.id, 'b390d7e1-8a5e-46ed-b625-06271cafd3d3');
+ }));
+
+ it('ブロックされているユーザーのノートをRenoteできない', async(async () => {
+ const note = await post(alice, { text: 'hello' });
+
+ const res = await request('/notes/create', { renoteId: note.id, text: 'yo' }, bob);
+
+ assert.strictEqual(res.status, 400);
+ assert.strictEqual(res.body.error.id, 'b390d7e1-8a5e-46ed-b625-06271cafd3d3');
+ }));
+
+ // TODO: ユーザーリストに入れられないテスト
+
+ // TODO: ユーザーリストから除外されるテスト
+
+ it('タイムライン(LTL)にブロックされているユーザーの投稿が含まれない', async(async () => {
+ const aliceNote = await post(alice);
+ const bobNote = await post(bob);
+ const carolNote = await post(carol);
+
+ const res = await request('/notes/local-timeline', {}, bob);
+
+ assert.strictEqual(res.status, 200);
+ assert.strictEqual(Array.isArray(res.body), true);
+ assert.strictEqual(res.body.some((note: any) => note.id === aliceNote.id), false);
+ assert.strictEqual(res.body.some((note: any) => note.id === bobNote.id), true);
+ assert.strictEqual(res.body.some((note: any) => note.id === carolNote.id), true);
+ }));
+});
diff --git a/test/chart.ts b/test/chart.ts
index 4a40b25534..935ac9d8e1 100644
--- a/test/chart.ts
+++ b/test/chart.ts
@@ -1,13 +1,3 @@
-/*
- * Tests of chart engine
- *
- * How to run the tests:
- * > npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true npx mocha test/chart.ts --require ts-node/register
- *
- * To specify test:
- * > npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true npx mocha test/chart.ts --require ts-node/register -g 'test name'
- */
-
process.env.NODE_ENV = 'test';
import * as assert from 'assert';
diff --git a/test/fetch-resource.ts b/test/fetch-resource.ts
index 31308b08fa..6efe76d8b8 100644
--- a/test/fetch-resource.ts
+++ b/test/fetch-resource.ts
@@ -1,13 +1,3 @@
-/*
- * Tests for Fetch resource
- *
- * How to run the tests:
- * > npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true npx mocha test/fetch-resource.ts --require ts-node/register
- *
- * To specify test:
- * > npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true npx mocha test/fetch-resource.ts --require ts-node/register -g 'test name'
- */
-
process.env.NODE_ENV = 'test';
import * as assert from 'assert';
diff --git a/test/get-file-info.ts b/test/get-file-info.ts
index 57c021feae..cc9eefbfc6 100644
--- a/test/get-file-info.ts
+++ b/test/get-file-info.ts
@@ -1,13 +1,3 @@
-/*
- * Tests for detection of file information
- *
- * How to run the tests:
- * > npx cross-env TS_NODE_FILES=true npx mocha test/get-file-info.ts --require ts-node/register
- *
- * To specify test:
- * > npx cross-env TS_NODE_FILES=true npx mocha test/get-file-info.ts --require ts-node/register -g 'test name'
- */
-
import * as assert from 'assert';
import { async } from './utils';
import { getFileInfo } from '../src/misc/get-file-info';
diff --git a/test/mfm.ts b/test/mfm.ts
index 3f997878b5..d9b98cdac3 100644
--- a/test/mfm.ts
+++ b/test/mfm.ts
@@ -1,13 +1,3 @@
-/*
- * Tests of MFM
- *
- * How to run the tests:
- * > npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true npx mocha test/mfm.ts --require ts-node/register
- *
- * To specify test:
- * > npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true npx mocha test/mfm.ts --require ts-node/register -g 'test name'
- */
-
import * as assert from 'assert';
import * as mfm from 'mfm-js';
diff --git a/test/mute.ts b/test/mute.ts
index 632f60fa43..ecac310758 100644
--- a/test/mute.ts
+++ b/test/mute.ts
@@ -1,13 +1,3 @@
-/*
- * Tests of mute
- *
- * How to run the tests:
- * > npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true npx mocha test/mute.ts --require ts-node/register
- *
- * To specify test:
- * > npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true npx mocha test/mute.ts --require ts-node/register -g 'test name'
- */
-
process.env.NODE_ENV = 'test';
import * as assert from 'assert';
diff --git a/test/note.ts b/test/note.ts
index 31aaf00da6..ab8b6b1903 100644
--- a/test/note.ts
+++ b/test/note.ts
@@ -1,13 +1,3 @@
-/*
- * Tests of Note
- *
- * How to run the tests:
- * > npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true npx mocha test/note.ts --require ts-node/register
- *
- * To specify test:
- * > npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true npx mocha test/note.ts --require ts-node/register -g 'test name'
- */
-
process.env.NODE_ENV = 'test';
import * as assert from 'assert';
diff --git a/test/prelude/maybe.ts b/test/prelude/maybe.ts
index d3f17481f8..2687a739a0 100644
--- a/test/prelude/maybe.ts
+++ b/test/prelude/maybe.ts
@@ -1,13 +1,3 @@
-/*
- * Tests of Maybe
- *
- * How to run the tests:
- * > npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true npx mocha test/prelude/maybe.ts --require ts-node/register
- *
- * To specify test:
- * > npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true npx mocha test/prelude/maybe.ts --require ts-node/register -g 'test name'
- */
-
import * as assert from 'assert';
import { just, nothing } from '../../src/prelude/maybe';
diff --git a/test/reaction-lib.ts b/test/reaction-lib.ts
index 5837b5be1f..59c07de001 100644
--- a/test/reaction-lib.ts
+++ b/test/reaction-lib.ts
@@ -1,13 +1,3 @@
-/*
- * Tests of MFM
- *
- * How to run the tests:
- * > npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true npx mocha test/reaction-lib.ts --require ts-node/register
- *
- * To specify test:
- * > npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true npx mocha test/reaction-lib.ts --require ts-node/register -g 'test name'
- */
-
/*
import * as assert from 'assert';
diff --git a/test/streaming.ts b/test/streaming.ts
index cc3168e98d..e4b651aa9f 100644
--- a/test/streaming.ts
+++ b/test/streaming.ts
@@ -1,13 +1,3 @@
-/*
- * Tests of streaming API
- *
- * How to run the tests:
- * > npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true npx mocha test/streaming.ts --require ts-node/register
- *
- * To specify test:
- * > npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true npx mocha test/streaming.ts --require ts-node/register -g 'test name'
- */
-
process.env.NODE_ENV = 'test';
import * as assert from 'assert';
diff --git a/test/tsconfig.json b/test/tsconfig.json
index 31a537805a..9f9e724ea2 100644
--- a/test/tsconfig.json
+++ b/test/tsconfig.json
@@ -12,6 +12,7 @@
"target": "es2017",
"module": "commonjs",
"moduleResolution": "node",
+ "allowSyntheticDefaultImports": true,
"removeComments": false,
"noLib": false,
"strict": true,
diff --git a/test/user-notes.ts b/test/user-notes.ts
index 30589f8149..c90c07d75f 100644
--- a/test/user-notes.ts
+++ b/test/user-notes.ts
@@ -1,13 +1,3 @@
-/*
- * Tests of Note
- *
- * How to run the tests:
- * > npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true npx mocha test/user-notes.ts --require ts-node/register
- *
- * To specify test:
- * > npx cross-env TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true npx mocha test/user-notes.ts --require ts-node/register -g 'test name'
- */
-
process.env.NODE_ENV = 'test';
import * as assert from 'assert';
diff --git a/yarn.lock b/yarn.lock
index a5db64f3a6..09fd32f7aa 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -9,118 +9,18 @@
dependencies:
"@babel/highlight" "^7.10.4"
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13":
+"@babel/code-frame@^7.0.0":
version "7.12.13"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658"
integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==
dependencies:
"@babel/highlight" "^7.12.13"
-"@babel/compat-data@^7.13.0":
- version "7.13.6"
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.6.tgz#11972d07db4c2317afdbf41d6feb3a730301ef4e"
- integrity sha512-VhgqKOWYVm7lQXlvbJnWOzwfAQATd2nV52koT0HZ/LdDH0m4DUDwkKYsH+IwpXb+bKPyBJzawA4I6nBKqZcpQw==
-
-"@babel/compat-data@^7.13.11":
- version "7.13.15"
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.15.tgz#7e8eea42d0b64fda2b375b22d06c605222e848f4"
- integrity sha512-ltnibHKR1VnrU4ymHyQ/CXtNXI6yZC0oJThyW78Hft8XndANwi+9H+UIklBDraIjFEJzw8wmcM427oDd9KS5wA==
-
-"@babel/generator@^7.13.0":
- version "7.13.0"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.13.0.tgz#bd00d4394ca22f220390c56a0b5b85568ec1ec0c"
- integrity sha512-zBZfgvBB/ywjx0Rgc2+BwoH/3H+lDtlgD4hBOpEv5LxRnYsm/753iRuLepqnYlynpjC3AdQxtxsoeHJoEEwOAw==
- dependencies:
- "@babel/types" "^7.13.0"
- jsesc "^2.5.1"
- source-map "^0.5.0"
-
-"@babel/helper-compilation-targets@^7.13.0":
- version "7.13.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.0.tgz#c9cf29b82a76fd637f0faa35544c4ace60a155a1"
- integrity sha512-SOWD0JK9+MMIhTQiUVd4ng8f3NXhPVQvTv7D3UN4wbp/6cAHnB2EmMaU1zZA2Hh1gwme+THBrVSqTFxHczTh0Q==
- dependencies:
- "@babel/compat-data" "^7.13.0"
- "@babel/helper-validator-option" "^7.12.17"
- browserslist "^4.14.5"
- semver "7.0.0"
-
-"@babel/helper-define-polyfill-provider@^0.2.2":
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz#0525edec5094653a282688d34d846e4c75e9c0b6"
- integrity sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==
- dependencies:
- "@babel/helper-compilation-targets" "^7.13.0"
- "@babel/helper-module-imports" "^7.12.13"
- "@babel/helper-plugin-utils" "^7.13.0"
- "@babel/traverse" "^7.13.0"
- debug "^4.1.1"
- lodash.debounce "^4.0.8"
- resolve "^1.14.2"
- semver "^6.1.2"
-
-"@babel/helper-function-name@^7.12.13":
- version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz#93ad656db3c3c2232559fd7b2c3dbdcbe0eb377a"
- integrity sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==
- dependencies:
- "@babel/helper-get-function-arity" "^7.12.13"
- "@babel/template" "^7.12.13"
- "@babel/types" "^7.12.13"
-
-"@babel/helper-get-function-arity@^7.12.13":
- version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583"
- integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==
- dependencies:
- "@babel/types" "^7.12.13"
-
-"@babel/helper-module-imports@^7.12.13":
- version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz#ec67e4404f41750463e455cc3203f6a32e93fcb0"
- integrity sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==
- dependencies:
- "@babel/types" "^7.12.13"
-
-"@babel/helper-module-imports@^7.14.5":
- version "7.14.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3"
- integrity sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==
- dependencies:
- "@babel/types" "^7.14.5"
-
-"@babel/helper-plugin-utils@^7.13.0":
- version "7.13.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af"
- integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==
-
-"@babel/helper-plugin-utils@^7.14.5":
- version "7.14.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9"
- integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==
-
-"@babel/helper-split-export-declaration@^7.12.13":
- version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05"
- integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==
- dependencies:
- "@babel/types" "^7.12.13"
-
"@babel/helper-validator-identifier@^7.12.11":
version "7.12.11"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==
-"@babel/helper-validator-identifier@^7.14.5":
- version "7.14.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz#d0f0e277c512e0c938277faa85a3968c9a44c0e8"
- integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg==
-
-"@babel/helper-validator-option@^7.12.17":
- version "7.12.17"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831"
- integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==
-
"@babel/highlight@^7.10.4", "@babel/highlight@^7.12.13":
version "7.12.13"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.12.13.tgz#8ab538393e00370b26271b01fa08f7f27f2e795c"
@@ -130,7 +30,7 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
-"@babel/parser@^7.12.0", "@babel/parser@^7.12.13", "@babel/parser@^7.13.0", "@babel/parser@^7.6.0", "@babel/parser@^7.9.6":
+"@babel/parser@^7.12.0", "@babel/parser@^7.6.0", "@babel/parser@^7.9.6":
version "7.13.9"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.9.tgz#ca34cb95e1c2dd126863a84465ae8ef66114be99"
integrity sha512-nEUfRiARCcaVo3ny3ZQjURjHQZUo/JkEw7rLlSZy/psWGnvwXFtPcr6jb7Yb41DVW5LTe6KRq9LGleRNsg1Frw==
@@ -140,18 +40,6 @@
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.13.tgz#42f03862f4aed50461e543270916b47dd501f0df"
integrity sha512-OhsyMrqygfk5v8HmWwOzlYjJrtLaFhF34MrfG/Z73DgYCI6ojNUTUp2TYbtnjo8PegeJp12eamsNettCQjKjVw==
-"@babel/plugin-transform-runtime@7.14.5":
- version "7.14.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.14.5.tgz#30491dad49c6059f8f8fa5ee8896a0089e987523"
- integrity sha512-fPMBhh1AV8ZyneiCIA+wYYUH1arzlXR1UMcApjvchDhfKxhy2r2lReJv8uHEyihi4IFIGlr1Pdx7S5fkESDQsg==
- dependencies:
- "@babel/helper-module-imports" "^7.14.5"
- "@babel/helper-plugin-utils" "^7.14.5"
- babel-plugin-polyfill-corejs2 "^0.2.2"
- babel-plugin-polyfill-corejs3 "^0.2.2"
- babel-plugin-polyfill-regenerator "^0.2.2"
- semver "^6.3.0"
-
"@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2":
version "7.12.13"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.13.tgz#0a21452352b02542db0ffb928ac2d3ca7cb6d66d"
@@ -159,31 +47,7 @@
dependencies:
regenerator-runtime "^0.13.4"
-"@babel/template@^7.12.13":
- version "7.12.13"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327"
- integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==
- dependencies:
- "@babel/code-frame" "^7.12.13"
- "@babel/parser" "^7.12.13"
- "@babel/types" "^7.12.13"
-
-"@babel/traverse@^7.13.0":
- version "7.13.0"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.13.0.tgz#6d95752475f86ee7ded06536de309a65fc8966cc"
- integrity sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==
- dependencies:
- "@babel/code-frame" "^7.12.13"
- "@babel/generator" "^7.13.0"
- "@babel/helper-function-name" "^7.12.13"
- "@babel/helper-split-export-declaration" "^7.12.13"
- "@babel/parser" "^7.13.0"
- "@babel/types" "^7.13.0"
- debug "^4.1.0"
- globals "^11.1.0"
- lodash "^4.17.19"
-
-"@babel/types@^7.12.0", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.6.1", "@babel/types@^7.9.6":
+"@babel/types@^7.12.0", "@babel/types@^7.13.0", "@babel/types@^7.6.1", "@babel/types@^7.9.6":
version "7.13.0"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.0.tgz#74424d2816f0171b4100f0ab34e9a374efdf7f80"
integrity sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==
@@ -192,19 +56,57 @@
lodash "^4.17.19"
to-fast-properties "^2.0.0"
-"@babel/types@^7.14.5":
- version "7.14.5"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.5.tgz#3bb997ba829a2104cedb20689c4a5b8121d383ff"
- integrity sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg==
+"@cspotcode/source-map-consumer@0.8.0":
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b"
+ integrity sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==
+
+"@cspotcode/source-map-support@0.6.1":
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.6.1.tgz#118511f316e2e87ee4294761868e254d3da47960"
+ integrity sha512-DX3Z+T5dt1ockmPdobJS/FAsQPW4V4SrWEhD2iYQT2Cb2tQsiMnYxrcUH9By/Z3B+v0S5LMBkQtV/XOBbpLEOg==
dependencies:
- "@babel/helper-validator-identifier" "^7.14.5"
- to-fast-properties "^2.0.0"
+ "@cspotcode/source-map-consumer" "0.8.0"
"@cto.af/textdecoder@^0.0.0":
version "0.0.0"
resolved "https://registry.yarnpkg.com/@cto.af/textdecoder/-/textdecoder-0.0.0.tgz#e1e8d84c936c30a0f4619971f19ca41941af9fdc"
integrity sha512-sJpx3F5xcVV/9jNYJQtvimo4Vfld/nD3ph+ZWtQzZ03Zo8rJC7QKQTRcIGS13Rcz80DwFNthCWMrd58vpY4ZAQ==
+"@cypress/request@^2.88.5":
+ version "2.88.5"
+ resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.5.tgz#8d7ecd17b53a849cfd5ab06d5abe7d84976375d7"
+ integrity sha512-TzEC1XMi1hJkywWpRfD2clreTa/Z+lOrXDCxxBTBPEcY5azdPi56A6Xw+O4tWJnaJH3iIE7G5aDXZC6JgRZLcA==
+ dependencies:
+ aws-sign2 "~0.7.0"
+ aws4 "^1.8.0"
+ caseless "~0.12.0"
+ combined-stream "~1.0.6"
+ extend "~3.0.2"
+ forever-agent "~0.6.1"
+ form-data "~2.3.2"
+ har-validator "~5.1.3"
+ http-signature "~1.2.0"
+ is-typedarray "~1.0.0"
+ isstream "~0.1.2"
+ json-stringify-safe "~5.0.1"
+ mime-types "~2.1.19"
+ oauth-sign "~0.9.0"
+ performance-now "^2.1.0"
+ qs "~6.5.2"
+ safe-buffer "^5.1.2"
+ tough-cookie "~2.5.0"
+ tunnel-agent "^0.6.0"
+ uuid "^3.3.2"
+
+"@cypress/xvfb@^1.2.4":
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/@cypress/xvfb/-/xvfb-1.2.4.tgz#2daf42e8275b39f4aa53c14214e557bd14e7748a"
+ integrity sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==
+ dependencies:
+ debug "^3.1.0"
+ lodash.once "^4.1.1"
+
"@digitalbazaar/http-client@^1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@digitalbazaar/http-client/-/http-client-1.1.0.tgz#cac383b24ace04b18b919deab773462b03d3d7b0"
@@ -230,10 +132,10 @@
pump "^3.0.0"
secure-json-parse "^2.1.0"
-"@eslint/eslintrc@^0.4.2":
- version "0.4.2"
- resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.2.tgz#f63d0ef06f5c0c57d76c4ab5f63d3835c51b0179"
- integrity sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg==
+"@eslint/eslintrc@^0.4.3":
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c"
+ integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==
dependencies:
ajv "^6.12.4"
debug "^4.1.1"
@@ -245,6 +147,18 @@
minimatch "^3.0.4"
strip-json-comments "^3.1.1"
+"@hapi/hoek@^9.0.0":
+ version "9.2.0"
+ resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.2.0.tgz#f3933a44e365864f4dad5db94158106d511e8131"
+ integrity sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug==
+
+"@hapi/topo@^5.0.0":
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012"
+ integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==
+ dependencies:
+ "@hapi/hoek" "^9.0.0"
+
"@humanwhocodes/config-array@^0.5.0":
version "0.5.0"
resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9"
@@ -415,6 +329,23 @@
"@sentry/types" "5.29.2"
tslib "^1.9.3"
+"@sideway/address@^4.1.0":
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.2.tgz#811b84333a335739d3969cfc434736268170cad1"
+ integrity sha512-idTz8ibqWFrPU8kMirL0CoPH/A29XOzzAzpyN3zQ4kAWnzmNfFmRaoMNN6VI8ske5M73HZyhIaW4OuSFIdM4oA==
+ dependencies:
+ "@hapi/hoek" "^9.0.0"
+
+"@sideway/formula@^3.0.0":
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.0.tgz#fe158aee32e6bd5de85044be615bc08478a0a13c"
+ integrity sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg==
+
+"@sideway/pinpoint@^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df"
+ integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==
+
"@sindresorhus/is@^4.0.0":
version "4.0.0"
resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.0.0.tgz#2ff674e9611b45b528896d820d3d7a812de2f0e4"
@@ -457,10 +388,10 @@
dependencies:
defer-to-connect "^2.0.0"
-"@tokenizer/token@^0.1.0", "@tokenizer/token@^0.1.1":
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.1.1.tgz#f0d92c12f87079ddfd1b29f614758b9696bc29e3"
- integrity sha512-XO6INPbZCxdprl+9qa/AAbFFOMzzwqYxpjPgLICrMD6C2FCw6qfJOPcBk6JqqPLSaZ/Qx87qn4rpPmPMwaAK6w==
+"@tokenizer/token@^0.3.0":
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276"
+ integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==
"@tootallnate/once@1":
version "1.1.2"
@@ -487,10 +418,10 @@
resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.0.tgz#5bd046e508b1ee90bc091766758838741fdefd6e"
integrity sha512-RKkL8eTdPv6t5EHgFKIVQgsDapugbuOptNd9OOunN/HAkzmmTnZELx1kNCK0rSdUYGmiFMM3rRQMAWiyp023LQ==
-"@tsconfig/node16@^1.0.1":
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.1.tgz#a6ca6a9a0ff366af433f42f5f0e124794ff6b8f1"
- integrity sha512-FTgBI767POY/lKNDNbIzgAX6miIDBs6NTCbdlDb8TrWovHsSvaVIZDlTqym29C6UqhzwcJx4CYr+AlrMywA0cA==
+"@tsconfig/node16@^1.0.2":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e"
+ integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==
"@types/accepts@*":
version "1.3.5"
@@ -517,10 +448,10 @@
"@types/connect" "*"
"@types/node" "*"
-"@types/bull@3.15.2":
- version "3.15.2"
- resolved "https://registry.yarnpkg.com/@types/bull/-/bull-3.15.2.tgz#b824b0b4fc8d1d9294a20973f6ceedcba1a7f3e8"
- integrity sha512-uMQ7u/4GxY2bSTMd4P2yLkyqu3GoKbwTCDkMHJJ2g9OkiMq0Vxw+C7lF4w+oNkwZzZ2k4Kw76Ncxjd6GMnc+CA==
+"@types/bull@3.15.3":
+ version "3.15.3"
+ resolved "https://registry.yarnpkg.com/@types/bull/-/bull-3.15.3.tgz#c55a7644465547bd77d70a1c80f10aadf58d5dd5"
+ integrity sha512-JL+c8TmfaZVZn5H+tzgt867eHfm408HV1/wS5+sjQnJ3ULxpw5/GwLl6sX6Gmcrte4VTFm+Jz8U0Wy4QVgC4dg==
dependencies:
"@types/ioredis" "*"
@@ -541,12 +472,7 @@
dependencies:
cbor "*"
-"@types/chai@4.2.16":
- version "4.2.16"
- resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.16.tgz#f09cc36e18d28274f942e7201147cce34d97e8c8"
- integrity sha512-vI5iOAsez9+roLS3M3+Xx7w+WRuDtSmF8bQkrbcIJ2sC1PcDgVoA0WGpa+bIrJ+y8zqY2oi//fUctkxtIcXJCw==
-
-"@types/cheerio@^0.22.10":
+"@types/cheerio@0.22.18":
version "0.22.18"
resolved "https://registry.yarnpkg.com/@types/cheerio/-/cheerio-0.22.18.tgz#19018dceae691509901e339d63edf1e935978fe6"
integrity sha512-Fq7R3fINAPSdUEhOyjG4iVxgHrOnqDJbY0/BUuiN0pvD/rfmZWekVZnv+vcs8TtpA2XF50uv50LaE4EnpEL/Hw==
@@ -585,11 +511,6 @@
resolved "https://registry.yarnpkg.com/@types/dateformat/-/dateformat-3.0.1.tgz#98d747a2e5e9a56070c6bf14e27bff56204e34cc"
integrity sha512-KlPPdikagvL6ELjWsljbyDIPzNCeliYkqRpI+zea99vBBbCIA5JNshZAwQKTON139c87y9qvTFVgkFd14rtS4g==
-"@types/debug@^4.1.5":
- version "4.1.5"
- resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.5.tgz#b14efa8852b7768d898906613c23f688713e02cd"
- integrity sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ==
-
"@types/escape-regexp@0.0.0":
version "0.0.0"
resolved "https://registry.yarnpkg.com/@types/escape-regexp/-/escape-regexp-0.0.0.tgz#bff0225f9ef30d0dbdbe0e2a24283ee5342990c3"
@@ -791,10 +712,10 @@
dependencies:
"@types/node" "*"
-"@types/koa-bodyparser@4.3.2":
- version "4.3.2"
- resolved "https://registry.yarnpkg.com/@types/koa-bodyparser/-/koa-bodyparser-4.3.2.tgz#ccedc381adeb81e05cbdffb5d2df2bd99a7e7de9"
- integrity sha512-fjNPSs3qNs/sKVT6O6VdF+RTBd5HLlFtFmAZxWGiOPwCm7+/jhia462Ni30XmCM2ziUbfx2pa79NkHDBI0TgAQ==
+"@types/koa-bodyparser@4.3.3":
+ version "4.3.3"
+ resolved "https://registry.yarnpkg.com/@types/koa-bodyparser/-/koa-bodyparser-4.3.3.tgz#9c7d4295576bc863d550002f732f1c57dd88cc58"
+ integrity sha512-/ileIpXsy1fFEzgZhZ07eZH8rAVL7jwuk/kaoVEfauO6s80g2LIDIJKEyDbuAL9S/BWflKzEC0PHD6aXkmaSbw==
dependencies:
"@types/koa" "*"
@@ -805,10 +726,10 @@
dependencies:
"@types/koa" "*"
-"@types/koa-cors@0.0.1":
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/@types/koa-cors/-/koa-cors-0.0.1.tgz#5c681704938acf45ce871fdb1ca084dc57dd4f97"
- integrity sha512-pSpsfmXQ2pf6h8Jv3S5bKL4OmlcUW29mIcdhB7lb6kduoMNwKF7Ztf7kup2Z8Cst6BwfjnDx+/J9vsvS/jpCbA==
+"@types/koa-cors@0.0.2":
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/@types/koa-cors/-/koa-cors-0.0.2.tgz#369c753fb383640f225579c70a4f9a286b4931b7"
+ integrity sha512-uNaDY26HUVO+2C6arK8ZFODs9mBjYprD8mlvkVe2bYdX9wzEeKtycVXPafXpUkePhMh4sffIMkhRDyedokG/QA==
dependencies:
"@types/koa" "*"
@@ -910,10 +831,10 @@
"@types/linkify-it" "*"
"@types/mdurl" "*"
-"@types/matter-js@0.17.3":
- version "0.17.3"
- resolved "https://registry.yarnpkg.com/@types/matter-js/-/matter-js-0.17.3.tgz#86f6bd1fe7e3652703532057ab1c910e33ec4e60"
- integrity sha512-FWT8dQTDGEKgQ4K8pbg9a1g98lS6jzleVkBjeindpt+7M72+UfS3bU75g1kuborNg1rr2g+KaU7qoZpdi3WS0w==
+"@types/matter-js@0.17.5":
+ version "0.17.5"
+ resolved "https://registry.yarnpkg.com/@types/matter-js/-/matter-js-0.17.5.tgz#b7ddd422cf5980f01531dfed60fc11682a1adbb9"
+ integrity sha512-s4j6htb+NZNQyo2jP96uZ93aPn0fCw0RP1YnEDmKkIKpOVxvNWdEEPPj3U+9xezp3eQChvWOwHcR815rEBWexA==
"@types/mdurl@*":
version "1.0.2"
@@ -935,10 +856,10 @@
resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-8.2.3.tgz#bbeb55fbc73f28ea6de601fbfa4613f58d785323"
integrity sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==
-"@types/node-fetch@2.5.11":
- version "2.5.11"
- resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.11.tgz#ce22a2e65fc8999f4dbdb7ddbbcf187d755169e4"
- integrity sha512-2upCKaqVZETDRb8A2VTaRymqFBEgH8u6yr96b/u3+1uQEPDRo3mJLEiPk7vdXBHRtjwkjqzFYMJXrt0Z9QsYjQ==
+"@types/node-fetch@2.5.12":
+ version "2.5.12"
+ resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.12.tgz#8a6f779b1d4e60b7a57fb6fd48d84fb545b9cc66"
+ integrity sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==
dependencies:
"@types/node" "*"
form-data "^3.0.0"
@@ -948,16 +869,21 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.31.tgz#72286bd33d137aa0d152d47ec7c1762563d34055"
integrity sha512-vFHy/ezP5qI0rFgJ7aQnjDXwAMrG0KqqIH7tQG5PPv3BWBayOPIQNBjVc/P6hhdZfMx51REc6tfDNXHUio893g==
-"@types/node@16.3.3":
- version "16.3.3"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-16.3.3.tgz#0c30adff37bbbc7a50eb9b58fae2a504d0d88038"
- integrity sha512-8h7k1YgQKxKXWckzFCMfsIwn0Y61UK6tlD6y2lOb3hTOIMlK3t9/QwHOhc81TwU+RMf0As5fj7NPjroERCnejQ==
+"@types/node@16.6.2":
+ version "16.6.2"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-16.6.2.tgz#331b7b9f8621c638284787c5559423822fdffc50"
+ integrity sha512-LSw8TZt12ZudbpHc6EkIyDM3nHVWKYrAvGy6EAJfNfjusbwnThqjqxUKKRwuV3iWYeW/LYMzNgaq3MaLffQ2xA==
"@types/node@^14.11.8":
version "14.14.44"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.44.tgz#df7503e6002847b834371c004b372529f3f85215"
integrity sha512-+gaugz6Oce6ZInfI/tK4Pq5wIIkJMEJUu92RB3Eu93mtj4wjjjz9EB5mLp5s1pSsLXdC/CPut/xF20ZzAQJbTA==
+"@types/node@^14.14.31":
+ version "14.17.9"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.17.9.tgz#b97c057e6138adb7b720df2bd0264b03c9f504fd"
+ integrity sha512-CMjgRNsks27IDwI785YMY0KLt3co/c0cQ5foxHYv/shC2w8oOnVwz5Ubq1QG5KzrcW+AXk6gzdnxIkDnTvzu3g==
+
"@types/node@^14.14.41":
version "14.17.0"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.17.0.tgz#3ba770047723b3eeb8dc9fca02cce8a7fb6378da"
@@ -1088,14 +1014,19 @@
dependencies:
"@types/node" "*"
-"@types/rimraf@3.0.1":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@types/rimraf/-/rimraf-3.0.1.tgz#1bbc106f0978742289103e080d4b41b3b4656e58"
- integrity sha512-CAoSlbco40aKZ0CkelBF2g3JeN6aioRaTVnqSX5pWsn/WApm6IDxI4e4tD9D0dY/meCkyyleP1IQDVN13F4maA==
+"@types/rimraf@3.0.2":
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/@types/rimraf/-/rimraf-3.0.2.tgz#a63d175b331748e5220ad48c901d7bbf1f44eef8"
+ integrity sha512-F3OznnSLAUxFrCEu/L5PY8+ny8DtcFRjx7fZZ9bycvXRi3KPTRS9HOitGZwvPg0juRhXFWIeKX58cnX5YqLohQ==
dependencies:
"@types/glob" "*"
"@types/node" "*"
+"@types/rsvp@^4.0.4":
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/@types/rsvp/-/rsvp-4.0.4.tgz#55e93e7054027f1ad4b4ebc1e60e59eb091e2d32"
+ integrity sha512-J3Ol++HCC7/hwZhanDvggFYU/GtxHxE/e7cGRWxR04BF7Tt3TqJZ84BkzQgDxmX0uu8IagiyfmfoUlBACh2Ilg==
+
"@types/seedrandom@2.4.28":
version "2.4.28"
resolved "https://registry.yarnpkg.com/@types/seedrandom/-/seedrandom-2.4.28.tgz#9ce8fa048c1e8c85cb71d7fe4d704e000226036f"
@@ -1109,18 +1040,23 @@
"@types/express-serve-static-core" "*"
"@types/mime" "*"
-"@types/sharp@0.28.4":
- version "0.28.4"
- resolved "https://registry.yarnpkg.com/@types/sharp/-/sharp-0.28.4.tgz#7afdcf979069ddc68a915603fdaa412ada93f833"
- integrity sha512-vfz+RlJU5FgXyyf9w8wc+JwwT8MFI98NZr0272umQegrggAQhTwwb8pKZn0PTtd+j0crXkZDWw5ABG/i6Lu/Lw==
+"@types/sharp@0.28.5":
+ version "0.28.5"
+ resolved "https://registry.yarnpkg.com/@types/sharp/-/sharp-0.28.5.tgz#2095c304e24c310945d6ece7a9fd44b34272c93f"
+ integrity sha512-+RYU1NdKeDtTMau6HBbcVUCWjMiDydW4nRIGnOviwRxZxjJy0LqRdx0+YdxBKHcSlUWIYhD1XtiGQsUtInsjBQ==
dependencies:
"@types/node" "*"
-"@types/sinonjs__fake-timers@6.0.3":
+"@types/sinonjs__fake-timers@6.0.3", "@types/sinonjs__fake-timers@^6.0.2":
version "6.0.3"
resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.3.tgz#79df6f358ae8f79e628fe35a63608a0ea8e7cf08"
integrity sha512-E1dU4fzC9wN2QK2Cr1MLCfyHM8BoNnRFvuf45LYMPNDA+WqbNzC45S4UzPxvp1fFJ1rvSGU0bPvdd35VLmXG8g==
+"@types/sizzle@^2.3.2":
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.3.tgz#ff5e2f1902969d305225a047c8a0fd5c915cebef"
+ integrity sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==
+
"@types/source-list-map@*":
version "0.1.2"
resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9"
@@ -1244,17 +1180,24 @@
"@types/webpack-sources" "*"
source-map "^0.6.0"
-"@types/websocket@1.0.3":
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.3.tgz#49e09f939afd0ccdee4f7108d4712ec9feb0f153"
- integrity sha512-ZdoTSwmDsKR7l1I8fpfQtmTI/hUwlOvE3q0iyJsp4tXU0MkdrYowimDzwxjhQvxU4qjhHLd3a6ig0OXRbLgIdw==
+"@types/websocket@1.0.4":
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.4.tgz#1dc497280d8049a5450854dd698ee7e6ea9e60b8"
+ integrity sha512-qn1LkcFEKK8RPp459jkjzsfpbsx36BBt3oC3pITYtkoBw/aVX+EZFa5j3ThCRTNpLFvIMr5dSTD4RaMdilIOpA==
dependencies:
"@types/node" "*"
-"@types/ws@7.4.6":
- version "7.4.6"
- resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.6.tgz#c4320845e43d45a7129bb32905e28781c71c1fff"
- integrity sha512-ijZ1vzRawI7QoWnTNL8KpHixd2b2XVb9I9HAqI3triPsh1EC0xH0Eg6w2O3TKbDCgiNNlJqfrof6j4T2I+l9vw==
+"@types/ws@7.4.7":
+ version "7.4.7"
+ resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702"
+ integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==
+ dependencies:
+ "@types/node" "*"
+
+"@types/yauzl@^2.9.1":
+ version "2.9.2"
+ resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.2.tgz#c48e5d56aff1444409e39fa164b0b4d4552a7b7a"
+ integrity sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==
dependencies:
"@types/node" "*"
@@ -1263,48 +1206,48 @@
resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.2.tgz#808c9fa7e4517274ed555fa158f2de4b4f468e71"
integrity sha512-HrCIVMLjE1MOozVoD86622S7aunluLb2PJdPfb3nYiEtohm8mIB/vyv0Fd37AdeMFrTUQXEunw78YloMA3Qilg==
-"@typescript-eslint/parser@4.28.3":
- version "4.28.3"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.28.3.tgz#95f1d475c08268edffdcb2779993c488b6434b44"
- integrity sha512-ZyWEn34bJexn/JNYvLQab0Mo5e+qqQNhknxmc8azgNd4XqspVYR5oHq9O11fLwdZMRcj4by15ghSlIEq+H5ltQ==
+"@typescript-eslint/parser@4.29.2":
+ version "4.29.2"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.29.2.tgz#1c7744f4c27aeb74610c955d3dce9250e95c370a"
+ integrity sha512-WQ6BPf+lNuwteUuyk1jD/aHKqMQ9jrdCn7Gxt9vvBnzbpj7aWEf+aZsJ1zvTjx5zFxGCt000lsbD9tQPEL8u6g==
dependencies:
- "@typescript-eslint/scope-manager" "4.28.3"
- "@typescript-eslint/types" "4.28.3"
- "@typescript-eslint/typescript-estree" "4.28.3"
+ "@typescript-eslint/scope-manager" "4.29.2"
+ "@typescript-eslint/types" "4.29.2"
+ "@typescript-eslint/typescript-estree" "4.29.2"
debug "^4.3.1"
-"@typescript-eslint/scope-manager@4.28.3":
- version "4.28.3"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.28.3.tgz#c32ad4491b3726db1ba34030b59ea922c214e371"
- integrity sha512-/8lMisZ5NGIzGtJB+QizQ5eX4Xd8uxedFfMBXOKuJGP0oaBBVEMbJVddQKDXyyB0bPlmt8i6bHV89KbwOelJiQ==
+"@typescript-eslint/scope-manager@4.29.2":
+ version "4.29.2"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.29.2.tgz#442b0f029d981fa402942715b1718ac7fcd5aa1b"
+ integrity sha512-mfHmvlQxmfkU8D55CkZO2sQOueTxLqGvzV+mG6S/6fIunDiD2ouwsAoiYCZYDDK73QCibYjIZmGhpvKwAB5BOA==
dependencies:
- "@typescript-eslint/types" "4.28.3"
- "@typescript-eslint/visitor-keys" "4.28.3"
+ "@typescript-eslint/types" "4.29.2"
+ "@typescript-eslint/visitor-keys" "4.29.2"
-"@typescript-eslint/types@4.28.3":
- version "4.28.3"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.28.3.tgz#8fffd436a3bada422c2c1da56060a0566a9506c7"
- integrity sha512-kQFaEsQBQVtA9VGVyciyTbIg7S3WoKHNuOp/UF5RG40900KtGqfoiETWD/v0lzRXc+euVE9NXmfer9dLkUJrkA==
+"@typescript-eslint/types@4.29.2":
+ version "4.29.2"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.29.2.tgz#fc0489c6b89773f99109fb0aa0aaddff21f52fcd"
+ integrity sha512-K6ApnEXId+WTGxqnda8z4LhNMa/pZmbTFkDxEBLQAbhLZL50DjeY0VIDCml/0Y3FlcbqXZrABqrcKxq+n0LwzQ==
-"@typescript-eslint/typescript-estree@4.28.3":
- version "4.28.3"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.28.3.tgz#253d7088100b2a38aefe3c8dd7bd1f8232ec46fb"
- integrity sha512-YAb1JED41kJsqCQt1NcnX5ZdTA93vKFCMP4lQYG6CFxd0VzDJcKttRlMrlG+1qiWAw8+zowmHU1H0OzjWJzR2w==
+"@typescript-eslint/typescript-estree@4.29.2":
+ version "4.29.2"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.29.2.tgz#a0ea8b98b274adbb2577100ba545ddf8bf7dc219"
+ integrity sha512-TJ0/hEnYxapYn9SGn3dCnETO0r+MjaxtlWZ2xU+EvytF0g4CqTpZL48SqSNn2hXsPolnewF30pdzR9a5Lj3DNg==
dependencies:
- "@typescript-eslint/types" "4.28.3"
- "@typescript-eslint/visitor-keys" "4.28.3"
+ "@typescript-eslint/types" "4.29.2"
+ "@typescript-eslint/visitor-keys" "4.29.2"
debug "^4.3.1"
globby "^11.0.3"
is-glob "^4.0.1"
semver "^7.3.5"
tsutils "^3.21.0"
-"@typescript-eslint/visitor-keys@4.28.3":
- version "4.28.3"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.28.3.tgz#26ac91e84b23529968361045829da80a4e5251c4"
- integrity sha512-ri1OzcLnk1HH4gORmr1dllxDzzrN6goUIz/P4MHFV0YZJDCADPR3RvYNp0PW2SetKTThar6wlbFTL00hV2Q+fg==
+"@typescript-eslint/visitor-keys@4.29.2":
+ version "4.29.2"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.29.2.tgz#d2da7341f3519486f50655159f4e5ecdcb2cd1df"
+ integrity sha512-bDgJLQ86oWHJoZ1ai4TZdgXzJxsea3Ee9u9wsTAvjChdj2WLcVsgWYAPeY7RQMn16tKrlQaBnpKv7KBfs4EQag==
dependencies:
- "@typescript-eslint/types" "4.28.3"
+ "@typescript-eslint/types" "4.29.2"
eslint-visitor-keys "^2.0.0"
"@ungap/promise-all-settled@1.1.2":
@@ -1312,37 +1255,37 @@
resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44"
integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==
-"@vue/compiler-core@3.2.1":
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.1.tgz#8e13232f7aef8e308fb2d4a10571a5640257064b"
- integrity sha512-UEJf2ZGww5wGVdrWIXIZo04KdJFGPmI2bHRUsBZ3AdyCAqJ5ykRXKOBn1OR1hvA2YzimudOEyHM+DpbBv91Kww==
+"@vue/compiler-core@3.2.4":
+ version "3.2.4"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.4.tgz#a98d295771998c1e8dccc4ee3d52feb14b02aea9"
+ integrity sha512-c8NuQq7mUXXxA4iqD5VUKpyVeklK53+DMbojYMyZ0VPPrb0BUWrZWFiqSDT+MFDv0f6Hv3QuLiHWb1BWMXBbrw==
dependencies:
"@babel/parser" "^7.12.0"
"@babel/types" "^7.12.0"
- "@vue/shared" "3.2.1"
+ "@vue/shared" "3.2.4"
estree-walker "^2.0.1"
source-map "^0.6.1"
-"@vue/compiler-dom@3.2.1":
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.1.tgz#5cc68873f1928c7b9aee8c8a2846f7f362cb1ab9"
- integrity sha512-tXg8tkPb3j54zNfWqoao9T1JI41yWPz8TROzmif/QNNA46eq8/SRuRsBd36i47GWaz7mh+yg3vOJ87/YBjcMyQ==
+"@vue/compiler-dom@3.2.4":
+ version "3.2.4"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.4.tgz#3a43de243eba127abbe57e796a0b969d2df78c08"
+ integrity sha512-uj1nwO4794fw2YsYas5QT+FU/YGrXbS0Qk+1c7Kp1kV7idhZIghWLTjyvYibpGoseFbYLPd+sW2/noJG5H04EQ==
dependencies:
- "@vue/compiler-core" "3.2.1"
- "@vue/shared" "3.2.1"
+ "@vue/compiler-core" "3.2.4"
+ "@vue/shared" "3.2.4"
-"@vue/compiler-sfc@3.2.1":
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.1.tgz#7809b298cf0fbce62a2c628b7dfc1e82dd9a3a9b"
- integrity sha512-fVLdme5RZVkBt+jxv2LCSRM72o4FX7BR2eu2FpjjEi1kEtUMKBDnjKwGWy7TyhTju0t0CocctyoM+G56vH7NpQ==
+"@vue/compiler-sfc@3.2.4":
+ version "3.2.4"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.4.tgz#9807868cc950291f163c3930a81bb16e870df097"
+ integrity sha512-GM+ouDdDzhqgkLmBH4bgq4kiZxJQArSppJiZHWHIx9XRaefHLmc1LBNPmN8ivm4SVfi2i7M2t9k8ZnjsScgzPQ==
dependencies:
"@babel/parser" "^7.13.9"
"@babel/types" "^7.13.0"
"@types/estree" "^0.0.48"
- "@vue/compiler-core" "3.2.1"
- "@vue/compiler-dom" "3.2.1"
- "@vue/compiler-ssr" "3.2.1"
- "@vue/shared" "3.2.1"
+ "@vue/compiler-core" "3.2.4"
+ "@vue/compiler-dom" "3.2.4"
+ "@vue/compiler-ssr" "3.2.4"
+ "@vue/shared" "3.2.4"
consolidate "^0.16.0"
estree-walker "^2.0.1"
hash-sum "^2.0.0"
@@ -1354,42 +1297,42 @@
postcss-selector-parser "^6.0.4"
source-map "^0.6.1"
-"@vue/compiler-ssr@3.2.1":
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.1.tgz#f900762f83482e44e9260c2322e3d332c711826c"
- integrity sha512-6YAOtQunuEyYlVSjK1F7a7BXi7rxVfiTiJ0Ro7eq0q0MNCFV9Z+sN68lfa/E4ABVb0ledEY/Rt8kL23nwCoTCQ==
+"@vue/compiler-ssr@3.2.4":
+ version "3.2.4"
+ resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.4.tgz#be51f219c2042b3e530373e60bc126ada6bb1cc0"
+ integrity sha512-bKZuXu9/4XwsFHFWIKQK+5kN7mxIIWmMmT2L4VVek7cvY/vm3p4WTsXYDGZJy0htOTXvM2ifr6sflg012T0hsw==
dependencies:
- "@vue/compiler-dom" "3.2.1"
- "@vue/shared" "3.2.1"
+ "@vue/compiler-dom" "3.2.4"
+ "@vue/shared" "3.2.4"
-"@vue/reactivity@3.2.1":
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.1.tgz#0e71d4ee00b0d0ca6a6141966c30b68b3f685002"
- integrity sha512-4Lja2KmyiKvuraDed6dXK2A6+r/7x7xGDA7vVR2Aqc8hQVu0+FWeVX+IBfiVOSpbZXFlHLNmCBFkbuWLQSlgxg==
+"@vue/reactivity@3.2.4":
+ version "3.2.4"
+ resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.4.tgz#a020ad7e50f674219a07764b105b5922e61597ea"
+ integrity sha512-ljWTR0hr8Tn09hM2tlmWxZzCBPlgGLnq/k8K8X6EcJhtV+C8OzFySnbWqMWataojbrQOocThwsC8awKthSl2uQ==
dependencies:
- "@vue/shared" "3.2.1"
+ "@vue/shared" "3.2.4"
-"@vue/runtime-core@3.2.1":
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.1.tgz#39641110b2f84fdda3b80b86830827b7b5ef041a"
- integrity sha512-IsgelRM/5hYeRhz5+ECi66XvYDdjG2t4lARjHvCXw5s9Q4N6uIbjLMwtLzAWRxYf3/y258BrD+ehxAi943ScJg==
+"@vue/runtime-core@3.2.4":
+ version "3.2.4"
+ resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.4.tgz#da5dde3dc1e48df99dd31ea9a972f5c02acdc3f5"
+ integrity sha512-W6PtEOs8P8jKYPo3JwaMAozZQivxInUleGfNwI2pK1t8ZLZIxn4kAf7p4VF4jJdQB8SZBzpfWdLUc06j7IOmpQ==
dependencies:
- "@vue/reactivity" "3.2.1"
- "@vue/shared" "3.2.1"
+ "@vue/reactivity" "3.2.4"
+ "@vue/shared" "3.2.4"
-"@vue/runtime-dom@3.2.1":
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.1.tgz#087cf36f40ad0869712c4154693c620e478061a8"
- integrity sha512-bUAHUSe49A5wYdHQ8wsLU1CMPXaG2fRuv2661mx/6Q9+20QxglT3ss8ZeL6AVRu16JNJMcdvTTsNpbnMbVc/lQ==
+"@vue/runtime-dom@3.2.4":
+ version "3.2.4"
+ resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.4.tgz#1025595f2ae99a12fe0e1e6bce8df6761efec24b"
+ integrity sha512-HcVtLyn2SGwsf6BFPwkvDPDOhOqkOKcfHDpBp5R1coX+qMsOFrY8lJnGXIY+JnxqFjND00E9+u+lq5cs/W7ooA==
dependencies:
- "@vue/runtime-core" "3.2.1"
- "@vue/shared" "3.2.1"
+ "@vue/runtime-core" "3.2.4"
+ "@vue/shared" "3.2.4"
csstype "^2.6.8"
-"@vue/shared@3.2.1":
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.1.tgz#1f1fe26fe0334404cce10740b5ffb2654f1281aa"
- integrity sha512-INN92dVBNgd0TW9BqfQQKx/HWGCHhUUbAV5EZ5FgSCiEdwuZsJbGt1mdnaD9IxGhpiyOjP2ClxGG8SFp7ELcWg==
+"@vue/shared@3.2.4":
+ version "3.2.4"
+ resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.4.tgz#ba2a09527afff27b28d08f921b4a597e9504ca7a"
+ integrity sha512-j2j1MRmjalVKr3YBTxl/BClSIc8UQ8NnPpLYclxerK65JIowI4O7n8O8lElveEtEoHxy1d7BelPUDI0Q4bumqg==
"@webassemblyjs/ast@1.11.0":
version "1.11.0"
@@ -1645,10 +1588,10 @@
dependencies:
envinfo "^7.7.3"
-"@webpack-cli/serve@^1.5.1":
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.5.1.tgz#b5fde2f0f79c1e120307c415a4c1d5eb15a6f278"
- integrity sha512-4vSVUiOPJLmr45S8rMGy7WDvpWxfFxfP/Qx/cxZFCfvoypTYpPPL1X8VIZMe0WTA+Jr7blUxwUSEZNkjoMTgSw==
+"@webpack-cli/serve@^1.5.2":
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.5.2.tgz#ea584b637ff63c5a477f6f21604b5a205b72c9ec"
+ integrity sha512-vgJ5OLWadI8aKjDlOH3rb+dYyPd2GTZuQC/Tihjct6F9GpXGZINo3Y/IVuZVTM1eDQB+/AOsjPUWH/WySDaXvw==
"@xtuc/ieee754@^1.2.0":
version "1.2.0"
@@ -1693,6 +1636,11 @@ acorn-globals@^6.0.0:
acorn "^7.1.1"
acorn-walk "^7.1.1"
+acorn-import-assertions@^1.7.6:
+ version "1.7.6"
+ resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.7.6.tgz#580e3ffcae6770eebeec76c3b9723201e9d01f78"
+ integrity sha512-FlVvVFA1TX6l3lp8VjDnYYq7R1nyW6x3svAt4nDgrWQ9SBaSh9CnbwgSUTasgfNfOG5HlM1ehugCvM+hjo56LA==
+
acorn-jsx@^5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe"
@@ -1708,6 +1656,11 @@ acorn-walk@^7.1.1:
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.1.1.tgz#345f0dffad5c735e7373d2fec9a1023e6a44b83e"
integrity sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ==
+acorn-walk@^8.1.1:
+ version "8.1.1"
+ resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.1.1.tgz#3ddab7f84e4a7e2313f6c414c5b7dac85f4e3ebc"
+ integrity sha512-FbJdceMlPHEAWJOILDk1fXD8lnTlEIWFkqtfk+MvmL5q/qlHfN7GEHcsFZWt/Tea9jRNPWUZG4G976nqAAmU9w==
+
acorn@^7.1.1, acorn@^7.4.0:
version "7.4.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
@@ -1794,6 +1747,13 @@ ansi-colors@^1.0.1:
dependencies:
ansi-wrap "^0.1.0"
+ansi-escapes@^4.3.0:
+ version "4.3.2"
+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e"
+ integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==
+ dependencies:
+ type-fest "^0.21.3"
+
ansi-gray@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251"
@@ -1867,10 +1827,10 @@ anymatch@~3.1.1:
normalize-path "^3.0.0"
picomatch "^2.0.4"
-apexcharts@3.27.2:
- version "3.27.2"
- resolved "https://registry.yarnpkg.com/apexcharts/-/apexcharts-3.27.2.tgz#95598439158c7d2aa0ef3909606a935c891bb621"
- integrity sha512-FjW0OW6Oq9kbWJiF6wIZEsMNNHme6WNv3eh+p4azuWVELNY/LigXU+01s4TP+Obplhy6byV9bw9x7GhrbN2YsQ==
+apexcharts@3.27.3:
+ version "3.27.3"
+ resolved "https://registry.yarnpkg.com/apexcharts/-/apexcharts-3.27.3.tgz#1b921ac64dea2f28a2b1aad4b396b38464223849"
+ integrity sha512-1ZrqiQT0VahkqW0kVjf5QVURYGaHMlGN08BoIZG2c2U/gY2AtnEoFN4r9q4d/pYYYKvI9AyLBHq0otzcVGrHAw==
dependencies:
svg.draggable.js "^2.2.2"
svg.easing.js "^2.0.0"
@@ -1901,6 +1861,11 @@ aproba@^1.0.3:
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
+arch@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11"
+ integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==
+
archy@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40"
@@ -2041,11 +2006,6 @@ assert-plus@1.0.0, assert-plus@^1.0.0:
resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
-assertion-error@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b"
- integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==
-
assign-symbols@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
@@ -2073,30 +2033,33 @@ async-settle@^1.0.0:
dependencies:
async-done "^1.2.2"
-async@2.6.0:
- version "2.6.0"
- resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4"
- integrity sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==
- dependencies:
- lodash "^4.14.0"
-
async@>=0.2.9:
version "3.2.0"
resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720"
integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==
-async@^2.6.0, async@^2.6.2:
+async@^2.6.0:
version "2.6.3"
resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff"
integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==
dependencies:
lodash "^4.17.14"
+async@^3.2.0:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/async/-/async-3.2.1.tgz#d3274ec66d107a47476a4c49136aacdb00665fc8"
+ integrity sha512-XdD5lRO/87udXCMC9meWdYiR+Nq6ZjUfXidViUZGu2F1MO4T3XwZ1et0hb2++BgLfhyJwy44BGB/yx80ABx8hg==
+
asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
+at-least-node@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
+ integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
+
atob@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
@@ -2131,10 +2094,10 @@ autwh@0.1.0:
dependencies:
oauth "0.9.15"
-aws-sdk@2.948.0:
- version "2.948.0"
- resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.948.0.tgz#0c974c351af97dbc66dbd96bd6c20928baf10415"
- integrity sha512-UJaCwccNaNNFtbhlvg+BmcaVWNI7RPonZA16nca0s3O+UnHm5y5H/nN6XpuJp+NUrxrLgTFaztPvjmBp5q6p+g==
+aws-sdk@2.966.0:
+ version "2.966.0"
+ resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.966.0.tgz#2e929cee510666bab43936e8726774af4a3a20dc"
+ integrity sha512-gxfur+ofp3WGRHecc1nlKKlrI5iiYET824/3YHjSlKsLhG1biz+hhMpz1xjA7M4cdzjuWdmGoy01CBqghet7Mg==
dependencies:
buffer "4.9.2"
events "1.1.1"
@@ -2156,29 +2119,12 @@ aws4@^1.8.0:
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e"
integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==
-babel-plugin-polyfill-corejs2@^0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz#e9124785e6fd94f94b618a7954e5693053bf5327"
- integrity sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==
+axios@^0.21.1:
+ version "0.21.1"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8"
+ integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==
dependencies:
- "@babel/compat-data" "^7.13.11"
- "@babel/helper-define-polyfill-provider" "^0.2.2"
- semver "^6.1.1"
-
-babel-plugin-polyfill-corejs3@^0.2.2:
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.3.tgz#72add68cf08a8bf139ba6e6dfc0b1d504098e57b"
- integrity sha512-rCOFzEIJpJEAU14XCcV/erIf/wZQMmMT5l5vXOpL5uoznyOGfDIjPj6FVytMvtzaKSTSVKouOCTPJ5OMUZH30g==
- dependencies:
- "@babel/helper-define-polyfill-provider" "^0.2.2"
- core-js-compat "^3.14.0"
-
-babel-plugin-polyfill-regenerator@^0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz#b310c8d642acada348c1fa3b3e6ce0e851bee077"
- integrity sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==
- dependencies:
- "@babel/helper-define-polyfill-provider" "^0.2.2"
+ follow-redirects "^1.10.0"
babel-walk@3.0.0-canary-5:
version "3.0.0-canary-5"
@@ -2281,15 +2227,20 @@ bl@^4.0.1, bl@^4.0.3:
inherits "^2.0.4"
readable-stream "^3.4.0"
-bluebird@^3.7.2:
+blob-util@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb"
+ integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==
+
+bluebird@3.7.2, bluebird@^3.7.2:
version "3.7.2"
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
-blurhash@1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/blurhash/-/blurhash-1.1.3.tgz#dc325af7da836d07a0861d830bdd63694382483e"
- integrity sha512-yUhPJvXexbqbyijCIE/T2NCXcj9iNPhWmOKbPTuR/cm7Q5snXYIfnVnz6m7MWOXxODMz/Cr3UcVkRdHiuDVRDw==
+blurhash@1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/blurhash/-/blurhash-1.1.4.tgz#a7010ceb3019cd2c9809b17c910ebf6175d29244"
+ integrity sha512-MXIPz6zwYUKayju+Uidf83KhH0vodZfeRl6Ich8Gu+KGl0JgKiFq9LsfqV7cVU5fKD/AotmduZqvOfrGKOfTaA==
bn.js@^4.0.0:
version "4.11.8"
@@ -2332,10 +2283,10 @@ braces@^3.0.1, braces@~3.0.2:
dependencies:
fill-range "^7.0.1"
-broadcast-channel@3.7.0:
- version "3.7.0"
- resolved "https://registry.yarnpkg.com/broadcast-channel/-/broadcast-channel-3.7.0.tgz#2dfa5c7b4289547ac3f6705f9c00af8723889937"
- integrity sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==
+broadcast-channel@4.2.0:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/broadcast-channel/-/broadcast-channel-4.2.0.tgz#9ca93a23a31036266c2c9b0f8f55bd21594b8f82"
+ integrity sha512-XX9yNnIy/v2T+HR5EKIH7ziM2mYTefsrzZ2lkCmFZxwCDG7Ns7HLIooUXA114sCeFRJ4MEXEgdMapxfPDh9Xkg==
dependencies:
"@babel/runtime" "^7.7.2"
detect-node "^2.1.0"
@@ -2410,6 +2361,11 @@ buffer-alloc@^1.2.0:
buffer-alloc-unsafe "^1.1.0"
buffer-fill "^1.0.0"
+buffer-crc32@~0.2.3:
+ version "0.2.13"
+ resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
+ integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=
+
buffer-equal-constant-time@1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819"
@@ -2472,10 +2428,10 @@ builtin-modules@^1.1.1:
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=
-bull@3.26.0:
- version "3.26.0"
- resolved "https://registry.yarnpkg.com/bull/-/bull-3.26.0.tgz#c6198cf4f3a2fa5f3044cbe462b452c77a3df94f"
- integrity sha512-W1ohwMBApLW9dhKHEwgzr8YnpScTOGC9KtKP2DrvjnWTQFWbaEnKlrDHKp3SJwvAB0C3jDsO579O/Hys/UmAiQ==
+bull@3.28.1:
+ version "3.28.1"
+ resolved "https://registry.yarnpkg.com/bull/-/bull-3.28.1.tgz#33bc7bbe640e71258a2a800935a692a24a2d7236"
+ integrity sha512-TasVWD1410Q8druRG6SIAN5hwAT3F4QICcGszReD859qAerq+VwbW3vPg6lV60reJkWyWBK11FHa2FsQ8iDBmQ==
dependencies:
cron-parser "^2.13.0"
debuglog "^1.0.0"
@@ -2547,6 +2503,11 @@ cache-content-type@^1.0.0:
mime-types "^2.1.18"
ylru "^1.2.0"
+cacheable-lookup@6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-6.0.0.tgz#6fd7e364a0929ee50af00843aaf6e31b9b9f200e"
+ integrity sha512-5qeyMn8/BERrUPdIfcOLkdMrwltVbxIpgnYM61OLWOg3BuSSh9HrkUtTTRxYthQpBrocvYqD0tJ7vU0y6T7OWw==
+
cacheable-lookup@^5.0.3:
version "5.0.3"
resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.3.tgz#049fdc59dffdd4fc285e8f4f82936591bd59fec3"
@@ -2565,6 +2526,11 @@ cacheable-request@^7.0.1:
normalize-url "^4.1.0"
responselike "^2.0.0"
+cachedir@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8"
+ integrity sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==
+
cafy@15.2.1:
version "15.2.1"
resolved "https://registry.yarnpkg.com/cafy/-/cafy-15.2.1.tgz#5a55eaeb721c604c7dca652f3d555c392e5f995a"
@@ -2575,14 +2541,6 @@ callsites@^3.0.0:
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
-camel-case@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73"
- integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=
- dependencies:
- no-case "^2.2.0"
- upper-case "^1.1.1"
-
camelcase@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
@@ -2661,25 +2619,12 @@ cbor@*:
"@cto.af/textdecoder" "^0.0.0"
nofilter "^2.0.3"
-cbor@7.0.6:
- version "7.0.6"
- resolved "https://registry.yarnpkg.com/cbor/-/cbor-7.0.6.tgz#ce47d1d5f946760f199f848dbbcfe762cf492fd6"
- integrity sha512-rgt2RFogHGDLFU5r0kSfyeBc+de55DwYHP73KxKsQxsR5b0CYuQPH6AnJaXByiohpLdjQqj/K0SFcOV+dXdhSA==
+cbor@8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/cbor/-/cbor-8.0.0.tgz#51657d26a99a6a1866f8c3258e948576eb17d709"
+ integrity sha512-nMmaLWbj7+bC6MsApKRIig8h+yjgNLhPLXaCelq5+C7mpWsHgIcseZSdvgexSY5uE1Q3m2uPvIDZwSdxdo7qig==
dependencies:
- "@cto.af/textdecoder" "^0.0.0"
- nofilter "^2.0.3"
-
-chai@4.3.4:
- version "4.3.4"
- resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.4.tgz#b55e655b31e1eac7099be4c08c21964fce2e6c49"
- integrity sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==
- dependencies:
- assertion-error "^1.1.0"
- check-error "^1.0.2"
- deep-eql "^3.0.1"
- get-func-name "^2.0.0"
- pathval "^1.1.1"
- type-detect "^4.0.5"
+ nofilter "^3.0.2"
chalk@4.0.0:
version "4.0.0"
@@ -2689,10 +2634,10 @@ chalk@4.0.0:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
-chalk@4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad"
- integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==
+chalk@4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
dependencies:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
@@ -2760,32 +2705,32 @@ chartjs-color@^2.1.0:
chartjs-color-string "^0.6.0"
color-convert "^1.9.3"
-check-error@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82"
- integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=
+check-more-types@2.24.0, check-more-types@^2.24.0:
+ version "2.24.0"
+ resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600"
+ integrity sha1-FCD/sQ/URNz8ebQ4kbv//TKoRgA=
-cheerio-httpcli@0.7.4:
- version "0.7.4"
- resolved "https://registry.yarnpkg.com/cheerio-httpcli/-/cheerio-httpcli-0.7.4.tgz#f72e23e6af6c5cc250e7ced325f2a601cdbdb63d"
- integrity sha512-D2Chqfwdu0xQ/xcX8zxB14I+mT+J5TO9yJlXczcV35clYLKaRnrweAjNrAayyE1fRKTk5JNzN0yhZpVdNP/aXQ==
+cheerio-httpcli@0.8.2:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/cheerio-httpcli/-/cheerio-httpcli-0.8.2.tgz#0189bda71c8bd2852de78e154291e2288184fbf2"
+ integrity sha512-grIzTwQg/nE7Oy6VvL19pf0UlM6wiluy/AOpXfQLVFrSi21F8wnO3dLchtaH2hfMF6jz68ot0/ngyQQVrp2VTw==
dependencies:
- "@types/cheerio" "^0.22.10"
- async "^2.6.2"
+ "@types/cheerio" "0.22.18"
+ "@types/rsvp" "^4.0.4"
+ async "^3.2.0"
cheerio "^0.22.0"
- colors "^1.3.3"
+ colors "^1.4.0"
foreach "^2.0.5"
he "^1.2.0"
- iconv-lite "^0.4.24"
- import-fresh "^3.0.0"
- jschardet "^2.1.0"
+ iconv-lite "^0.6.3"
+ import-fresh "^3.3.0"
+ jschardet "^3.0.0"
object-assign "^4.1.1"
- os-locale "^3.1.0"
+ os-locale "^5.0.0"
prettyjson "^1.2.1"
- request "^2.88.0"
- rsvp "^4.8.4"
- spawn-sync "^2.0.0"
- tough-cookie "^3.0.1"
+ request "^2.88.2"
+ rsvp "^4.8.5"
+ tough-cookie "^2.5.0"
type-of "^2.0.1"
valid-url "^1.0.9"
@@ -2843,10 +2788,10 @@ chrome-trace-event@^1.0.2:
dependencies:
tslib "^1.9.0"
-clamp@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/clamp/-/clamp-1.0.1.tgz#66a0e64011816e37196828fdc8c8c147312c8634"
- integrity sha1-ZqDmQBGBbjcZaCj9yMjBRzEshjQ=
+ci-info@^3.1.1:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.2.0.tgz#2876cb948a498797b5236f0095bc057d0dca38b6"
+ integrity sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==
clap@^1.0.9:
version "1.2.3"
@@ -2865,19 +2810,19 @@ class-utils@^0.3.5:
isobject "^3.0.0"
static-extend "^0.1.1"
-clean-css@^4.2.1:
- version "4.2.3"
- resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78"
- integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==
- dependencies:
- source-map "~0.6.0"
-
clean-stack@^2.0.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
-cli-highlight@2.1.11:
+cli-cursor@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307"
+ integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==
+ dependencies:
+ restore-cursor "^3.1.0"
+
+cli-highlight@2.1.11, cli-highlight@^2.1.11:
version "2.1.11"
resolved "https://registry.yarnpkg.com/cli-highlight/-/cli-highlight-2.1.11.tgz#49736fa452f0aaf4fae580e30acb26828d2dc1bf"
integrity sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==
@@ -2889,17 +2834,23 @@ cli-highlight@2.1.11:
parse5-htmlparser2-tree-adapter "^6.0.0"
yargs "^16.0.0"
-cli-highlight@^2.1.10:
- version "2.1.10"
- resolved "https://registry.yarnpkg.com/cli-highlight/-/cli-highlight-2.1.10.tgz#26a087da9209dce4fcb8cf5427dc97cd96ac173a"
- integrity sha512-CcPFD3JwdQ2oSzy+AMG6j3LRTkNjM82kzcSKzoVw6cLanDCJNlsLjeqVTOTfOfucnWv5F0rmBemVf1m9JiIasw==
+cli-table3@~0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee"
+ integrity sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ==
dependencies:
- chalk "^4.0.0"
- highlight.js "^10.0.0"
- mz "^2.4.0"
- parse5 "^5.1.1"
- parse5-htmlparser2-tree-adapter "^6.0.0"
- yargs "^16.0.0"
+ object-assign "^4.1.0"
+ string-width "^4.2.0"
+ optionalDependencies:
+ colors "^1.1.2"
+
+cli-truncate@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7"
+ integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==
+ dependencies:
+ slice-ansi "^3.0.0"
+ string-width "^4.2.0"
cliui@^3.2.0:
version "3.2.0"
@@ -3041,7 +2992,7 @@ collection-visit@^1.0.0:
map-visit "^1.0.0"
object-visit "^1.0.0"
-color-convert@^1.3.0, color-convert@^1.9.0, color-convert@^1.9.1, color-convert@^1.9.3:
+color-convert@^1.3.0, color-convert@^1.9.0, color-convert@^1.9.3:
version "1.9.3"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
@@ -3072,10 +3023,10 @@ color-string@^0.3.0:
dependencies:
color-name "^1.0.0"
-color-string@^1.5.4:
- version "1.5.4"
- resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.4.tgz#dd51cd25cfee953d138fe4002372cc3d0e504cb6"
- integrity sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==
+color-string@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.6.0.tgz#c3915f61fe267672cb7e1e064c9d692219f6c312"
+ integrity sha512-c/hGS+kRWJutUBEngKKmk4iH3sD59MBkoxVapS/0wgpCz2u7XsNloxknyvBhzwEs1IbV36D9PwqLPJ2DTu3vMA==
dependencies:
color-name "^1.0.0"
simple-swizzle "^0.2.2"
@@ -3094,19 +3045,24 @@ color@^0.11.0:
color-convert "^1.3.0"
color-string "^0.3.0"
-color@^3.1.3:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e"
- integrity sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==
+color@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/color/-/color-4.0.1.tgz#21df44cd10245a91b1ccf5ba031609b0e10e7d67"
+ integrity sha512-rpZjOKN5O7naJxkH2Rx1sZzzBgaiWECc6BYXjeCE6kF0kcASJYbUq02u7JqIHwCb/j3NhV+QhRL2683aICeGZA==
dependencies:
- color-convert "^1.9.1"
- color-string "^1.5.4"
+ color-convert "^2.0.1"
+ color-string "^1.6.0"
colord@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/colord/-/colord-2.0.1.tgz#1e7fb1f9fa1cf74f42c58cb9c20320bab8435aa0"
integrity sha512-vm5YpaWamD0Ov6TSG0GGmUIwstrWcfKQV/h2CmbR7PbNu41+qdB5PW9lpzhjedrpm08uuYvcXi0Oel1RLZIJuA==
+colord@^2.6:
+ version "2.7.0"
+ resolved "https://registry.yarnpkg.com/colord/-/colord-2.7.0.tgz#706ea36fe0cd651b585eb142fe64b6480185270e"
+ integrity sha512-pZJBqsHz+pYyw3zpX6ZRXWoCHM1/cvFikY9TV8G3zcejCaKE0lhankoj8iScyrrePA8C7yJ5FStfA9zbcOnw7Q==
+
colorette@^1.2.0, colorette@^1.2.1, colorette@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94"
@@ -3121,7 +3077,7 @@ colormin@^1.0.5:
css-color-names "0.0.4"
has "^1.0.1"
-colors@^1.1.2, colors@^1.3.3:
+colors@^1.1.2, colors@^1.3.3, colors@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
@@ -3138,16 +3094,21 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6:
dependencies:
delayed-stream "~1.0.0"
-commander@7.2.0, commander@^7.1.0:
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
- integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
+commander@8.1.0:
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-8.1.0.tgz#db36e3e66edf24ff591d639862c6ab2c52664362"
+ integrity sha512-mf45ldcuHSYShkplHHGKWb4TrmwQadxOn7v4WuhDJy0ZVoY5JFajaRDKD0PNe5qXzBX0rhovjTnP6Kz9LETcuA==
-commander@^2.12.1, commander@^2.19.0, commander@^2.20.0, commander@~2.20.3:
+commander@^2.12.1, commander@^2.19.0, commander@^2.20.0:
version "2.20.3"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+commander@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae"
+ integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==
+
commander@^6.0.0, commander@^6.2.1:
version "6.2.1"
resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c"
@@ -3158,6 +3119,11 @@ commander@^7.0.0:
resolved "https://registry.yarnpkg.com/commander/-/commander-7.0.0.tgz#3e2bbfd8bb6724760980988fb5b22b7ee6b71ab2"
integrity sha512-ovx/7NkTrnPuIV8sqk/GjUIIM1+iUQeqA3ye2VNpq9sVoiZsooObWlQy+OPWGI17GDaEoybuAGJm6U8yC077BA==
+commander@^7.1.0:
+ version "7.2.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
+ integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
+
comment-json@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/comment-json/-/comment-json-4.1.0.tgz#09d08f0fbc4ad5eeccbac20f469adbb967dcbd2c"
@@ -3169,10 +3135,15 @@ comment-json@^4.1.0:
has-own-prop "^2.0.0"
repeat-string "^1.6.1"
-commondir@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
- integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=
+common-tags@^1.8.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.0.tgz#8e3153e542d4a39e9b10554434afaaf98956a937"
+ integrity sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==
+
+compare-versions@3.6.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62"
+ integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==
component-emitter@^1.2.1:
version "1.3.0"
@@ -3194,10 +3165,10 @@ concat-stream@^1.5.2, concat-stream@^1.6.0:
readable-stream "^2.2.2"
typedarray "^0.0.6"
-concurrently@6.2.0:
- version "6.2.0"
- resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-6.2.0.tgz#587e2cb8afca7234172d8ea55176088632c4c56d"
- integrity sha512-v9I4Y3wFoXCSY2L73yYgwA9ESrQMpRn80jMcqMgHx720Hecz2GZAvTI6bREVST6lkddNypDKRN22qhK0X8Y00g==
+concurrently@6.2.1:
+ version "6.2.1"
+ resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-6.2.1.tgz#d880fc1d77559084732fa514092a3d5109a0d5bf"
+ integrity sha512-emgwhH+ezkuYKSHZQ+AkgEpoUZZlbpPVYCVv7YZx0r+T7fny1H03r2nYRebpi2DudHR4n1Rgbo2YTxKOxVJ4+g==
dependencies:
chalk "^4.1.0"
date-fns "^2.16.1"
@@ -3265,14 +3236,6 @@ convert-source-map@^1.5.0:
dependencies:
safe-buffer "~5.1.1"
-cookies@~0.7.1:
- version "0.7.3"
- resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.7.3.tgz#7912ce21fbf2e8c2da70cf1c3f351aecf59dadfa"
- integrity sha512-+gixgxYSgQLTaTIilDHAdlNPZDENDQernEMiIcZpYYP14zgHsCt4Ce1FEjFtcp6GefhozebB6orvhAAWx/IS0A==
- dependencies:
- depd "~1.1.2"
- keygrip "~1.0.3"
-
cookies@~0.8.0:
version "0.8.0"
resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.8.0.tgz#1293ce4b391740a8406e3c9870e828c4b54f3f90"
@@ -3299,19 +3262,6 @@ copy-to@^2.0.1:
resolved "https://registry.yarnpkg.com/copy-to/-/copy-to-2.0.1.tgz#2680fbb8068a48d08656b6098092bdafc906f4a5"
integrity sha1-JoD7uAaKSNCGVrYJgJK9r8kG9KU=
-core-js-compat@^3.14.0:
- version "3.15.2"
- resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.15.2.tgz#47272fbb479880de14b4e6081f71f3492f5bd3cb"
- integrity sha512-Wp+BJVvwopjI+A1EFqm2dwUmWYXrvucmtIB2LgXn/Rb+gWPKYxtmb4GKHGKG/KGF1eK9jfjzT38DITbTOCX/SQ==
- dependencies:
- browserslist "^4.16.6"
- semver "7.0.0"
-
-core-js@3.15.2:
- version "3.15.2"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.15.2.tgz#740660d2ff55ef34ce664d7e2455119c5bdd3d61"
- integrity sha512-tKs41J7NJVuaya8DxIOCnl8QuPHx5/ZVbFo1oKgVl1qHFBBrDctzQGtuLjPpRdNTWmKPH6oEvgN/MUID+l485Q==
-
core-util-is@1.0.2, core-util-is@^1.0.2, core-util-is@~1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
@@ -3356,18 +3306,7 @@ cross-env@7.0.3:
dependencies:
cross-spawn "^7.0.1"
-cross-spawn@^6.0.0:
- version "6.0.5"
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
- integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
- dependencies:
- nice-try "^1.0.4"
- path-key "^2.0.1"
- semver "^5.5.0"
- shebang-command "^1.2.0"
- which "^1.2.9"
-
-cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
+cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
version "7.0.3"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
@@ -3376,7 +3315,7 @@ cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
shebang-command "^2.0.0"
which "^2.0.1"
-css-color-names@0.0.4, css-color-names@^0.0.4:
+css-color-names@0.0.4:
version "0.0.4"
resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=
@@ -3393,10 +3332,10 @@ css-declaration-sorter@^6.0.3:
dependencies:
timsort "^0.3.0"
-css-loader@6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.0.0.tgz#e3f9131229df43e081876f434dc2f4605be9d5ae"
- integrity sha512-xi3iTbHekvk5dWWdqfQKNsEm2g3Vr20uRwHzfXF+pHsaFGMuxTrqR1y8PY+st5G7wqid4/pBSiaqZsO6iaGN5g==
+css-loader@6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.2.0.tgz#9663d9443841de957a3cb9bcea2eda65b3377071"
+ integrity sha512-/rvHfYRjIpymZblf49w8jYcRo2y9gj6rV8UroHGmBxKrIyGLokpycyKzp9OkitvqT29ZSpzJ0Ic7SpnJX3sC8g==
dependencies:
icss-utils "^5.1.0"
postcss "^8.2.15"
@@ -3487,10 +3426,10 @@ cssesc@^3.0.0:
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
-cssnano-preset-default@^5.1.3:
- version "5.1.3"
- resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.1.3.tgz#caa54183a8c8df03124a9e23f374ab89df5a9a99"
- integrity sha512-qo9tX+t4yAAZ/yagVV3b+QBKeLklQbmgR3wI7mccrDcR+bEk9iHgZN1E7doX68y9ThznLya3RDmR+nc7l6/2WQ==
+cssnano-preset-default@^5.1.4:
+ version "5.1.4"
+ resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.1.4.tgz#359943bf00c5c8e05489f12dd25f3006f2c1cbd2"
+ integrity sha512-sPpQNDQBI3R/QsYxQvfB4mXeEcWuw0wGtKtmS5eg8wudyStYMgKOQT39G07EbW1LB56AOYrinRS9f0ig4Y3MhQ==
dependencies:
css-declaration-sorter "^6.0.3"
cssnano-utils "^2.0.1"
@@ -3504,7 +3443,7 @@ cssnano-preset-default@^5.1.3:
postcss-merge-longhand "^5.0.2"
postcss-merge-rules "^5.0.2"
postcss-minify-font-values "^5.0.1"
- postcss-minify-gradients "^5.0.1"
+ postcss-minify-gradients "^5.0.2"
postcss-minify-params "^5.0.1"
postcss-minify-selectors "^5.1.0"
postcss-normalize-charset "^5.0.1"
@@ -3527,14 +3466,15 @@ cssnano-utils@^2.0.1:
resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-2.0.1.tgz#8660aa2b37ed869d2e2f22918196a9a8b6498ce2"
integrity sha512-i8vLRZTnEH9ubIyfdZCAdIdgnHAUeQeByEeQ2I7oTilvP9oHO6RScpeq3GsFUVqeB8uZgOQ9pw8utofNn32hhQ==
-cssnano@5.0.6:
- version "5.0.6"
- resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.0.6.tgz#2a91ad34c6521ae31eab3da9c90108ea3093535d"
- integrity sha512-NiaLH/7yqGksFGsFNvSRe2IV/qmEBAeDE64dYeD8OBrgp6lE8YoMeQJMtsv5ijo6MPyhuoOvFhI94reahBRDkw==
+cssnano@5.0.8:
+ version "5.0.8"
+ resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.0.8.tgz#39ad166256980fcc64faa08c9bb18bb5789ecfa9"
+ integrity sha512-Lda7geZU0Yu+RZi2SGpjYuQz4HI4/1Y+BhdD0jL7NXAQ5larCzVn+PUGuZbDMYz904AXXCOgO5L1teSvgu7aFg==
dependencies:
- cosmiconfig "^7.0.0"
- cssnano-preset-default "^5.1.3"
+ cssnano-preset-default "^5.1.4"
is-resolvable "^1.1.0"
+ lilconfig "^2.0.3"
+ yaml "^1.10.2"
cssnano@^3.0.0:
version "3.10.0"
@@ -3618,6 +3558,53 @@ csstype@^2.6.8:
resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.13.tgz#a6893015b90e84dd6e85d0e3b442a1e84f2dbe0f"
integrity sha512-ul26pfSQTZW8dcOnD2iiJssfXw0gdNVX9IJDH/X3K5DGPfj+fUYe3kB+swUY6BF3oZDxaID3AJt+9/ojSAE05A==
+cypress@8.3.0:
+ version "8.3.0"
+ resolved "https://registry.yarnpkg.com/cypress/-/cypress-8.3.0.tgz#ba906d2170888073ad94b2be1b994a749bbb7c7d"
+ integrity sha512-zA5Rcq8AZIfRfPXU0CCcauofF+YpaU9HYbfqkunFTmFV0Kdlo14tNjH2E3++MkjXKFnv3/pXq+HgxWtw8CSe8Q==
+ dependencies:
+ "@cypress/request" "^2.88.5"
+ "@cypress/xvfb" "^1.2.4"
+ "@types/node" "^14.14.31"
+ "@types/sinonjs__fake-timers" "^6.0.2"
+ "@types/sizzle" "^2.3.2"
+ arch "^2.2.0"
+ blob-util "^2.0.2"
+ bluebird "^3.7.2"
+ cachedir "^2.3.0"
+ chalk "^4.1.0"
+ check-more-types "^2.24.0"
+ cli-cursor "^3.1.0"
+ cli-table3 "~0.6.0"
+ commander "^5.1.0"
+ common-tags "^1.8.0"
+ dayjs "^1.10.4"
+ debug "^4.3.2"
+ enquirer "^2.3.6"
+ eventemitter2 "^6.4.3"
+ execa "4.1.0"
+ executable "^4.1.1"
+ extract-zip "2.0.1"
+ figures "^3.2.0"
+ fs-extra "^9.1.0"
+ getos "^3.2.1"
+ is-ci "^3.0.0"
+ is-installed-globally "~0.4.0"
+ lazy-ass "^1.6.0"
+ listr2 "^3.8.3"
+ lodash "^4.17.21"
+ log-symbols "^4.0.0"
+ minimist "^1.2.5"
+ ospath "^1.2.2"
+ pretty-bytes "^5.6.0"
+ ramda "~0.27.1"
+ request-progress "^3.0.0"
+ supports-color "^8.1.1"
+ tmp "~0.2.1"
+ untildify "^4.0.0"
+ url "^0.11.0"
+ yauzl "^2.10.0"
+
d@1, d@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a"
@@ -3657,6 +3644,11 @@ dateformat@4.5.1:
resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-4.5.1.tgz#c20e7a9ca77d147906b6dc2261a8be0a5bd2173c"
integrity sha512-OD0TZ+B7yP7ZgpJf5K2DIbj3FZvFvxgFUuaqA/V5zTjAtAAXZ1E8bktHxmAGs4x5b7PflqA9LeQ84Og7wYtF7Q==
+dayjs@^1.10.4:
+ version "1.10.6"
+ resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.6.tgz#288b2aa82f2d8418a6c9d4df5898c0737ad02a63"
+ integrity sha512-AztC/IOW4L1Q41A86phW5Thhcrco3xuAA+YX/BLpLWWjRcTj5TOt/QImBLmCKlrF7u7k47arTnOyL6GnbG8Hvw==
+
debug@2, debug@^2.2.0, debug@^2.3.3, debug@^2.5.2:
version "2.6.9"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
@@ -3664,13 +3656,6 @@ debug@2, debug@^2.2.0, debug@^2.3.3, debug@^2.5.2:
dependencies:
ms "2.0.0"
-debug@3.1.0, debug@~3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
- integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
- dependencies:
- ms "2.0.0"
-
debug@4, debug@4.3.1, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1:
version "4.3.1"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
@@ -3678,6 +3663,20 @@ debug@4, debug@4.3.1, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1:
dependencies:
ms "2.1.2"
+debug@4.3.2, debug@^4.3.2:
+ version "4.3.2"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b"
+ integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==
+ dependencies:
+ ms "2.1.2"
+
+debug@^3.1.0:
+ version "3.2.7"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
+ integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
+ dependencies:
+ ms "^2.1.1"
+
debug@^3.2.6:
version "3.2.6"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
@@ -3685,6 +3684,13 @@ debug@^3.2.6:
dependencies:
ms "^2.1.1"
+debug@~3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
+ integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
+ dependencies:
+ ms "2.0.0"
+
debuglog@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
@@ -3724,13 +3730,6 @@ decompress-response@^6.0.0:
dependencies:
mimic-response "^3.1.0"
-deep-eql@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df"
- integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==
- dependencies:
- type-detect "^4.0.0"
-
deep-equal@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
@@ -3837,11 +3836,6 @@ detect-file@^1.0.0:
resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7"
integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=
-detect-indent@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d"
- integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50=
-
detect-libc@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
@@ -3887,14 +3881,6 @@ dir-glob@^3.0.1:
dependencies:
path-type "^4.0.0"
-diskusage@1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/diskusage/-/diskusage-1.1.3.tgz#680d7dbf1b679168a195c9240eb3552cbd2c067b"
- integrity sha512-EAyaxl8hy4Ph07kzlzGTfpbZMNAAAHXSZtNEMwdlnSd1noHzvA6HsgKt4fEMSvaEXQYLSphe5rPMxN4WOj0hcQ==
- dependencies:
- es6-promise "^4.2.5"
- nan "^2.14.0"
-
doctrine@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
@@ -3998,6 +3984,11 @@ dotenv@^8.2.0:
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a"
integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==
+duplexer@~0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
+ integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
+
duplexify@^3.6.0:
version "3.7.1"
resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309"
@@ -4116,7 +4107,7 @@ enhanced-resolve@^5.7.0:
graceful-fs "^4.2.4"
tapable "^2.2.0"
-enquirer@^2.3.5:
+enquirer@^2.3.5, enquirer@^2.3.6:
version "2.3.6"
resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
@@ -4160,11 +4151,6 @@ error-ex@^1.2.0, error-ex@^1.3.1:
dependencies:
is-arrayish "^0.2.1"
-error-inject@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/error-inject/-/error-inject-1.0.0.tgz#e2b3d91b54aed672f309d950d154850fa11d4f37"
- integrity sha1-4rPZG1Su1nLzCdlQ0VSFD6EdTzc=
-
es-abstract@^1.17.0-next.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5:
version "1.17.5"
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9"
@@ -4219,11 +4205,6 @@ es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.3:
es5-ext "^0.10.35"
es6-symbol "^3.1.1"
-es6-promise@^4.2.5:
- version "4.2.8"
- resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a"
- integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==
-
es6-symbol@^3.1.1, es6-symbol@~3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18"
@@ -4279,15 +4260,15 @@ escodegen@^2.0.0:
optionalDependencies:
source-map "~0.6.1"
-eslint-plugin-vue@7.13.0:
- version "7.13.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-7.13.0.tgz#6f3d232bf1fcd0428353b0d581ebaca1c5dbc17a"
- integrity sha512-u0+jL8h2MshRuMTCLslktxRsPTjlENNcNufhgHu01N982DmHVdeFniyMPoVLLRjACQOwdz3FdlsgYGBMBG+AKg==
+eslint-plugin-vue@7.16.0:
+ version "7.16.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-7.16.0.tgz#7fe9fea039a190b108319c1380adf543ef57707d"
+ integrity sha512-0E2dVvVC7I2Xm1HXyx+ZwPj9CNX4NJjs4K4r+GVsHWyt5Pew3JLD4fI7A91b2jeL0TXE7LlszrwLSTJU9eqehw==
dependencies:
eslint-utils "^2.1.0"
natural-compare "^1.4.0"
- semver "^7.3.2"
- vue-eslint-parser "^7.8.0"
+ semver "^6.3.0"
+ vue-eslint-parser "^7.10.0"
eslint-scope@5.1.1, eslint-scope@^5.1.1:
version "5.1.1"
@@ -4314,13 +4295,13 @@ eslint-visitor-keys@^2.0.0:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8"
integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==
-eslint@7.30.0:
- version "7.30.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.30.0.tgz#6d34ab51aaa56112fd97166226c9a97f505474f8"
- integrity sha512-VLqz80i3as3NdloY44BQSJpFw534L9Oh+6zJOUaViV4JPd+DaHwutqP7tcpkW3YiXbK6s05RZl7yl7cQn+lijg==
+eslint@7.32.0:
+ version "7.32.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d"
+ integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==
dependencies:
"@babel/code-frame" "7.12.11"
- "@eslint/eslintrc" "^0.4.2"
+ "@eslint/eslintrc" "^0.4.3"
"@humanwhocodes/config-array" "^0.5.0"
ajv "^6.10.0"
chalk "^4.0.0"
@@ -4432,11 +4413,29 @@ esutils@^2.0.2:
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
+event-stream@=3.3.4:
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571"
+ integrity sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=
+ dependencies:
+ duplexer "~0.1.1"
+ from "~0"
+ map-stream "~0.1.0"
+ pause-stream "0.0.11"
+ split "0.3"
+ stream-combiner "~0.0.4"
+ through "~2.3.1"
+
event-target-shim@^5.0.0:
version "5.0.1"
resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
+eventemitter2@^6.4.3:
+ version "6.4.4"
+ resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.4.tgz#aa96e8275c4dbeb017a5d0e03780c65612a1202b"
+ integrity sha512-HLU3NDY6wARrLCEwyGKRBvuWYyvW6mHYv72SJJAH3iJN3a6eVUvkjFkcxah1bcTgGVBBrFdIopBJPhCQFMLyXw==
+
eventemitter3@4.0.7, eventemitter3@^4.0.7:
version "4.0.7"
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
@@ -4452,18 +4451,35 @@ events@^3.2.0:
resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379"
integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==
-execa@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
- integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
+execa@4.1.0, execa@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a"
+ integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==
dependencies:
- cross-spawn "^6.0.0"
- get-stream "^4.0.0"
- is-stream "^1.1.0"
- npm-run-path "^2.0.0"
- p-finally "^1.0.0"
- signal-exit "^3.0.0"
- strip-eof "^1.0.0"
+ cross-spawn "^7.0.0"
+ get-stream "^5.0.0"
+ human-signals "^1.1.1"
+ is-stream "^2.0.0"
+ merge-stream "^2.0.0"
+ npm-run-path "^4.0.0"
+ onetime "^5.1.0"
+ signal-exit "^3.0.2"
+ strip-final-newline "^2.0.0"
+
+execa@5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
+ integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
+ dependencies:
+ cross-spawn "^7.0.3"
+ get-stream "^6.0.0"
+ human-signals "^2.1.0"
+ is-stream "^2.0.0"
+ merge-stream "^2.0.0"
+ npm-run-path "^4.0.1"
+ onetime "^5.1.2"
+ signal-exit "^3.0.3"
+ strip-final-newline "^2.0.0"
execa@^5.0.0:
version "5.0.0"
@@ -4480,6 +4496,13 @@ execa@^5.0.0:
signal-exit "^3.0.3"
strip-final-newline "^2.0.0"
+executable@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c"
+ integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==
+ dependencies:
+ pify "^2.2.0"
+
exit-on-epipe@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz#0bdd92e87d5285d267daa8171d0eb06159689692"
@@ -4551,6 +4574,17 @@ extglob@^2.0.4:
snapdragon "^0.8.1"
to-regex "^3.0.1"
+extract-zip@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a"
+ integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==
+ dependencies:
+ debug "^4.1.1"
+ get-stream "^5.1.0"
+ yauzl "^2.10.0"
+ optionalDependencies:
+ "@types/yauzl" "^2.9.1"
+
extsprintf@1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
@@ -4620,6 +4654,13 @@ fastq@^1.6.0:
dependencies:
reusify "^1.0.4"
+fd-slicer@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
+ integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=
+ dependencies:
+ pend "~1.2.0"
+
feed@4.2.2:
version "4.2.2"
resolved "https://registry.yarnpkg.com/feed/-/feed-4.2.2.tgz#865783ef6ed12579e2c44bbef3c9113bc4956a7e"
@@ -4637,6 +4678,13 @@ figlet@^1.1.1:
resolved "https://registry.yarnpkg.com/figlet/-/figlet-1.3.0.tgz#c49e3d92907ba13bebadc7124f76ba71f1f32ef0"
integrity sha512-f7A8aOJAfyehLJ7lQ6rEA8WJw7kOk3lfWRi5piSjkzbK5YkI5sqO8eiLHz1ehO+DM0QYB85i8VfA6XIGUbU1dg==
+figures@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
+ integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==
+ dependencies:
+ escape-string-regexp "^1.0.5"
+
file-entry-cache@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
@@ -4644,14 +4692,14 @@ file-entry-cache@^6.0.1:
dependencies:
flat-cache "^3.0.4"
-file-type@16.5.1:
- version "16.5.1"
- resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.1.tgz#dd697dc5c3a2f4db63af746f38a6322e5e7bc6a5"
- integrity sha512-Pi1G43smrCy82Q3be3sfKaeS5uHdfj905dP88YqhroG6TYbVY2ljTdDXeXqa6Cn5nOk6znOjWM2uZptA8vH/qQ==
+file-type@16.5.3:
+ version "16.5.3"
+ resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.3.tgz#474b7e88c74724046abb505e9b8ed4db30c4fc06"
+ integrity sha512-uVsl7iFhHSOY4bEONLlTK47iAHtNsFHWP5YE4xJfZ4rnX7S1Q3wce09XgqSC7E/xh8Ncv/be1lNoyprlUH/x6A==
dependencies:
readable-web-to-node-stream "^3.0.0"
- strtok3 "^6.0.3"
- token-types "^2.0.0"
+ strtok3 "^6.2.4"
+ token-types "^4.1.1"
fill-range@^4.0.0:
version "4.0.0"
@@ -4670,15 +4718,6 @@ fill-range@^7.0.1:
dependencies:
to-regex-range "^5.0.1"
-find-cache-dir@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7"
- integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==
- dependencies:
- commondir "^1.0.1"
- make-dir "^2.0.0"
- pkg-dir "^3.0.0"
-
find-node-modules@^2.1.0:
version "2.1.2"
resolved "https://registry.yarnpkg.com/find-node-modules/-/find-node-modules-2.1.2.tgz#57565a3455baf671b835bc6b2134a9b938b9c53c"
@@ -4803,6 +4842,11 @@ flush-write-stream@^1.0.2:
inherits "^2.0.3"
readable-stream "^2.3.6"
+follow-redirects@^1.10.0:
+ version "1.14.1"
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.1.tgz#d9114ded0a1cfdd334e164e6662ad02bfd91ff43"
+ integrity sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==
+
for-in@^1.0.1, for-in@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
@@ -4855,11 +4899,26 @@ fresh@~0.5.2:
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
+from@~0:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe"
+ integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=
+
fs-constants@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
+fs-extra@^9.1.0:
+ version "9.1.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
+ integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
+ dependencies:
+ at-least-node "^1.0.0"
+ graceful-fs "^4.2.0"
+ jsonfile "^6.0.1"
+ universalify "^2.0.0"
+
fs-minipass@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
@@ -4926,11 +4985,6 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5:
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
-get-func-name@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41"
- integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=
-
get-paths@0.0.7:
version "0.0.7"
resolved "https://registry.yarnpkg.com/get-paths/-/get-paths-0.0.7.tgz#15331086752077cf130166ccd233a1cdbeefcf38"
@@ -4943,14 +4997,7 @@ get-port@^5.1.1:
resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193"
integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==
-get-stream@^4.0.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
- integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
- dependencies:
- pump "^3.0.0"
-
-get-stream@^5.1.0:
+get-stream@^5.0.0, get-stream@^5.1.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
@@ -4967,6 +5014,13 @@ get-value@^2.0.3, get-value@^2.0.6:
resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
+getos@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/getos/-/getos-3.2.1.tgz#0134d1f4e00eb46144c5a9c0ac4dc087cbb27dc5"
+ integrity sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==
+ dependencies:
+ async "^3.2.0"
+
getpass@^0.1.1:
version "0.1.7"
resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
@@ -5058,6 +5112,13 @@ glob@7.1.7:
once "^1.3.0"
path-is-absolute "^1.0.0"
+global-dirs@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686"
+ integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==
+ dependencies:
+ ini "2.0.0"
+
global-modules@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea"
@@ -5078,11 +5139,6 @@ global-prefix@^1.0.1:
is-windows "^1.0.1"
which "^1.2.14"
-globals@^11.1.0:
- version "11.12.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
- integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
-
globals@^13.6.0:
version "13.7.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-13.7.0.tgz#aed3bcefd80ad3ec0f0be2cf0c895110c0591795"
@@ -5138,6 +5194,11 @@ graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6,
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
+graceful-fs@^4.2.0:
+ version "4.2.8"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a"
+ integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==
+
graceful-fs@^4.2.6:
version "4.2.6"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee"
@@ -5243,7 +5304,7 @@ har-schema@^2.0.0:
resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
-har-validator@~5.1.0, har-validator@~5.1.3:
+har-validator@~5.1.3:
version "5.1.3"
resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080"
integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==
@@ -5251,25 +5312,6 @@ har-validator@~5.1.0, har-validator@~5.1.3:
ajv "^6.5.5"
har-schema "^2.0.0"
-hard-source-webpack-plugin@0.13.1:
- version "0.13.1"
- resolved "https://registry.yarnpkg.com/hard-source-webpack-plugin/-/hard-source-webpack-plugin-0.13.1.tgz#a99071e25b232f1438a5bc3c99f10a3869e4428e"
- integrity sha512-r9zf5Wq7IqJHdVAQsZ4OP+dcUSvoHqDMxJlIzaE2J0TZWn3UjMMrHqwDHR8Jr/pzPfG7XxSe36E7Y8QGNdtuAw==
- dependencies:
- chalk "^2.4.1"
- find-cache-dir "^2.0.0"
- graceful-fs "^4.1.11"
- lodash "^4.15.0"
- mkdirp "^0.5.1"
- node-object-hash "^1.2.0"
- parse-json "^4.0.0"
- pkg-dir "^3.0.0"
- rimraf "^2.6.2"
- semver "^5.6.0"
- tapable "^1.0.0-beta.5"
- webpack-sources "^1.0.1"
- write-json-file "^2.3.0"
-
has-ansi@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
@@ -5360,16 +5402,6 @@ he@1.2.0, he@^1.2.0:
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
-hex-color-regex@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
- integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==
-
-highlight.js@^10.0.0:
- version "10.4.1"
- resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.4.1.tgz#d48fbcf4a9971c4361b3f95f302747afe19dbad0"
- integrity sha512-yR5lWvNz7c85OhVAEAeFhVCc/GV4C30Fjzc/rCP0aCWzc1UUOPUk55dK/qdwTZHBvMZo+eZ2jpk62ndX/xMFlg==
-
highlight.js@^10.7.1:
version "10.7.2"
resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.7.2.tgz#89319b861edc66c48854ed1e6da21ea89f847360"
@@ -5387,21 +5419,16 @@ hosted-git-info@^2.1.4:
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488"
integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==
+hpagent@0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/hpagent/-/hpagent-0.1.2.tgz#cab39c66d4df2d4377dbd212295d878deb9bdaa9"
+ integrity sha512-ePqFXHtSQWAFXYmj+JtOTHr84iNrII4/QRlAAPPE+zqnKy4xJo7Ie1Y4kC7AdB+LxLxSTTzBMASsEcy0q8YyvQ==
+
hpagent@^0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/hpagent/-/hpagent-0.1.1.tgz#66f67f16e5c7a8b59a068e40c2658c2c749ad5e2"
integrity sha512-IxJWQiY0vmEjetHdoE9HZjD4Cx+mYTr25tR7JCxXaiI3QxW0YqYyM11KyZbHufoa/piWhMb2+D3FGpMgmA2cFQ==
-hsl-regex@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e"
- integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=
-
-hsla-regex@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38"
- integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg=
-
html-comment-regex@^1.1.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7"
@@ -5414,23 +5441,10 @@ html-encoding-sniffer@^2.0.1:
dependencies:
whatwg-encoding "^1.0.5"
-html-entities@1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f"
- integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=
-
-html-minifier@4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-4.0.0.tgz#cca9aad8bce1175e02e17a8c33e46d8988889f56"
- integrity sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==
- dependencies:
- camel-case "^3.0.0"
- clean-css "^4.2.1"
- commander "^2.19.0"
- he "^1.2.0"
- param-case "^2.1.1"
- relateurl "^0.2.7"
- uglify-js "^3.5.1"
+html-entities@2.3.2:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.2.tgz#760b404685cb1d794e4f4b744332e3b00dcfe488"
+ integrity sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==
htmlparser2@^3.9.1:
version "3.10.1"
@@ -5485,7 +5499,7 @@ http-headers@^3.0.1:
dependencies:
next-line "^1.1.0"
-http-proxy-agent@4.0.1, http-proxy-agent@^4.0.1:
+http-proxy-agent@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a"
integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==
@@ -5527,7 +5541,7 @@ http_ece@1.1.0:
dependencies:
urlsafe-base64 "~1.0.0"
-https-proxy-agent@5.0.0, https-proxy-agent@^5.0.0:
+https-proxy-agent@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2"
integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==
@@ -5535,6 +5549,11 @@ https-proxy-agent@5.0.0, https-proxy-agent@^5.0.0:
agent-base "6"
debug "4"
+human-signals@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
+ integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
+
human-signals@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
@@ -5552,7 +5571,7 @@ humanize-number@0.0.2:
resolved "https://registry.yarnpkg.com/humanize-number/-/humanize-number-0.0.2.tgz#11c0af6a471643633588588048f1799541489c18"
integrity sha1-EcCvakcWQ2M1iFiASPF5lUFInBg=
-iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4:
+iconv-lite@0.4.24, iconv-lite@^0.4.4:
version "0.4.24"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
@@ -5566,6 +5585,13 @@ iconv-lite@^0.6.2:
dependencies:
safer-buffer ">= 2.1.2 < 3.0.0"
+iconv-lite@^0.6.3:
+ version "0.6.3"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
+ integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3.0.0"
+
icss-replace-symbols@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
@@ -5583,7 +5609,7 @@ idb-keyval@5.1.3:
dependencies:
safari-14-idb-fix "^1.0.4"
-ieee754@1.1.13, ieee754@^1.1.13, ieee754@^1.1.4:
+ieee754@1.1.13, ieee754@^1.1.4:
version "1.1.13"
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
@@ -5616,6 +5642,14 @@ import-fresh@^3.0.0, import-fresh@^3.2.1:
parent-module "^1.0.0"
resolve-from "^4.0.0"
+import-fresh@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
+ integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
+ dependencies:
+ parent-module "^1.0.0"
+ resolve-from "^4.0.0"
+
import-local@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6"
@@ -5667,6 +5701,11 @@ inherits@2.0.3:
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
+ini@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5"
+ integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==
+
ini@^1.3.4, ini@~1.3.0:
version "1.3.7"
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84"
@@ -5697,10 +5736,10 @@ invert-kv@^1.0.0:
resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY=
-invert-kv@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02"
- integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==
+invert-kv@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-3.0.1.tgz#a93c7a3d4386a1dc8325b97da9bb1620c0282523"
+ integrity sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==
ioredis@^4.27.0:
version "4.27.6"
@@ -5718,11 +5757,6 @@ ioredis@^4.27.0:
redis-parser "^3.0.0"
standard-as-callback "^2.1.0"
-ip-regex@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9"
- integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=
-
ip@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a"
@@ -5787,17 +5821,12 @@ is-callable@^1.1.4, is-callable@^1.1.5:
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab"
integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==
-is-color-stop@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345"
- integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=
+is-ci@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994"
+ integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==
dependencies:
- css-color-names "^0.0.4"
- hex-color-regex "^1.1.0"
- hsl-regex "^1.0.0"
- hsla-regex "^1.0.0"
- rgb-regex "^1.0.1"
- rgba-regex "^1.0.0"
+ ci-info "^3.1.1"
is-core-module@^2.0.0:
version "2.0.0"
@@ -5911,6 +5940,14 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
dependencies:
is-extglob "^2.1.1"
+is-installed-globally@~0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520"
+ integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==
+ dependencies:
+ global-dirs "^3.0.0"
+ is-path-inside "^3.0.2"
+
is-lambda@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5"
@@ -5952,6 +5989,11 @@ is-number@^7.0.0:
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+is-path-inside@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
+ integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
+
is-plain-obj@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
@@ -5998,16 +6040,6 @@ is-resolvable@^1.1.0:
resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
-is-root@2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c"
- integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==
-
-is-stream@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
- integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
-
is-stream@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3"
@@ -6046,6 +6078,11 @@ is-unc-path@^1.0.0:
dependencies:
unc-path-regex "^0.1.2"
+is-unicode-supported@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
+ integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
+
is-utf8@^0.2.0, is-utf8@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
@@ -6134,6 +6171,17 @@ jmespath@0.15.0:
resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217"
integrity sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=
+joi@^17.4.0:
+ version "17.4.2"
+ resolved "https://registry.yarnpkg.com/joi/-/joi-17.4.2.tgz#02f4eb5cf88e515e614830239379dcbbe28ce7f7"
+ integrity sha512-Lm56PP+n0+Z2A2rfRvsfWVDXGEWjXxatPopkQ8qQ5mxCEhwHG+Ettgg5o98FFaxilOxozoa14cFhrE/hOzh/Nw==
+ dependencies:
+ "@hapi/hoek" "^9.0.0"
+ "@hapi/topo" "^5.0.0"
+ "@sideway/address" "^4.1.0"
+ "@sideway/formula" "^3.0.0"
+ "@sideway/pinpoint" "^2.0.0"
+
jpeg-js@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.4.1.tgz#937a3ae911eb6427f151760f8123f04c8bfe6ef7"
@@ -6218,15 +6266,15 @@ jsbn@~0.1.0:
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
-jschardet@^2.1.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-2.1.1.tgz#af6f8fd0b3b0f5d46a8fd9614a4fce490575c184"
- integrity sha512-pA5qG9Zwm8CBpGlK/lo2GE9jPxwqRgMV7Lzc/1iaPccw6v4Rhj8Zg2BTyrdmHmxlJojnbLupLeRnaPLsq03x6Q==
+jschardet@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-3.0.0.tgz#898d2332e45ebabbdb6bf2feece9feea9a99e882"
+ integrity sha512-lJH6tJ77V8Nzd5QWRkFYCLc13a3vADkh3r/Fi8HupZGWk2OVVDfnZP8V/VgQgZ+lzW0kG2UGb5hFgt3V3ndotQ==
-jsdom@16.6.0:
- version "16.6.0"
- resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.6.0.tgz#f79b3786682065492a3da6a60a4695da983805ac"
- integrity sha512-Ty1vmF4NHJkolaEmdjtxTfSfkdb8Ywarwf63f+F8/mDD1uLSSWDxDuMiZxiPhwunLrn9LOSVItWj4bLYsLN3Dg==
+jsdom@16.7.0:
+ version "16.7.0"
+ resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710"
+ integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==
dependencies:
abab "^2.0.5"
acorn "^8.2.4"
@@ -6253,20 +6301,15 @@ jsdom@16.6.0:
whatwg-encoding "^1.0.5"
whatwg-mimetype "^2.3.0"
whatwg-url "^8.5.0"
- ws "^7.4.5"
+ ws "^7.4.6"
xml-name-validator "^3.0.0"
-jsesc@^2.5.1:
- version "2.5.2"
- resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
- integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
-
json-buffer@3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13"
integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
-json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2:
+json-parse-better-errors@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
@@ -6331,6 +6374,15 @@ json5@^2.1.2, json5@^2.1.3:
dependencies:
minimist "^1.2.5"
+jsonfile@^6.0.1:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
+ integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
+ dependencies:
+ universalify "^2.0.0"
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
jsonld@5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/jsonld/-/jsonld-5.2.0.tgz#d1e8af38a334cb95edf0f2ae4e2b58baf8d2b5a9"
@@ -6386,18 +6438,13 @@ jws@^4.0.0:
jwa "^2.0.0"
safe-buffer "^5.0.1"
-katex@0.13.11:
- version "0.13.11"
- resolved "https://registry.yarnpkg.com/katex/-/katex-0.13.11.tgz#66138ebf173f25ef130cd3a3ea3ea1d12a3f1362"
- integrity sha512-yJBHVIgwlAaapzlbvTpVF/ZOs8UkTj/sd46Fl8+qAf2/UiituPYVeapVD8ADZtqyRg/qNWUKt7gJoyYVWLrcXw==
+katex@0.13.13:
+ version "0.13.13"
+ resolved "https://registry.yarnpkg.com/katex/-/katex-0.13.13.tgz#15a796e95516869bc6d483443b58b2df872ee40f"
+ integrity sha512-cCMcil4jwMm7behpXGiQfXJA29sko/Gd/26iCsr53Dv5Jn2iHbHyEb14dm9uVrIijUXx6Zz1WhlFhHE6DckvkQ==
dependencies:
commander "^6.0.0"
-keygrip@~1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.0.3.tgz#399d709f0aed2bab0a059e0cdd3a5023a053e1dc"
- integrity sha512-/PpesirAIfaklxUzp4Yb7xBper9MwP6hNRA6BGGUFCgbJ+BM5CKBtsoxinNXkLHAr+GXS1/lSlF2rP7cv5Fl+g==
-
keygrip@~1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.1.0.tgz#871b1681d5e159c62a445b0c74b615e0917e7226"
@@ -6476,11 +6523,6 @@ koa-favicon@2.1.0:
dependencies:
mz "^2.7.0"
-koa-is-json@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/koa-is-json/-/koa-is-json-1.0.0.tgz#273c07edcdcb8df6a2c1ab7d59ee76491451ec14"
- integrity sha1-JzwH7c3Ljfaiwat9We52SRRR7BQ=
-
koa-json-body@5.3.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/koa-json-body/-/koa-json-body-5.3.0.tgz#64aad3f400adfb81df54b63f7a5eb38bad62d980"
@@ -6566,36 +6608,6 @@ koa@2.13.1:
type-is "^1.6.16"
vary "^1.1.2"
-koa@2.8.1:
- version "2.8.1"
- resolved "https://registry.yarnpkg.com/koa/-/koa-2.8.1.tgz#98e13b267ab8a1868f015a4b41b5a52e31457ce5"
- integrity sha512-iCgjRkntcVud5amnioi+79r7TPVhKPfCY8UzL9GjyU+nIWTE9xsqyrJ6kib3InT9JYRyUu9Y67i5apCjf997TQ==
- dependencies:
- accepts "^1.3.5"
- cache-content-type "^1.0.0"
- content-disposition "~0.5.2"
- content-type "^1.0.4"
- cookies "~0.7.1"
- debug "~3.1.0"
- delegates "^1.0.0"
- depd "^1.1.2"
- destroy "^1.0.4"
- error-inject "^1.0.0"
- escape-html "^1.0.3"
- fresh "~0.5.2"
- http-assert "^1.3.0"
- http-errors "^1.6.3"
- is-generator-function "^1.0.7"
- koa-compose "^4.1.0"
- koa-convert "^1.2.0"
- koa-is-json "^1.0.0"
- on-finished "^2.3.0"
- only "~0.0.2"
- parseurl "^1.3.2"
- statuses "^1.5.0"
- type-is "^1.6.16"
- vary "^1.1.2"
-
ky-universal@^0.8.2:
version "0.8.2"
resolved "https://registry.yarnpkg.com/ky-universal/-/ky-universal-0.8.2.tgz#edc398d54cf495d7d6830aa1ab69559a3cc7f824"
@@ -6622,6 +6634,11 @@ last-run@^1.1.0:
default-resolution "^2.0.0"
es6-weak-map "^2.0.1"
+lazy-ass@1.6.0, lazy-ass@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513"
+ integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM=
+
lazystream@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4"
@@ -6636,12 +6653,12 @@ lcid@^1.0.0:
dependencies:
invert-kv "^1.0.0"
-lcid@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf"
- integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==
+lcid@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/lcid/-/lcid-3.1.1.tgz#9030ec479a058fc36b5e8243ebaac8b6ac582fd0"
+ integrity sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==
dependencies:
- invert-kv "^2.0.0"
+ invert-kv "^3.0.0"
lead@^1.0.0:
version "1.0.0"
@@ -6680,6 +6697,11 @@ liftoff@^3.1.0:
rechoir "^0.6.2"
resolve "^1.1.7"
+lilconfig@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.3.tgz#68f3005e921dafbd2a2afb48379986aa6d2579fd"
+ integrity sha512-EHKqr/+ZvdKCifpNrJCKxBTgk5XupZA3y/aCPY9mxfgBzmgh93Mt/WqjjQ38oMxXuvDokaKiM3lAgvSH2sjtHg==
+
lines-and-columns@^1.1.6:
version "1.1.6"
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
@@ -6692,6 +6714,19 @@ linkify-it@^3.0.1:
dependencies:
uc.micro "^1.0.1"
+listr2@^3.8.3:
+ version "3.11.0"
+ resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.11.0.tgz#9771b02407875aa78e73d6e0ff6541bbec0aaee9"
+ integrity sha512-XLJVe2JgXCyQTa3FbSv11lkKExYmEyA4jltVo8z4FX10Vt1Yj8IMekBfwim0BSOM9uj1QMTJvDQQpHyuPbB/dQ==
+ dependencies:
+ cli-truncate "^2.1.0"
+ colorette "^1.2.2"
+ log-update "^4.0.0"
+ p-map "^4.0.0"
+ rxjs "^6.6.7"
+ through "^2.3.8"
+ wrap-ansi "^7.0.0"
+
load-json-file@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
@@ -6768,11 +6803,6 @@ lodash.clonedeep@^4.5.0:
resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=
-lodash.debounce@^4.0.8:
- version "4.0.8"
- resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
- integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168=
-
lodash.defaults@^4.0.1, lodash.defaults@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
@@ -6823,6 +6853,11 @@ lodash.merge@^4.4.0, lodash.merge@^4.6.2:
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
+lodash.once@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac"
+ integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=
+
lodash.pick@^4.2.1:
version "4.4.0"
resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3"
@@ -6848,11 +6883,6 @@ lodash.sortby@^4.7.0:
resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=
-lodash.throttle@^4.0.0:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4"
- integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=
-
lodash.truncate@^4.4.2:
version "4.4.2"
resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193"
@@ -6863,7 +6893,7 @@ lodash.uniq@^4.5.0:
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
-lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.7.0:
+lodash@^4.17.14, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.7.0:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -6875,19 +6905,23 @@ log-symbols@4.0.0:
dependencies:
chalk "^4.0.0"
-lookup-dns-cache@2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/lookup-dns-cache/-/lookup-dns-cache-2.1.0.tgz#6362340e269071e20b6f0bcf51da98873411e051"
- integrity sha512-tLcJ7rkqWzZ77D7pN5R2ceWKZsIJ5/6HaLQdmhw3M9fBQQmqS4LZqvBcstKzQ6kuZet5LY4TWTiShx7QmO+Q8w==
+log-symbols@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503"
+ integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==
dependencies:
- async "2.6.0"
- lodash "^4.17.10"
- rr "0.1.0"
+ chalk "^4.1.0"
+ is-unicode-supported "^0.1.0"
-lower-case@^1.1.1:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
- integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw=
+log-update@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1"
+ integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==
+ dependencies:
+ ansi-escapes "^4.3.0"
+ cli-cursor "^3.1.0"
+ slice-ansi "^4.0.0"
+ wrap-ansi "^6.2.0"
lowercase-keys@^2.0.0:
version "2.0.0"
@@ -6923,21 +6957,6 @@ magic-string@^0.25.7:
dependencies:
sourcemap-codec "^1.4.4"
-make-dir@^1.0.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
- integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==
- dependencies:
- pify "^3.0.0"
-
-make-dir@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
- integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
- dependencies:
- pify "^4.0.1"
- semver "^5.6.0"
-
make-error@^1.1.1:
version "1.3.6"
resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
@@ -6971,7 +6990,7 @@ make-iterator@^1.0.0:
dependencies:
kind-of "^6.0.2"
-map-age-cleaner@^0.1.1:
+map-age-cleaner@^0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a"
integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==
@@ -6988,6 +7007,11 @@ map-stream@~0.0.7:
resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.0.7.tgz#8a1f07896d82b10926bd3744a2420009f88974a8"
integrity sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=
+map-stream@~0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194"
+ integrity sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=
+
map-visit@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
@@ -7000,10 +7024,10 @@ markdown-it-anchor@7.1.0:
resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-7.1.0.tgz#30fb21497bf59e83ff4d1ddc052d821962e2489e"
integrity sha512-loQggrwsIkkP7TOrESvmYkV2ikbQNNKhHcWyqC7/C2CmfHl1tkUizJJU8C5aGgg7J6oXVQJx17gk7i47tNn/lQ==
-markdown-it@12.1.0:
- version "12.1.0"
- resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.1.0.tgz#7ad572caddd336bd27a68d20e86bac1fafe8fb20"
- integrity sha512-7temG6IFOOxfU0SgzhqR+vr2diuMhyO5uUIEZ3C5NbXhqC9uFUHoU41USYuDFoZRsaY7BEIEei874Z20VMLF6A==
+markdown-it@12.2.0:
+ version "12.2.0"
+ resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.2.0.tgz#091f720fd5db206f80de7a8d1f1a7035fd0d38db"
+ integrity sha512-Wjws+uCrVQRqOoJvze4HCqkKl1AsSh95iFAeQDwnyfxM09divCBSXlDR1uTvyUP3Grzpn4Ru8GeCxYPM8vkCQg==
dependencies:
argparse "^2.0.1"
entities "~2.1.0"
@@ -7021,11 +7045,6 @@ matchdep@^2.0.0:
resolve "^1.4.0"
stack-trace "0.0.10"
-material-colors@^1.0.0:
- version "1.2.6"
- resolved "https://registry.yarnpkg.com/material-colors/-/material-colors-1.2.6.tgz#6d1958871126992ceecc72f4bcc4d8f010865f46"
- integrity sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==
-
math-expression-evaluator@^1.2.14:
version "1.3.7"
resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.3.7.tgz#1b62225db86af06f7ea1fd9576a34af605a5b253"
@@ -7061,14 +7080,14 @@ media-typer@0.3.0:
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
-mem@^4.0.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178"
- integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==
+mem@^5.0.0:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/mem/-/mem-5.1.1.tgz#7059b67bf9ac2c924c9f1cff7155a064394adfb3"
+ integrity sha512-qvwipnozMohxLXG1pOqoLiZKNkC4r4qqRucSoDwXowsNGDSULiqFTRUF05vcZWnwJSG22qTsynQhxbaMtnX9gw==
dependencies:
- map-age-cleaner "^0.1.1"
- mimic-fn "^2.0.0"
- p-is-promise "^2.0.0"
+ map-age-cleaner "^0.1.3"
+ mimic-fn "^2.1.0"
+ p-is-promise "^2.1.0"
merge-source-map@^1.1.0:
version "1.1.0"
@@ -7148,7 +7167,7 @@ mime-types@^2.1.12, mime-types@^2.1.18, mime-types@^2.1.27, mime-types@~2.1.19,
dependencies:
mime-db "1.44.0"
-mimic-fn@^2.0.0, mimic-fn@^2.1.0:
+mimic-fn@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
@@ -7273,7 +7292,7 @@ mkdirp-classic@^0.5.3:
resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
-mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1:
+mkdirp@^0.5.3, mkdirp@^0.5.4, mkdirp@~0.5.1:
version "0.5.5"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==
@@ -7316,13 +7335,6 @@ mocha@8.4.0:
yargs-parser "20.2.4"
yargs-unparser "2.0.0"
-moji@0.5.1:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/moji/-/moji-0.5.1.tgz#088eecd1c22c8f31a240adcf9c95e54f33eb54fb"
- integrity sha1-CI7s0cIsjzGiQK3PnJXlTzPrVPs=
- dependencies:
- object-assign "^3.0.0"
-
moment-timezone@^0.5.25:
version "0.5.28"
resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.28.tgz#f093d789d091ed7b055d82aa81a82467f72e4338"
@@ -7350,15 +7362,15 @@ ms@2.1.3, ms@^2.0.0, ms@^2.1.1:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
-multer@1.4.2:
- version "1.4.2"
- resolved "https://registry.yarnpkg.com/multer/-/multer-1.4.2.tgz#2f1f4d12dbaeeba74cb37e623f234bf4d3d2057a"
- integrity sha512-xY8pX7V+ybyUpbYMxtjM9KAiD9ixtg5/JkeKUTD6xilfDv0vzzOFcCp4Ljb1UU3tSOM3VTZtKo63OmzOrGi3Cg==
+multer@1.4.3:
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/multer/-/multer-1.4.3.tgz#4db352d6992e028ac0eacf7be45c6efd0264297b"
+ integrity sha512-np0YLKncuZoTzufbkM6wEKp68EhWJXcU6fq6QqrSwkckd2LlMgd1UqhUJLj6NS/5sZ8dE8LYDWslsltJznnXlg==
dependencies:
append-field "^1.0.0"
busboy "^0.2.11"
concat-stream "^1.5.2"
- mkdirp "^0.5.1"
+ mkdirp "^0.5.4"
object-assign "^4.1.1"
on-finished "^2.3.0"
type-is "^1.6.4"
@@ -7378,7 +7390,7 @@ mz@^2.4.0, mz@^2.7.0:
object-assign "^4.0.1"
thenify-all "^1.0.0"
-nan@^2.14.0, nan@^2.14.2:
+nan@^2.14.2:
version "2.14.2"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19"
integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==
@@ -7461,18 +7473,6 @@ next-tick@~1.0.0:
resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.0.0.tgz#ca86d1fe8828169b0120208e3dc8424b9db8342c"
integrity sha1-yobR/ogoFpsBICCOPchCS524NCw=
-nice-try@^1.0.4:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
- integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
-
-no-case@^2.2.0:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac"
- integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==
- dependencies:
- lower-case "^1.1.1"
-
node-abi@^2.21.0:
version "2.21.0"
resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.21.0.tgz#c2dc9ebad6f4f53d6ea9b531e7b8faad81041d48"
@@ -7480,10 +7480,10 @@ node-abi@^2.21.0:
dependencies:
semver "^5.4.1"
-node-addon-api@^3.2.0:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161"
- integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==
+node-addon-api@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.0.0.tgz#ac128f43eff7fac4b5f5ef2f39d6d7c2709efead"
+ integrity sha512-ALmRVBFzfwldBfk3SbKfl6+PVMXiCPKZBEfsJqB/EjXAMAI+MfFrEHR+GMRBuI162DihZ1QjEZ8ieYKuRCJ8Hg==
node-fetch@2.6.1, node-fetch@^2.6.1:
version "2.6.1"
@@ -7519,11 +7519,6 @@ node-gyp@^8.0.0:
tar "^6.1.0"
which "^2.0.2"
-node-object-hash@^1.2.0:
- version "1.4.2"
- resolved "https://registry.yarnpkg.com/node-object-hash/-/node-object-hash-1.4.2.tgz#385833d85b229902b75826224f6077be969a9e94"
- integrity sha512-UdS4swXs85fCGWWf6t6DMGgpN/vnlKeSGEQ7hJcrs7PBFoxoKLmibc3QRb7fwiYsjdL7PX8iI/TMSlZ90dgHhQ==
-
node-releases@^1.1.70, node-releases@^1.1.71:
version "1.1.71"
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb"
@@ -7541,10 +7536,10 @@ nofilter@^2.0.3:
dependencies:
"@cto.af/textdecoder" "^0.0.0"
-noop-logger@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2"
- integrity sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=
+nofilter@^3.0.2:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-3.0.3.tgz#3ff3b142efdccb403434ccae4a0c2c835cb9b522"
+ integrity sha512-TN/MCrQmXQk5DyUJ8TGUq1Il8rv4fTsjddLmMopV006QP8DMkglmGgYfQKD5620vXLRXfr8iGI6ZZ4/ZWld2cQ==
nopt@^4.0.3:
version "4.0.3"
@@ -7615,14 +7610,7 @@ now-and-later@^2.0.0:
dependencies:
once "^1.3.2"
-npm-run-path@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
- integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
- dependencies:
- path-key "^2.0.0"
-
-npm-run-path@^4.0.1:
+npm-run-path@^4.0.0, npm-run-path@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
@@ -7678,16 +7666,6 @@ oauth@0.9.15:
resolved "https://registry.yarnpkg.com/oauth/-/oauth-0.9.15.tgz#bd1fefaf686c96b75475aed5196412ff60cfb9c1"
integrity sha1-vR/vr2hslrdUda7VGWQS/2DPucE=
-object-assign-deep@0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/object-assign-deep/-/object-assign-deep-0.4.0.tgz#43505d3679abb9686ab359b97ac14cc837a9d143"
- integrity sha512-54Uvn3s+4A/cMWx9tlRez1qtc7pN7pbQ+Yi7mjLjcBpWLlP+XbSHiHbQW6CElDiV4OvuzqnMrBdkgxI1mT8V/Q==
-
-object-assign@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2"
- integrity sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=
-
object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
@@ -7799,7 +7777,7 @@ once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0:
dependencies:
wrappy "1"
-onetime@^5.1.2:
+onetime@^5.1.0, onetime@^5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
@@ -7859,14 +7837,14 @@ os-locale@^1.4.0:
dependencies:
lcid "^1.0.0"
-os-locale@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a"
- integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==
+os-locale@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-5.0.0.tgz#6d26c1d95b6597c5d5317bf5fba37eccec3672e0"
+ integrity sha512-tqZcNEDAIZKBEPnHPlVDvKrp7NzgLi7jRmhKiUoa2NUmhl13FtkAGLUVR+ZsYvApBQdBfYm43A4tXXQ4IrYLBA==
dependencies:
- execa "^1.0.0"
- lcid "^2.0.0"
- mem "^4.0.0"
+ execa "^4.0.0"
+ lcid "^3.0.0"
+ mem "^5.0.0"
os-tmpdir@^1.0.0:
version "1.0.2"
@@ -7886,6 +7864,11 @@ osenv@^0.1.4:
os-homedir "^1.0.0"
os-tmpdir "^1.0.0"
+ospath@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b"
+ integrity sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs=
+
p-cancelable@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.0.0.tgz#4a3740f5bdaf5ed5d7c3e34882c6fb5d6b266a6e"
@@ -7901,7 +7884,7 @@ p-finally@^1.0.0:
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
-p-is-promise@^2.0.0:
+p-is-promise@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e"
integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==
@@ -7977,13 +7960,6 @@ packet-reader@1.0.0:
resolved "https://registry.yarnpkg.com/packet-reader/-/packet-reader-1.0.0.tgz#9238e5480dedabacfe1fe3f2771063f164157d74"
integrity sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==
-param-case@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247"
- integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc=
- dependencies:
- no-case "^2.2.0"
-
parent-module@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
@@ -8012,14 +7988,6 @@ parse-json@^2.2.0:
dependencies:
error-ex "^1.2.0"
-parse-json@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
- integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
- dependencies:
- error-ex "^1.3.1"
- json-parse-better-errors "^1.0.1"
-
parse-json@^5.0.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.1.0.tgz#f96088cdf24a8faa9aea9a009f2d9d942c999646"
@@ -8099,11 +8067,6 @@ path-is-absolute@1.0.1, path-is-absolute@^1.0.0:
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
-path-key@^2.0.0, path-key@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
- integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
-
path-key@^3.0.0, path-key@^3.1.0:
version "3.1.1"
resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
@@ -8145,15 +8108,22 @@ path-type@^4.0.0:
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
-pathval@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d"
- integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==
+pause-stream@0.0.11:
+ version "0.0.11"
+ resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445"
+ integrity sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=
+ dependencies:
+ through "~2.3"
-peek-readable@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-3.1.0.tgz#250b08b7de09db8573d7fd8ea475215bbff14348"
- integrity sha512-KGuODSTV6hcgdZvDrIDBUkN0utcAVj1LL7FfGbM0viKTtCHmtZcuEJ+lGqsp0fTFkGqesdtemV2yUSMeyy3ddA==
+peek-readable@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-4.0.1.tgz#9a045f291db254111c3412c1ce4fec27ddd4d202"
+ integrity sha512-7qmhptnR0WMSpxT5rMHG9bW/mYSR1uqaPFj2MHvT+y/aOUu6msJijpKt5SkTDKySwg65OWG2JwTMBlgcbwMHrQ==
+
+pend@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
+ integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA=
performance-now@^2.1.0:
version "2.1.0"
@@ -8170,10 +8140,10 @@ pg-int8@1.0.1:
resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c"
integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==
-pg-pool@^3.3.0:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.3.0.tgz#12d5c7f65ea18a6e99ca9811bd18129071e562fc"
- integrity sha512-0O5huCql8/D6PIRFAlmccjphLYWC+JIzvUhSzXSpGaf+tjTZc4nn+Lr7mLXBbFJfvwbP0ywDv73EiaBsxn7zdg==
+pg-pool@^3.4.1:
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.4.1.tgz#0e71ce2c67b442a5e862a9c182172c37eda71e9c"
+ integrity sha512-TVHxR/gf3MeJRvchgNHxsYsTCHQ+4wm3VIHSS19z8NC0+gioEhq1okDY1sm/TYbfoP6JLFx01s0ShvZ3puP/iQ==
pg-protocol@^1.5.0:
version "1.5.0"
@@ -8191,15 +8161,15 @@ pg-types@^2.1.0:
postgres-date "~1.0.4"
postgres-interval "^1.1.0"
-pg@8.6.0:
- version "8.6.0"
- resolved "https://registry.yarnpkg.com/pg/-/pg-8.6.0.tgz#e222296b0b079b280cce106ea991703335487db2"
- integrity sha512-qNS9u61lqljTDFvmk/N66EeGq3n6Ujzj0FFyNMGQr6XuEv4tgNTXvJQTfJdcvGit5p5/DWPu+wj920hAJFI+QQ==
+pg@8.7.1:
+ version "8.7.1"
+ resolved "https://registry.yarnpkg.com/pg/-/pg-8.7.1.tgz#9ea9d1ec225980c36f94e181d009ab9f4ce4c471"
+ integrity sha512-7bdYcv7V6U3KAtWjpQJJBww0UEsWuh4yQ/EjNf2HeO/NnvKjpvhEIe/A/TleP6wtmSKnUnghs5A9jUoK6iDdkA==
dependencies:
buffer-writer "2.0.0"
packet-reader "1.0.0"
pg-connection-string "^2.5.0"
- pg-pool "^3.3.0"
+ pg-pool "^3.4.1"
pg-protocol "^1.5.0"
pg-types "^2.1.0"
pgpass "1.x"
@@ -8216,16 +8186,11 @@ picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.0.7, picomatch@^2.2.1:
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad"
integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==
-pify@^2.0.0:
+pify@^2.0.0, pify@^2.2.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
-pify@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
- integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
-
pify@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
@@ -8243,13 +8208,6 @@ pinkie@^2.0.0:
resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
-pkg-dir@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
- integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==
- dependencies:
- find-up "^3.0.0"
-
pkg-dir@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
@@ -8484,13 +8442,13 @@ postcss-minify-gradients@^1.0.1:
postcss "^5.0.12"
postcss-value-parser "^3.3.0"
-postcss-minify-gradients@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.0.1.tgz#2dc79fd1a1afcb72a9e727bc549ce860f93565d2"
- integrity sha512-odOwBFAIn2wIv+XYRpoN2hUV3pPQlgbJ10XeXPq8UY2N+9ZG42xu45lTn/g9zZ+d70NKSQD6EOi6UiCMu3FN7g==
+postcss-minify-gradients@^5.0.2:
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.0.2.tgz#7c175c108f06a5629925d698b3c4cf7bd3864ee5"
+ integrity sha512-7Do9JP+wqSD6Prittitt2zDLrfzP9pqKs2EcLX7HJYxsxCOwrrcLt4x/ctQTsiOw+/8HYotAoqNkrzItL19SdQ==
dependencies:
+ colord "^2.6"
cssnano-utils "^2.0.1"
- is-color-stop "^1.1.0"
postcss-value-parser "^4.1.0"
postcss-minify-params@^1.0.4:
@@ -8796,10 +8754,10 @@ postcss-zindex@^2.0.1:
postcss "^5.0.4"
uniqs "^2.0.0"
-postcss@8.3.5:
- version "8.3.5"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.5.tgz#982216b113412bc20a86289e91eb994952a5b709"
- integrity sha512-NxTuJocUhYGsMiMFHDUkmjSKT3EdH4/WbGF6GCi1NDGk+vbcUTun4fpbOqaPtD8IIsztA2ilZm2DhYCuyN58gA==
+postcss@8.3.6:
+ version "8.3.6"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.6.tgz#2730dd76a97969f37f53b9a6096197be311cc4ea"
+ integrity sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A==
dependencies:
colorette "^1.2.2"
nanoid "^3.1.23"
@@ -8855,10 +8813,10 @@ postgres-interval@^1.1.0:
dependencies:
xtend "^4.0.0"
-prebuild-install@^6.1.2:
- version "6.1.2"
- resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-6.1.2.tgz#6ce5fc5978feba5d3cbffedca0682b136a0b5bff"
- integrity sha512-PzYWIKZeP+967WuKYXlTOhYBgGOvTRSfaKI89XnfJ0ansRAH7hDU45X+K+FZeI1Wb/7p/NnuctPH3g0IqKUuSQ==
+prebuild-install@^6.1.4:
+ version "6.1.4"
+ resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-6.1.4.tgz#ae3c0142ad611d58570b89af4986088a4937e00f"
+ integrity sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ==
dependencies:
detect-libc "^1.0.3"
expand-template "^2.0.3"
@@ -8867,7 +8825,6 @@ prebuild-install@^6.1.2:
mkdirp-classic "^0.5.3"
napi-build-utils "^1.0.1"
node-abi "^2.21.0"
- noop-logger "^0.1.1"
npmlog "^4.0.1"
pump "^3.0.0"
rc "^1.2.7"
@@ -8890,6 +8847,11 @@ prepend-http@^1.0.0:
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
+pretty-bytes@^5.6.0:
+ version "5.6.0"
+ resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb"
+ integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==
+
pretty-hrtime@^1.0.0:
version "1.0.3"
resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1"
@@ -8959,11 +8921,6 @@ promise-retry@^2.0.1:
err-code "^2.0.2"
retry "^0.12.0"
-promise-sequential@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/promise-sequential/-/promise-sequential-1.1.1.tgz#f79e8950ef86e7a7a85bf320452643592f6d2fb2"
- integrity sha1-956JUO+G56eoW/MgRSZDWS9tL7I=
-
promise.prototype.finally@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/promise.prototype.finally/-/promise.prototype.finally-3.1.2.tgz#b8af89160c9c673cefe3b4c4435b53cfd0287067"
@@ -8985,12 +8942,19 @@ proto-list@~1.2.1:
resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=
+ps-tree@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.2.0.tgz#5e7425b89508736cdd4f2224d028f7bb3f722ebd"
+ integrity sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==
+ dependencies:
+ event-stream "=3.3.4"
+
pseudomap@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
-psl@^1.1.24, psl@^1.1.28, psl@^1.1.33:
+psl@^1.1.28, psl@^1.1.33:
version "1.8.0"
resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
@@ -9133,11 +9097,6 @@ punycode@2.1.1, punycode@^2.1.0, punycode@^2.1.1:
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
-punycode@^1.4.1:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
- integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
-
pureimage@0.3.2:
version "0.3.2"
resolved "https://registry.yarnpkg.com/pureimage/-/pureimage-0.3.2.tgz#3cae06abaf2735e806c089bcbd188e3c7926bf2e"
@@ -9198,6 +9157,11 @@ quick-lru@^5.1.1:
resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
+ramda@~0.27.1:
+ version "0.27.1"
+ resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9"
+ integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==
+
random-seed@0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/random-seed/-/random-seed-0.3.0.tgz#d945f2e1f38f49e8d58913431b8bf6bb937556cd"
@@ -9346,7 +9310,7 @@ rechoir@^0.7.0:
dependencies:
resolve "^1.9.0"
-reconnecting-websocket@4.4.0, reconnecting-websocket@^4.4.0:
+reconnecting-websocket@^4.4.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/reconnecting-websocket/-/reconnecting-websocket-4.4.0.tgz#3b0e5b96ef119e78a03135865b8bb0af1b948783"
integrity sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==
@@ -9404,7 +9368,7 @@ reflect-metadata@0.1.13, reflect-metadata@^0.1.13:
resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08"
integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==
-regenerator-runtime@0.13.7, regenerator-runtime@^0.13.4:
+regenerator-runtime@^0.13.4:
version "0.13.7"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==
@@ -9422,11 +9386,6 @@ regexpp@^3.1.0:
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2"
integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==
-relateurl@^0.2.7:
- version "0.2.7"
- resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
- integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=
-
remove-bom-buffer@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53"
@@ -9489,19 +9448,26 @@ replacestream@^4.0.3:
object-assign "^4.0.1"
readable-stream "^2.0.2"
-request-promise-core@1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346"
- integrity sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==
+request-progress@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe"
+ integrity sha1-TKdUCBx/7GP1BeT6qCWqBs1mnb4=
dependencies:
- lodash "^4.17.11"
+ throttleit "^1.0.0"
-request-promise-native@1.0.7:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59"
- integrity sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==
+request-promise-core@1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f"
+ integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==
dependencies:
- request-promise-core "1.1.2"
+ lodash "^4.17.19"
+
+request-promise-native@1.0.9:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28"
+ integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==
+ dependencies:
+ request-promise-core "1.1.4"
stealthy-require "^1.1.1"
tough-cookie "^2.3.3"
@@ -9513,33 +9479,7 @@ request-stats@3.0.0:
http-headers "^3.0.1"
once "^1.4.0"
-request@2.88.0:
- version "2.88.0"
- resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
- integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==
- dependencies:
- aws-sign2 "~0.7.0"
- aws4 "^1.8.0"
- caseless "~0.12.0"
- combined-stream "~1.0.6"
- extend "~3.0.2"
- forever-agent "~0.6.1"
- form-data "~2.3.2"
- har-validator "~5.1.0"
- http-signature "~1.2.0"
- is-typedarray "~1.0.0"
- isstream "~0.1.2"
- json-stringify-safe "~5.0.1"
- mime-types "~2.1.19"
- oauth-sign "~0.9.0"
- performance-now "^2.1.0"
- qs "~6.5.2"
- safe-buffer "^5.1.2"
- tough-cookie "~2.4.3"
- tunnel-agent "^0.6.0"
- uuid "^3.3.2"
-
-request@^2.88.0:
+request@2.88.2, request@^2.88.2:
version "2.88.2"
resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
@@ -9565,11 +9505,6 @@ request@^2.88.0:
tunnel-agent "^0.6.0"
uuid "^3.3.2"
-require-all@2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/require-all/-/require-all-2.2.0.tgz#b4420c233ac0282d0ff49b277fb880a8b5de0894"
- integrity sha1-tEIMIzrAKC0P9Jsnf7iAqLXeCJQ=
-
require-all@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/require-all/-/require-all-3.0.0.tgz#473d49704be310115ce124f77383b1ebd8671312"
@@ -9653,7 +9588,7 @@ resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.3.2, resolve@^1.4.0,
is-core-module "^2.0.0"
path-parse "^1.0.6"
-resolve@^1.14.2, resolve@^1.15.1:
+resolve@^1.15.1:
version "1.20.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
@@ -9668,6 +9603,14 @@ responselike@^2.0.0:
dependencies:
lowercase-keys "^2.0.0"
+restore-cursor@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e"
+ integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==
+ dependencies:
+ onetime "^5.1.0"
+ signal-exit "^3.0.2"
+
ret@~0.1.10:
version "0.1.15"
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
@@ -9683,16 +9626,6 @@ reusify@^1.0.4:
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
-rgb-regex@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1"
- integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE=
-
-rgba-regex@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3"
- integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=
-
rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
@@ -9700,13 +9633,6 @@ rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2:
dependencies:
glob "^7.1.3"
-rimraf@^2.6.2:
- version "2.7.1"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
- integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
- dependencies:
- glob "^7.1.3"
-
rndstr@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/rndstr/-/rndstr-1.0.0.tgz#77e66fa8f9b4836853fdd91e50719591bb67d349"
@@ -9715,12 +9641,7 @@ rndstr@1.0.0:
rangestr "0.0.1"
seedrandom "2.4.2"
-rr@0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/rr/-/rr-0.1.0.tgz#a18ec25ec94a67c35f210bb3a85d17914e79cd1e"
- integrity sha1-oY7CXslKZ8NfIQuzqF0XkU55zR4=
-
-rsvp@^4.8.4:
+rsvp@^4.8.5:
version "4.8.5"
resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734"
integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==
@@ -9737,6 +9658,20 @@ rxjs@^6.6.3:
dependencies:
tslib "^1.9.0"
+rxjs@^6.6.7:
+ version "6.6.7"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9"
+ integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==
+ dependencies:
+ tslib "^1.9.0"
+
+rxjs@^7.1.0:
+ version "7.3.0"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.3.0.tgz#39fe4f3461dc1e50be1475b2b85a0a88c1e938c6"
+ integrity sha512-p2yuGIg9S1epc3vrjKf6iVb3RCaAYjYskkO+jHIaV0IjOPlJop4UnodOoFb2xeNwlguqLYvGw1b1McillYb5Gw==
+ dependencies:
+ tslib "~2.1.0"
+
s-age@1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/s-age/-/s-age-1.1.2.tgz#c0cf15233ccc93f41de92ea42c36d957977d1ea2"
@@ -9782,10 +9717,10 @@ sass-loader@12.1.0:
klona "^2.0.4"
neo-async "^2.6.2"
-sass@1.35.2:
- version "1.35.2"
- resolved "https://registry.yarnpkg.com/sass/-/sass-1.35.2.tgz#b732314fcdaf7ef8d0f1698698adc378043cb821"
- integrity sha512-jhO5KAR+AMxCEwIH3v+4zbB2WB0z67V1X0jbapfVwQQdjHZUGUyukpnoM6+iCMfsIUC016w9OPKQ5jrNOS9uXw==
+sass@1.38.0:
+ version "1.38.0"
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.38.0.tgz#2f3e60a1efdcdc910586fa79dc89d3399a145b4f"
+ integrity sha512-WBccZeMigAGKoI+NgD7Adh0ab1HUq+6BmyBUEaGxtErbUtWUevEbdgo5EZiJQofLUGcKtlNaO2IdN73AHEua5g==
dependencies:
chokidar ">=3.0.0 <4.0.0"
@@ -9846,17 +9781,12 @@ semver-greatest-satisfied-range@^1.1.0:
dependencies:
sver-compat "^1.5.0"
-"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.6.0:
+"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.6.0:
version "5.7.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
-semver@7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
- integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
-
-semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
+semver@^6.3.0:
version "6.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
@@ -9934,27 +9864,20 @@ shallow-clone@^3.0.0:
dependencies:
kind-of "^6.0.2"
-sharp@0.28.3:
- version "0.28.3"
- resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.28.3.tgz#ecd74cefd020bee4891bb137c9850ee2ce277a8b"
- integrity sha512-21GEP45Rmr7q2qcmdnjDkNP04Ooh5v0laGS5FDpojOO84D1DJwUijLiSq8XNNM6e8aGXYtoYRh3sVNdm8NodMA==
+sharp@0.29.0:
+ version "0.29.0"
+ resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.29.0.tgz#1fa302bd5f60292138c823aa0905609f64d710ba"
+ integrity sha512-mdN1Up0eN+SwyForPls59dWO0nx64J1XRQYy5ZiKSADAccGYCB10UAGJHSVG9VObzJdhHqrVJzQcq6gx8USyoA==
dependencies:
- color "^3.1.3"
+ color "^4.0.1"
detect-libc "^1.0.3"
- node-addon-api "^3.2.0"
- prebuild-install "^6.1.2"
+ node-addon-api "^4.0.0"
+ prebuild-install "^6.1.4"
semver "^7.3.5"
simple-get "^3.1.0"
tar-fs "^2.1.1"
tunnel-agent "^0.6.0"
-shebang-command@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
- integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
- dependencies:
- shebang-regex "^1.0.0"
-
shebang-command@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
@@ -9962,11 +9885,6 @@ shebang-command@^2.0.0:
dependencies:
shebang-regex "^3.0.0"
-shebang-regex@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
- integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
-
shebang-regex@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
@@ -10008,6 +9926,15 @@ slash@^3.0.0:
resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
+slice-ansi@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787"
+ integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==
+ dependencies:
+ ansi-styles "^4.0.0"
+ astral-regex "^2.0.0"
+ is-fullwidth-code-point "^3.0.0"
+
slice-ansi@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b"
@@ -10076,19 +10003,12 @@ sort-keys@^1.0.0:
dependencies:
is-plain-obj "^1.0.0"
-sort-keys@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128"
- integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=
- dependencies:
- is-plain-obj "^1.0.0"
-
sortablejs@1.10.2:
version "1.10.2"
resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.10.2.tgz#6e40364d913f98b85a14f6678f92b5c1221f5290"
integrity sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A==
-source-list-map@^2.0.0, source-list-map@^2.0.1:
+source-list-map@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"
integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==
@@ -10109,7 +10029,7 @@ source-map-resolve@^0.5.0:
source-map-url "^0.4.0"
urix "^0.1.0"
-source-map-support@^0.5.17, source-map-support@~0.5.19:
+source-map-support@~0.5.19:
version "0.5.19"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61"
integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==
@@ -10122,12 +10042,12 @@ source-map-url@^0.4.0:
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
-source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6:
+source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6:
version "0.5.7"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
-source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
+source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
@@ -10152,11 +10072,6 @@ spawn-command@^0.0.2-1:
resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0"
integrity sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=
-spawn-sync@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/spawn-sync/-/spawn-sync-2.0.0.tgz#3af5ba4b73cc5dc8a41d3747eede71e98d949555"
- integrity sha512-AGXIhH/XZVinFewojYTsG8uapHX2e7MjtFbmibvK9qqG4qGd9b6jelU1sTkCA0RVGHvN9exJYTBVbF1Ls2f69g==
-
spdx-correct@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
@@ -10197,6 +10112,13 @@ split-string@^3.0.1, split-string@^3.0.2:
dependencies:
extend-shallow "^3.0.0"
+split@0.3:
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f"
+ integrity sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=
+ dependencies:
+ through "2"
+
split@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9"
@@ -10246,6 +10168,19 @@ standard-as-callback@^2.1.0:
resolved "https://registry.yarnpkg.com/standard-as-callback/-/standard-as-callback-2.1.0.tgz#8953fc05359868a77b5b9739a665c5977bb7df45"
integrity sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==
+start-server-and-test@1.13.1:
+ version "1.13.1"
+ resolved "https://registry.yarnpkg.com/start-server-and-test/-/start-server-and-test-1.13.1.tgz#c06eb18c3f31d610724722b7eecbdf2550b03582"
+ integrity sha512-wZjksmjG5scEHXmV/3HWzImxNzUgaNQ6W8kkqL2GbiOldM+nqiqh7niimlC9ZGNopTGj16kheWZnZtSWgdBZNQ==
+ dependencies:
+ bluebird "3.7.2"
+ check-more-types "2.24.0"
+ debug "4.3.2"
+ execa "5.1.1"
+ lazy-ass "1.6.0"
+ ps-tree "1.2.0"
+ wait-on "6.0.0"
+
static-extend@^0.1.1:
version "0.1.2"
resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
@@ -10264,6 +10199,13 @@ stealthy-require@^1.1.1:
resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=
+stream-combiner@~0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14"
+ integrity sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=
+ dependencies:
+ duplexer "~0.1.1"
+
stream-exhaust@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d"
@@ -10431,11 +10373,6 @@ strip-bom@^3.0.0:
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
-strip-eof@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
- integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
-
strip-final-newline@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
@@ -10451,20 +10388,18 @@ strip-json-comments@~2.0.1:
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
-strtok3@^6.0.3:
- version "6.0.3"
- resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.0.3.tgz#bc81e225c19a909eab86538ff3348c4b3b0553d3"
- integrity sha512-/3RaYN9rW5WEYNHSvn081CgL4HziT027hfi5tsksbPfeWxi3BSLb8tolZDzpYU3I78/0ZqRiFpMDAqN2t4YShA==
+strtok3@^6.2.4:
+ version "6.2.4"
+ resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.2.4.tgz#302aea64c0fa25d12a0385069ba66253fdc38a81"
+ integrity sha512-GO8IcFF9GmFDvqduIspUBwCzCbqzegyVKIsSymcMgiZKeCfrN9SowtUoi8+b59WZMAjIzVZic/Ft97+pynR3Iw==
dependencies:
- "@tokenizer/token" "^0.1.1"
- "@types/debug" "^4.1.5"
- debug "^4.1.1"
- peek-readable "^3.1.0"
+ "@tokenizer/token" "^0.3.0"
+ peek-readable "^4.0.1"
-style-loader@3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.1.0.tgz#e52a22ca2fd1f54c03f2c3e69b10182e68120908"
- integrity sha512-HYVvBMX3RX7zx71pquZV6EcnPN7Deba+zQteSxCLqt3bxYRphmeMr+2mZMrIZjZ7IMa6aOUhNGn8cXGvWMjClw==
+style-loader@3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.2.1.tgz#63cb920ec145c8669e9a50e92961452a1ef5dcde"
+ integrity sha512-1k9ZosJCRFaRbY6hH49JFlRB0fVSbmnyq1iTPjNxUmGVjBNEmwrrHPenhlp+Lgo51BojHSf6pl2FcqYaN3PfVg==
stylehacks@^5.0.1:
version "5.0.1"
@@ -10474,22 +10409,22 @@ stylehacks@^5.0.1:
browserslist "^4.16.0"
postcss-selector-parser "^6.0.4"
-summaly@2.4.0:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/summaly/-/summaly-2.4.0.tgz#2054c91097d331b8aea838c88022bc1f23520cbe"
- integrity sha512-dSXmg6WIk6kxzTfnBEwpMs42q0YI/bBbzU+vFKTd4DMBgH/UKWJCbqHIfrdaxA1I0CocNjXKCj38mglfM82kAg==
+summaly@2.4.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/summaly/-/summaly-2.4.1.tgz#d2a8fa6bad10c1651eb0b849aab3009e87216a3d"
+ integrity sha512-1gETEQXqK5RD7yIGgdGeTwGL1uh+uj14u99atzNLNmvsxwdtZbPvDHZBPXkAW0cqsd8teoBJln5Dh1QeAhvGIg==
dependencies:
- cheerio-httpcli "0.7.4"
- debug "3.1.0"
+ cheerio-httpcli "0.8.2"
+ debug "4.3.2"
escape-regexp "0.0.1"
- html-entities "1.2.1"
- koa "2.8.1"
- request "2.88.0"
- request-promise-native "1.0.7"
- require-all "2.2.0"
+ html-entities "2.3.2"
+ koa "2.13.1"
+ request "2.88.2"
+ request-promise-native "1.0.9"
+ require-all "3.0.0"
trace-redirect "1.0.6"
-supports-color@8.1.1, supports-color@^8.0.0, supports-color@^8.1.0:
+supports-color@8.1.1, supports-color@^8.0.0, supports-color@^8.1.0, supports-color@^8.1.1:
version "8.1.1"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
@@ -10642,10 +10577,10 @@ syslog-pro@1.0.0:
dependencies:
moment "^2.22.2"
-systeminformation@5.7.7:
- version "5.7.7"
- resolved "https://registry.yarnpkg.com/systeminformation/-/systeminformation-5.7.7.tgz#f39d2ec4c72820aa97efd6f32021e455f20d1e61"
- integrity sha512-aQ7MBeVI2MKPYOi3YJAoZ45JVlRkBA7IXoqGgtVBamvtE0I6JLOyJzD/VVc9pnMXDb3yqaMwssAjhwtJax4/Rw==
+systeminformation@5.8.0:
+ version "5.8.0"
+ resolved "https://registry.yarnpkg.com/systeminformation/-/systeminformation-5.8.0.tgz#43e6d0918d7d42c65e53e36059f0849354ab2873"
+ integrity sha512-l4drbK2PtNynGKblaShY9hDLW/gg1zxUq2+Yk4gTyd6a2JUvFyTGP8PhHV9iOh+MzS25PQa8W1t0kvcIvr9n7Q==
syuilo-password-strength@0.0.1:
version "0.0.1"
@@ -10664,11 +10599,6 @@ table@^6.0.9:
string-width "^4.2.0"
strip-ansi "^6.0.0"
-tapable@^1.0.0-beta.5:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
- integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
-
tapable@^2.1.1, tapable@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b"
@@ -10830,6 +10760,11 @@ throttle-debounce@3.0.1:
resolved "https://registry.yarnpkg.com/throttle-debounce/-/throttle-debounce-3.0.1.tgz#32f94d84dfa894f786c9a1f290e7a645b6a19abb"
integrity sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==
+throttleit@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c"
+ integrity sha1-nnhYNtr0Z0MUWlmEtiaNgoUorGw=
+
through2-filter@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254"
@@ -10853,7 +10788,7 @@ through2@^4.0.2:
dependencies:
readable-stream "3"
-through@2, through@~2.3.8:
+through@2, through@^2.3.8, through@~2.3, through@~2.3.1, through@~2.3.8:
version "2.3.8"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
@@ -10868,12 +10803,12 @@ timsort@^0.3.0:
resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
-tinycolor2@1.4.2, tinycolor2@^1.1.2:
+tinycolor2@1.4.2:
version "1.4.2"
resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803"
integrity sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==
-tmp@0.2.1:
+tmp@0.2.1, tmp@~0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14"
integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==
@@ -10942,15 +10877,15 @@ token-stream@1.0.0:
resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-1.0.0.tgz#cc200eab2613f4166d27ff9afc7ca56d49df6eb4"
integrity sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=
-token-types@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/token-types/-/token-types-2.0.0.tgz#b23618af744818299c6fbf125e0fdad98bab7e85"
- integrity sha512-WWvu8sGK8/ZmGusekZJJ5NM6rRVTTDO7/bahz4NGiSDb/XsmdYBn6a1N/bymUHuWYTWeuLUg98wUzvE4jPdCZw==
+token-types@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/token-types/-/token-types-4.1.1.tgz#ef9e8c8e2e0ded9f1b3f8dbaa46a3228b113ba1a"
+ integrity sha512-hD+QyuUAyI2spzsI0B7gf/jJ2ggR4RjkAo37j3StuePhApJUwcWDjnHDOFdIWYSwNR28H14hpwm4EI+V1Ted1w==
dependencies:
- "@tokenizer/token" "^0.1.0"
- ieee754 "^1.1.13"
+ "@tokenizer/token" "^0.3.0"
+ ieee754 "^1.2.1"
-tough-cookie@^2.3.3, tough-cookie@~2.5.0:
+tough-cookie@^2.3.3, tough-cookie@^2.5.0, tough-cookie@~2.5.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
@@ -10958,15 +10893,6 @@ tough-cookie@^2.3.3, tough-cookie@~2.5.0:
psl "^1.1.28"
punycode "^2.1.1"
-tough-cookie@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2"
- integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==
- dependencies:
- ip-regex "^2.1.0"
- psl "^1.1.28"
- punycode "^2.1.1"
-
tough-cookie@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4"
@@ -10976,14 +10902,6 @@ tough-cookie@^4.0.0:
punycode "^2.1.1"
universalify "^0.1.2"
-tough-cookie@~2.4.3:
- version "2.4.3"
- resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781"
- integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==
- dependencies:
- psl "^1.1.24"
- punycode "^1.4.1"
-
tr46@^2.0.0, tr46@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479"
@@ -11001,36 +10919,38 @@ tree-kill@^1.2.2:
resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc"
integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==
-ts-loader@9.2.3:
- version "9.2.3"
- resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.2.3.tgz#dc3b6362a4d4382493cd4f138d345f419656de68"
- integrity sha512-sEyWiU3JMHBL55CIeC4iqJQadI0U70A5af0kvgbNLHVNz2ACztQg0j/9x10bjjIht8WfFYLKfn4L6tkZ+pu+8Q==
+ts-loader@9.2.5:
+ version "9.2.5"
+ resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.2.5.tgz#127733a5e9243bf6dafcb8aa3b8a266d8041dca9"
+ integrity sha512-al/ATFEffybdRMUIr5zMEWQdVnCGMUA9d3fXJ8dBVvBlzytPvIszoG9kZoR+94k6/i293RnVOXwMaWbXhNy9pQ==
dependencies:
chalk "^4.1.0"
enhanced-resolve "^5.0.0"
micromatch "^4.0.0"
semver "^7.3.4"
-ts-node@10.1.0:
- version "10.1.0"
- resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.1.0.tgz#e656d8ad3b61106938a867f69c39a8ba6efc966e"
- integrity sha512-6szn3+J9WyG2hE+5W8e0ruZrzyk1uFLYye6IGMBadnOzDh8aP7t8CbFpsfCiEx2+wMixAhjFt7lOZC4+l+WbEA==
+ts-node@10.2.1:
+ version "10.2.1"
+ resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.2.1.tgz#4cc93bea0a7aba2179497e65bb08ddfc198b3ab5"
+ integrity sha512-hCnyOyuGmD5wHleOQX6NIjJtYVIO8bPP8F2acWkB4W06wdlkgyvJtubO/I9NkI88hCFECbsEgoLc0VNkYmcSfw==
dependencies:
+ "@cspotcode/source-map-support" "0.6.1"
"@tsconfig/node10" "^1.0.7"
"@tsconfig/node12" "^1.0.7"
"@tsconfig/node14" "^1.0.0"
- "@tsconfig/node16" "^1.0.1"
+ "@tsconfig/node16" "^1.0.2"
+ acorn "^8.4.1"
+ acorn-walk "^8.1.1"
arg "^4.1.0"
create-require "^1.1.0"
diff "^4.0.1"
make-error "^1.1.1"
- source-map-support "^0.5.17"
yn "3.1.1"
-tsc-alias@1.3.7:
- version "1.3.7"
- resolved "https://registry.yarnpkg.com/tsc-alias/-/tsc-alias-1.3.7.tgz#b088a35d30fad9b34b5c4f1efaf59fcd2982dc0a"
- integrity sha512-Q/WcSjhbehLB2pTKuK6QC+R0m/bLXwhXoITec5zb4PEkaLv1X2GHdLb0HagLJVa3QWPKNsbp7NZex8WE0EbX3A==
+tsc-alias@1.3.9:
+ version "1.3.9"
+ resolved "https://registry.yarnpkg.com/tsc-alias/-/tsc-alias-1.3.9.tgz#0c9d1dd571c0a97af8159d20e7cd4ce6aaab1799"
+ integrity sha512-PXNsdsuygWpvQrt41D7CBndJyZ+8Juf2BDvQ1OJNqq0QsMR4i+A4rfniY/NVwb70gW4nMDJBvNxxvzLJjakXtQ==
dependencies:
"@jfonx/console-utils" "^1.0.3"
"@jfonx/file-utils" "^3.0.1"
@@ -11069,6 +10989,11 @@ tslib@^2.1.0:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c"
integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==
+tslib@~2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a"
+ integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==
+
tslint-sonarts@1.9.0:
version "1.9.0"
resolved "https://registry.yarnpkg.com/tslint-sonarts/-/tslint-sonarts-1.9.0.tgz#feb593e92db328c0328b430b838adbe65d504de9"
@@ -11145,7 +11070,7 @@ type-check@~0.3.2:
dependencies:
prelude-ls "~1.1.2"
-type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5:
+type-detect@4.0.8:
version "4.0.8"
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
@@ -11155,6 +11080,11 @@ type-fest@^0.20.2:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
+type-fest@^0.21.3:
+ version "0.21.3"
+ resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37"
+ integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==
+
type-fest@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b"
@@ -11195,16 +11125,16 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
-typeorm@0.2.32:
- version "0.2.32"
- resolved "https://registry.yarnpkg.com/typeorm/-/typeorm-0.2.32.tgz#544dbfdfe0cd0887548d9bcbd28527ea4f4b3c9b"
- integrity sha512-LOBZKZ9As3f8KRMPCUT2H0JZbZfWfkcUnO3w/1BFAbL/X9+cADTF6bczDGGaKVENJ3P8SaKheKmBgpt5h1x+EQ==
+typeorm@0.2.37:
+ version "0.2.37"
+ resolved "https://registry.yarnpkg.com/typeorm/-/typeorm-0.2.37.tgz#1a5e59216077640694d27c04c99ed3f968d15dc8"
+ integrity sha512-7rkW0yCgFC24I5T0f3S/twmLSuccPh1SQmxET/oDWn2sSDVzbyWdnItSdKy27CdJGTlKHYtUVeOcMYw5LRsXVw==
dependencies:
"@sqltools/formatter" "^1.2.2"
app-root-path "^3.0.0"
buffer "^6.0.3"
chalk "^4.1.0"
- cli-highlight "^2.1.10"
+ cli-highlight "^2.1.11"
debug "^4.3.1"
dotenv "^8.2.0"
glob "^7.1.6"
@@ -11215,7 +11145,7 @@ typeorm@0.2.32:
tslib "^2.1.0"
xml2js "^0.4.23"
yargonaut "^1.1.4"
- yargs "^16.2.0"
+ yargs "^17.0.1"
zen-observable-ts "^1.0.0"
typescript@4.3.5:
@@ -11228,13 +11158,6 @@ uc.micro@^1.0.1, uc.micro@^1.0.5:
resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac"
integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==
-uglify-js@^3.5.1:
- version "3.9.1"
- resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.9.1.tgz#a56a71c8caa2d36b5556cc1fd57df01ae3491539"
- integrity sha512-JUPoL1jHsc9fOjVFHdQIhqEEJsQvfKDjlubcCilu8U26uZ73qOg8VsN8O1jbuei44ZPlwL7kmbAdM4tzaUvqnA==
- dependencies:
- commander "~2.20.3"
-
ulid@2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/ulid/-/ulid-2.3.0.tgz#93063522771a9774121a84d126ecd3eb9804071f"
@@ -11312,6 +11235,11 @@ universalify@^0.1.2:
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
+universalify@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
+ integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
+
unload@2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/unload/-/unload-2.2.0.tgz#ccc88fdcad345faa06a92039ec0f80b488880ef7"
@@ -11338,10 +11266,10 @@ unset-value@^1.0.0:
has-value "^0.3.1"
isobject "^3.0.0"
-upper-case@^1.1.1:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
- integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=
+untildify@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b"
+ integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==
uri-js@^4.2.2:
version "4.2.2"
@@ -11363,6 +11291,14 @@ url@0.10.3:
punycode "1.3.2"
querystring "0.2.0"
+url@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
+ integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
+ dependencies:
+ punycode "1.3.2"
+ querystring "0.2.0"
+
urlsafe-base64@^1.0.0, urlsafe-base64@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/urlsafe-base64/-/urlsafe-base64-1.0.0.tgz#23f89069a6c62f46cf3a1d3b00169cefb90be0c6"
@@ -11450,11 +11386,6 @@ value-or-function@^3.0.0:
resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813"
integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=
-vanilla-tilt@1.7.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/vanilla-tilt/-/vanilla-tilt-1.7.0.tgz#4e6d3c6442c6fa2b45c958c9c2013f31686ab461"
- integrity sha512-u9yUhpSasFeqQCuiTon+RSb0aHzcj9stvWVXQIswzKL5oG491lkYk7U1GmhOAEZt7yPT6EiYZRJhIh2MFBncOA==
-
vary@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
@@ -11534,20 +11465,10 @@ void-elements@^3.1.0:
resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09"
integrity sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=
-vue-color@2.8.1:
- version "2.8.1"
- resolved "https://registry.yarnpkg.com/vue-color/-/vue-color-2.8.1.tgz#a090f3dcf8ed6f07afdb865cac84b19a73302e70"
- integrity sha512-BoLCEHisXi2QgwlhZBg9UepvzZZmi4176vbr+31Shen5WWZwSLVgdScEPcB+yrAtuHAz42309C0A4+WiL9lNBw==
- dependencies:
- clamp "^1.0.1"
- lodash.throttle "^4.0.0"
- material-colors "^1.0.0"
- tinycolor2 "^1.1.2"
-
-vue-eslint-parser@^7.8.0:
- version "7.8.0"
- resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-7.8.0.tgz#43850bf856c9a69d62c0e12769609c338423684b"
- integrity sha512-ehmmrLZNYLUoKayvVW8l8HyPQIfuYZHiJoQLRP3dapDlTU7bGs4tqIKVGdAEpMuXS/b4R/PImCt7Tkj4UhX1SQ==
+vue-eslint-parser@^7.10.0:
+ version "7.10.0"
+ resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-7.10.0.tgz#ea4e4b10fd10aa35c8a79ac783488d8abcd29be8"
+ integrity sha512-7tc/ewS9Vq9Bn741pvpg8op2fWJPH3k32aL+jcIcWGCTzh/zXSdh7pZ5FV3W2aJancP9+ftPAv292zY5T5IPCg==
dependencies:
debug "^4.1.1"
eslint-scope "^5.1.1"
@@ -11557,15 +11478,10 @@ vue-eslint-parser@^7.8.0:
lodash "^4.17.21"
semver "^6.3.0"
-vue-json-pretty@1.8.1:
- version "1.8.1"
- resolved "https://registry.yarnpkg.com/vue-json-pretty/-/vue-json-pretty-1.8.1.tgz#538bb57fc718544152105aef659b4c88475365ee"
- integrity sha512-GHi8q6QLx8fw8XDhAgztlC6emupptpmV5a+yd4UxteEoPqGHXwpgscTbTTxwH2GEdmYXHAt+GLg5tAsenLZKDA==
-
-vue-loader@16.3.1:
- version "16.3.1"
- resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-16.3.1.tgz#5b675ae28ac97080111e93b26d22adca36dd57aa"
- integrity sha512-QTtXgdqQ+4G3d8dmhnnfJSiKKHQtp53XiivSYAvAqNCOufL9aK0DYOc9MW9MSy7Xzj/1qdcghb28zKhOPvQYqQ==
+vue-loader@16.5.0:
+ version "16.5.0"
+ resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-16.5.0.tgz#09c4e0712466899e34b99a686524f19165fb2892"
+ integrity sha512-WXh+7AgFxGTgb5QAkQtFeUcHNIEq3PGVQ8WskY5ZiFbWBkOwcCPRs4w/2tVyTbh2q6TVRlO3xfvIukUtjsu62A==
dependencies:
chalk "^4.1.0"
hash-sum "^2.0.0"
@@ -11598,14 +11514,14 @@ vue-svg-loader@0.17.0-beta.2:
semver "^7.3.2"
svgo "^1.3.2"
-vue@3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.1.tgz#30dde152f2fdad0669ea9854d5a90a00ef96974b"
- integrity sha512-0jhXluF5mzTAK5bXw/8yq4McvsI8HwEWI4cnQwJeN8NYGRbwh9wwuE4FNv1Kej9pxBB5ajTNsWr0M6DPs5EJZg==
+vue@3.2.4:
+ version "3.2.4"
+ resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.4.tgz#d94d88675e41c050d3a722d0848a7063b5e87a60"
+ integrity sha512-rNCFmoewm8IwmTK0nj3ysKq53iRpNEFKoBJ4inar6tIh7Oj7juubS39RI8UI+VE7x+Cs2z6PBsadtZu7z2qppg==
dependencies:
- "@vue/compiler-dom" "3.2.1"
- "@vue/runtime-dom" "3.2.1"
- "@vue/shared" "3.2.1"
+ "@vue/compiler-dom" "3.2.4"
+ "@vue/runtime-dom" "3.2.4"
+ "@vue/shared" "3.2.4"
vuedraggable@4.0.1:
version "4.0.1"
@@ -11628,6 +11544,17 @@ w3c-xmlserializer@^2.0.0:
dependencies:
xml-name-validator "^3.0.0"
+wait-on@6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-6.0.0.tgz#7e9bf8e3d7fe2daecbb7a570ac8ca41e9311c7e7"
+ integrity sha512-tnUJr9p5r+bEYXPUdRseolmz5XqJTTj98JgOsfBn7Oz2dxfE2g3zw1jE+Mo8lopM3j3et/Mq1yW7kKX6qw7RVw==
+ dependencies:
+ axios "^0.21.1"
+ joi "^17.4.0"
+ lodash "^4.17.21"
+ minimist "^1.2.5"
+ rxjs "^7.1.0"
+
watchpack@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.0.0.tgz#b12248f32f0fd4799b7be0802ad1f6573a45955c"
@@ -11666,15 +11593,15 @@ webidl-conversions@^6.1.0:
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514"
integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==
-webpack-cli@4.7.2:
- version "4.7.2"
- resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.7.2.tgz#a718db600de6d3906a4357e059ae584a89f4c1a5"
- integrity sha512-mEoLmnmOIZQNiRl0ebnjzQ74Hk0iKS5SiEEnpq3dRezoyR3yPaeQZCMCe+db4524pj1Pd5ghZXjT41KLzIhSLw==
+webpack-cli@4.8.0:
+ version "4.8.0"
+ resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.8.0.tgz#5fc3c8b9401d3c8a43e2afceacfa8261962338d1"
+ integrity sha512-+iBSWsX16uVna5aAYN6/wjhJy1q/GKk4KjKvfg90/6hykCTSgozbfz5iRgDTSJt/LgSbYxdBX3KBHeobIs+ZEw==
dependencies:
"@discoveryjs/json-ext" "^0.5.0"
"@webpack-cli/configtest" "^1.0.4"
"@webpack-cli/info" "^1.3.0"
- "@webpack-cli/serve" "^1.5.1"
+ "@webpack-cli/serve" "^1.5.2"
colorette "^1.2.1"
commander "^7.0.0"
execa "^5.0.0"
@@ -11693,14 +11620,6 @@ webpack-merge@^5.7.3:
clone-deep "^4.0.1"
wildcard "^2.0.0"
-webpack-sources@^1.0.1:
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933"
- integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==
- dependencies:
- source-list-map "^2.0.0"
- source-map "~0.6.1"
-
webpack-sources@^2.1.1:
version "2.2.0"
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.2.0.tgz#058926f39e3d443193b6c31547229806ffd02bac"
@@ -11709,18 +11628,15 @@ webpack-sources@^2.1.1:
source-list-map "^2.0.1"
source-map "^0.6.1"
-webpack-sources@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.3.0.tgz#9ed2de69b25143a4c18847586ad9eccb19278cfa"
- integrity sha512-WyOdtwSvOML1kbgtXbTDnEW0jkJ7hZr/bDByIwszhWd/4XX1A3XMkrbFMsuH4+/MfLlZCUzlAdg4r7jaGKEIgQ==
- dependencies:
- source-list-map "^2.0.1"
- source-map "^0.6.1"
+webpack-sources@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.0.tgz#b16973bcf844ebcdb3afde32eda1c04d0b90f89d"
+ integrity sha512-fahN08Et7P9trej8xz/Z7eRu8ltyiygEo/hnRi9KqBUs80KeDcnf96ZJo++ewWd84fEf3xSX9bp4ZS9hbw0OBw==
-webpack@5.45.1:
- version "5.45.1"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.45.1.tgz#d78dcbeda18a872dc62b0455d3ed3dcfd1c886bb"
- integrity sha512-68VT2ZgG9EHs6h6UxfV2SEYewA9BA3SOLSnC2NEbJJiEwbAiueDL033R1xX0jzjmXvMh0oSeKnKgbO2bDXIEyQ==
+webpack@5.51.0:
+ version "5.51.0"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.51.0.tgz#b6683d92e4bd84db588bacb6ade6441d9c5fd2f3"
+ integrity sha512-oySQoKUuf5r0JaPIYi8q90c/GmU9fGdSbZ0cAjFq3OWx57wniRTWvta1T9t+e5WZ6H6mHrxksNatkqfIEuTWGg==
dependencies:
"@types/eslint-scope" "^3.7.0"
"@types/estree" "^0.0.50"
@@ -11728,6 +11644,7 @@ webpack@5.45.1:
"@webassemblyjs/wasm-edit" "1.11.1"
"@webassemblyjs/wasm-parser" "1.11.1"
acorn "^8.4.1"
+ acorn-import-assertions "^1.7.6"
browserslist "^4.14.5"
chrome-trace-event "^1.0.2"
enhanced-resolve "^5.8.0"
@@ -11744,7 +11661,7 @@ webpack@5.45.1:
tapable "^2.1.1"
terser-webpack-plugin "^5.1.3"
watchpack "^2.2.0"
- webpack-sources "^2.3.0"
+ webpack-sources "^3.2.0"
webpack@^5:
version "5.33.2"
@@ -11839,7 +11756,7 @@ which@2.0.2, which@^2.0.1, which@^2.0.2:
dependencies:
isexe "^2.0.0"
-which@^1.1.1, which@^1.2.14, which@^1.2.9:
+which@^1.1.1, which@^1.2.14:
version "1.3.1"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
@@ -11895,6 +11812,15 @@ wrap-ansi@^5.1.0:
string-width "^3.0.0"
strip-ansi "^5.0.0"
+wrap-ansi@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53"
+ integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
wrap-ansi@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
@@ -11909,37 +11835,16 @@ wrappy@1:
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
-write-file-atomic@^2.0.0:
- version "2.4.3"
- resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481"
- integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==
- dependencies:
- graceful-fs "^4.1.11"
- imurmurhash "^0.1.4"
- signal-exit "^3.0.2"
+ws@8.2.0:
+ version "8.2.0"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.0.tgz#0b738cd484bfc9303421914b11bb4011e07615bb"
+ integrity sha512-uYhVJ/m9oXwEI04iIVmgLmugh2qrZihkywG9y5FfZV2ATeLIzHf93qs+tUNqlttbQK957/VX3mtwAS+UfIwA4g==
-write-json-file@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-2.3.0.tgz#2b64c8a33004d54b8698c76d585a77ceb61da32f"
- integrity sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8=
- dependencies:
- detect-indent "^5.0.0"
- graceful-fs "^4.1.2"
- make-dir "^1.0.0"
- pify "^3.0.0"
- sort-keys "^2.0.0"
- write-file-atomic "^2.0.0"
-
-ws@7.5.3:
+ws@^7.4.6:
version "7.5.3"
resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74"
integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==
-ws@^7.4.5:
- version "7.4.6"
- resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c"
- integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==
-
xev@2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/xev/-/xev-2.0.1.tgz#24484173a22115bc8a990ef5d4d5129695b827a7"
@@ -12038,6 +11943,11 @@ yaml@^1.10.0:
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e"
integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==
+yaml@^1.10.2:
+ version "1.10.2"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
+ integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
+
yargonaut@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/yargonaut/-/yargonaut-1.1.4.tgz#c64f56432c7465271221f53f5cc517890c3d6e0c"
@@ -12112,6 +12022,19 @@ yargs@^13.2.4:
y18n "^4.0.0"
yargs-parser "^13.1.2"
+yargs@^17.0.1:
+ version "17.1.1"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.1.1.tgz#c2a8091564bdb196f7c0a67c1d12e5b85b8067ba"
+ integrity sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==
+ dependencies:
+ cliui "^7.0.2"
+ escalade "^3.1.1"
+ get-caller-file "^2.0.5"
+ require-directory "^2.1.1"
+ string-width "^4.2.0"
+ y18n "^5.0.5"
+ yargs-parser "^20.2.2"
+
yargs@^7.1.0:
version "7.1.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8"
@@ -12131,6 +12054,14 @@ yargs@^7.1.0:
y18n "^3.2.1"
yargs-parser "^5.0.0"
+yauzl@^2.10.0:
+ version "2.10.0"
+ resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
+ integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=
+ dependencies:
+ buffer-crc32 "~0.2.3"
+ fd-slicer "~1.1.0"
+
ylru@^1.2.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/ylru/-/ylru-1.2.1.tgz#f576b63341547989c1de7ba288760923b27fe84f"