@longsightgroup/qti3-core 0.10.2 → 0.10.3

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 (119) hide show
  1. package/README.md +21 -2
  2. package/dist/attempt-state.d.ts.map +1 -1
  3. package/dist/attempt-state.js +18 -0
  4. package/dist/attempt-state.js.map +1 -1
  5. package/dist/content-text.d.ts +4 -0
  6. package/dist/content-text.d.ts.map +1 -1
  7. package/dist/content-text.js +112 -9
  8. package/dist/content-text.js.map +1 -1
  9. package/dist/index.d.ts +4 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +4 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/media-definition.d.ts +55 -0
  14. package/dist/media-definition.d.ts.map +1 -0
  15. package/dist/media-definition.js +97 -0
  16. package/dist/media-definition.js.map +1 -0
  17. package/dist/parser-declarations.d.ts +4 -4
  18. package/dist/parser-declarations.d.ts.map +1 -1
  19. package/dist/parser-declarations.js +87 -46
  20. package/dist/parser-declarations.js.map +1 -1
  21. package/dist/parser-item-metadata.d.ts.map +1 -1
  22. package/dist/parser-item-metadata.js +4 -3
  23. package/dist/parser-item-metadata.js.map +1 -1
  24. package/dist/parser-processing.js +10 -9
  25. package/dist/parser-processing.js.map +1 -1
  26. package/dist/parser-values.d.ts +2 -0
  27. package/dist/parser-values.d.ts.map +1 -1
  28. package/dist/parser-values.js +7 -0
  29. package/dist/parser-values.js.map +1 -1
  30. package/dist/parser.js +16 -13
  31. package/dist/parser.js.map +1 -1
  32. package/dist/processing-evaluator-collection.d.ts.map +1 -1
  33. package/dist/processing-evaluator-collection.js +8 -2
  34. package/dist/processing-evaluator-collection.js.map +1 -1
  35. package/dist/processing-evaluator-comparison.d.ts.map +1 -1
  36. package/dist/processing-evaluator-comparison.js +6 -0
  37. package/dist/processing-evaluator-comparison.js.map +1 -1
  38. package/dist/processing-evaluator-numeric.d.ts.map +1 -1
  39. package/dist/processing-evaluator-numeric.js +8 -1
  40. package/dist/processing-evaluator-numeric.js.map +1 -1
  41. package/dist/processing-expression-children.d.ts.map +1 -1
  42. package/dist/processing-expression-children.js +2 -1
  43. package/dist/processing-expression-children.js.map +1 -1
  44. package/dist/processing-limits.d.ts +3 -0
  45. package/dist/processing-limits.d.ts.map +1 -0
  46. package/dist/processing-limits.js +3 -0
  47. package/dist/processing-limits.js.map +1 -0
  48. package/dist/processing-mapping.d.ts.map +1 -1
  49. package/dist/processing-mapping.js +13 -2
  50. package/dist/processing-mapping.js.map +1 -1
  51. package/dist/processing-operators.d.ts +2 -0
  52. package/dist/processing-operators.d.ts.map +1 -1
  53. package/dist/processing-operators.js +34 -5
  54. package/dist/processing-operators.js.map +1 -1
  55. package/dist/response-validation-policy.d.ts.map +1 -1
  56. package/dist/response-validation-policy.js +5 -6
  57. package/dist/response-validation-policy.js.map +1 -1
  58. package/dist/serializer-processing-expressions.js +1 -1
  59. package/dist/serializer-processing-expressions.js.map +1 -1
  60. package/dist/slider-definition.d.ts +59 -0
  61. package/dist/slider-definition.d.ts.map +1 -0
  62. package/dist/slider-definition.js +198 -0
  63. package/dist/slider-definition.js.map +1 -0
  64. package/dist/support-evidence.d.ts +6 -2
  65. package/dist/support-evidence.d.ts.map +1 -1
  66. package/dist/support-evidence.js +15 -11
  67. package/dist/support-evidence.js.map +1 -1
  68. package/dist/support.d.ts.map +1 -1
  69. package/dist/support.js +96 -100
  70. package/dist/support.js.map +1 -1
  71. package/dist/types.d.ts +3 -0
  72. package/dist/types.d.ts.map +1 -1
  73. package/dist/validation-declaration-entries.d.ts +13 -0
  74. package/dist/validation-declaration-entries.d.ts.map +1 -0
  75. package/dist/validation-declaration-entries.js +136 -0
  76. package/dist/validation-declaration-entries.js.map +1 -0
  77. package/dist/validation-interactions.d.ts.map +1 -1
  78. package/dist/validation-interactions.js +14 -46
  79. package/dist/validation-interactions.js.map +1 -1
  80. package/dist/validation-primitives.js +2 -2
  81. package/dist/validation-primitives.js.map +1 -1
  82. package/dist/validation-processing.d.ts.map +1 -1
  83. package/dist/validation-processing.js +125 -1
  84. package/dist/validation-processing.js.map +1 -1
  85. package/dist/validation.d.ts.map +1 -1
  86. package/dist/validation.js +8 -134
  87. package/dist/validation.js.map +1 -1
  88. package/dist/xml.d.ts.map +1 -1
  89. package/dist/xml.js +3 -2
  90. package/dist/xml.js.map +1 -1
  91. package/package.json +1 -1
  92. package/src/attempt-state.ts +20 -0
  93. package/src/content-text.ts +135 -11
  94. package/src/index.ts +25 -0
  95. package/src/media-definition.ts +174 -0
  96. package/src/parser-declarations.ts +134 -40
  97. package/src/parser-item-metadata.ts +4 -3
  98. package/src/parser-processing.ts +10 -9
  99. package/src/parser-values.ts +7 -0
  100. package/src/parser.ts +16 -13
  101. package/src/processing-evaluator-collection.ts +7 -2
  102. package/src/processing-evaluator-comparison.ts +6 -0
  103. package/src/processing-evaluator-numeric.ts +5 -1
  104. package/src/processing-expression-children.ts +2 -1
  105. package/src/processing-limits.ts +2 -0
  106. package/src/processing-mapping.ts +10 -2
  107. package/src/processing-operators.ts +38 -5
  108. package/src/response-validation-policy.ts +5 -5
  109. package/src/serializer-processing-expressions.ts +1 -1
  110. package/src/slider-definition.ts +363 -0
  111. package/src/support-evidence.ts +15 -17
  112. package/src/support.ts +106 -102
  113. package/src/types.ts +8 -1
  114. package/src/validation-declaration-entries.ts +162 -0
  115. package/src/validation-interactions.ts +14 -64
  116. package/src/validation-primitives.ts +2 -2
  117. package/src/validation-processing.ts +145 -1
  118. package/src/validation.ts +11 -151
  119. package/src/xml.ts +3 -4
