@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.
- package/dist/lib/fileUpload.d.ts.map +1 -1
- package/dist/lib/fileUpload.js +68 -11
- package/dist/lib/googleCloudStorage.d.ts +7 -0
- package/dist/lib/googleCloudStorage.d.ts.map +1 -1
- package/dist/lib/googleCloudStorage.js +19 -0
- package/dist/lib/notificationHandler.d.ts +25 -0
- package/dist/lib/notificationHandler.d.ts.map +1 -0
- package/dist/lib/notificationHandler.js +28 -0
- package/dist/routers/_app.d.ts +164 -22
- package/dist/routers/_app.d.ts.map +1 -1
- package/dist/routers/announcement.d.ts.map +1 -1
- package/dist/routers/announcement.js +26 -2
- package/dist/routers/assignment.d.ts +58 -3
- package/dist/routers/assignment.d.ts.map +1 -1
- package/dist/routers/assignment.js +265 -125
- package/dist/routers/auth.js +1 -1
- package/dist/routers/file.d.ts.map +1 -1
- package/dist/routers/file.js +9 -6
- package/dist/routers/labChat.d.ts.map +1 -1
- package/dist/routers/labChat.js +13 -5
- package/dist/routers/notifications.d.ts +8 -8
- package/dist/routers/section.d.ts +16 -0
- package/dist/routers/section.d.ts.map +1 -1
- package/dist/routers/section.js +139 -30
- package/dist/seedDatabase.d.ts +2 -2
- package/dist/seedDatabase.d.ts.map +1 -1
- package/dist/seedDatabase.js +2 -1
- package/dist/utils/logger.d.ts +1 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +27 -2
- package/package.json +2 -2
- package/src/lib/fileUpload.ts +69 -11
- package/src/lib/googleCloudStorage.ts +19 -0
- package/src/lib/notificationHandler.ts +36 -0
- package/src/routers/announcement.ts +30 -2
- package/src/routers/assignment.ts +230 -76
- package/src/routers/auth.ts +1 -1
- package/src/routers/file.ts +10 -7
- package/src/routers/labChat.ts +15 -6
- package/src/routers/section.ts +158 -36
- package/src/seedDatabase.ts +2 -1
- package/src/utils/logger.ts +29 -2
- 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,
|
|
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"}
|
package/dist/lib/fileUpload.js
CHANGED
|
@@ -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
|
-
|
|
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:
|
|
140
|
-
uploadProgress:
|
|
177
|
+
uploadStatus: actualUploadSuccess ? 'COMPLETED' : 'FAILED',
|
|
178
|
+
uploadProgress: actualUploadSuccess ? 100 : 0,
|
|
141
179
|
};
|
|
142
|
-
if (!
|
|
143
|
-
updateData.uploadError =
|
|
180
|
+
if (!actualUploadSuccess && actualErrorMessage) {
|
|
181
|
+
updateData.uploadError = actualErrorMessage;
|
|
144
182
|
updateData.uploadRetryCount = { increment: 1 };
|
|
145
183
|
}
|
|
146
|
-
if (
|
|
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
|
-
|
|
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:
|
|
222
|
+
uploadProgress: clamped
|
|
174
223
|
}
|
|
175
224
|
});
|
|
176
225
|
}
|
|
177
226
|
catch (error) {
|
|
178
|
-
|
|
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
|
-
|
|
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
|
+
}
|
package/dist/routers/_app.d.ts
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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;
|
|
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"}
|