Skip to content

Commit 19cc3eb

Browse files
authored
Merge pull request #68 from takker99:stream
feat(api): Add types for /api/stream/:projectname
2 parents 06b4704 + 4168361 commit 19cc3eb

File tree

5 files changed

+71
-46
lines changed

5 files changed

+71
-46
lines changed

api/stream/project.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import type { StringLc, UnixTime } from "../../base.ts";
2+
import type { ProjectUpdatesStreamEvent } from "../../stream-event.ts";
3+
import type { Page } from "../pages/project/title.ts";
4+
5+
/** The response type of /api/stream/:projectname */
6+
export interface Stream {
7+
/** The project name */
8+
projectName: string;
9+
/** The latest updates in the project */
10+
end: UnixTime;
11+
/** The page updates in the stream */
12+
pages: Page[];
13+
/** The latest events in the project */
14+
events: ProjectUpdatesStreamEvent[];
15+
}
16+
17+
export interface StreamPage extends Pick<Page, "id" | "title" | "lines"> {
18+
/** Icons in the page */
19+
iconsLc: StringLc[];
20+
}

rest.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
export * from "./base.ts";
77
export * from "./change.ts";
88
export * from "./error.ts";
9+
export * from "./stream-event.ts";
910

1011
export * from "./api/commits/project/pageId.ts";
1112
export * from "./api/embed-text/twitter.ts";
@@ -24,4 +25,5 @@ export * from "./api/project-backup/project/backupId.ts";
2425
export * from "./api/project-backup/project/list.ts";
2526
export * from "./api/projects/project.ts";
2627
export * from "./api/projects.ts";
28+
export * from "./api/stream/project.ts";
2729
export * from "./api/users/me.ts";

stream-event.ts

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import type { PageId, ProjectId, StringLc, UnixTime, UserId } from "./base.ts";
2+
3+
export type ProjectUpdatesStreamEvent =
4+
| PageDeleteEvent
5+
| MemberJoinEvent
6+
| MemberAddEvent
7+
| AdminAddEvent
8+
| AdminDeleteEvent
9+
| OwnerSetEvent
10+
| InvitationResetEvent;
11+
12+
export interface ProjectEvent {
13+
id: string;
14+
pageId: PageId;
15+
userId: UserId;
16+
projectId: ProjectId;
17+
created: UnixTime;
18+
updated: UnixTime;
19+
}
20+
21+
export interface PageDeleteEvent extends ProjectEvent {
22+
type: "page.delete";
23+
data: {
24+
titleLc: StringLc;
25+
};
26+
}
27+
export interface MemberJoinEvent extends ProjectEvent {
28+
type: "member.join";
29+
}
30+
export interface MemberAddEvent extends ProjectEvent {
31+
type: "member.add";
32+
}
33+
export interface InvitationResetEvent extends ProjectEvent {
34+
type: "invitation.reset";
35+
}
36+
export interface AdminAddEvent extends ProjectEvent {
37+
type: "admin.add";
38+
targetUserId: UserId;
39+
}
40+
export interface AdminDeleteEvent extends ProjectEvent {
41+
type: "admin.delete";
42+
targetUserId: UserId;
43+
}
44+
export interface OwnerSetEvent extends ProjectEvent {
45+
type: "owner.set";
46+
targetUserId: UserId;
47+
}

websocket.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
export * from "./websocket/change.ts";
22
export * from "./websocket/event.ts";
3+
export * from "./stream-event.ts";

websocket/event.ts

Lines changed: 1 addition & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import type {
1414
InsertChange,
1515
} from "../change.ts";
1616
import type { User } from "../api/pages/project/title.ts";
17+
import type { ProjectUpdatesStreamEvent } from "../stream-event.ts";
1718

1819
export interface EmitEventMap {
1920
"socket.io-request": (
@@ -118,52 +119,6 @@ export interface ProjectUpdatesStreamCommit {
118119
freeze: true;
119120
}
120121

121-
export type ProjectUpdatesStreamEvent =
122-
| PageDeleteEvent
123-
| MemberJoinEvent
124-
| MemberAddEvent
125-
| AdminAddEvent
126-
| AdminDeleteEvent
127-
| OwnerSetEvent
128-
| InvitationResetEvent;
129-
130-
export interface ProjectEvent {
131-
id: string;
132-
pageId: string;
133-
userId: string;
134-
projectId: string;
135-
created: number;
136-
updated: number;
137-
}
138-
139-
export interface PageDeleteEvent extends ProjectEvent {
140-
type: "page.delete";
141-
data: {
142-
titleLc: string;
143-
};
144-
}
145-
export interface MemberJoinEvent extends ProjectEvent {
146-
type: "member.join";
147-
}
148-
export interface MemberAddEvent extends ProjectEvent {
149-
type: "member.add";
150-
}
151-
export interface InvitationResetEvent extends ProjectEvent {
152-
type: "invitation.reset";
153-
}
154-
export interface AdminAddEvent extends ProjectEvent {
155-
type: "admin.add";
156-
targetUserId: UserId;
157-
}
158-
export interface AdminDeleteEvent extends ProjectEvent {
159-
type: "admin.delete";
160-
targetUserId: UserId;
161-
}
162-
export interface OwnerSetEvent extends ProjectEvent {
163-
type: "owner.set";
164-
targetUserId: UserId;
165-
}
166-
167122
export interface CommitNotification extends PageCommit {
168123
id: string;
169124
}

0 commit comments

Comments
 (0)