summaryrefslogtreecommitdiff
path: root/packages/backend/src/models/repositories
diff options
context:
space:
mode:
authortamaina <tamaina@hotmail.co.jp>2022-01-18 22:27:10 +0900
committerGitHub <noreply@github.com>2022-01-18 22:27:10 +0900
commitefb0ffc4ec1e0b9f6af922cee11481c28dd9a8d6 (patch)
treeea0b4d3d13b14d84eca747d93e0cad6585d07de4 /packages/backend/src/models/repositories
parentrefactor (diff)
downloadmisskey-efb0ffc4ec1e0b9f6af922cee11481c28dd9a8d6.tar.gz
misskey-efb0ffc4ec1e0b9f6af922cee11481c28dd9a8d6.tar.bz2
misskey-efb0ffc4ec1e0b9f6af922cee11481c28dd9a8d6.zip
refactor: APIエンドポイントファイルの定義を良い感じにする (#8154)
* Fix API Schema Error * Delete SimpleSchema/SimpleObj and Move schemas to dedicated files * Userのスキーマを分割してみる * define packMany type * add , * Ensure enum schema and Make "as const" put once * test? * Revert "test?" This reverts commit 97dc9bfa70851bfb7d1cf38e883f8df20fb78b79. * Revert "Fix API Schema Error" This reverts commit 21b6176d974ed8e3eb73723ad21a105c5d297323. * :v: * clean up * test? * wip * wip * better schema def * :v: * fix * add minLength property * wip * wip * wip * anyOf/oneOf/allOfに対応? ~ relation.ts * refactor! * Define MinimumSchema * wip * wip * anyOf/oneOf/allOfが動作するようにUnionSchemaTypeを修正 * anyOf/oneOf/allOfが動作するようにUnionSchemaTypeを修正 * Update packages/backend/src/misc/schema.ts Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com> * fix * array oneOfをより正確な型に * array oneOfをより正確な型に * wip * :v: * なんかもういろいろ * remove * very good schema * api schema * wip * refactor: awaitAllの型定義を変えてみる * fix * specify types in awaitAll * specify types in awaitAll * :v: * wip * ... * :v: * AllowDateはやめておく * 不必要なoptional: false, nullable: falseを廃止 * Packedが展開されないように * 続packed * wip * define note type * wip * UserDetailedをMeDetailedかUserDetailedNotMeかを区別できるように * wip * wip * wip specify user type of other schemas * ok * convertSchemaToOpenApiSchemaを改修 * convertSchemaToOpenApiSchemaを改修 * Fix * fix * :v: * wip * 分割代入ではなくallOfで定義するように Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com>
Diffstat (limited to 'packages/backend/src/models/repositories')
-rw-r--r--packages/backend/src/models/repositories/antenna.ts91
-rw-r--r--packages/backend/src/models/repositories/app.ts35
-rw-r--r--packages/backend/src/models/repositories/blocking.ts28
-rw-r--r--packages/backend/src/models/repositories/channel.ts53
-rw-r--r--packages/backend/src/models/repositories/clip.ts39
-rw-r--r--packages/backend/src/models/repositories/drive-file.ts113
-rw-r--r--packages/backend/src/models/repositories/drive-folder.ts41
-rw-r--r--packages/backend/src/models/repositories/emoji.ts38
-rw-r--r--packages/backend/src/models/repositories/federation-instance.ts104
-rw-r--r--packages/backend/src/models/repositories/following.ts38
-rw-r--r--packages/backend/src/models/repositories/gallery-post.ts71
-rw-r--r--packages/backend/src/models/repositories/hashtag.ts36
-rw-r--r--packages/backend/src/models/repositories/messaging-message.ts75
-rw-r--r--packages/backend/src/models/repositories/muting.ts28
-rw-r--r--packages/backend/src/models/repositories/note-favorite.ts28
-rw-r--r--packages/backend/src/models/repositories/note-reaction.ts27
-rw-r--r--packages/backend/src/models/repositories/note.ts187
-rw-r--r--packages/backend/src/models/repositories/notification.ts66
-rw-r--r--packages/backend/src/models/repositories/page.ts53
-rw-r--r--packages/backend/src/models/repositories/queue.ts30
-rw-r--r--packages/backend/src/models/repositories/user-group.ts36
-rw-r--r--packages/backend/src/models/repositories/user-list.ts31
-rw-r--r--packages/backend/src/models/repositories/user.ts348
23 files changed, 26 insertions, 1570 deletions
diff --git a/packages/backend/src/models/repositories/antenna.ts b/packages/backend/src/models/repositories/antenna.ts
index 548f44f1b7..3bf0645a7f 100644
--- a/packages/backend/src/models/repositories/antenna.ts
+++ b/packages/backend/src/models/repositories/antenna.ts
@@ -31,94 +31,3 @@ export class AntennaRepository extends Repository<Antenna> {
};
}
}
-
-export const packedAntennaSchema = {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- properties: {
- id: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- },
- createdAt: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'date-time',
- },
- name: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- },
- keywords: {
- type: 'array' as const,
- optional: false as const, nullable: false as const,
- items: {
- type: 'array' as const,
- optional: false as const, nullable: false as const,
- items: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- },
- },
- },
- excludeKeywords: {
- type: 'array' as const,
- optional: false as const, nullable: false as const,
- items: {
- type: 'array' as const,
- optional: false as const, nullable: false as const,
- items: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- },
- },
- },
- src: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- enum: ['home', 'all', 'users', 'list', 'group'],
- },
- userListId: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- format: 'id',
- },
- userGroupId: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- format: 'id',
- },
- users: {
- type: 'array' as const,
- optional: false as const, nullable: false as const,
- items: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- },
- },
- caseSensitive: {
- type: 'boolean' as const,
- optional: false as const, nullable: false as const,
- default: false,
- },
- notify: {
- type: 'boolean' as const,
- optional: false as const, nullable: false as const,
- },
- withReplies: {
- type: 'boolean' as const,
- optional: false as const, nullable: false as const,
- default: false,
- },
- withFile: {
- type: 'boolean' as const,
- optional: false as const, nullable: false as const,
- },
- hasUnreadNote: {
- type: 'boolean' as const,
- optional: false as const, nullable: false as const,
- default: false,
- },
- },
-};
diff --git a/packages/backend/src/models/repositories/app.ts b/packages/backend/src/models/repositories/app.ts
index bec0765ac2..6bac4d9598 100644
--- a/packages/backend/src/models/repositories/app.ts
+++ b/packages/backend/src/models/repositories/app.ts
@@ -38,38 +38,3 @@ export class AppRepository extends Repository<App> {
};
}
}
-
-export const packedAppSchema = {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- properties: {
- id: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- },
- name: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- },
- callbackUrl: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- },
- permission: {
- type: 'array' as const,
- optional: false as const, nullable: false as const,
- items: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- },
- },
- secret: {
- type: 'string' as const,
- optional: true as const, nullable: false as const,
- },
- isAuthorized: {
- type: 'boolean' as const,
- optional: true as const, nullable: false as const,
- },
- },
-};
diff --git a/packages/backend/src/models/repositories/blocking.ts b/packages/backend/src/models/repositories/blocking.ts
index a6895eabf4..c20b02f501 100644
--- a/packages/backend/src/models/repositories/blocking.ts
+++ b/packages/backend/src/models/repositories/blocking.ts
@@ -30,31 +30,3 @@ export class BlockingRepository extends Repository<Blocking> {
return Promise.all(blockings.map(x => this.pack(x, me)));
}
}
-
-export const packedBlockingSchema = {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- properties: {
- id: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- example: 'xxxxxxxxxx',
- },
- createdAt: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'date-time',
- },
- blockeeId: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- },
- blockee: {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- ref: 'User' as const,
- },
- },
-};
diff --git a/packages/backend/src/models/repositories/channel.ts b/packages/backend/src/models/repositories/channel.ts
index 0a6b02f495..b3afb823ab 100644
--- a/packages/backend/src/models/repositories/channel.ts
+++ b/packages/backend/src/models/repositories/channel.ts
@@ -40,56 +40,3 @@ export class ChannelRepository extends Repository<Channel> {
};
}
}
-
-export const packedChannelSchema = {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- properties: {
- id: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- example: 'xxxxxxxxxx',
- },
- createdAt: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'date-time',
- },
- lastNotedAt: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- format: 'date-time',
- },
- name: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- },
- description: {
- type: 'string' as const,
- nullable: true as const, optional: false as const,
- },
- bannerUrl: {
- type: 'string' as const,
- format: 'url',
- nullable: true as const, optional: false as const,
- },
- notesCount: {
- type: 'number' as const,
- nullable: false as const, optional: false as const,
- },
- usersCount: {
- type: 'number' as const,
- nullable: false as const, optional: false as const,
- },
- isFollowing: {
- type: 'boolean' as const,
- optional: true as const, nullable: false as const,
- },
- userId: {
- type: 'string' as const,
- nullable: true as const, optional: false as const,
- format: 'id',
- },
- },
-};
diff --git a/packages/backend/src/models/repositories/clip.ts b/packages/backend/src/models/repositories/clip.ts
index 7892811d48..6f9ceeb50a 100644
--- a/packages/backend/src/models/repositories/clip.ts
+++ b/packages/backend/src/models/repositories/clip.ts
@@ -29,42 +29,3 @@ export class ClipRepository extends Repository<Clip> {
}
}
-export const packedClipSchema = {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- properties: {
- id: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- example: 'xxxxxxxxxx',
- },
- createdAt: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'date-time',
- },
- userId: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- },
- user: {
- type: 'object' as const,
- ref: 'User' as const,
- optional: false as const, nullable: false as const,
- },
- name: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- },
- description: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- },
- isPublic: {
- type: 'boolean' as const,
- optional: false as const, nullable: false as const,
- },
- },
-};
diff --git a/packages/backend/src/models/repositories/drive-file.ts b/packages/backend/src/models/repositories/drive-file.ts
index 79b890aa6e..44db9a0a58 100644
--- a/packages/backend/src/models/repositories/drive-file.ts
+++ b/packages/backend/src/models/repositories/drive-file.ts
@@ -3,7 +3,7 @@ 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, Promiseable } from '@/prelude/await-all';
import { Packed } from '@/misc/schema';
import config from '@/config/index';
import { query, appendQuery } from '@/prelude/url';
@@ -126,7 +126,7 @@ export class DriveFileRepository extends Repository<DriveFile> {
const meta = await fetchMeta();
- return await awaitAll({
+ return await awaitAll<Packed<'DriveFile'>>({
id: file.id,
createdAt: file.createdAt.toISOString(),
name: file.name,
@@ -156,112 +156,3 @@ export class DriveFileRepository extends Repository<DriveFile> {
return items.filter(x => x != null);
}
}
-
-export const packedDriveFileSchema = {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- properties: {
- id: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- example: 'xxxxxxxxxx',
- },
- createdAt: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'date-time',
- },
- name: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- example: 'lenna.jpg',
- },
- type: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- example: 'image/jpeg',
- },
- md5: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'md5',
- example: '15eca7fba0480996e2245f5185bf39f2',
- },
- size: {
- type: 'number' as const,
- optional: false as const, nullable: false as const,
- example: 51469,
- },
- isSensitive: {
- type: 'boolean' as const,
- optional: false as const, nullable: false as const,
- },
- blurhash: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- },
- properties: {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- properties: {
- width: {
- type: 'number' as const,
- optional: true as const, nullable: false as const,
- example: 1280,
- },
- height: {
- type: 'number' as const,
- optional: true as const, nullable: false as const,
- example: 720,
- },
- orientation: {
- type: 'number' as const,
- optional: true as const, nullable: false as const,
- example: 8,
- },
- avgColor: {
- type: 'string' as const,
- optional: true as const, nullable: false as const,
- example: 'rgb(40,65,87)',
- },
- },
- },
- url: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- format: 'url',
- },
- thumbnailUrl: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- format: 'url',
- },
- comment: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- },
- folderId: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- format: 'id',
- example: 'xxxxxxxxxx',
- },
- folder: {
- type: 'object' as const,
- optional: true as const, nullable: true as const,
- ref: 'DriveFolder' as const,
- },
- userId: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- format: 'id',
- example: 'xxxxxxxxxx',
- },
- user: {
- type: 'object' as const,
- optional: true as const, nullable: true as const,
- ref: 'User' as const,
- },
- },
-};
diff --git a/packages/backend/src/models/repositories/drive-folder.ts b/packages/backend/src/models/repositories/drive-folder.ts
index 4ee4a68e08..b2e6cee9b8 100644
--- a/packages/backend/src/models/repositories/drive-folder.ts
+++ b/packages/backend/src/models/repositories/drive-folder.ts
@@ -48,44 +48,3 @@ export class DriveFolderRepository extends Repository<DriveFolder> {
});
}
}
-
-export const packedDriveFolderSchema = {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- properties: {
- id: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- example: 'xxxxxxxxxx',
- },
- createdAt: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'date-time',
- },
- name: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- },
- foldersCount: {
- type: 'number' as const,
- optional: true as const, nullable: false as const,
- },
- filesCount: {
- type: 'number' as const,
- optional: true as const, nullable: false as const,
- },
- parentId: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- format: 'id',
- example: 'xxxxxxxxxx',
- },
- parent: {
- type: 'object' as const,
- optional: true as const, nullable: true as const,
- ref: 'DriveFolder' as const,
- },
- },
-};
diff --git a/packages/backend/src/models/repositories/emoji.ts b/packages/backend/src/models/repositories/emoji.ts
index b7529595a9..9d63ced811 100644
--- a/packages/backend/src/models/repositories/emoji.ts
+++ b/packages/backend/src/models/repositories/emoji.ts
@@ -25,41 +25,3 @@ export class EmojiRepository extends Repository<Emoji> {
return Promise.all(emojis.map(x => this.pack(x)));
}
}
-
-export const packedEmojiSchema = {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- properties: {
- id: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- example: 'xxxxxxxxxx',
- },
- aliases: {
- type: 'array' as const,
- optional: false as const, nullable: false as const,
- items: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- },
- },
- name: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- },
- category: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- },
- host: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- },
- url: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- },
- },
-};
diff --git a/packages/backend/src/models/repositories/federation-instance.ts b/packages/backend/src/models/repositories/federation-instance.ts
index 90dbbaab1c..426fd5bfc3 100644
--- a/packages/backend/src/models/repositories/federation-instance.ts
+++ b/packages/backend/src/models/repositories/federation-instance.ts
@@ -1,106 +1,2 @@
import config from '@/config/index';
-export const packedFederationInstanceSchema = {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- properties: {
- id: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- },
- caughtAt: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'date-time',
- },
- host: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- example: 'misskey.example.com',
- },
- usersCount: {
- type: 'number' as const,
- optional: false as const, nullable: false as const,
- },
- notesCount: {
- type: 'number' as const,
- optional: false as const, nullable: false as const,
- },
- followingCount: {
- type: 'number' as const,
- optional: false as const, nullable: false as const,
- },
- followersCount: {
- type: 'number' as const,
- optional: false as const, nullable: false as const,
- },
- driveUsage: {
- type: 'number' as const,
- optional: false as const, nullable: false as const,
- },
- driveFiles: {
- type: 'number' as const,
- optional: false as const, nullable: false as const,
- },
- latestRequestSentAt: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- format: 'date-time',
- },
- lastCommunicatedAt: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'date-time',
- },
- isNotResponding: {
- type: 'boolean' as const,
- optional: false as const, nullable: false as const,
- },
- isSuspended: {
- type: 'boolean' as const,
- optional: false as const, nullable: false as const,
- },
- softwareName: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- example: 'misskey',
- },
- softwareVersion: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- example: config.version,
- },
- openRegistrations: {
- type: 'boolean' as const,
- optional: false as const, nullable: true as const,
- example: true,
- },
- name: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- },
- description: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- },
- maintainerName: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- },
- maintainerEmail: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- },
- iconUrl: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- format: 'url',
- },
- infoUpdatedAt: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- format: 'date-time',
- },
- },
-};
diff --git a/packages/backend/src/models/repositories/following.ts b/packages/backend/src/models/repositories/following.ts
index 1dfaaf908a..9d20f442df 100644
--- a/packages/backend/src/models/repositories/following.ts
+++ b/packages/backend/src/models/repositories/following.ts
@@ -84,41 +84,3 @@ export class FollowingRepository extends Repository<Following> {
return Promise.all(followings.map(x => this.pack(x, me, opts)));
}
}
-
-export const packedFollowingSchema = {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- properties: {
- id: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- example: 'xxxxxxxxxx',
- },
- createdAt: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'date-time',
- },
- followeeId: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- },
- followee: {
- type: 'object' as const,
- optional: true as const, nullable: false as const,
- ref: 'User' as const,
- },
- followerId: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- },
- follower: {
- type: 'object' as const,
- optional: true as const, nullable: false as const,
- ref: 'User' as const,
- },
- },
-};
diff --git a/packages/backend/src/models/repositories/gallery-post.ts b/packages/backend/src/models/repositories/gallery-post.ts
index 6d37e3120e..e9233bb91e 100644
--- a/packages/backend/src/models/repositories/gallery-post.ts
+++ b/packages/backend/src/models/repositories/gallery-post.ts
@@ -38,74 +38,3 @@ export class GalleryPostRepository extends Repository<GalleryPost> {
return Promise.all(posts.map(x => this.pack(x, me)));
}
}
-
-export const packedGalleryPostSchema = {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- properties: {
- id: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- example: 'xxxxxxxxxx',
- },
- createdAt: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'date-time',
- },
- updatedAt: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'date-time',
- },
- title: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- },
- description: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- },
- userId: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- },
- user: {
- type: 'object' as const,
- ref: 'User' as const,
- optional: false as const, nullable: false as const,
- },
- fileIds: {
- type: 'array' as const,
- optional: true as const, nullable: false as const,
- items: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- },
- },
- files: {
- type: 'array' as const,
- optional: true as const, nullable: false as const,
- items: {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- ref: 'DriveFile' as const,
- },
- },
- tags: {
- type: 'array' as const,
- optional: true as const, nullable: false as const,
- items: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- },
- },
- isSensitive: {
- type: 'boolean' as const,
- optional: false as const, nullable: false as const,
- },
- },
-};
diff --git a/packages/backend/src/models/repositories/hashtag.ts b/packages/backend/src/models/repositories/hashtag.ts
index 6e513c7ebb..c4b8d50c4e 100644
--- a/packages/backend/src/models/repositories/hashtag.ts
+++ b/packages/backend/src/models/repositories/hashtag.ts
@@ -24,39 +24,3 @@ export class HashtagRepository extends Repository<Hashtag> {
return Promise.all(hashtags.map(x => this.pack(x)));
}
}
-
-export const packedHashtagSchema = {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- properties: {
- tag: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- example: 'misskey',
- },
- mentionedUsersCount: {
- type: 'number' as const,
- optional: false as const, nullable: false as const,
- },
- mentionedLocalUsersCount: {
- type: 'number' as const,
- optional: false as const, nullable: false as const,
- },
- mentionedRemoteUsersCount: {
- type: 'number' as const,
- optional: false as const, nullable: false as const,
- },
- attachedUsersCount: {
- type: 'number' as const,
- optional: false as const, nullable: false as const,
- },
- attachedLocalUsersCount: {
- type: 'number' as const,
- optional: false as const, nullable: false as const,
- },
- attachedRemoteUsersCount: {
- type: 'number' as const,
- optional: false as const, nullable: false as const,
- },
- },
-};
diff --git a/packages/backend/src/models/repositories/messaging-message.ts b/packages/backend/src/models/repositories/messaging-message.ts
index 1b2dd3a246..0a342430b9 100644
--- a/packages/backend/src/models/repositories/messaging-message.ts
+++ b/packages/backend/src/models/repositories/messaging-message.ts
@@ -42,78 +42,3 @@ export class MessagingMessageRepository extends Repository<MessagingMessage> {
};
}
}
-
-export const packedMessagingMessageSchema = {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- properties: {
- id: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- example: 'xxxxxxxxxx',
- },
- createdAt: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'date-time',
- },
- userId: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- },
- user: {
- type: 'object' as const,
- ref: 'User' as const,
- optional: true as const, nullable: false as const,
- },
- text: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- },
- fileId: {
- type: 'string' as const,
- optional: true as const, nullable: true as const,
- format: 'id',
- },
- file: {
- type: 'object' as const,
- optional: true as const, nullable: true as const,
- ref: 'DriveFile' as const,
- },
- recipientId: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- format: 'id',
- },
- recipient: {
- type: 'object' as const,
- optional: true as const, nullable: true as const,
- ref: 'User' as const,
- },
- groupId: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- format: 'id',
- },
- group: {
- type: 'object' as const,
- optional: true as const, nullable: true as const,
- ref: 'UserGroup' as const,
- },
- isRead: {
- type: 'boolean' as const,
- optional: true as const, nullable: false as const,
- },
- reads: {
- type: 'array' as const,
- optional: true as const, nullable: false as const,
- items: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- },
- },
- },
-};
diff --git a/packages/backend/src/models/repositories/muting.ts b/packages/backend/src/models/repositories/muting.ts
index b82d1f0daa..bdbe9b47da 100644
--- a/packages/backend/src/models/repositories/muting.ts
+++ b/packages/backend/src/models/repositories/muting.ts
@@ -30,31 +30,3 @@ export class MutingRepository extends Repository<Muting> {
return Promise.all(mutings.map(x => this.pack(x, me)));
}
}
-
-export const packedMutingSchema = {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- properties: {
- id: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- example: 'xxxxxxxxxx',
- },
- createdAt: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'date-time',
- },
- muteeId: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- },
- mutee: {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- ref: 'User' as const,
- },
- },
-};
diff --git a/packages/backend/src/models/repositories/note-favorite.ts b/packages/backend/src/models/repositories/note-favorite.ts
index 47586a9116..c5de55c0c0 100644
--- a/packages/backend/src/models/repositories/note-favorite.ts
+++ b/packages/backend/src/models/repositories/note-favorite.ts
@@ -26,31 +26,3 @@ export class NoteFavoriteRepository extends Repository<NoteFavorite> {
return Promise.all(favorites.map(x => this.pack(x, me)));
}
}
-
-export const packedNoteFavoriteSchema = {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- properties: {
- id: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- example: 'xxxxxxxxxx',
- },
- createdAt: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'date-time',
- },
- note: {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- ref: 'Note' as const,
- },
- noteId: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- },
- },
-};
diff --git a/packages/backend/src/models/repositories/note-reaction.ts b/packages/backend/src/models/repositories/note-reaction.ts
index dfb25cbea1..097574effa 100644
--- a/packages/backend/src/models/repositories/note-reaction.ts
+++ b/packages/backend/src/models/repositories/note-reaction.ts
@@ -31,30 +31,3 @@ export class NoteReactionRepository extends Repository<NoteReaction> {
};
}
}
-
-export const packedNoteReactionSchema = {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- properties: {
- id: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- example: 'xxxxxxxxxx',
- },
- createdAt: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'date-time',
- },
- user: {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- ref: 'User' as const,
- },
- type: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- },
- },
-};
diff --git a/packages/backend/src/models/repositories/note.ts b/packages/backend/src/models/repositories/note.ts
index 96dfad70e9..9a7fef4977 100644
--- a/packages/backend/src/models/repositories/note.ts
+++ b/packages/backend/src/models/repositories/note.ts
@@ -218,7 +218,7 @@ export class NoteRepository extends Repository<Note> {
const reactionEmojiNames = Object.keys(note.reactions).filter(x => x?.startsWith(':')).map(x => decodeReaction(x).reaction).map(x => x.replace(/:/g, ''));
- const packed = await awaitAll({
+ const packed: Packed<'Note'> = await awaitAll({
id: note.id,
createdAt: note.createdAt.toISOString(),
userId: note.userId,
@@ -320,188 +320,3 @@ export class NoteRepository extends Repository<Note> {
})));
}
}
-
-export const packedNoteSchema = {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- properties: {
- id: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- example: 'xxxxxxxxxx',
- },
- createdAt: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'date-time',
- },
- text: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- },
- cw: {
- type: 'string' as const,
- optional: true as const, nullable: true as const,
- },
- userId: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- },
- user: {
- type: 'object' as const,
- ref: 'User' as const,
- optional: false as const, nullable: false as const,
- },
- replyId: {
- type: 'string' as const,
- optional: true as const, nullable: true as const,
- format: 'id',
- example: 'xxxxxxxxxx',
- },
- renoteId: {
- type: 'string' as const,
- optional: true as const, nullable: true as const,
- format: 'id',
- example: 'xxxxxxxxxx',
- },
- reply: {
- type: 'object' as const,
- optional: true as const, nullable: true as const,
- ref: 'Note' as const,
- },
- renote: {
- type: 'object' as const,
- optional: true as const, nullable: true as const,
- ref: 'Note' as const,
- },
- isHidden: {
- type: 'boolean' as const,
- optional: true as const, nullable: false as const,
- },
- visibility: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- },
- mentions: {
- type: 'array' as const,
- optional: true as const, nullable: false as const,
- items: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- },
- },
- visibleUserIds: {
- type: 'array' as const,
- optional: true as const, nullable: false as const,
- items: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- },
- },
- fileIds: {
- type: 'array' as const,
- optional: true as const, nullable: false as const,
- items: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- },
- },
- files: {
- type: 'array' as const,
- optional: true as const, nullable: false as const,
- items: {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- ref: 'DriveFile' as const,
- },
- },
- tags: {
- type: 'array' as const,
- optional: true as const, nullable: false as const,
- items: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- },
- },
- poll: {
- type: 'object' as const,
- optional: true as const, nullable: true as const,
- },
- channelId: {
- type: 'string' as const,
- optional: true as const, nullable: true as const,
- format: 'id',
- example: 'xxxxxxxxxx',
- },
- channel: {
- type: 'object' as const,
- optional: true as const, nullable: true as const,
- items: {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- properties: {
- id: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- },
- name: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- },
- },
- },
- },
- localOnly: {
- type: 'boolean' as const,
- optional: true as const, nullable: false as const,
- },
- emojis: {
- type: 'array' as const,
- optional: false as const, nullable: false as const,
- items: {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- properties: {
- name: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- },
- url: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- },
- },
- },
- },
- reactions: {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- },
- renoteCount: {
- type: 'number' as const,
- optional: false as const, nullable: false as const,
- },
- repliesCount: {
- type: 'number' as const,
- optional: false as const, nullable: false as const,
- },
- uri: {
- type: 'string' as const,
- optional: true as const, nullable: false as const,
- },
- url: {
- type: 'string' as const,
- optional: true as const, nullable: false as const,
- },
-
- myReaction: {
- type: 'object' as const,
- optional: true as const, nullable: true as const,
- },
- },
-};
diff --git a/packages/backend/src/models/repositories/notification.ts b/packages/backend/src/models/repositories/notification.ts
index 47d569ed21..5e42798898 100644
--- a/packages/backend/src/models/repositories/notification.ts
+++ b/packages/backend/src/models/repositories/notification.ts
@@ -107,69 +107,3 @@ export class NotificationRepository extends Repository<Notification> {
})));
}
}
-
-export const packedNotificationSchema = {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- properties: {
- id: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- example: 'xxxxxxxxxx',
- },
- createdAt: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'date-time',
- },
- isRead: {
- type: 'boolean' as const,
- optional: false as const, nullable: false as const,
- },
- type: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- enum: [...notificationTypes],
- },
- user: {
- type: 'object' as const,
- ref: 'User' as const,
- optional: true as const, nullable: true as const,
- },
- userId: {
- type: 'string' as const,
- optional: true as const, nullable: true as const,
- format: 'id',
- },
- note: {
- type: 'object' as const,
- ref: 'Note' as const,
- optional: true as const, nullable: true as const,
- },
- reaction: {
- type: 'string' as const,
- optional: true as const, nullable: true as const,
- },
- choice: {
- type: 'number' as const,
- optional: true as const, nullable: true as const,
- },
- invitation: {
- type: 'object' as const,
- optional: true as const, nullable: true as const,
- },
- body: {
- type: 'string' as const,
- optional: true as const, nullable: true as const,
- },
- header: {
- type: 'string' as const,
- optional: true as const, nullable: true as const,
- },
- icon: {
- type: 'string' as const,
- optional: true as const, nullable: true as const,
- },
- },
-};
diff --git a/packages/backend/src/models/repositories/page.ts b/packages/backend/src/models/repositories/page.ts
index 46b453cad9..ec76c2e418 100644
--- a/packages/backend/src/models/repositories/page.ts
+++ b/packages/backend/src/models/repositories/page.ts
@@ -87,56 +87,3 @@ export class PageRepository extends Repository<Page> {
return Promise.all(pages.map(x => this.pack(x, me)));
}
}
-
-export const packedPageSchema = {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- properties: {
- id: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- example: 'xxxxxxxxxx',
- },
- createdAt: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'date-time',
- },
- updatedAt: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'date-time',
- },
- title: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- },
- name: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- },
- summary: {
- type: 'string' as const,
- optional: false as const, nullable: true as const,
- },
- content: {
- type: 'array' as const,
- optional: false as const, nullable: false as const,
- },
- variables: {
- type: 'array' as const,
- optional: false as const, nullable: false as const,
- },
- userId: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- },
- user: {
- type: 'object' as const,
- ref: 'User' as const,
- optional: false as const, nullable: false as const,
- },
- },
-};
diff --git a/packages/backend/src/models/repositories/queue.ts b/packages/backend/src/models/repositories/queue.ts
deleted file mode 100644
index 521c634390..0000000000
--- a/packages/backend/src/models/repositories/queue.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-export const packedQueueCountSchema = {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- properties: {
- waiting: {
- type: 'number' as const,
- optional: false as const, nullable: false as const,
- },
- active: {
- type: 'number' as const,
- optional: false as const, nullable: false as const,
- },
- completed: {
- type: 'number' as const,
- optional: false as const, nullable: false as const,
- },
- failed: {
- type: 'number' as const,
- optional: false as const, nullable: false as const,
- },
- delayed: {
- type: 'number' as const,
- optional: false as const, nullable: false as const,
- },
- paused: {
- type: 'number' as const,
- optional: false as const, nullable: false as const,
- },
- },
-};
diff --git a/packages/backend/src/models/repositories/user-group.ts b/packages/backend/src/models/repositories/user-group.ts
index 02a0348885..3ed37ca0ed 100644
--- a/packages/backend/src/models/repositories/user-group.ts
+++ b/packages/backend/src/models/repositories/user-group.ts
@@ -23,39 +23,3 @@ export class UserGroupRepository extends Repository<UserGroup> {
};
}
}
-
-export const packedUserGroupSchema = {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- properties: {
- id: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- example: 'xxxxxxxxxx',
- },
- createdAt: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'date-time',
- },
- name: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- },
- ownerId: {
- type: 'string' as const,
- nullable: false as const, optional: false as const,
- format: 'id',
- },
- userIds: {
- type: 'array' as const,
- nullable: false as const, optional: true as const,
- items: {
- type: 'string' as const,
- nullable: false as const, optional: false as const,
- format: 'id',
- },
- },
- },
-};
diff --git a/packages/backend/src/models/repositories/user-list.ts b/packages/backend/src/models/repositories/user-list.ts
index 792a17cb49..a2bffe8357 100644
--- a/packages/backend/src/models/repositories/user-list.ts
+++ b/packages/backend/src/models/repositories/user-list.ts
@@ -22,34 +22,3 @@ export class UserListRepository extends Repository<UserList> {
};
}
}
-
-export const packedUserListSchema = {
- type: 'object' as const,
- optional: false as const, nullable: false as const,
- properties: {
- id: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'id',
- example: 'xxxxxxxxxx',
- },
- createdAt: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- format: 'date-time',
- },
- name: {
- type: 'string' as const,
- optional: false as const, nullable: false as const,
- },
- userIds: {
- type: 'array' as const,
- nullable: false as const, optional: true as const,
- items: {
- type: 'string' as const,
- nullable: false as const, optional: false as const,
- format: 'id',
- },
- },
- },
-};
diff --git a/packages/backend/src/models/repositories/user.ts b/packages/backend/src/models/repositories/user.ts
index 85141cdc41..2b8398832d 100644
--- a/packages/backend/src/models/repositories/user.ts
+++ b/packages/backend/src/models/repositories/user.ts
@@ -4,11 +4,19 @@ 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 { Packed } from '@/misc/schema';
-import { awaitAll } from '@/prelude/await-all';
+import { awaitAll, Promiseable } 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';
+type IsUserDetailed<Detailed extends boolean> = Detailed extends true ? Packed<'UserDetailed'> : Packed<'UserLite'>;
+type IsMeAndIsUserDetailed<ExpectsMe extends boolean | null, Detailed extends boolean> =
+ Detailed extends true ?
+ ExpectsMe extends true ? Packed<'MeDetailed'> :
+ ExpectsMe extends false ? Packed<'UserDetailedNotMe'> :
+ Packed<'UserDetailed'> :
+ Packed<'UserLite'>;
+
@EntityRepository(User)
export class UserRepository extends Repository<User> {
public async getRelation(me: User['id'], target: User['id']) {
@@ -144,7 +152,7 @@ export class UserRepository extends Repository<User> {
return count > 0;
}
- public getOnlineStatus(user: User): string {
+ public getOnlineStatus(user: User): 'unknown' | 'online' | 'active' | 'offline' {
if (user.hideOnlineStatus) return 'unknown';
if (user.lastActiveDate == null) return 'unknown';
const elapsed = Date.now() - user.lastActiveDate.getTime();
@@ -163,14 +171,14 @@ export class UserRepository extends Repository<User> {
}
}
- public async pack(
+ public async pack<ExpectsMe extends boolean | null = null, D extends boolean = false>(
src: User['id'] | User,
me?: { id: User['id'] } | null | undefined,
options?: {
- detail?: boolean,
+ detail?: D,
includeSecrets?: boolean,
}
- ): Promise<Packed<'User'>> {
+ ): Promise<IsMeAndIsUserDetailed<ExpectsMe, D>> {
const opts = Object.assign({
detail: false,
includeSecrets: false,
@@ -178,8 +186,9 @@ export class UserRepository extends Repository<User> {
const user = typeof src === 'object' ? src : await this.findOneOrFail(src);
const meId = me ? me.id : null;
+ const isMe = meId === user.id;
- const relation = meId && (meId !== user.id) && opts.detail ? await this.getRelation(meId, user.id) : null;
+ const relation = meId && !isMe && opts.detail ? await this.getRelation(meId, user.id) : null;
const pins = opts.detail ? await UserNotePinings.createQueryBuilder('pin')
.where('pin.userId = :userId', { userId: user.id })
.innerJoinAndSelect('pin.note', 'note')
@@ -188,12 +197,12 @@ export class UserRepository extends Repository<User> {
const profile = opts.detail ? await UserProfiles.findOneOrFail(user.id) : null;
const followingCount = profile == null ? null :
- (profile.ffVisibility === 'public') || (meId === user.id) ? user.followingCount :
+ (profile.ffVisibility === 'public') || isMe ? user.followingCount :
(profile.ffVisibility === 'followers') && (relation && relation.isFollowing) ? user.followingCount :
null;
const followersCount = profile == null ? null :
- (profile.ffVisibility === 'public') || (meId === user.id) ? user.followersCount :
+ (profile.ffVisibility === 'public') || isMe ? user.followersCount :
(profile.ffVisibility === 'followers') && (relation && relation.isFollowing) ? user.followersCount :
null;
@@ -227,12 +236,11 @@ export class UserRepository extends Repository<User> {
uri: user.uri,
createdAt: user.createdAt.toISOString(),
updatedAt: user.updatedAt ? user.updatedAt.toISOString() : null,
- lastFetchedAt: user.lastFetchedAt?.toISOString(),
+ lastFetchedAt: user.lastFetchedAt ? user.lastFetchedAt.toISOString() : null,
bannerUrl: user.bannerUrl,
bannerBlurhash: user.bannerBlurhash,
bannerColor: null, // 後方互換性のため
isLocked: user.isLocked,
- isModerator: user.isModerator || falsy,
isSilenced: user.isSilenced || falsy,
isSuspended: user.isSuspended || falsy,
description: profile!.description,
@@ -260,7 +268,7 @@ export class UserRepository extends Repository<User> {
: false,
} : {}),
- ...(opts.detail && meId === user.id ? {
+ ...(opts.detail && isMe ? {
avatarId: user.avatarId,
bannerId: user.bannerId,
injectFeaturedNote: profile!.injectFeaturedNote,
@@ -315,19 +323,19 @@ export class UserRepository extends Repository<User> {
isBlocked: relation.isBlocked,
isMuted: relation.isMuted,
} : {}),
- };
+ } as Promiseable<Packed<'User'>> as Promiseable<IsMeAndIsUserDetailed<ExpectsMe, D>>;
return await awaitAll(packed);
}
- public packMany(
+ public packMany<D extends boolean = false>(
users: (User['id'] | User)[],
me?: { id: User['id'] } | null | undefined,
options?: {
- detail?: boolean,
+ detail?: D,
includeSecrets?: boolean,
}
- ) {
+ ): Promise<IsUserDetailed<D>[]> {
return Promise.all(users.map(u => this.pack(u, me, options)));
}
@@ -352,313 +360,3 @@ export class UserRepository extends Repository<User> {
public validateBirthday = $.str.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})$/);
//#endregion
}
-
-export const packedUserSchema = {
- type: 'object' as const,
- nullable: false as const, optional: false as const,
- properties: {
- id: {
- type: 'string' as const,
- nullable: false as const, optional: false as const,
- format: 'id',
- example: 'xxxxxxxxxx',
- },
- name: {
- type: 'string' as const,
- nullable: true as const, optional: false as const,
- example: '藍',
- },
- username: {
- type: 'string' as const,
- nullable: false as const, optional: false as const,
- example: 'ai',
- },
- host: {
- type: 'string' as const,
- nullable: true as const, optional: false as const,
- example: 'misskey.example.com',
- },
- avatarUrl: {
- type: 'string' as const,
- format: 'url',
- nullable: true as const, optional: false as const,
- },
- avatarBlurhash: {
- type: 'any' as const,
- nullable: true as const, optional: false as const,
- },
- avatarColor: {
- type: 'any' as const,
- nullable: true as const, optional: false as const,
- default: null,
- },
- isAdmin: {
- type: 'boolean' as const,
- nullable: false as const, optional: true as const,
- default: false,
- },
- isModerator: {
- type: 'boolean' as const,
- nullable: false as const, optional: true as const,
- default: false,
- },
- isBot: {
- type: 'boolean' as const,
- nullable: false as const, optional: true as const,
- },
- isCat: {
- type: 'boolean' as const,
- nullable: false as const, optional: true as const,
- },
- emojis: {
- type: 'array' as const,
- nullable: false as const, optional: false as const,
- items: {
- type: 'object' as const,
- nullable: false as const, optional: false as const,
- properties: {
- name: {
- type: 'string' as const,
- nullable: false as const, optional: false as const,
- },
- url: {
- type: 'string' as const,
- nullable: false as const, optional: false as const,
- format: 'url',
- },
- },
- },
- },
- url: {
- type: 'string' as const,
- format: 'url',
- nullable: true as const, optional: true as const,
- },
- createdAt: {
- type: 'string' as const,
- nullable: false as const, optional: true as const,
- format: 'date-time',
- },
- updatedAt: {
- type: 'string' as const,
- nullable: true as const, optional: true as const,
- format: 'date-time',
- },
- bannerUrl: {
- type: 'string' as const,
- format: 'url',
- nullable: true as const, optional: true as const,
- },
- bannerBlurhash: {
- type: 'any' as const,
- nullable: true as const, optional: true as const,
- },
- bannerColor: {
- type: 'any' as const,
- nullable: true as const, optional: true as const,
- default: null,
- },
- isLocked: {
- type: 'boolean' as const,
- nullable: false as const, optional: true as const,
- },
- isSuspended: {
- type: 'boolean' as const,
- nullable: false as const, optional: true as const,
- example: false,
- },
- description: {
- type: 'string' as const,
- nullable: true as const, optional: true as const,
- example: 'Hi masters, I am Ai!',
- },
- location: {
- type: 'string' as const,
- nullable: true as const, optional: true as const,
- },
- birthday: {
- type: 'string' as const,
- nullable: true as const, optional: true as const,
- example: '2018-03-12',
- },
- fields: {
- type: 'array' as const,
- nullable: false as const, optional: true as const,
- items: {
- type: 'object' as const,
- nullable: false as const, optional: false as const,
- properties: {
- name: {
- type: 'string' as const,
- nullable: false as const, optional: false as const,
- },
- value: {
- type: 'string' as const,
- nullable: false as const, optional: false as const,
- },
- },
- maxLength: 4,
- },
- },
- followersCount: {
- type: 'number' as const,
- nullable: false as const, optional: true as const,
- },
- followingCount: {
- type: 'number' as const,
- nullable: false as const, optional: true as const,
- },
- notesCount: {
- type: 'number' as const,
- nullable: false as const, optional: true as const,
- },
- pinnedNoteIds: {
- type: 'array' as const,
- nullable: false as const, optional: true as const,
- items: {
- type: 'string' as const,
- nullable: false as const, optional: false as const,
- format: 'id',
- },
- },
- pinnedNotes: {
- type: 'array' as const,
- nullable: false as const, optional: true as const,
- items: {
- type: 'object' as const,
- nullable: false as const, optional: false as const,
- ref: 'Note' as const,
- },
- },
- pinnedPageId: {
- type: 'string' as const,
- nullable: true as const, optional: true as const,
- },
- pinnedPage: {
- type: 'object' as const,
- nullable: true as const, optional: true as const,
- ref: 'Page' as const,
- },
- twoFactorEnabled: {
- type: 'boolean' as const,
- nullable: false as const, optional: true as const,
- default: false,
- },
- usePasswordLessLogin: {
- type: 'boolean' as const,
- nullable: false as const, optional: true as const,
- default: false,
- },
- securityKeys: {
- type: 'boolean' as const,
- nullable: false as const, optional: true as const,
- default: false,
- },
- avatarId: {
- type: 'string' as const,
- nullable: true as const, optional: true as const,
- format: 'id',
- },
- bannerId: {
- type: 'string' as const,
- nullable: true as const, optional: true as const,
- format: 'id',
- },
- autoWatch: {
- type: 'boolean' as const,
- nullable: false as const, optional: true as const,
- },
- injectFeaturedNote: {
- type: 'boolean' as const,
- nullable: false as const, optional: true as const,
- },
- alwaysMarkNsfw: {
- type: 'boolean' as const,
- nullable: false as const, optional: true as const,
- },
- carefulBot: {
- type: 'boolean' as const,
- nullable: false as const, optional: true as const,
- },
- autoAcceptFollowed: {
- type: 'boolean' as const,
- nullable: false as const, optional: true as const,
- },
- hasUnreadSpecifiedNotes: {
- type: 'boolean' as const,
- nullable: false as const, optional: true as const,
- },
- hasUnreadMentions: {
- type: 'boolean' as const,
- nullable: false as const, optional: true as const,
- },
- hasUnreadAnnouncement: {
- type: 'boolean' as const,
- nullable: false as const, optional: true as const,
- },
- hasUnreadAntenna: {
- type: 'boolean' as const,
- nullable: false as const, optional: true as const,
- },
- hasUnreadChannel: {
- type: 'boolean' as const,
- nullable: false as const, optional: true as const,
- },
- hasUnreadMessagingMessage: {
- type: 'boolean' as const,
- nullable: false as const, optional: true as const,
- },
- hasUnreadNotification: {
- type: 'boolean' as const,
- nullable: false as const, optional: true as const,
- },
- hasPendingReceivedFollowRequest: {
- type: 'boolean' as const,
- nullable: false as const, optional: true as const,
- },
- integrations: {
- type: 'object' as const,
- nullable: false as const, optional: true as const,
- },
- mutedWords: {
- type: 'array' as const,
- nullable: false as const, optional: true as const,
- },
- mutedInstances: {
- type: 'array' as const,
- nullable: false as const, optional: true as const,
- },
- mutingNotificationTypes: {
- type: 'array' as const,
- nullable: false as const, optional: true as const,
- },
- isFollowing: {
- type: 'boolean' as const,
- optional: true as const, nullable: false as const,
- },
- hasPendingFollowRequestFromYou: {
- type: 'boolean' as const,
- optional: true as const, nullable: false as const,
- },
- hasPendingFollowRequestToYou: {
- type: 'boolean' as const,
- optional: true as const, nullable: false as const,
- },
- isFollowed: {
- type: 'boolean' as const,
- optional: true as const, nullable: false as const,
- },
- isBlocking: {
- type: 'boolean' as const,
- optional: true as const, nullable: false as const,
- },
- isBlocked: {
- type: 'boolean' as const,
- optional: true as const, nullable: false as const,
- },
- isMuted: {
- type: 'boolean' as const,
- optional: true as const, nullable: false as const,
- },
- },
-};