@studious-lms/server 1.1.23 → 1.1.26

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.
Files changed (43) hide show
  1. package/dist/lib/fileUpload.d.ts.map +1 -1
  2. package/dist/lib/fileUpload.js +68 -11
  3. package/dist/lib/googleCloudStorage.d.ts +7 -0
  4. package/dist/lib/googleCloudStorage.d.ts.map +1 -1
  5. package/dist/lib/googleCloudStorage.js +19 -0
  6. package/dist/lib/notificationHandler.d.ts +25 -0
  7. package/dist/lib/notificationHandler.d.ts.map +1 -0
  8. package/dist/lib/notificationHandler.js +28 -0
  9. package/dist/routers/_app.d.ts +164 -22
  10. package/dist/routers/_app.d.ts.map +1 -1
  11. package/dist/routers/announcement.d.ts.map +1 -1
  12. package/dist/routers/announcement.js +26 -2
  13. package/dist/routers/assignment.d.ts +58 -3
  14. package/dist/routers/assignment.d.ts.map +1 -1
  15. package/dist/routers/assignment.js +265 -125
  16. package/dist/routers/auth.js +1 -1
  17. package/dist/routers/file.d.ts.map +1 -1
  18. package/dist/routers/file.js +9 -6
  19. package/dist/routers/labChat.d.ts.map +1 -1
  20. package/dist/routers/labChat.js +13 -5
  21. package/dist/routers/notifications.d.ts +8 -8
  22. package/dist/routers/section.d.ts +16 -0
  23. package/dist/routers/section.d.ts.map +1 -1
  24. package/dist/routers/section.js +139 -30
  25. package/dist/seedDatabase.d.ts +2 -2
  26. package/dist/seedDatabase.d.ts.map +1 -1
  27. package/dist/seedDatabase.js +2 -1
  28. package/dist/utils/logger.d.ts +1 -0
  29. package/dist/utils/logger.d.ts.map +1 -1
  30. package/dist/utils/logger.js +27 -2
  31. package/package.json +2 -2
  32. package/src/lib/fileUpload.ts +69 -11
  33. package/src/lib/googleCloudStorage.ts +19 -0
  34. package/src/lib/notificationHandler.ts +36 -0
  35. package/src/routers/announcement.ts +30 -2
  36. package/src/routers/assignment.ts +230 -76
  37. package/src/routers/auth.ts +1 -1
  38. package/src/routers/file.ts +10 -7
  39. package/src/routers/labChat.ts +15 -6
  40. package/src/routers/section.ts +158 -36
  41. package/src/seedDatabase.ts +2 -1
  42. package/src/utils/logger.ts +29 -2
  43. package/tests/setup.ts +3 -9
