@studious-lms/server 1.13.0 → 1.14.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.
Files changed (306) hide show
  1. package/.dockerignore +28 -0
  2. package/.env.example +5 -0
  3. package/.github/workflows/deploy.yml +123 -0
  4. package/Dockerfile +54 -0
  5. package/dist/index.js +5 -2
  6. package/dist/index.js.map +1 -1
  7. package/dist/lib/config/cors.d.ts.map +1 -1
  8. package/dist/lib/config/cors.js +31 -11
  9. package/dist/lib/config/cors.js.map +1 -1
  10. package/dist/lib/config/env.d.ts +17 -0
  11. package/dist/lib/config/env.d.ts.map +1 -1
  12. package/dist/lib/config/env.js +8 -2
  13. package/dist/lib/config/env.js.map +1 -1
  14. package/dist/lib/googleCloudStorage.d.ts +10 -0
  15. package/dist/lib/googleCloudStorage.d.ts.map +1 -1
  16. package/dist/lib/googleCloudStorage.js +22 -2
  17. package/dist/lib/googleCloudStorage.js.map +1 -1
  18. package/dist/lib/prisma.d.ts +104 -5
  19. package/dist/lib/prisma.d.ts.map +1 -1
  20. package/dist/lib/prisma.js +33 -2
  21. package/dist/lib/prisma.js.map +1 -1
  22. package/dist/models/agenda.d.ts +20 -20
  23. package/dist/models/announcement.d.ts +177 -69
  24. package/dist/models/announcement.d.ts.map +1 -1
  25. package/dist/models/assignment.d.ts +551 -353
  26. package/dist/models/assignment.d.ts.map +1 -1
  27. package/dist/models/attendance.d.ts +197 -71
  28. package/dist/models/attendance.d.ts.map +1 -1
  29. package/dist/models/auth.d.ts +348 -114
  30. package/dist/models/auth.d.ts.map +1 -1
  31. package/dist/models/class.d.ts +324 -198
  32. package/dist/models/class.d.ts.map +1 -1
  33. package/dist/models/class.js +2 -2
  34. package/dist/models/class.js.map +1 -1
  35. package/dist/models/cloudStorage.d.ts +146 -56
  36. package/dist/models/cloudStorage.d.ts.map +1 -1
  37. package/dist/models/comment.d.ts +267 -115
  38. package/dist/models/comment.d.ts.map +1 -1
  39. package/dist/models/conversation.d.ts +199 -73
  40. package/dist/models/conversation.d.ts.map +1 -1
  41. package/dist/models/department.d.ts +196 -70
  42. package/dist/models/department.d.ts.map +1 -1
  43. package/dist/models/event.d.ts +287 -125
  44. package/dist/models/event.d.ts.map +1 -1
  45. package/dist/models/file.d.ts +389 -263
  46. package/dist/models/file.d.ts.map +1 -1
  47. package/dist/models/folder.d.ts +433 -181
  48. package/dist/models/folder.d.ts.map +1 -1
  49. package/dist/models/labChat.d.ts +209 -83
  50. package/dist/models/labChat.d.ts.map +1 -1
  51. package/dist/models/marketing.d.ts +80 -26
  52. package/dist/models/marketing.d.ts.map +1 -1
  53. package/dist/models/message.d.ts +95 -41
  54. package/dist/models/message.d.ts.map +1 -1
  55. package/dist/models/newtonChat.d.ts +83 -29
  56. package/dist/models/newtonChat.d.ts.map +1 -1
  57. package/dist/models/notification.d.ts +61 -25
  58. package/dist/models/notification.d.ts.map +1 -1
  59. package/dist/models/school.d.ts +349 -133
  60. package/dist/models/school.d.ts.map +1 -1
  61. package/dist/models/section.d.ts +216 -72
  62. package/dist/models/section.d.ts.map +1 -1
  63. package/dist/models/tag.d.ts +156 -48
  64. package/dist/models/tag.d.ts.map +1 -1
  65. package/dist/models/user.d.ts +82 -28
  66. package/dist/models/user.d.ts.map +1 -1
  67. package/dist/models/worksheet.d.ts +1020 -411
  68. package/dist/models/worksheet.d.ts.map +1 -1
  69. package/dist/models/worksheet.js +8 -2
  70. package/dist/models/worksheet.js.map +1 -1
  71. package/dist/pipelines/aiLabChat.d.ts +0 -8
  72. package/dist/pipelines/aiLabChat.d.ts.map +1 -1
  73. package/dist/pipelines/aiLabChat.js +50 -67
  74. package/dist/pipelines/aiLabChat.js.map +1 -1
  75. package/dist/pipelines/aiLabChatContract.d.ts +393 -388
  76. package/dist/pipelines/aiLabChatContract.d.ts.map +1 -1
  77. package/dist/pipelines/aiLabChatContract.js +63 -69
  78. package/dist/pipelines/aiLabChatContract.js.map +1 -1
  79. package/dist/pipelines/aiNewtonChat.d.ts.map +1 -1
  80. package/dist/pipelines/aiNewtonChat.js +41 -41
  81. package/dist/pipelines/aiNewtonChat.js.map +1 -1
  82. package/dist/pipelines/gradeWorksheet.d.ts +8 -8
  83. package/dist/pipelines/labChatPrompt.d.ts +10 -8
  84. package/dist/pipelines/labChatPrompt.d.ts.map +1 -1
  85. package/dist/pipelines/labChatPrompt.js +47 -67
  86. package/dist/pipelines/labChatPrompt.js.map +1 -1
  87. package/dist/pipelines/pdfToWorksheet.d.ts +2 -2
  88. package/dist/routers/_app.d.ts +2203 -1957
  89. package/dist/routers/_app.d.ts.map +1 -1
  90. package/dist/routers/_app.js +4 -2
  91. package/dist/routers/_app.js.map +1 -1
  92. package/dist/routers/admin.d.ts +13 -13
  93. package/dist/routers/agenda.d.ts +18 -18
  94. package/dist/routers/announcement.d.ts +32 -32
  95. package/dist/routers/assignment.d.ts +335 -335
  96. package/dist/routers/attendance.d.ts +10 -10
  97. package/dist/routers/auth.d.ts +2 -2
  98. package/dist/routers/class.d.ts +147 -147
  99. package/dist/routers/comment.d.ts +22 -22
  100. package/dist/routers/conversation.d.ts +17 -17
  101. package/dist/routers/department.d.ts +34 -34
  102. package/dist/routers/discussion.d.ts +65 -53
  103. package/dist/routers/discussion.d.ts.map +1 -1
  104. package/dist/routers/discussion.js +6 -2
  105. package/dist/routers/discussion.js.map +1 -1
  106. package/dist/routers/embedding.d.ts +69 -0
  107. package/dist/routers/embedding.d.ts.map +1 -0
  108. package/dist/routers/embedding.js +143 -0
  109. package/dist/routers/embedding.js.map +1 -0
  110. package/dist/routers/event.d.ts +39 -39
  111. package/dist/routers/file.d.ts +12 -12
  112. package/dist/routers/folder.d.ts +38 -38
  113. package/dist/routers/labChat.d.ts +19 -19
  114. package/dist/routers/marketing.d.ts +2 -2
  115. package/dist/routers/message.d.ts +13 -13
  116. package/dist/routers/newtonChat.d.ts +4 -4
  117. package/dist/routers/notifications.d.ts +9 -9
  118. package/dist/routers/permissions.d.ts +14 -14
  119. package/dist/routers/school.d.ts +55 -55
  120. package/dist/routers/search.d.ts +22 -1
  121. package/dist/routers/search.d.ts.map +1 -1
  122. package/dist/routers/search.js +9 -3
  123. package/dist/routers/search.js.map +1 -1
  124. package/dist/routers/section.d.ts +4 -4
  125. package/dist/routers/studentProgress.d.ts +1 -1
  126. package/dist/routers/tag.d.ts +7 -7
  127. package/dist/routers/user.d.ts +10 -10
  128. package/dist/routers/worksheet.d.ts +95 -57
  129. package/dist/routers/worksheet.d.ts.map +1 -1
  130. package/dist/routers/worksheet.js +26 -2
  131. package/dist/routers/worksheet.js.map +1 -1
  132. package/dist/routes/aiStream.d.ts +2 -0
  133. package/dist/routes/aiStream.d.ts.map +1 -0
  134. package/dist/routes/aiStream.js +696 -0
  135. package/dist/routes/aiStream.js.map +1 -0
  136. package/dist/seedDatabase.d.ts +2 -2
  137. package/dist/seedDatabase.js +6 -6
  138. package/dist/seedDatabase.js.map +1 -1
  139. package/dist/services/adminInstitution.d.ts +8 -8
  140. package/dist/services/adminRunJob.d.ts +4 -4
  141. package/dist/services/agenda.d.ts +18 -18
  142. package/dist/services/aiChatStream.d.ts +68 -0
  143. package/dist/services/aiChatStream.d.ts.map +1 -0
  144. package/dist/services/aiChatStream.js +157 -0
  145. package/dist/services/aiChatStream.js.map +1 -0
  146. package/dist/services/aiModifierTools.d.ts +32 -0
  147. package/dist/services/aiModifierTools.d.ts.map +1 -0
  148. package/dist/services/aiModifierTools.js +165 -0
  149. package/dist/services/aiModifierTools.js.map +1 -0
  150. package/dist/services/aiProposalTools.d.ts +32 -0
  151. package/dist/services/aiProposalTools.d.ts.map +1 -0
  152. package/dist/services/aiProposalTools.js +207 -0
  153. package/dist/services/aiProposalTools.js.map +1 -0
  154. package/dist/services/aiStream.d.ts +22 -0
  155. package/dist/services/aiStream.d.ts.map +1 -0
  156. package/dist/services/aiStream.js +142 -0
  157. package/dist/services/aiStream.js.map +1 -0
  158. package/dist/services/aiTools.d.ts +16 -0
  159. package/dist/services/aiTools.d.ts.map +1 -0
  160. package/dist/services/aiTools.js +271 -0
  161. package/dist/services/aiTools.js.map +1 -0
  162. package/dist/services/announcement.d.ts +12 -12
  163. package/dist/services/announcement.d.ts.map +1 -1
  164. package/dist/services/announcement.js +7 -2
  165. package/dist/services/announcement.js.map +1 -1
  166. package/dist/services/assignment.d.ts +293 -293
  167. package/dist/services/assignment.d.ts.map +1 -1
  168. package/dist/services/assignment.js +28 -9
  169. package/dist/services/assignment.js.map +1 -1
  170. package/dist/services/attendance.d.ts +10 -10
  171. package/dist/services/auth.d.ts +2 -2
  172. package/dist/services/class.d.ts +138 -138
  173. package/dist/services/class.d.ts.map +1 -1
  174. package/dist/services/class.js +19 -3
  175. package/dist/services/class.js.map +1 -1
  176. package/dist/services/comment.d.ts +22 -22
  177. package/dist/services/conversation.d.ts +17 -17
  178. package/dist/services/department.d.ts +33 -33
  179. package/dist/services/discussion.d.ts +58 -58
  180. package/dist/services/discussion.d.ts.map +1 -1
  181. package/dist/services/discussion.js +8 -8
  182. package/dist/services/discussion.js.map +1 -1
  183. package/dist/services/discussionSummary.d.ts +21 -0
  184. package/dist/services/discussionSummary.d.ts.map +1 -0
  185. package/dist/services/discussionSummary.js +179 -0
  186. package/dist/services/discussionSummary.js.map +1 -0
  187. package/dist/services/embedding.d.ts +67 -0
  188. package/dist/services/embedding.d.ts.map +1 -0
  189. package/dist/services/embedding.js +226 -0
  190. package/dist/services/embedding.js.map +1 -0
  191. package/dist/services/event.d.ts +37 -37
  192. package/dist/services/file.d.ts +24 -24
  193. package/dist/services/folder.d.ts +36 -36
  194. package/dist/services/labChat.d.ts +19 -19
  195. package/dist/services/marketing.d.ts +2 -2
  196. package/dist/services/message.d.ts +11 -11
  197. package/dist/services/message.d.ts.map +1 -1
  198. package/dist/services/message.js +2 -2
  199. package/dist/services/message.js.map +1 -1
  200. package/dist/services/newtonChat.d.ts +4 -4
  201. package/dist/services/notification.d.ts +9 -9
  202. package/dist/services/notification.d.ts.map +1 -1
  203. package/dist/services/permissions.d.ts +14 -14
  204. package/dist/services/school.d.ts +50 -50
  205. package/dist/services/search.d.ts +12 -0
  206. package/dist/services/search.d.ts.map +1 -1
  207. package/dist/services/search.js +120 -2
  208. package/dist/services/search.js.map +1 -1
  209. package/dist/services/section.d.ts +3 -3
  210. package/dist/services/tag.d.ts +4 -4
  211. package/dist/services/user.d.ts +4 -4
  212. package/dist/services/user.d.ts.map +1 -1
  213. package/dist/services/user.js +10 -15
  214. package/dist/services/user.js.map +1 -1
  215. package/dist/services/worksheet.d.ts +60 -48
  216. package/dist/services/worksheet.d.ts.map +1 -1
  217. package/dist/services/worksheet.js +11 -4
  218. package/dist/services/worksheet.js.map +1 -1
  219. package/dist/utils/streamBroadcast.d.ts +11 -0
  220. package/dist/utils/streamBroadcast.d.ts.map +1 -0
  221. package/dist/utils/streamBroadcast.js +32 -0
  222. package/dist/utils/streamBroadcast.js.map +1 -0
  223. package/dist/workers/connection.d.ts +15 -0
  224. package/dist/workers/connection.d.ts.map +1 -1
  225. package/dist/workers/connection.js +20 -2
  226. package/dist/workers/connection.js.map +1 -1
  227. package/dist/workers/index.js +4 -2
  228. package/dist/workers/index.js.map +1 -1
  229. package/dist/workers/processors/createRunJobWorker.d.ts.map +1 -1
  230. package/dist/workers/processors/createRunJobWorker.js +31 -8
  231. package/dist/workers/processors/createRunJobWorker.js.map +1 -1
  232. package/dist/workers/processors/embedContent.d.ts +8 -0
  233. package/dist/workers/processors/embedContent.d.ts.map +1 -0
  234. package/dist/workers/processors/embedContent.js +76 -0
  235. package/dist/workers/processors/embedContent.js.map +1 -0
  236. package/dist/workers/queues.d.ts +6 -0
  237. package/dist/workers/queues.d.ts.map +1 -1
  238. package/dist/workers/queues.js +5 -3
  239. package/dist/workers/queues.js.map +1 -1
  240. package/package.json +5 -1
  241. package/prisma/migrations/20260609215135_init/migration.sql +1412 -0
  242. package/prisma/migrations/20260610130000_add_worksheet_tags/migration.sql +13 -0
  243. package/prisma/schema.prisma +38 -7
  244. package/src/index.ts +4 -0
  245. package/src/lib/config/cors.ts +32 -9
  246. package/src/lib/config/env.ts +6 -0
  247. package/src/lib/googleCloudStorage.ts +21 -0
  248. package/src/lib/prisma.ts +40 -1
  249. package/src/models/class.ts +3 -2
  250. package/src/models/worksheet.ts +5 -2
  251. package/src/pipelines/aiLabChat.ts +54 -79
  252. package/src/pipelines/aiLabChatContract.ts +69 -69
  253. package/src/pipelines/aiNewtonChat.ts +46 -43
  254. package/src/pipelines/labChatPrompt.ts +63 -88
  255. package/src/routers/_app.ts +2 -0
  256. package/src/routers/discussion.ts +7 -0
  257. package/src/routers/embedding.ts +159 -0
  258. package/src/routers/search.ts +10 -1
  259. package/src/routers/worksheet.ts +27 -0
  260. package/src/routes/aiStream.ts +789 -0
  261. package/src/seedDatabase.ts +4 -4
  262. package/src/services/aiChatStream.ts +219 -0
  263. package/src/services/aiModifierTools.ts +188 -0
  264. package/src/services/aiProposalTools.ts +272 -0
  265. package/src/services/aiStream.ts +175 -0
  266. package/src/services/aiTools.ts +290 -0
  267. package/src/services/announcement.ts +7 -0
  268. package/src/services/assignment.ts +28 -7
  269. package/src/services/class.ts +20 -1
  270. package/src/services/discussion.ts +9 -8
  271. package/src/services/discussionSummary.ts +226 -0
  272. package/src/services/embedding.ts +285 -0
  273. package/src/services/message.ts +2 -2
  274. package/src/services/search.ts +138 -0
  275. package/src/services/user.ts +9 -17
  276. package/src/services/worksheet.ts +9 -2
  277. package/src/utils/streamBroadcast.ts +48 -0
  278. package/src/workers/connection.ts +19 -0
  279. package/src/workers/index.ts +2 -0
  280. package/src/workers/processors/createRunJobWorker.ts +32 -6
  281. package/src/workers/processors/embedContent.ts +90 -0
  282. package/src/workers/queues.ts +5 -1
  283. package/tests/unit/pipelines/aiLabChatContract.test.ts +38 -21
  284. package/tests/unit/pipelines/labChatPrompt.test.ts +23 -36
  285. package/prisma/migrations/20250807062924_init/migration.sql +0 -436
  286. package/prisma/migrations/20250919063704_init2/migration.sql +0 -24
  287. package/prisma/migrations/20250920143543_add_profile_fields/migration.sql +0 -15
  288. package/prisma/migrations/20250922165147_add_chat_models/migration.sql +0 -68
  289. package/prisma/migrations/20250922165314_add_chat_roles/migration.sql +0 -5
  290. package/prisma/migrations/20250922171242_refactor_notification_system/migration.sql +0 -20
  291. package/prisma/migrations/20250922172208_add_mentions_system/migration.sql +0 -21
  292. package/prisma/migrations/20250925072732_add_lab_chat_system/migration.sql +0 -25
  293. package/prisma/migrations/20251020151505_add_upload_tracking_fields/migration.sql +0 -57
  294. package/prisma/migrations/20251109122857_annuoncements_comments/migration.sql +0 -30
  295. package/prisma/migrations/20251109135555_reactions_announcements_comments/migration.sql +0 -35
  296. package/prisma/migrations/20260410124000_add_submission_recommendation_state/migration.sql +0 -14
  297. package/prisma/migrations/20260415103500_add_session_type/migration.sql +0 -33
  298. package/prisma/migrations/20260415133000_add_ai_usage_logs/migration.sql +0 -19
  299. package/prisma/migrations/20260417083000_add_conversation_member_hidden_at/migration.sql +0 -2
  300. package/prisma/migrations/20260502230500_assignment_submission_comments/migration.sql +0 -60
  301. package/prisma/migrations/20260504071500_school_memberships/migration.sql +0 -81
  302. package/prisma/migrations/20260506162500_consolidate_run_job_and_unify_job_status/migration.sql +0 -166
  303. package/prisma/migrations/20260509220000_institution_overhaul/migration.sql +0 -184
  304. package/prisma/migrations/20260510170000_add_folder_permissions/migration.sql +0 -93
  305. package/prisma/migrations/20260510183000_add_discussions/migration.sql +0 -151
  306. /package/.github/workflows/{npm.yml → npm-publish.yml} +0 -0
