-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.ts
62 lines (52 loc) · 1.5 KB
/
server.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import type { TextComponent } from "./text";
export enum EventResponseState {
SUCCESS,
ERROR,
}
/**
* A response sent when a HTTP event is POSTed to the server.
*/
export interface EventResponse {
/**
* The state of the response.
*/
state: EventResponseState;
/**
* An optional message describing what happened. This can be displayed to the user as is.
*/
message?: string;
/**
* An optional text component describing what happened. This can be displayed to the user as is.
*
* Note that this is preferred over EventResponse.message.
*/
messageTextComponent?: TextComponent[];
}
export interface ServerEvent {}
export interface InitialStateEvent extends ServerEvent {
gnomes: number;
// perk group id => zero-based tier
perks: Map<string, number>;
}
export interface HeartBeatEvent extends ServerEvent {}
export interface UpdateGnomesEvent extends ServerEvent {
gnomes: number;
}
export interface UpdatePerksEvent extends ServerEvent {
// maps aren't supported by JSON.stringify; use an array of tuples instead
// perk group id => zero-based tier
perks: [groupId: string, tier: number][];
}
export interface SendMessageEvent extends ServerEvent {
message: TextComponent[];
}
export type ClientBoundEventType =
| "initial-state"
| "heartbeat"
| "update-gnomes"
| "update-perks"
| "send-message";
export interface ClientBoundPayload {
eventType: ClientBoundEventType;
payloadJson: string;
}