@studious-lms/server 1.2.53 → 1.4.0
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/.coderabbit.yaml +9 -0
- package/.env.example +9 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +102 -8
- package/dist/index.js.map +1 -1
- package/dist/lib/config/env.d.ts +21 -0
- package/dist/lib/config/env.d.ts.map +1 -1
- package/dist/lib/config/env.js +8 -2
- package/dist/lib/config/env.js.map +1 -1
- package/dist/lib/fileUpload.d.ts.map +1 -1
- package/dist/lib/fileUpload.js +2 -2
- package/dist/lib/fileUpload.js.map +1 -1
- package/dist/lib/googleCloudStorage.d.ts +6 -0
- package/dist/lib/googleCloudStorage.d.ts.map +1 -1
- package/dist/lib/googleCloudStorage.js +19 -2
- package/dist/lib/googleCloudStorage.js.map +1 -1
- package/dist/lib/pusher.d.ts +4 -1
- package/dist/lib/pusher.d.ts.map +1 -1
- package/dist/lib/pusher.js +6 -3
- package/dist/lib/pusher.js.map +1 -1
- package/dist/lib/redis.d.ts +5 -0
- package/dist/lib/redis.d.ts.map +1 -0
- package/dist/lib/redis.js +53 -0
- package/dist/lib/redis.js.map +1 -0
- package/dist/lib/thumbnailGenerator.d.ts +0 -21
- package/dist/lib/thumbnailGenerator.d.ts.map +1 -1
- package/dist/lib/thumbnailGenerator.js +157 -160
- package/dist/lib/thumbnailGenerator.js.map +1 -1
- package/dist/middleware/auth.d.ts.map +1 -1
- package/dist/middleware/auth.js +33 -95
- package/dist/middleware/auth.js.map +1 -1
- package/dist/models/agenda.d.ts +97 -0
- package/dist/models/agenda.d.ts.map +1 -0
- package/dist/models/agenda.js +40 -0
- package/dist/models/agenda.js.map +1 -0
- package/dist/models/announcement.d.ts +223 -0
- package/dist/models/announcement.d.ts.map +1 -0
- package/dist/models/announcement.js +120 -0
- package/dist/models/announcement.js.map +1 -0
- package/dist/models/assignment.d.ts +1292 -0
- package/dist/models/assignment.d.ts.map +1 -0
- package/dist/models/assignment.js +309 -0
- package/dist/models/assignment.js.map +1 -0
- package/dist/models/attendance.d.ts +180 -0
- package/dist/models/attendance.d.ts.map +1 -0
- package/dist/models/attendance.js +188 -0
- package/dist/models/attendance.js.map +1 -0
- package/dist/models/auth.d.ts +153 -0
- package/dist/models/auth.d.ts.map +1 -0
- package/dist/models/auth.js +217 -0
- package/dist/models/auth.js.map +1 -0
- package/dist/models/class.d.ts +461 -0
- package/dist/models/class.d.ts.map +1 -0
- package/dist/models/class.js +645 -0
- package/dist/models/class.js.map +1 -0
- package/dist/models/comment.d.ts +171 -0
- package/dist/models/comment.d.ts.map +1 -0
- package/dist/models/comment.js +138 -0
- package/dist/models/comment.js.map +1 -0
- package/dist/models/conversation.d.ts +164 -0
- package/dist/models/conversation.d.ts.map +1 -0
- package/dist/models/conversation.js +175 -0
- package/dist/models/conversation.js.map +1 -0
- package/dist/models/event.d.ts +295 -0
- package/dist/models/event.d.ts.map +1 -0
- package/dist/models/event.js +145 -0
- package/dist/models/event.js.map +1 -0
- package/dist/models/file.d.ts +536 -0
- package/dist/models/file.d.ts.map +1 -0
- package/dist/models/file.js +126 -0
- package/dist/models/file.js.map +1 -0
- package/dist/models/folder.d.ts +295 -0
- package/dist/models/folder.d.ts.map +1 -0
- package/dist/models/folder.js +202 -0
- package/dist/models/folder.js.map +1 -0
- package/dist/models/labChat.d.ts +243 -0
- package/dist/models/labChat.d.ts.map +1 -0
- package/dist/models/labChat.js +204 -0
- package/dist/models/labChat.js.map +1 -0
- package/dist/models/marketing.d.ts +72 -0
- package/dist/models/marketing.d.ts.map +1 -0
- package/dist/models/marketing.js +26 -0
- package/dist/models/marketing.js.map +1 -0
- package/dist/models/message.d.ts +100 -0
- package/dist/models/message.d.ts.map +1 -0
- package/dist/models/message.js +131 -0
- package/dist/models/message.js.map +1 -0
- package/dist/models/newtonChat.d.ts +72 -0
- package/dist/models/newtonChat.d.ts.map +1 -0
- package/dist/models/newtonChat.js +61 -0
- package/dist/models/newtonChat.js.map +1 -0
- package/dist/models/notification.d.ts +65 -0
- package/dist/models/notification.d.ts.map +1 -0
- package/dist/models/notification.js +46 -0
- package/dist/models/notification.js.map +1 -0
- package/dist/models/section.d.ts +102 -0
- package/dist/models/section.d.ts.map +1 -0
- package/dist/models/section.js +83 -0
- package/dist/models/section.js.map +1 -0
- package/dist/models/user.d.ts +39 -0
- package/dist/models/user.d.ts.map +1 -0
- package/dist/models/user.js +38 -0
- package/dist/models/user.js.map +1 -0
- package/dist/models/worksheet.d.ts +460 -0
- package/dist/models/worksheet.d.ts.map +1 -0
- package/dist/models/worksheet.js +200 -0
- package/dist/models/worksheet.js.map +1 -0
- package/dist/pipelines/aiLabChat.d.ts +76 -0
- package/dist/pipelines/aiLabChat.d.ts.map +1 -0
- package/dist/pipelines/aiLabChat.js +599 -0
- package/dist/pipelines/aiLabChat.js.map +1 -0
- package/dist/pipelines/aiNewtonChat.d.ts +30 -0
- package/dist/pipelines/aiNewtonChat.d.ts.map +1 -0
- package/dist/pipelines/aiNewtonChat.js +289 -0
- package/dist/pipelines/aiNewtonChat.js.map +1 -0
- package/dist/pipelines/gradeWorksheet.d.ts +30 -0
- package/dist/pipelines/gradeWorksheet.d.ts.map +1 -0
- package/dist/pipelines/gradeWorksheet.js +252 -0
- package/dist/pipelines/gradeWorksheet.js.map +1 -0
- package/dist/routers/_app.d.ts +1523 -1315
- package/dist/routers/_app.d.ts.map +1 -1
- package/dist/routers/agenda.d.ts +22 -22
- package/dist/routers/agenda.d.ts.map +1 -1
- package/dist/routers/agenda.js +4 -65
- package/dist/routers/agenda.js.map +1 -1
- package/dist/routers/announcement.d.ts +16 -16
- package/dist/routers/announcement.d.ts.map +1 -1
- package/dist/routers/announcement.js +37 -446
- package/dist/routers/announcement.js.map +1 -1
- package/dist/routers/assignment.d.ts +300 -378
- package/dist/routers/assignment.d.ts.map +1 -1
- package/dist/routers/assignment.js +78 -1868
- package/dist/routers/assignment.js.map +1 -1
- package/dist/routers/attendance.d.ts +19 -9
- package/dist/routers/attendance.d.ts.map +1 -1
- package/dist/routers/attendance.js +7 -264
- package/dist/routers/attendance.js.map +1 -1
- package/dist/routers/auth.d.ts +2 -2
- package/dist/routers/auth.d.ts.map +1 -1
- package/dist/routers/auth.js +29 -354
- package/dist/routers/auth.js.map +1 -1
- package/dist/routers/class.d.ts +160 -68
- package/dist/routers/class.d.ts.map +1 -1
- package/dist/routers/class.js +82 -1052
- package/dist/routers/class.js.map +1 -1
- package/dist/routers/comment.d.ts +6 -42
- package/dist/routers/comment.d.ts.map +1 -1
- package/dist/routers/comment.js +24 -244
- package/dist/routers/comment.js.map +1 -1
- package/dist/routers/conversation.d.ts +45 -7
- package/dist/routers/conversation.d.ts.map +1 -1
- package/dist/routers/conversation.js +19 -327
- package/dist/routers/conversation.js.map +1 -1
- package/dist/routers/event.d.ts +36 -36
- package/dist/routers/event.d.ts.map +1 -1
- package/dist/routers/event.js +13 -433
- package/dist/routers/event.js.map +1 -1
- package/dist/routers/file.d.ts +2 -2
- package/dist/routers/file.d.ts.map +1 -1
- package/dist/routers/file.js +9 -323
- package/dist/routers/file.js.map +1 -1
- package/dist/routers/folder.d.ts +21 -14
- package/dist/routers/folder.d.ts.map +1 -1
- package/dist/routers/folder.js +34 -745
- package/dist/routers/folder.js.map +1 -1
- package/dist/routers/labChat.d.ts +21 -11
- package/dist/routers/labChat.d.ts.map +1 -1
- package/dist/routers/labChat.js +22 -570
- package/dist/routers/labChat.js.map +1 -1
- package/dist/routers/marketing.d.ts +1 -1
- package/dist/routers/marketing.d.ts.map +1 -1
- package/dist/routers/marketing.js +7 -56
- package/dist/routers/marketing.js.map +1 -1
- package/dist/routers/message.d.ts +13 -2
- package/dist/routers/message.d.ts.map +1 -1
- package/dist/routers/message.js +32 -520
- package/dist/routers/message.js.map +1 -1
- package/dist/routers/newtonChat.d.ts +1 -1
- package/dist/routers/newtonChat.d.ts.map +1 -1
- package/dist/routers/newtonChat.js +7 -246
- package/dist/routers/newtonChat.js.map +1 -1
- package/dist/routers/notifications.d.ts +4 -4
- package/dist/routers/notifications.d.ts.map +1 -1
- package/dist/routers/notifications.js +18 -83
- package/dist/routers/notifications.js.map +1 -1
- package/dist/routers/section.d.ts +4 -4
- package/dist/routers/section.d.ts.map +1 -1
- package/dist/routers/section.js +14 -286
- package/dist/routers/section.js.map +1 -1
- package/dist/routers/user.d.ts +1 -1
- package/dist/routers/user.d.ts.map +1 -1
- package/dist/routers/user.js +32 -207
- package/dist/routers/user.js.map +1 -1
- package/dist/routers/worksheet.d.ts +68 -55
- package/dist/routers/worksheet.d.ts.map +1 -1
- package/dist/routers/worksheet.js +79 -394
- package/dist/routers/worksheet.js.map +1 -1
- package/dist/seedDatabase.d.ts +1 -1
- package/dist/server/pipelines/gradeWorksheet.d.ts +6 -6
- package/dist/server/pipelines/gradeWorksheet.d.ts.map +1 -1
- package/dist/server/pipelines/gradeWorksheet.js +12 -5
- package/dist/server/pipelines/gradeWorksheet.js.map +1 -1
- package/dist/services/agenda.d.ts +100 -0
- package/dist/services/agenda.d.ts.map +1 -0
- package/dist/services/agenda.js +21 -0
- package/dist/services/agenda.js.map +1 -0
- package/dist/services/announcement.d.ts +135 -0
- package/dist/services/announcement.d.ts.map +1 -0
- package/dist/services/announcement.js +223 -0
- package/dist/services/announcement.js.map +1 -0
- package/dist/services/assignment.d.ts +1462 -0
- package/dist/services/assignment.d.ts.map +1 -0
- package/dist/services/assignment.js +898 -0
- package/dist/services/assignment.js.map +1 -0
- package/dist/services/attendance.d.ts +93 -0
- package/dist/services/attendance.d.ts.map +1 -0
- package/dist/services/attendance.js +61 -0
- package/dist/services/attendance.js.map +1 -0
- package/dist/services/auth.d.ts +68 -0
- package/dist/services/auth.d.ts.map +1 -0
- package/dist/services/auth.js +218 -0
- package/dist/services/auth.js.map +1 -0
- package/dist/services/class.d.ts +643 -0
- package/dist/services/class.d.ts.map +1 -0
- package/dist/services/class.js +486 -0
- package/dist/services/class.js.map +1 -0
- package/dist/services/comment.d.ts +100 -0
- package/dist/services/comment.d.ts.map +1 -0
- package/dist/services/comment.js +83 -0
- package/dist/services/comment.js.map +1 -0
- package/dist/services/conversation.d.ts +159 -0
- package/dist/services/conversation.d.ts.map +1 -0
- package/dist/services/conversation.js +138 -0
- package/dist/services/conversation.js.map +1 -0
- package/dist/services/event.d.ts +216 -0
- package/dist/services/event.d.ts.map +1 -0
- package/dist/services/event.js +168 -0
- package/dist/services/event.js.map +1 -0
- package/dist/services/file.d.ts +74 -0
- package/dist/services/file.d.ts.map +1 -0
- package/dist/services/file.js +133 -0
- package/dist/services/file.js.map +1 -0
- package/dist/services/folder.d.ts +239 -0
- package/dist/services/folder.d.ts.map +1 -0
- package/dist/services/folder.js +248 -0
- package/dist/services/folder.js.map +1 -0
- package/dist/services/labChat.d.ts +169 -0
- package/dist/services/labChat.d.ts.map +1 -0
- package/dist/services/labChat.js +381 -0
- package/dist/services/labChat.js.map +1 -0
- package/dist/services/marketing.d.ts +50 -0
- package/dist/services/marketing.d.ts.map +1 -0
- package/dist/services/marketing.js +32 -0
- package/dist/services/marketing.js.map +1 -0
- package/dist/services/message.d.ts +103 -0
- package/dist/services/message.d.ts.map +1 -0
- package/dist/services/message.js +422 -0
- package/dist/services/message.js.map +1 -0
- package/dist/services/newtonChat.d.ts +22 -0
- package/dist/services/newtonChat.d.ts.map +1 -0
- package/dist/services/newtonChat.js +174 -0
- package/dist/services/newtonChat.js.map +1 -0
- package/dist/services/notification.d.ts +65 -0
- package/dist/services/notification.d.ts.map +1 -0
- package/dist/services/notification.js +33 -0
- package/dist/services/notification.js.map +1 -0
- package/dist/services/section.d.ts +53 -0
- package/dist/services/section.d.ts.map +1 -0
- package/dist/services/section.js +199 -0
- package/dist/services/section.js.map +1 -0
- package/dist/services/user.d.ts +48 -0
- package/dist/services/user.d.ts.map +1 -0
- package/dist/services/user.js +141 -0
- package/dist/services/user.js.map +1 -0
- package/dist/services/worksheet.d.ts +239 -0
- package/dist/services/worksheet.d.ts.map +1 -0
- package/dist/services/worksheet.js +235 -0
- package/dist/services/worksheet.js.map +1 -0
- package/dist/utils/aiUser.d.ts +1 -3
- package/dist/utils/aiUser.d.ts.map +1 -1
- package/dist/utils/aiUser.js +6 -5
- package/dist/utils/aiUser.js.map +1 -1
- package/dist/utils/email.d.ts +3 -0
- package/dist/utils/email.d.ts.map +1 -1
- package/dist/utils/email.js +7 -4
- package/dist/utils/email.js.map +1 -1
- package/dist/utils/generateInviteCode.d.ts +1 -2
- package/dist/utils/generateInviteCode.d.ts.map +1 -1
- package/dist/utils/generateInviteCode.js +3 -4
- package/dist/utils/generateInviteCode.js.map +1 -1
- package/dist/utils/inference.d.ts +3 -0
- package/dist/utils/inference.d.ts.map +1 -1
- package/dist/utils/inference.js +7 -4
- package/dist/utils/inference.js.map +1 -1
- package/dist/utils/logger.d.ts +3 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +5 -2
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/prismaErrorHandler.d.ts.map +1 -1
- package/dist/utils/prismaErrorHandler.js +5 -2
- package/dist/utils/prismaErrorHandler.js.map +1 -1
- package/dist/utils/prismaWrapper.d.ts +1 -0
- package/dist/utils/prismaWrapper.d.ts.map +1 -1
- package/dist/utils/prismaWrapper.js +6 -2
- package/dist/utils/prismaWrapper.js.map +1 -1
- package/docker-compose.yml +5 -0
- package/package.json +4 -3
- package/prisma/schema.prisma +1 -1
- package/src/index.ts +119 -12
- package/src/lib/config/env.ts +6 -0
- package/src/lib/fileUpload.ts +0 -1
- package/src/lib/googleCloudStorage.ts +17 -0
- package/src/lib/pusher.ts +5 -1
- package/src/lib/redis.ts +56 -0
- package/src/lib/thumbnailGenerator.ts +170 -168
- package/src/middleware/auth.ts +80 -137
- package/src/models/agenda.ts +46 -0
- package/src/models/announcement.ts +134 -0
- package/src/models/assignment.ts +322 -0
- package/src/models/attendance.ts +208 -0
- package/src/models/auth.ts +247 -0
- package/src/models/class.ts +703 -0
- package/src/models/comment.ts +152 -0
- package/src/models/conversation.ts +200 -0
- package/src/models/event.ts +177 -0
- package/src/models/file.ts +129 -0
- package/src/models/folder.ts +225 -0
- package/src/models/labChat.ts +213 -0
- package/src/models/marketing.ts +45 -0
- package/src/models/message.ts +153 -0
- package/src/models/newtonChat.ts +70 -0
- package/src/models/notification.ts +54 -0
- package/src/models/section.ts +98 -0
- package/src/models/user.ts +47 -0
- package/src/models/worksheet.ts +294 -0
- package/src/pipelines/aiLabChat.ts +684 -0
- package/src/{server/pipelines → pipelines}/aiNewtonChat.ts +9 -5
- package/src/{server/pipelines → pipelines}/gradeWorksheet.ts +25 -14
- package/src/routers/agenda.ts +3 -66
- package/src/routers/announcement.ts +54 -495
- package/src/routers/assignment.ts +126 -2018
- package/src/routers/attendance.ts +15 -276
- package/src/routers/auth.ts +79 -442
- package/src/routers/class.ts +263 -1187
- package/src/routers/comment.ts +61 -288
- package/src/routers/conversation.ts +51 -360
- package/src/routers/event.ts +50 -481
- package/src/routers/file.ts +45 -368
- package/src/routers/folder.ts +107 -836
- package/src/routers/labChat.ts +35 -604
- package/src/routers/marketing.ts +35 -77
- package/src/routers/message.ts +54 -567
- package/src/routers/newtonChat.ts +17 -278
- package/src/routers/notifications.ts +32 -82
- package/src/routers/section.ts +46 -330
- package/src/routers/user.ts +49 -227
- package/src/routers/worksheet.ts +215 -503
- package/src/services/agenda.ts +21 -0
- package/src/services/announcement.ts +290 -0
- package/src/services/assignment.ts +1198 -0
- package/src/services/attendance.ts +85 -0
- package/src/services/auth.ts +277 -0
- package/src/services/class.ts +629 -0
- package/src/services/comment.ts +106 -0
- package/src/services/conversation.ts +213 -0
- package/src/services/event.ts +231 -0
- package/src/services/file.ts +167 -0
- package/src/services/folder.ts +316 -0
- package/src/services/labChat.ts +458 -0
- package/src/services/marketing.ts +57 -0
- package/src/services/message.ts +554 -0
- package/src/services/newtonChat.ts +222 -0
- package/src/services/notification.ts +50 -0
- package/src/services/section.ts +283 -0
- package/src/services/user.ts +172 -0
- package/src/services/worksheet.ts +358 -0
- package/src/utils/aiUser.ts +4 -3
- package/src/utils/email.ts +5 -3
- package/src/utils/generateInviteCode.ts +1 -3
- package/src/utils/inference.ts +5 -2
- package/src/utils/logger.ts +3 -1
- package/src/utils/prismaErrorHandler.ts +3 -0
- package/src/utils/prismaWrapper.ts +4 -0
- package/tests/globalSetup.ts +62 -0
- package/tests/helpers.ts +22 -0
- package/tests/middleware/security.test.ts +42 -0
- package/tests/routers/agenda.test.ts +138 -0
- package/tests/routers/announcement.test.ts +490 -0
- package/tests/routers/assignment.test.ts +837 -0
- package/tests/{attendance.test.ts → routers/attendance.test.ts} +6 -14
- package/tests/routers/auth.test.ts +171 -0
- package/tests/{class.test.ts → routers/class.test.ts} +131 -85
- package/tests/routers/comment.test.ts +126 -0
- package/tests/routers/conversation.test.ts +145 -0
- package/tests/{event.test.ts → routers/event.test.ts} +93 -32
- package/tests/routers/folder.test.ts +178 -0
- package/tests/routers/labChat.test.ts +115 -0
- package/tests/routers/marketing.test.ts +59 -0
- package/tests/routers/message.test.ts +123 -0
- package/tests/routers/notification.test.ts +69 -0
- package/tests/{section.test.ts → routers/section.test.ts} +5 -13
- package/tests/server/rateLimit.test.ts +73 -0
- package/tests/setup.ts +18 -92
- package/tests/user.test.ts +9 -31
- package/tests/utils/aiUser.test.ts +22 -0
- package/tests/utils/generateInviteCode.test.ts +24 -0
- package/tests/utils/logger.test.ts +74 -0
- package/tests/utils/prismaErrorHandler.test.ts +101 -0
- package/tests/utils/prismaWrapper.test.ts +82 -0
- package/tests/worksheet.test.ts +181 -0
- package/vitest.config.ts +6 -3
- package/vitest.unit.config.ts +21 -0
- package/TODO.md +0 -2
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/clover.xml +0 -12110
- package/coverage/coverage-final.json +0 -44
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +0 -221
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/server/index.html +0 -116
- package/coverage/server/src/exportType.ts.html +0 -109
- package/coverage/server/src/index.html +0 -161
- package/coverage/server/src/index.ts.html +0 -1702
- package/coverage/server/src/instrument.ts.html +0 -130
- package/coverage/server/src/lib/config/env.ts.html +0 -448
- package/coverage/server/src/lib/config/index.html +0 -116
- package/coverage/server/src/lib/fileUpload.ts.html +0 -1138
- package/coverage/server/src/lib/googleCloudStorage.ts.html +0 -334
- package/coverage/server/src/lib/index.html +0 -206
- package/coverage/server/src/lib/jsonConversion.ts.html +0 -2323
- package/coverage/server/src/lib/jsonStyles.ts.html +0 -193
- package/coverage/server/src/lib/notificationHandler.ts.html +0 -193
- package/coverage/server/src/lib/pusher.ts.html +0 -121
- package/coverage/server/src/lib/thumbnailGenerator.ts.html +0 -592
- package/coverage/server/src/middleware/auth.ts.html +0 -646
- package/coverage/server/src/middleware/index.html +0 -146
- package/coverage/server/src/middleware/logging.ts.html +0 -244
- package/coverage/server/src/middleware/security.ts.html +0 -271
- package/coverage/server/src/routers/_app.ts.html +0 -232
- package/coverage/server/src/routers/agenda.ts.html +0 -319
- package/coverage/server/src/routers/announcement.ts.html +0 -3481
- package/coverage/server/src/routers/assignment.ts.html +0 -7633
- package/coverage/server/src/routers/attendance.ts.html +0 -1030
- package/coverage/server/src/routers/auth.ts.html +0 -1081
- package/coverage/server/src/routers/class.ts.html +0 -3535
- package/coverage/server/src/routers/comment.ts.html +0 -991
- package/coverage/server/src/routers/conversation.ts.html +0 -982
- package/coverage/server/src/routers/event.ts.html +0 -1609
- package/coverage/server/src/routers/file.ts.html +0 -1144
- package/coverage/server/src/routers/folder.ts.html +0 -2797
- package/coverage/server/src/routers/index.html +0 -386
- package/coverage/server/src/routers/labChat.ts.html +0 -3073
- package/coverage/server/src/routers/marketing.ts.html +0 -340
- package/coverage/server/src/routers/message.ts.html +0 -1912
- package/coverage/server/src/routers/notifications.ts.html +0 -364
- package/coverage/server/src/routers/section.ts.html +0 -1120
- package/coverage/server/src/routers/user.ts.html +0 -862
- package/coverage/server/src/routers/worksheet.ts.html +0 -1729
- package/coverage/server/src/trpc.ts.html +0 -397
- package/coverage/server/src/types/index.html +0 -116
- package/coverage/server/src/types/trpc.ts.html +0 -127
- package/coverage/server/src/utils/aiUser.ts.html +0 -280
- package/coverage/server/src/utils/email.ts.html +0 -121
- package/coverage/server/src/utils/generateInviteCode.ts.html +0 -106
- package/coverage/server/src/utils/index.html +0 -206
- package/coverage/server/src/utils/inference.ts.html +0 -709
- package/coverage/server/src/utils/logger.ts.html +0 -664
- package/coverage/server/src/utils/prismaErrorHandler.ts.html +0 -907
- package/coverage/server/src/utils/prismaWrapper.ts.html +0 -355
- package/coverage/server/vitest.config.ts.html +0 -196
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -210
- package/src/lib/notificationHandler.ts +0 -36
- package/src/server/pipelines/aiLabChat.ts +0 -507
- package/tests/announcement.test.ts +0 -164
- package/tests/assignment.test.ts +0 -296
- package/tests/auth.test.ts +0 -48
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"folder.js","sources":["routers/folder.ts"],"sourceRoot":"/","sourcesContent":["import { z } from \"zod\";\nimport { createTRPCRouter, protectedProcedure, protectedClassMemberProcedure, protectedTeacherProcedure } from \"../trpc.js\";\nimport { TRPCError } from \"@trpc/server\";\nimport { prisma } from \"../lib/prisma.js\";\nimport { createDirectUploadFiles, type DirectUploadFile, type UploadedFile } from \"../lib/fileUpload.js\";\nimport { type Folder } from \"@prisma/client\";\n\n// DEPRECATED: This schema is no longer used - files are uploaded directly to GCS\n// Use directFileSchema instead\n\nconst createFolderSchema = z.object({\n name: z.string(),\n parentFolderId: z.string().optional(),\n color: z.string().optional(),\n});\n\n// New schema for direct file uploads (no base64 data)\nconst directFileSchema = z.object({\n name: z.string(),\n type: z.string(),\n size: z.number(),\n // No data field - for direct file uploads\n});\n\nconst uploadFilesToFolderSchema = z.object({\n folderId: z.string(),\n files: z.array(directFileSchema), // Use direct file schema\n});\n\nconst getRootFolderSchema = z.object({\n classId: z.string(),\n});\n\nexport const folderRouter = createTRPCRouter({\n create: protectedTeacherProcedure\n .input(createFolderSchema)\n .mutation(async ({ ctx, input }) => {\n const { classId, name, color } = input;\n let parentFolderId = input.parentFolderId || null;\n\n if (!ctx.user) {\n throw new TRPCError({\n code: \"UNAUTHORIZED\",\n message: \"You must be logged in to create a folder\",\n });\n }\n\n // Verify user is a teacher of the class\n const classData = await prisma.class.findFirst({\n where: {\n id: classId,\n teachers: {\n some: {\n id: ctx.user.id,\n },\n },\n },\n });\n\n if (!classData) {\n throw new TRPCError({\n code: \"NOT_FOUND\",\n message: \"Class not found or you are not a teacher\",\n });\n }\n\n // If no parent folder specified, find or create the class parent folder\n if (!parentFolderId) {\n let classParentFolder = await prisma.folder.findFirst({\n where: {\n classId: classId,\n parentFolderId: null,\n },\n });\n\n if (!classParentFolder) {\n // Create parent folder if it doesn't exist\n classParentFolder = await prisma.folder.create({\n data: {\n name: \"Class Files\",\n class: {\n connect: { id: classId },\n },\n ...(color && {\n color: color,\n }),\n },\n });\n }\n\n parentFolderId = classParentFolder.id;\n } else {\n // Check if specified parent folder exists and belongs to the class\n const parentFolder = await prisma.folder.findFirst({\n where: {\n id: parentFolderId,\n },\n });\n\n if (!parentFolder) {\n throw new TRPCError({\n code: \"NOT_FOUND\",\n message: \"Parent folder not found\",\n });\n }\n }\n\n const folder = await prisma.folder.create({\n data: {\n name,\n ...(parentFolderId && {\n parentFolder: {\n connect: { id: parentFolderId },\n },\n }),\n ...(color && {\n color: color,\n }),\n },\n include: {\n files: {\n select: {\n id: true,\n name: true,\n type: true,\n size: true,\n uploadedAt: true,\n user: {\n select: {\n id: true,\n username: true,\n },\n },\n },\n },\n childFolders: {\n select: {\n id: true,\n name: true,\n _count: {\n select: {\n files: true,\n childFolders: true,\n },\n },\n },\n },\n },\n });\n\n return folder;\n }),\n\n get: protectedClassMemberProcedure\n .input(z.object({\n folderId: z.string(),\n classId: z.string(),\n }))\n .query(async ({ ctx, input }) => {\n const { classId, folderId } = input;\n\n // Get specific folder\n const folder = await prisma.folder.findFirst({\n where: {\n id: folderId,\n },\n include: {\n files: {\n select: {\n id: true,\n name: true,\n type: true,\n size: true,\n uploadedAt: true,\n user: {\n select: {\n id: true,\n username: true,\n },\n },\n },\n orderBy: {\n uploadedAt: 'desc',\n },\n },\n childFolders: {\n select: {\n id: true,\n name: true,\n color: true,\n _count: {\n select: {\n files: true,\n childFolders: true,\n },\n },\n },\n orderBy: {\n name: 'asc',\n },\n },\n parentFolder: {\n select: {\n id: true,\n name: true,\n },\n },\n },\n });\n\n if (!folder) {\n throw new TRPCError({\n code: \"NOT_FOUND\",\n message: \"Folder not found\",\n });\n }\n\n return folder;\n }),\n\n getChildFolders: protectedClassMemberProcedure\n .input(z.object({\n classId: z.string(),\n }))\n .query(async ({ ctx, input }) => {\n const { classId } = input;\n\n // Get the parent folder for the class (or create it if it doesn't exist)\n let parentFolder = await prisma.folder.findFirst({\n where: {\n classId: classId,\n parentFolderId: null,\n },\n });\n\n if (!parentFolder) {\n // Create parent folder if it doesn't exist\n parentFolder = await prisma.folder.create({\n data: {\n name: \"Class Files\",\n class: {\n connect: { id: classId },\n },\n },\n });\n }\n\n // Get all child folders of the parent\n const childFolders = await prisma.folder.findMany({\n where: {\n parentFolderId: parentFolder.id,\n },\n include: {\n files: {\n select: {\n id: true,\n name: true,\n type: true,\n size: true,\n uploadedAt: true,\n user: {\n select: {\n id: true,\n username: true,\n },\n },\n },\n orderBy: {\n uploadedAt: 'desc',\n },\n },\n childFolders: {\n select: {\n id: true,\n name: true,\n _count: {\n select: {\n files: true,\n childFolders: true,\n },\n },\n },\n orderBy: {\n name: 'asc',\n },\n },\n },\n orderBy: {\n name: 'asc',\n },\n });\n\n return childFolders;\n }),\n\n getFolderChildren: protectedClassMemberProcedure\n .input(z.object({\n folderId: z.string(),\n classId: z.string(),\n }))\n .query(async ({ ctx, input }) => {\n const { folderId, classId } = input;\n\n // Get direct children of the specified folder\n const children = await prisma.folder.findMany({\n where: {\n parentFolderId: folderId,\n classId: classId,\n },\n include: {\n files: {\n select: {\n id: true,\n name: true,\n type: true,\n size: true,\n uploadedAt: true,\n user: {\n select: {\n id: true,\n username: true,\n },\n },\n },\n orderBy: {\n uploadedAt: 'desc',\n },\n },\n childFolders: {\n select: {\n id: true,\n name: true,\n color: true,\n _count: {\n select: {\n files: true,\n childFolders: true,\n },\n },\n },\n orderBy: {\n name: 'asc',\n },\n },\n },\n orderBy: {\n name: 'asc',\n },\n });\n\n return children;\n }),\n\n getRootFolder: protectedClassMemberProcedure\n .input(getRootFolderSchema)\n .query(async ({ ctx, input }) => {\n const { classId } = input;\n\n // Get or create the parent folder for the class\n let parentFolder = await prisma.folder.findFirst({\n where: {\n classId: classId,\n parentFolderId: null,\n },\n });\n\n if (!parentFolder) {\n // Create parent folder if it doesn't exist\n parentFolder = await prisma.folder.create({\n data: {\n name: \"Class Files\",\n class: {\n connect: { id: classId },\n },\n },\n });\n }\n\n // Get the parent folder with its files and child folders\n const rootFolder = await prisma.folder.findFirst({\n where: {\n id: parentFolder.id,\n classId: classId,\n },\n include: {\n files: {\n select: {\n id: true,\n name: true,\n type: true,\n size: true,\n uploadedAt: true,\n user: {\n select: {\n id: true,\n username: true,\n },\n },\n },\n orderBy: {\n uploadedAt: 'desc',\n },\n },\n childFolders: {\n select: {\n id: true,\n name: true,\n color: true,\n files: {\n select: {\n id: true,\n },\n },\n childFolders: {\n select: {\n id: true,\n },\n },\n },\n orderBy: {\n name: 'asc',\n },\n },\n },\n });\n\n return rootFolder;\n }),\n\n uploadFiles: protectedTeacherProcedure\n .input(uploadFilesToFolderSchema)\n .mutation(async ({ ctx, input }) => {\n const { classId, folderId, files } = input;\n\n if (!ctx.user) {\n throw new TRPCError({\n code: \"UNAUTHORIZED\",\n message: \"You must be logged in to upload files\",\n });\n }\n\n // Verify user is a teacher of the class\n const classData = await prisma.class.findFirst({\n where: {\n id: classId,\n teachers: {\n some: {\n id: ctx.user.id,\n },\n },\n },\n });\n\n if (!classData) {\n throw new TRPCError({\n code: \"NOT_FOUND\",\n message: \"Class not found or you are not a teacher\",\n });\n }\n\n // Verify folder exists and belongs to the class\n const folder = await prisma.folder.findFirst({\n where: {\n id: folderId,\n },\n });\n\n if (!folder) {\n throw new TRPCError({\n code: \"NOT_FOUND\",\n message: \"Folder not found\",\n });\n }\n\n // Upload files\n const uploadedFiles = await createDirectUploadFiles(files, ctx.user.id, folder.id);\n \n // Create file records in database\n // const fileRecords = await prisma.file.createMany({\n // data: uploadedFiles.map(file => ({\n // name: file.name,\n // type: file.type,\n // size: file.size,\n // path: file.path,\n // userId: ctx.user!.id,\n // folderId: folderId,\n // ...(file.thumbnailId && {\n // thumbnailId: file.thumbnailId,\n // }),\n // })),\n // });\n\n return {\n success: true,\n uploadedCount: uploadedFiles.length,\n };\n }),\n\n delete: protectedTeacherProcedure\n .input(z.object({\n classId: z.string(),\n folderId: z.string(),\n }))\n .mutation(async ({ ctx, input }) => {\n const { classId, folderId } = input;\n\n // Verify user is a teacher of the class\n const classData = await prisma.class.findFirst({\n where: {\n id: classId,\n teachers: {\n some: {\n id: ctx.user!.id,\n },\n },\n },\n });\n\n if (!classData) {\n throw new TRPCError({\n code: \"FORBIDDEN\",\n message: \"Class not found or you are not a teacher\",\n });\n }\n\n // Verify folder exists and belongs to the class\n const folder = await prisma.folder.findFirst({\n where: {\n id: folderId,\n classId: classId,\n },\n include: {\n _count: {\n select: {\n files: true,\n childFolders: true,\n },\n },\n },\n });\n\n if (!folder) {\n throw new TRPCError({\n code: \"NOT_FOUND\",\n message: \"Folder not found\",\n });\n }\n\n // Delete folder and all its contents (cascade)\n await prisma.folder.delete({\n where: {\n id: folderId,\n },\n });\n\n return {\n success: true,\n deletedFiles: folder._count.files,\n deletedFolders: folder._count.childFolders + 1, // +1 for the folder itself\n };\n }),\n\n move: protectedTeacherProcedure\n .input(z.object({\n folderId: z.string(),\n targetParentFolderId: z.string(),\n classId: z.string(),\n }))\n .mutation(async ({ ctx, input }) => {\n const { folderId, targetParentFolderId, classId } = input;\n\n // Verify user is a teacher of the class\n const classData = await prisma.class.findFirst({\n where: {\n id: classId,\n teachers: {\n some: {\n id: ctx.user!.id,\n },\n },\n },\n });\n\n if (!classData) {\n throw new TRPCError({\n code: \"FORBIDDEN\",\n message: \"You must be a teacher of this class to move folders\",\n });\n }\n\n // Get the folder to move\n const folder = await prisma.folder.findFirst({\n where: {\n id: folderId,\n },\n });\n\n if (!folder) {\n throw new TRPCError({\n code: \"NOT_FOUND\",\n message: \"Folder not found\",\n });\n }\n\n // Prevent moving the root folder\n if (!folder.parentFolderId) {\n throw new TRPCError({\n code: \"BAD_REQUEST\",\n message: \"Cannot move the root folder\",\n });\n }\n\n // If target parent folder is specified, verify it exists and belongs to the class\n if (targetParentFolderId) {\n const targetParentFolder = await prisma.folder.findFirst({\n where: {\n id: targetParentFolderId,\n },\n });\n\n if (!targetParentFolder) {\n throw new TRPCError({\n code: \"NOT_FOUND\",\n message: \"Target parent folder not found\",\n });\n }\n\n // Prevent moving a folder into itself or its descendants\n if (targetParentFolderId === folderId) {\n throw new TRPCError({\n code: \"BAD_REQUEST\",\n message: \"Cannot move a folder into itself\",\n });\n }\n\n // Check if target is a descendant of the folder being moved\n let currentParent: any = targetParentFolder;\n while (currentParent?.parentFolderId) {\n if (currentParent.parentFolderId === folderId) {\n throw new TRPCError({\n code: \"BAD_REQUEST\",\n message: \"Cannot move a folder into its descendant\",\n });\n }\n currentParent = await prisma.folder.findUnique({\n where: { id: currentParent.parentFolderId },\n });\n if (!currentParent) break;\n }\n } else {\n // Moving to root - verify the folder isn't already at root\n if (!folder.parentFolderId) {\n throw new TRPCError({\n code: \"BAD_REQUEST\",\n message: \"Folder is already at root level\",\n });\n }\n }\n\n // Move the folder\n const updatedFolder = await prisma.folder.update({\n where: { id: folderId },\n data: {\n parentFolderId: targetParentFolderId,\n },\n include: {\n files: {\n select: {\n id: true,\n name: true,\n type: true,\n size: true,\n uploadedAt: true,\n user: {\n select: {\n id: true,\n username: true,\n },\n },\n },\n },\n childFolders: {\n select: {\n id: true,\n name: true,\n _count: {\n select: {\n files: true,\n childFolders: true,\n },\n },\n },\n },\n },\n });\n\n return updatedFolder;\n }),\n\n update: protectedTeacherProcedure\n .input(z.object({\n folderId: z.string(),\n name: z.string(),\n color: z.string().optional(),\n classId: z.string(),\n }))\n .mutation(async ({ ctx, input }) => {\n const { folderId, name, color, classId } = input;\n\n // Get the folder\n const folder = await prisma.folder.findFirst({\n where: {\n id: folderId,\n },\n });\n\n if (!folder) {\n throw new TRPCError({\n code: \"NOT_FOUND\",\n message: \"Folder not found\",\n });\n }\n\n // Validate new name\n if (!name.trim()) {\n throw new TRPCError({\n code: \"BAD_REQUEST\",\n message: \"Folder name cannot be empty\",\n });\n }\n\n // Rename the folder\n const updatedFolder = await prisma.folder.update({\n where: { id: folderId },\n data: {\n name: name.trim(),\n ...(color && {\n color: color,\n }),\n },\n include: {\n files: {\n select: {\n id: true,\n name: true,\n type: true,\n size: true,\n uploadedAt: true,\n user: {\n select: {\n id: true,\n username: true,\n },\n },\n },\n },\n childFolders: {\n select: {\n id: true,\n name: true,\n _count: {\n select: {\n files: true,\n childFolders: true,\n },\n },\n },\n },\n },\n });\n\n return updatedFolder;\n }),\n getParents: protectedProcedure\n .input(z.object({\n folderId: z.string(),\n }))\n .query(async ({ ctx, input }) => {\n const { folderId } = input;\n\n let currentParent: string | null = folderId;\n const parents: Folder[] = [];\n while (currentParent) {\n const parent = await prisma.folder.findFirst({\n where: {\n id: currentParent,\n },\n });\n\n currentParent = parent?.parentFolderId;\n parents.push(parent);\n }\n\n return parents;\n }),\n\n getFolderUploadUrls: protectedTeacherProcedure\n .input(z.object({\n classId: z.string(),\n folderId: z.string(),\n files: z.array(directFileSchema),\n }))\n .mutation(async ({ ctx, input }) => {\n const { classId, folderId, files } = input;\n\n if (!ctx.user) {\n throw new TRPCError({\n code: \"UNAUTHORIZED\",\n message: \"You must be logged in to upload files\",\n });\n }\n\n // Verify user is a teacher of the class\n const classData = await prisma.class.findFirst({\n where: {\n id: classId,\n teachers: {\n some: {\n id: ctx.user.id,\n },\n },\n },\n });\n\n if (!classData) {\n throw new TRPCError({\n code: \"NOT_FOUND\",\n message: \"Class not found or you are not a teacher\",\n });\n }\n\n // Verify folder exists\n const folder = await prisma.folder.findUnique({\n where: {\n id: folderId,\n },\n });\n\n if (!folder) {\n throw new TRPCError({\n code: \"NOT_FOUND\",\n message: \"Folder not found\",\n });\n }\n\n // Verify folder belongs to the class by traversing parent hierarchy\n // Only root folders have classId, child folders use parentFolderId\n let currentFolder: typeof folder | null = folder;\n let belongsToClass = false;\n\n while (currentFolder) {\n // Check if we've reached a root folder with the matching classId\n if (currentFolder.classId === classId) {\n belongsToClass = true;\n break;\n }\n \n // If this folder has a parent, traverse up\n if (currentFolder.parentFolderId) {\n currentFolder = await prisma.folder.findUnique({\n where: { id: currentFolder.parentFolderId },\n });\n } else {\n // Reached a root folder without matching classId\n break;\n }\n }\n\n if (!belongsToClass) {\n throw new TRPCError({\n code: \"FORBIDDEN\",\n message: \"Folder does not belong to this class\",\n });\n }\n\n // Create direct upload files\n const uploadFiles = await createDirectUploadFiles(files, ctx.user.id, folder.id);\n \n return uploadFiles;\n }),\n\n confirmFolderUpload: protectedTeacherProcedure\n .input(z.object({\n fileId: z.string(),\n uploadSuccess: z.boolean(),\n }))\n .mutation(async ({ ctx, input }) => {\n const { fileId, uploadSuccess } = input;\n\n if (!ctx.user) {\n throw new TRPCError({\n code: \"UNAUTHORIZED\",\n message: \"You must be logged in to confirm uploads\",\n });\n }\n\n // Import the confirmDirectUpload function\n const { confirmDirectUpload } = await import(\"../lib/fileUpload.js\");\n \n // Confirm the upload\n await confirmDirectUpload(fileId, uploadSuccess);\n \n return { success: true };\n }),\n}); "],"names":[],"mappings":"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","debug_id":"d6eae908-ee65-56cc-aff6-6c890bee1f36"}
|
|
1
|
+
{"version":3,"file":"folder.js","sources":["routers/folder.ts"],"sourceRoot":"/","sourcesContent":["import { z } from \"zod\";\nimport {\n createTRPCRouter,\n protectedProcedure,\n protectedClassMemberProcedure,\n protectedTeacherProcedure,\n} from \"../trpc.js\";\nimport {\n createFolderRecord,\n getFolder,\n getChildFolders,\n getFolderChildren,\n getRootFolder,\n uploadFilesToFolder,\n deleteFolderRecord,\n moveFolder,\n updateFolderRecord,\n getFolderParents,\n getFolderUploadUrls,\n} from \"../services/folder.js\";\n\nconst createFolderSchema = z.object({\n name: z.string(),\n parentFolderId: z.string().optional(),\n color: z.string().optional(),\n});\n\nconst directFileSchema = z.object({\n name: z.string(),\n type: z.string(),\n size: z.number(),\n});\n\nconst uploadFilesToFolderSchema = z.object({\n folderId: z.string(),\n files: z.array(directFileSchema),\n});\n\nconst getRootFolderSchema = z.object({\n classId: z.string(),\n});\n\nexport const folderRouter = createTRPCRouter({\n create: protectedTeacherProcedure\n .input(createFolderSchema)\n .mutation(async ({ ctx, input }) => {\n if (!ctx.user) {\n throw new Error(\"You must be logged in to create a folder\");\n }\n return createFolderRecord(ctx.user.id, {\n classId: input.classId,\n name: input.name,\n parentFolderId: input.parentFolderId,\n color: input.color,\n });\n }),\n\n get: protectedClassMemberProcedure\n .input(z.object({ folderId: z.string(), classId: z.string() }))\n .query(({ input }) => getFolder(input.folderId)),\n\n getChildFolders: protectedClassMemberProcedure\n .input(z.object({ classId: z.string() }))\n .query(({ input }) => getChildFolders(input.classId)),\n\n getFolderChildren: protectedClassMemberProcedure\n .input(z.object({ folderId: z.string(), classId: z.string() }))\n .query(({ input }) =>\n getFolderChildren(input.folderId, input.classId)\n ),\n\n getRootFolder: protectedClassMemberProcedure\n .input(getRootFolderSchema)\n .query(({ input }) => getRootFolder(input.classId)),\n\n uploadFiles: protectedTeacherProcedure\n .input(uploadFilesToFolderSchema)\n .mutation(async ({ ctx, input }) => {\n if (!ctx.user) {\n throw new Error(\"You must be logged in to upload files\");\n }\n return uploadFilesToFolder(\n ctx.user.id,\n input.classId,\n input.folderId,\n input.files\n );\n }),\n\n delete: protectedTeacherProcedure\n .input(z.object({ classId: z.string(), folderId: z.string() }))\n .mutation(async ({ ctx, input }) => {\n if (!ctx.user) {\n throw new Error(\"You must be logged in to delete folders\");\n }\n return deleteFolderRecord(ctx.user.id, input.classId, input.folderId);\n }),\n\n move: protectedTeacherProcedure\n .input(\n z.object({\n folderId: z.string(),\n targetParentFolderId: z.string(),\n classId: z.string(),\n })\n )\n .mutation(async ({ ctx, input }) => {\n if (!ctx.user) {\n throw new Error(\"You must be logged in to move folders\");\n }\n return moveFolder(\n ctx.user.id,\n input.folderId,\n input.targetParentFolderId,\n input.classId\n );\n }),\n\n update: protectedTeacherProcedure\n .input(\n z.object({\n folderId: z.string(),\n name: z.string(),\n color: z.string().optional(),\n classId: z.string(),\n })\n )\n .mutation(({ input }) =>\n updateFolderRecord(\n input.folderId,\n input.name,\n input.color,\n input.classId\n )\n ),\n\n getParents: protectedProcedure\n .input(z.object({ folderId: z.string() }))\n .query(({ input }) => getFolderParents(input.folderId)),\n\n getFolderUploadUrls: protectedTeacherProcedure\n .input(\n z.object({\n classId: z.string(),\n folderId: z.string(),\n files: z.array(directFileSchema),\n })\n )\n .mutation(async ({ ctx, input }) => {\n if (!ctx.user) {\n throw new Error(\"You must be logged in to upload files\");\n }\n return getFolderUploadUrls(\n ctx.user.id,\n input.classId,\n input.folderId,\n input.files\n );\n }),\n\n confirmFolderUpload: protectedTeacherProcedure\n .input(\n z.object({\n fileId: z.string(),\n uploadSuccess: z.boolean(),\n })\n )\n .mutation(async ({ ctx, input }) => {\n if (!ctx.user) {\n throw new Error(\"You must be logged in to confirm uploads\");\n }\n const { confirmDirectUpload } = await import(\"../lib/fileUpload.js\");\n await confirmDirectUpload(input.fileId, input.uploadSuccess);\n return { success: true };\n }),\n});\n"],"names":[],"mappings":"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","debug_id":"2a91768b-a0eb-5556-9154-f76d73b01c49"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { z } from
|
|
1
|
+
import { z } from "zod";
|
|
2
2
|
export declare const labChatRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
3
3
|
ctx: import("../trpc.js").Context;
|
|
4
4
|
meta: object;
|
|
@@ -19,8 +19,8 @@ export declare const labChatRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
19
19
|
create: import("@trpc/server").TRPCMutationProcedure<{
|
|
20
20
|
input: {
|
|
21
21
|
context: string;
|
|
22
|
-
title: string;
|
|
23
22
|
classId: string;
|
|
23
|
+
title: string;
|
|
24
24
|
};
|
|
25
25
|
output: {
|
|
26
26
|
class: {
|
|
@@ -51,9 +51,9 @@ export declare const labChatRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
51
51
|
} & {
|
|
52
52
|
type: import(".prisma/client").$Enums.ConversationType;
|
|
53
53
|
id: string;
|
|
54
|
-
name: string | null;
|
|
55
54
|
createdAt: Date;
|
|
56
55
|
updatedAt: Date;
|
|
56
|
+
name: string | null;
|
|
57
57
|
displayInChat: boolean;
|
|
58
58
|
};
|
|
59
59
|
createdBy: {
|
|
@@ -66,10 +66,10 @@ export declare const labChatRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
66
66
|
} & {
|
|
67
67
|
context: string;
|
|
68
68
|
id: string;
|
|
69
|
-
title: string;
|
|
70
|
-
classId: string;
|
|
71
69
|
createdAt: Date;
|
|
72
70
|
updatedAt: Date;
|
|
71
|
+
classId: string;
|
|
72
|
+
title: string;
|
|
73
73
|
conversationId: string;
|
|
74
74
|
createdById: string;
|
|
75
75
|
};
|
|
@@ -80,6 +80,7 @@ export declare const labChatRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
80
80
|
labChatId: string;
|
|
81
81
|
};
|
|
82
82
|
output: {
|
|
83
|
+
pendingGenerationMessageId: string | null;
|
|
83
84
|
class: {
|
|
84
85
|
id: string;
|
|
85
86
|
name: string;
|
|
@@ -108,9 +109,9 @@ export declare const labChatRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
108
109
|
} & {
|
|
109
110
|
type: import(".prisma/client").$Enums.ConversationType;
|
|
110
111
|
id: string;
|
|
111
|
-
name: string | null;
|
|
112
112
|
createdAt: Date;
|
|
113
113
|
updatedAt: Date;
|
|
114
|
+
name: string | null;
|
|
114
115
|
displayInChat: boolean;
|
|
115
116
|
};
|
|
116
117
|
createdBy: {
|
|
@@ -118,15 +119,15 @@ export declare const labChatRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
118
119
|
username: string;
|
|
119
120
|
profile: {
|
|
120
121
|
displayName: string | null;
|
|
122
|
+
profilePicture: string | null;
|
|
121
123
|
} | null;
|
|
122
124
|
};
|
|
123
|
-
} & {
|
|
124
125
|
context: string;
|
|
125
126
|
id: string;
|
|
126
|
-
title: string;
|
|
127
|
-
classId: string;
|
|
128
127
|
createdAt: Date;
|
|
129
128
|
updatedAt: Date;
|
|
129
|
+
classId: string;
|
|
130
|
+
title: string;
|
|
130
131
|
conversationId: string;
|
|
131
132
|
createdById: string;
|
|
132
133
|
};
|
|
@@ -160,10 +161,10 @@ export declare const labChatRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
160
161
|
};
|
|
161
162
|
} & {
|
|
162
163
|
status: import(".prisma/client").$Enums.GenerationStatus | null;
|
|
163
|
-
meta: import("@prisma/client/runtime/library.js").JsonValue | null;
|
|
164
164
|
id: string;
|
|
165
|
-
content: string;
|
|
166
165
|
createdAt: Date;
|
|
166
|
+
meta: import("@prisma/client/runtime/library.js").JsonValue | null;
|
|
167
|
+
content: string;
|
|
167
168
|
conversationId: string;
|
|
168
169
|
senderId: string;
|
|
169
170
|
};
|
|
@@ -204,5 +205,14 @@ export declare const labChatRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
204
205
|
};
|
|
205
206
|
meta: object;
|
|
206
207
|
}>;
|
|
208
|
+
rerunLastResponse: import("@trpc/server").TRPCMutationProcedure<{
|
|
209
|
+
input: {
|
|
210
|
+
labChatId: string;
|
|
211
|
+
};
|
|
212
|
+
output: {
|
|
213
|
+
success: boolean;
|
|
214
|
+
};
|
|
215
|
+
meta: object;
|
|
216
|
+
}>;
|
|
207
217
|
}>>;
|
|
208
218
|
//# sourceMappingURL=labChat.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"labChat.d.ts","sourceRoot":"/","sources":["routers/labChat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"labChat.d.ts","sourceRoot":"/","sources":["routers/labChat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDxB,CAAC"}
|