@@ -0,0 +1,136 @@
1
+ import { hasValidShapeCoordinateCount, isAreaShape, isNumericCsv, numericCsv, } from "./validation-geometry.js";
2
+ import { isFiniteNumber, isInteger } from "./validation-primitives.js";
3
+ /** Append diagnostics for raw qti-map-entry attributes. */
4
+ export function validateMapEntryAttributes(declarationIdentifier, entry, diagnostics) {
5
+ if (!entry.attributes["map-key"]) {
6
+ diagnostics.push({
7
+ code: "mapEntry.mapKey.required",
8
+ severity: "error",
9
+ message: `Response declaration ${declarationIdentifier} map entry requires map-key.`,
10
+ path: entry.source?.path,
11
+ source: entry.source,
12
+ });
13
+ }
14
+ const mappedValue = entry.attributes["mapped-value"];
15
+ if (mappedValue === undefined) {
16
+ diagnostics.push({
17
+ code: "mapEntry.mappedValue.required",
18
+ severity: "error",
19
+ message: `Response declaration ${declarationIdentifier} map entry requires mapped-value.`,
20
+ path: entry.source?.path,
21
+ source: entry.source,
22
+ });
23
+ }
24
+ else if (!isFiniteNumber(mappedValue)) {
25
+ diagnostics.push({
26
+ code: "mapEntry.mappedValue",
27
+ severity: "error",
28
+ message: `Response declaration ${declarationIdentifier} map entry requires numeric mapped-value.`,
29
+ path: entry.source?.path,
30
+ source: entry.source,
31
+ });
32
+ }
33
+ }
34
+ /** Append diagnostics for raw qti-area-map-entry attributes. */
35
+ export function validateAreaMapEntryAttributes(declarationIdentifier, entry, diagnostics) {
36
+ const shape = entry.attributes.shape;
37
+ const coords = entry.attributes.coords;
38
+ const mappedValue = entry.attributes["mapped-value"];
39
+ if (!shape) {
40
+ diagnostics.push({
41
+ code: "areaMapEntry.shape.required",
42
+ severity: "error",
43
+ message: `Response declaration ${declarationIdentifier} area map entry requires shape.`,
44
+ path: entry.source?.path,
45
+ source: entry.source,
46
+ });
47
+ }
48
+ else if (!isAreaShape(shape)) {
49
+ diagnostics.push({
50
+ code: "areaMapEntry.shape",
51
+ severity: "error",
52
+ message: `Response declaration ${declarationIdentifier} area map entry has unsupported shape ${shape}.`,
53
+ path: entry.source?.path,
54
+ source: entry.source,
55
+ });
56
+ }
57
+ if (!coords) {
58
+ diagnostics.push({
59
+ code: "areaMapEntry.coords.required",
60
+ severity: "error",
61
+ message: `Response declaration ${declarationIdentifier} area map entry requires coords.`,
62
+ path: entry.source?.path,
63
+ source: entry.source,
64
+ });
65
+ }
66
+ else if (!isNumericCsv(coords)) {
67
+ diagnostics.push({
68
+ code: "areaMapEntry.coords",
69
+ severity: "error",
70
+ message: `Response declaration ${declarationIdentifier} area map entry requires comma-separated numeric coords.`,
71
+ path: entry.source?.path,
72
+ source: entry.source,
73
+ });
74
+ }
75
+ else if (shape &&
76
+ isAreaShape(shape) &&
77
+ !hasValidShapeCoordinateCount(shape, numericCsv(coords))) {
78
+ diagnostics.push({
79
+ code: "areaMapEntry.coords.shape",
80
+ severity: "error",
81
+ message: `Response declaration ${declarationIdentifier} area map entry shape ${shape} has invalid coords arity.`,
82
+ path: entry.source?.path,
83
+ source: entry.source,
84
+ });
85
+ }
86
+ if (mappedValue === undefined) {
87
+ diagnostics.push({
88
+ code: "areaMapEntry.mappedValue.required",
89
+ severity: "error",
90
+ message: `Response declaration ${declarationIdentifier} area map entry requires mapped-value.`,
91
+ path: entry.source?.path,
92
+ source: entry.source,
93
+ });
94
+ }
95
+ else if (!isFiniteNumber(mappedValue)) {
96
+ diagnostics.push({
97
+ code: "areaMapEntry.mappedValue",
98
+ severity: "error",
99
+ message: `Response declaration ${declarationIdentifier} area map entry requires numeric mapped-value.`,
100
+ path: entry.source?.path,
101
+ source: entry.source,
102
+ });
103
+ }
104
+ }
105
+ /** Append diagnostics for raw lookup-table entry attributes. */
106
+ export function validateLookupTableEntryAttributes(tableType, entry, diagnostics) {
107
+ const sourceValue = entry.attributes["source-value"];
108
+ if (sourceValue === undefined || !isFiniteNumber(sourceValue)) {
109
+ diagnostics.push({
110
+ code: "lookupTable.entry.sourceValue",
111
+ severity: "error",
112
+ message: "Lookup table entry requires numeric source-value.",
113
+ path: entry.source?.path,
114
+ source: entry.source,
115
+ });
116
+ }
117
+ if (entry.attributes["target-value"] === undefined) {
118
+ diagnostics.push({
119
+ code: "lookupTable.entry.targetValue",
120
+ severity: "error",
121
+ message: "Lookup table entry requires target-value.",
122
+ path: entry.source?.path,
123
+ source: entry.source,
124
+ });
125
+ }
126
+ if (tableType === "match" && sourceValue !== undefined && !isInteger(sourceValue)) {
127
+ diagnostics.push({
128
+ code: "lookupTable.match.sourceValue",
129
+ severity: "error",
130
+ message: "qti-match-table-entry source-value must be an integer.",
131
+ path: entry.source?.path,
132
+ source: entry.source,
133
+ });
134
+ }
135
+ }
136
+ //# sourceMappingURL=validation-declaration-entries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation-declaration-entries.js","sourceRoot":"","sources":["../src/validation-declaration-entries.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validation-interactions.d.ts","sourceRoot":"","sources":["../src/validation-interactions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAIjB,aAAa,EAGd,MAAM,YAAY,CAAC;AAgBpB,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,IAAI,CA+BhG"}
1
+ {"version":3,"file":"validation-interactions.d.ts","sourceRoot":"","sources":["../src/validation-interactions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAIjB,aAAa,EAGd,MAAM,YAAY,CAAC;AAiBpB,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,IAAI,CA+BhG"}
@@ -1,9 +1,11 @@
1
1
  import { assertNever } from "./assert-never.js";
2
2
  import { isValidQtiPatternMask } from "./pattern-mask.js";
3
+ import { parseQtiMediaDefinition } from "./media-definition.js";
4
+ import { parseQtiSliderDefinition } from "./slider-definition.js";
3
5
  import { validateInteractionSharedVocabulary } from "./shared-vocabulary-interaction-validation.js";
4
6
  import { qtiValueToStringList } from "./value-format.js";
5
7
  import { validateGraphicHotspotObjectDimensions, validateHotspotGeometry, } from "./validation-geometry.js";
6
- import { isBooleanAttribute, isFiniteNumber, isNonNegativeInteger, requireIdentifier, } from "./validation-primitives.js";
8
+ import { isBooleanAttribute, isNonNegativeInteger, requireIdentifier, } from "./validation-primitives.js";
7
9
  export function validateInteractions(item, diagnostics) {
8
10
  const responseDeclarations = new Map(item.responseDeclarations.map((declaration) => [declaration.identifier, declaration]));
9
11
  const responseIdentifiers = new Set(responseDeclarations.keys());
@@ -63,7 +65,9 @@ function validateInteractionResponseShape(interaction, diagnostics) {
63
65
  source: interaction.source,
64
66
  });
65
67
  }
