@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.
- package/README.md +21 -2
- package/dist/attempt-state.d.ts.map +1 -1
- package/dist/attempt-state.js +20 -27
- package/dist/attempt-state.js.map +1 -1
- package/dist/content-text.d.ts +4 -0
- package/dist/content-text.d.ts.map +1 -1
- package/dist/content-text.js +137 -12
- package/dist/content-text.js.map +1 -1
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/media-definition.d.ts +55 -0
- package/dist/media-definition.d.ts.map +1 -0
- package/dist/media-definition.js +97 -0
- package/dist/media-definition.js.map +1 -0
- package/dist/package-xml.d.ts +1 -0
- package/dist/package-xml.d.ts.map +1 -1
- package/dist/package-xml.js +1 -0
- package/dist/package-xml.js.map +1 -1
- package/dist/parser-custom-interactions.js +1 -0
- package/dist/parser-custom-interactions.js.map +1 -1
- package/dist/parser-declarations.d.ts +4 -4
- package/dist/parser-declarations.d.ts.map +1 -1
- package/dist/parser-declarations.js +87 -46
- package/dist/parser-declarations.js.map +1 -1
- package/dist/parser-item-metadata.d.ts.map +1 -1
- package/dist/parser-item-metadata.js +5 -3
- package/dist/parser-item-metadata.js.map +1 -1
- package/dist/parser-processing.js +10 -9
- package/dist/parser-processing.js.map +1 -1
- package/dist/parser-values.d.ts +6 -0
- package/dist/parser-values.d.ts.map +1 -1
- package/dist/parser-values.js +35 -2
- package/dist/parser-values.js.map +1 -1
- package/dist/parser.d.ts.map +1 -1
- package/dist/parser.js +81 -47
- package/dist/parser.js.map +1 -1
- package/dist/processing-evaluator-collection.d.ts.map +1 -1
- package/dist/processing-evaluator-collection.js +8 -2
- package/dist/processing-evaluator-collection.js.map +1 -1
- package/dist/processing-evaluator-comparison.d.ts.map +1 -1
- package/dist/processing-evaluator-comparison.js +22 -6
- package/dist/processing-evaluator-comparison.js.map +1 -1
- package/dist/processing-evaluator-numeric.d.ts.map +1 -1
- package/dist/processing-evaluator-numeric.js +8 -1
- package/dist/processing-evaluator-numeric.js.map +1 -1
- package/dist/processing-evaluator-variable.d.ts.map +1 -1
- package/dist/processing-evaluator-variable.js +1 -1
- package/dist/processing-evaluator-variable.js.map +1 -1
- package/dist/processing-expression-children.d.ts.map +1 -1
- package/dist/processing-expression-children.js +2 -1
- package/dist/processing-expression-children.js.map +1 -1
- package/dist/processing-limits.d.ts +3 -0
- package/dist/processing-limits.d.ts.map +1 -0
- package/dist/processing-limits.js +3 -0
- package/dist/processing-limits.js.map +1 -0
- package/dist/processing-mapping.d.ts.map +1 -1
- package/dist/processing-mapping.js +28 -9
- package/dist/processing-mapping.js.map +1 -1
- package/dist/processing-operators.d.ts +2 -0
- package/dist/processing-operators.d.ts.map +1 -1
- package/dist/processing-operators.js +34 -5
- package/dist/processing-operators.js.map +1 -1
- package/dist/processing-values.d.ts +4 -4
- package/dist/processing-values.d.ts.map +1 -1
- package/dist/processing-values.js +28 -14
- package/dist/processing-values.js.map +1 -1
- package/dist/processing-variables.d.ts +3 -1
- package/dist/processing-variables.d.ts.map +1 -1
- package/dist/processing-variables.js +38 -2
- package/dist/processing-variables.js.map +1 -1
- package/dist/qti-namespaces.d.ts +7 -0
- package/dist/qti-namespaces.d.ts.map +1 -0
- package/dist/qti-namespaces.js +7 -0
- package/dist/qti-namespaces.js.map +1 -0
- package/dist/qti-package-items.d.ts.map +1 -1
- package/dist/qti-package-items.js +23 -13
- package/dist/qti-package-items.js.map +1 -1
- package/dist/qti-package-manifest.d.ts.map +1 -1
- package/dist/qti-package-manifest.js +4 -3
- package/dist/qti-package-manifest.js.map +1 -1
- package/dist/qti-package-metadata.d.ts.map +1 -1
- package/dist/qti-package-metadata.js +3 -2
- package/dist/qti-package-metadata.js.map +1 -1
- package/dist/qti-package-xml.d.ts +4 -2
- package/dist/qti-package-xml.d.ts.map +1 -1
- package/dist/qti-package-xml.js +10 -5
- package/dist/qti-package-xml.js.map +1 -1
- package/dist/qti-package-zip.d.ts +17 -1
- package/dist/qti-package-zip.d.ts.map +1 -1
- package/dist/qti-package-zip.js +60 -5
- package/dist/qti-package-zip.js.map +1 -1
- package/dist/qti-package.d.ts +3 -3
- package/dist/qti-package.d.ts.map +1 -1
- package/dist/qti-package.js +10 -4
- package/dist/qti-package.js.map +1 -1
- package/dist/response-validation-policy.d.ts.map +1 -1
- package/dist/response-validation-policy.js +5 -6
- package/dist/response-validation-policy.js.map +1 -1
- package/dist/response-validation.d.ts +12 -2
- package/dist/response-validation.d.ts.map +1 -1
- package/dist/response-validation.js +122 -19
- package/dist/response-validation.js.map +1 -1
- package/dist/serializer-processing-expressions.js +1 -1
- package/dist/serializer-processing-expressions.js.map +1 -1
- package/dist/session.js +1 -1
- package/dist/session.js.map +1 -1
- package/dist/slider-definition.d.ts +59 -0
- package/dist/slider-definition.d.ts.map +1 -0
- package/dist/slider-definition.js +198 -0
- package/dist/slider-definition.js.map +1 -0
- package/dist/support-evidence.d.ts +6 -2
- package/dist/support-evidence.d.ts.map +1 -1
- package/dist/support-evidence.js +15 -11
- package/dist/support-evidence.js.map +1 -1
- package/dist/support.d.ts.map +1 -1
- package/dist/support.js +96 -100
- package/dist/support.js.map +1 -1
- package/dist/trusted-item-session.d.ts.map +1 -1
- package/dist/trusted-item-session.js +5 -3
- package/dist/trusted-item-session.js.map +1 -1
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/validation-declaration-entries.d.ts +13 -0
- package/dist/validation-declaration-entries.d.ts.map +1 -0
- package/dist/validation-declaration-entries.js +136 -0
- package/dist/validation-declaration-entries.js.map +1 -0
- package/dist/validation-interactions.d.ts.map +1 -1
- package/dist/validation-interactions.js +14 -46
- package/dist/validation-interactions.js.map +1 -1
- package/dist/validation-primitives.d.ts +5 -1
- package/dist/validation-primitives.d.ts.map +1 -1
- package/dist/validation-primitives.js +41 -3
- package/dist/validation-primitives.js.map +1 -1
- package/dist/validation-processing.d.ts.map +1 -1
- package/dist/validation-processing.js +125 -1
- package/dist/validation-processing.js.map +1 -1
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +8 -134
- package/dist/validation.js.map +1 -1
- package/dist/xml.d.ts.map +1 -1
- package/dist/xml.js +31 -2
- package/dist/xml.js.map +1 -1
- package/package.json +1 -1
- package/src/attempt-state.ts +22 -26
- package/src/content-text.ts +174 -14
- package/src/index.ts +28 -0
- package/src/media-definition.ts +174 -0
- package/src/package-xml.ts +2 -0
- package/src/parser-custom-interactions.ts +1 -0
- package/src/parser-declarations.ts +134 -40
- package/src/parser-item-metadata.ts +5 -3
- package/src/parser-processing.ts +10 -9
- package/src/parser-values.ts +35 -2
- package/src/parser.ts +137 -103
- package/src/processing-evaluator-collection.ts +7 -2
- package/src/processing-evaluator-comparison.ts +30 -5
- package/src/processing-evaluator-numeric.ts +5 -1
- package/src/processing-evaluator-variable.ts +1 -0
- package/src/processing-expression-children.ts +2 -1
- package/src/processing-limits.ts +2 -0
- package/src/processing-mapping.ts +32 -8
- package/src/processing-operators.ts +38 -5
- package/src/processing-values.ts +59 -14
- package/src/processing-variables.ts +47 -2
- package/src/qti-namespaces.ts +8 -0
- package/src/qti-package-items.ts +56 -49
- package/src/qti-package-manifest.ts +13 -4
- package/src/qti-package-metadata.ts +3 -2
- package/src/qti-package-xml.ts +16 -3
- package/src/qti-package-zip.ts +128 -3
- package/src/qti-package.ts +12 -3
- package/src/response-validation-policy.ts +5 -5
- package/src/response-validation.ts +185 -20
- package/src/serializer-processing-expressions.ts +1 -1
- package/src/session.ts +1 -0
- package/src/slider-definition.ts +363 -0
- package/src/support-evidence.ts +15 -17
- package/src/support.ts +106 -102
- package/src/trusted-item-session.ts +5 -3
- package/src/types.ts +10 -1
- package/src/validation-declaration-entries.ts +162 -0
- package/src/validation-interactions.ts +14 -64
- package/src/validation-primitives.ts +44 -4
- package/src/validation-processing.ts +145 -1
- package/src/validation.ts +11 -151
- package/src/xml.ts +40 -4
package/dist/xml.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xml.js","sourceRoot":"","sources":["../src/xml.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"xml.js","sourceRoot":"","sources":["../src/xml.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/attempt-state.ts
CHANGED
|
@@ -16,9 +16,9 @@ import {
|
|
|
16
16
|
COMPLETION_UNKNOWN,
|
|
17
17
|
} from "./attempt-state-constants.js";
|
|
18
18
|
import { isQtiPortableCustomStateValue, isQtiValue, qtiValueToString } from "./value-format.js";
|
|
19
|
-
import { parseXmlBoolean } from "./parser-values.js";
|
|
20
19
|
import { isRecordValue } from "./processing-values.js";
|
|
21
|
-
import {
|
|
20
|
+
import { parseQtiSliderDefinition, parseQtiSliderValue } from "./slider-definition.js";
|
|
21
|
+
import { qtiScalarMatchesBaseType } from "./validation-primitives.js";
|
|
22
22
|
|
|
23
23
|
export function isQtiAttemptStateV1(value: unknown): value is QtiAttemptStateV1 {
|
|
24
24
|
return attemptStateErrors(value).length === 0;
|
|
@@ -71,6 +71,7 @@ export function assertCompatiblePriorState(
|
|
|
71
71
|
for (const declaration of document.item.responseDeclarations) {
|
|
72
72
|
assertRestoredValueMatchesDeclaration("response", declaration, priorState.responses);
|
|
73
73
|
}
|
|
74
|
+
assertRestoredSliderResponses(document, priorState.responses);
|
|
74
75
|
for (const declaration of document.item.outcomeDeclarations) {
|
|
75
76
|
assertRestoredValueMatchesDeclaration("outcome", declaration, priorState.outcomes);
|
|
76
77
|
}
|
|
@@ -91,6 +92,24 @@ export function assertCompatiblePriorState(
|
|
|
91
92
|
}
|
|
92
93
|
}
|
|
93
94
|
|
|
95
|
+
function assertRestoredSliderResponses(
|
|
96
|
+
document: QtiDocument,
|
|
97
|
+
responses: Record<string, QtiValue>,
|
|
98
|
+
): void {
|
|
99
|
+
for (const interaction of document.item.interactions) {
|
|
100
|
+
if (interaction.type !== "slider" || !interaction.responseIdentifier) continue;
|
|
101
|
+
const restoredValue = responses[interaction.responseIdentifier];
|
|
102
|
+
if (restoredValue === undefined || restoredValue === null) continue;
|
|
103
|
+
const definition = parseQtiSliderDefinition(interaction);
|
|
104
|
+
if (!definition.ok) continue;
|
|
105
|
+
const parsedValue = parseQtiSliderValue(restoredValue, definition.value);
|
|
106
|
+
if (parsedValue.ok) continue;
|
|
107
|
+
throw new Error(
|
|
108
|
+
`Cannot restore response ${interaction.responseIdentifier}: value ${qtiValueToString(restoredValue)} is not in the authored slider domain.`,
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
94
113
|
function assertKnownStateIdentifiers(
|
|
95
114
|
kind: string,
|
|
96
115
|
record: Record<string, QtiValue>,
|
|
@@ -139,7 +158,7 @@ function restoredValueError(
|
|
|
139
158
|
}
|
|
140
159
|
if (!declaration.baseType) return undefined;
|
|
141
160
|
for (const entry of restoredValueEntries(value)) {
|
|
142
|
-
if (!
|
|
161
|
+
if (!qtiScalarMatchesBaseType(entry, declaration.baseType)) {
|
|
143
162
|
return `value ${String(entry)} is not valid for base-type ${declaration.baseType}`;
|
|
144
163
|
}
|
|
145
164
|
}
|
|
@@ -151,29 +170,6 @@ function restoredValueEntries(value: QtiValue): QtiScalarValue[] {
|
|
|
151
170
|
return Array.isArray(value) ? value : [value];
|
|
152
171
|
}
|
|
153
172
|
|
|
154
|
-
function restoredScalarMatchesBaseType(
|
|
155
|
-
value: QtiScalarValue,
|
|
156
|
-
baseType: QtiVariableDeclaration["baseType"],
|
|
157
|
-
): boolean {
|
|
158
|
-
if (!baseType) return true;
|
|
159
|
-
if (baseType === "integer") {
|
|
160
|
-
return typeof value === "number" ? Number.isInteger(value) : /^-?\d+$/.test(String(value));
|
|
161
|
-
}
|
|
162
|
-
if (baseType === "float") {
|
|
163
|
-
return typeof value === "number" ? Number.isFinite(value) : Number.isFinite(Number(value));
|
|
164
|
-
}
|
|
165
|
-
if (baseType === "boolean") {
|
|
166
|
-
if (typeof value === "boolean") return true;
|
|
167
|
-
if (typeof value === "string") return parseXmlBoolean(value) !== undefined;
|
|
168
|
-
return false;
|
|
169
|
-
}
|
|
170
|
-
if (baseType === "point") return isPoint(String(value));
|
|
171
|
-
if (baseType === "pair" || baseType === "directedPair") return isPair(String(value));
|
|
172
|
-
if (baseType === "identifier")
|
|
173
|
-
return typeof value === "string" && value.trim().length > 0 && !/\s/.test(value);
|
|
174
|
-
return typeof value === "string";
|
|
175
|
-
}
|
|
176
|
-
|
|
177
173
|
function isAttemptStatus(value: string): value is QtiAttemptStatus {
|
|
178
174
|
return (
|
|
179
175
|
value === "initialized" ||
|
package/src/content-text.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import type { QtiChoice, QtiContentNode, QtiSourceLocation } from "./types.js";
|
|
2
2
|
import { assertNever } from "./assert-never.js";
|
|
3
|
+
import { MATHML_NAMESPACE, QTI_ASI_NAMESPACE } from "./qti-namespaces.js";
|
|
4
|
+
import type { XmlNode } from "./xml.js";
|
|
3
5
|
|
|
4
6
|
export interface FlatTextFromContentOptions {
|
|
5
7
|
excludeAnnotations?: boolean;
|
|
8
|
+
interactionText?: ((interactionIndex: number) => string) | undefined;
|
|
6
9
|
}
|
|
7
10
|
|
|
8
11
|
export function normalizeFlatText(text: string): string {
|
|
@@ -32,36 +35,66 @@ export function flatTextFromContent(
|
|
|
32
35
|
nodes: QtiContentNode[],
|
|
33
36
|
options: FlatTextFromContentOptions = {},
|
|
34
37
|
): string {
|
|
35
|
-
|
|
36
|
-
return normalizeFlatText(
|
|
37
|
-
nodes.map((node) => flatTextFromContentNode(node, excludeAnnotations)).join(" "),
|
|
38
|
-
);
|
|
38
|
+
return normalizeFlatText(nodes.map((node) => flatTextFromContentNode(node, options)).join(""));
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
function flatTextFromContentNode(
|
|
41
|
+
function flatTextFromContentNode(
|
|
42
|
+
node: QtiContentNode,
|
|
43
|
+
options: FlatTextFromContentOptions,
|
|
44
|
+
): string {
|
|
45
|
+
const excludeAnnotations = options.excludeAnnotations ?? false;
|
|
42
46
|
switch (node.kind) {
|
|
43
47
|
case "text":
|
|
44
48
|
return node.text;
|
|
45
49
|
case "element":
|
|
46
50
|
if (
|
|
47
51
|
excludeAnnotations &&
|
|
52
|
+
isMathContentNamespace(node.namespaceUri) &&
|
|
48
53
|
(node.qtiName === "annotation" || node.qtiName === "annotation-xml")
|
|
49
54
|
) {
|
|
50
55
|
return "";
|
|
51
56
|
}
|
|
52
|
-
if (
|
|
53
|
-
|
|
54
|
-
|
|
57
|
+
if (
|
|
58
|
+
node.qtiName === "math" &&
|
|
59
|
+
isMathContentNamespace(node.namespaceUri) &&
|
|
60
|
+
node.attributes.alttext
|
|
61
|
+
) {
|
|
62
|
+
return node.attributes.alttext;
|
|
63
|
+
}
|
|
64
|
+
if (
|
|
65
|
+
node.qtiName === "img" &&
|
|
66
|
+
isQtiContentNamespace(node.namespaceUri) &&
|
|
67
|
+
node.attributes.alt
|
|
68
|
+
) {
|
|
69
|
+
return node.attributes.alt;
|
|
70
|
+
}
|
|
71
|
+
if (
|
|
72
|
+
node.qtiName === "object" &&
|
|
73
|
+
isQtiContentNamespace(node.namespaceUri) &&
|
|
74
|
+
node.attributes["object-label"]
|
|
75
|
+
) {
|
|
55
76
|
return node.attributes["object-label"];
|
|
56
77
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
78
|
+
if (node.qtiName === "math" && isMathContentNamespace(node.namespaceUri)) {
|
|
79
|
+
return withVisibleBoundary(
|
|
80
|
+
node.qtiName,
|
|
81
|
+
node.children
|
|
82
|
+
.map((child) => flatMathText(child, excludeAnnotations))
|
|
83
|
+
.filter(Boolean)
|
|
84
|
+
.join(" "),
|
|
85
|
+
);
|
|
86
|
+
}
|
|
87
|
+
return withVisibleBoundary(
|
|
88
|
+
node.qtiName,
|
|
89
|
+
node.children.map((child) => flatTextFromContentNode(child, options)).join(""),
|
|
90
|
+
);
|
|
60
91
|
case "feedback":
|
|
61
|
-
return
|
|
62
|
-
.
|
|
63
|
-
.join("
|
|
92
|
+
return withVisibleBoundary(
|
|
93
|
+
node.feedbackType === "block" ? "qti-feedback-block" : "qti-feedback-inline",
|
|
94
|
+
node.children.map((child) => flatTextFromContentNode(child, options)).join(""),
|
|
95
|
+
);
|
|
64
96
|
case "interaction":
|
|
97
|
+
return options.interactionText?.(node.interactionIndex) ?? "";
|
|
65
98
|
case "printedVariable":
|
|
66
99
|
return "";
|
|
67
100
|
default:
|
|
@@ -69,6 +102,133 @@ function flatTextFromContentNode(node: QtiContentNode, excludeAnnotations: boole
|
|
|
69
102
|
}
|
|
70
103
|
}
|
|
71
104
|
|
|
105
|
+
function flatMathText(node: QtiContentNode, excludeAnnotations: boolean): string {
|
|
106
|
+
if (
|
|
107
|
+
node.kind === "element" &&
|
|
108
|
+
excludeAnnotations &&
|
|
109
|
+
isMathContentNamespace(node.namespaceUri) &&
|
|
110
|
+
(node.qtiName === "annotation" || node.qtiName === "annotation-xml")
|
|
111
|
+
) {
|
|
112
|
+
return "";
|
|
113
|
+
}
|
|
114
|
+
if (node.kind === "text") return node.text;
|
|
115
|
+
if (node.kind === "element" || node.kind === "feedback") {
|
|
116
|
+
return node.children
|
|
117
|
+
.map((child) => flatMathText(child, excludeAnnotations))
|
|
118
|
+
.filter(Boolean)
|
|
119
|
+
.join(" ");
|
|
120
|
+
}
|
|
121
|
+
return "";
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/** Flatten rendered XML text without inventing separators at inline element boundaries. */
|
|
125
|
+
export function visibleTextContent(node: XmlNode): string {
|
|
126
|
+
return normalizeFlatText(visibleTextFromXmlNode(node));
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
function visibleTextFromXmlNode(node: XmlNode): string {
|
|
130
|
+
const accessibleLabel = accessibleXmlLabel(node);
|
|
131
|
+
const text =
|
|
132
|
+
accessibleLabel ??
|
|
133
|
+
(node.localName === "math" && isMathContentNamespace(node.uri)
|
|
134
|
+
? flatMathXmlText(node)
|
|
135
|
+
: node.content
|
|
136
|
+
.map((entry) => (typeof entry === "string" ? entry : visibleTextFromXmlNode(entry)))
|
|
137
|
+
.join(""));
|
|
138
|
+
return withVisibleBoundary(node.localName, text);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
function flatMathXmlText(node: XmlNode): string {
|
|
142
|
+
return node.content
|
|
143
|
+
.map((entry) =>
|
|
144
|
+
typeof entry === "string"
|
|
145
|
+
? entry
|
|
146
|
+
: isMathContentNamespace(entry.uri) &&
|
|
147
|
+
(entry.localName === "annotation" || entry.localName === "annotation-xml")
|
|
148
|
+
? ""
|
|
149
|
+
: flatMathXmlText(entry),
|
|
150
|
+
)
|
|
151
|
+
.filter(Boolean)
|
|
152
|
+
.join(" ");
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
function accessibleXmlLabel(node: XmlNode): string | undefined {
|
|
156
|
+
if (node.localName === "math" && isMathContentNamespace(node.uri) && node.attributes.alttext) {
|
|
157
|
+
return node.attributes.alttext;
|
|
158
|
+
}
|
|
159
|
+
if (node.localName === "img" && isQtiContentNamespace(node.uri) && node.attributes.alt) {
|
|
160
|
+
return node.attributes.alt;
|
|
161
|
+
}
|
|
162
|
+
if (
|
|
163
|
+
node.localName === "object" &&
|
|
164
|
+
isQtiContentNamespace(node.uri) &&
|
|
165
|
+
node.attributes["object-label"]
|
|
166
|
+
) {
|
|
167
|
+
return node.attributes["object-label"];
|
|
168
|
+
}
|
|
169
|
+
return undefined;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
function isQtiContentNamespace(namespaceUri: string | undefined): boolean {
|
|
173
|
+
return namespaceUri === undefined || namespaceUri === QTI_ASI_NAMESPACE;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
function isMathContentNamespace(namespaceUri: string | undefined): boolean {
|
|
177
|
+
return isQtiContentNamespace(namespaceUri) || namespaceUri === MATHML_NAMESPACE;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
function withVisibleBoundary(qtiName: string, text: string): string {
|
|
181
|
+
return visibleBoundaryNames.has(qtiName) ? ` ${text} ` : text;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
const visibleBoundaryNames = new Set([
|
|
185
|
+
"address",
|
|
186
|
+
"article",
|
|
187
|
+
"aside",
|
|
188
|
+
"blockquote",
|
|
189
|
+
"br",
|
|
190
|
+
"dd",
|
|
191
|
+
"div",
|
|
192
|
+
"dl",
|
|
193
|
+
"dt",
|
|
194
|
+
"fieldset",
|
|
195
|
+
"figcaption",
|
|
196
|
+
"figure",
|
|
197
|
+
"footer",
|
|
198
|
+
"form",
|
|
199
|
+
"h1",
|
|
200
|
+
"h2",
|
|
201
|
+
"h3",
|
|
202
|
+
"h4",
|
|
203
|
+
"h5",
|
|
204
|
+
"h6",
|
|
205
|
+
"header",
|
|
206
|
+
"hgroup",
|
|
207
|
+
"hr",
|
|
208
|
+
"li",
|
|
209
|
+
"main",
|
|
210
|
+
"math",
|
|
211
|
+
"nav",
|
|
212
|
+
"ol",
|
|
213
|
+
"p",
|
|
214
|
+
"pre",
|
|
215
|
+
"qti-feedback-block",
|
|
216
|
+
"qti-gap-img",
|
|
217
|
+
"qti-gap-text",
|
|
218
|
+
"qti-inline-choice",
|
|
219
|
+
"qti-simple-associable-choice",
|
|
220
|
+
"qti-simple-choice",
|
|
221
|
+
"section",
|
|
222
|
+
"table",
|
|
223
|
+
"tbody",
|
|
224
|
+
"td",
|
|
225
|
+
"tfoot",
|
|
226
|
+
"th",
|
|
227
|
+
"thead",
|
|
228
|
+
"tr",
|
|
229
|
+
"ul",
|
|
230
|
+
]);
|
|
231
|
+
|
|
72
232
|
export function choiceAccessibleLabel(
|
|
73
233
|
choice: QtiChoice | undefined,
|
|
74
234
|
fallbackIdentifier?: string,
|
package/src/index.ts
CHANGED
|
@@ -52,6 +52,7 @@ export {
|
|
|
52
52
|
} from "./package-xml.js";
|
|
53
53
|
export {
|
|
54
54
|
decodeUtf8,
|
|
55
|
+
DEFAULT_QTI_PACKAGE_RESOURCE_LIMITS,
|
|
55
56
|
discoverQtiPackageContentAssets,
|
|
56
57
|
normalizePackagePath,
|
|
57
58
|
QTI_ITEM_RESOURCE_TYPE,
|
|
@@ -74,6 +75,7 @@ export {
|
|
|
74
75
|
type QtiPackageItemSource,
|
|
75
76
|
type QtiPackageParseOptions,
|
|
76
77
|
type QtiPackageParseResult,
|
|
78
|
+
type QtiPackageResourceLimits,
|
|
77
79
|
type QtiPackageShape,
|
|
78
80
|
type QtiStandardAlignment,
|
|
79
81
|
type QtiTestPartNavigationMode,
|
|
@@ -85,7 +87,33 @@ export {
|
|
|
85
87
|
export { detectPackageMediaType } from "./qti-package-assets.js";
|
|
86
88
|
export { parseQtiXml } from "./parser.js";
|
|
87
89
|
export { numericTuple3, numericTuple4, parseXmlBoolean } from "./parser-values.js";
|
|
90
|
+
export { MATHML_NAMESPACE, QTI_ASI_NAMESPACE } from "./qti-namespaces.js";
|
|
91
|
+
export { escapeXmlAttribute, escapeXmlText } from "./xml.js";
|
|
92
|
+
export {
|
|
93
|
+
applyQtiMediaPlaybackEvent,
|
|
94
|
+
parseQtiMediaDefinition,
|
|
95
|
+
QTI_MEDIA_RESTART_THRESHOLD_SECONDS,
|
|
96
|
+
type QtiMediaDefinition,
|
|
97
|
+
type QtiMediaDefinitionResult,
|
|
98
|
+
type QtiMediaPlaybackEvent,
|
|
99
|
+
type QtiMediaPlaybackResult,
|
|
100
|
+
type QtiMediaPlaySession,
|
|
101
|
+
} from "./media-definition.js";
|
|
102
|
+
export {
|
|
103
|
+
parseQtiSliderDefinition,
|
|
104
|
+
parseQtiSliderValue,
|
|
105
|
+
qtiSliderDiscreteValue,
|
|
106
|
+
qtiSliderRatio,
|
|
107
|
+
snapQtiSliderValue,
|
|
108
|
+
type QtiSliderDefinition,
|
|
109
|
+
type QtiSliderDefinitionResult,
|
|
110
|
+
type QtiSliderOrientation,
|
|
111
|
+
type QtiSliderStep,
|
|
112
|
+
type QtiSliderValueFailureReason,
|
|
113
|
+
type QtiSliderValueResult,
|
|
114
|
+
} from "./slider-definition.js";
|
|
88
115
|
export { collectQtiResponseProcessingExpressions } from "./processing-expression-collection.js";
|
|
116
|
+
export { MAX_QTI_REPEAT_RESULT_ELEMENTS } from "./processing-limits.js";
|
|
89
117
|
export { isConformanceParseDiagnostic } from "./parse-diagnostics.js";
|
|
90
118
|
export {
|
|
91
119
|
scoreQtiItemServerSide,
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { assertNever } from "./assert-never.js";
|
|
2
|
+
import { parseXmlBoolean } from "./parser-values.js";
|
|
3
|
+
import type { QtiDiagnostic, QtiInteraction } from "./types.js";
|
|
4
|
+
import { isNonNegativeInteger } from "./validation-primitives.js";
|
|
5
|
+
|
|
6
|
+
/** A validated media play-count domain and native playback policy. */
|
|
7
|
+
export interface QtiMediaDefinition {
|
|
8
|
+
readonly minPlays: number;
|
|
9
|
+
readonly maxPlays: number | undefined;
|
|
10
|
+
readonly autostart: boolean;
|
|
11
|
+
readonly nativeLoop: boolean;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/** The typed result of refining raw media interaction attributes. */
|
|
15
|
+
export type QtiMediaDefinitionResult =
|
|
16
|
+
| { readonly ok: true; readonly value: QtiMediaDefinition }
|
|
17
|
+
| { readonly ok: false; readonly diagnostics: readonly QtiDiagnostic[] };
|
|
18
|
+
|
|
19
|
+
/** Seconds from the start within which a play event counts as a new play experience. */
|
|
20
|
+
export const QTI_MEDIA_RESTART_THRESHOLD_SECONDS = 0.25;
|
|
21
|
+
|
|
22
|
+
/** The play-experience session used to decide whether a native media event counts. */
|
|
23
|
+
export type QtiMediaPlaySession =
|
|
24
|
+
| { readonly status: "idle"; readonly playCount: number }
|
|
25
|
+
| { readonly status: "playing"; readonly playCount: number }
|
|
26
|
+
| { readonly status: "ended"; readonly playCount: number };
|
|
27
|
+
|
|
28
|
+
/** A native media event projected into the QTI play-count machine. */
|
|
29
|
+
export type QtiMediaPlaybackEvent =
|
|
30
|
+
| { readonly kind: "play"; readonly currentTime: number }
|
|
31
|
+
| { readonly kind: "ended" }
|
|
32
|
+
| { readonly kind: "seeked"; readonly currentTime: number; readonly paused: boolean };
|
|
33
|
+
|
|
34
|
+
/** The session update and any player-side block from one playback event. */
|
|
35
|
+
export type QtiMediaPlaybackResult =
|
|
36
|
+
| { readonly kind: "applied"; readonly session: QtiMediaPlaySession }
|
|
37
|
+
| { readonly kind: "blocked"; readonly session: QtiMediaPlaySession };
|
|
38
|
+
|
|
39
|
+
function diagnostic(interaction: QtiInteraction, code: string, message: string): QtiDiagnostic {
|
|
40
|
+
return {
|
|
41
|
+
code,
|
|
42
|
+
severity: "error",
|
|
43
|
+
message,
|
|
44
|
+
path: interaction.source?.path,
|
|
45
|
+
source: interaction.source,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function optionalBoolean(
|
|
50
|
+
interaction: QtiInteraction,
|
|
51
|
+
attribute: "autostart" | "loop",
|
|
52
|
+
diagnostics: QtiDiagnostic[],
|
|
53
|
+
): boolean {
|
|
54
|
+
const raw = interaction.attributes[attribute];
|
|
55
|
+
if (raw === undefined) return false;
|
|
56
|
+
const value = parseXmlBoolean(raw);
|
|
57
|
+
if (value !== undefined) return value;
|
|
58
|
+
diagnostics.push(
|
|
59
|
+
diagnostic(
|
|
60
|
+
interaction,
|
|
61
|
+
"interaction.booleanAttribute",
|
|
62
|
+
`${interaction.qtiName} requires boolean ${attribute}, got ${raw}.`,
|
|
63
|
+
),
|
|
64
|
+
);
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function optionalNonNegativeInteger(
|
|
69
|
+
interaction: QtiInteraction,
|
|
70
|
+
attribute: "min-plays" | "max-plays",
|
|
71
|
+
diagnostics: QtiDiagnostic[],
|
|
72
|
+
): number | undefined {
|
|
73
|
+
const raw = interaction.attributes[attribute];
|
|
74
|
+
if (raw === undefined) return undefined;
|
|
75
|
+
if (!isNonNegativeInteger(raw)) {
|
|
76
|
+
diagnostics.push(
|
|
77
|
+
diagnostic(
|
|
78
|
+
interaction,
|
|
79
|
+
"interaction.integerAttribute",
|
|
80
|
+
`${interaction.qtiName} requires non-negative integer ${attribute}, got ${raw}.`,
|
|
81
|
+
),
|
|
82
|
+
);
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
return Number(raw);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function atMaximumPlays(session: QtiMediaPlaySession, maxPlays: number | undefined): boolean {
|
|
89
|
+
return maxPlays !== undefined && session.playCount >= maxPlays;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Refines raw QTI media attributes into the play-count domain shared by validation and players.
|
|
94
|
+
*/
|
|
95
|
+
export function parseQtiMediaDefinition(interaction: QtiInteraction): QtiMediaDefinitionResult {
|
|
96
|
+
const diagnostics: QtiDiagnostic[] = [];
|
|
97
|
+
const minPlaysAttribute = optionalNonNegativeInteger(interaction, "min-plays", diagnostics);
|
|
98
|
+
const maxPlaysAttribute = optionalNonNegativeInteger(interaction, "max-plays", diagnostics);
|
|
99
|
+
const autostart = optionalBoolean(interaction, "autostart", diagnostics);
|
|
100
|
+
const loop = optionalBoolean(interaction, "loop", diagnostics);
|
|
101
|
+
const required = parseXmlBoolean(interaction.attributes.required) === true;
|
|
102
|
+
const maxPlays =
|
|
103
|
+
maxPlaysAttribute === undefined || maxPlaysAttribute <= 0 ? undefined : maxPlaysAttribute;
|
|
104
|
+
|
|
105
|
+
if (minPlaysAttribute !== undefined && maxPlays !== undefined && minPlaysAttribute > maxPlays) {
|
|
106
|
+
diagnostics.push(
|
|
107
|
+
diagnostic(
|
|
108
|
+
interaction,
|
|
109
|
+
"interaction.minMax",
|
|
110
|
+
`${interaction.qtiName} requires min-plays to be less than or equal to max-plays, unless max-plays is 0 for unlimited.`,
|
|
111
|
+
),
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
if (diagnostics.length > 0) return { ok: false, diagnostics };
|
|
116
|
+
|
|
117
|
+
return {
|
|
118
|
+
ok: true,
|
|
119
|
+
value: {
|
|
120
|
+
minPlays: minPlaysAttribute ?? (required ? 1 : 0),
|
|
121
|
+
maxPlays,
|
|
122
|
+
autostart,
|
|
123
|
+
nativeLoop: loop && maxPlays === undefined,
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function applyPlayEvent(
|
|
129
|
+
session: QtiMediaPlaySession,
|
|
130
|
+
event: Extract<QtiMediaPlaybackEvent, { kind: "play" }>,
|
|
131
|
+
maxPlays: number | undefined,
|
|
132
|
+
): QtiMediaPlaybackResult {
|
|
133
|
+
if (session.status !== "playing" && atMaximumPlays(session, maxPlays)) {
|
|
134
|
+
return { kind: "blocked", session };
|
|
135
|
+
}
|
|
136
|
+
const counts =
|
|
137
|
+
session.status === "ended" ||
|
|
138
|
+
(session.status === "idle" && event.currentTime <= QTI_MEDIA_RESTART_THRESHOLD_SECONDS);
|
|
139
|
+
return {
|
|
140
|
+
kind: "applied",
|
|
141
|
+
session: {
|
|
142
|
+
status: "playing",
|
|
143
|
+
playCount: session.playCount + (counts ? 1 : 0),
|
|
144
|
+
},
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
function applySeekedEvent(
|
|
149
|
+
session: QtiMediaPlaySession,
|
|
150
|
+
event: Extract<QtiMediaPlaybackEvent, { kind: "seeked" }>,
|
|
151
|
+
): QtiMediaPlaybackResult {
|
|
152
|
+
if (!event.paused || event.currentTime > QTI_MEDIA_RESTART_THRESHOLD_SECONDS) {
|
|
153
|
+
return { kind: "applied", session };
|
|
154
|
+
}
|
|
155
|
+
return { kind: "applied", session: { status: "idle", playCount: session.playCount } };
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/** Applies one native media event to the QTI play-experience session. */
|
|
159
|
+
export function applyQtiMediaPlaybackEvent(
|
|
160
|
+
session: QtiMediaPlaySession,
|
|
161
|
+
event: QtiMediaPlaybackEvent,
|
|
162
|
+
maxPlays: number | undefined,
|
|
163
|
+
): QtiMediaPlaybackResult {
|
|
164
|
+
switch (event.kind) {
|
|
165
|
+
case "play":
|
|
166
|
+
return applyPlayEvent(session, event, maxPlays);
|
|
167
|
+
case "ended":
|
|
168
|
+
return { kind: "applied", session: { status: "ended", playCount: session.playCount } };
|
|
169
|
+
case "seeked":
|
|
170
|
+
return applySeekedEvent(session, event);
|
|
171
|
+
default:
|
|
172
|
+
return assertNever(event);
|
|
173
|
+
}
|
|
174
|
+
}
|
package/src/package-xml.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { parseXmlTree, type XmlNode } from "./xml.js";
|
|
|
2
2
|
|
|
3
3
|
export interface QtiPackageXmlNode {
|
|
4
4
|
localName: string;
|
|
5
|
+
uri?: string | undefined;
|
|
5
6
|
attributes: Record<string, string>;
|
|
6
7
|
children: QtiPackageXmlNode[];
|
|
7
8
|
text: string;
|
|
@@ -23,6 +24,7 @@ export function parseQtiPackageXmlTree(xml: string): QtiPackageXmlTree {
|
|
|
23
24
|
function packageXmlNode(node: XmlNode): QtiPackageXmlNode {
|
|
24
25
|
return {
|
|
25
26
|
localName: node.localName,
|
|
27
|
+
uri: node.uri,
|
|
26
28
|
attributes: node.attributes,
|
|
27
29
|
children: node.children.map(packageXmlNode),
|
|
28
30
|
text: node.text,
|
|
@@ -242,6 +242,7 @@ function parseCustomMarkupNode(
|
|
|
242
242
|
return {
|
|
243
243
|
kind: "element",
|
|
244
244
|
qtiName: node.localName,
|
|
245
|
+
namespaceUri: node.uri,
|
|
245
246
|
attributes: node.attributes,
|
|
246
247
|
children: parseCustomMarkupChildren(node, diagnostics, isInteractionElement, options),
|
|
247
248
|
source: node.source,
|