@oaknational/google-classroom-addon 1.30.0 → 1.32.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.
@@ -1,2 +1,2 @@
1
- import t from"zod";var n=t.object({courseId:t.string(),itemId:t.string(),addOnToken:t.string(),title:t.string(),lessonSlug:t.string(),programmeSlug:t.string(),unitSlug:t.string(),maxPoints:t.number().optional(),teacherLoginHint:t.string().optional()}),i=t.object({courseId:t.string(),postId:t.string(),id:t.string(),title:t.string(),teacherViewUri:t.object({uri:t.string()}),studentViewUri:t.object({uri:t.string()}),studentWorkReviewUri:t.object({uri:t.string()}).optional(),itemId:t.string(),maxPoints:t.number().nullish()}),o=t.string(),e=t.object({accessToken:t.string(),loginHint:t.string(),refreshToken:t.string().optional(),profilePictureUrl:t.string().optional(),email:t.string().optional()}),r=t.object({token:t.string()}),s=t.tuple([n,t.string().min(1),t.string().min(1)]),a=i.extend({attachmentId:t.string(),createdAt:t.string(),teacherLoginHint:t.string().optional()}),l=t.object({loginHint:t.string(),refreshToken:t.string().optional(),profilePictureUrl:t.string().optional()}),g=["NEW","CREATED","RECLAIMED_BY_STUDENT"],u=t.enum(["correct","incorrect"]),p=t.union([t.string(),t.number(),t.array(t.union([t.string(),t.number()]).nullable()),t.null()]),d=t.object({mode:t.enum(["init","incomplete","input","grading","feedback"]),grade:t.number(),pupilAnswer:p.optional().nullable(),feedback:t.union([u,t.array(u)]).optional(),isPartiallyCorrect:t.boolean().optional(),correctAnswer:t.union([t.string(),t.array(t.union([t.string(),t.undefined()]))]).optional(),usedHint:t.boolean().optional()}),c=t.object({grade:t.number(),numQuestions:t.number(),isComplete:t.boolean(),questionResults:t.array(d).optional()}),b=t.object({played:t.boolean(),duration:t.number(),timeElapsed:t.number(),isComplete:t.boolean()}),m=t.object({worksheetAvailable:t.boolean().optional(),worksheetDownloaded:t.boolean().optional(),isComplete:t.boolean()}),I=t.enum(["SUBMISSION_STATE_UNSPECIFIED","NEW","CREATED","RECLAIMED_BY_STUDENT","TURNED_IN","RETURNED"]),E=t.object({postSubmissionState:I,submissionId:t.string(),attachmentId:t.string(),courseId:t.string(),itemId:t.string(),pupilLoginHint:t.string(),starterQuiz:c.optional(),exitQuiz:c.optional(),video:b.optional(),intro:m.optional(),updatedAt:t.string(),createdAt:t.string()}),j=t.object({submissionId:t.string(),attachmentId:t.string(),courseId:t.string(),itemId:t.string(),pupilLoginHint:t.string(),starterQuiz:c.optional(),exitQuiz:c.optional(),video:b.optional(),intro:m.optional()});export{s as CreateAttachmentCallSchema,g as UPDATABLE_SUBMISSION_STATES,a as classroomAttachmentEntitySchema,i as classroomAttachmentSchema,o as codeSchema,n as createAnnouncementAttachmentArgsSchema,e as googleOAuthUserSchema,m as introProgressSchema,I as postSubmissionStateSchema,E as pupilLessonProgressSchema,d as questionResultSchema,c as quizProgressSchema,r as tokenPayloadSchema,j as upsertPupilLessonProgressArgsSchema,l as userCredentialsEntitySchema,b as videoProgressSchema};
1
+ import n from"zod";var t,i=n.object({courseId:n.string(),itemId:n.string(),addOnToken:n.string(),title:n.string(),lessonSlug:n.string(),programmeSlug:n.string(),unitSlug:n.string(),maxPoints:n.number().optional(),teacherLoginHint:n.string().optional()}),e=n.object({courseId:n.string(),postId:n.string(),id:n.string(),title:n.string(),teacherViewUri:n.object({uri:n.string()}),studentViewUri:n.object({uri:n.string()}),studentWorkReviewUri:n.object({uri:n.string()}).optional(),itemId:n.string(),maxPoints:n.number().nullish()}),o=n.object({title:n.string(),description:n.string().optional(),lessonUrl:n.string(),maxPoints:n.number().int().positive()}),r=n.object({courseWorkId:n.string(),courseId:n.string(),alternateLink:n.string().optional(),title:n.string()}),s=n.object({id:n.string(),name:n.string(),section:n.string().optional()}),g=n.string(),a=n.object({accessToken:n.string(),loginHint:n.string(),refreshToken:n.string().optional(),profilePictureUrl:n.string().optional(),email:n.string().optional()}),l=n.object({token:n.string()}),u=n.tuple([i,n.string().min(1),n.string().min(1)]),d=e.extend({attachmentId:n.string(),createdAt:n.string(),teacherLoginHint:n.string().optional()}),c=n.object({loginHint:n.string(),refreshToken:n.string().optional(),profilePictureUrl:n.string().optional()}),p=n.object({assignmentToken:n.string(),courseWorkId:n.string(),courseId:n.string(),teacherLoginHint:n.string(),lessonSlug:n.string(),programmeSlug:n.string(),unitSlug:n.string(),maxPoints:n.number().int().positive(),createdAt:n.string()}),m=n.enum(["correct","incorrect"]),b=n.union([n.string(),n.number(),n.array(n.union([n.string(),n.number()]).nullable()),n.null()]),I=n.object({mode:n.enum(["init","incomplete","input","grading","feedback"]),grade:n.number(),pupilAnswer:b.optional().nullable(),feedback:n.union([m,n.array(m)]).optional(),isPartiallyCorrect:n.boolean().optional(),correctAnswer:n.union([n.string(),n.array(n.union([n.string(),n.undefined()]))]).optional(),usedHint:n.boolean().optional()}),E=n.object({grade:n.number().int().min(0),numQuestions:n.number().int().positive(),isComplete:n.boolean(),questionResults:n.array(I).optional()}),T=n.object({played:n.boolean(),duration:n.number(),timeElapsed:n.number(),isComplete:n.boolean()}),S=n.object({worksheetAvailable:n.boolean().optional(),worksheetDownloaded:n.boolean().optional(),isComplete:n.boolean()});!function(n){n.SUBMISSION_STATE_UNSPECIFIED="SUBMISSION_STATE_UNSPECIFIED",n.NEW="NEW",n.CREATED="CREATED",n.RECLAIMED_BY_STUDENT="RECLAIMED_BY_STUDENT",n.TURNED_IN="TURNED_IN",n.RETURNED="RETURNED"}(t||(t={}));var k=n.enum(t),j=[t.NEW,t.CREATED,t.RECLAIMED_BY_STUDENT],U=n.object({starterQuiz:E.optional(),exitQuiz:E.optional(),video:T.optional(),intro:S.optional()}),D=U.extend({updatedAt:n.string(),createdAt:n.string()}),N=D.extend({postSubmissionState:k,submissionId:n.string(),attachmentId:n.string(),courseId:n.string(),itemId:n.string(),pupilLoginHint:n.string()}),A=U.extend({submissionId:n.string(),attachmentId:n.string(),courseId:n.string(),itemId:n.string(),pupilLoginHint:n.string()}),R=D.extend({submissionId:n.string(),assignmentToken:n.string(),courseWorkId:n.string(),courseId:n.string(),pupilLoginHint:n.string(),gradeSubmitted:n.boolean().optional()}),h=U.extend({submissionId:n.string(),assignmentToken:n.string(),courseWorkId:n.string(),courseId:n.string(),pupilLoginHint:n.string()});export{u as CreateAttachmentCallSchema,t as PostSubmissionState,j as UPDATABLE_SUBMISSION_STATES,d as classroomAttachmentEntitySchema,e as classroomAttachmentSchema,p as classroomCourseWorkEntitySchema,g as codeSchema,s as courseListItemSchema,r as courseWorkCreatedResultSchema,R as courseWorkPupilProgressSchema,i as createAnnouncementAttachmentArgsSchema,o as createCourseWorkArgsSchema,a as googleOAuthUserSchema,S as introProgressSchema,k as postSubmissionStateSchema,N as pupilLessonProgressSchema,I as questionResultSchema,E as quizProgressSchema,l as tokenPayloadSchema,h as upsertCourseWorkPupilProgressArgsSchema,A as upsertPupilLessonProgressArgsSchema,c as userCredentialsEntitySchema,T as videoProgressSchema};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/types/services/GoogleClassroomClientTypes.ts","../../../src/types/services/GoogleOAuthClientTypes.ts","../../../src/types/services/FirestoreClientTypes.ts","../../../src/types/services/PupilLessonProgressTypes.ts"],"sourcesContent":["import z from \"zod\";\n\nexport const createAnnouncementAttachmentArgsSchema = z.object({\n courseId: z.string(),\n itemId: z.string(),\n addOnToken: z.string(),\n title: z.string(),\n lessonSlug: z.string(),\n programmeSlug: z.string(),\n unitSlug: z.string(),\n maxPoints: z.number().optional(),\n teacherLoginHint: z.string().optional(),\n});\n\nexport type CreateAnnouncementAttachmentArgs = z.infer<\n typeof createAnnouncementAttachmentArgsSchema\n>;\n\nexport const classroomAttachmentSchema = z.object({\n courseId: z.string(),\n postId: z.string(),\n id: z.string(),\n title: z.string(),\n teacherViewUri: z.object({\n uri: z.string(),\n }),\n studentViewUri: z.object({\n uri: z.string(),\n }),\n studentWorkReviewUri: z\n .object({\n uri: z.string(),\n })\n .optional(),\n itemId: z.string(),\n maxPoints: z.number().nullish(),\n});\n\nexport type ClassroomAttachment = z.infer<typeof classroomAttachmentSchema>;\n","import z from \"zod\";\n\nimport { createAnnouncementAttachmentArgsSchema } from \"./GoogleClassroomClientTypes\";\n\nexport const codeSchema = z.string();\nexport type Code = z.infer<typeof codeSchema>;\n\nexport const googleOAuthUserSchema = z.object({\n accessToken: z.string(),\n loginHint: z.string(),\n refreshToken: z.string().optional(),\n profilePictureUrl: z.string().optional(),\n email: z.string().optional(),\n});\n\nexport type GoogleOAuthUser = z.infer<typeof googleOAuthUserSchema>;\n\nexport const tokenPayloadSchema = z.object({\n token: z.string(),\n});\n\nexport type TokenPayload = z.infer<typeof tokenPayloadSchema>;\n\nexport const CreateAttachmentCallSchema = z.tuple([\n createAnnouncementAttachmentArgsSchema,\n z.string().min(1), // accessToken\n z.string().min(1), // session\n]);\n\nexport type CreateAttachmentCall = z.infer<typeof CreateAttachmentCallSchema>;\n","import z from \"zod\";\n\nimport { classroomAttachmentSchema } from \"./GoogleClassroomClientTypes\";\n\nexport const classroomAttachmentEntitySchema = classroomAttachmentSchema.extend(\n {\n attachmentId: z.string(),\n createdAt: z.string(),\n teacherLoginHint: z.string().optional(),\n },\n);\n\nexport type ClassroomAttachmentEntity = z.infer<\n typeof classroomAttachmentEntitySchema\n>;\n\nexport const userCredentialsEntitySchema = z.object({\n loginHint: z.string(),\n refreshToken: z.string().optional(),\n profilePictureUrl: z.string().optional(),\n});\n\nexport type UserCredentialsEntity = z.infer<typeof userCredentialsEntitySchema>;\n","import z from \"zod\";\n\nexport const UPDATABLE_SUBMISSION_STATES = [\n \"NEW\",\n \"CREATED\",\n \"RECLAIMED_BY_STUDENT\",\n] as const;\n\nexport type UpdatableSubmissionState =\n (typeof UPDATABLE_SUBMISSION_STATES)[number];\n\nconst questionFeedbackSchema = z.enum([\"correct\", \"incorrect\"]);\n\nconst pupilAnswerSchema = z.union([\n z.string(),\n z.number(),\n z.array(z.union([z.string(), z.number()]).nullable()),\n z.null(),\n]);\n\nexport const questionResultSchema = z.object({\n mode: z.enum([\"init\", \"incomplete\", \"input\", \"grading\", \"feedback\"]),\n grade: z.number(),\n pupilAnswer: pupilAnswerSchema.optional().nullable(),\n feedback: z\n .union([questionFeedbackSchema, z.array(questionFeedbackSchema)])\n .optional(),\n isPartiallyCorrect: z.boolean().optional(),\n correctAnswer: z\n .union([z.string(), z.array(z.union([z.string(), z.undefined()]))])\n .optional(),\n usedHint: z.boolean().optional(),\n});\n\nexport const quizProgressSchema = z.object({\n grade: z.number(),\n numQuestions: z.number(),\n isComplete: z.boolean(),\n questionResults: z.array(questionResultSchema).optional(),\n});\n\nexport const videoProgressSchema = z.object({\n played: z.boolean(),\n duration: z.number(),\n timeElapsed: z.number(),\n isComplete: z.boolean(),\n});\n\nexport const introProgressSchema = z.object({\n worksheetAvailable: z.boolean().optional(),\n worksheetDownloaded: z.boolean().optional(),\n isComplete: z.boolean(),\n});\n\nexport const postSubmissionStateSchema = z.enum([\n \"SUBMISSION_STATE_UNSPECIFIED\",\n \"NEW\",\n \"CREATED\",\n \"RECLAIMED_BY_STUDENT\",\n \"TURNED_IN\",\n \"RETURNED\",\n]);\n\nexport type PostSubmissionState = z.infer<typeof postSubmissionStateSchema>;\n\nexport const pupilLessonProgressSchema = z.object({\n postSubmissionState: postSubmissionStateSchema,\n submissionId: z.string(),\n attachmentId: z.string(),\n courseId: z.string(),\n itemId: z.string(),\n pupilLoginHint: z.string(),\n\n starterQuiz: quizProgressSchema.optional(),\n exitQuiz: quizProgressSchema.optional(),\n video: videoProgressSchema.optional(),\n intro: introProgressSchema.optional(),\n\n updatedAt: z.string(),\n createdAt: z.string(),\n});\n\nexport type PupilLessonProgress = z.infer<typeof pupilLessonProgressSchema>;\n\nexport const upsertPupilLessonProgressArgsSchema = z.object({\n submissionId: z.string(),\n attachmentId: z.string(),\n courseId: z.string(),\n itemId: z.string(),\n pupilLoginHint: z.string(),\n starterQuiz: quizProgressSchema.optional(),\n exitQuiz: quizProgressSchema.optional(),\n video: videoProgressSchema.optional(),\n intro: introProgressSchema.optional(),\n});\n\nexport type UpsertPupilLessonProgressArgs = z.infer<\n typeof upsertPupilLessonProgressArgsSchema\n>;\n"],"names":["createAnnouncementAttachmentArgsSchema","z","object","courseId","string","itemId","addOnToken","title","lessonSlug","programmeSlug","unitSlug","maxPoints","number","optional","teacherLoginHint","classroomAttachmentSchema","postId","id","teacherViewUri","uri","studentViewUri","studentWorkReviewUri","nullish","codeSchema","googleOAuthUserSchema","accessToken","loginHint","refreshToken","profilePictureUrl","email","tokenPayloadSchema","token","CreateAttachmentCallSchema","tuple","min","classroomAttachmentEntitySchema","extend","attachmentId","createdAt","userCredentialsEntitySchema","UPDATABLE_SUBMISSION_STATES","questionFeedbackSchema","enum","pupilAnswerSchema","union","array","nullable","null","questionResultSchema","mode","grade","pupilAnswer","feedback","isPartiallyCorrect","boolean","correctAnswer","undefined","usedHint","quizProgressSchema","numQuestions","isComplete","questionResults","videoProgressSchema","played","duration","timeElapsed","introProgressSchema","worksheetAvailable","worksheetDownloaded","postSubmissionStateSchema","pupilLessonProgressSchema","postSubmissionState","submissionId","pupilLoginHint","starterQuiz","exitQuiz","video","intro","updatedAt","upsertPupilLessonProgressArgsSchema"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/types/services/GoogleClassroomClientTypes.ts","../../../src/types/services/PupilLessonProgressTypes.ts","../../../src/types/services/GoogleOAuthClientTypes.ts","../../../src/types/services/FirestoreClientTypes.ts"],"sourcesContent":["import z from \"zod\";\n\nexport const createAnnouncementAttachmentArgsSchema = z.object({\n courseId: z.string(),\n itemId: z.string(),\n addOnToken: z.string(),\n title: z.string(),\n lessonSlug: z.string(),\n programmeSlug: z.string(),\n unitSlug: z.string(),\n maxPoints: z.number().optional(),\n teacherLoginHint: z.string().optional(),\n});\n\nexport type CreateAnnouncementAttachmentArgs = z.infer<\n typeof createAnnouncementAttachmentArgsSchema\n>;\n\nexport const classroomAttachmentSchema = z.object({\n courseId: z.string(),\n postId: z.string(),\n id: z.string(),\n title: z.string(),\n teacherViewUri: z.object({\n uri: z.string(),\n }),\n studentViewUri: z.object({\n uri: z.string(),\n }),\n studentWorkReviewUri: z\n .object({\n uri: z.string(),\n })\n .optional(),\n itemId: z.string(),\n maxPoints: z.number().nullish(),\n});\n\nexport type ClassroomAttachment = z.infer<typeof classroomAttachmentSchema>;\n\nexport const createCourseWorkArgsSchema = z.object({\n title: z.string(),\n description: z.string().optional(),\n lessonUrl: z.string(),\n maxPoints: z.number().int().positive(),\n});\n\nexport type CreateCourseWorkArgs = z.infer<typeof createCourseWorkArgsSchema>;\n\nexport const courseWorkCreatedResultSchema = z.object({\n courseWorkId: z.string(),\n courseId: z.string(),\n alternateLink: z.string().optional(),\n title: z.string(),\n});\n\nexport type CourseWorkCreatedResult = z.infer<\n typeof courseWorkCreatedResultSchema\n>;\n\nexport const courseListItemSchema = z.object({\n id: z.string(),\n name: z.string(),\n section: z.string().optional(),\n});\n\nexport type CourseListItem = z.infer<typeof courseListItemSchema>;\n","import z from \"zod\";\n\nconst questionFeedbackSchema = z.enum([\"correct\", \"incorrect\"]);\n\nconst pupilAnswerSchema = z.union([\n z.string(),\n z.number(),\n z.array(z.union([z.string(), z.number()]).nullable()),\n z.null(),\n]);\n\nexport const questionResultSchema = z.object({\n mode: z.enum([\"init\", \"incomplete\", \"input\", \"grading\", \"feedback\"]),\n grade: z.number(),\n pupilAnswer: pupilAnswerSchema.optional().nullable(),\n feedback: z\n .union([questionFeedbackSchema, z.array(questionFeedbackSchema)])\n .optional(),\n isPartiallyCorrect: z.boolean().optional(),\n correctAnswer: z\n .union([z.string(), z.array(z.union([z.string(), z.undefined()]))])\n .optional(),\n usedHint: z.boolean().optional(),\n});\n\nexport const quizProgressSchema = z.object({\n grade: z.number().int().min(0),\n numQuestions: z.number().int().positive(),\n isComplete: z.boolean(),\n questionResults: z.array(questionResultSchema).optional(),\n});\n\nexport const videoProgressSchema = z.object({\n played: z.boolean(),\n duration: z.number(),\n timeElapsed: z.number(),\n isComplete: z.boolean(),\n});\n\nexport const introProgressSchema = z.object({\n worksheetAvailable: z.boolean().optional(),\n worksheetDownloaded: z.boolean().optional(),\n isComplete: z.boolean(),\n});\n\nexport enum PostSubmissionState {\n SUBMISSION_STATE_UNSPECIFIED = \"SUBMISSION_STATE_UNSPECIFIED\",\n NEW = \"NEW\",\n CREATED = \"CREATED\",\n RECLAIMED_BY_STUDENT = \"RECLAIMED_BY_STUDENT\",\n TURNED_IN = \"TURNED_IN\",\n RETURNED = \"RETURNED\",\n}\n\nexport const postSubmissionStateSchema = z.enum(PostSubmissionState);\n\n// TurnedIn and Returned states are not updatable by our system, as they indicate that the student has turned in the assignment or the teacher has returned it, so we exclude those from the upsert options. Submission_State_Unspecified is also excluded as it's not a valid state for a submission.\nexport const UPDATABLE_SUBMISSION_STATES: PostSubmissionState[] = [\n PostSubmissionState.NEW,\n PostSubmissionState.CREATED,\n PostSubmissionState.RECLAIMED_BY_STUDENT,\n];\n\nconst lessonProgressInputSchema = z.object({\n starterQuiz: quizProgressSchema.optional(),\n exitQuiz: quizProgressSchema.optional(),\n video: videoProgressSchema.optional(),\n intro: introProgressSchema.optional(),\n});\n\nconst lessonProgressSchema = lessonProgressInputSchema.extend({\n updatedAt: z.string(),\n createdAt: z.string(),\n});\n\nexport const pupilLessonProgressSchema = lessonProgressSchema.extend({\n postSubmissionState: postSubmissionStateSchema,\n submissionId: z.string(),\n attachmentId: z.string(),\n courseId: z.string(),\n itemId: z.string(),\n pupilLoginHint: z.string(),\n});\n\nexport type PupilLessonProgress = z.infer<typeof pupilLessonProgressSchema>;\n\nexport const upsertPupilLessonProgressArgsSchema =\n lessonProgressInputSchema.extend({\n submissionId: z.string(),\n attachmentId: z.string(),\n courseId: z.string(),\n itemId: z.string(),\n pupilLoginHint: z.string(),\n });\n\nexport type UpsertPupilLessonProgressArgs = z.infer<\n typeof upsertPupilLessonProgressArgsSchema\n>;\n\nexport const courseWorkPupilProgressSchema = lessonProgressSchema.extend({\n submissionId: z.string(),\n assignmentToken: z.string(),\n courseWorkId: z.string(),\n courseId: z.string(),\n pupilLoginHint: z.string(),\n gradeSubmitted: z.boolean().optional(),\n});\n\nexport type CourseWorkPupilProgress = z.infer<\n typeof courseWorkPupilProgressSchema\n>;\n\nexport const upsertCourseWorkPupilProgressArgsSchema =\n lessonProgressInputSchema.extend({\n submissionId: z.string(),\n assignmentToken: z.string(),\n courseWorkId: z.string(),\n courseId: z.string(),\n pupilLoginHint: z.string(),\n });\n\nexport type UpsertCourseWorkPupilProgressArgs = z.infer<\n typeof upsertCourseWorkPupilProgressArgsSchema\n>;\n\nexport type CreateCourseWorkServiceArgs = {\n courseId: string;\n title: string;\n description?: string;\n lessonSlug: string;\n programmeSlug: string;\n unitSlug: string;\n maxPoints: number;\n teacherLoginHint: string;\n};\n","import z from \"zod\";\n\nimport { createAnnouncementAttachmentArgsSchema } from \"./GoogleClassroomClientTypes\";\n\nexport const codeSchema = z.string();\nexport type Code = z.infer<typeof codeSchema>;\n\nexport const googleOAuthUserSchema = z.object({\n accessToken: z.string(),\n loginHint: z.string(),\n refreshToken: z.string().optional(),\n profilePictureUrl: z.string().optional(),\n email: z.string().optional(),\n});\n\nexport type GoogleOAuthUser = z.infer<typeof googleOAuthUserSchema>;\n\nexport const tokenPayloadSchema = z.object({\n token: z.string(),\n});\n\nexport type TokenPayload = z.infer<typeof tokenPayloadSchema>;\n\nexport const CreateAttachmentCallSchema = z.tuple([\n createAnnouncementAttachmentArgsSchema,\n z.string().min(1), // accessToken\n z.string().min(1), // session\n]);\n\nexport type CreateAttachmentCall = z.infer<typeof CreateAttachmentCallSchema>;\n","import z from \"zod\";\n\nimport { classroomAttachmentSchema } from \"./GoogleClassroomClientTypes\";\n\nexport const classroomAttachmentEntitySchema = classroomAttachmentSchema.extend(\n {\n attachmentId: z.string(),\n createdAt: z.string(),\n teacherLoginHint: z.string().optional(),\n },\n);\n\nexport type ClassroomAttachmentEntity = z.infer<\n typeof classroomAttachmentEntitySchema\n>;\n\nexport const userCredentialsEntitySchema = z.object({\n loginHint: z.string(),\n refreshToken: z.string().optional(),\n profilePictureUrl: z.string().optional(),\n});\n\nexport type UserCredentialsEntity = z.infer<typeof userCredentialsEntitySchema>;\n\nexport const classroomCourseWorkEntitySchema = z.object({\n assignmentToken: z.string(),\n courseWorkId: z.string(),\n courseId: z.string(),\n teacherLoginHint: z.string(),\n lessonSlug: z.string(),\n programmeSlug: z.string(),\n unitSlug: z.string(),\n maxPoints: z.number().int().positive(),\n createdAt: z.string(),\n});\n\nexport type ClassroomCourseWorkEntity = z.infer<\n typeof classroomCourseWorkEntitySchema\n>;\n"],"names":["PostSubmissionState","createAnnouncementAttachmentArgsSchema","z","object","courseId","string","itemId","addOnToken","title","lessonSlug","programmeSlug","unitSlug","maxPoints","number","optional","teacherLoginHint","classroomAttachmentSchema","postId","id","teacherViewUri","uri","studentViewUri","studentWorkReviewUri","nullish","createCourseWorkArgsSchema","description","lessonUrl","int","positive","courseWorkCreatedResultSchema","courseWorkId","alternateLink","courseListItemSchema","name","section","codeSchema","googleOAuthUserSchema","accessToken","loginHint","refreshToken","profilePictureUrl","email","tokenPayloadSchema","token","CreateAttachmentCallSchema","tuple","min","classroomAttachmentEntitySchema","extend","attachmentId","createdAt","userCredentialsEntitySchema","classroomCourseWorkEntitySchema","assignmentToken","questionFeedbackSchema","enum","pupilAnswerSchema","union","array","nullable","null","questionResultSchema","mode","grade","pupilAnswer","feedback","isPartiallyCorrect","boolean","correctAnswer","undefined","usedHint","quizProgressSchema","numQuestions","isComplete","questionResults","videoProgressSchema","played","duration","timeElapsed","introProgressSchema","worksheetAvailable","worksheetDownloaded","postSubmissionStateSchema","UPDATABLE_SUBMISSION_STATES","NEW","CREATED","RECLAIMED_BY_STUDENT","lessonProgressInputSchema","starterQuiz","exitQuiz","video","intro","lessonProgressSchema","updatedAt","pupilLessonProgressSchema","postSubmissionState","submissionId","pupilLoginHint","upsertPupilLessonProgressArgsSchema","courseWorkPupilProgressSchema","gradeSubmitted","upsertCourseWorkPupilProgressArgsSchema"],"mappings":"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"}
@@ -26,6 +26,18 @@ declare const classroomAttachmentEntitySchema: z.ZodObject<{
26
26
  teacherLoginHint: z.ZodOptional<z.ZodString>;
27
27
  }, z.core.$strip>;