66
- if (interaction.responseBaseType && !expected.baseTypes.includes(interaction.responseBaseType)) {
68
+ if (interaction.type !== "slider" &&
69
+ interaction.responseBaseType &&
70
+ !expected.baseTypes.includes(interaction.responseBaseType)) {
67
71
  diagnostics.push({
68
72
  code: "interaction.baseType",
69
73
  severity: "error",
@@ -212,34 +216,14 @@ function validateInteractionRequiredAttributes(interaction, diagnostics) {
212
216
  requireInteractionAttribute(interaction, "custom-interaction-type-identifier", "interaction.portableCustom.typeIdentifier", diagnostics);
213
217
  }
214
218
  if (interaction.type === "slider") {
215
- const lower = interaction.attributes["lower-bound"];
216
- const upper = interaction.attributes["upper-bound"];
217
- requireInteractionAttribute(interaction, "lower-bound", "interaction.slider.lowerBound", diagnostics);
218
- requireInteractionAttribute(interaction, "upper-bound", "interaction.slider.upperBound", diagnostics);
219
- if (lower !== undefined && !isFiniteNumber(lower)) {
220
- invalidNumber(interaction, "lower-bound", lower, diagnostics);
221
- }
222
- if (upper !== undefined && !isFiniteNumber(upper)) {
223
- invalidNumber(interaction, "upper-bound", upper, diagnostics);
224
- }
225
- if (lower !== undefined &&
226
- upper !== undefined &&
227
- isFiniteNumber(lower) &&
228
- isFiniteNumber(upper)) {
229
- if (Number(lower) >= Number(upper)) {
230
- diagnostics.push({
231
- code: "interaction.slider.bounds",
232
- severity: "error",
233
- message: `${interaction.qtiName} requires lower-bound to be less than upper-bound.`,
234
- path: interaction.source?.path,
235
- source: interaction.source,
236
- });
237
- }
238
- }
239
- const step = interaction.attributes.step;
240
- if (step !== undefined && (!isFiniteNumber(step) || Number(step) <= 0)) {
241
- invalidNumber(interaction, "step", step, diagnostics);
242
- }
219
+ const definition = parseQtiSliderDefinition(interaction);
220
+ if (!definition.ok)
221
+ diagnostics.push(...definition.diagnostics);
222
+ }
223
+ if (interaction.type === "media") {
224
+ const definition = parseQtiMediaDefinition(interaction);
225
+ if (!definition.ok)
226
+ diagnostics.push(...definition.diagnostics);
243
227
  }
244
228
  }
245
229
  function requiresObject(interaction) {
@@ -360,15 +344,6 @@ function warnExternalPortableCustomUrl(url, source, diagnostics) {
360
344
  source,
361
345
  });
362
346
  }
363
- function invalidNumber(interaction, attribute, value, diagnostics) {
364
- diagnostics.push({
365
- code: "interaction.numericAttribute",
366
- severity: "error",
367
- message: `${interaction.qtiName} requires numeric ${attribute}, got ${value}.`,
368
- path: interaction.source?.path,
369
- source: interaction.source,
370
- });
371
- }
372
347
  function validatePatternMaskAttribute(interaction, diagnostics) {
373
348
  if (interaction.type !== "textEntry" && interaction.type !== "extendedText")
374
349
  return;
@@ -393,13 +368,6 @@ function validateInteractionLimitAttributes(interaction, diagnostics) {
393
368
  validateMinMaxPair(interaction, "min-choices", "max-choices", diagnostics);
394
369
  validateMinMaxPair(interaction, "min-associations", "max-associations", diagnostics);
395
370
  validateBooleanAttribute(interaction, "required", diagnostics);
396
- if (interaction.type === "media") {
397
- validateNonNegativeIntegerAttribute(interaction, "max-plays", diagnostics);
398
- validateNonNegativeIntegerAttribute(interaction, "min-plays", diagnostics);
399
- validateBooleanAttribute(interaction, "autostart", diagnostics);
400
- validateBooleanAttribute(interaction, "loop", diagnostics);
401
- validateMinMaxPair(interaction, "min-plays", "max-plays", diagnostics);
402
- }
403
371
  }
404
372
  function validateChoiceLimitAttributes(choice, diagnostics) {
405
373
  if (requiresMatchMax(choice) && !choice.attributes["match-max"]) {
@@ -1 +1 @@
1
- {"version":3,"file":"validation-interactions.js","sourceRoot":"","sources":["../src/validation-interactions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation-interactions.js","sourceRoot":"","sources":["../src/validation-interactions.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { parseXmlBoolean } from "./parser-values.js";
1
+ import { parseFiniteNumber, parseXmlBoolean } from "./parser-values.js";
2
2
  export function requireIdentifier(qtiName, identifier, diagnostics, source) {
3
3
  if (identifier?.trim())
4
4
  return;
@@ -27,7 +27,7 @@ export function isBaseType(value) {
27
27
  value === "uri");
28
28
  }
29
29
  export function isFiniteNumber(value) {
30
- return Number.isFinite(Number(value));
30
+ return parseFiniteNumber(value) !== undefined;
31
31
  }
32
32
  export function isInteger(value) {
33
33
  return /^-?\d+$/.test(value);
@@ -1 +1 @@
1
- {"version":3,"file":"validation-primitives.js","sourceRoot":"","sources":["../src/validation-primitives.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,UAAU,iBAAiB,CAC/B,OAAe,EACf,UAA8B,EAC9B,WAA4B,EAC5B,MAA+B;IAE/B,IAAI,UAAU,EAAE,IAAI,EAAE;QAAE,OAAO;IAC/B,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,GAAG,OAAO,mCAAmC;QACtD,IAAI,EAAE,MAAM,EAAE,IAAI;QAClB,MAAM;KACP,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,QAAQ,CAAC;AACjG,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,CACL,KAAK,KAAK,YAAY;QACtB,KAAK,KAAK,SAAS;QACnB,KAAK,KAAK,SAAS;QACnB,KAAK,KAAK,OAAO;QACjB,KAAK,KAAK,QAAQ;QAClB,KAAK,KAAK,OAAO;QACjB,KAAK,KAAK,MAAM;QAChB,KAAK,KAAK,cAAc;QACxB,KAAK,KAAK,UAAU;QACpB,KAAK,KAAK,MAAM;QAChB,KAAK,KAAK,KAAK,CAChB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAyB;IAC/D,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1E,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,eAAe,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,KAAa;IAClC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACtE,CAAC"}
1
+ {"version":3,"file":"validation-primitives.js","sourceRoot":"","sources":["../src/validation-primitives.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAExE,MAAM,UAAU,iBAAiB,CAC/B,OAAe,EACf,UAA8B,EAC9B,WAA4B,EAC5B,MAA+B;IAE/B,IAAI,UAAU,EAAE,IAAI,EAAE;QAAE,OAAO;IAC/B,WAAW,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,GAAG,OAAO,mCAAmC;QACtD,IAAI,EAAE,MAAM,EAAE,IAAI;QAClB,MAAM;KACP,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,QAAQ,CAAC;AACjG,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,CACL,KAAK,KAAK,YAAY;QACtB,KAAK,KAAK,SAAS;QACnB,KAAK,KAAK,SAAS;QACnB,KAAK,KAAK,OAAO;QACjB,KAAK,KAAK,QAAQ;QAClB,KAAK,KAAK,OAAO;QACjB,KAAK,KAAK,MAAM;QAChB,KAAK,KAAK,cAAc;QACxB,KAAK,KAAK,UAAU;QACpB,KAAK,KAAK,MAAM;QAChB,KAAK,KAAK,KAAK,CAChB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAO,iBAAiB,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAyB;IAC/D,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1E,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,eAAe,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,KAAa;IAClC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACtE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"validation-processing.d.ts","sourceRoot":"","sources":["../src/validation-processing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EAMd,MAAM,YAAY,CAAC;AAepB,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,iBAAiB,EACvB,WAAW,EAAE,aAAa,EAAE,GAC3B,IAAI,CAeN;AAwED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,iBAAiB,EACvB,WAAW,EAAE,aAAa,EAAE,GAC3B,IAAI,CAcN"}
1
+ {"version":3,"file":"validation-processing.d.ts","sourceRoot":"","sources":["../src/validation-processing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EAMd,MAAM,YAAY,CAAC;AAgBpB,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,iBAAiB,EACvB,WAAW,EAAE,aAAa,EAAE,GAC3B,IAAI,CAeN;AAwED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,iBAAiB,EACvB,WAAW,EAAE,aAAa,EAAE,GAC3B,IAAI,CAcN"}
@@ -1,4 +1,5 @@
1
1
  import { expressionChildren } from "./processing-expression-children.js";
2
+ import { MAX_QTI_REPEAT_RESULT_ELEMENTS } from "./processing-limits.js";
2
3
  import { MATH_OPERATOR_NAMES, STATS_OPERATOR_NAMES } from "./processing-operators.js";
3
4
  import { responseProcessingTemplateKind, } from "./processing-templates.js";
4
5
  import { isBaseType, isBooleanAttribute, isFiniteNumber, isInteger, } from "./validation-primitives.js";
@@ -298,6 +299,10 @@ function validateExpressionReferences(expression, responses, variables, diagnost
298
299
  if (expression.type === "equalRounded") {
299
300
  validateRounding("qti-equal-rounded", expression.roundingMode, expression.figures, diagnostics, expression.source);
300
301
  }
302
+ if (expression.type === "anyN") {
303
+ validateAnyNBound("min", expression.min, responses, variables, diagnostics, expression.source);
304
+ validateAnyNBound("max", expression.max, responses, variables, diagnostics, expression.source);
305
+ }
301
306
  if (expression.type === "mathConstant" && !mathConstantNames.has(expression.name)) {
302
307
  diagnostics.push({
303
308
  code: "processing.mathConstant.name",
@@ -325,6 +330,29 @@ function validateExpressionReferences(expression, responses, variables, diagnost
325
330
  source: expression.source,
326
331
  });
327
332
  }
333
+ if ((expression.type === "sum" ||
334
+ expression.type === "product" ||
335
+ expression.type === "min" ||
336
+ expression.type === "max") &&
337
+ expression.expressions.length === 0) {
338
+ diagnostics.push({
339
+ code: "processing.numeric.arity",
340
+ severity: "error",
341
+ message: `qti-${expression.type} requires at least one child expression.`,
342
+ path: expression.source?.path,
343
+ source: expression.source,
344
+ });
345
+ }
346
+ if (expression.type === "statsOperator" &&
347
+ (expression.expressions ?? [expression.expression]).length !== 1) {
348
+ diagnostics.push({
349
+ code: "processing.statsOperator.arity",
350
+ severity: "error",
351
+ message: "qti-stats-operator requires exactly one child expression.",
352
+ path: expression.source?.path,
353
+ source: expression.source,
354
+ });
355
+ }
328
356
  if (expression.type === "repeat") {
329
357
  validateRepeatExpression(expression, variables, diagnostics);
330
358
  }
@@ -363,8 +391,29 @@ function validateRounding(qtiName, roundingMode, figures, diagnostics, source) {
363
391
  }
364
392
  }
365
393
  function validateRepeatExpression(expression, variables, diagnostics) {
366
- if (isInteger(expression.numberRepeats))
394
+ if (isInteger(expression.numberRepeats)) {
395
+ const repeats = BigInt(expression.numberRepeats);
396
+ if (repeats < 0n) {
397
+ diagnostics.push(repeatCountDiagnostic(expression));
398
+ return;
399
+ }
400
+ const minimumPerRepeat = minimumProducedElements(expression.expressions);
401
+ if (repeats > BigInt(MAX_QTI_REPEAT_RESULT_ELEMENTS) ||
402
+ repeats * BigInt(minimumPerRepeat) > BigInt(MAX_QTI_REPEAT_RESULT_ELEMENTS)) {
403
+ diagnostics.push({
404
+ code: "processing.repeat.limit",
405
+ severity: "error",
406
+ message: `qti-repeat cannot exceed ${MAX_QTI_REPEAT_RESULT_ELEMENTS} iterations or produced elements.`,
407
+ path: expression.source?.path,
408
+ source: expression.source,
409
+ });
410
+ }
411
+ return;
412
+ }
413
+ if (Number.isFinite(Number(expression.numberRepeats))) {
414
+ diagnostics.push(repeatCountDiagnostic(expression));
367
415
  return;
416
+ }
368
417
  validateProcessingIdentifier(expression.numberRepeats, "processing.repeat.numberRepeats", expression.source, diagnostics);
369
418
  if (expression.numberRepeats && !variables.has(expression.numberRepeats)) {
370
419
  diagnostics.push({
@@ -376,6 +425,81 @@ function validateRepeatExpression(expression, variables, diagnostics) {
376
425
  });
377
426
  }
378
427
  }
428
+ function validateAnyNBound(attribute, value, responses, variables, diagnostics, source) {
429
+ if (value.length === 0) {
430
+ diagnostics.push({
431
+ code: `processing.anyN.${attribute}.required`,
432
+ severity: "error",
433
+ message: `qti-any-n requires ${attribute}.`,
434
+ path: source?.path,
435
+ source,
436
+ });
437
+ return;
438
+ }
439
+ if (isInteger(value))
440
+ return;
441
+ if (Number.isFinite(Number(value))) {
442
+ diagnostics.push({
443
+ code: `processing.anyN.${attribute}.integer`,
444
+ severity: "error",
445
+ message: `qti-any-n ${attribute} must be an integer or a declared variable.`,
446
+ path: source?.path,
447
+ source,
448
+ });
449
+ return;
450
+ }
451
+ if (!variables.has(value) || responses.has(value)) {
452
+ diagnostics.push({
453
+ code: `processing.anyN.${attribute}.reference`,
454
+ severity: "error",
455
+ message: `qti-any-n ${attribute} references missing template or outcome variable ${value}.`,
456
+ path: source?.path,
457
+ source,
458
+ });
459
+ }
460
+ }
461
+ function repeatCountDiagnostic(expression) {
462
+ return {
463
+ code: "processing.repeat.numberRepeats",
464
+ severity: "error",
465
+ message: "qti-repeat requires a non-negative integer or a declared variable.",
466
+ path: expression.source?.path,
467
+ source: expression.source,
468
+ };
469
+ }
470
+ function minimumProducedElements(expressions) {
471
+ let total = 0;
472
+ for (const expression of expressions) {
473
+ total = cappedElementCount(total + minimumExpressionElements(expression));
474
+ }
475
+ return total;
476
+ }
477
+ function minimumExpressionElements(expression) {
478
+ if (expression.type === "baseValue")
479
+ return 1;
480
+ if (expression.type === "multiple" || expression.type === "ordered") {
481
+ return minimumProducedElements(expression.expressions);
482
+ }
483
+ if (expression.type === "random") {
484
+ if (expression.values.length === 0)
485
+ return 0;
486
+ let minimum = MAX_QTI_REPEAT_RESULT_ELEMENTS + 1;
487
+ for (const value of expression.values) {
488
+ minimum = Math.min(minimum, minimumExpressionElements(value));
489
+ }
490
+ return minimum;
491
+ }
492
+ if (expression.type !== "repeat" || !/^\d+$/.test(expression.numberRepeats))
493
+ return 0;
494
+ const perRepeat = minimumProducedElements(expression.expressions);
495
+ const projected = BigInt(expression.numberRepeats) * BigInt(perRepeat);
496
+ return projected > BigInt(MAX_QTI_REPEAT_RESULT_ELEMENTS)
497
+ ? MAX_QTI_REPEAT_RESULT_ELEMENTS + 1
498
+ : Number(projected);
499
+ }
500
+ function cappedElementCount(value) {
501
+ return Math.min(value, MAX_QTI_REPEAT_RESULT_ELEMENTS + 1);
502
+ }
379
503
  function validateInsideExpression(expression, diagnostics) {
380
504
  const rawShape = expression.attributes.shape;
381
505
  if (rawShape === undefined) {