@quizpot/quizcore 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +582 -0
- package/dist/index.d.cts +472 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +472 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +522 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +4 -4
- package/dist/events/client/host/kick-player.d.ts +0 -8
- package/dist/events/client/host/kick-player.d.ts.map +0 -1
- package/dist/events/client/host/kick-player.js +0 -4
- package/dist/events/client/host/next-step.d.ts +0 -5
- package/dist/events/client/host/next-step.d.ts.map +0 -1
- package/dist/events/client/host/next-step.js +0 -3
- package/dist/events/client/host/start-lobby.d.ts +0 -6
- package/dist/events/client/host/start-lobby.d.ts.map +0 -1
- package/dist/events/client/host/start-lobby.js +0 -4
- package/dist/events/client/player/submit-answer.d.ts +0 -9
- package/dist/events/client/player/submit-answer.d.ts.map +0 -1
- package/dist/events/client/player/submit-answer.js +0 -4
- package/dist/events/server/lobby-deleted.d.ts +0 -8
- package/dist/events/server/lobby-deleted.d.ts.map +0 -1
- package/dist/events/server/lobby-deleted.js +0 -4
- package/dist/events/server/lobby-joined.d.ts +0 -14
- package/dist/events/server/lobby-joined.d.ts.map +0 -1
- package/dist/events/server/lobby-joined.js +0 -18
- package/dist/events/server/lobby-status-update.d.ts +0 -32
- package/dist/events/server/lobby-status-update.d.ts.map +0 -1
- package/dist/events/server/lobby-status-update.js +0 -4
- package/dist/events/server/player-answer-result.d.ts +0 -11
- package/dist/events/server/player-answer-result.d.ts.map +0 -1
- package/dist/events/server/player-answer-result.js +0 -4
- package/dist/events/server/player-joined.d.ts +0 -9
- package/dist/events/server/player-joined.d.ts.map +0 -1
- package/dist/events/server/player-joined.js +0 -4
- package/dist/events/server/player-kicked.d.ts +0 -6
- package/dist/events/server/player-kicked.d.ts.map +0 -1
- package/dist/events/server/player-kicked.js +0 -4
- package/dist/events/server/player-left.d.ts +0 -9
- package/dist/events/server/player-left.d.ts.map +0 -1
- package/dist/events/server/player-left.js +0 -4
- package/dist/events/server/player-update.d.ts +0 -9
- package/dist/events/server/player-update.d.ts.map +0 -1
- package/dist/events/server/player-update.js +0 -4
- package/dist/events/server/update-lobby-answers.d.ts +0 -8
- package/dist/events/server/update-lobby-answers.d.ts.map +0 -1
- package/dist/events/server/update-lobby-answers.js +0 -4
- package/dist/index.d.ts +0 -26
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -25
- package/dist/managers/lobby-manager.d.ts +0 -12
- package/dist/managers/lobby-manager.d.ts.map +0 -1
- package/dist/managers/lobby-manager.js +0 -112
- package/dist/types/events.d.ts +0 -16
- package/dist/types/events.d.ts.map +0 -1
- package/dist/types/events.js +0 -1
- package/dist/types/lobby.d.ts +0 -42
- package/dist/types/lobby.d.ts.map +0 -1
- package/dist/types/lobby.js +0 -10
- package/dist/types/question.d.ts +0 -106
- package/dist/types/question.d.ts.map +0 -1
- package/dist/types/question.js +0 -22
- package/dist/types/questions/multiple-choice.d.ts +0 -51
- package/dist/types/questions/multiple-choice.d.ts.map +0 -1
- package/dist/types/questions/multiple-choice.js +0 -21
- package/dist/types/questions/short-answer.d.ts +0 -34
- package/dist/types/questions/short-answer.d.ts.map +0 -1
- package/dist/types/questions/short-answer.js +0 -11
- package/dist/types/questions/true-false.d.ts +0 -36
- package/dist/types/questions/true-false.d.ts.map +0 -1
- package/dist/types/questions/true-false.js +0 -12
- package/dist/types/quizfile.d.ts +0 -79
- package/dist/types/quizfile.d.ts.map +0 -1
- package/dist/types/quizfile.js +0 -23
- package/dist/types/quizstep.d.ts +0 -73
- package/dist/types/quizstep.d.ts.map +0 -1
- package/dist/types/quizstep.js +0 -7
- package/dist/types/quiztheme.d.ts +0 -7
- package/dist/types/quiztheme.d.ts.map +0 -1
- package/dist/types/quiztheme.js +0 -5
- package/dist/types/slide.d.ts +0 -18
- package/dist/types/slide.d.ts.map +0 -1
- package/dist/types/slide.js +0 -9
- package/dist/types/slides/comparison.d.ts +0 -9
- package/dist/types/slides/comparison.d.ts.map +0 -1
- package/dist/types/slides/comparison.js +0 -7
- package/dist/types/slides/titleImageTextSlide.d.ts +0 -9
- package/dist/types/slides/titleImageTextSlide.d.ts.map +0 -1
- package/dist/types/slides/titleImageTextSlide.js +0 -7
- package/dist/types/slides/titleSlide.d.ts +0 -8
- package/dist/types/slides/titleSlide.d.ts.map +0 -1
- package/dist/types/slides/titleSlide.js +0 -6
- package/dist/util/guards.d.ts +0 -18
- package/dist/util/guards.d.ts.map +0 -1
- package/dist/util/guards.js +0 -15
- package/dist/util/names/additives.json +0 -23
- package/dist/util/names/animals.json +0 -23
- package/dist/util/names/colors.json +0 -14
- package/dist/util/names/names.d.ts +0 -4
- package/dist/util/names/names.d.ts.map +0 -1
- package/dist/util/names/names.js +0 -31
- package/dist/util/sanitizer.d.ts +0 -3
- package/dist/util/sanitizer.d.ts.map +0 -1
- package/dist/util/sanitizer.js +0 -18
- package/dist/util/score.d.ts +0 -11
- package/dist/util/score.d.ts.map +0 -1
- package/dist/util/score.js +0 -33
- package/dist/util/validator.d.ts +0 -14
- package/dist/util/validator.d.ts.map +0 -1
- package/dist/util/validator.js +0 -27
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,472 @@
|
|
|
1
|
+
import z from "zod";
|
|
2
|
+
|
|
3
|
+
//#region src/events/client/host/kick-player.d.ts
|
|
4
|
+
type KickPlayer = {
|
|
5
|
+
type: "KICK_PLAYER";
|
|
6
|
+
payload: {
|
|
7
|
+
playerId: string;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
declare const createKickPlayerEvent: (playerId: string) => KickPlayer;
|
|
11
|
+
//#endregion
|
|
12
|
+
//#region src/events/client/host/next-step.d.ts
|
|
13
|
+
type NextStep = {
|
|
14
|
+
type: "NEXT_STEP";
|
|
15
|
+
};
|
|
16
|
+
declare const createNextStepEvent: () => NextStep;
|
|
17
|
+
//#endregion
|
|
18
|
+
//#region src/events/client/host/start-lobby.d.ts
|
|
19
|
+
type StartLobby = {
|
|
20
|
+
type: "START_LOBBY";
|
|
21
|
+
payload: {};
|
|
22
|
+
};
|
|
23
|
+
declare const createStartLobbyEvent: () => StartLobby;
|
|
24
|
+
//#endregion
|
|
25
|
+
//#region src/types/questions/short-answer.d.ts
|
|
26
|
+
declare const ShortAnswerQuestionSchema: z.ZodObject<{
|
|
27
|
+
question: z.ZodString;
|
|
28
|
+
imageHash: z.ZodOptional<z.ZodCustomStringFormat<"sha256_hex">>;
|
|
29
|
+
displayTime: z.ZodNumber;
|
|
30
|
+
timeLimit: z.ZodNumber;
|
|
31
|
+
points: z.ZodEnum<{
|
|
32
|
+
normalPoints: "normalPoints";
|
|
33
|
+
doublePoints: "doublePoints";
|
|
34
|
+
noPoints: "noPoints";
|
|
35
|
+
}>;
|
|
36
|
+
type: z.ZodLiteral<"short-answer">;
|
|
37
|
+
answers: z.ZodArray<z.ZodString>;
|
|
38
|
+
}, z.core.$strip>;
|
|
39
|
+
type ShortAnswerQuestion = z.infer<typeof ShortAnswerQuestionSchema>;
|
|
40
|
+
declare const SafeShortAnswerQuestionSchema: z.ZodObject<{
|
|
41
|
+
type: z.ZodLiteral<"short-answer">;
|
|
42
|
+
points: z.ZodEnum<{
|
|
43
|
+
normalPoints: "normalPoints";
|
|
44
|
+
doublePoints: "doublePoints";
|
|
45
|
+
noPoints: "noPoints";
|
|
46
|
+
}>;
|
|
47
|
+
question: z.ZodString;
|
|
48
|
+
imageHash: z.ZodOptional<z.ZodCustomStringFormat<"sha256_hex">>;
|
|
49
|
+
displayTime: z.ZodNumber;
|
|
50
|
+
timeLimit: z.ZodNumber;
|
|
51
|
+
}, z.core.$strip>;
|
|
52
|
+
type SafeShortAnswerQuestion = z.infer<typeof SafeShortAnswerQuestionSchema>;
|
|
53
|
+
declare const ShortAnswerQuestionAnswerSchema: z.ZodObject<{
|
|
54
|
+
type: z.ZodLiteral<"short-answer">;
|
|
55
|
+
answer: z.ZodString;
|
|
56
|
+
}, z.core.$strip>;
|
|
57
|
+
type ShortAnswerQuestionAnswer = z.infer<typeof ShortAnswerQuestionAnswerSchema>;
|
|
58
|
+
//#endregion
|
|
59
|
+
//#region src/types/questions/true-false.d.ts
|
|
60
|
+
declare const TrueFalseQuestionSchema: z.ZodObject<{
|
|
61
|
+
question: z.ZodString;
|
|
62
|
+
imageHash: z.ZodOptional<z.ZodCustomStringFormat<"sha256_hex">>;
|
|
63
|
+
displayTime: z.ZodNumber;
|
|
64
|
+
timeLimit: z.ZodNumber;
|
|
65
|
+
points: z.ZodEnum<{
|
|
66
|
+
normalPoints: "normalPoints";
|
|
67
|
+
doublePoints: "doublePoints";
|
|
68
|
+
noPoints: "noPoints";
|
|
69
|
+
}>;
|
|
70
|
+
type: z.ZodLiteral<"true-false">;
|
|
71
|
+
answer: z.ZodBoolean;
|
|
72
|
+
labels: z.ZodArray<z.ZodString>;
|
|
73
|
+
}, z.core.$strip>;
|
|
74
|
+
type TrueFalseQuestion = z.infer<typeof TrueFalseQuestionSchema>;
|
|
75
|
+
declare const SafeTrueFalseQuestionSchema: z.ZodObject<{
|
|
76
|
+
type: z.ZodLiteral<"true-false">;
|
|
77
|
+
points: z.ZodEnum<{
|
|
78
|
+
normalPoints: "normalPoints";
|
|
79
|
+
doublePoints: "doublePoints";
|
|
80
|
+
noPoints: "noPoints";
|
|
81
|
+
}>;
|
|
82
|
+
question: z.ZodString;
|
|
83
|
+
imageHash: z.ZodOptional<z.ZodCustomStringFormat<"sha256_hex">>;
|
|
84
|
+
displayTime: z.ZodNumber;
|
|
85
|
+
timeLimit: z.ZodNumber;
|
|
86
|
+
labels: z.ZodArray<z.ZodString>;
|
|
87
|
+
}, z.core.$strip>;
|
|
88
|
+
type SafeTrueFalseQuestion = z.infer<typeof SafeTrueFalseQuestionSchema>;
|
|
89
|
+
declare const TrueFalseQuestionAnswerSchema: z.ZodObject<{
|
|
90
|
+
type: z.ZodLiteral<"true-false">;
|
|
91
|
+
answer: z.ZodBoolean;
|
|
92
|
+
}, z.core.$strip>;
|
|
93
|
+
type TrueFalseQuestionAnswer = z.infer<typeof TrueFalseQuestionAnswerSchema>;
|
|
94
|
+
//#endregion
|
|
95
|
+
//#region src/types/questions/multiple-choice.d.ts
|
|
96
|
+
declare const ChoiceSchema: z.ZodObject<{
|
|
97
|
+
text: z.ZodString;
|
|
98
|
+
correct: z.ZodBoolean;
|
|
99
|
+
}, z.core.$strip>;
|
|
100
|
+
type Choice = z.infer<typeof ChoiceSchema>;
|
|
101
|
+
declare const SafeChoiceSchema: z.ZodObject<{
|
|
102
|
+
text: z.ZodString;
|
|
103
|
+
}, z.core.$strip>;
|
|
104
|
+
type SafeChoice = z.infer<typeof SafeChoiceSchema>;
|
|
105
|
+
declare const MultipleChoiceQuestionSchema: z.ZodObject<{
|
|
106
|
+
question: z.ZodString;
|
|
107
|
+
imageHash: z.ZodOptional<z.ZodCustomStringFormat<"sha256_hex">>;
|
|
108
|
+
displayTime: z.ZodNumber;
|
|
109
|
+
timeLimit: z.ZodNumber;
|
|
110
|
+
points: z.ZodEnum<{
|
|
111
|
+
normalPoints: "normalPoints";
|
|
112
|
+
doublePoints: "doublePoints";
|
|
113
|
+
noPoints: "noPoints";
|
|
114
|
+
}>;
|
|
115
|
+
type: z.ZodLiteral<"multiple-choice">;
|
|
116
|
+
choices: z.ZodArray<z.ZodObject<{
|
|
117
|
+
text: z.ZodString;
|
|
118
|
+
correct: z.ZodBoolean;
|
|
119
|
+
}, z.core.$strip>>;
|
|
120
|
+
matchAll: z.ZodBoolean;
|
|
121
|
+
}, z.core.$strip>;
|
|
122
|
+
type MultipleChoiceQuestion = z.infer<typeof MultipleChoiceQuestionSchema>;
|
|
123
|
+
declare const SafeMultipleChoiceQuestionSchema: z.ZodObject<{
|
|
124
|
+
type: z.ZodLiteral<"multiple-choice">;
|
|
125
|
+
points: z.ZodEnum<{
|
|
126
|
+
normalPoints: "normalPoints";
|
|
127
|
+
doublePoints: "doublePoints";
|
|
128
|
+
noPoints: "noPoints";
|
|
129
|
+
}>;
|
|
130
|
+
question: z.ZodString;
|
|
131
|
+
imageHash: z.ZodOptional<z.ZodCustomStringFormat<"sha256_hex">>;
|
|
132
|
+
displayTime: z.ZodNumber;
|
|
133
|
+
timeLimit: z.ZodNumber;
|
|
134
|
+
matchAll: z.ZodBoolean;
|
|
135
|
+
choices: z.ZodArray<z.ZodObject<{
|
|
136
|
+
text: z.ZodString;
|
|
137
|
+
}, z.core.$strip>>;
|
|
138
|
+
}, z.core.$strip>;
|
|
139
|
+
type SafeMultipleChoiceQuestion = z.infer<typeof SafeMultipleChoiceQuestionSchema>;
|
|
140
|
+
declare const MultipleChoiceQuestionAnswerSchema: z.ZodObject<{
|
|
141
|
+
type: z.ZodLiteral<"multiple-choice">;
|
|
142
|
+
choices: z.ZodArray<z.ZodNumber>;
|
|
143
|
+
}, z.core.$strip>;
|
|
144
|
+
type MultipleChoiceQuestionAnswer = z.infer<typeof MultipleChoiceQuestionAnswerSchema>;
|
|
145
|
+
//#endregion
|
|
146
|
+
//#region src/types/question.d.ts
|
|
147
|
+
type Question = MultipleChoiceQuestion | TrueFalseQuestion | ShortAnswerQuestion;
|
|
148
|
+
type SafeQuestion = SafeMultipleChoiceQuestion | SafeTrueFalseQuestion | SafeShortAnswerQuestion;
|
|
149
|
+
//#endregion
|
|
150
|
+
//#region src/util/validator.d.ts
|
|
151
|
+
type SubmittedAnswer = MultipleChoiceQuestionAnswer | TrueFalseQuestionAnswer | ShortAnswerQuestionAnswer;
|
|
152
|
+
interface Answer {
|
|
153
|
+
playerId: string;
|
|
154
|
+
submission: SubmittedAnswer;
|
|
155
|
+
timeTaken: number;
|
|
156
|
+
isCorrect: boolean;
|
|
157
|
+
pointsAwarded: number;
|
|
158
|
+
}
|
|
159
|
+
declare const isCorrect: (question: Question, submission: SubmittedAnswer) => boolean;
|
|
160
|
+
//#endregion
|
|
161
|
+
//#region src/events/client/player/submit-answer.d.ts
|
|
162
|
+
type SubmitAnswer = {
|
|
163
|
+
type: "SUBMIT_ANSWER";
|
|
164
|
+
payload: {
|
|
165
|
+
submission: SubmittedAnswer;
|
|
166
|
+
};
|
|
167
|
+
};
|
|
168
|
+
declare const createSubmitAnswerEvent: (submission: SubmittedAnswer) => SubmitAnswer;
|
|
169
|
+
//#endregion
|
|
170
|
+
//#region src/events/server/lobby-deleted.d.ts
|
|
171
|
+
type LobbyDeleted = {
|
|
172
|
+
type: "LOBBY_DELETED";
|
|
173
|
+
payload: {
|
|
174
|
+
reason: string;
|
|
175
|
+
};
|
|
176
|
+
};
|
|
177
|
+
declare const createLobbyDeletedEvent: (reason: string) => LobbyDeleted;
|
|
178
|
+
//#endregion
|
|
179
|
+
//#region src/types/quizfile.d.ts
|
|
180
|
+
type QuizFile = z.infer<typeof QuizFileSchema>;
|
|
181
|
+
declare const QuizFileSchema: z.ZodObject<{
|
|
182
|
+
id: z.ZodUUID;
|
|
183
|
+
version: z.ZodLiteral<2>;
|
|
184
|
+
title: z.ZodString;
|
|
185
|
+
description: z.ZodOptional<z.ZodString>;
|
|
186
|
+
theme: z.ZodObject<{
|
|
187
|
+
color: z.ZodString;
|
|
188
|
+
background: z.ZodOptional<z.ZodCustomStringFormat<"sha256_hex">>;
|
|
189
|
+
}, z.core.$strip>;
|
|
190
|
+
language: z.ZodString;
|
|
191
|
+
steps: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
192
|
+
type: z.ZodLiteral<"question">;
|
|
193
|
+
data: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
194
|
+
question: z.ZodString;
|
|
195
|
+
imageHash: z.ZodOptional<z.ZodCustomStringFormat<"sha256_hex">>;
|
|
196
|
+
displayTime: z.ZodNumber;
|
|
197
|
+
timeLimit: z.ZodNumber;
|
|
198
|
+
points: z.ZodEnum<{
|
|
199
|
+
normalPoints: "normalPoints";
|
|
200
|
+
doublePoints: "doublePoints";
|
|
201
|
+
noPoints: "noPoints";
|
|
202
|
+
}>;
|
|
203
|
+
type: z.ZodLiteral<"multiple-choice">;
|
|
204
|
+
choices: z.ZodArray<z.ZodObject<{
|
|
205
|
+
text: z.ZodString;
|
|
206
|
+
correct: z.ZodBoolean;
|
|
207
|
+
}, z.core.$strip>>;
|
|
208
|
+
matchAll: z.ZodBoolean;
|
|
209
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
210
|
+
question: z.ZodString;
|
|
211
|
+
imageHash: z.ZodOptional<z.ZodCustomStringFormat<"sha256_hex">>;
|
|
212
|
+
displayTime: z.ZodNumber;
|
|
213
|
+
timeLimit: z.ZodNumber;
|
|
214
|
+
points: z.ZodEnum<{
|
|
215
|
+
normalPoints: "normalPoints";
|
|
216
|
+
doublePoints: "doublePoints";
|
|
217
|
+
noPoints: "noPoints";
|
|
218
|
+
}>;
|
|
219
|
+
type: z.ZodLiteral<"true-false">;
|
|
220
|
+
answer: z.ZodBoolean;
|
|
221
|
+
labels: z.ZodArray<z.ZodString>;
|
|
222
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
223
|
+
question: z.ZodString;
|
|
224
|
+
imageHash: z.ZodOptional<z.ZodCustomStringFormat<"sha256_hex">>;
|
|
225
|
+
displayTime: z.ZodNumber;
|
|
226
|
+
timeLimit: z.ZodNumber;
|
|
227
|
+
points: z.ZodEnum<{
|
|
228
|
+
normalPoints: "normalPoints";
|
|
229
|
+
doublePoints: "doublePoints";
|
|
230
|
+
noPoints: "noPoints";
|
|
231
|
+
}>;
|
|
232
|
+
type: z.ZodLiteral<"short-answer">;
|
|
233
|
+
answers: z.ZodArray<z.ZodString>;
|
|
234
|
+
}, z.core.$strip>], "type">;
|
|
235
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
236
|
+
type: z.ZodLiteral<"slide">;
|
|
237
|
+
data: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
238
|
+
slideType: z.ZodLiteral<"title">;
|
|
239
|
+
title: z.ZodString;
|
|
240
|
+
subtitle: z.ZodOptional<z.ZodString>;
|
|
241
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
242
|
+
slideType: z.ZodLiteral<"titleImageText">;
|
|
243
|
+
title: z.ZodString;
|
|
244
|
+
imageHash: z.ZodOptional<z.ZodCustomStringFormat<"sha256_hex">>;
|
|
245
|
+
text: z.ZodString;
|
|
246
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
247
|
+
slideType: z.ZodLiteral<"comparison">;
|
|
248
|
+
title: z.ZodString;
|
|
249
|
+
left: z.ZodString;
|
|
250
|
+
right: z.ZodString;
|
|
251
|
+
}, z.core.$strip>], "slideType">;
|
|
252
|
+
}, z.core.$strip>], "type">>;
|
|
253
|
+
images: z.ZodRecord<z.ZodCustomStringFormat<"sha256_hex">, z.ZodString>;
|
|
254
|
+
updatedAt: z.ZodISODateTime;
|
|
255
|
+
createdAt: z.ZodISODateTime;
|
|
256
|
+
}, z.core.$strip>;
|
|
257
|
+
//#endregion
|
|
258
|
+
//#region src/types/quiztheme.d.ts
|
|
259
|
+
type QuizTheme = z.infer<typeof QuizThemeSchema>;
|
|
260
|
+
declare const QuizThemeSchema: z.ZodObject<{
|
|
261
|
+
color: z.ZodString;
|
|
262
|
+
background: z.ZodOptional<z.ZodCustomStringFormat<"sha256_hex">>;
|
|
263
|
+
}, z.core.$strip>;
|
|
264
|
+
//#endregion
|
|
265
|
+
//#region src/types/lobby.d.ts
|
|
266
|
+
type Lobby = {
|
|
267
|
+
code: string;
|
|
268
|
+
host: string;
|
|
269
|
+
quiz: QuizFile;
|
|
270
|
+
quizInfo: {
|
|
271
|
+
title: string;
|
|
272
|
+
stepCount: number;
|
|
273
|
+
theme: QuizTheme;
|
|
274
|
+
};
|
|
275
|
+
players: Player[];
|
|
276
|
+
status: LobbyStatus;
|
|
277
|
+
timeoutStartedAt: number | null;
|
|
278
|
+
duration: number | null;
|
|
279
|
+
currentStep: number;
|
|
280
|
+
currentAnswers: Answer[];
|
|
281
|
+
answers: Answer[];
|
|
282
|
+
settings: LobbySettings;
|
|
283
|
+
};
|
|
284
|
+
type LobbySettings = {
|
|
285
|
+
customNames: boolean;
|
|
286
|
+
displayOnDevice: boolean;
|
|
287
|
+
};
|
|
288
|
+
declare enum LobbyStatus {
|
|
289
|
+
waiting = "waiting",
|
|
290
|
+
slide = "slide",
|
|
291
|
+
question = "question",
|
|
292
|
+
answer = "answer",
|
|
293
|
+
answers = "answers",
|
|
294
|
+
score = "score",
|
|
295
|
+
end = "end"
|
|
296
|
+
}
|
|
297
|
+
type Player = {
|
|
298
|
+
id: string;
|
|
299
|
+
name: string;
|
|
300
|
+
score: number;
|
|
301
|
+
streak: number;
|
|
302
|
+
isConnected: boolean;
|
|
303
|
+
};
|
|
304
|
+
//#endregion
|
|
305
|
+
//#region src/events/server/lobby-joined.d.ts
|
|
306
|
+
type LobbyJoined = {
|
|
307
|
+
type: "LOBBY_JOINED";
|
|
308
|
+
payload: {
|
|
309
|
+
lobby: Omit<Lobby, "host" | "quiz" | "players" | "currentAnswers" | "answers">;
|
|
310
|
+
me?: Player;
|
|
311
|
+
players?: Player[];
|
|
312
|
+
currentAnswers?: Answer[];
|
|
313
|
+
answers?: Answer[];
|
|
314
|
+
};
|
|
315
|
+
};
|
|
316
|
+
declare const createLobbyJoinedEvent: (lobby: Lobby, me: Player, isHost: boolean) => LobbyJoined;
|
|
317
|
+
//#endregion
|
|
318
|
+
//#region src/types/slide.d.ts
|
|
319
|
+
type Slide = z.infer<typeof SlideSchema>;
|
|
320
|
+
declare const SlideSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
321
|
+
slideType: z.ZodLiteral<"title">;
|
|
322
|
+
title: z.ZodString;
|
|
323
|
+
subtitle: z.ZodOptional<z.ZodString>;
|
|
324
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
325
|
+
slideType: z.ZodLiteral<"titleImageText">;
|
|
326
|
+
title: z.ZodString;
|
|
327
|
+
imageHash: z.ZodOptional<z.ZodCustomStringFormat<"sha256_hex">>;
|
|
328
|
+
text: z.ZodString;
|
|
329
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
330
|
+
slideType: z.ZodLiteral<"comparison">;
|
|
331
|
+
title: z.ZodString;
|
|
332
|
+
left: z.ZodString;
|
|
333
|
+
right: z.ZodString;
|
|
334
|
+
}, z.core.$strip>], "slideType">;
|
|
335
|
+
//#endregion
|
|
336
|
+
//#region src/events/server/lobby-status-update.d.ts
|
|
337
|
+
type LobbyStatusUpdate = {
|
|
338
|
+
type: "LOBBY_STATUS_UPDATE";
|
|
339
|
+
payload: {
|
|
340
|
+
status: LobbyStatus.waiting;
|
|
341
|
+
} | {
|
|
342
|
+
status: LobbyStatus.slide;
|
|
343
|
+
slide: Slide;
|
|
344
|
+
} | {
|
|
345
|
+
status: LobbyStatus.question;
|
|
346
|
+
question: SafeQuestion;
|
|
347
|
+
timeoutStartedAt: number;
|
|
348
|
+
duration: number;
|
|
349
|
+
} | {
|
|
350
|
+
status: LobbyStatus.answer;
|
|
351
|
+
timeoutStartedAt: number;
|
|
352
|
+
duration: number;
|
|
353
|
+
} | {
|
|
354
|
+
status: LobbyStatus.answers;
|
|
355
|
+
answers: Answer[];
|
|
356
|
+
} | {
|
|
357
|
+
status: LobbyStatus.score;
|
|
358
|
+
leaderboard: Player[];
|
|
359
|
+
} | {
|
|
360
|
+
status: LobbyStatus.end;
|
|
361
|
+
};
|
|
362
|
+
};
|
|
363
|
+
declare const createLobbyStatusUpdateEvent: (payload: LobbyStatusUpdate["payload"]) => LobbyStatusUpdate;
|
|
364
|
+
//#endregion
|
|
365
|
+
//#region src/events/server/player-answer-result.d.ts
|
|
366
|
+
type PlayerAnswerResult = {
|
|
367
|
+
type: "PLAYER_ANSWER_RESULT";
|
|
368
|
+
payload: {
|
|
369
|
+
isCorrect: boolean;
|
|
370
|
+
pointsAwarded: number;
|
|
371
|
+
score: number;
|
|
372
|
+
streak: number;
|
|
373
|
+
};
|
|
374
|
+
};
|
|
375
|
+
declare const createPlayerAnswerResultEvent: (isCorrect: boolean, pointsAwarded: number, score: number, streak: number) => PlayerAnswerResult;
|
|
376
|
+
//#endregion
|
|
377
|
+
//#region src/events/server/player-joined.d.ts
|
|
378
|
+
type PlayerJoined = {
|
|
379
|
+
type: "PLAYER_JOINED";
|
|
380
|
+
payload: {
|
|
381
|
+
player: Player;
|
|
382
|
+
};
|
|
383
|
+
};
|
|
384
|
+
declare const createPlayerJoinedEvent: (player: Player) => PlayerJoined;
|
|
385
|
+
//#endregion
|
|
386
|
+
//#region src/events/server/player-kicked.d.ts
|
|
387
|
+
type PlayerKicked = {
|
|
388
|
+
type: "PLAYER_KICKED";
|
|
389
|
+
payload: {};
|
|
390
|
+
};
|
|
391
|
+
declare const createPlayerKickedEvent: () => PlayerKicked;
|
|
392
|
+
//#endregion
|
|
393
|
+
//#region src/events/server/player-left.d.ts
|
|
394
|
+
type PlayerLeft = {
|
|
395
|
+
type: "PLAYER_LEFT";
|
|
396
|
+
payload: {
|
|
397
|
+
player: Player;
|
|
398
|
+
};
|
|
399
|
+
};
|
|
400
|
+
declare const createPlayerLeftEvent: (player: Player) => PlayerLeft;
|
|
401
|
+
//#endregion
|
|
402
|
+
//#region src/events/server/player-update.d.ts
|
|
403
|
+
type PlayerUpdate = {
|
|
404
|
+
type: "PLAYER_UPDATE";
|
|
405
|
+
payload: {
|
|
406
|
+
player: Player;
|
|
407
|
+
};
|
|
408
|
+
};
|
|
409
|
+
declare const createPlayerUpdateEvent: (player: Player) => PlayerUpdate;
|
|
410
|
+
//#endregion
|
|
411
|
+
//#region src/events/server/update-lobby-answers.d.ts
|
|
412
|
+
type UpdateLobbyAnswers = {
|
|
413
|
+
type: "UPDATE_LOBBY_ANSWERS";
|
|
414
|
+
payload: {
|
|
415
|
+
count: number;
|
|
416
|
+
};
|
|
417
|
+
};
|
|
418
|
+
declare const createUpdateLobbyAnswersEvent: (count: number) => UpdateLobbyAnswers;
|
|
419
|
+
//#endregion
|
|
420
|
+
//#region src/managers/lobby-manager.d.ts
|
|
421
|
+
declare const createLobby: (code: string, hostId: string, quiz: QuizFile) => Lobby;
|
|
422
|
+
declare const advanceLobby: (lobby: Lobby) => Lobby;
|
|
423
|
+
type SubmissionResult = {
|
|
424
|
+
nextLobby: Lobby;
|
|
425
|
+
result: PlayerAnswerResult;
|
|
426
|
+
};
|
|
427
|
+
declare const handleSubmission: (lobby: Lobby, playerId: string, submission: SubmittedAnswer) => SubmissionResult | null;
|
|
428
|
+
//#endregion
|
|
429
|
+
//#region src/types/events.d.ts
|
|
430
|
+
type AllClientEvents = KickPlayer | StartLobby | NextStep | SubmitAnswer;
|
|
431
|
+
type AllServerEvents = PlayerJoined | PlayerLeft | PlayerUpdate | LobbyStatusUpdate | UpdateLobbyAnswers | PlayerAnswerResult | PlayerKicked | LobbyDeleted | LobbyJoined;
|
|
432
|
+
//#endregion
|
|
433
|
+
//#region src/types/quizstep.d.ts
|
|
434
|
+
type QuizStep = {
|
|
435
|
+
type: "question";
|
|
436
|
+
data: Question;
|
|
437
|
+
} | {
|
|
438
|
+
type: "slide";
|
|
439
|
+
data: Slide;
|
|
440
|
+
};
|
|
441
|
+
//#endregion
|
|
442
|
+
//#region src/util/guards.d.ts
|
|
443
|
+
declare const isQuestion: (step: QuizStep) => step is {
|
|
444
|
+
type: "question";
|
|
445
|
+
data: Question;
|
|
446
|
+
};
|
|
447
|
+
declare const isSlide: (step: QuizStep) => step is {
|
|
448
|
+
type: "slide";
|
|
449
|
+
data: Slide;
|
|
450
|
+
};
|
|
451
|
+
declare const isMultipleChoice: (data: Question) => data is MultipleChoiceQuestion;
|
|
452
|
+
declare const isTrueFalse: (data: Question) => data is TrueFalseQuestion;
|
|
453
|
+
declare const isShortAnswer: (data: Question) => data is ShortAnswerQuestion;
|
|
454
|
+
//#endregion
|
|
455
|
+
//#region src/util/names/names.d.ts
|
|
456
|
+
declare const generateName: () => string;
|
|
457
|
+
declare const generateUniqueName: (players: Player[]) => string;
|
|
458
|
+
//#endregion
|
|
459
|
+
//#region src/util/sanitizer.d.ts
|
|
460
|
+
declare const sanitizeQuestion: (question: Question) => SafeQuestion;
|
|
461
|
+
//#endregion
|
|
462
|
+
//#region src/util/score.d.ts
|
|
463
|
+
declare const calculateScore: (player: {
|
|
464
|
+
score: number;
|
|
465
|
+
streak: number;
|
|
466
|
+
}, question: Question, answer: Answer, quiz: QuizFile) => {
|
|
467
|
+
newScore: number;
|
|
468
|
+
pointsAwarded: number;
|
|
469
|
+
};
|
|
470
|
+
//#endregion
|
|
471
|
+
export { AllClientEvents, AllServerEvents, Answer, Choice, ChoiceSchema, KickPlayer, Lobby, LobbyDeleted, LobbyJoined, LobbySettings, LobbyStatus, LobbyStatusUpdate, MultipleChoiceQuestion, MultipleChoiceQuestionAnswer, MultipleChoiceQuestionAnswerSchema, MultipleChoiceQuestionSchema, NextStep, Player, PlayerAnswerResult, PlayerJoined, PlayerKicked, PlayerLeft, PlayerUpdate, QuizFile, QuizFileSchema, SafeChoice, SafeChoiceSchema, SafeMultipleChoiceQuestion, SafeMultipleChoiceQuestionSchema, SafeShortAnswerQuestion, SafeShortAnswerQuestionSchema, SafeTrueFalseQuestion, SafeTrueFalseQuestionSchema, ShortAnswerQuestion, ShortAnswerQuestionAnswer, ShortAnswerQuestionAnswerSchema, ShortAnswerQuestionSchema, StartLobby, SubmissionResult, SubmitAnswer, SubmittedAnswer, TrueFalseQuestion, TrueFalseQuestionAnswer, TrueFalseQuestionAnswerSchema, TrueFalseQuestionSchema, UpdateLobbyAnswers, advanceLobby, calculateScore, createKickPlayerEvent, createLobby, createLobbyDeletedEvent, createLobbyJoinedEvent, createLobbyStatusUpdateEvent, createNextStepEvent, createPlayerAnswerResultEvent, createPlayerJoinedEvent, createPlayerKickedEvent, createPlayerLeftEvent, createPlayerUpdateEvent, createStartLobbyEvent, createSubmitAnswerEvent, createUpdateLobbyAnswersEvent, generateName, generateUniqueName, handleSubmission, isCorrect, isMultipleChoice, isQuestion, isShortAnswer, isSlide, isTrueFalse, sanitizeQuestion };
|
|
472
|
+
//# sourceMappingURL=index.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/events/client/host/kick-player.ts","../src/events/client/host/next-step.ts","../src/events/client/host/start-lobby.ts","../src/types/questions/short-answer.ts","../src/types/questions/true-false.ts","../src/types/questions/multiple-choice.ts","../src/types/question.ts","../src/util/validator.ts","../src/events/client/player/submit-answer.ts","../src/events/server/lobby-deleted.ts","../src/types/quizfile.ts","../src/types/quiztheme.ts","../src/types/lobby.ts","../src/events/server/lobby-joined.ts","../src/types/slide.ts","../src/events/server/lobby-status-update.ts","../src/events/server/player-answer-result.ts","../src/events/server/player-joined.ts","../src/events/server/player-kicked.ts","../src/events/server/player-left.ts","../src/events/server/player-update.ts","../src/events/server/update-lobby-answers.ts","../src/managers/lobby-manager.ts","../src/types/events.ts","../src/types/quizstep.ts","../src/util/guards.ts","../src/util/names/names.ts","../src/util/sanitizer.ts","../src/util/score.ts"],"mappings":"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"}
|