28
28
  type ClassroomAttachmentEntity = z.infer<typeof classroomAttachmentEntitySchema>;
29
+ declare const classroomCourseWorkEntitySchema: z.ZodObject<{
30
+ assignmentToken: z.ZodString;
31
+ courseWorkId: z.ZodString;
32
+ courseId: z.ZodString;
33
+ teacherLoginHint: z.ZodString;
34
+ lessonSlug: z.ZodString;
35
+ programmeSlug: z.ZodString;
36
+ unitSlug: z.ZodString;
37
+ maxPoints: z.ZodNumber;
38
+ createdAt: z.ZodString;
39
+ }, z.core.$strip>;
40
+ type ClassroomCourseWorkEntity = z.infer<typeof classroomCourseWorkEntitySchema>;
29
41
 
30
42
  declare const createAnnouncementAttachmentArgsSchema: z.ZodObject<{
31
43
  courseId: z.ZodString;
@@ -39,21 +51,29 @@ declare const createAnnouncementAttachmentArgsSchema: z.ZodObject<{
39
51
  teacherLoginHint: z.ZodOptional<z.ZodString>;
40
52
  }, z.core.$strip>;
41
53
  type CreateAnnouncementAttachmentArgs = z.infer<typeof createAnnouncementAttachmentArgsSchema>;
54
+ declare const courseWorkCreatedResultSchema: z.ZodObject<{
55
+ courseWorkId: z.ZodString;
56
+ courseId: z.ZodString;
57
+ alternateLink: z.ZodOptional<z.ZodString>;
58
+ title: z.ZodString;
59
+ }, z.core.$strip>;
60
+ type CourseWorkCreatedResult = z.infer<typeof courseWorkCreatedResultSchema>;
61
+ declare const courseListItemSchema: z.ZodObject<{
62
+ id: z.ZodString;
63
+ name: z.ZodString;
64
+ section: z.ZodOptional<z.ZodString>;
65
+ }, z.core.$strip>;
66
+ type CourseListItem = z.infer<typeof courseListItemSchema>;
42
67
 
68
+ declare enum PostSubmissionState {
69
+ SUBMISSION_STATE_UNSPECIFIED = "SUBMISSION_STATE_UNSPECIFIED",
70
+ NEW = "NEW",
71
+ CREATED = "CREATED",
72
+ RECLAIMED_BY_STUDENT = "RECLAIMED_BY_STUDENT",
73
+ TURNED_IN = "TURNED_IN",
74
+ RETURNED = "RETURNED"
75
+ }
43
76
  declare const pupilLessonProgressSchema: z.ZodObject<{
44
- postSubmissionState: z.ZodEnum<{
45
- NEW: "NEW";
46
- CREATED: "CREATED";
47
- RECLAIMED_BY_STUDENT: "RECLAIMED_BY_STUDENT";
48
- SUBMISSION_STATE_UNSPECIFIED: "SUBMISSION_STATE_UNSPECIFIED";
49
- TURNED_IN: "TURNED_IN";
50
- RETURNED: "RETURNED";
51
- }>;
52
- submissionId: z.ZodString;
53
- attachmentId: z.ZodString;
54
- courseId: z.ZodString;
55
- itemId: z.ZodString;
56
- pupilLoginHint: z.ZodString;
57
77
  starterQuiz: z.ZodOptional<z.ZodObject<{
58
78
  grade: z.ZodNumber;
59
79
  numQuestions: z.ZodNumber;
@@ -119,14 +139,86 @@ declare const pupilLessonProgressSchema: z.ZodObject<{
119
139
  }, z.core.$strip>>;
120
140
  updatedAt: z.ZodString;
121
141
  createdAt: z.ZodString;
142
+ postSubmissionState: z.ZodEnum<typeof PostSubmissionState>;
143
+ submissionId: z.ZodString;
144
+ attachmentId: z.ZodString;
145
+ courseId: z.ZodString;
146
+ itemId: z.ZodString;
147
+ pupilLoginHint: z.ZodString;
122
148
  }, z.core.$strip>;
123
149
  type PupilLessonProgress = z.infer<typeof pupilLessonProgressSchema>;
124
150
  declare const upsertPupilLessonProgressArgsSchema: z.ZodObject<{
151
+ starterQuiz: z.ZodOptional<z.ZodObject<{
152
+ grade: z.ZodNumber;
153
+ numQuestions: z.ZodNumber;
154
+ isComplete: z.ZodBoolean;
155
+ questionResults: z.ZodOptional<z.ZodArray<z.ZodObject<{
156
+ mode: z.ZodEnum<{
157
+ init: "init";
158
+ incomplete: "incomplete";
159
+ input: "input";
160
+ grading: "grading";
161
+ feedback: "feedback";
162
+ }>;
163
+ grade: z.ZodNumber;
164
+ pupilAnswer: z.ZodNullable<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>, z.ZodNull]>>>;
165
+ feedback: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
166
+ correct: "correct";
167
+ incorrect: "incorrect";
168
+ }>, z.ZodArray<z.ZodEnum<{
169
+ correct: "correct";
170
+ incorrect: "incorrect";
171
+ }>>]>>;
172
+ isPartiallyCorrect: z.ZodOptional<z.ZodBoolean>;
173
+ correctAnswer: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodUndefined]>>]>>;
174
+ usedHint: z.ZodOptional<z.ZodBoolean>;
175
+ }, z.core.$strip>>>;
176
+ }, z.core.$strip>>;
177
+ exitQuiz: z.ZodOptional<z.ZodObject<{
178
+ grade: z.ZodNumber;
179
+ numQuestions: z.ZodNumber;
180
+ isComplete: z.ZodBoolean;
181
+ questionResults: z.ZodOptional<z.ZodArray<z.ZodObject<{
182
+ mode: z.ZodEnum<{
183
+ init: "init";
184
+ incomplete: "incomplete";
185
+ input: "input";
186
+ grading: "grading";
187
+ feedback: "feedback";
188
+ }>;
189
+ grade: z.ZodNumber;
190
+ pupilAnswer: z.ZodNullable<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>, z.ZodNull]>>>;
191
+ feedback: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
192
+ correct: "correct";
193
+ incorrect: "incorrect";
194
+ }>, z.ZodArray<z.ZodEnum<{
195
+ correct: "correct";
196
+ incorrect: "incorrect";
197
+ }>>]>>;
198
+ isPartiallyCorrect: z.ZodOptional<z.ZodBoolean>;
199
+ correctAnswer: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodUndefined]>>]>>;
200
+ usedHint: z.ZodOptional<z.ZodBoolean>;
201
+ }, z.core.$strip>>>;
202
+ }, z.core.$strip>>;
203
+ video: z.ZodOptional<z.ZodObject<{
204
+ played: z.ZodBoolean;
205
+ duration: z.ZodNumber;
206
+ timeElapsed: z.ZodNumber;
207
+ isComplete: z.ZodBoolean;
208
+ }, z.core.$strip>>;
209
+ intro: z.ZodOptional<z.ZodObject<{
210
+ worksheetAvailable: z.ZodOptional<z.ZodBoolean>;
211
+ worksheetDownloaded: z.ZodOptional<z.ZodBoolean>;
212
+ isComplete: z.ZodBoolean;
213
+ }, z.core.$strip>>;
125
214
  submissionId: z.ZodString;
