Skip to content

Commit

Permalink
Merge pull request #68 from takker99:stream
Browse files Browse the repository at this point in the history
feat(api): Add types for /api/stream/:projectname
  • Loading branch information
takker99 authored Feb 9, 2025
2 parents 06b4704 + 4168361 commit 19cc3eb
Show file tree
Hide file tree
Showing 5 changed files with 71 additions and 46 deletions.
20 changes: 20 additions & 0 deletions api/stream/project.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import type { StringLc, UnixTime } from "../../base.ts";
import type { ProjectUpdatesStreamEvent } from "../../stream-event.ts";
import type { Page } from "../pages/project/title.ts";

/** The response type of /api/stream/:projectname */
export interface Stream {
/** The project name */
projectName: string;
/** The latest updates in the project */
end: UnixTime;
/** The page updates in the stream */
pages: Page[];
/** The latest events in the project */
events: ProjectUpdatesStreamEvent[];
}

export interface StreamPage extends Pick<Page, "id" | "title" | "lines"> {
/** Icons in the page */
iconsLc: StringLc[];
}
2 changes: 2 additions & 0 deletions rest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
export * from "./base.ts";
export * from "./change.ts";
export * from "./error.ts";
export * from "./stream-event.ts";

export * from "./api/commits/project/pageId.ts";
export * from "./api/embed-text/twitter.ts";
Expand All @@ -24,4 +25,5 @@ export * from "./api/project-backup/project/backupId.ts";
export * from "./api/project-backup/project/list.ts";
export * from "./api/projects/project.ts";
export * from "./api/projects.ts";
export * from "./api/stream/project.ts";
export * from "./api/users/me.ts";
47 changes: 47 additions & 0 deletions stream-event.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import type { PageId, ProjectId, StringLc, UnixTime, UserId } from "./base.ts";

export type ProjectUpdatesStreamEvent =
| PageDeleteEvent
| MemberJoinEvent
| MemberAddEvent
| AdminAddEvent
| AdminDeleteEvent
| OwnerSetEvent
| InvitationResetEvent;

export interface ProjectEvent {
id: string;
pageId: PageId;
userId: UserId;
projectId: ProjectId;
created: UnixTime;
updated: UnixTime;
}

export interface PageDeleteEvent extends ProjectEvent {
type: "page.delete";
data: {
titleLc: StringLc;
};
}
export interface MemberJoinEvent extends ProjectEvent {
type: "member.join";
}
export interface MemberAddEvent extends ProjectEvent {
type: "member.add";
}
export interface InvitationResetEvent extends ProjectEvent {
type: "invitation.reset";
}
export interface AdminAddEvent extends ProjectEvent {
type: "admin.add";
targetUserId: UserId;
}
export interface AdminDeleteEvent extends ProjectEvent {
type: "admin.delete";
targetUserId: UserId;
}
export interface OwnerSetEvent extends ProjectEvent {
type: "owner.set";
targetUserId: UserId;
}
1 change: 1 addition & 0 deletions websocket.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
export * from "./websocket/change.ts";
export * from "./websocket/event.ts";
export * from "./stream-event.ts";
47 changes: 1 addition & 46 deletions websocket/event.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import type {
InsertChange,
} from "../change.ts";
import type { User } from "../api/pages/project/title.ts";
import type { ProjectUpdatesStreamEvent } from "../stream-event.ts";

export interface EmitEventMap {
"socket.io-request": (
Expand Down Expand Up @@ -118,52 +119,6 @@ export interface ProjectUpdatesStreamCommit {
freeze: true;
}

export type ProjectUpdatesStreamEvent =
| PageDeleteEvent
| MemberJoinEvent
| MemberAddEvent
| AdminAddEvent
| AdminDeleteEvent
| OwnerSetEvent
| InvitationResetEvent;

export interface ProjectEvent {
id: string;
pageId: string;
userId: string;
projectId: string;
created: number;
updated: number;
}

export interface PageDeleteEvent extends ProjectEvent {
type: "page.delete";
data: {
titleLc: string;
};
}
export interface MemberJoinEvent extends ProjectEvent {
type: "member.join";
}
export interface MemberAddEvent extends ProjectEvent {
type: "member.add";
}
export interface InvitationResetEvent extends ProjectEvent {
type: "invitation.reset";
}
export interface AdminAddEvent extends ProjectEvent {
type: "admin.add";
targetUserId: UserId;
}
export interface AdminDeleteEvent extends ProjectEvent {
type: "admin.delete";
targetUserId: UserId;
}
export interface OwnerSetEvent extends ProjectEvent {
type: "owner.set";
targetUserId: UserId;
}

export interface CommitNotification extends PageCommit {
id: string;
}
Expand Down

0 comments on commit 19cc3eb

Please sign in to comment.