@longsightgroup/qti3-core 0.10.2 → 0.10.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.
Files changed (188) hide show
  1. package/README.md +21 -2
  2. package/dist/attempt-state.d.ts.map +1 -1
  3. package/dist/attempt-state.js +20 -27
  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 +137 -12
  8. package/dist/content-text.js.map +1 -1
  9. package/dist/index.d.ts +6 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +6 -1
  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/package-xml.d.ts +1 -0
  18. package/dist/package-xml.d.ts.map +1 -1
  19. package/dist/package-xml.js +1 -0
  20. package/dist/package-xml.js.map +1 -1
  21. package/dist/parser-custom-interactions.js +1 -0
  22. package/dist/parser-custom-interactions.js.map +1 -1
  23. package/dist/parser-declarations.d.ts +4 -4
  24. package/dist/parser-declarations.d.ts.map +1 -1
  25. package/dist/parser-declarations.js +87 -46
  26. package/dist/parser-declarations.js.map +1 -1
  27. package/dist/parser-item-metadata.d.ts.map +1 -1
  28. package/dist/parser-item-metadata.js +5 -3
  29. package/dist/parser-item-metadata.js.map +1 -1
  30. package/dist/parser-processing.js +10 -9
  31. package/dist/parser-processing.js.map +1 -1
  32. package/dist/parser-values.d.ts +6 -0
  33. package/dist/parser-values.d.ts.map +1 -1
  34. package/dist/parser-values.js +35 -2
  35. package/dist/parser-values.js.map +1 -1
  36. package/dist/parser.d.ts.map +1 -1
  37. package/dist/parser.js +81 -47
  38. package/dist/parser.js.map +1 -1
  39. package/dist/processing-evaluator-collection.d.ts.map +1 -1
  40. package/dist/processing-evaluator-collection.js +8 -2
  41. package/dist/processing-evaluator-collection.js.map +1 -1
  42. package/dist/processing-evaluator-comparison.d.ts.map +1 -1
  43. package/dist/processing-evaluator-comparison.js +22 -6
  44. package/dist/processing-evaluator-comparison.js.map +1 -1
  45. package/dist/processing-evaluator-numeric.d.ts.map +1 -1
  46. package/dist/processing-evaluator-numeric.js +8 -1
  47. package/dist/processing-evaluator-numeric.js.map +1 -1
  48. package/dist/processing-evaluator-variable.d.ts.map +1 -1
  49. package/dist/processing-evaluator-variable.js +1 -1
  50. package/dist/processing-evaluator-variable.js.map +1 -1
  51. package/dist/processing-expression-children.d.ts.map +1 -1
  52. package/dist/processing-expression-children.js +2 -1
  53. package/dist/processing-expression-children.js.map +1 -1
  54. package/dist/processing-limits.d.ts +3 -0
  55. package/dist/processing-limits.d.ts.map +1 -0
  56. package/dist/processing-limits.js +3 -0
  57. package/dist/processing-limits.js.map +1 -0
  58. package/dist/processing-mapping.d.ts.map +1 -1
  59. package/dist/processing-mapping.js +28 -9
  60. package/dist/processing-mapping.js.map +1 -1
  61. package/dist/processing-operators.d.ts +2 -0
  62. package/dist/processing-operators.d.ts.map +1 -1
  63. package/dist/processing-operators.js +34 -5
  64. package/dist/processing-operators.js.map +1 -1
  65. package/dist/processing-values.d.ts +4 -4
  66. package/dist/processing-values.d.ts.map +1 -1
  67. package/dist/processing-values.js +28 -14
  68. package/dist/processing-values.js.map +1 -1
  69. package/dist/processing-variables.d.ts +3 -1
  70. package/dist/processing-variables.d.ts.map +1 -1
  71. package/dist/processing-variables.js +38 -2
  72. package/dist/processing-variables.js.map +1 -1
  73. package/dist/qti-namespaces.d.ts +7 -0
  74. package/dist/qti-namespaces.d.ts.map +1 -0
  75. package/dist/qti-namespaces.js +7 -0
  76. package/dist/qti-namespaces.js.map +1 -0
  77. package/dist/qti-package-items.d.ts.map +1 -1
  78. package/dist/qti-package-items.js +23 -13
  79. package/dist/qti-package-items.js.map +1 -1
  80. package/dist/qti-package-manifest.d.ts.map +1 -1
  81. package/dist/qti-package-manifest.js +4 -3
  82. package/dist/qti-package-manifest.js.map +1 -1
  83. package/dist/qti-package-metadata.d.ts.map +1 -1
  84. package/dist/qti-package-metadata.js +3 -2
  85. package/dist/qti-package-metadata.js.map +1 -1
  86. package/dist/qti-package-xml.d.ts +4 -2
  87. package/dist/qti-package-xml.d.ts.map +1 -1
  88. package/dist/qti-package-xml.js +10 -5
  89. package/dist/qti-package-xml.js.map +1 -1
  90. package/dist/qti-package-zip.d.ts +17 -1
  91. package/dist/qti-package-zip.d.ts.map +1 -1
  92. package/dist/qti-package-zip.js +60 -5
  93. package/dist/qti-package-zip.js.map +1 -1
  94. package/dist/qti-package.d.ts +3 -3
  95. package/dist/qti-package.d.ts.map +1 -1
  96. package/dist/qti-package.js +10 -4
  97. package/dist/qti-package.js.map +1 -1
  98. package/dist/response-validation-policy.d.ts.map +1 -1
  99. package/dist/response-validation-policy.js +5 -6
  100. package/dist/response-validation-policy.js.map +1 -1
  101. package/dist/response-validation.d.ts +12 -2
  102. package/dist/response-validation.d.ts.map +1 -1
  103. package/dist/response-validation.js +122 -19
  104. package/dist/response-validation.js.map +1 -1
  105. package/dist/serializer-processing-expressions.js +1 -1
  106. package/dist/serializer-processing-expressions.js.map +1 -1
  107. package/dist/session.js +1 -1
  108. package/dist/session.js.map +1 -1
  109. package/dist/slider-definition.d.ts +59 -0
  110. package/dist/slider-definition.d.ts.map +1 -0
  111. package/dist/slider-definition.js +198 -0
  112. package/dist/slider-definition.js.map +1 -0
  113. package/dist/support-evidence.d.ts +6 -2
  114. package/dist/support-evidence.d.ts.map +1 -1
  115. package/dist/support-evidence.js +15 -11
  116. package/dist/support-evidence.js.map +1 -1
  117. package/dist/support.d.ts.map +1 -1
  118. package/dist/support.js +96 -100
  119. package/dist/support.js.map +1 -1
  120. package/dist/trusted-item-session.d.ts.map +1 -1
  121. package/dist/trusted-item-session.js +5 -3
  122. package/dist/trusted-item-session.js.map +1 -1
  123. package/dist/types.d.ts +5 -0
  124. package/dist/types.d.ts.map +1 -1
  125. package/dist/validation-declaration-entries.d.ts +13 -0
  126. package/dist/validation-declaration-entries.d.ts.map +1 -0
  127. package/dist/validation-declaration-entries.js +136 -0
  128. package/dist/validation-declaration-entries.js.map +1 -0
  129. package/dist/validation-interactions.d.ts.map +1 -1
  130. package/dist/validation-interactions.js +14 -46
  131. package/dist/validation-interactions.js.map +1 -1
  132. package/dist/validation-primitives.d.ts +5 -1
  133. package/dist/validation-primitives.d.ts.map +1 -1
  134. package/dist/validation-primitives.js +41 -3
  135. package/dist/validation-primitives.js.map +1 -1
  136. package/dist/validation-processing.d.ts.map +1 -1
  137. package/dist/validation-processing.js +125 -1
  138. package/dist/validation-processing.js.map +1 -1
  139. package/dist/validation.d.ts.map +1 -1
  140. package/dist/validation.js +8 -134
  141. package/dist/validation.js.map +1 -1
  142. package/dist/xml.d.ts.map +1 -1
  143. package/dist/xml.js +31 -2
  144. package/dist/xml.js.map +1 -1
  145. package/package.json +1 -1
  146. package/src/attempt-state.ts +22 -26
  147. package/src/content-text.ts +174 -14
  148. package/src/index.ts +28 -0
  149. package/src/media-definition.ts +174 -0
  150. package/src/package-xml.ts +2 -0
  151. package/src/parser-custom-interactions.ts +1 -0
  152. package/src/parser-declarations.ts +134 -40
  153. package/src/parser-item-metadata.ts +5 -3
  154. package/src/parser-processing.ts +10 -9
  155. package/src/parser-values.ts +35 -2
  156. package/src/parser.ts +137 -103
  157. package/src/processing-evaluator-collection.ts +7 -2
  158. package/src/processing-evaluator-comparison.ts +30 -5
  159. package/src/processing-evaluator-numeric.ts +5 -1
  160. package/src/processing-evaluator-variable.ts +1 -0
  161. package/src/processing-expression-children.ts +2 -1
  162. package/src/processing-limits.ts +2 -0
  163. package/src/processing-mapping.ts +32 -8
  164. package/src/processing-operators.ts +38 -5
  165. package/src/processing-values.ts +59 -14
  166. package/src/processing-variables.ts +47 -2
  167. package/src/qti-namespaces.ts +8 -0
  168. package/src/qti-package-items.ts +56 -49
  169. package/src/qti-package-manifest.ts +13 -4
  170. package/src/qti-package-metadata.ts +3 -2
  171. package/src/qti-package-xml.ts +16 -3
  172. package/src/qti-package-zip.ts +128 -3
  173. package/src/qti-package.ts +12 -3
  174. package/src/response-validation-policy.ts +5 -5
  175. package/src/response-validation.ts +185 -20
  176. package/src/serializer-processing-expressions.ts +1 -1
  177. package/src/session.ts +1 -0
  178. package/src/slider-definition.ts +363 -0
  179. package/src/support-evidence.ts +15 -17
  180. package/src/support.ts +106 -102
  181. package/src/trusted-item-session.ts +5 -3
  182. package/src/types.ts +10 -1
  183. package/src/validation-declaration-entries.ts +162 -0
  184. package/src/validation-interactions.ts +14 -64
  185. package/src/validation-primitives.ts +44 -4
  186. package/src/validation-processing.ts +145 -1
  187. package/src/validation.ts +11 -151
  188. package/src/xml.ts +40 -4