126
215
  attachmentId: z.ZodString;
127
216
  courseId: z.ZodString;
128
217
  itemId: z.ZodString;
129
218
  pupilLoginHint: z.ZodString;
219
+ }, z.core.$strip>;
220
+ type UpsertPupilLessonProgressArgs = z.infer<typeof upsertPupilLessonProgressArgsSchema>;
221
+ declare const courseWorkPupilProgressSchema: z.ZodObject<{
130
222
  starterQuiz: z.ZodOptional<z.ZodObject<{
131
223
  grade: z.ZodNumber;
132
224
  numQuestions: z.ZodNumber;
@@ -190,8 +282,97 @@ declare const upsertPupilLessonProgressArgsSchema: z.ZodObject<{
190
282
  worksheetDownloaded: z.ZodOptional<z.ZodBoolean>;
191
283
  isComplete: z.ZodBoolean;
192
284
  }, z.core.$strip>>;
285
+ updatedAt: z.ZodString;
286
+ createdAt: z.ZodString;
287
+ submissionId: z.ZodString;
288
+ assignmentToken: z.ZodString;
289
+ courseWorkId: z.ZodString;
290
+ courseId: z.ZodString;
291
+ pupilLoginHint: z.ZodString;
292
+ gradeSubmitted: z.ZodOptional<z.ZodBoolean>;
193
293
  }, z.core.$strip>;
194
- type UpsertPupilLessonProgressArgs = z.infer<typeof upsertPupilLessonProgressArgsSchema>;
294
+ type CourseWorkPupilProgress = z.infer<typeof courseWorkPupilProgressSchema>;
295
+ declare const upsertCourseWorkPupilProgressArgsSchema: z.ZodObject<{
296
+ starterQuiz: z.ZodOptional<z.ZodObject<{
297
+ grade: z.ZodNumber;
298
+ numQuestions: z.ZodNumber;
299
+ isComplete: z.ZodBoolean;
300
+ questionResults: z.ZodOptional<z.ZodArray<z.ZodObject<{
301
+ mode: z.ZodEnum<{
302
+ init: "init";
303
+ incomplete: "incomplete";
304
+ input: "input";
305
+ grading: "grading";
306
+ feedback: "feedback";
307
+ }>;
308
+ grade: z.ZodNumber;
309
+ pupilAnswer: z.ZodNullable<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>, z.ZodNull]>>>;
310
+ feedback: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
311
+ correct: "correct";
312
+ incorrect: "incorrect";
313
+ }>, z.ZodArray<z.ZodEnum<{
314
+ correct: "correct";
315
+ incorrect: "incorrect";
316
+ }>>]>>;
317
+ isPartiallyCorrect: z.ZodOptional<z.ZodBoolean>;
318
+ correctAnswer: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodUndefined]>>]>>;
319
+ usedHint: z.ZodOptional<z.ZodBoolean>;
320
+ }, z.core.$strip>>>;
321
+ }, z.core.$strip>>;
322
+ exitQuiz: z.ZodOptional<z.ZodObject<{
323
+ grade: z.ZodNumber;
324
+ numQuestions: z.ZodNumber;
325
+ isComplete: z.ZodBoolean;
326
+ questionResults: z.ZodOptional<z.ZodArray<z.ZodObject<{
327
+ mode: z.ZodEnum<{
328
+ init: "init";
329
+ incomplete: "incomplete";
330
+ input: "input";
331
+ grading: "grading";
332
+ feedback: "feedback";
333
+ }>;
334
+ grade: z.ZodNumber;
335
+ pupilAnswer: z.ZodNullable<z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodArray<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>, z.ZodNull]>>>;
336
+ feedback: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
337
+ correct: "correct";
338
+ incorrect: "incorrect";
339
+ }>, z.ZodArray<z.ZodEnum<{
340
+ correct: "correct";
341
+ incorrect: "incorrect";
342
+ }>>]>>;
343
+ isPartiallyCorrect: z.ZodOptional<z.ZodBoolean>;
344
+ correctAnswer: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodUndefined]>>]>>;
345
+ usedHint: z.ZodOptional<z.ZodBoolean>;
346
+ }, z.core.$strip>>>;
347
+ }, z.core.$strip>>;
348
+ video: z.ZodOptional<z.ZodObject<{
349
+ played: z.ZodBoolean;
350
+ duration: z.ZodNumber;
351
+ timeElapsed: z.ZodNumber;
352
+ isComplete: z.ZodBoolean;
353
+ }, z.core.$strip>>;
354
+ intro: z.ZodOptional<z.ZodObject<{
355
+ worksheetAvailable: z.ZodOptional<z.ZodBoolean>;
356
+ worksheetDownloaded: z.ZodOptional<z.ZodBoolean>;
357
+ isComplete: z.ZodBoolean;
358
+ }, z.core.$strip>>;
359
+ submissionId: z.ZodString;
360
+ assignmentToken: z.ZodString;
361
+ courseWorkId: z.ZodString;
362
+ courseId: z.ZodString;
363
+ pupilLoginHint: z.ZodString;
364
+ }, z.core.$strip>;
365
+ type UpsertCourseWorkPupilProgressArgs = z.infer<typeof upsertCourseWorkPupilProgressArgsSchema>;
366
+ type CreateCourseWorkServiceArgs = {
367
+ courseId: string;
368
+ title: string;
369
+ description?: string;
370
+ lessonSlug: string;
371
+ programmeSlug: string;
372
+ unitSlug: string;
373
+ maxPoints: number;
374
+ teacherLoginHint: string;
375
+ };
195
376
 
