@oaknational/google-classroom-addon 1.27.0 → 1.28.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().optional()}),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.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(),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 pupilLessonProgressSchema,d as questionResultSchema,c as quizProgressSchema,r as tokenPayloadSchema,j as upsertPupilLessonProgressArgsSchema,l as userCredentialsEntitySchema,b as videoProgressSchema};
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.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(),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 pupilLessonProgressSchema,d as questionResultSchema,c as quizProgressSchema,r as tokenPayloadSchema,j as upsertPupilLessonProgressArgsSchema,l as userCredentialsEntitySchema,b 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().optional(),\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 pupilLessonProgressSchema = z.object({\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\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","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","pupilLessonProgressSchema","submissionId","pupilLoginHint","starterQuiz","exitQuiz","video","intro","updatedAt","upsertPupilLessonProgressArgsSchema"],"mappings":"mBAEO,IAAMA,EAAyCC,EAAEC,OAAO,CAC7DC,SAAUF,EAAEG,SACZC,OAAQJ,EAAEG,SACVE,WAAYL,EAAEG,SACdG,MAAON,EAAEG,SACTI,WAAYP,EAAEG,SACdK,cAAeR,EAAEG,SACjBM,SAAUT,EAAEG,SACZO,UAAWV,EAAEW,SAASC,WACtBC,iBAAkBb,EAAEG,SAASS,aAOlBE,EAA4Bd,EAAEC,OAAO,CAChDC,SAAUF,EAAEG,SACZY,OAAQf,EAAEG,SACVa,GAAIhB,EAAEG,SACNG,MAAON,EAAEG,SACTc,eAAgBjB,EAAEC,OAAO,CACvBiB,IAAKlB,EAAEG,WAETgB,eAAgBnB,EAAEC,OAAO,CACvBiB,IAAKlB,EAAEG,WAETiB,qBAAsBpB,EACnBC,OAAO,CACNiB,IAAKlB,EAAEG,WAERS,WACHR,OAAQJ,EAAEG,SACVO,UAAWV,EAAEW,SAASC,aC/BXS,EAAarB,EAAEG,SAGfmB,EAAwBtB,EAAEC,OAAO,CAC5CsB,YAAavB,EAAEG,SACfqB,UAAWxB,EAAEG,SACbsB,aAAczB,EAAEG,SAASS,WACzBc,kBAAmB1B,EAAEG,SAASS,WAC9Be,MAAO3B,EAAEG,SAASS,aAKPgB,EAAqB5B,EAAEC,OAAO,CACzC4B,MAAO7B,EAAEG,WAKE2B,EAA6B9B,EAAE+B,MAAM,CAChDhC,EACAC,EAAEG,SAAS6B,IAAI,GACfhC,EAAEG,SAAS6B,IAAI,KCtBJC,EAAkCnB,EAA0BoB,OACvE,CACEC,aAAcnC,EAAEG,SAChBiC,UAAWpC,EAAEG,SACbU,iBAAkBb,EAAEG,SAASS,aAQpByB,EAA8BrC,EAAEC,OAAO,CAClDuB,UAAWxB,EAAEG,SACbsB,aAAczB,EAAEG,SAASS,WACzBc,kBAAmB1B,EAAEG,SAASS,aCjBnB0B,EAA8B,CACzC,MACA,UACA,wBAMIC,EAAyBvC,EAAEwC,KAAK,CAAC,UAAW,cAE5CC,EAAoBzC,EAAE0C,MAAM,CAChC1C,EAAEG,SACFH,EAAEW,SACFX,EAAE2C,MAAM3C,EAAE0C,MAAM,CAAC1C,EAAEG,SAAUH,EAAEW,WAAWiC,YAC1C5C,EAAE6C,SAGSC,EAAuB9C,EAAEC,OAAO,CAC3C8C,KAAM/C,EAAEwC,KAAK,CAAC,OAAQ,aAAc,QAAS,UAAW,aACxDQ,MAAOhD,EAAEW,SACTsC,YAAaR,EAAkB7B,WAAWgC,WAC1CM,SAAUlD,EACP0C,MAAM,CAACH,EAAwBvC,EAAE2C,MAAMJ,KACvC3B,WACHuC,mBAAoBnD,EAAEoD,UAAUxC,WAChCyC,cAAerD,EACZ0C,MAAM,CAAC1C,EAAEG,SAAUH,EAAE2C,MAAM3C,EAAE0C,MAAM,CAAC1C,EAAEG,SAAUH,EAAEsD,iBAClD1C,WACH2C,SAAUvD,EAAEoD,UAAUxC,aAGX4C,EAAqBxD,EAAEC,OAAO,CACzC+C,MAAOhD,EAAEW,SACT8C,aAAczD,EAAEW,SAChB+C,WAAY1D,EAAEoD,UACdO,gBAAiB3D,EAAE2C,MAAMG,GAAsBlC,aAGpCgD,EAAsB5D,EAAEC,OAAO,CAC1C4D,OAAQ7D,EAAEoD,UACVU,SAAU9D,EAAEW,SACZoD,YAAa/D,EAAEW,SACf+C,WAAY1D,EAAEoD,YAGHY,EAAsBhE,EAAEC,OAAO,CAC1CgE,mBAAoBjE,EAAEoD,UAAUxC,WAChCsD,oBAAqBlE,EAAEoD,UAAUxC,WACjC8C,WAAY1D,EAAEoD,YAGHe,EAA4BnE,EAAEC,OAAO,CAChDmE,aAAcpE,EAAEG,SAChBgC,aAAcnC,EAAEG,SAChBD,SAAUF,EAAEG,SACZC,OAAQJ,EAAEG,SACVkE,eAAgBrE,EAAEG,SAElBmE,YAAad,EAAmB5C,WAChC2D,SAAUf,EAAmB5C,WAC7B4D,MAAOZ,EAAoBhD,WAC3B6D,MAAOT,EAAoBpD,WAE3B8D,UAAW1E,EAAEG,SACbiC,UAAWpC,EAAEG,WAKFwE,EAAsC3E,EAAEC,OAAO,CAC1DmE,aAAcpE,EAAEG,SAChBgC,aAAcnC,EAAEG,SAChBD,SAAUF,EAAEG,SACZC,OAAQJ,EAAEG,SACVkE,eAAgBrE,EAAEG,SAElBmE,YAAad,EAAmB5C,WAChC2D,SAAUf,EAAmB5C,WAC7B4D,MAAOZ,EAAoBhD,WAC3B6D,MAAOT,EAAoBpD"}
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 pupilLessonProgressSchema = z.object({\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\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","pupilLessonProgressSchema","submissionId","pupilLoginHint","starterQuiz","exitQuiz","video","intro","updatedAt","upsertPupilLessonProgressArgsSchema"],"mappings":"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"}
@@ -20,7 +20,7 @@ declare const classroomAttachmentEntitySchema: z.ZodObject<{
20
20
  uri: z.ZodString;
21
21
  }, z.core.$strip>>;
22
22
  itemId: z.ZodString;
23
- maxPoints: z.ZodOptional<z.ZodNumber>;
23
+ maxPoints: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
24
24
  attachmentId: z.ZodString;
25
25
  createdAt: z.ZodString;
26
26
  teacherLoginHint: z.ZodOptional<z.ZodString>;
@@ -262,9 +262,12 @@ declare class OakGoogleClassroomAddOn {
262
262
  /**
263
263
  * Resolves a teacher OAuth client by looking up the attachment's teacherLoginHint
264
264
  * and fetching the teacher's stored credentials from Firestore.
265
+ * Grade sync is intentionally skipped when the attachment's maxPoints is not a
266
+ * positive number (null, undefined, or 0), allowing teachers to disable automatic
267
+ * grading by setting the score to 0 or Unmarked.
265
268
  * In dev mode, falls back to GOOGLE_CLASSROOM_DEV_REFRESH_TOKEN if teacher credentials are not found.
266
269
  * @param attachmentId - The attachment ID to look up the teacher for.
267
- * @returns A GoogleOAuthClient authenticated with teacher credentials, or undefined if unavailable.
270
+ * @returns A GoogleOAuthClient authenticated with teacher credentials, or undefined if grade sync is disabled or credentials are unavailable.
268
271
  */
269
272
  private resolveTeacherOAuthClient;
270
273
  /**
package/dist/types.d.ts CHANGED
@@ -42,7 +42,7 @@ declare const classroomAttachmentEntitySchema: z.ZodObject<{
42
42
  uri: z.ZodString;
43
43
  }, z.core.$strip>>;
44
44
  itemId: z.ZodString;
45
- maxPoints: z.ZodOptional<z.ZodNumber>;
45
+ maxPoints: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
46
46
  attachmentId: z.ZodString;
47
47
  createdAt: z.ZodString;
48
48
  teacherLoginHint: z.ZodOptional<z.ZodString>;
@@ -82,7 +82,7 @@ declare const classroomAttachmentSchema: z.ZodObject<{
82
82
  uri: z.ZodString;
83
83
  }, z.core.$strip>>;
84
84
  itemId: z.ZodString;
85
- maxPoints: z.ZodOptional<z.ZodNumber>;
85
+ maxPoints: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
86
86
  }, z.core.$strip>;
87
87
  type ClassroomAttachment = z.infer<typeof classroomAttachmentSchema>;
88
88
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oaknational/google-classroom-addon",
3
- "version": "1.27.0",
3
+ "version": "1.28.0",
4
4
  "description": "Components and helpers for the Oak Google Classroom Add-on",
5
5
  "exports": {
6
6
  "./ui": {