summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-02-01 20:12:42 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-02-01 20:12:42 +0900
commitd9d98f84bf3fe71c8182d86522cc0d8abf72fd96 (patch)
treeb94d81f10a3494161b1bc1f46b6b5c86bcc3ebd4
parentenhance(backend): enhance SchemaType handling of anyOf (#9762) (diff)
downloadsharkey-d9d98f84bf3fe71c8182d86522cc0d8abf72fd96.tar.gz
sharkey-d9d98f84bf3fe71c8182d86522cc0d8abf72fd96.tar.bz2
sharkey-d9d98f84bf3fe71c8182d86522cc0d8abf72fd96.zip
refactor: fix type
-rw-r--r--packages/backend/src/server/api/stream/types.ts78
1 files changed, 41 insertions, 37 deletions
diff --git a/packages/backend/src/server/api/stream/types.ts b/packages/backend/src/server/api/stream/types.ts
index fc145cf0ee..36bfa78363 100644
--- a/packages/backend/src/server/api/stream/types.ts
+++ b/packages/backend/src/server/api/stream/types.ts
@@ -18,31 +18,26 @@ import { Following, Role, RoleAssignment } from '@/models';
import type Emitter from 'strict-event-emitter-types';
import type { EventEmitter } from 'events';
-// redis通すとDateのインスタンスはstringに変換されるので
-type Serialized<T> = {
- [K in keyof T]: T[K] extends Date ? string : T[K];
-};
-
//#region Stream type-body definitions
export interface InternalStreamTypes {
- userChangeSuspendedState: Serialized<{ id: User['id']; isSuspended: User['isSuspended']; }>;
- userTokenRegenerated: Serialized<{ id: User['id']; oldToken: User['token']; newToken: User['token']; }>;
- remoteUserUpdated: Serialized<{ id: User['id']; }>;
- follow: Serialized<{ followerId: User['id']; followeeId: User['id']; }>;
- unfollow: Serialized<{ followerId: User['id']; followeeId: User['id']; }>;
- policiesUpdated: Serialized<Role['policies']>;
- roleCreated: Serialized<Role>;
- roleDeleted: Serialized<Role>;
- roleUpdated: Serialized<Role>;
- userRoleAssigned: Serialized<RoleAssignment>;
- userRoleUnassigned: Serialized<RoleAssignment>;
- webhookCreated: Serialized<Webhook>;
- webhookDeleted: Serialized<Webhook>;
- webhookUpdated: Serialized<Webhook>;
- antennaCreated: Serialized<Antenna>;
- antennaDeleted: Serialized<Antenna>;
- antennaUpdated: Serialized<Antenna>;
- metaUpdated: Serialized<Meta>;
+ userChangeSuspendedState: { id: User['id']; isSuspended: User['isSuspended']; };
+ userTokenRegenerated: { id: User['id']; oldToken: User['token']; newToken: User['token']; };
+ remoteUserUpdated: { id: User['id']; };
+ follow: { followerId: User['id']; followeeId: User['id']; };
+ unfollow: { followerId: User['id']; followeeId: User['id']; };
+ policiesUpdated: Role['policies'];
+ roleCreated: Role;
+ roleDeleted: Role;
+ roleUpdated: Role;
+ userRoleAssigned: RoleAssignment;
+ userRoleUnassigned: RoleAssignment;
+ webhookCreated: Webhook;
+ webhookDeleted: Webhook;
+ webhookUpdated: Webhook;
+ antennaCreated: Antenna;
+ antennaDeleted: Antenna;
+ antennaUpdated: Antenna;
+ metaUpdated: Meta;
}
export interface BroadcastTypes {
@@ -210,63 +205,72 @@ type EventUnionFromDictionary<
U = Events<T>
> = U[keyof U];
+// redis通すとDateのインスタンスはstringに変換されるので
+type Serialized<T> = {
+ [K in keyof T]: T[K] extends Date ? string : T[K] extends Record<string, any> ? Serialized<T[K]> : T[K];
+};
+
+type SerializedAll<T> = {
+ [K in keyof T]: Serialized<T[K]>;
+};
+
// name/messages(spec) pairs dictionary
export type StreamMessages = {
internal: {
name: 'internal';
- payload: EventUnionFromDictionary<InternalStreamTypes>;
+ payload: EventUnionFromDictionary<SerializedAll<InternalStreamTypes>>;
};
broadcast: {
name: 'broadcast';
- payload: EventUnionFromDictionary<BroadcastTypes>;
+ payload: EventUnionFromDictionary<SerializedAll<BroadcastTypes>>;
};
user: {
name: `user:${User['id']}`;
- payload: EventUnionFromDictionary<UserStreamTypes>;
+ payload: EventUnionFromDictionary<SerializedAll<UserStreamTypes>>;
};
main: {
name: `mainStream:${User['id']}`;
- payload: EventUnionFromDictionary<MainStreamTypes>;
+ payload: EventUnionFromDictionary<SerializedAll<MainStreamTypes>>;
};
drive: {
name: `driveStream:${User['id']}`;
- payload: EventUnionFromDictionary<DriveStreamTypes>;
+ payload: EventUnionFromDictionary<SerializedAll<DriveStreamTypes>>;
};
note: {
name: `noteStream:${Note['id']}`;
- payload: EventUnionFromDictionary<NoteStreamEventTypes>;
+ payload: EventUnionFromDictionary<SerializedAll<NoteStreamEventTypes>>;
};
channel: {
name: `channelStream:${Channel['id']}`;
- payload: EventUnionFromDictionary<ChannelStreamTypes>;
+ payload: EventUnionFromDictionary<SerializedAll<ChannelStreamTypes>>;
};
userList: {
name: `userListStream:${UserList['id']}`;
- payload: EventUnionFromDictionary<UserListStreamTypes>;
+ payload: EventUnionFromDictionary<SerializedAll<UserListStreamTypes>>;
};
antenna: {
name: `antennaStream:${Antenna['id']}`;
- payload: EventUnionFromDictionary<AntennaStreamTypes>;
+ payload: EventUnionFromDictionary<SerializedAll<AntennaStreamTypes>>;
};
messaging: {
name: `messagingStream:${User['id']}-${User['id']}`;
- payload: EventUnionFromDictionary<MessagingStreamTypes>;
+ payload: EventUnionFromDictionary<SerializedAll<MessagingStreamTypes>>;
};
groupMessaging: {
name: `messagingStream:${UserGroup['id']}`;
- payload: EventUnionFromDictionary<GroupMessagingStreamTypes>;
+ payload: EventUnionFromDictionary<SerializedAll<GroupMessagingStreamTypes>>;
};
messagingIndex: {
name: `messagingIndexStream:${User['id']}`;
- payload: EventUnionFromDictionary<MessagingIndexStreamTypes>;
+ payload: EventUnionFromDictionary<SerializedAll<MessagingIndexStreamTypes>>;
};
admin: {
name: `adminStream:${User['id']}`;
- payload: EventUnionFromDictionary<AdminStreamTypes>;
+ payload: EventUnionFromDictionary<SerializedAll<AdminStreamTypes>>;
};
notes: {
name: 'notesStream';
- payload: Packed<'Note'>;
+ payload: Serialized<Packed<'Note'>>;
};
};