196
377
  type FetchPupilResponseArgs = {
197
378
  courseId: string;
@@ -216,8 +397,11 @@ declare class OakGoogleClassroomAddOn {
216
397
  private sessionService;
217
398
  private classroomAttachmentService;
218
399
  private pupilProgressService;
400
+ private courseWorkService;
401
+ private courseWorkProgressService;
219
402
  private encryptionService;
220
403
  private firestoreClient;
404
+ private baseUrl;
221
405
  constructor(encryptionSecret: string, firestore: Firestore, googleOAuthClientId: string, googleOAuthClientSecret: string, googleOAuthCallbackApiRoute: string, sessionSecret: string, baseUrl: string);
222
406
  /**
223
407
  * Generates the Google OAuth sign-in URL for user authentication.
@@ -299,6 +483,69 @@ declare class OakGoogleClassroomAddOn {
299
483
  * @param submissionId - The Google Classroom submission ID
300
484
  */
301
485
  getPupilLessonProgress(submissionId: string, attachmentId: string, itemId: string): Promise<PupilLessonProgress | null>;
486
+ /**
487
+ * Resolves a teacher OAuth client by looking up the coursework's teacherLoginHint
488
+ * from Firestore (keyed by assignmentToken) and fetching stored credentials.
489
+ */
490
+ private resolveTeacherOAuthClientForCourseWork;
491
+ private getTeacherRefreshToken;
492
+ /**
493
+ * Lists the active Google Classroom courses for the authenticated teacher.
494
+ * @param accessToken - The teacher's current OAuth access token
495
+ * @param session - The teacher's encrypted session string
496
+ */
497
+ listCourses(accessToken: string, session: string): Promise<CourseListItem[]>;
498
+ /**
499
+ * Creates a CourseWork assignment with Link material and stores the
500
+ * assignmentToken → courseWork mapping in Firestore.
501
+ * @param args - Lesson and course details
502
+ * @param accessToken - The teacher's current OAuth access token
503
+ * @param session - The teacher's encrypted session string
504
+ */
505
+ createCourseWork(args: Omit<CreateCourseWorkServiceArgs, "teacherLoginHint">, accessToken: string, session: string): Promise<CourseWorkCreatedResult & {
506
+ assignmentToken: string;
507
+ }>;
508
+ /**
509
+ * Retrieves the pupil's submissionId for a given coursework item.
510
+ * Must be called with the pupil's session (userId=me lookup).
511
+ * @param courseId - The Google Classroom course ID
512
+ * @param courseWorkId - The courseWork item ID
513
+ * @param accessToken - The pupil's current OAuth access token
514
+ * @param session - The pupil's encrypted session string
515
+ */
516
+ getStudentSubmissionId(courseId: string, courseWorkId: string, accessToken: string, session: string): Promise<string>;
517
+ /**
518
+ * Upserts pupil progress for a link-based CourseWork assignment and syncs
519
+ * the grade to Google Classroom when the exit quiz is newly completed.
520
+ * @param args - The pupil progress data
521
+ * @param accessToken - The pupil's current OAuth access token
522
+ * @param session - The pupil's encrypted session string
523
+ */
524
+ upsertCourseWorkPupilProgress(args: UpsertCourseWorkPupilProgressArgs, accessToken: string, session: string): Promise<CourseWorkPupilProgress>;
525
+ /**
526
+ * Retrieves the stored CourseWork entity for a given assignmentToken.
527
+ * Does not require Google Classroom authentication — Firestore-only lookup.
528
+ * Returns null if the token is not found (caller should treat as 404).
529
+ * @param assignmentToken - The opaque token embedded in the lesson URL
530
+ */
531
+ getClassroomCourseWork(assignmentToken: string): Promise<ClassroomCourseWorkEntity | null>;
532
+ /**
533
+ * Retrieves pupil progress for a link-based CourseWork assignment.
534
+ * Does not require Google Classroom authentication.
535
+ * @param submissionId - The Google Classroom submission ID
536
+ */
537
+ getCourseWorkPupilProgress(submissionId: string, assignmentToken: string): Promise<CourseWorkPupilProgress | null>;
538
+ /**
539
+ * Turns in a student's submission using the student's own OAuth credentials.
540
+ * Must be called after grade sync (upsertCourseWorkPupilProgress) to ensure
541
+ * the grade is patched before the submission state changes to TURNED_IN.
542
+ * @param courseId - The Google Classroom course ID
543
+ * @param courseWorkId - The courseWork item ID
544
+ * @param submissionId - The student's submission ID
545
+ * @param accessToken - The student's current OAuth access token
546
+ * @param session - The student's encrypted session string
547
+ */
548
+ turnInCourseWorkSubmission(courseId: string, courseWorkId: string, submissionId: string, assignmentToken: string, accessToken: string, session: string): Promise<void>;
302
549
  getPostSubmissionState(args: FetchPupilResponseArgs, accessToken: string, session: string): Promise<string>;
303
550
  }
304
551