@@ -0,0 +1,97 @@
1
+ import { assertNever } from "./assert-never.js";
2
+ import { parseXmlBoolean } from "./parser-values.js";
3
+ import { isNonNegativeInteger } from "./validation-primitives.js";
4
+ /** Seconds from the start within which a play event counts as a new play experience. */
5
+ export const QTI_MEDIA_RESTART_THRESHOLD_SECONDS = 0.25;
6
+ function diagnostic(interaction, code, message) {
7
+ return {
8
+ code,
9
+ severity: "error",
10
+ message,
11
+ path: interaction.source?.path,
12
+ source: interaction.source,
13
+ };
14
+ }
15
+ function optionalBoolean(interaction, attribute, diagnostics) {
16
+ const raw = interaction.attributes[attribute];
17
+ if (raw === undefined)
18
+ return false;
19
+ const value = parseXmlBoolean(raw);
20
+ if (value !== undefined)
21
+ return value;
22
+ diagnostics.push(diagnostic(interaction, "interaction.booleanAttribute", `${interaction.qtiName} requires boolean ${attribute}, got ${raw}.`));
23
+ return false;
24
+ }
25
+ function optionalNonNegativeInteger(interaction, attribute, diagnostics) {
26
+ const raw = interaction.attributes[attribute];
27
+ if (raw === undefined)
28
+ return undefined;
29
+ if (!isNonNegativeInteger(raw)) {
30
+ diagnostics.push(diagnostic(interaction, "interaction.integerAttribute", `${interaction.qtiName} requires non-negative integer ${attribute}, got ${raw}.`));
31
+ return undefined;
32
+ }
33
+ return Number(raw);
34
+ }
35
+ function atMaximumPlays(session, maxPlays) {
36
+ return maxPlays !== undefined && session.playCount >= maxPlays;
37
+ }
38
+ /**
39
+ * Refines raw QTI media attributes into the play-count domain shared by validation and players.
40
+ */
41
+ export function parseQtiMediaDefinition(interaction) {
42
+ const diagnostics = [];
43
+ const minPlaysAttribute = optionalNonNegativeInteger(interaction, "min-plays", diagnostics);
44
+ const maxPlaysAttribute = optionalNonNegativeInteger(interaction, "max-plays", diagnostics);
45
+ const autostart = optionalBoolean(interaction, "autostart", diagnostics);
46
+ const loop = optionalBoolean(interaction, "loop", diagnostics);
47
+ const required = parseXmlBoolean(interaction.attributes.required) === true;
48
+ const maxPlays = maxPlaysAttribute === undefined || maxPlaysAttribute <= 0 ? undefined : maxPlaysAttribute;
49
+ if (minPlaysAttribute !== undefined && maxPlays !== undefined && minPlaysAttribute > maxPlays) {
50
+ diagnostics.push(diagnostic(interaction, "interaction.minMax", `${interaction.qtiName} requires min-plays to be less than or equal to max-plays, unless max-plays is 0 for unlimited.`));
51
+ }
52
+ if (diagnostics.length > 0)
53
+ return { ok: false, diagnostics };
54
+ return {
55
+ ok: true,
56
+ value: {
57
+ minPlays: minPlaysAttribute ?? (required ? 1 : 0),
58
+ maxPlays,
59
+ autostart,
60
+ nativeLoop: loop && maxPlays === undefined,
61
+ },
62
+ };
63
+ }
64
+ function applyPlayEvent(session, event, maxPlays) {
65
+ if (session.status !== "playing" && atMaximumPlays(session, maxPlays)) {
66
+ return { kind: "blocked", session };
67
+ }
68
+ const counts = session.status === "ended" ||
69
+ (session.status === "idle" && event.currentTime <= QTI_MEDIA_RESTART_THRESHOLD_SECONDS);
70
+ return {
71
+ kind: "applied",
72
+ session: {
73
+ status: "playing",
74
+ playCount: session.playCount + (counts ? 1 : 0),
75
+ },
76
+ };
77
+ }
78
+ function applySeekedEvent(session, event) {
79
+ if (!event.paused || event.currentTime > QTI_MEDIA_RESTART_THRESHOLD_SECONDS) {
80
+ return { kind: "applied", session };
81
+ }
82
+ return { kind: "applied", session: { status: "idle", playCount: session.playCount } };
83
+ }
84
+ /** Applies one native media event to the QTI play-experience session. */
85
+ export function applyQtiMediaPlaybackEvent(session, event, maxPlays) {
86
+ switch (event.kind) {
87
+ case "play":
88
+ return applyPlayEvent(session, event, maxPlays);
89
+ case "ended":
90
+ return { kind: "applied", session: { status: "ended", playCount: session.playCount } };
91
+ case "seeked":
92
+ return applySeekedEvent(session, event);
93
+ default:
94
+ return assertNever(event);
95
+ }
96
+ }
97
+ //# sourceMappingURL=media-definition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-definition.js","sourceRoot":"","sources":["../src/media-definition.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  export interface QtiPackageXmlNode {
2
2
  localName: string;
