@studious-lms/server 1.1.24 → 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 +156 -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 +54 -3
  14. package/dist/routers/assignment.d.ts.map +1 -1
  15. package/dist/routers/assignment.js +265 -131
  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 -82
  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;
@@ -1446,8 +1489,16 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
1446
1489
  id: string;
1447
1490
  username: string;
1448
1491
  profile: {
1492
+ id: string;
1493
+ location: string | null;
1494
+ userId: string;
1495
+ createdAt: Date;
1449
1496
  displayName: string | null;
1497
+ bio: string | null;
1498
+ website: string | null;
1450
1499
  profilePicture: string | null;
1500
+ profilePictureThumbnail: string | null;
1501
+ updatedAt: Date;
1451
1502
  } | null;
1452
1503
  };
1453
1504
  attachments: {
@@ -2572,6 +2623,22 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
2572
2623
  };
2573
2624
  meta: object;
2574
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
+ }>;
2575
2642
  update: import("@trpc/server").TRPCMutationProcedure<{
2576
2643
  input: {
2577
2644
  id: string;
@@ -3655,9 +3722,9 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
3655
3722
  title: string;
3656
3723
  content: string;
3657
3724
  createdAt: Date;
3658
- read: boolean;
3659
- receiverId: string;
3660
3725
  senderId: string | null;
3726
+ receiverId: string;
3727
+ read: boolean;
3661
3728
  })[];
3662
3729
  meta: object;
3663
3730
  }>;
@@ -3677,9 +3744,9 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
3677
3744
  title: string;
3678
3745
  content: string;
3679
3746
  createdAt: Date;
3680
- read: boolean;
3681
- receiverId: string;
3682
3747
  senderId: string | null;
3748
+ receiverId: string;
3749
+ read: boolean;
3683
3750
  }) | null;
3684
3751
  meta: object;
3685
3752
  }>;
@@ -3694,9 +3761,9 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
3694
3761
  title: string;
3695
3762
  content: string;
3696
3763
  createdAt: Date;
3697
- read: boolean;
3698
- receiverId: string;
3699
3764
  senderId: string | null;
3765
+ receiverId: string;
3766
+ read: boolean;
3700
3767
  };
3701
3768
  meta: object;
3702
3769
  }>;
@@ -3718,9 +3785,9 @@ export declare const appRouter: import("@trpc/server").TRPCBuiltRouter<{
3718
3785
  title: string;
3719
3786
  content: string;
3720
3787
  createdAt: Date;
3721
- read: boolean;
3722
- receiverId: string;
3723
3788
  senderId: string | null;
3789
+ receiverId: string;
3790
+ read: boolean;
3724
3791
  };
3725
3792
  meta: object;
3726
3793
  }>;
@@ -5162,6 +5229,37 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
5162
5229
  };
5163
5230
  transformer: false;
5164
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
+ }>;
5165
5263
  order: import("@trpc/server").TRPCMutationProcedure<{
5166
5264
  input: {
5167
5265
  [x: string]: unknown;
@@ -5189,7 +5287,7 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
5189
5287
  teacherId: string;
5190
5288
  inProgress: boolean;
5191
5289
  order: number | null;
5192
- };
5290
+ } | null;
5193
5291
  meta: object;
5194
5292
  }>;
5195
5293
  move: import("@trpc/server").TRPCMutationProcedure<{
@@ -5197,7 +5295,7 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
5197
5295
  [x: string]: unknown;
5198
5296
  classId: string;
5199
5297
  id: string;
5200
- targetSectionId: string;
5298
+ targetSectionId?: string | null | undefined;
5201
5299
  };
5202
5300
  output: {
5203
5301
  type: import(".prisma/client").$Enums.AssignmentType;
@@ -5219,7 +5317,7 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
5219
5317
  teacherId: string;
5220
5318
  inProgress: boolean;
5221
5319
  order: number | null;
5222
- };
5320
+ } | null;
5223
5321
  meta: object;
5224
5322
  }>;
5225
5323
  create: import("@trpc/server").TRPCMutationProcedure<{
@@ -5619,6 +5717,18 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
5619
5717
  student: {
5620
5718
  id: string;
5621
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;
5622
5732
  };
5623
5733
  attachments: {
5624
5734
  path: string;
@@ -5739,8 +5849,16 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
5739
5849
  id: string;
5740
5850
  username: string;
5741
5851
  profile: {
5852
+ id: string;
5853
+ location: string | null;
5854
+ userId: string;
5855
+ createdAt: Date;
5742
5856
  displayName: string | null;
5857
+ bio: string | null;
5858
+ website: string | null;
5743
5859
  profilePicture: string | null;
5860
+ profilePictureThumbnail: string | null;
5861
+ updatedAt: Date;
5744
5862
  } | null;
5745
5863
  };
5746
5864
  attachments: {
@@ -6865,6 +6983,22 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
6865
6983
  };
6866
6984
  meta: object;
6867
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
+ }>;
6868
7002
  update: import("@trpc/server").TRPCMutationProcedure<{
6869
7003
  input: {
6870
7004
  id: string;
@@ -7948,9 +8082,9 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
7948
8082
  title: string;
7949
8083
  content: string;
7950
8084
  createdAt: Date;
7951
- read: boolean;
7952
- receiverId: string;
7953
8085
  senderId: string | null;
8086
+ receiverId: string;
8087
+ read: boolean;
7954
8088
  })[];
7955
8089
  meta: object;
7956
8090
  }>;
@@ -7970,9 +8104,9 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
7970
8104
  title: string;
7971
8105
  content: string;
7972
8106
  createdAt: Date;
7973
- read: boolean;
7974
- receiverId: string;
7975
8107
  senderId: string | null;
8108
+ receiverId: string;
8109
+ read: boolean;
7976
8110
  }) | null;
7977
8111
  meta: object;
7978
8112
  }>;
@@ -7987,9 +8121,9 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
7987
8121
  title: string;
7988
8122
  content: string;
7989
8123
  createdAt: Date;
7990
- read: boolean;
7991
- receiverId: string;
7992
8124
  senderId: string | null;
8125
+ receiverId: string;
8126
+ read: boolean;
7993
8127
  };
7994
8128
  meta: object;
7995
8129
  }>;
@@ -8011,9 +8145,9 @@ export declare const createCaller: import("@trpc/server").TRPCRouterCaller<{
8011
8145
  title: string;
8012
8146
  content: string;
8013
8147
  createdAt: Date;
8014
- read: boolean;
8015
- receiverId: string;
8016
8148
  senderId: string | null;
8149
+ receiverId: string;
8150
+ read: boolean;
8017
8151
  };
8018
8152
  meta: object;
8019
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"}