@timeback/sdk 0.2.4-beta.20260422095241 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@timeback/sdk",
|
|
3
|
-
"version": "0.2.4
|
|
3
|
+
"version": "0.2.4",
|
|
4
4
|
"description": "Timeback SDK for frontend and backend integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -81,20 +81,20 @@
|
|
|
81
81
|
"test:unit": "bun run build && vitest run --config vitest.config.ts"
|
|
82
82
|
},
|
|
83
83
|
"dependencies": {
|
|
84
|
-
"@timeback/core": "0.
|
|
85
|
-
"@timeback/types": "0.
|
|
84
|
+
"@timeback/core": "0.3.0",
|
|
85
|
+
"@timeback/types": "0.3.0",
|
|
86
86
|
"zod": "^4.2.1"
|
|
87
87
|
},
|
|
88
88
|
"devDependencies": {
|
|
89
|
-
"@timeback/caliper": "0.
|
|
90
|
-
"@timeback/edubridge": "0.
|
|
89
|
+
"@timeback/caliper": "0.3.0",
|
|
90
|
+
"@timeback/edubridge": "0.3.0",
|
|
91
91
|
"@timeback/internal-cli-infra": "0.0.0",
|
|
92
92
|
"@timeback/internal-client-infra": "0.0.0",
|
|
93
93
|
"@timeback/internal-logger": "0.0.0",
|
|
94
94
|
"@timeback/internal-test": "0.0.0",
|
|
95
95
|
"@timeback/internal-utils": "0.0.0",
|
|
96
|
-
"@timeback/oneroster": "0.
|
|
97
|
-
"@timeback/powerpath": "0.
|
|
96
|
+
"@timeback/oneroster": "0.3.0",
|
|
97
|
+
"@timeback/powerpath": "0.3.0",
|
|
98
98
|
"@types/bun": "latest",
|
|
99
99
|
"@types/express": "^5.0.6",
|
|
100
100
|
"@types/react": "^19.1.8",
|
package/dist/chunk-nrn5gjey.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{z as Y}from"zod/v4";import{z}from"zod/v4";import{z as A}from"zod/v4";import{z as X}from"zod/v4";import{z as U}from"zod/v4";import{z as $}from"zod/v4";import{z as J}from"zod/v4";import{z as M}from"zod/v4";import{z as D}from"zod/v4";import{z as H}from"zod/v4";import{z as E}from"zod/v4";import{z as h}from"zod/v4";var Aq=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/,B=Y.string().min(1).regex(Aq,"must be a valid ISO 8601 datetime"),T=Y.string().min(1).regex(/^\d{4}-\d{2}-\d{2}$/,"must be a valid ISO 8601 date (YYYY-MM-DD)"),q=Y.string().trim().min(1),L=Y.enum(["Reading","Language","Vocabulary","Social Studies","Writing","Science","FastMath","Math","None","Other"]).meta({id:"TimebackSubject",description:"Subject area"}),Cq=Y.union([Y.literal(-1),Y.literal(0),Y.literal(1),Y.literal(2),Y.literal(3),Y.literal(4),Y.literal(5),Y.literal(6),Y.literal(7),Y.literal(8),Y.literal(9),Y.literal(10),Y.literal(11),Y.literal(12),Y.literal(13)]),Gq=Y.string().transform((V,F)=>{let Z=V.toLowerCase().trim().replaceAll("_"," ");if(Z==="")return F.addIssue({code:"custom",message:"must be a valid Timeback grade"}),Y.NEVER;let N=Z.replace(/\bgrade\b/g,"").replace(/(\d+)(st|nd|rd|th)\b/g,"$1").trim();if(N==="")return F.addIssue({code:"custom",message:"must be a valid Timeback grade"}),Y.NEVER;if(N==="pre-k"||N==="pk")return-1;if(N==="k")return 0;if(N==="middle school")return 7;let I=N.replace(/\s+/g,"").replace(/^0+/,"")||"0",f=Number(I);if(!Number.isInteger(f))return F.addIssue({code:"custom",message:"must be a valid Timeback grade"}),Y.NEVER;return f}),j=Y.union([Y.number(),Gq]).pipe(Cq).meta({id:"TimebackGrade",description:"Grade level (-1 = Pre-K, 0 = K, 1-12 = grades, 13 = AP)"}),Lq=Y.enum(["exempt","fully graded","not submitted","partially graded","submitted"]),Pq=Y.enum(["department","school","district","local","state","national"]),d=Y.enum(["administrator","aide","guardian","parent","proctor","relative","student","teacher"]),Sq=Y.enum(["administrator","proctor","student","teacher"]),Qq=Y.enum(["qti","text","audio","video","interactive","visual","course-material","assessment-bank"]),Rq=Y.enum(["qti-test","qti-question","qti-stimulus","qti-test-bank"]),Tq=Y.enum(["unit","course","resource-collection"]),hq=Y.enum(["choice","order","associate","match","hotspot","hottext","select-point","graphic-order","graphic-associate","graphic-gap-match","text-entry","extended-text","inline-choice","upload","slider","drawing","media","custom"]),Iq=Y.enum(["easy","medium","hard"]),u=Y.array(Y.object({source:Y.string(),learningObjectiveIds:Y.array(Y.string())})),s=Y.object({consecutive_failures:Y.number().int().min(1).optional(),stagnation_limit:Y.number().int().min(1).optional()}).optional(),fq=Y.enum(["powerpath-100","quiz","test-out","placement","unit-test","alpha-read-article"]).nullable(),dz=Y.object({imsx_codeMajor:Y.enum(["failure","success"]),imsx_severity:Y.enum(["error","warning","status"]),imsx_description:Y.string(),imsx_CodeMinor:Y.object({imsx_codeMinorField:Y.array(Y.object({imsx_codeMinorFieldName:Y.string(),imsx_codeMinorFieldValue:Y.string()}))}).optional()}),kq=z.union([z.url(),z.string().regex(/^urn:/,"Must be a URL or URN")]),Q=z.object({id:z.url(),type:z.literal("TimebackUser"),email:z.string()}),b=z.object({id:z.url(),type:z.literal("TimebackActivityContext"),subject:L,app:z.object({name:z.string()}),activity:z.object({id:z.url().optional(),name:z.string()}).strict().optional(),course:z.object({id:z.url().optional(),name:z.string().optional()}).strict(),process:z.boolean().optional()}),r=z.object({"@context":z.literal("http://purl.imsglobal.org/ctx/caliper/v1p2"),id:z.string().regex(/^urn:uuid:/,"Event id must start with urn:uuid:"),type:z.string(),eventTime:B,profile:z.literal("TimebackProfile"),actor:Q,action:z.string(),object:b,edApp:z.object({id:z.string(),name:z.string().optional()}).optional()}),c=z.object({type:z.enum(["totalQuestions","correctQuestions","xpEarned","masteredUnits"]),value:z.number()}),yq=z.object({id:z.url(),type:z.literal("TimebackActivityMetricsCollection"),attempt:z.number().optional(),items:z.array(c),extensions:z.record(z.string(),z.unknown()).optional()}),bq=r.extend({type:z.literal("ActivityEvent"),action:z.literal("Completed"),generated:yq}),t=z.object({type:z.enum(["active","inactive","waste","unknown","anti-pattern"]),value:z.number(),subType:z.string().optional()}),gq=z.object({id:z.url(),type:z.literal("TimebackTimeSpentMetricsCollection"),items:z.array(t)}),mq=r.extend({type:z.literal("TimeSpentEvent"),action:z.literal("SpentTime"),generated:gq}),sz=z.object({actor:Q,object:b,metrics:z.array(c).min(1,"metrics must contain at least one metric"),eventTime:B.optional(),metricsId:z.string().optional(),id:z.string().optional(),extensions:z.record(z.string(),z.unknown()).optional(),edApp:z.union([z.string(),z.record(z.string(),z.unknown())]).optional(),session:z.union([z.string(),z.record(z.string(),z.unknown())]).optional(),attempt:z.number().int().min(1).optional(),generatedExtensions:z.object({pctCompleteApp:z.number().optional()}).loose().optional()}).strict(),rz=z.object({actor:Q,object:b,metrics:z.array(t).min(1,"metrics must contain at least one metric"),eventTime:B.optional(),metricsId:z.string().optional(),id:z.string().optional(),extensions:z.record(z.string(),z.unknown()).optional(),edApp:z.union([z.string(),z.record(z.string(),z.unknown())]).optional(),session:z.union([z.string(),z.record(z.string(),z.unknown())]).optional()}).strict(),xq=z.union([bq,mq]),cz=z.object({sensor:z.string(),sendTime:B,dataVersion:z.literal("http://purl.imsglobal.org/ctx/caliper/v1p2"),data:z.array(xq)}),pq=z.enum(["AnnotationProfile","AssessmentProfile","ToolUseProfile","GeneralProfile","FeedbackProfile","MediaProfile","SurveyProfile","ResourceManagementProfile","ForumProfile","AssignableProfile","GradingProfile","ReadingProfile","SessionProfile","SearchProfile","ToolLaunchProfile","TimebackProfile"]),W=z.union([z.string(),z.record(z.string(),z.unknown())]),k=z.object({id:kq,type:z.string(),name:z.string().optional(),extensions:z.record(z.string(),z.unknown()).optional()}).strict(),a=z.object({"@context":z.string().optional(),id:z.string().regex(/^urn:uuid:/,"Event id must start with urn:uuid:"),type:z.string(),actor:z.union([z.string(),k,Q]),action:z.string(),object:W,eventTime:B,profile:pq,edApp:W.optional(),generated:W.optional(),target:W.optional(),referrer:W.optional(),group:W.optional(),membership:W.optional(),session:W.optional(),federatedSession:W.optional(),extensions:z.record(z.string(),z.unknown()).optional()}).strict(),tz=z.object({sensor:q,sendTime:B,dataVersion:z.literal("http://purl.imsglobal.org/ctx/caliper/v1p2"),data:z.array(a).min(1,"data must contain at least one event")}),az=z.object({sensor:q,events:z.array(a).min(1,"events must contain at least one event")}),ez=z.object({limit:z.number().int().positive().optional(),offset:z.number().int().min(0).optional(),sensor:q.optional(),startDate:B.optional(),endDate:B.optional(),actorId:q.optional(),actorEmail:z.email().optional()}).strict(),e=z.object({id:z.string(),name:z.string().optional(),isPartOf:W.optional(),extensions:z.record(z.string(),z.unknown()).optional()}),vq=z.object({id:z.string(),attempt:z.union([z.string(),z.record(z.string(),z.unknown())]).optional(),startedAtTime:B.optional(),endedAtTime:B.optional(),duration:z.string().optional(),extensions:z.record(z.string(),z.unknown()).optional()}),lq=z.object({id:z.string().optional(),scoreGiven:z.number(),maxScore:z.number().optional(),attempt:z.union([z.string(),z.record(z.string(),z.unknown())]).optional(),comment:z.string().optional(),extensions:z.record(z.string(),z.unknown()).optional()}),qD=z.object({actor:z.union([z.string(),k,Q]),object:e,edApp:W,id:z.string().optional(),eventTime:B.optional(),session:W.optional(),extensions:z.record(z.string(),z.unknown()).optional()}).strict(),zD=z.object({actor:z.union([z.string(),k,Q]),object:e,edApp:W,generated:vq.optional(),id:z.string().optional(),eventTime:B.optional(),session:W.optional(),extensions:z.record(z.string(),z.unknown()).optional()}).strict(),DD=z.object({actor:z.union([z.string(),k,Q]),object:z.string(),generated:lq,edApp:W,id:z.string().optional(),eventTime:B.optional(),session:W.optional(),extensions:z.record(z.string(),z.unknown()).optional()}).strict(),HD=A.object({name:q,targetUrl:A.url("targetUrl must be a valid URL"),secret:q,active:A.boolean(),sensor:A.string().nullable().optional(),description:A.string().nullable().optional()}).strict();var oq=A.enum(["string","number","boolean"]),iq=A.enum(["eq","neq","gt","gte","lt","lte","contains","notContains","in","notIn","startsWith","endsWith","regexp"]),JD=A.object({webhookId:q,filterKey:q,filterValue:q,filterType:oq,filterOperator:iq,active:A.boolean()}).strict();var y=X.string().uuid(),l=X.object({title:q,identifier:y,uri:q}),nq=X.object({identifier:y,uri:q,lastChangeDateTime:q,title:q,creator:q,officialSourceURL:X.string().optional(),publisher:X.string().optional(),description:X.string().optional(),language:X.string().optional(),version:X.string().optional(),caseVersion:X.string().optional(),adoptionStatus:X.string().optional(),statusStartDate:X.string().optional(),statusEndDate:X.string().optional(),licenseUri:X.string().optional(),notes:X.string().optional(),subject:X.array(X.string()).optional(),extensions:X.unknown().optional()}),dq=X.object({identifier:y,uri:q,lastChangeDateTime:q,fullStatement:q,alternativeLabel:X.string().optional(),CFItemType:X.string().optional(),cfItemType:X.string().optional(),humanCodingScheme:X.string().optional(),listEnumeration:X.string().optional(),abbreviatedStatement:X.string().optional(),conceptKeywords:X.array(X.string()).optional(),notes:X.string().optional(),subject:X.array(X.string()).optional(),language:X.string().optional(),educationLevel:X.array(X.string()).optional(),CFItemTypeURI:X.unknown().optional(),licenseURI:X.unknown().optional(),statusStartDate:X.string().optional(),statusEndDate:X.string().optional(),extensions:X.unknown().optional()}),uq=X.object({identifier:y,uri:q,lastChangeDateTime:q,associationType:q,originNodeURI:l,destinationNodeURI:l,sequenceNumber:X.number().optional(),extensions:X.unknown().optional()}),sq=X.object({CFItemTypes:X.array(X.unknown()).optional(),CFSubjects:X.array(X.unknown()).optional(),CFConcepts:X.array(X.unknown()).optional(),CFLicenses:X.array(X.unknown()).optional(),CFAssociationGroupings:X.array(X.unknown()).optional(),extensions:X.unknown().optional()}),VD=X.object({CFDocument:nq,CFItems:X.array(dq),CFAssociations:X.array(uq),CFDefinitions:sq.optional(),extensions:X.unknown().optional()}),o="https://www.w3.org/ns/credentials/v2",rq=U.array(U.url()).min(3,"@context must include W3C, CLR, and OB context URLs").refine((V)=>V[0]===o,`First @context entry must be "${o}"`),qq=U.object({id:U.url(),type:U.literal("Image"),caption:U.string().optional()}),g=U.object({id:U.url(),type:U.array(U.string()).min(1).refine((V)=>V.includes("Profile"),'type must include "Profile"'),name:U.string().optional(),url:U.string().url().optional(),phone:U.string().optional(),description:U.string().optional(),image:qq.optional(),email:U.string().email().optional()}),zq=U.object({type:q,proofPurpose:q,verificationMethod:q,created:U.iso.datetime(),proofValue:q,cryptosuite:U.string().optional()}),cq=U.object({id:q,type:U.literal("1EdTechJsonSchemaValidator2019")}),tq=U.object({id:U.string().url().optional(),narrative:U.string().optional()}),aq=U.object({id:U.url(),type:U.array(U.string()).min(1).refine((V)=>V.includes("Achievement"),'type must include "Achievement"'),name:q,description:q,criteria:tq,image:qq.optional(),achievementType:U.string().optional(),creator:g.optional()}),eq=U.object({type:U.literal("IdentityObject"),identityHash:q,identityType:q,hashed:U.boolean(),salt:U.string().optional()}),qz=U.enum(["exactMatchOf","isChildOf","isParentOf","isPartOf","isPeerOf","isRelatedTo","precedes","replacedBy"]),zz=U.object({type:U.literal("Association"),associationType:qz,sourceId:U.url(),targetId:U.url()}),Dz=U.object({"@context":U.array(U.string()).min(1),id:U.url(),type:U.array(U.string()).min(1).refine((V)=>V.includes("VerifiableCredential"),'type must include "VerifiableCredential"'),issuer:g,validFrom:U.iso.datetime(),validUntil:U.string().datetime().optional(),credentialSubject:U.object({id:U.string().optional()}),proof:U.array(zq).optional()}),Ez=U.object({id:U.string().url().optional(),type:U.array(U.string()).min(1).refine((V)=>V.includes("ClrSubject"),'type must include "ClrSubject"'),identifier:U.array(eq).optional(),achievement:U.array(aq).optional(),verifiableCredential:U.array(Dz).min(1),association:U.array(zz).optional()}),YD=U.object({"@context":rq,id:U.url(),type:U.array(U.string()).min(1).refine((V)=>V.includes("VerifiableCredential")&&V.includes("ClrCredential"),'type must include "VerifiableCredential" and "ClrCredential"'),issuer:g,name:q,description:U.string().optional(),validFrom:U.iso.datetime(),validUntil:U.iso.datetime().optional(),credentialSubject:Ez,proof:U.array(zq).optional(),credentialSchema:U.array(cq).optional()}),Hz=$.object({staging:$.string().meta({description:"Course ID in staging environment"}).optional(),production:$.string().meta({description:"Course ID in production environment"}).optional()}).meta({id:"CourseIds",description:"Environment-specific course IDs (populated by sync)"}),Jz=$.enum(["base","hole-filling","optional"]).meta({id:"CourseType",description:"Course classification type"}),Uz=$.enum(["draft","testing","published","deactivated"]).meta({id:"PublishStatus",description:"Course publication status"}),Vz=$.object({dailyXp:$.number().int().positive().meta({description:"Target XP to earn per day"}).optional(),dailyLessons:$.number().int().positive().meta({description:"Target lessons to complete per day"}).optional(),dailyActiveMinutes:$.number().int().positive().meta({description:"Target active learning minutes per day"}).optional(),dailyAccuracy:$.number().int().min(0).max(100).meta({description:"Target accuracy percentage (0-100)"}).optional(),dailyMasteredUnits:$.number().int().positive().meta({description:"Target units to master per day"}).optional()}).meta({id:"CourseGoals",description:"Daily learning goals for a course"}),Xz=$.object({totalXp:$.number().int().positive().meta({description:"Total XP available in the course"}).optional(),totalLessons:$.number().int().positive().meta({description:"Total number of lessons/activities"}).optional(),totalGrades:$.number().int().positive().meta({description:"Total grade levels covered"}).optional()}).meta({id:"CourseMetrics",description:"Aggregate metrics for a course"}),Dq=$.object({courseType:Jz.optional(),isSupplemental:$.boolean().meta({description:"Whether this is supplemental to a base course"}).optional(),isCustom:$.boolean().meta({description:"Whether this is a custom course for an individual student"}).optional(),publishStatus:Uz.optional(),contactEmail:$.email().meta({description:"Contact email for course issues"}).optional(),primaryApp:$.string().meta({description:"Primary application identifier"}).optional(),goals:Vz.optional(),metrics:Xz.optional()}).meta({id:"CourseMetadata",description:"Course metadata (matches API metadata object)"}),Eq=$.object({courseCode:$.string().meta({description:"Course code (e.g., 'MATH101')"}).optional(),level:$.string().meta({description:"Course level (e.g., 'AP', 'Honors')"}).optional(),metadata:Dq.optional()}).meta({id:"CourseDefaults",description:"Default properties that apply to all courses unless overridden"}),i=$.object({level:$.string().meta({description:"Course level for this environment"}).optional(),sensor:$.url().meta({description:"Caliper sensor endpoint URL for this environment"}).optional(),launchUrl:$.url().meta({description:"LTI launch URL for this environment"}).optional(),metadata:Dq.optional()}).meta({id:"CourseEnvOverrides",description:"Environment-specific course overrides (non-identity fields)"}),Yz=$.object({staging:i.meta({description:"Overrides for staging environment"}).optional(),production:i.meta({description:"Overrides for production environment"}).optional()}).meta({id:"CourseOverrides",description:"Per-environment course overrides"}),_z=Eq.extend({subject:L.meta({description:"Subject area for this course"}),grade:j.meta({description:"Grade level (-1 = Pre-K, 0 = K, 1-12 = grades, 13 = AP)"}).optional(),ids:Hz.nullable().optional(),sensor:$.url().meta({description:"Caliper sensor endpoint URL for this course"}).optional(),launchUrl:$.url().meta({description:"LTI launch URL for this course"}).optional(),overrides:Yz.optional()}).meta({id:"CourseConfig",description:"Configuration for a single course. Must have either grade or courseCode (or both)."}),$D=$.object({$schema:$.string().meta({description:"JSON Schema reference for editor support"}).optional(),name:$.string().min(1,"App name is required").meta({description:"Display name for your app"}),defaults:Eq.meta({description:"Default properties applied to all courses"}).optional(),courses:$.array(_z).min(1,"At least one course is required").meta({description:"Courses available in this app"}),sensor:$.url().meta({description:"Default Caliper sensor endpoint URL for all courses"}).optional(),launchUrl:$.url().meta({description:"Default LTI launch URL for all courses"}).optional(),studio:$.object({telemetry:$.boolean().meta({description:"Enable anonymous usage telemetry for Studio (default: true)"}).optional().default(!0)}).meta({description:"Studio-specific configuration"}).optional()}).meta({id:"TimebackConfig",title:"Timeback Config",description:"Configuration schema for timeback.config.json files"}).refine((V)=>{return V.courses.every((F)=>F.grade!==void 0||F.courseCode!==void 0)},{message:"Each course must have either a grade or a courseCode",path:["courses"]}).refine((V)=>{let Z=V.courses.filter((N)=>N.grade!==void 0).map((N)=>`${N.subject}:${N.grade}`);return new Set(Z).size===Z.length},{message:"Duplicate (subject, grade) pair found; each must be unique",path:["courses"]}).refine((V)=>{let Z=V.courses.filter((N)=>N.courseCode!==void 0).map((N)=>N.courseCode);return new Set(Z).size===Z.length},{message:"Duplicate courseCode found; each must be unique",path:["courses"]}).refine((V)=>{return V.courses.every((F)=>{if(F.sensor!==void 0||V.sensor!==void 0)return!0;return[F.launchUrl,V.launchUrl,F.overrides?.staging?.launchUrl,F.overrides?.production?.launchUrl].filter(Boolean).length>0})},{message:"Each course must have an effective sensor. Either set `sensor` explicitly (top-level or per-course), or provide a `launchUrl` so sensor can be derived from its origin.",path:["courses"]}),C=J.union([B,T]),ND=J.object({id:J.string(),role:J.string(),beginDate:C.nullable(),endDate:C.nullable(),metadata:J.object({goals:J.object({dailyXp:J.number().optional()}).optional(),metrics:J.object({totalXp:J.number().optional(),totalLessons:J.number().optional()}).optional()}).optional(),course:J.object({id:J.string(),title:J.string(),subjects:J.array(J.string()).nullable(),grades:J.array(J.string()).nullable()}),school:J.object({id:J.string(),name:J.string()}),testOutSupported:J.boolean(),testOutEligible:J.boolean()}),$z=J.object({activityMetrics:J.object({xpEarned:J.number(),totalQuestions:J.number(),correctQuestions:J.number(),masteredUnits:J.number()}),timeSpentMetrics:J.object({activeSeconds:J.number(),inactiveSeconds:J.number(),wasteSeconds:J.number()}),apps:J.array(J.string())}),Fz=J.record(J.string(),J.record(J.string(),$z)),OD=J.object({message:J.string(),enrollmentId:J.string(),startDate:C,endDate:C,facts:Fz,factsByApp:J.unknown()}),Hq=J.object({email:J.email().optional(),studentId:q.optional()}).superRefine((V,F)=>{if(!V.email&&!V.studentId)F.addIssue({code:J.ZodIssueCode.custom,message:"must provide either email or studentId",path:["email"]}),F.addIssue({code:J.ZodIssueCode.custom,message:"must provide either email or studentId",path:["studentId"]})}),ZD=J.object({subject:q,grade:q,courseId:q,orgSourcedId:q.optional()});var BD=J.object({userId:q}),KD=J.object({sourcedId:q.optional(),role:Sq.optional(),beginDate:B.optional(),metadata:J.record(J.string(),J.unknown()).optional()}),MD=J.object({fields:J.string().optional(),limit:J.number().int().positive().optional(),offset:J.number().int().nonnegative().optional(),sort:J.string().optional(),orderBy:J.enum(["asc","desc"]).optional(),filter:J.string().optional(),search:J.string().optional(),roles:J.array(d).min(1),orgSourcedIds:J.array(q).optional()}),WD=Hq.extend({startDate:C,endDate:C,timezone:J.string().optional()}),jD=Hq.extend({weekDate:C,timezone:J.string().optional()}),wD=J.object({enrollmentId:q,startDate:C.optional(),endDate:C.optional(),timezone:J.string().optional()}),CD=M.object({email:M.email()}),GD=M.object({name:q.optional(),timeback_id:q.optional(),grade:q.optional(),subject:q.optional(),all:M.boolean().optional()}),LD=M.object({student_email:M.email(),timeback_id:q.optional(),subject:q.optional(),grade_rank:M.number().int().min(0).max(12).optional(),assessment_line_item_sourced_id:q.optional(),assessment_result_sourced_id:q.optional()}).superRefine((V,F)=>{let Z=!!V.timeback_id,N=!!V.subject,S=V.grade_rank!==void 0;if(!Z&&!N)F.addIssue({code:M.ZodIssueCode.custom,message:"must provide either timeback_id or subject",path:["timeback_id"]}),F.addIssue({code:M.ZodIssueCode.custom,message:"must provide either timeback_id or subject",path:["subject"]});if(S&&!N)F.addIssue({code:M.ZodIssueCode.custom,message:"grade_rank requires subject",path:["grade_rank"]});let I=!!V.assessment_line_item_sourced_id,f=!!V.assessment_result_sourced_id;if(I!==f)F.addIssue({code:M.ZodIssueCode.custom,message:"assessment_line_item_sourced_id and assessment_result_sourced_id must be provided together",path:I?["assessment_result_sourced_id"]:["assessment_line_item_sourced_id"]})}),PD=M.object({student_email:M.email(),assignment_id:M.number().int().positive().optional(),timeback_id:q.optional(),subject:q.optional(),grade_rank:M.number().int().min(0).max(12).optional()}).superRefine((V,F)=>{let Z=V.assignment_id!==void 0,N=!!V.timeback_id,S=!!V.subject&&V.grade_rank!==void 0;if(!Z&&!N&&!S)F.addIssue({code:M.ZodIssueCode.custom,message:"Either assignment_id, timeback_id, or (subject and grade_rank) is required",path:["assignment_id"]});if(V.grade_rank!==void 0&&!V.subject)F.addIssue({code:M.ZodIssueCode.custom,message:"grade_rank requires subject",path:["grade_rank"]})}),K=D.enum(["active","tobedeleted"]),O=D.record(D.string(),D.unknown()).nullable().optional(),_=D.object({sourcedId:q,type:D.string().optional(),href:D.string().optional()}).strict(),Nz=D.enum(["academicSession","assessmentLineItem","category","class","course","demographics","enrollment","gradingPeriod","lineItem","org","resource","result","scoreScale","student","teacher","term","user","componentResource","courseComponent"]),Oz=D.object({sourcedId:q,type:Nz,href:D.url()}).strict(),G=D.union([T,B]).transform((V)=>V.includes("T")?V:`${V}T00:00:00Z`),Zz=D.object({learningObjectiveId:D.string(),score:D.number().optional(),textScore:D.string().optional()}),Jq=D.array(D.object({source:D.string(),learningObjectiveResults:D.array(Zz)})),Bz=D.object({roleType:D.enum(["primary","secondary"]),role:d,org:_,userProfile:D.string().optional(),metadata:O,beginDate:G.optional(),endDate:G.optional()}).strict(),QD=D.object({sourcedId:q.describe("sourcedId must be a non-empty string"),status:K.optional(),enabledUser:D.union([D.boolean(),D.enum(["true","false"]).transform((V)=>V==="true")]),givenName:q.describe("givenName must be a non-empty string"),familyName:q.describe("familyName must be a non-empty string"),middleName:q.nullable().optional(),preferredFirstName:q.nullable().optional(),preferredMiddleName:q.nullable().optional(),preferredLastName:q.nullable().optional(),username:q.nullable().optional(),email:D.email(),userMasterIdentifier:D.string().nullable().optional(),roles:D.array(Bz).min(1,"roles must include at least one role"),userIds:D.array(D.object({type:q,identifier:q}).strict()).optional(),agents:D.array(_).optional(),primaryOrg:_.optional(),grades:D.array(j).optional(),sms:q.nullable().optional(),phone:q.nullable().optional(),pronouns:q.nullable().optional(),password:q.nullable().optional(),metadata:O}).strict(),RD=D.object({sourcedId:q.describe("sourcedId must be a non-empty string").optional(),status:K,title:q.describe("title must be a non-empty string"),org:_,courseCode:q.nullable().optional(),subjects:D.array(L).nullable().optional(),subjectCodes:D.array(D.string()).nullable().optional(),grades:D.array(j).nullable().optional(),level:q.nullable().optional(),academicSession:_.nullable().optional(),schoolYear:Oz.nullable().optional(),gradingScheme:q.nullable().optional(),metadata:O}).strict(),TD=D.object({sourcedId:q.describe("sourcedId must be a non-empty string").optional(),status:K.optional(),title:q.describe("title must be a non-empty string"),terms:D.array(_).min(1,"terms must have at least one item"),course:_,org:_,classCode:q.nullable().optional(),classType:D.enum(["homeroom","scheduled"]).optional(),location:q.nullable().optional(),grades:D.array(j).optional(),subjects:D.array(L).optional(),subjectCodes:D.array(q).optional(),periods:D.array(q).optional(),metadata:O}).strict(),w=D.enum(["true","false"]),hD=D.object({sourcedId:q.describe("sourcedId must be a non-empty string").optional(),status:K.optional(),user:_,class:_,school:_.optional(),role:D.enum(["administrator","proctor","student","teacher"]),primary:w.optional(),beginDate:T.optional(),endDate:T.optional(),metadata:O}).strict(),ID=D.object({sourcedId:q.optional(),title:q.describe("title must be a non-empty string"),status:K,weight:D.number().nullable().optional(),metadata:O}).strict(),fD=D.object({sourcedId:q.optional(),title:q.describe("title must be a non-empty string"),class:_,school:_,category:_,assignDate:G,dueDate:G,status:K.optional(),description:D.string().nullable().optional(),resultValueMin:D.number().nullable().optional(),resultValueMax:D.number().nullable().optional(),gradingPeriod:_.nullable().optional(),academicSession:_.nullable().optional(),scoreScale:_.nullable().optional(),learningObjectiveSet:u.nullable().optional(),metadata:O}).strict(),kD=D.object({sourcedId:q.optional(),lineItem:_,student:_,class:_.nullable().optional(),scoreDate:G,scoreStatus:D.enum(["exempt","fully graded","not submitted","partially graded","submitted"]),score:D.number().nullable().optional(),textScore:D.string().nullable().optional(),status:K,scoreScale:_.nullable().optional(),comment:D.string().nullable().optional(),learningObjectiveSet:Jq.nullable().optional(),inProgress:D.string().optional(),incomplete:D.string().optional(),late:D.string().optional(),missing:D.string().optional(),metadata:O}).strict(),yD=D.object({sourcedId:q.optional(),title:q.describe("title must be a non-empty string"),status:K,type:q,class:_,course:_.nullable().optional(),scoreScaleValue:D.array(D.object({itemValueLHS:q,itemValueRHS:q,value:D.string().optional(),description:D.string().optional()}).strict()),metadata:O}).strict(),bD=D.object({sourcedId:q.optional(),status:K,dateLastModified:B.optional(),title:q.describe("title must be a non-empty string"),description:D.string().nullable().optional(),class:_.nullable().optional(),parentAssessmentLineItem:_.nullable().optional(),scoreScale:_.nullable().optional(),resultValueMin:D.number().nullable().optional(),resultValueMax:D.number().nullable().optional(),component:_.nullable().optional(),componentResource:_.nullable().optional(),learningObjectiveSet:D.array(D.object({source:D.string(),learningObjectiveIds:D.array(D.string())})).optional().nullable(),course:_.nullable().optional(),metadata:O}).strict(),gD=D.object({sourcedId:q.optional(),status:K,dateLastModified:B.optional(),metadata:O,assessmentLineItem:_,student:_,score:D.number().nullable().optional(),textScore:D.string().nullable().optional(),scoreDate:G,scoreScale:_.nullable().optional(),scorePercentile:D.number().nullable().optional(),scoreStatus:D.enum(["exempt","fully graded","not submitted","partially graded","submitted"]),comment:D.string().nullable().optional(),learningObjectiveSet:Jq.nullable().optional(),inProgress:D.string().nullable().optional(),incomplete:D.string().nullable().optional(),late:D.string().nullable().optional(),missing:D.string().nullable().optional()}).strict(),mD=D.object({sourcedId:q.optional(),status:K.optional(),name:q.describe("name must be a non-empty string"),type:Pq,identifier:D.string().nullish(),parent:_.optional(),metadata:O}).strict(),xD=D.object({sourcedId:q.optional(),status:K.optional(),name:q.describe("name must be a non-empty string"),type:D.literal("school").default("school"),identifier:D.string().nullish(),parent:_.optional(),metadata:O}).strict(),pD=D.object({sourcedId:q.describe("sourcedId must be a non-empty string"),status:K,title:q.describe("title must be a non-empty string"),startDate:G,endDate:G,type:D.enum(["gradingPeriod","semester","schoolYear","term"]),schoolYear:q.describe("schoolYear must be a non-empty string"),org:_,parent:_.optional(),children:D.array(_).optional(),metadata:O}).strict(),vD=D.object({sourcedId:q,title:q.describe("title must be a non-empty string"),courseComponent:_,resource:_,status:K,sortOrder:D.number().optional(),lessonType:fq.optional(),metadata:O}).strict(),lD=D.object({sourcedId:q.optional(),title:q.describe("title must be a non-empty string"),course:_,status:K,sortOrder:D.number().optional(),parent:_.nullable().optional(),courseComponent:_.nullable().optional(),prerequisites:D.array(D.string()).nullable().optional(),prerequisiteCriteria:D.string().nullable().optional(),unlockDate:G.nullable().optional(),metadata:O}).strict().transform(({courseComponent:V,parent:F,...Z})=>({...Z,parent:F===void 0?V??void 0:F})),oD=D.object({sourcedId:q.describe("sourcedId must be a non-empty string"),role:D.enum(["student","teacher"]),primary:w.optional(),beginDate:T.optional(),endDate:T.optional(),metadata:O}).strict(),iD=D.object({agentSourcedId:q.describe("agentSourcedId must be a non-empty string")}).strict(),nD=D.object({applicationName:q.describe("applicationName must be a non-empty string"),credentials:D.object({username:q.describe("username must be a non-empty string"),password:q.describe("password must be a non-empty string")})}).strict(),dD=D.object({sourcedId:q.describe("sourcedId must be a non-empty string"),status:K.optional(),metadata:O,birthDate:D.string().regex(/^\d{4}-\d{2}-\d{2}$/).nullable().optional(),sex:D.enum(["male","female"]).nullable().optional(),americanIndianOrAlaskaNative:w.nullable().optional(),asian:w.nullable().optional(),blackOrAfricanAmerican:w.nullable().optional(),nativeHawaiianOrOtherPacificIslander:w.nullable().optional(),white:w.nullable().optional(),demographicRaceTwoOrMoreRaces:w.nullable().optional(),hispanicOrLatinoEthnicity:w.nullable().optional(),countryOfBirthCode:D.string().nullable().optional(),stateOfBirthAbbreviation:D.string().nullable().optional(),cityOfBirth:D.string().nullable().optional(),publicSchoolResidenceStatus:D.string().nullable().optional()}).strict(),P=D.object({type:Qq,subject:L.nullish(),grades:D.array(j).nullish(),language:D.string().nullish(),xp:D.number().nullish(),url:D.url().nullish(),keywords:D.array(D.string()).nullish(),learningObjectiveSet:u.nullish(),lessonType:D.string().nullish()}).passthrough(),Kz=P.extend({type:D.literal("qti"),subType:Rq,questionType:hq.optional(),difficulty:Iq.optional()}),Mz=P.extend({type:D.literal("text"),format:D.string(),author:D.string().optional(),pageCount:D.number().optional()}),Wz=P.extend({type:D.literal("audio"),duration:D.string().regex(/^\d{2}:\d{2}:\d{2}(\.\d{2})?$/).optional(),format:D.string(),speaker:D.string().optional()}),jz=P.extend({type:D.literal("video"),duration:D.string().regex(/^\d{2}:\d{2}:\d{2}(\.\d{2})?$/).optional(),captionsAvailable:D.boolean().optional(),format:D.string()}),wz=P.extend({type:D.literal("interactive"),launchUrl:D.url().optional(),toolProvider:D.string().optional(),instructionalMethod:D.string().optional(),courseIdOnFail:D.string().nullable().optional(),fail_fast:s}),Az=P.extend({type:D.literal("visual"),format:D.string(),resolution:D.string().optional()}),Cz=P.extend({type:D.literal("course-material"),subType:Tq,author:D.string().optional(),format:D.string(),instructionalMethod:D.string().optional()}),Gz=P.extend({type:D.literal("assessment-bank"),resources:D.array(D.string())}),Lz=D.discriminatedUnion("type",[Kz,Mz,Wz,jz,wz,Az,Cz,Gz]),Pz=new Set(["type","subject","grades","language","xp","url","keywords","learningObjectiveSet","lessonType","subType","questionType","difficulty","format","author","pageCount","duration","speaker","captionsAvailable","launchUrl","toolProvider","instructionalMethod","courseIdOnFail","resolution","resources"]),Sz=D.record(D.string(),D.unknown()).superRefine((V,F)=>{if("fail_fast"in V){let N=s.safeParse(V.fail_fast);if(!N.success)for(let S of N.error.issues)F.addIssue({...S,path:["fail_fast",...S.path]})}let Z=Object.keys(V).filter((N)=>Pz.has(N));if(Z.length===0)return;F.addIssue({code:"custom",message:`metadata keys ${Z.map((N)=>`\`${N}\``).join(", ")} require a valid \`type\` discriminator`})}),uD=D.object({sourcedId:q.optional(),title:q.describe("title must be a non-empty string"),vendorResourceId:q.describe("vendorResourceId must be a non-empty string"),roles:D.array(D.enum(["primary","secondary"])).optional(),importance:D.enum(["primary","secondary"]).optional(),vendorId:q.nullable().optional(),applicationId:q.nullable().optional(),status:K.optional(),metadata:D.union([Lz,Sz]).nullable().optional()}).strict(),Qz=D.object({url:q.describe("courseStructure.url must be a non-empty string"),skillCode:q.describe("courseStructure.skillCode must be a non-empty string"),lessonCode:q.describe("courseStructure.lessonCode must be a non-empty string"),title:q.describe("courseStructure.title must be a non-empty string"),"unit-title":q.describe("courseStructure.unit-title must be a non-empty string"),status:q.describe("courseStructure.status must be a non-empty string"),xp:D.number()}).loose(),sD=D.object({course:D.object({sourcedId:q.describe("course.sourcedId must be a non-empty string").optional(),title:q.describe("course.title must be a non-empty string"),org:_,status:K,metadata:O}).strict(),courseStructure:D.record(D.string(),Qz)}).strict(),Rz=D.object({student:_}).loose(),rD=D.array(Rz).min(1,"results must have at least one item"),Tz=H.enum(["edulastic","mastery-track"]),hz=H.enum(["powerpath-100","quiz","test-out","placement","unit-test","alpha-read-article"]),Uq=H.array(j),Vq=H.record(H.string(),H.unknown()).optional(),Xq=H.object({courseId:q,lessonTitle:q.optional(),launchUrl:q.optional(),toolProvider:Tz,unitTitle:q.optional(),courseComponentSourcedId:q.optional(),vendorId:q.optional(),description:q.optional(),resourceMetadata:Vq.nullable().optional(),grades:Uq}),tD=Xq.extend({lessonType:H.literal("test-out"),xp:H.number()}),aD=Xq.extend({lessonType:H.literal("placement"),courseIdOnFail:q.nullable().optional(),xp:H.number().optional()});var n=H.object({courseId:q,lessonType:hz,lessonTitle:q.optional(),unitTitle:q.optional(),courseComponentSourcedId:q.optional(),resourceMetadata:Vq.nullable().optional(),xp:H.number().optional(),grades:Uq.optional(),courseIdOnFail:q.nullable().optional()}),eD=H.discriminatedUnion("testType",[n.extend({testType:H.literal("qti"),qti:H.object({url:H.url(),title:q.optional(),metadata:H.record(H.string(),H.unknown()).optional()})}),n.extend({testType:H.literal("assessment-bank"),assessmentBank:H.object({resources:H.array(H.object({url:H.url(),title:q.optional(),metadata:H.record(H.string(),H.unknown()).optional()})).min(1)})})]),qE=H.object({student:q,lesson:q}),zE=H.object({student:q,lesson:q}),DE=H.object({courseId:q,userId:q,classId:q.optional()}),R=H.object({type:H.enum(["component","resource"]),id:q}),Iz=H.union([H.object({type:H.literal("set-skipped"),payload:H.object({target:R,value:H.boolean()})}),H.object({type:H.literal("add-custom-resource"),payload:H.object({resource_id:q,parent_component_id:q,skipped:H.boolean().optional()})}),H.object({type:H.literal("move-item-before"),payload:H.object({target:R,reference_id:q})}),H.object({type:H.literal("move-item-after"),payload:H.object({target:R,reference_id:q})}),H.object({type:H.literal("move-item-to-start"),payload:H.object({target:R})}),H.object({type:H.literal("move-item-to-end"),payload:H.object({target:R})}),H.object({type:H.literal("change-item-parent"),payload:H.object({target:R,new_parent_id:q,position:H.enum(["start","end"]).optional()})})]),EE=H.object({operation:Iz,reason:q.optional()}),HE=H.object({studentId:q,componentResourceId:q,result:H.object({status:H.enum(["active","tobedeleted"]),metadata:H.record(H.string(),H.unknown()).optional(),score:H.number().optional(),textScore:q.optional(),scoreDate:H.string().datetime(),scorePercentile:H.number().optional(),scoreStatus:Lq,comment:q.optional(),learningObjectiveSet:H.array(H.object({source:q,learningObjectiveResults:H.array(H.object({learningObjectiveId:q,score:H.number().optional(),textScore:q.optional()}))})).optional(),inProgress:q.optional(),incomplete:q.optional(),late:q.optional(),missing:q.optional()})}),JE=H.object({student:q,lesson:q,applicationName:q.optional(),testId:q.optional(),skipCourseEnrollment:H.boolean().optional()}),UE=H.object({student:q,subject:L}),VE=H.object({student:q,lesson:q}),XE=H.object({userId:q}),YE=H.object({userId:q,subject:H.enum(["Math","Reading","Language","Science"])}),_E=H.object({student:q,subject:L,grade:j,testName:q.optional()}),$E=H.object({testName:q}),fz=H.object({student:q,subject:L,grade:j,testName:q.optional()}),FE=H.object({items:H.array(fz)}),NE=H.object({spreadsheetUrl:H.url(),sheet:q}),OE=H.object({student:q,status:H.enum(["assigned","in_progress","completed","failed","expired","cancelled"]).optional(),subject:q.optional(),grade:j.optional(),limit:H.number().int().positive().max(3000).optional(),offset:H.number().int().nonnegative().optional()}),ZE=H.object({student:q.optional(),status:H.enum(["assigned","in_progress","completed","failed","expired","cancelled"]).optional(),subject:q.optional(),grade:j.optional(),limit:H.number().int().positive().max(3000).optional(),offset:H.number().int().nonnegative().optional()}),BE=H.object({student:q,question:q,response:H.union([q,H.array(q)]).optional(),responses:H.record(H.string(),H.union([q,H.array(q)])).optional(),lesson:q,rendererOutcomes:H.object({score:H.number(),maxScore:H.number().min(0),isCorrect:H.boolean()}).optional(),playerState:H.string().optional()}).refine((V)=>V.response!==void 0||V.responses!==void 0,{message:"Either 'response' or 'responses' must be provided",path:["response","responses"]}).transform((V)=>{if(V.response!==void 0&&V.responses===void 0)return{...V,responses:{RESPONSE:V.response}};return V}),KE=H.object({student:q,lesson:q,attempt:H.number().int().positive().optional()}),ME=H.object({student:q,lesson:q}),WE=H.object({student:q,lesson:q}),jE=H.object({student:q,course:q}),wE=H.object({student:q,lesson:q,applicationName:q.optional()}),AE=H.object({student:q,subject:L}),CE=H.object({oneRosterSourcedId:q,subject:q}),GE=H.object({courseIds:H.array(q).min(1),rendererId:q,rendererUrl:H.url(),rendererVersion:q.optional(),suppressFeedback:H.boolean().optional(),suppressCorrectResponse:H.boolean().optional()}),LE=H.object({status:H.enum(["active","tobedeleted"]).optional()}),Yq=E.enum(["choice","text-entry","extended-text","inline-choice","match","order","associate","select-point","graphic-order","graphic-associate","graphic-gap-match","hotspot","hottext","slider","drawing","media","upload"]),m=E.enum(["single","multiple","ordered","record"]),x=E.enum(["identifier","boolean","integer","float","string","point","pair","directedPair","duration","file","uri"]),kz=E.enum(["easy","medium","hard"]),yz=E.enum(["linear","nonlinear"]),bz=E.enum(["individual","simultaneous"]),p=E.enum(["show","hide"]),_q=E.enum(["test","item","stimulus"]),SE=E.enum(["QUESTION","LESSON"]),gz=E.object({value:E.array(E.string())}).strict(),$q=E.object({identifier:q,cardinality:m,baseType:x.optional(),correctResponse:gz}).strict(),Fq=E.object({identifier:q,cardinality:m,baseType:x.optional()}).strict(),Nq=E.object({identifier:q,cardinality:m.optional(),baseType:x,normalMaximum:E.number().optional(),normalMinimum:E.number().optional(),defaultValue:E.object({value:E.unknown().optional()}).strict().optional()}).strict(),mz=E.object({outcomeIdentifier:q,variableIdentifier:q}).strict(),Oq=E.object({templateType:E.enum(["match_correct","map_response"]),responseDeclarationIdentifier:q,outcomeIdentifier:q,correctResponseIdentifier:q,incorrectResponseIdentifier:q,inlineFeedback:mz.optional()}).strict(),xz=E.object({source:q,learningObjectiveIds:E.array(E.string())}).strict(),v=E.object({subject:E.string().optional(),grade:j.optional(),difficulty:kz.optional(),learningObjectiveSet:E.array(xz).optional()}).loose(),Zq=E.object({outcomeIdentifier:q,identifier:q,showHide:p,content:E.string(),title:E.string()}).strict(),Bq=E.object({outcomeIdentifier:q,identifier:q,showHide:p,content:E.string(),class:E.array(E.string())}).strict(),Kq=E.object({outcomeIdentifier:q,identifier:q,showHide:p,content:E.string(),class:E.array(E.string())}).strict(),Mq=E.object({href:q,type:q}).strict(),Wq=E.object({id:q,support:E.string(),content:E.string()}).strict(),QE=E.object({page:E.number().int().positive().optional(),limit:E.number().int().positive().optional(),sort:E.string().optional(),order:E.enum(["asc","desc"]).optional()}).strict(),pz=E.object({format:E.string().pipe(E.literal("xml")),xml:q,metadata:v.optional()}).strict(),vz=E.object({identifier:q,title:q,type:Yq,qtiVersion:E.string().optional(),timeDependent:E.boolean().optional(),adaptive:E.boolean().optional(),responseDeclarations:E.array($q).optional(),outcomeDeclarations:E.array(Fq).optional(),responseProcessing:Oq.optional(),metadata:v.optional(),modalFeedback:E.array(Zq).optional(),feedbackInline:E.array(Bq).optional(),feedbackBlock:E.array(Kq).optional()}).strict(),RE=E.union([pz,vz]),TE=E.object({identifier:q.optional(),title:q,type:Yq,qtiVersion:E.string().optional(),timeDependent:E.boolean().optional(),adaptive:E.boolean().optional(),responseDeclarations:E.array($q).optional(),outcomeDeclarations:E.array(Fq).optional(),responseProcessing:Oq.optional(),metadata:v.optional(),modalFeedback:E.array(Zq).optional(),feedbackInline:E.array(Bq).optional(),feedbackBlock:E.array(Kq).optional(),rawXml:E.string(),content:E.record(E.string(),E.unknown())}).strict(),hE=E.object({identifier:q,response:E.union([E.string(),E.array(E.string())])}).strict(),jq=E.object({identifier:q,href:q,sequence:E.number().int().positive().optional()}).strict(),lz=E.object({identifier:q,title:q,visible:E.boolean(),required:E.boolean().optional(),fixed:E.boolean().optional(),sequence:E.number().int().positive(),"qti-assessment-item-ref":E.array(jq).optional()}).strict(),wq=E.object({identifier:q,navigationMode:E.string().pipe(yz),submissionMode:E.string().pipe(bz),"qti-assessment-section":E.array(lz)}).strict(),IE=E.object({items:E.array(jq).min(1)}).strict(),fE=E.object({metadata:E.record(E.string(),E.unknown()).optional()}).strict(),kE=E.object({identifier:q,title:q,qtiVersion:E.string().optional(),toolName:E.string().optional(),toolVersion:E.string().optional(),timeLimit:E.number().optional(),maxAttempts:E.number().optional(),toolsEnabled:E.record(E.string(),E.boolean()).optional(),metadata:E.record(E.string(),E.unknown()).optional(),"qti-test-part":E.array(wq),"qti-outcome-declaration":E.array(Nq).optional()}).strict(),yE=E.object({identifier:q.optional(),title:q,qtiVersion:E.string().optional(),toolName:E.string().optional(),toolVersion:E.string().optional(),timeLimit:E.number().optional(),maxAttempts:E.number().optional(),toolsEnabled:E.record(E.string(),E.boolean()).optional(),metadata:E.record(E.string(),E.unknown()).optional(),"qti-test-part":E.array(wq),"qti-outcome-declaration":E.array(Nq).optional()}).strict(),bE=E.object({identifier:q,title:q,label:E.string().optional(),language:E.string().optional(),stylesheet:Mq.optional(),content:E.string(),catalogInfo:E.array(Wq).optional(),toolName:E.string().optional(),toolVersion:E.string().optional(),metadata:E.record(E.string(),E.unknown()).optional()}).strict(),gE=E.object({identifier:q.optional(),title:q,label:E.string().optional(),language:E.string().optional(),stylesheet:Mq.optional(),content:E.string(),catalogInfo:E.array(Wq).optional(),toolName:E.string().optional(),toolVersion:E.string().optional(),metadata:E.record(E.string(),E.unknown()).optional()}).strict(),mE=E.object({xml:E.string().optional(),schema:_q,entityId:E.string().optional()}).strict(),xE=E.object({xml:E.array(E.string()),schema:_q,entityIds:E.array(E.string())}).strict(),pE=E.object({questionId:E.string().optional(),userId:q,feedback:q,lessonId:q,humanApproved:E.boolean().optional()}).strict(),oz=h.enum(["creator_only","same_org","all_orgs"]),iz=h.string().uuid(),lE=h.email(),oE=h.object({sql:q}),iE=h.object({endpointName:q,sql:q,authMode:oz,description:q.optional()}),nE=h.object({endpointId:iz});
|
|
2
|
-
export{q as a,L as b,j as c,$D as d};
|