@@ -1 +1 @@
1
- {"version":3,"file":"fileUpload.d.ts","sourceRoot":"","sources":["../../src/lib/fileUpload.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAEd;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAEd;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,IAAI,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CACzB;AAKD;;GAEG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,YAAY,CAAC,CAKvB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,QAAQ,EAAE,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,EAAE,CAAC,CAKzB;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAUlE;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,gBAAgB,CAAC,CAqF3B;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,OAAO,EACtB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,cAAc,EAAE,EACvB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAa7B"}
1
+ {"version":3,"file":"fileUpload.d.ts","sourceRoot":"","sources":["../../src/lib/fileUpload.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAEd;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAEd;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,IAAI,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CACzB;AAKD;;GAEG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,YAAY,CAAC,CAKvB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,QAAQ,EAAE,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,EAAE,CAAC,CAKzB;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAUlE;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,gBAAgB,CAAC,CAyF3B;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,OAAO,EACtB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CA+Df;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CA8Bf;AAED;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,cAAc,EAAE,EACvB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,EACrB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAiB7B"}
@@ -1,7 +1,8 @@
1
1
  import { TRPCError } from "@trpc/server";
2
2
  import { v4 as uuidv4 } from "uuid";
3
- import { getSignedUrl } from "./googleCloudStorage.js";
3
+ import { getSignedUrl, objectExists } from "./googleCloudStorage.js";
4
4
  import { prisma } from "./prisma.js";
5
+ import { logger } from "../utils/logger.js";
5
6
  // DEPRECATED: These functions are no longer used - files are uploaded directly to GCS
6
7
  // Use createDirectUploadFile() and createDirectUploadFiles() instead
7
8
  /**
@@ -120,7 +121,11 @@ export async function createDirectUploadFile(file, userId, directory, assignment
120
121
  };
121
122
  }
122
123
  catch (error) {
123
- console.error('Error creating direct upload file:', error);
124
+ logger.error('Error creating direct upload file:', { error: error instanceof Error ? {
125
+ name: error.name,
126
+ message: error.message,
127
+ stack: error.stack,
128
+ } : error });
124
129
  throw new TRPCError({
125
130
  code: 'INTERNAL_SERVER_ERROR',
126
131
  message: 'Failed to create direct upload file',
@@ -135,15 +140,48 @@ export async function createDirectUploadFile(file, userId, directory, assignment
135
140
  */
136
141
  export async function confirmDirectUpload(fileId, uploadSuccess, errorMessage) {
137
142
  try {
143
+ // First fetch the file record to get the object path
144
+ const fileRecord = await prisma.file.findUnique({
145
+ where: { id: fileId },
146
+ select: { path: true }
147
+ });
148
+ if (!fileRecord) {
149
+ throw new TRPCError({
150
+ code: 'NOT_FOUND',
151
+ message: 'File record not found',
152
+ });
153
+ }
154
+ let actualUploadSuccess = uploadSuccess;
155
+ let actualErrorMessage = errorMessage;
156
+ // If uploadSuccess is true, verify the object actually exists in GCS
157
+ if (uploadSuccess) {
158
+ try {
159
+ const exists = await objectExists(process.env.GOOGLE_CLOUD_BUCKET_NAME, fileRecord.path);
160
+ if (!exists) {
161
+ actualUploadSuccess = false;
162
+ actualErrorMessage = 'File upload reported as successful but object not found in Google Cloud Storage';
163
+ logger.error(`File upload verification failed for ${fileId}: object ${fileRecord.path} not found in GCS`);
164
+ }
165
+ }
166
+ catch (error) {
167
+ logger.error(`Error verifying file existence in GCS for ${fileId}:`, { error: error instanceof Error ? {
168
+ name: error.name,
169
+ message: error.message,
170
+ stack: error.stack,
171
+ } : error });
172
+ actualUploadSuccess = false;
173
+ actualErrorMessage = 'Failed to verify file existence in Google Cloud Storage';
174
+ }
175
+ }
138
176
  const updateData = {
139
- uploadStatus: uploadSuccess ? 'COMPLETED' : 'FAILED',
140
- uploadProgress: uploadSuccess ? 100 : 0,
177
+ uploadStatus: actualUploadSuccess ? 'COMPLETED' : 'FAILED',
178
+ uploadProgress: actualUploadSuccess ? 100 : 0,
141
179
  };
142
- if (!uploadSuccess && errorMessage) {
143
- updateData.uploadError = errorMessage;
180
+ if (!actualUploadSuccess && actualErrorMessage) {
181
+ updateData.uploadError = actualErrorMessage;
144
182
  updateData.uploadRetryCount = { increment: 1 };
145
183
  }
146
- if (uploadSuccess) {
184
+ if (actualUploadSuccess) {
147
185
  updateData.uploadedAt = new Date();
148
186
  }
149
187
  await prisma.file.update({
@@ -152,7 +190,7 @@ export async function confirmDirectUpload(fileId, uploadSuccess, errorMessage) {
152
190
  });
153
191
  }
154
192
  catch (error) {
155
- console.error('Error confirming direct upload:', error);
193
+ logger.error('Error confirming direct upload:', { error });
156
194
  throw new TRPCError({
157
195
  code: 'INTERNAL_SERVER_ERROR',
158
196
  message: 'Failed to confirm upload',
@@ -166,16 +204,31 @@ export async function confirmDirectUpload(fileId, uploadSuccess, errorMessage) {
166
204
  */
167
205
  export async function updateUploadProgress(fileId, progress) {
168
206
  try {
207
+ // await prisma.file.update({
208
+ // where: { id: fileId },
209
+ // data: {
210
+ // uploadStatus: 'UPLOADING',
211
+ // uploadProgress: Math.min(100, Math.max(0, progress))
212
+ // }
213
+ // });
214
+ const current = await prisma.file.findUnique({ where: { id: fileId }, select: { uploadStatus: true } });
215
+ if (!current || ['COMPLETED', 'FAILED', 'CANCELLED'].includes(current.uploadStatus))
216
+ return;
217
+ const clamped = Math.min(100, Math.max(0, progress));
169
218
  await prisma.file.update({
170
219
  where: { id: fileId },
171
220
  data: {
172
221
  uploadStatus: 'UPLOADING',
173
- uploadProgress: Math.min(100, Math.max(0, progress))
222
+ uploadProgress: clamped
174
223
  }
175
224
  });
176
225
  }
177
226
  catch (error) {
178
- console.error('Error updating upload progress:', error);
227
+ logger.error('Error updating upload progress:', { error: error instanceof Error ? {
228
+ name: error.name,
229
+ message: error.message,
230
+ stack: error.stack,
231
+ } : error });
179
232
  throw new TRPCError({
180
233
  code: 'INTERNAL_SERVER_ERROR',
181
234
  message: 'Failed to update upload progress',
@@ -197,7 +250,11 @@ export async function createDirectUploadFiles(files, userId, directory, assignme
197
250
  return await Promise.all(uploadPromises);
198
251
  }
199
252
  catch (error) {
200
- console.error('Error creating direct upload files:', error);
253
+ logger.error('Error creating direct upload files:', { error: error instanceof Error ? {
254
+ name: error.name,
255
+ message: error.message,
256
+ stack: error.stack,
257
+ } : error });
201
258
  throw new TRPCError({
202
259
  code: 'INTERNAL_SERVER_ERROR',
203
260
  message: 'Failed to create direct upload files',
@@ -10,4 +10,11 @@ export declare function getSignedUrl(filePath: string, action?: 'read' | 'write'
10
10
  * @param filePath The path of the file to delete
11
11
  */
12
12
  export declare function deleteFile(filePath: string): Promise<void>;
13
+ /**
14
+ * Checks if an object exists in Google Cloud Storage
15
+ * @param bucketName The name of the bucket (unused, uses default bucket)
16
+ * @param objectPath The path of the object to check
17
+ * @returns Promise<boolean> True if the object exists, false otherwise
18
+ */
19
+ export declare function objectExists(bucketName: string, objectPath: string): Promise<boolean>;
13
20
  //# sourceMappingURL=googleCloudStorage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"googleCloudStorage.d.ts","sourceRoot":"","sources":["../../src/lib/googleCloudStorage.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,MAAM,wCAAwD,CAAC;AAQ5E;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,GAAG,OAAgB,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAsB7H;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUhE"}
1
+ {"version":3,"file":"googleCloudStorage.d.ts","sourceRoot":"","sources":["../../src/lib/googleCloudStorage.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,MAAM,wCAAwD,CAAC;AAQ5E;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,GAAG,OAAgB,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAsB7H;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUhE;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAW3F"}
@@ -57,3 +57,22 @@ export async function deleteFile(filePath) {
57
57
  });
58
58
  }
59
59
  }
60
+ /**
61
+ * Checks if an object exists in Google Cloud Storage
62
+ * @param bucketName The name of the bucket (unused, uses default bucket)
63
+ * @param objectPath The path of the object to check
64
+ * @returns Promise<boolean> True if the object exists, false otherwise
65
+ */
66
+ export async function objectExists(bucketName, objectPath) {
67
+ try {
68
+ const [exists] = await bucket.file(objectPath).exists();
69
+ return exists;
70
+ }
71
+ catch (error) {
72
+ console.error('Error checking if object exists in Google Cloud Storage:', error);
73
+ throw new TRPCError({
74
+ code: 'INTERNAL_SERVER_ERROR',
75
+ message: 'Failed to check object existence',
76
+ });
77
+ }
78
+ }
@@ -0,0 +1,25 @@
1
+ interface notificationData {
2
+ title: string;
3
+ content: string;
4
+ }
5
+ export declare function sendNotification(receiver: string, data: notificationData): Promise<{
6
+ id: string;
7
+ title: string;
8
+ content: string;
9
+ createdAt: Date;
10
+ senderId: string | null;
11
+ receiverId: string;
12
+ read: boolean;
13
+ }>;
14
+ export declare function sendNotifications(receiverIds: Array<string>, data: notificationData): Promise<import(".prisma/client").Prisma.BatchPayload>;
15
+ export declare function markRead(id: string, read?: boolean): Promise<{
16
+ id: string;
17
+ title: string;
18
+ content: string;
19
+ createdAt: Date;
20
+ senderId: string | null;
21
+ receiverId: string;
22
+ read: boolean;
23
+ }>;
24
+ export {};
25
+ //# sourceMappingURL=notificationHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notificationHandler.d.ts","sourceRoot":"","sources":["../../src/lib/notificationHandler.ts"],"names":[],"mappings":"AAEA,UAAU,gBAAgB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAA;CAClB;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB;;;;;;;;GAS9E;AAED,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,gBAAgB,yDASzF;AAED,wBAAsB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,GAAE,OAAc;;;;;;;;GAM9D"}
@@ -0,0 +1,28 @@
1
+ import { prisma } from "./prisma.js";
2
+ export async function sendNotification(receiver, data) {
3
+ const notification = await prisma.notification.create({
4
+ data: {
5
+ receiverId: receiver,
6
+ title: data.title,
7
+ content: data.content,
8
+ },
9
+ });
10
+ return notification;
11
+ }
12
+ export async function sendNotifications(receiverIds, data) {
13
+ const notifications = await prisma.notification.createMany({
14
+ data: receiverIds.map(receiverId => ({
15
+ receiverId: receiverId,
16
+ title: data.title,
17
+ content: data.content,
18
+ })),
19
+ });
20
+ return notifications;
21
+ }
22
+ export async function markRead(id, read = true) {
23
+ const notification = await prisma.notification.update({
24
+ where: { id },
25
+ data: { read: read },
26
+ });
27
+ return notification;
28
+ }
@@ -869,6 +869,37 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
869
869
  };
870
870
  transformer: false;
871
871
  }, import("@trpc/server").TRPCDecorateCreateRouterOptions<{
872
+ reorder: import("@trpc/server").TRPCMutationProcedure<{
873
+ input: {
874
+ [x: string]: unknown;
875
+ classId: string;
876
+ movedId: string;
877
+ position: "start" | "end" | "before" | "after";
878
+ targetId?: string | undefined;
879
+ };
880
+ output: {
881
+ type: import(".prisma/client").$Enums.AssignmentType;
882
+ id: string;
883
+ title: string;
884
+ dueDate: Date;
885
+ maxGrade: number | null;
886
+ classId: string;
887
+ eventId: string | null;
888
+ markSchemeId: string | null;
889
+ gradingBoundaryId: string | null;
890
+ instructions: string;
891
+ weight: number;
892
+ graded: boolean;
893
+ sectionId: string | null;
894
+ template: boolean;
895
+ createdAt: Date | null;
896
+ modifiedAt: Date | null;
897
+ teacherId: string;
898
+ inProgress: boolean;
899
+ order: number | null;
900
+ } | null;
901
+ meta: object;
902
+ }>;
872
903
  order: import("@trpc/server").TRPCMutationProcedure<{
873
904
  input: {
874
905
  [x: string]: unknown;
@@ -896,7 +927,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
896
927
  teacherId: string;
897
928
  inProgress: boolean;
898
929
  order: number | null;
899
- };
930
+ } | null;
900
931
  meta: object;
901
932
  }>;
902
933
  move: import("@trpc/server").TRPCMutationProcedure<{
@@ -904,7 +935,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
904
935
  [x: string]: unknown;
905
936
  classId: string;
906
937
  id: string;
907
- targetSectionId: string;
938
+ targetSectionId?: string | null | undefined;
908
939
  };
909
940
  output: {
910
941
  type: import(".prisma/client").$Enums.AssignmentType;
@@ -926,7 +957,7 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
926
957
  teacherId: string;
927
958
  inProgress: boolean;
928
959
  order: number | null;
929
- };
960
+ } | null;
930
961
  meta: object;
931
962
  }>;
932
963
  create: import("@trpc/server").TRPCMutationProcedure<{
@@ -1326,6 +1357,18 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
1326
1357
  student: {
1327
1358
  id: string;
1328
1359
  username: string;
1360
+ profile: {
1361
+ id: string;
1362
+ location: string | null;
1363
+ userId: string;
1364
+ createdAt: Date;
1365
+ displayName: string | null;
1366
+ bio: string | null;
1367
+ website: string | null;
1368
+ profilePicture: string | null;
1369
+ profilePictureThumbnail: string | null;
1370
+ updatedAt: Date;
1371
+ } | null;
1329
1372
  };
1330
1373
  attachments: {
1331
1374
  path: string;
@@ -1445,6 +1488,18 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
1445
1488
  student: {
1446
1489
  id: string;
1447
1490
  username: string;
1491
+ profile: {
1492
+ id: string;
1493
+ location: string | null;
1494
+ userId: string;
1495
+ createdAt: Date;
1496
+ displayName: string | null;
1497
+ bio: string | null;
1498
+ website: string | null;
1499
+ profilePicture: string | null;
1500
+ profilePictureThumbnail: string | null;
1501
+ updatedAt: Date;
1502
+ } | null;
1448
1503
  };
1449
1504
  attachments: {
1450
1505
  path: string;
@@ -2568,6 +2623,22 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
2568
2623
  };
2569
2624
  meta: object;
2570
2625
  }>;
2626
+ reorder: import("@trpc/server").TRPCMutationProcedure<{
2627
+ input: {
2628
+ classId: string;
2629
+ movedId: string;
2630
+ position: "start" | "end" | "before" | "after";
2631
+ targetId?: string | undefined;
2632
+ };
2633
+ output: {
2634
+ id: string;
2635
+ name: string;
2636
+ color: string | null;
2637
+ classId: string;
2638
+ order: number | null;
2639
+ } | null;
2640
+ meta: object;
2641
+ }>;
2571
2642
  update: import("@trpc/server").TRPCMutationProcedure<{
2572
2643
  input: {
2573
2644
  id: string;
@@ -3651,9 +3722,9 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
3651
3722
  title: string;
3652
3723
  content: string;
3653
3724
  createdAt: Date;
3654
- read: boolean;
3655
- receiverId: string;
3656
3725
  senderId: string | null;
3726
+ receiverId: string;
3727
+ read: boolean;
3657
3728
  })[];
3658
3729
  meta: object;
3659
3730
  }>;
@@ -3673,9 +3744,9 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
3673
3744
  title: string;
3674
3745
  content: string;
3675
3746
  createdAt: Date;
3676
- read: boolean;
3677
- receiverId: string;
3678
3747
  senderId: string | null;
3748
+ receiverId: string;
3749
+ read: boolean;
3679
3750
  }) | null;
3680
3751
  meta: object;
3681
3752
  }>;
@@ -3690,9 +3761,9 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
3690
3761
  title: string;
3691
3762
  content: string;
3692
3763
  createdAt: Date;
3693
- read: boolean;
3694
- receiverId: string;
3695
3764
  senderId: string | null;
3765
+ receiverId: string;
3766
+ read: boolean;
3696
3767
  };
3697
3768
  meta: object;
3698
3769
  }>;
@@ -3714,9 +3785,9 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
3714
3785
  title: string;
3715
3786
  content: string;
3716
3787
  createdAt: Date;
3717
- read: boolean;
3718
- receiverId: string;
3719
3788
  senderId: string | null;
3789
+ receiverId: string;
3790
+ read: boolean;
3720
3791
  };
3721
3792
  meta: object;
3722
3793
  }>;
@@ -5158,6 +5229,37 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
5158
5229
  };
5159
5230
  transformer: false;
5160
5231
  }, import("@trpc/server").TRPCDecorateCreateRouterOptions<{
5232
+ reorder: import("@trpc/server").TRPCMutationProcedure<{
5233
+ input: {
5234
+ [x: string]: unknown;
5235
+ classId: string;
5236
+ movedId: string;
5237
+ position: "start" | "end" | "before" | "after";
5238
+ targetId?: string | undefined;
5239
+ };
5240
+ output: {
5241
+ type: import(".prisma/client").$Enums.AssignmentType;
5242
+ id: string;
5243
+ title: string;
5244
+ dueDate: Date;
5245
+ maxGrade: number | null;
5246
+ classId: string;
5247
+ eventId: string | null;
5248
+ markSchemeId: string | null;
5249
+ gradingBoundaryId: string | null;
5250
+ instructions: string;
5251
+ weight: number;
5252
+ graded: boolean;
5253
+ sectionId: string | null;
5254
+ template: boolean;
5255
+ createdAt: Date | null;
5256
+ modifiedAt: Date | null;
5257
+ teacherId: string;
5258
+ inProgress: boolean;
5259
+ order: number | null;
5260
+ } | null;
5261
+ meta: object;
5262
+ }>;
5161
5263
  order: import("@trpc/server").TRPCMutationProcedure<{
5162
5264
  input: {
5163
5265
  [x: string]: unknown;
@@ -5185,7 +5287,7 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
5185
5287
  teacherId: string;
5186
5288
  inProgress: boolean;
5187
5289
  order: number | null;
5188
- };
5290
+ } | null;
5189
5291
  meta: object;
5190
5292
  }>;
5191
5293
  move: import("@trpc/server").TRPCMutationProcedure<{
@@ -5193,7 +5295,7 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
5193
5295
  [x: string]: unknown;
5194
5296
  classId: string;
5195
5297
  id: string;
5196
- targetSectionId: string;
5298
+ targetSectionId?: string | null | undefined;
5197
5299
  };
5198
5300
  output: {
5199
5301
  type: import(".prisma/client").$Enums.AssignmentType;
@@ -5215,7 +5317,7 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
5215
5317
  teacherId: string;
5216
5318
  inProgress: boolean;
5217
5319
  order: number | null;
5218
- };
5320
+ } | null;
5219
5321
  meta: object;
5220
5322
  }>;
5221
5323
  create: import("@trpc/server").TRPCMutationProcedure<{
@@ -5615,6 +5717,18 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
5615
5717
  student: {
5616
5718
  id: string;
5617
5719
  username: string;
5720
+ profile: {
5721
+ id: string;
5722
+ location: string | null;
5723
+ userId: string;
5724
+ createdAt: Date;
5725
+ displayName: string | null;
5726
+ bio: string | null;
5727
+ website: string | null;
5728
+ profilePicture: string | null;
5729
+ profilePictureThumbnail: string | null;
5730
+ updatedAt: Date;
5731
+ } | null;
5618
5732
  };
5619
5733
  attachments: {
5620
5734
  path: string;
@@ -5734,6 +5848,18 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
5734
5848
  student: {
5735
5849
  id: string;
5736
5850
  username: string;
5851
+ profile: {
5852
+ id: string;
5853
+ location: string | null;
5854
+ userId: string;
5855
+ createdAt: Date;
5856
+ displayName: string | null;
5857
+ bio: string | null;
5858
+ website: string | null;
5859
+ profilePicture: string | null;
5860
+ profilePictureThumbnail: string | null;
5861
+ updatedAt: Date;
5862
+ } | null;
5737
5863
  };
5738
5864
  attachments: {
5739
5865
  path: string;
@@ -6857,6 +6983,22 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
6857
6983
  };
6858
6984
  meta: object;
6859
6985
  }>;
6986
+ reorder: import("@trpc/server").TRPCMutationProcedure<{
6987
+ input: {
6988
+ classId: string;
6989
+ movedId: string;
6990
+ position: "start" | "end" | "before" | "after";
6991
+ targetId?: string | undefined;
6992
+ };
6993
+ output: {
6994
+ id: string;
6995
+ name: string;
6996
+ color: string | null;
6997
+ classId: string;
6998
+ order: number | null;
6999
+ } | null;
7000
+ meta: object;
7001
+ }>;
6860
7002
  update: import("@trpc/server").TRPCMutationProcedure<{
6861
7003
  input: {
6862
7004
  id: string;
@@ -7940,9 +8082,9 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
7940
8082
  title: string;
7941
8083
  content: string;
7942
8084
  createdAt: Date;
7943
- read: boolean;
7944
- receiverId: string;
7945
8085
  senderId: string | null;
8086
+ receiverId: string;
8087
+ read: boolean;
7946
8088
  })[];
7947
8089
  meta: object;
7948
8090
  }>;
@@ -7962,9 +8104,9 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
7962
8104
  title: string;
7963
8105
  content: string;
7964
8106
  createdAt: Date;
7965
- read: boolean;
7966
- receiverId: string;
7967
8107
  senderId: string | null;
8108
+ receiverId: string;
8109
+ read: boolean;
7968
8110
  }) | null;
