@studious-lms/server 1.14.0 → 1.15.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/.github/workflows/deploy.yml +1 -1
- package/dist/instrument.js +3 -3
- package/dist/instrument.js.map +1 -1
- package/dist/lib/inferDocumentFormat.d.ts +10 -0
- package/dist/lib/inferDocumentFormat.d.ts.map +1 -0
- package/dist/lib/inferDocumentFormat.js +48 -0
- package/dist/lib/inferDocumentFormat.js.map +1 -0
- package/dist/lib/legal.d.ts +3 -0
- package/dist/lib/legal.d.ts.map +1 -0
- package/dist/lib/legal.js +6 -0
- package/dist/lib/legal.js.map +1 -0
- package/dist/models/announcement.d.ts +47 -45
- package/dist/models/announcement.d.ts.map +1 -1
- package/dist/models/assignment.d.ts +75 -75
- package/dist/models/auth.d.ts +8 -0
- package/dist/models/auth.d.ts.map +1 -1
- package/dist/models/auth.js +4 -2
- package/dist/models/auth.js.map +1 -1
- package/dist/models/class.d.ts +13 -13
- package/dist/models/comment.d.ts +6 -6
- package/dist/models/conversation.d.ts +23 -23
- package/dist/models/event.d.ts +20 -18
- package/dist/models/event.d.ts.map +1 -1
- package/dist/models/file.d.ts +33 -9
- package/dist/models/file.d.ts.map +1 -1
- package/dist/models/labChat.d.ts +4 -4
- package/dist/models/marketing.d.ts +2 -15
- package/dist/models/marketing.d.ts.map +1 -1
- package/dist/models/marketing.js +12 -4
- package/dist/models/marketing.js.map +1 -1
- package/dist/models/message.d.ts +13 -13
- package/dist/models/newtonChat.d.ts +3 -3
- package/dist/models/notification.d.ts +4 -4
- package/dist/models/worksheet.d.ts +121 -121
- package/dist/pipelines/aiLabChat.d.ts +7 -1
- package/dist/pipelines/aiLabChat.d.ts.map +1 -1
- package/dist/pipelines/aiLabChat.js +153 -67
- package/dist/pipelines/aiLabChat.js.map +1 -1
- package/dist/pipelines/aiLabChatContract.d.ts +34 -195
- package/dist/pipelines/aiLabChatContract.d.ts.map +1 -1
- package/dist/pipelines/aiLabChatContract.js +9 -19
- package/dist/pipelines/aiLabChatContract.js.map +1 -1
- package/dist/pipelines/gradeWorksheet.d.ts +6 -6
- package/dist/pipelines/labChatPrompt.d.ts +8 -3
- package/dist/pipelines/labChatPrompt.d.ts.map +1 -1
- package/dist/pipelines/labChatPrompt.js +52 -14
- package/dist/pipelines/labChatPrompt.js.map +1 -1
- package/dist/pipelines/pdfToWorksheet.d.ts +1 -1
- package/dist/routers/_app.d.ts +750 -546
- package/dist/routers/_app.d.ts.map +1 -1
- package/dist/routers/announcement.d.ts +40 -40
- package/dist/routers/assignment.d.ts +131 -121
- package/dist/routers/assignment.d.ts.map +1 -1
- package/dist/routers/auth.d.ts +2 -0
- package/dist/routers/auth.d.ts.map +1 -1
- package/dist/routers/auth.js +15 -2
- package/dist/routers/auth.js.map +1 -1
- package/dist/routers/class.d.ts +12 -8
- package/dist/routers/class.d.ts.map +1 -1
- package/dist/routers/comment.d.ts +5 -5
- package/dist/routers/conversation.d.ts +6 -6
- package/dist/routers/discussion.d.ts +3 -3
- package/dist/routers/embedding.d.ts +6 -2
- package/dist/routers/embedding.d.ts.map +1 -1
- package/dist/routers/embedding.js +44 -36
- package/dist/routers/embedding.js.map +1 -1
- package/dist/routers/event.d.ts +20 -18
- package/dist/routers/event.d.ts.map +1 -1
- package/dist/routers/file.d.ts +2 -2
- package/dist/routers/labChat.d.ts +3 -3
- package/dist/routers/marketing.d.ts +0 -13
- package/dist/routers/marketing.d.ts.map +1 -1
- package/dist/routers/notifications.d.ts +4 -4
- package/dist/routers/school.d.ts +4 -0
- package/dist/routers/school.d.ts.map +1 -1
- package/dist/routers/search.d.ts +2 -2
- package/dist/routers/user.d.ts +89 -0
- package/dist/routers/user.d.ts.map +1 -1
- package/dist/routers/user.js +19 -2
- package/dist/routers/user.js.map +1 -1
- package/dist/routers/worksheet.d.ts +44 -44
- package/dist/routes/aiStream.d.ts.map +1 -1
- package/dist/routes/aiStream.js +41 -11
- package/dist/routes/aiStream.js.map +1 -1
- package/dist/seedDatabase.d.ts +3 -1
- package/dist/seedDatabase.d.ts.map +1 -1
- package/dist/services/aiChatStream.d.ts +20 -0
- package/dist/services/aiChatStream.d.ts.map +1 -1
- package/dist/services/aiChatStream.js +110 -13
- package/dist/services/aiChatStream.js.map +1 -1
- package/dist/services/aiModifierTools.d.ts +0 -16
- package/dist/services/aiModifierTools.d.ts.map +1 -1
- package/dist/services/aiModifierTools.js +112 -3
- package/dist/services/aiModifierTools.js.map +1 -1
- package/dist/services/aiProposalTools.d.ts.map +1 -1
- package/dist/services/aiProposalTools.js +25 -25
- package/dist/services/aiProposalTools.js.map +1 -1
- package/dist/services/aiTools.js +3 -3
- package/dist/services/aiTools.js.map +1 -1
- package/dist/services/announcement.d.ts +34 -34
- package/dist/services/assignment.d.ts +121 -111
- package/dist/services/assignment.d.ts.map +1 -1
- package/dist/services/assignment.js +4 -2
- package/dist/services/assignment.js.map +1 -1
- package/dist/services/auth.d.ts +2 -0
- package/dist/services/auth.d.ts.map +1 -1
- package/dist/services/auth.js +13 -4
- package/dist/services/auth.js.map +1 -1
- package/dist/services/class.d.ts +10 -6
- package/dist/services/class.d.ts.map +1 -1
- package/dist/services/class.js +7 -3
- package/dist/services/class.js.map +1 -1
- package/dist/services/comment.d.ts +5 -5
- package/dist/services/conversation.d.ts +6 -6
- package/dist/services/discussion.d.ts.map +1 -1
- package/dist/services/discussion.js +9 -2
- package/dist/services/discussion.js.map +1 -1
- package/dist/services/embedding.d.ts +19 -1
- package/dist/services/embedding.d.ts.map +1 -1
- package/dist/services/embedding.js +154 -8
- package/dist/services/embedding.js.map +1 -1
- package/dist/services/event.d.ts +20 -18
- package/dist/services/event.d.ts.map +1 -1
- package/dist/services/file.d.ts +4 -4
- package/dist/services/folder.d.ts.map +1 -1
- package/dist/services/folder.js +32 -2
- package/dist/services/folder.js.map +1 -1
- package/dist/services/labChat.d.ts +3 -3
- package/dist/services/marketing.d.ts +1 -14
- package/dist/services/marketing.d.ts.map +1 -1
- package/dist/services/marketing.js +5 -5
- package/dist/services/marketing.js.map +1 -1
- package/dist/services/notification.d.ts +4 -4
- package/dist/services/openaiDocumentGen.d.ts +37 -0
- package/dist/services/openaiDocumentGen.d.ts.map +1 -0
- package/dist/services/openaiDocumentGen.js +262 -0
- package/dist/services/openaiDocumentGen.js.map +1 -0
- package/dist/services/school.d.ts +4 -0
- package/dist/services/school.d.ts.map +1 -1
- package/dist/services/search.d.ts +1 -1
- package/dist/services/search.d.ts.map +1 -1
- package/dist/services/search.js +27 -2
- package/dist/services/search.js.map +1 -1
- package/dist/services/userPrivacy.d.ts +86 -0
- package/dist/services/userPrivacy.d.ts.map +1 -0
- package/dist/services/userPrivacy.js +184 -0
- package/dist/services/userPrivacy.js.map +1 -0
- package/dist/services/worksheet.d.ts +66 -49
- package/dist/services/worksheet.d.ts.map +1 -1
- package/dist/services/worksheet.js +48 -3
- package/dist/services/worksheet.js.map +1 -1
- package/dist/utils/email.d.ts.map +1 -1
- package/dist/utils/email.js +7 -3
- package/dist/utils/email.js.map +1 -1
- package/dist/workers/processors/embedContent.d.ts.map +1 -1
- package/dist/workers/processors/embedContent.js +16 -25
- package/dist/workers/processors/embedContent.js.map +1 -1
- package/package.json +1 -1
- package/prisma/migrations/20260610140000_expand_embedding_source_types/migration.sql +4 -0
- package/prisma/migrations/20260611120000_add_user_terms_acceptance/migration.sql +3 -0
- package/prisma/schema.prisma +6 -0
- package/src/instrument.ts +1 -1
- package/src/lib/inferDocumentFormat.ts +58 -0
- package/src/lib/legal.ts +2 -0
- package/src/models/auth.ts +4 -0
- package/src/models/marketing.ts +10 -2
- package/src/pipelines/aiLabChat.ts +198 -74
- package/src/pipelines/aiLabChatContract.ts +7 -17
- package/src/pipelines/labChatPrompt.ts +64 -14
- package/src/routers/auth.ts +13 -0
- package/src/routers/embedding.ts +44 -39
- package/src/routers/user.ts +26 -0
- package/src/routes/aiStream.ts +47 -9
- package/src/services/aiChatStream.ts +133 -11
- package/src/services/aiModifierTools.ts +154 -1
- package/src/services/aiProposalTools.ts +27 -25
- package/src/services/aiTools.ts +1 -1
- package/src/services/assignment.ts +3 -0
- package/src/services/auth.ts +14 -2
- package/src/services/class.ts +7 -1
- package/src/services/discussion.ts +13 -0
- package/src/services/embedding.ts +167 -6
- package/src/services/folder.ts +31 -0
- package/src/services/marketing.ts +3 -3
- package/src/services/openaiDocumentGen.ts +319 -0
- package/src/services/search.ts +25 -1
- package/src/services/userPrivacy.ts +196 -0
- package/src/services/worksheet.ts +68 -1
- package/src/utils/email.ts +5 -1
- package/src/workers/processors/embedContent.ts +18 -22
- package/tests/helpers/registerInput.ts +20 -0
- package/tests/integration/globalSetup.ts +10 -18
- package/tests/integration/routers/auth.test.ts +13 -18
- package/tests/unit/lib/inferDocumentFormat.test.ts +33 -0
- package/tests/unit/services/aiChatStream.test.ts +92 -0
- package/tests/unit/services/openaiDocumentGen.test.ts +65 -0
package/dist/routers/event.d.ts
CHANGED
|
@@ -28,6 +28,8 @@ export declare const eventRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
28
28
|
email: string;
|
|
29
29
|
password: string;
|
|
30
30
|
verified: boolean;
|
|
31
|
+
termsAcceptedAt: Date | null;
|
|
32
|
+
termsVersion: string | null;
|
|
31
33
|
schoolId: string | null;
|
|
32
34
|
} | null;
|
|
33
35
|
class: ({
|
|
@@ -73,6 +75,11 @@ export declare const eventRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
73
75
|
title: string;
|
|
74
76
|
dueDate: Date;
|
|
75
77
|
maxGrade: number | null;
|
|
78
|
+
attachments: {
|
|
79
|
+
type: string;
|
|
80
|
+
id: string;
|
|
81
|
+
name: string;
|
|
82
|
+
}[];
|
|
76
83
|
instructions: string;
|
|
77
84
|
graded: boolean;
|
|
78
85
|
weight: number;
|
|
@@ -80,11 +87,6 @@ export declare const eventRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
80
87
|
id: string;
|
|
81
88
|
username: string;
|
|
82
89
|
};
|
|
83
|
-
attachments: {
|
|
84
|
-
type: string;
|
|
85
|
-
id: string;
|
|
86
|
-
name: string;
|
|
87
|
-
}[];
|
|
88
90
|
}[];
|
|
89
91
|
} & {
|
|
90
92
|
id: string;
|
|
@@ -177,15 +179,15 @@ export declare const eventRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
177
179
|
id: string;
|
|
178
180
|
name: string;
|
|
179
181
|
} | null;
|
|
180
|
-
teacher: {
|
|
181
|
-
id: string;
|
|
182
|
-
username: string;
|
|
183
|
-
};
|
|
184
182
|
attachments: {
|
|
185
183
|
type: string;
|
|
186
184
|
id: string;
|
|
187
185
|
name: string;
|
|
188
186
|
}[];
|
|
187
|
+
teacher: {
|
|
188
|
+
id: string;
|
|
189
|
+
username: string;
|
|
190
|
+
};
|
|
189
191
|
} & {
|
|
190
192
|
type: import(".prisma/client").$Enums.AssignmentType;
|
|
191
193
|
id: string;
|
|
@@ -226,15 +228,15 @@ export declare const eventRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
226
228
|
id: string;
|
|
227
229
|
name: string;
|
|
228
230
|
} | null;
|
|
229
|
-
teacher: {
|
|
230
|
-
id: string;
|
|
231
|
-
username: string;
|
|
232
|
-
};
|
|
233
231
|
attachments: {
|
|
234
232
|
type: string;
|
|
235
233
|
id: string;
|
|
236
234
|
name: string;
|
|
237
235
|
}[];
|
|
236
|
+
teacher: {
|
|
237
|
+
id: string;
|
|
238
|
+
username: string;
|
|
239
|
+
};
|
|
238
240
|
} & {
|
|
239
241
|
type: import(".prisma/client").$Enums.AssignmentType;
|
|
240
242
|
id: string;
|
|
@@ -279,6 +281,11 @@ export declare const eventRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
279
281
|
title: string;
|
|
280
282
|
dueDate: Date;
|
|
281
283
|
maxGrade: number | null;
|
|
284
|
+
attachments: {
|
|
285
|
+
type: string;
|
|
286
|
+
id: string;
|
|
287
|
+
name: string;
|
|
288
|
+
}[];
|
|
282
289
|
instructions: string;
|
|
283
290
|
graded: boolean;
|
|
284
291
|
weight: number;
|
|
@@ -286,11 +293,6 @@ export declare const eventRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
286
293
|
id: string;
|
|
287
294
|
username: string;
|
|
288
295
|
};
|
|
289
|
-
attachments: {
|
|
290
|
-
type: string;
|
|
291
|
-
id: string;
|
|
292
|
-
name: string;
|
|
293
|
-
}[];
|
|
294
296
|
}[];
|
|
295
297
|
};
|
|
296
298
|
meta: object;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event.d.ts","sourceRoot":"/","sources":["routers/event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAsBxB,eAAO,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"event.d.ts","sourceRoot":"/","sources":["routers/event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAsBxB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDtB,CAAC"}
|
package/dist/routers/file.d.ts
CHANGED
|
@@ -55,6 +55,7 @@ export declare const fileRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
55
55
|
submissionId: string | null;
|
|
56
56
|
thumbnailId: string | null;
|
|
57
57
|
annotationId: string | null;
|
|
58
|
+
conversationId: string | null;
|
|
58
59
|
uploadStatus: import(".prisma/client").$Enums.UploadStatus;
|
|
59
60
|
uploadUrl: string | null;
|
|
60
61
|
uploadExpiresAt: Date | null;
|
|
@@ -66,7 +67,6 @@ export declare const fileRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
66
67
|
cleanupAt: Date | null;
|
|
67
68
|
classDraftId: string | null;
|
|
68
69
|
folderId: string | null;
|
|
69
|
-
conversationId: string | null;
|
|
70
70
|
messageId: string | null;
|
|
71
71
|
announcementId: string | null;
|
|
72
72
|
discussionId: string | null;
|
|
@@ -97,6 +97,7 @@ export declare const fileRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
97
97
|
submissionId: string | null;
|
|
98
98
|
thumbnailId: string | null;
|
|
99
99
|
annotationId: string | null;
|
|
100
|
+
conversationId: string | null;
|
|
100
101
|
uploadStatus: import(".prisma/client").$Enums.UploadStatus;
|
|
101
102
|
uploadUrl: string | null;
|
|
102
103
|
uploadExpiresAt: Date | null;
|
|
@@ -108,7 +109,6 @@ export declare const fileRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
108
109
|
cleanupAt: Date | null;
|
|
109
110
|
classDraftId: string | null;
|
|
110
111
|
folderId: string | null;
|
|
111
|
-
conversationId: string | null;
|
|
112
112
|
messageId: string | null;
|
|
113
113
|
announcementId: string | null;
|
|
114
114
|
discussionId: string | null;
|
|
@@ -42,8 +42,8 @@ export declare const labChatRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
42
42
|
} & {
|
|
43
43
|
id: string;
|
|
44
44
|
userId: string;
|
|
45
|
-
conversationId: string;
|
|
46
45
|
role: import(".prisma/client").$Enums.ConversationRole;
|
|
46
|
+
conversationId: string;
|
|
47
47
|
joinedAt: Date;
|
|
48
48
|
hiddenAt: Date | null;
|
|
49
49
|
lastViewedAt: Date | null;
|
|
@@ -101,8 +101,8 @@ export declare const labChatRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
101
101
|
} & {
|
|
102
102
|
id: string;
|
|
103
103
|
userId: string;
|
|
104
|
-
conversationId: string;
|
|
105
104
|
role: import(".prisma/client").$Enums.ConversationRole;
|
|
105
|
+
conversationId: string;
|
|
106
106
|
joinedAt: Date;
|
|
107
107
|
hiddenAt: Date | null;
|
|
108
108
|
lastViewedAt: Date | null;
|
|
@@ -167,9 +167,9 @@ export declare const labChatRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
167
167
|
id: string;
|
|
168
168
|
createdAt: Date;
|
|
169
169
|
content: string;
|
|
170
|
+
senderId: string;
|
|
170
171
|
conversationId: string;
|
|
171
172
|
runJobId: string | null;
|
|
172
|
-
senderId: string;
|
|
173
173
|
};
|
|
174
174
|
messageCount: number;
|
|
175
175
|
}[];
|
|
@@ -44,25 +44,12 @@ export declare const marketingRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
44
44
|
id: string;
|
|
45
45
|
};
|
|
46
46
|
output: {
|
|
47
|
-
type: string;
|
|
48
47
|
status: string;
|
|
49
48
|
id: string;
|
|
50
|
-
website: string | null;
|
|
51
49
|
name: string;
|
|
52
50
|
submittedAt: Date | null;
|
|
53
|
-
address: string;
|
|
54
51
|
city: string;
|
|
55
52
|
country: string;
|
|
56
|
-
numberOfStudents: number;
|
|
57
|
-
numberOfTeachers: number;
|
|
58
|
-
contactName: string | null;
|
|
59
|
-
contactRole: string | null;
|
|
60
|
-
contactEmail: string | null;
|
|
61
|
-
contactPhone: string | null;
|
|
62
|
-
eligibilityInformation: string | null;
|
|
63
|
-
whyHelp: string | null;
|
|
64
|
-
additionalInformation: string | null;
|
|
65
|
-
reviewedAt: Date | null;
|
|
66
53
|
} | null;
|
|
67
54
|
meta: object;
|
|
68
55
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marketing.d.ts","sourceRoot":"/","sources":["routers/marketing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"marketing.d.ts","sourceRoot":"/","sources":["routers/marketing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmC1B,CAAC"}
|
|
@@ -30,9 +30,9 @@ export declare const notificationRouter: import("@trpc/server").TRPCBuiltRouter<
|
|
|
30
30
|
createdAt: Date;
|
|
31
31
|
title: string;
|
|
32
32
|
content: string;
|
|
33
|
+
senderId: string | null;
|
|
33
34
|
read: boolean;
|
|
34
35
|
receiverId: string;
|
|
35
|
-
senderId: string | null;
|
|
36
36
|
})[];
|
|
37
37
|
meta: object;
|
|
38
38
|
}>;
|
|
@@ -52,9 +52,9 @@ export declare const notificationRouter: import("@trpc/server").TRPCBuiltRouter<
|
|
|
52
52
|
createdAt: Date;
|
|
53
53
|
title: string;
|
|
54
54
|
content: string;
|
|
55
|
+
senderId: string | null;
|
|
55
56
|
read: boolean;
|
|
56
57
|
receiverId: string;
|
|
57
|
-
senderId: string | null;
|
|
58
58
|
};
|
|
59
59
|
meta: object;
|
|
60
60
|
}>;
|
|
@@ -69,9 +69,9 @@ export declare const notificationRouter: import("@trpc/server").TRPCBuiltRouter<
|
|
|
69
69
|
createdAt: Date;
|
|
70
70
|
title: string;
|
|
71
71
|
content: string;
|
|
72
|
+
senderId: string | null;
|
|
72
73
|
read: boolean;
|
|
73
74
|
receiverId: string;
|
|
74
|
-
senderId: string | null;
|
|
75
75
|
};
|
|
76
76
|
meta: object;
|
|
77
77
|
}>;
|
|
@@ -100,9 +100,9 @@ export declare const notificationRouter: import("@trpc/server").TRPCBuiltRouter<
|
|
|
100
100
|
createdAt: Date;
|
|
101
101
|
title: string;
|
|
102
102
|
content: string;
|
|
103
|
+
senderId: string | null;
|
|
103
104
|
read: boolean;
|
|
104
105
|
receiverId: string;
|
|
105
|
-
senderId: string | null;
|
|
106
106
|
};
|
|
107
107
|
meta: object;
|
|
108
108
|
}>;
|
package/dist/routers/school.d.ts
CHANGED
|
@@ -317,6 +317,8 @@ export declare const schoolRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
317
317
|
email: string;
|
|
318
318
|
password: string;
|
|
319
319
|
verified: boolean;
|
|
320
|
+
termsAcceptedAt: Date | null;
|
|
321
|
+
termsVersion: string | null;
|
|
320
322
|
schoolId: string | null;
|
|
321
323
|
}[];
|
|
322
324
|
students: {
|
|
@@ -325,6 +327,8 @@ export declare const schoolRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
325
327
|
email: string;
|
|
326
328
|
password: string;
|
|
327
329
|
verified: boolean;
|
|
330
|
+
termsAcceptedAt: Date | null;
|
|
331
|
+
termsVersion: string | null;
|
|
328
332
|
schoolId: string | null;
|
|
329
333
|
}[];
|
|
330
334
|
} & {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"school.d.ts","sourceRoot":"/","sources":["routers/school.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmCxB,eAAO,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"school.d.ts","sourceRoot":"/","sources":["routers/school.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmCxB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8KvB,CAAC"}
|
package/dist/routers/search.d.ts
CHANGED
|
@@ -25,7 +25,7 @@ export declare const searchRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
25
25
|
query: string;
|
|
26
26
|
results: {
|
|
27
27
|
id: string;
|
|
28
|
-
type: "class" | "file" | "assignment" | "announcement" | "section" | "event" | "worksheet" | "syllabus";
|
|
28
|
+
type: "class" | "file" | "assignment" | "announcement" | "discussion" | "submission" | "section" | "event" | "worksheet" | "syllabus";
|
|
29
29
|
title: string;
|
|
30
30
|
subtitle: string;
|
|
31
31
|
classId: string;
|
|
@@ -46,7 +46,7 @@ export declare const searchRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
46
46
|
query: string;
|
|
47
47
|
results: {
|
|
48
48
|
id: string;
|
|
49
|
-
type: "class" | "file" | "assignment" | "announcement" | "section" | "event" | "worksheet" | "syllabus";
|
|
49
|
+
type: "class" | "file" | "assignment" | "announcement" | "discussion" | "submission" | "section" | "event" | "worksheet" | "syllabus";
|
|
50
50
|
title: string;
|
|
51
51
|
subtitle: string;
|
|
52
52
|
classId: string;
|
package/dist/routers/user.d.ts
CHANGED
|
@@ -76,5 +76,94 @@ export declare const userRouter: import("@trpc/server").TRPCBuiltRouter<{
|
|
|
76
76
|
};
|
|
77
77
|
meta: object;
|
|
78
78
|
}>;
|
|
79
|
+
exportData: import("@trpc/server").TRPCQueryProcedure<{
|
|
80
|
+
input: void;
|
|
81
|
+
output: {
|
|
82
|
+
exportedAt: string;
|
|
83
|
+
user: {
|
|
84
|
+
id: string;
|
|
85
|
+
username: string;
|
|
86
|
+
email: string;
|
|
87
|
+
verified: boolean;
|
|
88
|
+
termsAcceptedAt: Date | null;
|
|
89
|
+
termsVersion: string | null;
|
|
90
|
+
profile: {
|
|
91
|
+
id: string;
|
|
92
|
+
userId: string;
|
|
93
|
+
displayName: string | null;
|
|
94
|
+
bio: string | null;
|
|
95
|
+
location: string | null;
|
|
96
|
+
website: string | null;
|
|
97
|
+
createdAt: Date;
|
|
98
|
+
updatedAt: Date;
|
|
99
|
+
profilePicture: string | null;
|
|
100
|
+
profilePictureThumbnail: string | null;
|
|
101
|
+
} | null;
|
|
102
|
+
teacherIn: {
|
|
103
|
+
section: string;
|
|
104
|
+
id: string;
|
|
105
|
+
name: string;
|
|
106
|
+
subject: string;
|
|
107
|
+
}[];
|
|
108
|
+
studentIn: {
|
|
109
|
+
section: string;
|
|
110
|
+
id: string;
|
|
111
|
+
name: string;
|
|
112
|
+
subject: string;
|
|
113
|
+
}[];
|
|
114
|
+
submissions: {
|
|
115
|
+
assignment: {
|
|
116
|
+
id: string;
|
|
117
|
+
classId: string;
|
|
118
|
+
title: string;
|
|
119
|
+
};
|
|
120
|
+
id: string;
|
|
121
|
+
createdAt: Date;
|
|
122
|
+
extendedResponse: string | null;
|
|
123
|
+
gradeReceived: number | null;
|
|
124
|
+
submittedAt: Date | null;
|
|
125
|
+
}[];
|
|
126
|
+
events: {
|
|
127
|
+
id: string;
|
|
128
|
+
location: string | null;
|
|
129
|
+
name: string | null;
|
|
130
|
+
startTime: Date;
|
|
131
|
+
endTime: Date;
|
|
132
|
+
remarks: string | null;
|
|
133
|
+
}[];
|
|
134
|
+
notificationsReceived: {
|
|
135
|
+
id: string;
|
|
136
|
+
createdAt: Date;
|
|
137
|
+
title: string;
|
|
138
|
+
content: string;
|
|
139
|
+
read: boolean;
|
|
140
|
+
}[];
|
|
141
|
+
schoolMemberships: {
|
|
142
|
+
status: import(".prisma/client").$Enums.SchoolMembershipStatus;
|
|
143
|
+
school: {
|
|
144
|
+
id: string;
|
|
145
|
+
name: string;
|
|
146
|
+
};
|
|
147
|
+
role: import(".prisma/client").$Enums.SchoolMembershipRole;
|
|
148
|
+
}[];
|
|
149
|
+
sentMessages: {
|
|
150
|
+
id: string;
|
|
151
|
+
createdAt: Date;
|
|
152
|
+
content: string;
|
|
153
|
+
conversationId: string;
|
|
154
|
+
}[];
|
|
155
|
+
};
|
|
156
|
+
};
|
|
157
|
+
meta: object;
|
|
158
|
+
}>;
|
|
159
|
+
deleteAccount: import("@trpc/server").TRPCMutationProcedure<{
|
|
160
|
+
input: {
|
|
161
|
+
confirmUsername: string;
|
|
162
|
+
};
|
|
163
|
+
output: {
|
|
164
|
+
success: boolean;
|
|
165
|
+
};
|
|
166
|
+
meta: object;
|
|
167
|
+
}>;
|
|
79
168
|
}>>;
|
|
80
169
|
//# sourceMappingURL=user.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.d.ts","sourceRoot":"/","sources":["routers/user.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"/","sources":["routers/user.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAqExB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCrB,CAAC"}
|
package/dist/routers/user.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="10c9f9c2-5706-58e3-b2db-3ca52ac3e956")}catch(e){}}();
|
|
3
|
+
import { TRPCError } from "@trpc/server";
|
|
3
4
|
import { z } from "zod";
|
|
4
5
|
import { createTRPCRouter, protectedProcedure } from "../trpc.js";
|
|
5
6
|
import { getProfile, updateProfile, getUploadUrl, } from "../services/user.js";
|
|
7
|
+
import { deleteUserAccount, exportUserData, } from "../services/userPrivacy.js";
|
|
6
8
|
const fileUploadSchema = z.object({
|
|
7
9
|
filePath: z.string().min(1, "File path is required"),
|
|
8
10
|
fileName: z.string().min(1, "File name is required"),
|
|
@@ -57,6 +59,21 @@ export const userRouter = createTRPCRouter({
|
|
|
57
59
|
getUploadUrl: protectedProcedure
|
|
58
60
|
.input(getUploadUrlSchema)
|
|
59
61
|
.mutation(({ ctx, input }) => getUploadUrl(ctx.user.id, input.fileName, input.fileType)),
|
|
62
|
+
exportData: protectedProcedure.query(({ ctx }) => exportUserData(ctx.user.id)),
|
|
63
|
+
deleteAccount: protectedProcedure
|
|
64
|
+
.input(z.object({
|
|
65
|
+
confirmUsername: z.string().min(1),
|
|
66
|
+
}))
|
|
67
|
+
.mutation(async ({ ctx, input }) => {
|
|
68
|
+
const profile = await getProfile(ctx.user.id);
|
|
69
|
+
if (profile.username !== input.confirmUsername) {
|
|
70
|
+
throw new TRPCError({
|
|
71
|
+
code: "BAD_REQUEST",
|
|
72
|
+
message: "Username confirmation does not match",
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
return deleteUserAccount(ctx.user.id);
|
|
76
|
+
}),
|
|
60
77
|
});
|
|
61
78
|
//# sourceMappingURL=user.js.map
|
|
62
|
-
//# debugId=
|
|
79
|
+
//# debugId=10c9f9c2-5706-58e3-b2db-3ca52ac3e956
|
package/dist/routers/user.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.js","sources":["routers/user.ts"],"sourceRoot":"/","sourcesContent":["import { z } from \"zod\";\nimport { createTRPCRouter, protectedProcedure } from \"../trpc.js\";\nimport {\n getProfile,\n updateProfile,\n getUploadUrl,\n} from \"../services/user.js\";\n\nconst fileUploadSchema = z.object({\n filePath: z.string().min(1, \"File path is required\"),\n fileName: z.string().min(1, \"File name is required\"),\n fileType: z\n .string()\n .regex(\n /^image\\/(jpeg|jpg|png|gif|webp)$/i,\n \"Only image files (JPEG, PNG, GIF, WebP) are allowed\"\n ),\n fileSize: z.number().max(5 * 1024 * 1024, \"File size must be less than 5MB\"),\n});\n\nconst dicebearSchema = z.object({\n url: z.string().url(\"Invalid DiceBear avatar URL\"),\n});\n\nconst profileSchema = z.object({\n displayName: z\n .string()\n .nullable()\n .optional()\n .transform((val) => (val === null ? undefined : val)),\n bio: z\n .string()\n .nullable()\n .optional()\n .transform((val) => (val === null ? undefined : val)),\n location: z\n .string()\n .nullable()\n .optional()\n .transform((val) => (val === null ? undefined : val)),\n website: z\n .union([\n z.string().url(),\n z.literal(\"\"),\n z.null().transform(() => undefined),\n ])\n .optional(),\n});\n\nconst updateProfileSchema = z.object({\n profile: profileSchema.optional(),\n profilePicture: fileUploadSchema.optional(),\n dicebearAvatar: dicebearSchema.optional(),\n});\n\nconst getUploadUrlSchema = z.object({\n fileName: z.string().min(1, \"File name is required\"),\n fileType: z\n .string()\n .regex(\n /^image\\/(jpeg|jpg|png|gif|webp)$/i,\n \"Only image files are allowed\"\n ),\n});\n\nexport const userRouter = createTRPCRouter({\n getProfile: protectedProcedure.query(({ ctx }) =>\n getProfile(ctx.user!.id)\n ),\n\n updateProfile: protectedProcedure\n .input(updateProfileSchema)\n .mutation(({ ctx, input }) =>\n updateProfile(ctx.user!.id, input)\n ),\n\n getUploadUrl: protectedProcedure\n .input(getUploadUrlSchema)\n .mutation(({ ctx, input }) =>\n getUploadUrl(ctx.user!.id, input.fileName, input.fileType)\n ),\n});\n"],"names":[],"mappings":";;AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EACL,UAAU,EACV,aAAa,EACb,YAAY,GACb,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"user.js","sources":["routers/user.ts"],"sourceRoot":"/","sourcesContent":["import { TRPCError } from \"@trpc/server\";\nimport { z } from \"zod\";\nimport { createTRPCRouter, protectedProcedure } from \"../trpc.js\";\nimport {\n getProfile,\n updateProfile,\n getUploadUrl,\n} from \"../services/user.js\";\nimport {\n deleteUserAccount,\n exportUserData,\n} from \"../services/userPrivacy.js\";\n\nconst fileUploadSchema = z.object({\n filePath: z.string().min(1, \"File path is required\"),\n fileName: z.string().min(1, \"File name is required\"),\n fileType: z\n .string()\n .regex(\n /^image\\/(jpeg|jpg|png|gif|webp)$/i,\n \"Only image files (JPEG, PNG, GIF, WebP) are allowed\"\n ),\n fileSize: z.number().max(5 * 1024 * 1024, \"File size must be less than 5MB\"),\n});\n\nconst dicebearSchema = z.object({\n url: z.string().url(\"Invalid DiceBear avatar URL\"),\n});\n\nconst profileSchema = z.object({\n displayName: z\n .string()\n .nullable()\n .optional()\n .transform((val) => (val === null ? undefined : val)),\n bio: z\n .string()\n .nullable()\n .optional()\n .transform((val) => (val === null ? undefined : val)),\n location: z\n .string()\n .nullable()\n .optional()\n .transform((val) => (val === null ? undefined : val)),\n website: z\n .union([\n z.string().url(),\n z.literal(\"\"),\n z.null().transform(() => undefined),\n ])\n .optional(),\n});\n\nconst updateProfileSchema = z.object({\n profile: profileSchema.optional(),\n profilePicture: fileUploadSchema.optional(),\n dicebearAvatar: dicebearSchema.optional(),\n});\n\nconst getUploadUrlSchema = z.object({\n fileName: z.string().min(1, \"File name is required\"),\n fileType: z\n .string()\n .regex(\n /^image\\/(jpeg|jpg|png|gif|webp)$/i,\n \"Only image files are allowed\"\n ),\n});\n\nexport const userRouter = createTRPCRouter({\n getProfile: protectedProcedure.query(({ ctx }) =>\n getProfile(ctx.user!.id)\n ),\n\n updateProfile: protectedProcedure\n .input(updateProfileSchema)\n .mutation(({ ctx, input }) =>\n updateProfile(ctx.user!.id, input)\n ),\n\n getUploadUrl: protectedProcedure\n .input(getUploadUrlSchema)\n .mutation(({ ctx, input }) =>\n getUploadUrl(ctx.user!.id, input.fileName, input.fileType)\n ),\n\n exportData: protectedProcedure.query(({ ctx }) =>\n exportUserData(ctx.user!.id),\n ),\n\n deleteAccount: protectedProcedure\n .input(\n z.object({\n confirmUsername: z.string().min(1),\n }),\n )\n .mutation(async ({ ctx, input }) => {\n const profile = await getProfile(ctx.user!.id);\n if (profile.username !== input.confirmUsername) {\n throw new TRPCError({\n code: \"BAD_REQUEST\",\n message: \"Username confirmation does not match\",\n });\n }\n return deleteUserAccount(ctx.user!.id);\n }),\n});\n"],"names":[],"mappings":"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","debug_id":"10c9f9c2-5706-58e3-b2db-3ca52ac3e956"}
|