3
+ uri?: string | undefined;
3
4
  attributes: Record<string, string>;
4
5
  children: QtiPackageXmlNode[];
5
6
  text: string;
@@ -1 +1 @@
1
- {"version":3,"file":"package-xml.d.ts","sourceRoot":"","sources":["../src/package-xml.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACpC,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAMrE"}
1
+ {"version":3,"file":"package-xml.d.ts","sourceRoot":"","sources":["../src/package-xml.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACpC,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAMrE"}
@@ -9,6 +9,7 @@ export function parseQtiPackageXmlTree(xml) {
9
9
  function packageXmlNode(node) {
10
10
  return {
11
11
  localName: node.localName,
12
+ uri: node.uri,
12
13
  attributes: node.attributes,
13
14
  children: node.children.map(packageXmlNode),
14
15
  text: node.text,
@@ -1 +1 @@
1
- {"version":3,"file":"package-xml.js","sourceRoot":"","sources":["../src/package-xml.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAgB,MAAM,UAAU,CAAC;AActD,MAAM,UAAU,sBAAsB,CAAC,GAAW;IAChD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;QAC3D,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;KACpD,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,IAAa;IACnC,OAAO;QACL,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC;QAC3C,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"package-xml.js","sourceRoot":"","sources":["../src/package-xml.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAgB,MAAM,UAAU,CAAC;AAetD,MAAM,UAAU,sBAAsB,CAAC,GAAW;IAChD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;QAC3D,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;KACpD,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,IAAa;IACnC,OAAO;QACL,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC;QAC3C,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC;AACJ,CAAC"}
@@ -124,6 +124,7 @@ function parseCustomMarkupNode(node, diagnostics, isInteractionElement, options)
124
124
  return {
125
125
  kind: "element",
126
126
  qtiName: node.localName,
127
+ namespaceUri: node.uri,
127
128
  attributes: node.attributes,
128
129
  children: parseCustomMarkupChildren(node, diagnostics, isInteractionElement, options),
129
130
  source: node.source,
@@ -1 +1 @@
1
- {"version":3,"file":"parser-custom-interactions.js","sourceRoot":"","sources":["../src/parser-custom-interactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAYjG,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,aAAa,EAAgB,MAAM,UAAU,CAAC;AAc1F,MAAM,+BAA+B,GAAG,YAAY,CAAC;AACrD,MAAM,4BAA4B,GAA+B;IAC/D,iBAAiB,EAAE,CAAC,+BAA+B,CAAC;CACrD,CAAC;AAEF,MAAM,yBAAyB,GAA6B;IAC1D,qBAAqB,EAAE,sCAAsC;IAC7D,WAAW,EAAE,+BAA+B;IAC5C,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,+BAA+B;CAC1E,CAAC;AAEF,MAAM,2BAA2B,GAA6B;IAC5D,qBAAqB,EAAE,8CAA8C;IACrE,WAAW,EAAE,wBAAwB;CACtC,CAAC;AAEF,MAAM,UAAU,6BAA6B,CAC3C,IAAa,EACb,eAA+C,EAC/C,WAA4B,EAC5B,oBAAoD;IAKpD,IAAI,IAAI,CAAC,SAAS,KAAK,wBAAwB,EAAE,CAAC;QAChD,OAAO;YACL,iBAAiB,EAAE,gCAAgC,CAAC,IAAI,EAAE,WAAW,EAAE,oBAAoB,CAAC;SAC7F,CAAC;IACJ,CAAC;IACD,IAAI,eAAe,KAAK,gBAAgB,EAAE,CAAC;QACzC,OAAO;YACL,cAAc,EAAE,6BAA6B,CAAC,IAAI,EAAE,WAAW,EAAE,oBAAoB,CAAC;SACvF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,gCAAgC,CACvC,IAAa,EACb,WAA4B,EAC5B,oBAAoD;IAEpD,OAAO,gCAAgC,CACrC,IAAI,EACJ,WAAW,EACX,oBAAoB,EACpB,yBAAyB,EACzB,4BAA4B,CAC7B,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CACpC,IAAa,EACb,WAA4B,EAC5B,oBAAoD;IAEpD,MAAM,MAAM,GAAG,iBAAiB,CAC9B,IAAI,EACJ,wBAAwB,EACxB,WAAW,EACX,4CAA4C,CAC7C,CAAC;IACF,MAAM,OAAO,GAAG,iBAAiB,CAC/B,IAAI,EACJ,yBAAyB,EACzB,WAAW,EACX,4CAA4C,CAC7C,CAAC;IACF,OAAO;QACL,GAAG,2BAA2B,CAC5B,MAAM,EACN,IAAI,EACJ,WAAW,EACX,oBAAoB,EACpB,2BAA2B,CAC5B;QACD,+BAA+B,EAAE,IAAI,CAAC,UAAU,CAAC,oCAAoC,CAAC;QACtF,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;QAC9B,kBAAkB,EAAE,OAAO,CAAC,CAAC,CAAC,qCAAqC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;QACxF,iBAAiB,EAAE,aAAa,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC/E,kCAAkC,CAAC,QAAQ,EAAE,UAAU,CAAC,CACzD;QACD,gBAAgB,EAAE,aAAa,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC7E,kCAAkC,CAAC,QAAQ,EAAE,SAAS,CAAC,CACxD;QACD,WAAW,EAAE,aAAa,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC;QACvE,WAAW,EAAE,gBAAgB,CAC3B,iBAAiB,CACf,IAAI,EACJ,kBAAkB,EAClB,WAAW,EACX,4CAA4C,CAC7C,CACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,gCAAgC,CACvC,UAAmB,EACnB,WAA4B,EAC5B,oBAAoD,EACpD,aAAuC,EACvC,gBAA6C;IAE7C,MAAM,iBAAiB,GAAG,yBAAyB,CACjD,UAAU,EACV,WAAW,EACX,oBAAoB,EACpB,aAAa,CACd,CAAC;IACF,MAAM,oBAAoB,GAAG,8BAA8B,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;IAC1F,OAAO;QACL,kBAAkB,EAAE,UAAU,CAAC,UAAU,CAAC,qBAAqB,CAAC;QAChE,iBAAiB;QACjB,oBAAoB;QACpB,cAAc,EAAE,8BAA8B,CAAC,UAAU,CAAC;QAC1D,UAAU,EAAE,UAAU,CAAC,UAAU;QACjC,MAAM,EAAE,UAAU,CAAC,MAAM;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAClC,UAA+B,EAC/B,aAAsB,EACtB,WAA4B,EAC5B,oBAAoD,EACpD,aAAuC;IAEvC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO;YACL,kBAAkB,EAAE,aAAa,CAAC,UAAU,CAAC,qBAAqB,CAAC;YACnE,iBAAiB,EAAE,EAAE;YACrB,cAAc,EAAE,8BAA8B,CAAC,aAAa,CAAC;YAC7D,UAAU,EAAE,aAAa,CAAC,UAAU;YACpC,MAAM,EAAE,aAAa,CAAC,MAAM;SAC7B,CAAC;IACJ,CAAC;IACD,OAAO;QACL,GAAG,gCAAgC,CACjC,UAAU,EACV,WAAW,EACX,oBAAoB,EACpB,aAAa,CACd;QACD,kBAAkB,EAAE,aAAa,CAAC,UAAU,CAAC,qBAAqB,CAAC;QACnE,cAAc,EAAE,8BAA8B,CAAC,aAAa,CAAC;QAC7D,UAAU,EAAE,aAAa,CAAC,UAAU;QACpC,MAAM,EAAE,aAAa,CAAC,MAAM;KAC7B,CAAC;AACJ,CAAC;AAED,SAAS,8BAA8B,CAAC,IAAa;IACnD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAC7E,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAChC,IAAa,EACb,WAA4B,EAC5B,oBAAoD,EACpD,OAAiC;IAEjC,MAAM,OAAO,GAAqB,EAAE,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,qBAAqB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACnD,SAAS;QACX,CAAC;QACD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC;YAAE,SAAS;QACzC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAAa,EACb,WAA4B,EAC5B,oBAAoD,EACpD,OAAiC;IAEjC,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,OAAO,CAAC,qBAAqB;YACnC,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,4CAA4C,IAAI,CAAC,SAAS,GAAG;YAC5F,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;YACtB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,KAAK,sBAAsB,EAAE,CAAC;QAC9C,OAAO;YACL,IAAI,EAAE,iBAAiB;YACvB,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,EAAE;YAC5C,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM;YAC9B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,SAAS,KAAK,oBAAoB,IAAI,IAAI,CAAC,SAAS,KAAK,qBAAqB,EAAE,CAAC;QACxF,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,YAAY,EAAE,IAAI,CAAC,SAAS,KAAK,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;YAC1E,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,EAAE;YAC5C,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,EAAE;YAC9D,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;YACnE,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,yBAAyB,CAAC,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,OAAO,CAAC;YACrF,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,IAAI,CAAC,SAAS;QACvB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,QAAQ,EAAE,yBAAyB,CAAC,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,OAAO,CAAC;QACrF,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,qCAAqC,CAAC,IAAa;IAC1D,OAAO;QACL,oBAAoB,EAAE,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC;QAC9D,sBAAsB,EACpB,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,wBAAwB,CAAC;QACzF,OAAO,EAAE,aAAa,CAAC,IAAI,EAAE,wBAAwB,CAAC,CAAC,GAAG,CACxD,oCAAoC,CACrC;QACD,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,oCAAoC,CAAC,IAAa;IACzD,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE;QACtB,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;QAC5C,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;QAC9C,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,kCAAkC,CACzC,IAAa,EACb,IAA8C;IAE9C,OAAO;QACL,IAAI;QACJ,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC;QAChF,kBAAkB,EAAE,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC;QAC1D,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,8BAA8B,CACrC,IAAa,EACb,OAAoC;IAEpC,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACnD,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAa,EAAE,OAAoC;IAC9E,MAAM,OAAO,GAAG,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5F,OAAO,IAAI,CAAC,OAAO;SAChB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;SAC9E,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;SAC5F,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAa;IACrC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;SAC/C,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,KAAK,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC;SACjE,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,IAAI,CAAC,IAAI,GAAG,UAAU,IAAI,CAAC;IACrE,OAAO,IAAI,IAAI,CAAC,IAAI,GAAG,UAAU,IAAI,mBAAmB,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC;AAClF,CAAC"}
1
+ {"version":3,"file":"parser-custom-interactions.js","sourceRoot":"","sources":["../src/parser-custom-interactions.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import type { QtiOutcomeDeclaration, QtiResponseDeclaration, QtiTemplateDeclaration } from "./types.js";
1
+ import type { QtiDiagnostic, QtiOutcomeDeclaration, QtiResponseDeclaration, QtiTemplateDeclaration } from "./types.js";
2
2
  import { type XmlNode } from "./xml.js";
3
- export declare function parseResponseDeclaration(node: XmlNode): QtiResponseDeclaration;
4
- export declare function parseOutcomeDeclaration(node: XmlNode): QtiOutcomeDeclaration;
5
- export declare function parseTemplateDeclaration(node: XmlNode): QtiTemplateDeclaration;
3
+ export declare function parseResponseDeclaration(node: XmlNode, diagnostics: QtiDiagnostic[]): QtiResponseDeclaration;
4
+ export declare function parseOutcomeDeclaration(node: XmlNode, diagnostics: QtiDiagnostic[]): QtiOutcomeDeclaration;
5
+ export declare function parseTemplateDeclaration(node: XmlNode, diagnostics: QtiDiagnostic[]): QtiTemplateDeclaration;
6
6
  //# sourceMappingURL=parser-declarations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser-declarations.d.ts","sourceRoot":"","sources":["../src/parser-declarations.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAGV,qBAAqB,EACrB,sBAAsB,EAEtB,sBAAsB,EAEvB,MAAM,YAAY,CAAC;AACpB,OAAO,EAA8B,KAAK,OAAO,EAAE,MAAM,UAAU,CAAC;AAEpE,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,GAAG,sBAAsB,CAkB9E;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,qBAAqB,CAY5E;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,OAAO,GAAG,sBAAsB,CAW9E"}
1
+ {"version":3,"file":"parser-declarations.d.ts","sourceRoot":"","sources":["../src/parser-declarations.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAEV,aAAa,EAEb,qBAAqB,EACrB,sBAAsB,EAEtB,sBAAsB,EAEvB,MAAM,YAAY,CAAC;AAMpB,OAAO,EAA8B,KAAK,OAAO,EAAE,MAAM,UAAU,CAAC;AAEpE,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,OAAO,EACb,WAAW,EAAE,aAAa,EAAE,GAC3B,sBAAsB,CA8BxB;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,OAAO,EACb,WAAW,EAAE,aAAa,EAAE,GAC3B,qBAAqB,CAgBvB;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,OAAO,EACb,WAAW,EAAE,aAAa,EAAE,GAC3B,sBAAsB,CAexB"}
@@ -1,6 +1,7 @@
1
- import { coerceValue, normalizeValueForCardinality, parseBaseType, parseCardinality, parseCoords, parseShape, parseXmlBoolean, } from "./parser-values.js";
1
+ import { coerceValue, normalizeValueForCardinality, parseBaseType, parseCardinality, parseCoords, parseFiniteNumber, parseShape, parseXmlBoolean, } from "./parser-values.js";
2
+ import { validateAreaMapEntryAttributes, validateLookupTableEntryAttributes, validateMapEntryAttributes, } from "./validation-declaration-entries.js";
2
3
  import { childElements, textContent } from "./xml.js";
3
- export function parseResponseDeclaration(node) {
4
+ export function parseResponseDeclaration(node, diagnostics) {
4
5
  const cardinality = parseCardinality(node.attributes.cardinality);
5
6
  const baseType = parseBaseType(node.attributes["base-type"]);
6
7
  return {
@@ -8,40 +9,40 @@ export function parseResponseDeclaration(node) {
8
9
  identifier: node.attributes.identifier ?? "",
9
10
  cardinality,
10
11
  baseType,
11
- defaultValue: parseVariableValue(childElements(node, "qti-default-value")[0], baseType),
12
- correctResponse: normalizeValueForCardinality(parseVariableValue(childElements(node, "qti-correct-response")[0], baseType), cardinality),
13
- mapping: parseMapping(childElements(node, "qti-mapping")[0]),
14
- areaMapping: parseAreaMapping(childElements(node, "qti-area-mapping")[0]),
12
+ defaultValue: parseVariableValue(childElements(node, "qti-default-value")[0], baseType, diagnostics),
13
+ correctResponse: normalizeValueForCardinality(parseVariableValue(childElements(node, "qti-correct-response")[0], baseType, diagnostics), cardinality),
14
+ mapping: parseMapping(childElements(node, "qti-mapping")[0], node.attributes.identifier ?? "", diagnostics),
15
+ areaMapping: parseAreaMapping(childElements(node, "qti-area-mapping")[0], node.attributes.identifier ?? "", diagnostics),
15
16
  attributes: node.attributes,
16
17
  source: node.source,
17
18
  };
18
19
  }
19
- export function parseOutcomeDeclaration(node) {
20
+ export function parseOutcomeDeclaration(node, diagnostics) {
20
21
  const baseType = parseBaseType(node.attributes["base-type"]);
21
22
  return {
22
23
  kind: "outcome",
23
24
  identifier: node.attributes.identifier ?? "",
24
25
  cardinality: parseCardinality(node.attributes.cardinality),
25
26
  baseType,
26
- defaultValue: parseVariableValue(childElements(node, "qti-default-value")[0], baseType),
27
- lookupTable: parseLookupTable(node, baseType),
27
+ defaultValue: parseVariableValue(childElements(node, "qti-default-value")[0], baseType, diagnostics),
28
+ lookupTable: parseLookupTable(node, baseType, diagnostics),
28
29
  attributes: node.attributes,
29
30
  source: node.source,
30
31
  };
31
32
  }
32
- export function parseTemplateDeclaration(node) {
33
+ export function parseTemplateDeclaration(node, diagnostics) {
33
34
  const baseType = parseBaseType(node.attributes["base-type"]);
34
35
  return {
35
36
  kind: "template",
36
37
  identifier: node.attributes.identifier ?? "",
37
38
  cardinality: parseCardinality(node.attributes.cardinality),
38
39
  baseType,
39
- defaultValue: parseVariableValue(childElements(node, "qti-default-value")[0], baseType),
40
+ defaultValue: parseVariableValue(childElements(node, "qti-default-value")[0], baseType, diagnostics),
40
41
  attributes: node.attributes,
41
42
  source: node.source,
42
43
  };
43
44
  }
44
- function parseVariableValue(node, baseType) {
45
+ function parseVariableValue(node, baseType, diagnostics) {
45
46
  if (!node)
46
47
  return null;
47
48
  const valueNodes = childElements(node, "qti-value");
@@ -50,6 +51,16 @@ function parseVariableValue(node, baseType) {
50
51
  value: coerceValue(textContent(valueNode), valueNode.attributes["base-type"] ?? baseType),
51
52
  }));
52
53
  const recordEntries = entries.filter((entry) => Boolean(entry.fieldIdentifier));
54
+ const fieldedEntryCount = entries.filter((entry) => entry.fieldIdentifier !== undefined).length;
55
+ if (fieldedEntryCount > 0 && fieldedEntryCount < entries.length) {
56
+ diagnostics.push({
57
+ code: "declaration.value.fieldIdentifier.mixed",
58
+ severity: "error",
59
+ message: `${node.localName} must not mix qti-value children with and without field-identifier.`,
60
+ path: node.source.path,
61
+ source: node.source,
62
+ });
63
+ }
53
64
  if (recordEntries.length > 0) {
54
65
  return Object.fromEntries(recordEntries.map((entry) => [entry.fieldIdentifier, entry.value]));
55
66
  }
@@ -61,76 +72,106 @@ function parseVariableValue(node, baseType) {
61
72
  return entries[0]?.value ?? null;
62
73
  return entries.map((entry) => entry.value);
63
74
  }
64
- function parseMapping(node) {
75
+ function parseMapping(node, declarationIdentifier, diagnostics) {
65
76
  if (!node)
66
77
  return undefined;
67
- return {
68
- defaultValue: Number(node.attributes["default-value"] ?? 0),
69
- attributes: node.attributes,
70
- source: node.source,
71
- entries: childElements(node, "qti-map-entry").map((entry) => ({
78
+ const defaultValue = parseFiniteNumber(node.attributes["default-value"]);
79
+ const entries = [];
80
+ for (const entry of childElements(node, "qti-map-entry")) {
81
+ const mappedValue = parseFiniteNumber(entry.attributes["mapped-value"]);
82
+ if (mappedValue === undefined) {
83
+ validateMapEntryAttributes(declarationIdentifier, entry, diagnostics);
84
+ continue;
85
+ }
86
+ entries.push({
72
87
  mapKey: entry.attributes["map-key"],
73
- mappedValue: Number(entry.attributes["mapped-value"] ?? 0),
88
+ mappedValue,
74
89
  attributes: entry.attributes,
75
90
  source: entry.source,
76
- })),
91
+ });
92
+ }
93
+ return {
94
+ defaultValue: defaultValue ?? 0,
95
+ attributes: node.attributes,
96
+ source: node.source,
97
+ entries,
77
98
  };
78
99
  }
79
- function parseAreaMapping(node) {
100
+ function parseAreaMapping(node, declarationIdentifier, diagnostics) {
80
101
  if (!node)
81
102
  return undefined;
82
- return {
83
- defaultValue: Number(node.attributes["default-value"] ?? 0),
84
- attributes: node.attributes,
85
- source: node.source,
86
- entries: childElements(node, "qti-area-map-entry").map((entry) => ({
103
+ const defaultValue = parseFiniteNumber(node.attributes["default-value"]);
104
+ const entries = [];
105
+ for (const entry of childElements(node, "qti-area-map-entry")) {
106
+ const mappedValue = parseFiniteNumber(entry.attributes["mapped-value"]);
107
+ if (mappedValue === undefined) {
108
+ validateAreaMapEntryAttributes(declarationIdentifier, entry, diagnostics);
109
+ continue;
110
+ }
111
+ entries.push({
87
112
  shape: parseShape(entry.attributes.shape),
88
113
  coords: parseCoords(entry.attributes.coords),
89
- mappedValue: Number(entry.attributes["mapped-value"] ?? 0),
114
+ mappedValue,
90
115
  attributes: entry.attributes,
91
116
  source: entry.source,
92
- })),
117
+ });
118
+ }
119
+ return {
120
+ defaultValue: defaultValue ?? 0,
121
+ attributes: node.attributes,
122
+ source: node.source,
123
+ entries,
93
124
  };
94
125
  }
95
- function parseLookupTable(node, baseType) {
126
+ function parseLookupTable(node, baseType, diagnostics) {
96
127
  const matchTable = childElements(node, "qti-match-table")[0];
97
128
  if (matchTable)
98
- return parseMatchTable(matchTable, baseType);
129
+ return parseMatchTable(matchTable, baseType, diagnostics);
99
130
  const interpolationTable = childElements(node, "qti-interpolation-table")[0];
100
131
  if (interpolationTable)
101
- return parseInterpolationTable(interpolationTable, baseType);
132
+ return parseInterpolationTable(interpolationTable, baseType, diagnostics);
102
133
  return undefined;
103
134
  }
104
- function parseMatchTable(node, baseType) {
135
+ function parseMatchTable(node, baseType, diagnostics) {
105
136
  return {
106
137
  type: "match",
107
138
  defaultValue: parseLookupValue(node.attributes["default-value"], baseType),
108
139
  attributes: node.attributes,
109
140
  source: node.source,
110
- entries: childElements(node, "qti-match-table-entry").map((entry) => ({
111
- sourceValue: Number(entry.attributes["source-value"]),
112
- targetValue: parseLookupValue(entry.attributes["target-value"], baseType),
113
- attributes: entry.attributes,
114
- source: entry.source,
115
- })),
141
+ entries: parseLookupEntries(node, "match", baseType, diagnostics),
116
142
  };
117
143
  }
118
- function parseInterpolationTable(node, baseType) {
144
+ function parseInterpolationTable(node, baseType, diagnostics) {
119
145
  return {
120
146
  type: "interpolation",
121
147
  defaultValue: parseLookupValue(node.attributes["default-value"], baseType),
122
148
  attributes: node.attributes,
123
149
  source: node.source,
124
- entries: childElements(node, "qti-interpolation-table-entry").map((entry) => ({
125
- sourceValue: Number(entry.attributes["source-value"]),
126
- targetValue: parseLookupValue(entry.attributes["target-value"], baseType),
127
- includeBoundary: parseXmlBoolean(entry.attributes["include-boundary"]) ?? true,
128
- attributes: entry.attributes,
129
- source: entry.source,
130
- })),
150
+ entries: parseLookupEntries(node, "interpolation", baseType, diagnostics),
131
151
  };
132
152
  }
133
153
  function parseLookupValue(value, baseType) {
134
154
  return value === undefined ? null : coerceValue(value, baseType);
135
155
  }
156
+ function parseLookupEntries(node, tableType, baseType, diagnostics) {
157
+ const entryName = tableType === "match" ? "qti-match-table-entry" : "qti-interpolation-table-entry";
158
+ const entries = [];
159
+ for (const entry of childElements(node, entryName)) {
160
+ const sourceValue = parseFiniteNumber(entry.attributes["source-value"]);
161
+ if (sourceValue === undefined) {
162
+ validateLookupTableEntryAttributes(tableType, entry, diagnostics);
163
+ continue;
164
+ }
165
+ entries.push({
166
+ sourceValue,
167
+ targetValue: parseLookupValue(entry.attributes["target-value"], baseType),
168
+ includeBoundary: tableType === "interpolation"
169
+ ? (parseXmlBoolean(entry.attributes["include-boundary"]) ?? true)
170
+ : undefined,
171
+ attributes: entry.attributes,
172
+ source: entry.source,
173
+ });
174
+ }
175
+ return entries;
176
+ }
136
177
  //# sourceMappingURL=parser-declarations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser-declarations.js","sourceRoot":"","sources":["../src/parser-declarations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser-declarations.js","sourceRoot":"","sources":["../src/parser-declarations.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"parser-item-metadata.d.ts","sourceRoot":"","sources":["../src/parser-item-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,cAAc,EACd,mBAAmB,EACnB,yBAAyB,EAGzB,aAAa,EAEb,gBAAgB,EAEhB,aAAa,EACd,MAAM,YAAY,CAAC;AAOpB,OAAO,EAA2C,KAAK,OAAO,EAAE,MAAM,UAAU,CAAC;AAEjF,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,aAAa,EAAE,EAC5B,aAAa,EAAE,MAAM,GACpB,OAAO,GAAG,SAAS,CAarB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa,CAS5D;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,OAAO,EACb,cAAc,EAAE,MAAM,GACrB,mBAAmB,EAAE,CAWvB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CASlE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,cAAc,GAAG,SAAS,CAWtF;AA8DD,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,OAAO,GAAG,SAAS,EACzB,WAAW,EAAE,aAAa,EAAE,GAC3B,yBAAyB,GAAG,SAAS,CAwCvC"}
1
+ {"version":3,"file":"parser-item-metadata.d.ts","sourceRoot":"","sources":["../src/parser-item-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,cAAc,EACd,mBAAmB,EACnB,yBAAyB,EAGzB,aAAa,EAEb,gBAAgB,EAEhB,aAAa,EACd,MAAM,YAAY,CAAC;AAQpB,OAAO,EAA2C,KAAK,OAAO,EAAE,MAAM,UAAU,CAAC;AAEjF,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,aAAa,EAAE,EAC5B,aAAa,EAAE,MAAM,GACpB,OAAO,GAAG,SAAS,CAarB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa,CAS5D;AAED,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,OAAO,EACb,cAAc,EAAE,MAAM,GACrB,mBAAmB,EAAE,CAWvB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CASlE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,cAAc,GAAG,SAAS,CAWtF;AA+DD,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,OAAO,GAAG,SAAS,EACzB,WAAW,EAAE,aAAa,EAAE,GAC3B,yBAAyB,GAAG,SAAS,CAwCvC"}
@@ -1,4 +1,5 @@
1
1
  import { PARSED_COMPANION_MATERIAL_CHILD_NAMES, pushCompanionMaterialParseWarning, } from "./companion-materials.js";
2
+ import { visibleTextContent } from "./content-text.js";
2
3
  import { parseXmlBoolean } from "./parser-values.js";
3
4
  import { childElements, descendants, textContent } from "./xml.js";
4
5
  export function firstChildElement(parent, childName, diagnostics, duplicateCode) {
@@ -43,7 +44,7 @@ export function parseModalFeedback(node) {
43
44
  identifier: node.attributes.identifier ?? "",
44
45
  outcomeIdentifier: node.attributes["outcome-identifier"] ?? "",
45
46
  showHide,
46
- text: textContent(node),
47
+ text: visibleTextContent(node),
47
48
  source: node.source,
48
49
  };
49
50
  }
@@ -85,7 +86,7 @@ function parseCatalogHtmlContent(node) {
85
86
  if (!node)
86
87
  return undefined;
87
88
  return {
88
- text: textContent(node),
89
+ text: visibleTextContent(node),
89
90
  children: parseCatalogHtmlChildren(node),
90
91
  attributes: node.attributes,
91
92
  source: node.source,
@@ -102,6 +103,7 @@ function parseCatalogHtmlChildren(node) {
102
103
  content.push({
103
104
  kind: "element",
104
105
  qtiName: entry.localName,
106
+ namespaceUri: entry.uri,
105
107
  attributes: entry.attributes,
106
108
  children: parseCatalogHtmlChildren(entry),
107
109
  source: entry.source,
@@ -157,7 +159,7 @@ export function parseCompanionMaterialsInfo(node, diagnostics) {
157
159
  };
158
160
  }
159
161
  function parsePhysicalMaterial(node, diagnostics) {
160
- const text = textContent(node).trim();
162
+ const text = visibleTextContent(node);
161
163
  if (text.length === 0) {
162
164
  return pushCompanionMaterialParseWarning(diagnostics, "companionMaterials.physicalMaterial.empty", "qti-physical-material requires non-empty text content.", node.source.path, node.source);
163
165
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parser-item-metadata.js","sourceRoot":"","sources":["../src/parser-item-metadata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser-item-metadata.js","sourceRoot":"","sources":["../src/parser-item-metadata.ts"],"names":[],"mappings":"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"}
@@ -584,15 +584,16 @@ function parseExpression(node) {
584
584
  };
585
585
  }
586
586
  if (node.localName === "qti-stats-operator") {
587
- const expression = parseFirstExpression(node);
588
- if (expression) {
589
- return {
590
- type: "statsOperator",
591
- name: node.attributes.name ?? "",
592
- expression,
593
- source: node.source,
594
- };
595
- }
587
+ const expressions = childElements(node)
588
+ .map(parseExpression)
589
+ .filter((expression) => expression !== undefined);
590
+ return {
591
+ type: "statsOperator",
592
+ name: node.attributes.name ?? "",
593
+ expression: expressions[0] ?? { type: "null", source: node.source },
594
+ expressions,
595
+ source: node.source,
596
+ };
596
597
  }
597
598
  if (node.localName === "qti-custom-operator") {
598
599
  return {