7969
8111
  meta: object;
7970
8112
  }>;
@@ -7979,9 +8121,9 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
7979
8121
  title: string;
7980
8122
  content: string;
7981
8123
  createdAt: Date;
7982
- read: boolean;
7983
- receiverId: string;
7984
8124
  senderId: string | null;
8125
+ receiverId: string;
8126
+ read: boolean;
7985
8127
  };
7986
8128
  meta: object;
7987
8129
  }>;
@@ -8003,9 +8145,9 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
8003
8145
  title: string;
8004
8146
  content: string;
8005
8147
  createdAt: Date;
8006
- read: boolean;
8007
- receiverId: string;
8008
8148
  senderId: string | null;
8149
+ receiverId: string;
8150
+ read: boolean;
8009
8151
  };
8010
8152
  meta: object;
8011
8153
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"_app.d.ts","sourceRoot":"","sources":["../../src/routers/_app.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAc1E,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiBpB,CAAC;AAGH,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC;AACzC,MAAM,MAAM,YAAY,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;AACxD,MAAM,MAAM,aAAa,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAG1D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAiC,CAAC"}
1
+ {"version":3,"file":"_app.d.ts","sourceRoot":"","sources":["../../src/routers/_app.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAc1E,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiBpB,CAAC;AAGH,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC;AACzC,MAAM,MAAM,YAAY,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;AACxD,MAAM,MAAM,aAAa,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;AAG1D,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAiC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"announcement.d.ts","sourceRoot":"","sources":["../../src/routers/announcement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiBxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoH7B,CAAC"}
1
+ {"version":3,"file":"announcement.d.ts","sourceRoot":"","sources":["../../src/routers/announcement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmBxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8I7B,CAAC"}