@@ -4,86 +4,176 @@
4
4
  */
5
5
  import { SessionType } from "@prisma/client";
6
6
  /** @returns User by username (includes password for login). */
7
- export declare function findUserByUsername(username: string): import(".prisma/client").Prisma.Prisma__UserClient<{
7
+ export declare function findUserByUsername(username: string): import("@prisma/client/runtime/library.js").DynamicModelExtensionFluentApi<import(".prisma/client").Prisma.TypeMap<import("@prisma/client/runtime/library.js").InternalArgs & {
8
+ result: {
9
+ userProfile: {
10
+ profilePicture: () => {
11
+ needs: {
12
+ profilePicture: true;
13
+ };
14
+ compute(profile: {
15
+ profilePicture: string | null;
16
+ }): string | null;
17
+ };
18
+ profilePictureThumbnail: () => {
19
+ needs: {
20
+ profilePictureThumbnail: true;
21
+ };
22
+ compute(profile: {
23
+ profilePictureThumbnail: string | null;
24
+ }): string | null;
25
+ };
26
+ };
27
+ };
28
+ model: {};
29
+ query: {};
30
+ client: {};
31
+ }, {}>, "User", "findFirst", null> & import("@prisma/client/runtime/library.js").PrismaPromise<{
8
32
  id: string;
9
33
  username: string;
10
34
  email: string;
11
35
  password: string;
12
36
  verified: boolean;
13
- } | null, null, import("@prisma/client/runtime/library.js").DefaultArgs, {
14
- datasources: {
15
- db: {
16
- url: string;
37
+ } | null>;
38
+ /** @returns User by username or email. */
39
+ export declare function findUserByUsernameOrEmail(username: string, email: string): import("@prisma/client/runtime/library.js").DynamicModelExtensionFluentApi<import(".prisma/client").Prisma.TypeMap<import("@prisma/client/runtime/library.js").InternalArgs & {
40
+ result: {
41
+ userProfile: {
42
+ profilePicture: () => {
43
+ needs: {
44
+ profilePicture: true;
45
+ };
46
+ compute(profile: {
47
+ profilePicture: string | null;
48
+ }): string | null;
49
+ };
50
+ profilePictureThumbnail: () => {
51
+ needs: {
52
+ profilePictureThumbnail: true;
53
+ };
54
+ compute(profile: {
55
+ profilePictureThumbnail: string | null;
56
+ }): string | null;
57
+ };
17
58
  };
18
59
  };
19
- }>;
20
- /** @returns User by username or email. */
21
- export declare function findUserByUsernameOrEmail(username: string, email: string): import(".prisma/client").Prisma.Prisma__UserClient<{
60
+ model: {};
61
+ query: {};
62
+ client: {};
63
+ }, {}>, "User", "findFirst", null> & import("@prisma/client/runtime/library.js").PrismaPromise<{
22
64
  id: string;
23
65
  username: string;
24
66
  email: string;
25
67
  verified: boolean;
26
- } | null, null, import("@prisma/client/runtime/library.js").DefaultArgs, {
27
- datasources: {
28
- db: {
29
- url: string;
68
+ } | null>;
69
+ /** @returns User by email with profile. */
70
+ export declare function findUserByEmail(email: string): import("@prisma/client/runtime/library.js").DynamicModelExtensionFluentApi<import(".prisma/client").Prisma.TypeMap<import("@prisma/client/runtime/library.js").InternalArgs & {
71
+ result: {
72
+ userProfile: {
73
+ profilePicture: () => {
74
+ needs: {
75
+ profilePicture: true;
76
+ };
77
+ compute(profile: {
78
+ profilePicture: string | null;
79
+ }): string | null;
80
+ };
81
+ profilePictureThumbnail: () => {
82
+ needs: {
83
+ profilePictureThumbnail: true;
84
+ };
85
+ compute(profile: {
86
+ profilePictureThumbnail: string | null;
87
+ }): string | null;
88
+ };
30
89
  };
31
90
  };
32
- }>;
33
- /** @returns User by email with profile. */
34
- export declare function findUserByEmail(email: string): import(".prisma/client").Prisma.Prisma__UserClient<{
91
+ model: {};
92
+ query: {};
93
+ client: {};
94
+ }, {}>, "User", "findFirst", null> & import("@prisma/client/runtime/library.js").PrismaPromise<{
35
95
  id: string;
36
96
  email: string;
37
97
  profile: {
38
- location: string | null;
98
+ profilePicture: string | null;
39
99
  displayName: string | null;
40
100
  bio: string | null;
101
+ location: string | null;
41
102
  website: string | null;
42
- profilePicture: string | null;
43
103
  } | null;
44
- } | null, null, import("@prisma/client/runtime/library.js").DefaultArgs, {
45
- datasources: {
46
- db: {
47
- url: string;
104
+ } | null>;
105
+ /** @returns User by ID with profile. */
106
+ export declare function findUserById(id: string): import("@prisma/client/runtime/library.js").DynamicModelExtensionFluentApi<import(".prisma/client").Prisma.TypeMap<import("@prisma/client/runtime/library.js").InternalArgs & {
107
+ result: {
108
+ userProfile: {
109
+ profilePicture: () => {
110
+ needs: {
111
+ profilePicture: true;
112
+ };
113
+ compute(profile: {
114
+ profilePicture: string | null;
115
+ }): string | null;
116
+ };
117
+ profilePictureThumbnail: () => {
118
+ needs: {
119
+ profilePictureThumbnail: true;
120
+ };
121
+ compute(profile: {
122
+ profilePictureThumbnail: string | null;
123
+ }): string | null;
124
+ };
48
125
  };
49
126
  };
50
- }>;
51
- /** @returns User by ID with profile. */
52
- export declare function findUserById(id: string): import(".prisma/client").Prisma.Prisma__UserClient<{
127
+ model: {};
128
+ query: {};
129
+ client: {};
130
+ }, {}>, "User", "findUnique", null> & import("@prisma/client/runtime/library.js").PrismaPromise<{
53
131
  id: string;
54
132
  username: string;
55
133
  email: string;
56
134
  profile: {
57
- location: string | null;
135
+ profilePicture: string | null;
58
136
  displayName: string | null;
59
137
  bio: string | null;
138
+ location: string | null;
60
139
  website: string | null;
61
- profilePicture: string | null;
62
140
  profilePictureThumbnail: string | null;
63
141
  } | null;
64
- } | null, null, import("@prisma/client/runtime/library.js").DefaultArgs, {
65
- datasources: {
66
- db: {
67
- url: string;
68
- };
69
- };
70
- }>;
142
+ } | null>;
71
143
  /** Create a user with empty profile. */
72
144
  export declare function createUser(data: {
73
145
  username: string;
74
146
  email: string;
75
147
  password: string;
76
148
  verified?: boolean;
77
- }): import(".prisma/client").Prisma.Prisma__UserClient<{
149
+ }): import("@prisma/client/runtime/library.js").DynamicModelExtensionFluentApi<import(".prisma/client").Prisma.TypeMap<import("@prisma/client/runtime/library.js").InternalArgs & {
150
+ result: {
151
+ userProfile: {
152
+ profilePicture: () => {
153
+ needs: {
154
+ profilePicture: true;
155
+ };
156
+ compute(profile: {
157
+ profilePicture: string | null;
158
+ }): string | null;
159
+ };
160
+ profilePictureThumbnail: () => {
161
+ needs: {
162
+ profilePictureThumbnail: true;
163
+ };
164
+ compute(profile: {
165
+ profilePictureThumbnail: string | null;
166
+ }): string | null;
167
+ };
168
+ };
169
+ };
170
+ model: {};
171
+ query: {};
172
+ client: {};
173
+ }, {}>, "User", "create", never> & import("@prisma/client/runtime/library.js").PrismaPromise<{
78
174
  id: string;
79
175
  username: string;
80
176
  email: string;
81
- }, never, import("@prisma/client/runtime/library.js").DefaultArgs, {
82
- datasources: {
83
- db: {
84
- url: string;
85
- };
86
- };
87
177
  }>;
88
178
  /** Create a session. */
89
179
  export declare function createSession(data: {
@@ -92,156 +182,300 @@ export declare function createSession(data: {
92
182
  expiresAt: Date;
93
183
  userId?: string;
94
184
  classId?: string;
95
- }): import(".prisma/client").Prisma.Prisma__SessionClient<{
185
+ }): import("@prisma/client/runtime/library.js").DynamicModelExtensionFluentApi<import(".prisma/client").Prisma.TypeMap<import("@prisma/client/runtime/library.js").InternalArgs & {
186
+ result: {
187
+ userProfile: {
188
+ profilePicture: () => {
189
+ needs: {
190
+ profilePicture: true;
191
+ };
192
+ compute(profile: {
193
+ profilePicture: string | null;
194
+ }): string | null;
195
+ };
196
+ profilePictureThumbnail: () => {
197
+ needs: {
198
+ profilePictureThumbnail: true;
199
+ };
200
+ compute(profile: {
201
+ profilePictureThumbnail: string | null;
202
+ }): string | null;
203
+ };
204
+ };
205
+ };
206
+ model: {};
207
+ query: {};
208
+ client: {};
209
+ }, {}>, "Session", "create", never> & import("@prisma/client/runtime/library.js").PrismaPromise<{
96
210
  type: import(".prisma/client").$Enums.SessionType;
97
211
  id: string;
98
- createdAt: Date | null;
99
212
  userId: string | null;
100
- expiresAt: Date | null;
213
+ createdAt: Date | null;
101
214
  classId: string | null;
102
- }, never, import("@prisma/client/runtime/library.js").DefaultArgs, {
103
- datasources: {
104
- db: {
105
- url: string;
106
- };
107
- };
215
+ expiresAt: Date | null;
108
216
  }>;
109
217
  /** Delete all sessions for user. Invalidates Redis cache. */
110
- export declare function deleteSessionsByUserId(userId: string): Promise<import(".prisma/client").Prisma.BatchPayload>;
218
+ export declare function deleteSessionsByUserId(userId: string): Promise<import("@prisma/client/runtime/library.js").GetBatchResult>;
111
219
  /** Delete password reset sessions expiring before date. */
112
- export declare function deleteShortLivedSessionsByUserId(userId: string, expiresBefore: Date): import(".prisma/client").Prisma.PrismaPromise<import(".prisma/client").Prisma.BatchPayload>;
220
+ export declare function deleteShortLivedSessionsByUserId(userId: string, expiresBefore: Date): import("@prisma/client/runtime/library.js").PrismaPromise<import("@prisma/client/runtime/library.js").GetBatchResult>;
113
221
  /** Delete a user. */
114
- export declare function deleteUserById(id: string): import(".prisma/client").Prisma.Prisma__UserClient<{
222
+ export declare function deleteUserById(id: string): import("@prisma/client/runtime/library.js").DynamicModelExtensionFluentApi<import(".prisma/client").Prisma.TypeMap<import("@prisma/client/runtime/library.js").InternalArgs & {
223
+ result: {
224
+ userProfile: {
225
+ profilePicture: () => {
226
+ needs: {
227
+ profilePicture: true;
228
+ };
229
+ compute(profile: {
230
+ profilePicture: string | null;
231
+ }): string | null;
232
+ };
233
+ profilePictureThumbnail: () => {
234
+ needs: {
235
+ profilePictureThumbnail: true;
236
+ };
237
+ compute(profile: {
238
+ profilePictureThumbnail: string | null;
239
+ }): string | null;
240
+ };
241
+ };
242
+ };
243
+ model: {};
244
+ query: {};
245
+ client: {};
246
+ }, {}>, "User", "delete", never> & import("@prisma/client/runtime/library.js").PrismaPromise<{
115
247
  id: string;
116
248
  username: string;
117
249
  email: string;
118
250
  password: string;
119
251
  verified: boolean;
120
252
  schoolId: string | null;
121
- }, never, import("@prisma/client/runtime/library.js").DefaultArgs, {
122
- datasources: {
123
- db: {
124
- url: string;
125
- };
126
- };
127
253
  }>;
128
254
  /** @returns Session by ID and type. */
129
- export declare function findSessionByIdAndType(id: string, type: SessionType): import(".prisma/client").Prisma.Prisma__SessionClient<{
255
+ export declare function findSessionByIdAndType(id: string, type: SessionType): import("@prisma/client/runtime/library.js").DynamicModelExtensionFluentApi<import(".prisma/client").Prisma.TypeMap<import("@prisma/client/runtime/library.js").InternalArgs & {
256
+ result: {
257
+ userProfile: {
258
+ profilePicture: () => {
259
+ needs: {
260
+ profilePicture: true;
261
+ };
262
+ compute(profile: {
263
+ profilePicture: string | null;
264
+ }): string | null;
265
+ };
266
+ profilePictureThumbnail: () => {
267
+ needs: {
268
+ profilePictureThumbnail: true;
269
+ };
270
+ compute(profile: {
271
+ profilePictureThumbnail: string | null;
272
+ }): string | null;
273
+ };
274
+ };
275
+ };
276
+ model: {};
277
+ query: {};
278
+ client: {};
279
+ }, {}>, "Session", "findFirst", null> & import("@prisma/client/runtime/library.js").PrismaPromise<{
130
280
  type: import(".prisma/client").$Enums.SessionType;
131
281
  id: string;
132
- createdAt: Date | null;
133
282
  userId: string | null;
134
- expiresAt: Date | null;
283
+ createdAt: Date | null;
135
284
  classId: string | null;
136
- } | null, null, import("@prisma/client/runtime/library.js").DefaultArgs, {
137
- datasources: {
138
- db: {
139
- url: string;
285
+ expiresAt: Date | null;
286
+ } | null>;
287
+ /** @returns Session with user by ID and type. */
288
+ export declare function findSessionByIdWithUserAndType(id: string, type: SessionType): import("@prisma/client/runtime/library.js").DynamicModelExtensionFluentApi<import(".prisma/client").Prisma.TypeMap<import("@prisma/client/runtime/library.js").InternalArgs & {
289
+ result: {
290
+ userProfile: {
291
+ profilePicture: () => {
292
+ needs: {
293
+ profilePicture: true;
294
+ };
295
+ compute(profile: {
296
+ profilePicture: string | null;
297
+ }): string | null;
298
+ };
299
+ profilePictureThumbnail: () => {
300
+ needs: {
301
+ profilePictureThumbnail: true;
302
+ };
303
+ compute(profile: {
304
+ profilePictureThumbnail: string | null;
305
+ }): string | null;
306
+ };
140
307
  };
141
308
  };
142
- }>;
143
- /** @returns Session with user by ID and type. */
144
- export declare function findSessionByIdWithUserAndType(id: string, type: SessionType): import(".prisma/client").Prisma.Prisma__SessionClient<({
309
+ model: {};
310
+ query: {};
311
+ client: {};
312
+ }, {}>, "Session", "findFirst", null> & import("@prisma/client/runtime/library.js").PrismaPromise<({
145
313
  user: {
146
314
  id: string;
147
315
  } | null;
148
316
  } & {
149
317
  type: import(".prisma/client").$Enums.SessionType;
150
318
  id: string;
151
- createdAt: Date | null;
152
319
  userId: string | null;
153
- expiresAt: Date | null;
320
+ createdAt: Date | null;
154
321
  classId: string | null;
155
- }) | null, null, import("@prisma/client/runtime/library.js").DefaultArgs, {
156
- datasources: {
157
- db: {
158
- url: string;
322
+ expiresAt: Date | null;
323
+ }) | null>;
324
+ /** Set user verified status. */
325
+ export declare function updateUserVerified(userId: string, verified: boolean): import("@prisma/client/runtime/library.js").DynamicModelExtensionFluentApi<import(".prisma/client").Prisma.TypeMap<import("@prisma/client/runtime/library.js").InternalArgs & {
326
+ result: {
327
+ userProfile: {
328
+ profilePicture: () => {
329
+ needs: {
330
+ profilePicture: true;
331
+ };
332
+ compute(profile: {
333
+ profilePicture: string | null;
334
+ }): string | null;
335
+ };
336
+ profilePictureThumbnail: () => {
337
+ needs: {
338
+ profilePictureThumbnail: true;
339
+ };
340
+ compute(profile: {
341
+ profilePictureThumbnail: string | null;
342
+ }): string | null;
343
+ };
159
344
  };
160
345
  };
161
- }>;
162
- /** Set user verified status. */
163
- export declare function updateUserVerified(userId: string, verified: boolean): import(".prisma/client").Prisma.Prisma__UserClient<{
346
+ model: {};
347
+ query: {};
348
+ client: {};
349
+ }, {}>, "User", "update", never> & import("@prisma/client/runtime/library.js").PrismaPromise<{
164
350
  id: string;
165
351
  username: string;
166
352
  email: string;
167
353
  password: string;
168
354
  verified: boolean;
169
355
  schoolId: string | null;
170
- }, never, import("@prisma/client/runtime/library.js").DefaultArgs, {
171
- datasources: {
172
- db: {
173
- url: string;
174
- };
175
- };
176
356
  }>;
177
357
  /** Update user password. */
178
- export declare function updateUserPassword(userId: string, password: string): import(".prisma/client").Prisma.Prisma__UserClient<{
358
+ export declare function updateUserPassword(userId: string, password: string): import("@prisma/client/runtime/library.js").DynamicModelExtensionFluentApi<import(".prisma/client").Prisma.TypeMap<import("@prisma/client/runtime/library.js").InternalArgs & {
359
+ result: {
360
+ userProfile: {
361
+ profilePicture: () => {
362
+ needs: {
363
+ profilePicture: true;
364
+ };
365
+ compute(profile: {
366
+ profilePicture: string | null;
367
+ }): string | null;
368
+ };
369
+ profilePictureThumbnail: () => {
370
+ needs: {
371
+ profilePictureThumbnail: true;
372
+ };
373
+ compute(profile: {
374
+ profilePictureThumbnail: string | null;
375
+ }): string | null;
376
+ };
377
+ };
378
+ };
379
+ model: {};
380
+ query: {};
381
+ client: {};
382
+ }, {}>, "User", "update", never> & import("@prisma/client/runtime/library.js").PrismaPromise<{
179
383
  id: string;
180
384
  username: string;
181
385
  email: string;
182
386
  password: string;
183
387
  verified: boolean;
184
388
  schoolId: string | null;
185
- }, never, import("@prisma/client/runtime/library.js").DefaultArgs, {
186
- datasources: {
187
- db: {
188
- url: string;
189
- };
190
- };
191
389
  }>;
192
390
  /** Delete a session. */
193
391
  export declare function deleteSessionById(id: string): Promise<{
194
392
  type: import(".prisma/client").$Enums.SessionType;
195
393
  id: string;
196
- createdAt: Date | null;
197
394
  userId: string | null;
198
- expiresAt: Date | null;
395
+ createdAt: Date | null;
199
396
  classId: string | null;
397
+ expiresAt: Date | null;
200
398
  }>;
201
399
  /** @returns User from valid auth session token. Checks Redis first, then DB. Caches in Redis. */
202
400
  export declare function findUserBySessionToken(token: string): Promise<any>;
203
401
  /** @returns Class IDs where user is a teacher. */
204
- export declare function findTeacherClassesByUserId(userId: string): import(".prisma/client").Prisma.PrismaPromise<{
402
+ export declare function findTeacherClassesByUserId(userId: string): import("@prisma/client/runtime/library.js").PrismaPromise<{
205
403
  id: string;
206
404
  }[]>;
207
405
  /** @returns Class if user is student or teacher. */
208
- export declare function findClassWithMember(classId: string, userId: string): import(".prisma/client").Prisma.Prisma__ClassClient<{
209
- name: string;
406
+ export declare function findClassWithMember(classId: string, userId: string): import("@prisma/client/runtime/library.js").DynamicModelExtensionFluentApi<import(".prisma/client").Prisma.TypeMap<import("@prisma/client/runtime/library.js").InternalArgs & {
407
+ result: {
408
+ userProfile: {
409
+ profilePicture: () => {
410
+ needs: {
411
+ profilePicture: true;
412
+ };
413
+ compute(profile: {
414
+ profilePicture: string | null;
415
+ }): string | null;
416
+ };
417
+ profilePictureThumbnail: () => {
418
+ needs: {
419
+ profilePictureThumbnail: true;
420
+ };
421
+ compute(profile: {
422
+ profilePictureThumbnail: string | null;
423
+ }): string | null;
424
+ };
425
+ };
426
+ };
427
+ model: {};
428
+ query: {};
429
+ client: {};
430
+ }, {}>, "Class", "findFirst", null> & import("@prisma/client/runtime/library.js").PrismaPromise<{
431
+ section: string;
210
432
  id: string;
433
+ name: string;
211
434
  schoolId: string | null;
212
- subject: string;
213
435
  color: string | null;
214
- section: string;
436
+ subject: string;
215
437
  syllabus: string | null;
216
438
  departmentId: string | null;
217
439
  discussionsEnabled: boolean;
218
440
  studentsCanCreateDiscussions: boolean;
219
441
  studentsCanReply: boolean;
220
- } | null, null, import("@prisma/client/runtime/library.js").DefaultArgs, {
221
- datasources: {
222
- db: {
223
- url: string;
442
+ } | null>;
443
+ /** @returns Class if user is a teacher or school admin. */
444
+ export declare function findClassWithTeacher(classId: string, teacherId: string): import("@prisma/client/runtime/library.js").DynamicModelExtensionFluentApi<import(".prisma/client").Prisma.TypeMap<import("@prisma/client/runtime/library.js").InternalArgs & {
445
+ result: {
446
+ userProfile: {
447
+ profilePicture: () => {
448
+ needs: {
449
+ profilePicture: true;
450
+ };
451
+ compute(profile: {
452
+ profilePicture: string | null;
453
+ }): string | null;
454
+ };
455
+ profilePictureThumbnail: () => {
456
+ needs: {
457
+ profilePictureThumbnail: true;
458
+ };
459
+ compute(profile: {
460
+ profilePictureThumbnail: string | null;
461
+ }): string | null;
462
+ };
224
463
  };
225
464
  };
226
- }>;
227
- /** @returns Class if user is a teacher or school admin. */
228
- export declare function findClassWithTeacher(classId: string, teacherId: string): import(".prisma/client").Prisma.Prisma__ClassClient<{
229
- name: string;
465
+ model: {};
466
+ query: {};
467
+ client: {};
468
+ }, {}>, "Class", "findFirst", null> & import("@prisma/client/runtime/library.js").PrismaPromise<{
469
+ section: string;
230
470
  id: string;
471
+ name: string;
231
472
  schoolId: string | null;
232
- subject: string;
233
473
  color: string | null;
234
- section: string;
474
+ subject: string;
235
475
  syllabus: string | null;
236
476
  departmentId: string | null;
237
477
  discussionsEnabled: boolean;
238
478
  studentsCanCreateDiscussions: boolean;
239
479
  studentsCanReply: boolean;
240
- } | null, null, import("@prisma/client/runtime/library.js").DefaultArgs, {
241
- datasources: {
242
- db: {
243
- url: string;
244
- };
245
- };
246
- }>;
480
+ } | null>;
247
481
  //# sourceMappingURL=auth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"/","sources":["models/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAuB7C,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;GAWlD;AAED,0CAA0C;AAC1C,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;;;;;;;;;;;GAYxE;AAED,2CAA2C;AAC3C,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM;;;;;;;;;;;;;;;;GAiB5C;AAED,wCAAwC;AACxC,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;;;;;;;GAmBtC;AAED,wCAAwC;AACxC,wBAAgB,UAAU,CAAC,IAAI,EAAE;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;;;;;;;;;;GAeA;AAED,wBAAwB;AACxB,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;;;;;;;;;;;;;GAIA;AAED,6DAA6D;AAC7D,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,MAAM,yDAU1D;AAED,2DAA2D;AAC3D,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,IAAI,+FASpB;AAED,qBAAqB;AACrB,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;;GAIxC;AAED,uCAAuC;AACvC,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW;;;;;;;;;;;;;GAInE;AAED,iDAAiD;AACjD,wBAAgB,8BAA8B,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW;;;;;;;;;;;;;;;;;GAO3E;AAED,gCAAgC;AAChC,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO;;;;;;;;;;;;;GAKnE;AAED,4BAA4B;AAC5B,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;;;;;;;;;;;GAKlE;AAED,wBAAwB;AACxB,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,MAAM;;;;;;;GAKjD;AAED,iGAAiG;AACjG,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,MAAM,gBAqCzD;AAED,kDAAkD;AAClD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM;;KAKxD;AAED,oDAAoD;AACpD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;GAOlE;AAED,2DAA2D;AAC3D,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;GAOtE"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"/","sources":["models/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAuB7C,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAWlD;AAED,0CAA0C;AAC1C,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAYxE;AAED,2CAA2C;AAC3C,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAiB5C;AAED,wCAAwC;AACxC,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAmBtC;AAED,wCAAwC;AACxC,wBAAgB,UAAU,CAAC,IAAI,EAAE;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAeA;AAED,wBAAwB;AACxB,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAIA;AAED,6DAA6D;AAC7D,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,MAAM,uEAU1D;AAED,2DAA2D;AAC3D,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,IAAI,yHASpB;AAED,qBAAqB;AACrB,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAIxC;AAED,uCAAuC;AACvC,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAInE;AAED,iDAAiD;AACjD,wBAAgB,8BAA8B,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAO3E;AAED,gCAAgC;AAChC,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAKnE;AAED,4BAA4B;AAC5B,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAKlE;AAED,wBAAwB;AACxB,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,MAAM;;;;;;;GAKjD;AAED,iGAAiG;AACjG,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,MAAM,gBAqCzD;AAED,kDAAkD;AAClD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM;;KAKxD;AAED,oDAAoD;AACpD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAOlE;AAED,2DAA2D;AAC3D,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAOtE"}