@intellectif/lk-core 0.9.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/{activity-CPtJUBek.d.cts → activity-B0zbvu18.d.cts} +177 -2
  3. package/dist/{activity-CPtJUBek.d.ts → activity-B0zbvu18.d.ts} +177 -2
  4. package/dist/{chunk-YVZCFUGP.cjs → chunk-3FEAEO3D.cjs} +18 -13
  5. package/dist/chunk-3FEAEO3D.cjs.map +1 -0
  6. package/dist/{chunk-CVRALNUK.cjs → chunk-7ODQRNR4.cjs} +618 -45
  7. package/dist/chunk-7ODQRNR4.cjs.map +1 -0
  8. package/dist/{chunk-AHEUYOT3.js → chunk-FIS5KBCE.js} +670 -97
  9. package/dist/chunk-FIS5KBCE.js.map +1 -0
  10. package/dist/{chunk-ELTP5P6V.js → chunk-IXXMYJI7.js} +2 -2
  11. package/dist/{chunk-MOLL5KXO.cjs → chunk-VBM5H6P5.cjs} +8 -8
  12. package/dist/{chunk-MOLL5KXO.cjs.map → chunk-VBM5H6P5.cjs.map} +1 -1
  13. package/dist/{chunk-RL2PQLCY.cjs → chunk-VTTRXGDD.cjs} +4 -4
  14. package/dist/{chunk-RL2PQLCY.cjs.map → chunk-VTTRXGDD.cjs.map} +1 -1
  15. package/dist/{chunk-6DM2H6BD.js → chunk-XGCTAQSS.js} +7 -2
  16. package/dist/chunk-XGCTAQSS.js.map +1 -0
  17. package/dist/{chunk-QX7P3CHP.js → chunk-ZTY4UIUD.js} +2 -2
  18. package/dist/{index-gIN564mV.d.cts → index-DSfETm4b.d.ts} +321 -3
  19. package/dist/{index-BvrA8nIV.d.ts → index-u_rBLkuc.d.cts} +321 -3
  20. package/dist/index.cjs +53 -31
  21. package/dist/index.cjs.map +1 -1
  22. package/dist/index.d.cts +4 -4
  23. package/dist/index.d.ts +4 -4
  24. package/dist/index.js +26 -4
  25. package/dist/index.js.map +1 -1
  26. package/dist/schemas.cjs +25 -3
  27. package/dist/schemas.cjs.map +1 -1
  28. package/dist/schemas.d.cts +2 -2
  29. package/dist/schemas.d.ts +2 -2
  30. package/dist/schemas.js +24 -2
  31. package/dist/scoring.cjs +3 -3
  32. package/dist/scoring.d.cts +2 -2
  33. package/dist/scoring.d.ts +2 -2
  34. package/dist/scoring.js +2 -2
  35. package/dist/xapi.cjs +3 -3
  36. package/dist/xapi.d.cts +1 -1
  37. package/dist/xapi.d.ts +1 -1
  38. package/dist/xapi.js +2 -2
  39. package/package.json +1 -1
  40. package/dist/chunk-6DM2H6BD.js.map +0 -1
  41. package/dist/chunk-AHEUYOT3.js.map +0 -1
  42. package/dist/chunk-CVRALNUK.cjs.map +0 -1
  43. package/dist/chunk-YVZCFUGP.cjs.map +0 -1
  44. /package/dist/{chunk-ELTP5P6V.js.map → chunk-IXXMYJI7.js.map} +0 -0
  45. /package/dist/{chunk-QX7P3CHP.js.map → chunk-ZTY4UIUD.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- import { A as ActivityData, c as ActivityMedia, t as ValidationResult, e as ActivityType, a as ActivityDataMap } from './activity-CPtJUBek.js';
1
+ import { A as ActivityData, c as ActivityMedia, u as ValidationResult, e as ActivityType, a as ActivityDataMap } from './activity-B0zbvu18.cjs';
2
2
  import { z } from 'zod/v4';
3
3
 
4
4
  /** What a stimulus primarily is. Drives validation and layout, never scoring. */
@@ -273,6 +273,125 @@ declare const FillInTheBlanksDataSchema: z.ZodObject<{
273
273
  difficultyLevel: z.ZodOptional<z.ZodLiteral<2 | 1 | 3 | 4 | 5>>;
274
274
  }, z.core.$loose>;
275
275
 
276
+ /**
277
+ * Zod schema for one selectable choice. Loose, like every other schema here:
278
+ * unknown keys are preserved so a consumer sidecar survives validation.
279
+ */
280
+ declare const GapSelectChoiceSchema: z.ZodObject<{
281
+ id: z.ZodString;
282
+ text: z.ZodString;
283
+ }, z.core.$loose>;
284
+ /** Zod schema for a shared word bank. */
285
+ declare const GapSelectBankSchema: z.ZodObject<{
286
+ id: z.ZodString;
287
+ choices: z.ZodArray<z.ZodObject<{
288
+ id: z.ZodString;
289
+ text: z.ZodString;
290
+ }, z.core.$loose>>;
291
+ }, z.core.$loose>;
292
+ /** Zod schema for one gap. The `choices` / `bankId` exclusivity is checked on the activity. */
293
+ declare const GapSelectGapSchema: z.ZodObject<{
294
+ id: z.ZodString;
295
+ choices: z.ZodOptional<z.ZodArray<z.ZodObject<{
296
+ id: z.ZodString;
297
+ text: z.ZodString;
298
+ }, z.core.$loose>>>;
299
+ bankId: z.ZodOptional<z.ZodString>;
300
+ correctChoiceId: z.ZodString;
301
+ feedback: z.ZodOptional<z.ZodString>;
302
+ }, z.core.$loose>;
303
+ /**
304
+ * Zod schema validating the full Gap Select data contract.
305
+ *
306
+ * Six semantic guards, none of them expressible in JSON Schema and all of them
307
+ * authoring errors that would otherwise reach a learner:
308
+ *
309
+ * 1. **Bank ids are unique** — two banks sharing an id makes which one a gap
310
+ * draws from a matter of array order.
311
+ * 2. **Gap ids are unique** — the scorer looks a gap's selection up by id, so a
312
+ * duplicate makes one gap unscoreable (the same defect the Multiple Choice
313
+ * option-id guard exists for).
314
+ * 3. **Passage placeholders and gaps pair one to one**, each `{{id}}` appearing
315
+ * exactly once — the Fill-in-the-Blanks bijection, for the same reason: a
316
+ * gap with nowhere to render is a question the learner never sees, and a
317
+ * placeholder with no gap renders as literal `{{id}}` text.
318
+ * 4. **Exactly one choice source per gap** — `choices` or `bankId`, never both
319
+ * and never neither.
320
+ * 5. **A `bankId` names a bank that exists.**
321
+ * 6. **`correctChoiceId` is one of the choices the gap actually offers**, and
322
+ * choice ids within a resolved set are unique. An answer key pointing at a
323
+ * choice nobody can pick is an item that cannot be passed.
324
+ */
325
+ declare const GapSelectDataSchema: z.ZodObject<{
326
+ schemaVersion: z.ZodLiteral<"1.0">;
327
+ type: z.ZodLiteral<"gap-select">;
328
+ id: z.ZodString;
329
+ title: z.ZodString;
330
+ passage: z.ZodString;
331
+ passageHtml: z.ZodOptional<z.ZodString>;
332
+ gaps: z.ZodArray<z.ZodObject<{
333
+ id: z.ZodString;
334
+ choices: z.ZodOptional<z.ZodArray<z.ZodObject<{
335
+ id: z.ZodString;
336
+ text: z.ZodString;
337
+ }, z.core.$loose>>>;
338
+ bankId: z.ZodOptional<z.ZodString>;
339
+ correctChoiceId: z.ZodString;
340
+ feedback: z.ZodOptional<z.ZodString>;
341
+ }, z.core.$loose>>;
342
+ banks: z.ZodOptional<z.ZodArray<z.ZodObject<{
343
+ id: z.ZodString;
344
+ choices: z.ZodArray<z.ZodObject<{
345
+ id: z.ZodString;
346
+ text: z.ZodString;
347
+ }, z.core.$loose>>;
348
+ }, z.core.$loose>>>;
349
+ scoringStrategy: z.ZodEnum<{
350
+ "all-or-nothing": "all-or-nothing";
351
+ partial: "partial";
352
+ }>;
353
+ presentation: z.ZodOptional<z.ZodLiteral<"dropdown">>;
354
+ shuffleChoices: z.ZodOptional<z.ZodBoolean>;
355
+ media: z.ZodOptional<z.ZodObject<{
356
+ type: z.ZodEnum<{
357
+ image: "image";
358
+ audio: "audio";
359
+ video: "video";
360
+ embed: "embed";
361
+ }>;
362
+ url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
363
+ alt: z.ZodOptional<z.ZodString>;
364
+ captionsUrl: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
365
+ playback: z.ZodOptional<z.ZodObject<{
366
+ controls: z.ZodOptional<z.ZodEnum<{
367
+ native: "native";
368
+ minimal: "minimal";
369
+ }>>;
370
+ maxPlays: z.ZodOptional<z.ZodNumber>;
371
+ seek: z.ZodOptional<z.ZodEnum<{
372
+ none: "none";
373
+ allow: "allow";
374
+ }>>;
375
+ rate: z.ZodOptional<z.ZodEnum<{
376
+ allow: "allow";
377
+ fixed: "fixed";
378
+ }>>;
379
+ nativeControlHints: z.ZodOptional<z.ZodArray<z.ZodEnum<{
380
+ "hide-download": "hide-download";
381
+ "hide-rate": "hide-rate";
382
+ }>>>;
383
+ }, z.core.$strict>>;
384
+ }, z.core.$loose>>;
385
+ feedback: z.ZodOptional<z.ZodObject<{
386
+ correct: z.ZodOptional<z.ZodString>;
387
+ incorrect: z.ZodOptional<z.ZodString>;
388
+ }, z.core.$loose>>;
389
+ passThreshold: z.ZodOptional<z.ZodNumber>;
390
+ locale: z.ZodOptional<z.ZodString>;
391
+ learningObjectives: z.ZodOptional<z.ZodArray<z.ZodString>>;
392
+ difficultyLevel: z.ZodOptional<z.ZodLiteral<2 | 1 | 3 | 4 | 5>>;
393
+ }, z.core.$loose>;
394
+
276
395
  /**
277
396
  * Zod schema for a {@link Stimulus}. Loose: unknown keys preserved.
278
397
  *
@@ -542,6 +661,14 @@ declare const itemGroupJsonSchema: z.core.JSONSchema.JSONSchema;
542
661
  * `additionalProperties: false` — the JSON Schema and `validateActivity` now
543
662
  * agree on unknown-key handling.
544
663
  */
664
+ /**
665
+ * JSON Schema (Draft 7) representation of the Gap Select activity data
666
+ * contract. Structural contract only: the six semantic guards — the
667
+ * passage/gap bijection, id uniqueness, the one-choice-source rule, and an
668
+ * answer key that names a choice the gap offers — are Zod-only, as they are
669
+ * for the other types.
670
+ */
671
+ declare const gapSelectJsonSchema: z.core.JSONSchema.JSONSchema;
545
672
  declare const multipleChoiceJsonSchema: z.core.JSONSchema.JSONSchema;
546
673
  /**
547
674
  * JSON Schema (Draft 7) representation of the Fill-in-the-Blanks activity data
@@ -759,11 +886,47 @@ declare const RedactedMediaSchema: z.ZodObject<{
759
886
  * Zod schema for a single Multiple Choice option. Loose: unknown keys are
760
887
  * preserved through validation (forward-compat / consumer sidecars — B7).
761
888
  */
889
+ /**
890
+ * A picture or recording carried by one option.
891
+ *
892
+ * LOOSE, like `MediaSchema` and every other content schema: a consumer's own
893
+ * fields — an asset id, a CDN key — ride along and survive validation (B7).
894
+ * Making it strict to catch a typo would reject exactly the sidecars the SDK
895
+ * promises to preserve, and an invariant test guards that promise by counting
896
+ * the closed objects in the exported JSON Schema.
897
+ *
898
+ * The two things that must NOT be swallowed are named explicitly instead. The
899
+ * `type` enum refuses the kinds that cannot be an option, and a refinement
900
+ * refuses `playback`, which would otherwise sit there looking like an enforced
901
+ * budget while nothing read it.
902
+ *
903
+ * The URL goes through `MediaUrlSchema`, the same security-reviewed allow-list
904
+ * activity media uses — `javascript:`, `file:` and `ftp:` are stored-XSS
905
+ * vectors wherever the value lands in a `src`, and that list is not forked.
906
+ */
907
+ declare const MultipleChoiceOptionMediaSchema: z.ZodObject<{
908
+ type: z.ZodEnum<{
909
+ image: "image";
910
+ audio: "audio";
911
+ }>;
912
+ url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
913
+ alt: z.ZodOptional<z.ZodString>;
914
+ captionsUrl: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
915
+ }, z.core.$loose>;
762
916
  declare const MultipleChoiceOptionSchema: z.ZodObject<{
763
917
  id: z.ZodString;
764
918
  text: z.ZodString;
765
919
  isCorrect: z.ZodBoolean;
766
920
  feedback: z.ZodOptional<z.ZodString>;
921
+ media: z.ZodOptional<z.ZodObject<{
922
+ type: z.ZodEnum<{
923
+ image: "image";
924
+ audio: "audio";
925
+ }>;
926
+ url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
927
+ alt: z.ZodOptional<z.ZodString>;
928
+ captionsUrl: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
929
+ }, z.core.$loose>>;
767
930
  }, z.core.$loose>;
768
931
  /**
769
932
  * Zod schema validating the full Multiple Choice activity data contract.
@@ -796,6 +959,15 @@ declare const MultipleChoiceDataSchema: z.ZodObject<{
796
959
  text: z.ZodString;
797
960
  isCorrect: z.ZodBoolean;
798
961
  feedback: z.ZodOptional<z.ZodString>;
962
+ media: z.ZodOptional<z.ZodObject<{
963
+ type: z.ZodEnum<{
964
+ image: "image";
965
+ audio: "audio";
966
+ }>;
967
+ url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
968
+ alt: z.ZodOptional<z.ZodString>;
969
+ captionsUrl: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
970
+ }, z.core.$loose>>;
799
971
  }, z.core.$loose>>;
800
972
  scoringStrategy: z.ZodEnum<{
801
973
  "all-or-nothing": "all-or-nothing";
@@ -843,9 +1015,36 @@ declare const MultipleChoiceDataSchema: z.ZodObject<{
843
1015
  }, z.core.$loose>;
844
1016
 
845
1017
  /** A redacted Multiple Choice option: id and display text only — no `isCorrect`, no feedback. */
1018
+ declare const RedactedMultipleChoiceOptionMediaSchema: z.ZodObject<{
1019
+ type: z.ZodEnum<{
1020
+ image: "image";
1021
+ audio: "audio";
1022
+ }>;
1023
+ url: z.ZodString;
1024
+ alt: z.ZodOptional<z.ZodString>;
1025
+ captionsUrl: z.ZodOptional<z.ZodString>;
1026
+ }, z.core.$strict>;
1027
+ /**
1028
+ * A redacted Multiple Choice option: id, display text and its picture or
1029
+ * recording — no `isCorrect`, no feedback.
1030
+ *
1031
+ * The media survives intact for the reason a gap-select choice does: it is the
1032
+ * option the learner is being asked to pick, and an exam that stripped it would
1033
+ * show a row of blanks. Nothing in it is an answer key — the key is `isCorrect`,
1034
+ * which is gone.
1035
+ */
846
1036
  declare const RedactedMultipleChoiceOptionSchema: z.ZodObject<{
847
1037
  id: z.ZodString;
848
1038
  text: z.ZodString;
1039
+ media: z.ZodOptional<z.ZodObject<{
1040
+ type: z.ZodEnum<{
1041
+ image: "image";
1042
+ audio: "audio";
1043
+ }>;
1044
+ url: z.ZodString;
1045
+ alt: z.ZodOptional<z.ZodString>;
1046
+ captionsUrl: z.ZodOptional<z.ZodString>;
1047
+ }, z.core.$strict>>;
849
1048
  }, z.core.$strict>;
850
1049
  /**
851
1050
  * Redacted Multiple Choice data: renderable (question, mode, options to pick
@@ -865,6 +1064,15 @@ declare const RedactedMultipleChoiceDataSchema: z.ZodObject<{
865
1064
  options: z.ZodArray<z.ZodObject<{
866
1065
  id: z.ZodString;
867
1066
  text: z.ZodString;
1067
+ media: z.ZodOptional<z.ZodObject<{
1068
+ type: z.ZodEnum<{
1069
+ image: "image";
1070
+ audio: "audio";
1071
+ }>;
1072
+ url: z.ZodString;
1073
+ alt: z.ZodOptional<z.ZodString>;
1074
+ captionsUrl: z.ZodOptional<z.ZodString>;
1075
+ }, z.core.$strict>>;
868
1076
  }, z.core.$strict>>;
869
1077
  shuffle: z.ZodOptional<z.ZodBoolean>;
870
1078
  /** Marker distinguishing a redacted projection from full activity data. */
@@ -965,6 +1173,106 @@ declare const RedactedFillInTheBlanksDataSchema: z.ZodObject<{
965
1173
  learningObjectives: z.ZodOptional<z.ZodArray<z.ZodString>>;
966
1174
  difficultyLevel: z.ZodOptional<z.ZodLiteral<2 | 1 | 3 | 4 | 5>>;
967
1175
  }, z.core.$strict>;
1176
+ /** A redacted choice: exactly what it always was. Which one is correct was never stored here. */
1177
+ declare const RedactedGapSelectChoiceSchema: z.ZodObject<{
1178
+ id: z.ZodString;
1179
+ text: z.ZodString;
1180
+ }, z.core.$strict>;
1181
+ /** A redacted word bank: every choice survives, because the learner picks from them. */
1182
+ declare const RedactedGapSelectBankSchema: z.ZodObject<{
1183
+ id: z.ZodString;
1184
+ choices: z.ZodArray<z.ZodObject<{
1185
+ id: z.ZodString;
1186
+ text: z.ZodString;
1187
+ }, z.core.$strict>>;
1188
+ }, z.core.$strict>;
1189
+ /** A redacted gap: its choice source survives; `correctChoiceId` and feedback do not. */
1190
+ declare const RedactedGapSelectGapSchema: z.ZodObject<{
1191
+ id: z.ZodString;
1192
+ choices: z.ZodOptional<z.ZodArray<z.ZodObject<{
1193
+ id: z.ZodString;
1194
+ text: z.ZodString;
1195
+ }, z.core.$strict>>>;
1196
+ bankId: z.ZodOptional<z.ZodString>;
1197
+ }, z.core.$strict>;
1198
+ /**
1199
+ * Redacted Gap Select data — the type where redaction **inverts** the
1200
+ * Fill-in-the-Blanks rule, and the reason this is a separate schema rather than
1201
+ * a variant of it.
1202
+ *
1203
+ * In Fill-in-the-Blanks the candidate answers ARE the key, so `acceptedAnswers`
1204
+ * is stripped. Here the learner cannot answer at all without seeing every
1205
+ * choice, so `choices` and `banks` must survive in full and `correctChoiceId`
1206
+ * is the only field withheld. A policy that treated "the list of candidate
1207
+ * answers" as answer-key for both types would ship an unanswerable exam.
1208
+ *
1209
+ * `scoringStrategy` stays answer-key for the same reason it does on the other
1210
+ * two: knowing whether marking is partial tells a learner whether guessing at a
1211
+ * gap is free.
1212
+ */
1213
+ declare const RedactedGapSelectDataSchema: z.ZodObject<{
1214
+ type: z.ZodLiteral<"gap-select">;
1215
+ passage: z.ZodString;
1216
+ passageHtml: z.ZodOptional<z.ZodString>;
1217
+ gaps: z.ZodArray<z.ZodObject<{
1218
+ id: z.ZodString;
1219
+ choices: z.ZodOptional<z.ZodArray<z.ZodObject<{
1220
+ id: z.ZodString;
1221
+ text: z.ZodString;
1222
+ }, z.core.$strict>>>;
1223
+ bankId: z.ZodOptional<z.ZodString>;
1224
+ }, z.core.$strict>>;
1225
+ banks: z.ZodOptional<z.ZodArray<z.ZodObject<{
1226
+ id: z.ZodString;
1227
+ choices: z.ZodArray<z.ZodObject<{
1228
+ id: z.ZodString;
1229
+ text: z.ZodString;
1230
+ }, z.core.$strict>>;
1231
+ }, z.core.$strict>>>;
1232
+ presentation: z.ZodOptional<z.ZodLiteral<"dropdown">>;
1233
+ shuffleChoices: z.ZodOptional<z.ZodBoolean>;
1234
+ /** Marker distinguishing a redacted projection from full activity data. */
1235
+ redacted: z.ZodLiteral<true>;
1236
+ /** Slot identity, carried through redaction so the client and the plan agree. */
1237
+ slotKey: z.ZodOptional<z.ZodString>;
1238
+ schemaVersion: z.ZodLiteral<"1.0">;
1239
+ id: z.ZodString;
1240
+ title: z.ZodString;
1241
+ media: z.ZodOptional<z.ZodObject<{
1242
+ type: z.ZodEnum<{
1243
+ image: "image";
1244
+ audio: "audio";
1245
+ video: "video";
1246
+ embed: "embed";
1247
+ }>;
1248
+ url: z.ZodUnion<readonly [z.ZodURL, z.ZodString]>;
1249
+ alt: z.ZodOptional<z.ZodString>;
1250
+ captionsUrl: z.ZodOptional<z.ZodUnion<readonly [z.ZodURL, z.ZodString]>>;
1251
+ playback: z.ZodOptional<z.ZodObject<{
1252
+ controls: z.ZodOptional<z.ZodEnum<{
1253
+ native: "native";
1254
+ minimal: "minimal";
1255
+ }>>;
1256
+ maxPlays: z.ZodOptional<z.ZodNumber>;
1257
+ seek: z.ZodOptional<z.ZodEnum<{
1258
+ none: "none";
1259
+ allow: "allow";
1260
+ }>>;
1261
+ rate: z.ZodOptional<z.ZodEnum<{
1262
+ allow: "allow";
1263
+ fixed: "fixed";
1264
+ }>>;
1265
+ nativeControlHints: z.ZodOptional<z.ZodArray<z.ZodEnum<{
1266
+ "hide-download": "hide-download";
1267
+ "hide-rate": "hide-rate";
1268
+ }>>>;
1269
+ }, z.core.$strict>>;
1270
+ }, z.core.$strict>>;
1271
+ passThreshold: z.ZodOptional<z.ZodNumber>;
1272
+ locale: z.ZodOptional<z.ZodString>;
1273
+ learningObjectives: z.ZodOptional<z.ZodArray<z.ZodString>>;
1274
+ difficultyLevel: z.ZodOptional<z.ZodLiteral<2 | 1 | 3 | 4 | 5>>;
1275
+ }, z.core.$strict>;
968
1276
  /**
969
1277
  * Redacted Written Response data: the prompt, word bounds and rubric are
970
1278
  * learner-visible (a rubric tells the learner what they are graded on);
@@ -1043,6 +1351,8 @@ declare const RedactedWrittenResponseDataSchema: z.ZodObject<{
1043
1351
  * a renderer that must never see an answer key.
1044
1352
  */
1045
1353
  type RedactedMultipleChoiceOption = z.infer<typeof RedactedMultipleChoiceOptionSchema>;
1354
+ /** An option's picture or recording, unchanged by redaction — it is what the learner picks. */
1355
+ type RedactedMultipleChoiceOptionMedia = z.infer<typeof RedactedMultipleChoiceOptionMediaSchema>;
1046
1356
  /** A Multiple Choice item with the answer key, feedback and strategy removed. */
1047
1357
  type RedactedMultipleChoiceData = z.infer<typeof RedactedMultipleChoiceDataSchema>;
1048
1358
  /** A blank with its accepted answers and matching rules removed; the hint survives. */
@@ -1051,6 +1361,14 @@ type RedactedBlankConfig = z.infer<typeof RedactedBlankConfigSchema>;
1051
1361
  type RedactedFillInTheBlanksData = z.infer<typeof RedactedFillInTheBlanksDataSchema>;
1052
1362
  /** A Written Response item; the rubric survives, because it tells the learner what is assessed. */
1053
1363
  type RedactedWrittenResponseData = z.infer<typeof RedactedWrittenResponseDataSchema>;
1364
+ /** A selectable choice, unchanged by redaction. */
1365
+ type RedactedGapSelectChoice = z.infer<typeof RedactedGapSelectChoiceSchema>;
1366
+ /** A word bank, unchanged by redaction — the learner picks from it. */
1367
+ type RedactedGapSelectBank = z.infer<typeof RedactedGapSelectBankSchema>;
1368
+ /** A gap with its `correctChoiceId` removed; every choice it offers survives. */
1369
+ type RedactedGapSelectGap = z.infer<typeof RedactedGapSelectGapSchema>;
1370
+ /** A Gap Select item the learner can still answer: choices intact, answer key gone. */
1371
+ type RedactedGapSelectData = z.infer<typeof RedactedGapSelectDataSchema>;
1054
1372
  /**
1055
1373
  * Discriminated union of every built-in redacted activity. Narrow it on
1056
1374
  * `type`, exactly as you would {@link ActivityData}:
@@ -1063,7 +1381,7 @@ type RedactedWrittenResponseData = z.infer<typeof RedactedWrittenResponseDataSch
1063
1381
  * }
1064
1382
  * ```
1065
1383
  */
1066
- type RedactedActivity = RedactedMultipleChoiceData | RedactedFillInTheBlanksData | RedactedWrittenResponseData;
1384
+ type RedactedActivity = RedactedMultipleChoiceData | RedactedFillInTheBlanksData | RedactedWrittenResponseData | RedactedGapSelectData;
1067
1385
 
1068
1386
  /** Zod schema for a single rubric criterion. Loose: unknown keys preserved. */
1069
1387
  declare const WrittenResponseRubricCriterionSchema: z.ZodObject<{
@@ -1160,4 +1478,4 @@ declare const WrittenResponseDataSchema: z.ZodObject<{
1160
1478
  */
1161
1479
  declare function validateActivity<T extends ActivityType>(type: T, data: unknown): ValidationResult<ActivityDataMap[T]>;
1162
1480
 
1163
- export { WrittenResponseRubricSchema as A, BlankConfigSchema as B, fillInTheBlanksJsonSchema as C, itemGroupJsonSchema as D, jsonSchemaFor as E, FeedbackSchema as F, multipleChoiceJsonSchema as G, stimulusJsonSchema as H, type ItemGroup as I, validateActivity as J, validateItemGroup as K, writtenResponseJsonSchema as L, MediaPlaybackSchema as M, NativeControlHintSchema as N, type RedactedActivity as R, type SequenceEntry as S, TextMatchPolicySchema as T, WrittenResponseDataSchema as W, FillInTheBlanksDataSchema as a, ItemGroupSchema as b, MediaSchema as c, MediaUrlSchema as d, MultipleChoiceDataSchema as e, MultipleChoiceOptionSchema as f, type RedactedBlankConfig as g, RedactedBlankConfigSchema as h, type RedactedFillInTheBlanksData as i, RedactedFillInTheBlanksDataSchema as j, RedactedItemGroupSchema as k, RedactedMediaSchema as l, type RedactedMultipleChoiceData as m, RedactedMultipleChoiceDataSchema as n, type RedactedMultipleChoiceOption as o, RedactedMultipleChoiceOptionSchema as p, type RedactedStimulus as q, RedactedStimulusSchema as r, type RedactedWrittenResponseData as s, RedactedWrittenResponseDataSchema as t, type SequenceSlot as u, type SequenceSlotGroup as v, type Stimulus as w, type StimulusKind as x, StimulusSchema as y, WrittenResponseRubricCriterionSchema as z };
1481
+ export { itemGroupJsonSchema as $, type RedactedMultipleChoiceOption as A, BlankConfigSchema as B, type RedactedMultipleChoiceOptionMedia as C, RedactedMultipleChoiceOptionMediaSchema as D, RedactedMultipleChoiceOptionSchema as E, FeedbackSchema as F, GapSelectBankSchema as G, type RedactedStimulus as H, type ItemGroup as I, RedactedStimulusSchema as J, type RedactedWrittenResponseData as K, RedactedWrittenResponseDataSchema as L, MediaPlaybackSchema as M, NativeControlHintSchema as N, type SequenceSlot as O, type SequenceSlotGroup as P, type Stimulus as Q, type RedactedActivity as R, type SequenceEntry as S, type StimulusKind as T, StimulusSchema as U, TextMatchPolicySchema as V, WrittenResponseDataSchema as W, WrittenResponseRubricCriterionSchema as X, WrittenResponseRubricSchema as Y, fillInTheBlanksJsonSchema as Z, gapSelectJsonSchema as _, FillInTheBlanksDataSchema as a, jsonSchemaFor as a0, multipleChoiceJsonSchema as a1, stimulusJsonSchema as a2, validateActivity as a3, validateItemGroup as a4, writtenResponseJsonSchema as a5, GapSelectChoiceSchema as b, GapSelectDataSchema as c, GapSelectGapSchema as d, ItemGroupSchema as e, MediaSchema as f, MediaUrlSchema as g, MultipleChoiceDataSchema as h, MultipleChoiceOptionMediaSchema as i, MultipleChoiceOptionSchema as j, type RedactedBlankConfig as k, RedactedBlankConfigSchema as l, type RedactedFillInTheBlanksData as m, RedactedFillInTheBlanksDataSchema as n, type RedactedGapSelectBank as o, RedactedGapSelectBankSchema as p, type RedactedGapSelectChoice as q, RedactedGapSelectChoiceSchema as r, type RedactedGapSelectData as s, RedactedGapSelectDataSchema as t, type RedactedGapSelectGap as u, RedactedGapSelectGapSchema as v, RedactedItemGroupSchema as w, RedactedMediaSchema as x, type RedactedMultipleChoiceData as y, RedactedMultipleChoiceDataSchema as z };
package/dist/index.cjs CHANGED
@@ -10,14 +10,14 @@
10
10
 
11
11
 
12
12
 
13
- var _chunkMOLL5KXOcjs = require('./chunk-MOLL5KXO.cjs');
13
+ var _chunkVBM5H6P5cjs = require('./chunk-VBM5H6P5.cjs');
14
14
 
15
15
 
16
16
 
17
17
 
18
18
 
19
19
 
20
- var _chunkRL2PQLCYcjs = require('./chunk-RL2PQLCY.cjs');
20
+ var _chunkVTTRXGDDcjs = require('./chunk-VTTRXGDD.cjs');
21
21
 
22
22
 
23
23
 
@@ -31,8 +31,8 @@ var _chunkRL2PQLCYcjs = require('./chunk-RL2PQLCY.cjs');
31
31
 
32
32
 
33
33
 
34
- var _chunkYVZCFUGPcjs = require('./chunk-YVZCFUGP.cjs');
35
34
 
35
+ var _chunk3FEAEO3Dcjs = require('./chunk-3FEAEO3D.cjs');
36
36
 
37
37
 
38
38
 
@@ -71,7 +71,18 @@ var _chunkYVZCFUGPcjs = require('./chunk-YVZCFUGP.cjs');
71
71
 
72
72
 
73
73
 
74
- var _chunkCVRALNUKcjs = require('./chunk-CVRALNUK.cjs');
74
+
75
+
76
+
77
+
78
+
79
+
80
+
81
+
82
+
83
+
84
+
85
+ var _chunk7ODQRNR4cjs = require('./chunk-7ODQRNR4.cjs');
75
86
 
76
87
  // src/content-hash.ts
77
88
  function canonicalJson(value, seen = /* @__PURE__ */ new Set()) {
@@ -577,11 +588,11 @@ function diffResponses(before, after) {
577
588
 
578
589
  // src/authoring/index.ts
579
590
  function validateDraft(type, draft) {
580
- const descriptor = _chunkCVRALNUKcjs.getActivityTypeDescriptor.call(void 0, type);
591
+ const descriptor = _chunk7ODQRNR4cjs.getActivityTypeDescriptor.call(void 0, type);
581
592
  if (descriptor === void 0) {
582
- throw new (0, _chunkCVRALNUKcjs.UnknownActivityTypeError)(String(type));
593
+ throw new (0, _chunk7ODQRNR4cjs.UnknownActivityTypeError)(String(type));
583
594
  }
584
- const reported = _chunkCVRALNUKcjs.isRecord.call(void 0, draft) && _optionalChain([descriptor, 'access', _16 => _16.authoring, 'optionalAccess', _17 => _17.checkDraft]) !== void 0 ? descriptor.authoring.checkDraft(draft).map(normalise) : [];
595
+ const reported = _chunk7ODQRNR4cjs.isRecord.call(void 0, draft) && _optionalChain([descriptor, 'access', _16 => _16.authoring, 'optionalAccess', _17 => _17.checkDraft]) !== void 0 ? descriptor.authoring.checkDraft(draft).map(normalise) : [];
585
596
  const issues = [...reported];
586
597
  const parsed = descriptor.schema.safeParse(draft, { reportInput: true });
587
598
  if (!parsed.success) {
@@ -591,12 +602,12 @@ function validateDraft(type, draft) {
591
602
  if (reported.some((known) => covers(known.path, path))) {
592
603
  continue;
593
604
  }
594
- if (path.length > 0 && _chunkCVRALNUKcjs.refusesEmpty.call(void 0, draft, schemaIssue)) {
605
+ if (path.length > 0 && _chunk7ODQRNR4cjs.refusesEmpty.call(void 0, draft, schemaIssue)) {
595
606
  const key = JSON.stringify(path);
596
607
  if (!reportedEmpty.has(key)) {
597
608
  reportedEmpty.add(key);
598
609
  issues.push(
599
- _chunkCVRALNUKcjs.issue.call(void 0,
610
+ _chunk7ODQRNR4cjs.issue.call(void 0,
600
611
  "null_not_allowed",
601
612
  path,
602
613
  typeof schemaIssue.path.at(-1) === "number" ? "This entry has no value. Remove it, or fill it in." : "This field cannot be null. Leave it out if it is optional, or give it a value."
@@ -620,9 +631,9 @@ function validateDraft(type, draft) {
620
631
  return { status: invalid ? "invalid" : "incomplete", issues };
621
632
  }
622
633
  function createDraft(type, context) {
623
- const descriptor = _chunkCVRALNUKcjs.getActivityTypeDescriptor.call(void 0, type);
634
+ const descriptor = _chunk7ODQRNR4cjs.getActivityTypeDescriptor.call(void 0, type);
624
635
  if (descriptor === void 0) {
625
- throw new (0, _chunkCVRALNUKcjs.UnknownActivityTypeError)(String(type));
636
+ throw new (0, _chunk7ODQRNR4cjs.UnknownActivityTypeError)(String(type));
626
637
  }
627
638
  const create = _optionalChain([descriptor, 'access', _18 => _18.authoring, 'optionalAccess', _19 => _19.createDraft]);
628
639
  if (create === void 0) {
@@ -647,7 +658,7 @@ function createDraft(type, context) {
647
658
  return create({ newId });
648
659
  }
649
660
  function normalise(found) {
650
- const documented = Object.hasOwn(_chunkCVRALNUKcjs.DRAFT_ISSUE_SEVERITY, found.code) ? _chunkCVRALNUKcjs.DRAFT_ISSUE_SEVERITY[found.code] : void 0;
661
+ const documented = Object.hasOwn(_chunk7ODQRNR4cjs.DRAFT_ISSUE_SEVERITY, found.code) ? _chunk7ODQRNR4cjs.DRAFT_ISSUE_SEVERITY[found.code] : void 0;
651
662
  return {
652
663
  ...found,
653
664
  path: found.path.map(String),
@@ -717,9 +728,9 @@ function redactValue(value, policy, reveal) {
717
728
  }
718
729
  function redact(data, options = {}) {
719
730
  const reveal = _nullishCoalesce(options.reveal, () => ( "none"));
720
- const descriptor = _chunkCVRALNUKcjs.getActivityTypeDescriptor.call(void 0, data.type);
731
+ const descriptor = _chunk7ODQRNR4cjs.getActivityTypeDescriptor.call(void 0, data.type);
721
732
  if (descriptor === void 0) {
722
- throw new (0, _chunkCVRALNUKcjs.UnknownActivityTypeError)(String(data.type));
733
+ throw new (0, _chunk7ODQRNR4cjs.UnknownActivityTypeError)(String(data.type));
723
734
  }
724
735
  if (descriptor.fieldPolicy === void 0) {
725
736
  throw new Error(
@@ -732,7 +743,7 @@ function redact(data, options = {}) {
732
743
  if (reveal === "none" && descriptor.redactedSchema !== void 0) {
733
744
  const parsed = descriptor.redactedSchema.safeParse(result);
734
745
  if (!parsed.success) {
735
- throw new (0, _chunkCVRALNUKcjs.ActivitySchemaError)(
746
+ throw new (0, _chunk7ODQRNR4cjs.ActivitySchemaError)(
736
747
  descriptor.type,
737
748
  parsed.error.issues.map((issue2) => ({
738
749
  path: issue2.path.map(String),
@@ -746,13 +757,13 @@ function redact(data, options = {}) {
746
757
  }
747
758
  function assertRedacted(data) {
748
759
  if (typeof data !== "object" || data === null) {
749
- throw new (0, _chunkCVRALNUKcjs.ActivitySchemaError)("unknown", [
760
+ throw new (0, _chunk7ODQRNR4cjs.ActivitySchemaError)("unknown", [
750
761
  { path: [], message: "Redacted activity data must be an object.", code: "invalid_type" }
751
762
  ]);
752
763
  }
753
764
  const candidate = data;
754
765
  if (candidate.redacted !== true) {
755
- throw new (0, _chunkCVRALNUKcjs.ActivitySchemaError)(String(_nullishCoalesce(candidate.type, () => ( "unknown"))), [
766
+ throw new (0, _chunk7ODQRNR4cjs.ActivitySchemaError)(String(_nullishCoalesce(candidate.type, () => ( "unknown"))), [
756
767
  {
757
768
  path: ["redacted"],
758
769
  message: "Missing redacted marker \u2014 this payload is not a redact() projection.",
@@ -761,12 +772,12 @@ function assertRedacted(data) {
761
772
  ]);
762
773
  }
763
774
  const type = typeof candidate.type === "string" ? candidate.type : "";
764
- const descriptor = _chunkCVRALNUKcjs.getActivityTypeDescriptor.call(void 0, type);
775
+ const descriptor = _chunk7ODQRNR4cjs.getActivityTypeDescriptor.call(void 0, type);
765
776
  if (descriptor === void 0) {
766
- throw new (0, _chunkCVRALNUKcjs.UnknownActivityTypeError)(type);
777
+ throw new (0, _chunk7ODQRNR4cjs.UnknownActivityTypeError)(type);
767
778
  }
768
779
  if (descriptor.redactedSchema === void 0) {
769
- throw new (0, _chunkCVRALNUKcjs.ActivitySchemaError)(descriptor.type, [
780
+ throw new (0, _chunk7ODQRNR4cjs.ActivitySchemaError)(descriptor.type, [
770
781
  {
771
782
  path: [],
772
783
  message: `Activity type "${descriptor.type}" registers no redactedSchema; assertRedacted cannot prove this payload is learner-safe.`,
@@ -776,7 +787,7 @@ function assertRedacted(data) {
776
787
  }
777
788
  const parsed = descriptor.redactedSchema.safeParse(candidate);
778
789
  if (!parsed.success) {
779
- throw new (0, _chunkCVRALNUKcjs.ActivitySchemaError)(
790
+ throw new (0, _chunk7ODQRNR4cjs.ActivitySchemaError)(
780
791
  descriptor.type,
781
792
  parsed.error.issues.map((issue2) => ({
782
793
  path: issue2.path.map(String),
@@ -792,7 +803,7 @@ var STIMULUS_FIELD_POLICY = {
792
803
  title: "public",
793
804
  body: "public",
794
805
  bodyHtml: "public",
795
- media: _chunkCVRALNUKcjs.MEDIA_FIELD_POLICY,
806
+ media: _chunk7ODQRNR4cjs.MEDIA_FIELD_POLICY,
796
807
  locale: "public",
797
808
  attribution: "public",
798
809
  transcript: "author-only"
@@ -818,9 +829,9 @@ function redactItemGroup(group, options = {}) {
818
829
  redacted: true
819
830
  };
820
831
  if (reveal === "none") {
821
- const parsed = _chunkYVZCFUGPcjs.RedactedItemGroupSchema.safeParse(result);
832
+ const parsed = _chunk3FEAEO3Dcjs.RedactedItemGroupSchema.safeParse(result);
822
833
  if (!parsed.success) {
823
- throw new (0, _chunkCVRALNUKcjs.ActivitySchemaError)(
834
+ throw new (0, _chunk7ODQRNR4cjs.ActivitySchemaError)(
824
835
  "item-group",
825
836
  parsed.error.issues.map((issue2) => ({
826
837
  path: issue2.path.map(String),
@@ -834,13 +845,13 @@ function redactItemGroup(group, options = {}) {
834
845
  }
835
846
  function assertRedactedItemGroup(data) {
836
847
  if (typeof data !== "object" || data === null) {
837
- throw new (0, _chunkCVRALNUKcjs.ActivitySchemaError)("item-group", [
848
+ throw new (0, _chunk7ODQRNR4cjs.ActivitySchemaError)("item-group", [
838
849
  { path: [], message: "Redacted item group must be an object.", code: "invalid_type" }
839
850
  ]);
840
851
  }
841
852
  const candidate = data;
842
853
  if (candidate.redacted !== true) {
843
- throw new (0, _chunkCVRALNUKcjs.ActivitySchemaError)("item-group", [
854
+ throw new (0, _chunk7ODQRNR4cjs.ActivitySchemaError)("item-group", [
844
855
  {
845
856
  path: ["redacted"],
846
857
  message: "Missing redacted marker \u2014 this payload is not a redactItemGroup() projection.",
@@ -848,9 +859,9 @@ function assertRedactedItemGroup(data) {
848
859
  }
849
860
  ]);
850
861
  }
851
- const parsed = _chunkYVZCFUGPcjs.RedactedItemGroupSchema.safeParse(candidate);
862
+ const parsed = _chunk3FEAEO3Dcjs.RedactedItemGroupSchema.safeParse(candidate);
852
863
  if (!parsed.success) {
853
- throw new (0, _chunkCVRALNUKcjs.ActivitySchemaError)(
864
+ throw new (0, _chunk7ODQRNR4cjs.ActivitySchemaError)(
854
865
  "item-group",
855
866
  parsed.error.issues.map((issue2) => ({
856
867
  path: issue2.path.map(String),
@@ -863,8 +874,8 @@ function assertRedactedItemGroup(data) {
863
874
  try {
864
875
  assertRedacted(item);
865
876
  } catch (error) {
866
- if (error instanceof _chunkCVRALNUKcjs.ActivitySchemaError) {
867
- throw new (0, _chunkCVRALNUKcjs.ActivitySchemaError)(
877
+ if (error instanceof _chunk7ODQRNR4cjs.ActivitySchemaError) {
878
+ throw new (0, _chunk7ODQRNR4cjs.ActivitySchemaError)(
868
879
  "item-group",
869
880
  error.errors.map((issue2) => ({
870
881
  ...issue2,
@@ -964,5 +975,16 @@ function assertRedactedItemGroup(data) {
964
975
 
965
976
 
966
977
 
967
- exports.ActivitySchemaError = _chunkCVRALNUKcjs.ActivitySchemaError; exports.BlankConfigSchema = _chunkCVRALNUKcjs.BlankConfigSchema; exports.DEFAULT_PASS_THRESHOLD = _chunkMOLL5KXOcjs.DEFAULT_PASS_THRESHOLD; exports.DeferredScoringError = _chunkCVRALNUKcjs.DeferredScoringError; exports.FeedbackSchema = _chunkCVRALNUKcjs.FeedbackSchema; exports.FillInTheBlanksDataSchema = _chunkCVRALNUKcjs.FillInTheBlanksDataSchema; exports.ItemGroupSchema = _chunkYVZCFUGPcjs.ItemGroupSchema; exports.MediaPlaybackSchema = _chunkCVRALNUKcjs.MediaPlaybackSchema; exports.MediaSchema = _chunkCVRALNUKcjs.MediaSchema; exports.MediaUrlSchema = _chunkCVRALNUKcjs.MediaUrlSchema; exports.MultipleChoiceDataSchema = _chunkCVRALNUKcjs.MultipleChoiceDataSchema; exports.MultipleChoiceOptionSchema = _chunkCVRALNUKcjs.MultipleChoiceOptionSchema; exports.NativeControlHintSchema = _chunkCVRALNUKcjs.NativeControlHintSchema; exports.RedactedBlankConfigSchema = _chunkCVRALNUKcjs.RedactedBlankConfigSchema; exports.RedactedFillInTheBlanksDataSchema = _chunkCVRALNUKcjs.RedactedFillInTheBlanksDataSchema; exports.RedactedItemGroupSchema = _chunkYVZCFUGPcjs.RedactedItemGroupSchema; exports.RedactedMediaSchema = _chunkCVRALNUKcjs.RedactedMediaSchema; exports.RedactedMultipleChoiceDataSchema = _chunkCVRALNUKcjs.RedactedMultipleChoiceDataSchema; exports.RedactedMultipleChoiceOptionSchema = _chunkCVRALNUKcjs.RedactedMultipleChoiceOptionSchema; exports.RedactedScoringError = _chunkCVRALNUKcjs.RedactedScoringError; exports.RedactedStimulusSchema = _chunkYVZCFUGPcjs.RedactedStimulusSchema; exports.RedactedWrittenResponseDataSchema = _chunkCVRALNUKcjs.RedactedWrittenResponseDataSchema; exports.StimulusSchema = _chunkYVZCFUGPcjs.StimulusSchema; exports.TextMatchPolicySchema = _chunkCVRALNUKcjs.TextMatchPolicySchema; exports.UnknownActivityTypeError = _chunkCVRALNUKcjs.UnknownActivityTypeError; exports.WrittenResponseDataSchema = _chunkCVRALNUKcjs.WrittenResponseDataSchema; exports.WrittenResponseRubricCriterionSchema = _chunkCVRALNUKcjs.WrittenResponseRubricCriterionSchema; exports.WrittenResponseRubricSchema = _chunkCVRALNUKcjs.WrittenResponseRubricSchema; exports.XAPIVerb = _chunkRL2PQLCYcjs.XAPIVerb; exports.XAPI_VERB_DISPLAY = _chunkRL2PQLCYcjs.XAPI_VERB_DISPLAY; exports.assertRedacted = assertRedacted; exports.assertRedactedItemGroup = assertRedactedItemGroup; exports.canonicalJson = canonicalJson; exports.classifyBand = _chunkMOLL5KXOcjs.classifyBand; exports.composeAssessmentScore = _chunkMOLL5KXOcjs.composeAssessmentScore; exports.computePassThreshold = _chunkMOLL5KXOcjs.computePassThreshold; exports.contentHash = contentHash; exports.countWords = _chunkCVRALNUKcjs.countWords; exports.createDraft = createDraft; exports.defineActivityType = _chunkCVRALNUKcjs.defineActivityType; exports.diffResponses = diffResponses; exports.entryKeyOf = entryKeyOf; exports.evaluate = _chunkMOLL5KXOcjs.evaluate; exports.fillInTheBlanksJsonSchema = _chunkYVZCFUGPcjs.fillInTheBlanksJsonSchema; exports.fillInTheBlanksType = _chunkCVRALNUKcjs.fillInTheBlanksType; exports.fingerprint = fingerprint; exports.flattenSequence = flattenSequence; exports.getActivityTypeDescriptor = _chunkCVRALNUKcjs.getActivityTypeDescriptor; exports.gradeFromRubric = _chunkMOLL5KXOcjs.gradeFromRubric; exports.gte = _chunkMOLL5KXOcjs.gte; exports.hasGrade = _chunkMOLL5KXOcjs.hasGrade; exports.hashSeed = hashSeed; exports.isItemGroup = isItemGroup; exports.itemGroupJsonSchema = _chunkYVZCFUGPcjs.itemGroupJsonSchema; exports.jsonSchemaFor = _chunkYVZCFUGPcjs.jsonSchemaFor; exports.levenshteinDistance = _chunkCVRALNUKcjs.levenshteinDistance; exports.matchText = _chunkCVRALNUKcjs.matchText; exports.multipleChoiceJsonSchema = _chunkYVZCFUGPcjs.multipleChoiceJsonSchema; exports.multipleChoiceType = _chunkCVRALNUKcjs.multipleChoiceType; exports.outcomeFromGrade = _chunkMOLL5KXOcjs.outcomeFromGrade; exports.planAttempt = planAttempt; exports.planMediaBudgets = planMediaBudgets; exports.redact = redact; exports.redactItemGroup = redactItemGroup; exports.registerActivityType = _chunkCVRALNUKcjs.registerActivityType; exports.registeredActivityTypes = _chunkCVRALNUKcjs.registeredActivityTypes; exports.resolvePlaybackPolicy = resolvePlaybackPolicy; exports.restoreAttemptState = restoreAttemptState; exports.restoreMediaPlayLedger = restoreMediaPlayLedger; exports.roundGrade = _chunkMOLL5KXOcjs.roundGrade; exports.score = _chunkMOLL5KXOcjs.score; exports.scoredItemsFromPlan = scoredItemsFromPlan; exports.seededShuffle = seededShuffle; exports.serializeAttemptState = serializeAttemptState; exports.serializeMediaPlayLedger = serializeMediaPlayLedger; exports.slotMediaKey = slotMediaKey; exports.stimulusJsonSchema = _chunkYVZCFUGPcjs.stimulusJsonSchema; exports.stimulusMediaKey = stimulusMediaKey; exports.validateActivity = _chunkYVZCFUGPcjs.validateActivity; exports.validateDraft = validateDraft; exports.validateItemGroup = _chunkYVZCFUGPcjs.validateItemGroup; exports.validateXAPIStatement = _chunkRL2PQLCYcjs.validateXAPIStatement; exports.verifyAttemptPlan = verifyAttemptPlan; exports.writtenResponseJsonSchema = _chunkYVZCFUGPcjs.writtenResponseJsonSchema; exports.writtenResponseType = _chunkCVRALNUKcjs.writtenResponseType; exports.xAPIBuilder = _chunkRL2PQLCYcjs.xAPIBuilder; exports.xapiDefinitionFor = _chunkRL2PQLCYcjs.xapiDefinitionFor;
978
+
979
+
980
+
981
+
982
+
983
+
984
+
985
+
986
+
987
+
988
+
989
+ exports.ActivitySchemaError = _chunk7ODQRNR4cjs.ActivitySchemaError; exports.BlankConfigSchema = _chunk7ODQRNR4cjs.BlankConfigSchema; exports.DEFAULT_PASS_THRESHOLD = _chunkVBM5H6P5cjs.DEFAULT_PASS_THRESHOLD; exports.DeferredScoringError = _chunk7ODQRNR4cjs.DeferredScoringError; exports.FeedbackSchema = _chunk7ODQRNR4cjs.FeedbackSchema; exports.FillInTheBlanksDataSchema = _chunk7ODQRNR4cjs.FillInTheBlanksDataSchema; exports.GapSelectBankSchema = _chunk7ODQRNR4cjs.GapSelectBankSchema; exports.GapSelectChoiceSchema = _chunk7ODQRNR4cjs.GapSelectChoiceSchema; exports.GapSelectDataSchema = _chunk7ODQRNR4cjs.GapSelectDataSchema; exports.GapSelectGapSchema = _chunk7ODQRNR4cjs.GapSelectGapSchema; exports.ItemGroupSchema = _chunk3FEAEO3Dcjs.ItemGroupSchema; exports.MediaPlaybackSchema = _chunk7ODQRNR4cjs.MediaPlaybackSchema; exports.MediaSchema = _chunk7ODQRNR4cjs.MediaSchema; exports.MediaUrlSchema = _chunk7ODQRNR4cjs.MediaUrlSchema; exports.MultipleChoiceDataSchema = _chunk7ODQRNR4cjs.MultipleChoiceDataSchema; exports.MultipleChoiceOptionMediaSchema = _chunk7ODQRNR4cjs.MultipleChoiceOptionMediaSchema; exports.MultipleChoiceOptionSchema = _chunk7ODQRNR4cjs.MultipleChoiceOptionSchema; exports.NativeControlHintSchema = _chunk7ODQRNR4cjs.NativeControlHintSchema; exports.RedactedBlankConfigSchema = _chunk7ODQRNR4cjs.RedactedBlankConfigSchema; exports.RedactedFillInTheBlanksDataSchema = _chunk7ODQRNR4cjs.RedactedFillInTheBlanksDataSchema; exports.RedactedGapSelectBankSchema = _chunk7ODQRNR4cjs.RedactedGapSelectBankSchema; exports.RedactedGapSelectChoiceSchema = _chunk7ODQRNR4cjs.RedactedGapSelectChoiceSchema; exports.RedactedGapSelectDataSchema = _chunk7ODQRNR4cjs.RedactedGapSelectDataSchema; exports.RedactedGapSelectGapSchema = _chunk7ODQRNR4cjs.RedactedGapSelectGapSchema; exports.RedactedItemGroupSchema = _chunk3FEAEO3Dcjs.RedactedItemGroupSchema; exports.RedactedMediaSchema = _chunk7ODQRNR4cjs.RedactedMediaSchema; exports.RedactedMultipleChoiceDataSchema = _chunk7ODQRNR4cjs.RedactedMultipleChoiceDataSchema; exports.RedactedMultipleChoiceOptionMediaSchema = _chunk7ODQRNR4cjs.RedactedMultipleChoiceOptionMediaSchema; exports.RedactedMultipleChoiceOptionSchema = _chunk7ODQRNR4cjs.RedactedMultipleChoiceOptionSchema; exports.RedactedScoringError = _chunk7ODQRNR4cjs.RedactedScoringError; exports.RedactedStimulusSchema = _chunk3FEAEO3Dcjs.RedactedStimulusSchema; exports.RedactedWrittenResponseDataSchema = _chunk7ODQRNR4cjs.RedactedWrittenResponseDataSchema; exports.StimulusSchema = _chunk3FEAEO3Dcjs.StimulusSchema; exports.TextMatchPolicySchema = _chunk7ODQRNR4cjs.TextMatchPolicySchema; exports.UnknownActivityTypeError = _chunk7ODQRNR4cjs.UnknownActivityTypeError; exports.WrittenResponseDataSchema = _chunk7ODQRNR4cjs.WrittenResponseDataSchema; exports.WrittenResponseRubricCriterionSchema = _chunk7ODQRNR4cjs.WrittenResponseRubricCriterionSchema; exports.WrittenResponseRubricSchema = _chunk7ODQRNR4cjs.WrittenResponseRubricSchema; exports.XAPIVerb = _chunkVTTRXGDDcjs.XAPIVerb; exports.XAPI_VERB_DISPLAY = _chunkVTTRXGDDcjs.XAPI_VERB_DISPLAY; exports.assertRedacted = assertRedacted; exports.assertRedactedItemGroup = assertRedactedItemGroup; exports.canonicalJson = canonicalJson; exports.classifyBand = _chunkVBM5H6P5cjs.classifyBand; exports.composeAssessmentScore = _chunkVBM5H6P5cjs.composeAssessmentScore; exports.computePassThreshold = _chunkVBM5H6P5cjs.computePassThreshold; exports.contentHash = contentHash; exports.countWords = _chunk7ODQRNR4cjs.countWords; exports.createDraft = createDraft; exports.defineActivityType = _chunk7ODQRNR4cjs.defineActivityType; exports.diffResponses = diffResponses; exports.entryKeyOf = entryKeyOf; exports.evaluate = _chunkVBM5H6P5cjs.evaluate; exports.fillInTheBlanksJsonSchema = _chunk3FEAEO3Dcjs.fillInTheBlanksJsonSchema; exports.fillInTheBlanksType = _chunk7ODQRNR4cjs.fillInTheBlanksType; exports.fingerprint = fingerprint; exports.flattenSequence = flattenSequence; exports.gapSelectJsonSchema = _chunk3FEAEO3Dcjs.gapSelectJsonSchema; exports.getActivityTypeDescriptor = _chunk7ODQRNR4cjs.getActivityTypeDescriptor; exports.gradeFromRubric = _chunkVBM5H6P5cjs.gradeFromRubric; exports.gte = _chunkVBM5H6P5cjs.gte; exports.hasGrade = _chunkVBM5H6P5cjs.hasGrade; exports.hashSeed = hashSeed; exports.isItemGroup = isItemGroup; exports.itemGroupJsonSchema = _chunk3FEAEO3Dcjs.itemGroupJsonSchema; exports.jsonSchemaFor = _chunk3FEAEO3Dcjs.jsonSchemaFor; exports.levenshteinDistance = _chunk7ODQRNR4cjs.levenshteinDistance; exports.matchText = _chunk7ODQRNR4cjs.matchText; exports.multipleChoiceJsonSchema = _chunk3FEAEO3Dcjs.multipleChoiceJsonSchema; exports.multipleChoiceType = _chunk7ODQRNR4cjs.multipleChoiceType; exports.outcomeFromGrade = _chunkVBM5H6P5cjs.outcomeFromGrade; exports.planAttempt = planAttempt; exports.planMediaBudgets = planMediaBudgets; exports.redact = redact; exports.redactItemGroup = redactItemGroup; exports.registerActivityType = _chunk7ODQRNR4cjs.registerActivityType; exports.registeredActivityTypes = _chunk7ODQRNR4cjs.registeredActivityTypes; exports.resolvePlaybackPolicy = resolvePlaybackPolicy; exports.restoreAttemptState = restoreAttemptState; exports.restoreMediaPlayLedger = restoreMediaPlayLedger; exports.roundGrade = _chunkVBM5H6P5cjs.roundGrade; exports.score = _chunkVBM5H6P5cjs.score; exports.scoredItemsFromPlan = scoredItemsFromPlan; exports.seededShuffle = seededShuffle; exports.serializeAttemptState = serializeAttemptState; exports.serializeMediaPlayLedger = serializeMediaPlayLedger; exports.slotMediaKey = slotMediaKey; exports.stimulusJsonSchema = _chunk3FEAEO3Dcjs.stimulusJsonSchema; exports.stimulusMediaKey = stimulusMediaKey; exports.validateActivity = _chunk3FEAEO3Dcjs.validateActivity; exports.validateDraft = validateDraft; exports.validateItemGroup = _chunk3FEAEO3Dcjs.validateItemGroup; exports.validateXAPIStatement = _chunkVTTRXGDDcjs.validateXAPIStatement; exports.verifyAttemptPlan = verifyAttemptPlan; exports.writtenResponseJsonSchema = _chunk3FEAEO3Dcjs.writtenResponseJsonSchema; exports.writtenResponseType = _chunk7ODQRNR4cjs.writtenResponseType; exports.xAPIBuilder = _chunkVTTRXGDDcjs.xAPIBuilder; exports.xapiDefinitionFor = _chunkVTTRXGDDcjs.xapiDefinitionFor;
968
990
  //# sourceMappingURL=index.cjs.map