@longsightgroup/qti3-core 0.10.5 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +153 -4
- package/dist/adaptive-turn-materializer.js +4 -5
- package/dist/adaptive-turn-materializer.js.map +1 -1
- package/dist/adaptive-turn.d.ts.map +1 -1
- package/dist/adaptive-turn.js +1 -0
- package/dist/adaptive-turn.js.map +1 -1
- package/dist/attempt-state.d.ts.map +1 -1
- package/dist/attempt-state.js +41 -1
- package/dist/attempt-state.js.map +1 -1
- package/dist/catalog.d.ts +8 -0
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +10 -0
- package/dist/catalog.js.map +1 -1
- package/dist/diagnostics.d.ts +13 -0
- package/dist/diagnostics.d.ts.map +1 -0
- package/dist/diagnostics.js +28 -0
- package/dist/diagnostics.js.map +1 -0
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/item-scoring-expectation.d.ts +2 -0
- package/dist/item-scoring-expectation.d.ts.map +1 -1
- package/dist/item-scoring-expectation.js +8 -0
- package/dist/item-scoring-expectation.js.map +1 -1
- package/dist/item-submission-materialization.d.ts.map +1 -1
- package/dist/item-submission-materialization.js +2 -0
- package/dist/item-submission-materialization.js.map +1 -1
- package/dist/parser-processing.d.ts.map +1 -1
- package/dist/parser-processing.js +8 -18
- package/dist/parser-processing.js.map +1 -1
- package/dist/parser-values.d.ts.map +1 -1
- package/dist/parser-values.js +1 -3
- package/dist/parser-values.js.map +1 -1
- package/dist/parser.js +36 -6
- package/dist/parser.js.map +1 -1
- package/dist/processing-equality.d.ts +10 -0
- package/dist/processing-equality.d.ts.map +1 -0
- package/dist/processing-equality.js +78 -0
- package/dist/processing-equality.js.map +1 -0
- package/dist/processing-evaluator-comparison.d.ts.map +1 -1
- package/dist/processing-evaluator-comparison.js +14 -9
- 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 +2 -1
- package/dist/processing-evaluator-numeric.js.map +1 -1
- package/dist/processing-evaluator-string.d.ts.map +1 -1
- package/dist/processing-evaluator-string.js +26 -10
- package/dist/processing-evaluator-string.js.map +1 -1
- package/dist/processing-evaluator-variable.d.ts.map +1 -1
- package/dist/processing-evaluator-variable.js +9 -3
- package/dist/processing-evaluator-variable.js.map +1 -1
- package/dist/processing-evaluator.d.ts +5 -1
- package/dist/processing-evaluator.d.ts.map +1 -1
- package/dist/processing-evaluator.js +13 -4
- package/dist/processing-evaluator.js.map +1 -1
- package/dist/processing-expression-children.d.ts.map +1 -1
- package/dist/processing-expression-children.js +2 -3
- package/dist/processing-expression-children.js.map +1 -1
- package/dist/processing-expression-tags.d.ts +2 -1
- package/dist/processing-expression-tags.d.ts.map +1 -1
- package/dist/processing-expression-tags.js +2 -1
- package/dist/processing-expression-tags.js.map +1 -1
- package/dist/processing-mapping.d.ts.map +1 -1
- package/dist/processing-mapping.js +26 -16
- package/dist/processing-mapping.js.map +1 -1
- package/dist/processing-state.d.ts +2 -2
- package/dist/processing-state.d.ts.map +1 -1
- package/dist/processing-state.js +5 -2
- package/dist/processing-state.js.map +1 -1
- package/dist/processing-values.d.ts +1 -2
- package/dist/processing-values.d.ts.map +1 -1
- package/dist/processing-values.js +1 -3
- package/dist/processing-values.js.map +1 -1
- package/dist/processing-variables.d.ts.map +1 -1
- package/dist/processing-variables.js +10 -5
- package/dist/processing-variables.js.map +1 -1
- package/dist/qti-package-assets.d.ts.map +1 -1
- package/dist/qti-package-assets.js +16 -10
- package/dist/qti-package-assets.js.map +1 -1
- package/dist/qti-package-manifest.d.ts +1 -0
- package/dist/qti-package-manifest.d.ts.map +1 -1
- package/dist/qti-package-manifest.js +1 -0
- 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 +11 -0
- package/dist/qti-package-metadata.js.map +1 -1
- package/dist/qti-package-plan.d.ts +1 -1
- package/dist/qti-package-plan.d.ts.map +1 -1
- package/dist/qti-package-types.d.ts +9 -0
- package/dist/qti-package-types.d.ts.map +1 -1
- package/dist/qti-package-xml.d.ts +6 -1
- package/dist/qti-package-xml.d.ts.map +1 -1
- package/dist/qti-package-xml.js +11 -6
- package/dist/qti-package-xml.js.map +1 -1
- package/dist/qti-package-zip.d.ts +13 -1
- package/dist/qti-package-zip.d.ts.map +1 -1
- package/dist/qti-package-zip.js +185 -54
- package/dist/qti-package-zip.js.map +1 -1
- package/dist/qti-package.d.ts +12 -5
- package/dist/qti-package.d.ts.map +1 -1
- package/dist/qti-package.js +63 -8
- package/dist/qti-package.js.map +1 -1
- package/dist/response-validation-policy.d.ts +3 -1
- package/dist/response-validation-policy.d.ts.map +1 -1
- package/dist/response-validation-policy.js +66 -6
- package/dist/response-validation-policy.js.map +1 -1
- package/dist/response-validation.d.ts +3 -1
- package/dist/response-validation.d.ts.map +1 -1
- package/dist/response-validation.js +32 -10
- package/dist/response-validation.js.map +1 -1
- package/dist/scoring-disposition-policy.d.ts.map +1 -1
- package/dist/scoring-disposition-policy.js +6 -2
- package/dist/scoring-disposition-policy.js.map +1 -1
- package/dist/serializer-processing-expressions.d.ts.map +1 -1
- package/dist/serializer-processing-expressions.js +2 -10
- package/dist/serializer-processing-expressions.js.map +1 -1
- package/dist/server-scoring.d.ts.map +1 -1
- package/dist/server-scoring.js +1 -0
- package/dist/server-scoring.js.map +1 -1
- package/dist/session-builtins.d.ts +16 -0
- package/dist/session-builtins.d.ts.map +1 -0
- package/dist/session-builtins.js +58 -0
- package/dist/session-builtins.js.map +1 -0
- package/dist/session.d.ts +5 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +63 -11
- package/dist/session.js.map +1 -1
- package/dist/support-evidence.d.ts.map +1 -1
- package/dist/support-evidence.js +16 -3
- package/dist/support-evidence.js.map +1 -1
- package/dist/support.d.ts.map +1 -1
- package/dist/support.js +72 -24
- package/dist/support.js.map +1 -1
- package/dist/text-response.d.ts +9 -0
- package/dist/text-response.d.ts.map +1 -0
- package/dist/text-response.js +102 -0
- package/dist/text-response.js.map +1 -0
- package/dist/trusted-item-session.d.ts +4 -1
- package/dist/trusted-item-session.d.ts.map +1 -1
- package/dist/trusted-item-session.js +12 -6
- package/dist/trusted-item-session.js.map +1 -1
- package/dist/types.d.ts +23 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/validation-declaration-entries.d.ts.map +1 -1
- package/dist/validation-declaration-entries.js +11 -1
- package/dist/validation-declaration-entries.js.map +1 -1
- package/dist/validation-interactions.d.ts.map +1 -1
- package/dist/validation-interactions.js +102 -12
- package/dist/validation-interactions.js.map +1 -1
- package/dist/validation-item-children.d.ts +4 -0
- package/dist/validation-item-children.d.ts.map +1 -0
- package/dist/validation-item-children.js +45 -0
- package/dist/validation-item-children.js.map +1 -0
- package/dist/validation-processing.d.ts.map +1 -1
- package/dist/validation-processing.js +45 -12
- package/dist/validation-processing.js.map +1 -1
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +12 -0
- package/dist/validation.js.map +1 -1
- package/dist/value-guards.d.ts +4 -0
- package/dist/value-guards.d.ts.map +1 -0
- package/dist/value-guards.js +5 -0
- package/dist/value-guards.js.map +1 -0
- package/dist/xml-schema-regex-data.d.ts +48 -0
- package/dist/xml-schema-regex-data.d.ts.map +1 -0
- package/dist/xml-schema-regex-data.js +403 -0
- package/dist/xml-schema-regex-data.js.map +1 -0
- package/dist/xml-schema-regex-parser.d.ts +31 -0
- package/dist/xml-schema-regex-parser.d.ts.map +1 -0
- package/dist/xml-schema-regex-parser.js +245 -0
- package/dist/xml-schema-regex-parser.js.map +1 -0
- package/dist/xml-schema-regex.d.ts +14 -0
- package/dist/xml-schema-regex.d.ts.map +1 -0
- package/dist/xml-schema-regex.js +114 -0
- package/dist/xml-schema-regex.js.map +1 -0
- package/package.json +1 -1
- package/src/adaptive-turn-materializer.ts +4 -3
- package/src/adaptive-turn.ts +1 -0
- package/src/attempt-state.ts +54 -1
- package/src/catalog.ts +29 -0
- package/src/diagnostics.ts +29 -0
- package/src/index.ts +16 -0
- package/src/item-scoring-expectation.ts +8 -0
- package/src/item-submission-materialization.ts +2 -0
- package/src/parser-processing.ts +15 -18
- package/src/parser-values.ts +1 -5
- package/src/parser.ts +38 -6
- package/src/processing-equality.ts +104 -0
- package/src/processing-evaluator-comparison.ts +19 -14
- package/src/processing-evaluator-numeric.ts +2 -6
- package/src/processing-evaluator-string.ts +25 -18
- package/src/processing-evaluator-variable.ts +8 -3
- package/src/processing-evaluator.ts +20 -7
- package/src/processing-expression-children.ts +2 -3
- package/src/processing-expression-tags.ts +2 -1
- package/src/processing-mapping.ts +31 -25
- package/src/processing-state.ts +6 -1
- package/src/processing-values.ts +2 -11
- package/src/processing-variables.ts +9 -7
- package/src/qti-package-assets.ts +20 -13
- package/src/qti-package-manifest.ts +1 -0
- package/src/qti-package-metadata.ts +11 -0
- package/src/qti-package-plan.ts +1 -1
- package/src/qti-package-types.ts +10 -0
- package/src/qti-package-xml.ts +11 -6
- package/src/qti-package-zip.ts +330 -97
- package/src/qti-package.ts +106 -7
- package/src/response-validation-policy.ts +76 -4
- package/src/response-validation.ts +51 -5
- package/src/scoring-disposition-policy.ts +7 -2
- package/src/serializer-processing-expressions.ts +8 -25
- package/src/server-scoring.ts +1 -0
- package/src/session-builtins.ts +75 -0
- package/src/session.ts +64 -8
- package/src/support-evidence.ts +16 -3
- package/src/support.ts +94 -24
- package/src/text-response.ts +106 -0
- package/src/trusted-item-session.ts +17 -5
- package/src/types.ts +32 -4
- package/src/validation-declaration-entries.ts +11 -1
- package/src/validation-interactions.ts +139 -14
- package/src/validation-item-children.ts +48 -0
- package/src/validation-processing.ts +47 -10
- package/src/validation.ts +14 -0
- package/src/value-guards.ts +6 -0
- package/src/xml-schema-regex-data.ts +404 -0
- package/src/xml-schema-regex-parser.ts +234 -0
- package/src/xml-schema-regex.ts +115 -0
package/README.md
CHANGED
|
@@ -38,6 +38,35 @@ console.log(result.outcomes);
|
|
|
38
38
|
console.log(result.state);
|
|
39
39
|
```
|
|
40
40
|
|
|
41
|
+
`uniqueDiagnostics(diagnostics)` accepts a readonly array and returns the first occurrence
|
|
42
|
+
of each diagnostic in input order, without modifying the input. Identity uses `code`,
|
|
43
|
+
`severity`, `message`, and `path`; absent and empty paths are equivalent. Source locations
|
|
44
|
+
do not distinguish duplicates, so the first object's metadata is retained. Use
|
|
45
|
+
`diagnosticKey(diagnostic)` when grouping diagnostics across reports; treat its result as
|
|
46
|
+
an opaque key. Newlines within fields cannot collide with field boundaries.
|
|
47
|
+
|
|
48
|
+
`scopeDiagnosticToPackagePath(packagePath, diagnostic)` prefixes an item or archive
|
|
49
|
+
path to the diagnostic's location and keeps `path` and `source.path` aligned. It
|
|
50
|
+
uses `path`, falling back to `source.path` when absent, and preserves severity and
|
|
51
|
+
source coordinates. For example, `items/a.xml` plus `/qti-assessment-item` becomes
|
|
52
|
+
`items/a.xml/qti-assessment-item`. The function returns a copy without filtering
|
|
53
|
+
diagnostics or changing the input.
|
|
54
|
+
|
|
55
|
+
### Text responses
|
|
56
|
+
|
|
57
|
+
Text Entry supports single string, integer, and float values, plus numeric records. Extended Text
|
|
58
|
+
also supports multiple and ordered collections; those collections require `max-strings`.
|
|
59
|
+
|
|
60
|
+
Use `captureQtiTextResponse(interaction, text)` in a custom renderer to convert one input using the
|
|
61
|
+
declared response type and authored `base`. Numeric records retain `stringValue`, `floatValue`,
|
|
62
|
+
`integerValue`, `leftDigits`, `rightDigits`, `ndp`, `nsf`, and `exponent`. If numeric conversion or
|
|
63
|
+
metadata cannot be represented safely, the record preserves the text and leaves numeric fields null.
|
|
64
|
+
|
|
65
|
+
Use `formatQtiTextResponse(interaction, value)` to restore editable scalar text in the authored base.
|
|
66
|
+
It preserves lexical text supplied by a numeric record or raw-text companion.
|
|
67
|
+
`qtiTextResponseString(value)` extracts record text or converts a scalar to a string without applying
|
|
68
|
+
an interaction's base. Declare `string-identifier` when a separate response should retain raw input.
|
|
69
|
+
|
|
41
70
|
### Randomized template items
|
|
42
71
|
|
|
43
72
|
QTI template processing can generate deterministic item variants with expressions such
|
|
@@ -68,6 +97,56 @@ container, so the core conservatively returns `null` for that case.
|
|
|
68
97
|
Persist the returned `qti3.attempt-state.v1` state for resume. Once an attempt exists,
|
|
69
98
|
saved `templateValues` are authoritative; they are restored before generated correct
|
|
70
99
|
responses are derived, so resuming does not depend on the original seed.
|
|
100
|
+
Graphic gap-match restoration preserves repeated placements and incomplete responses,
|
|
101
|
+
but rejects unknown source/target identifiers and responses exceeding `match-max` or
|
|
102
|
+
`max-associations`. It does not trim or move saved pairs to make them fit.
|
|
103
|
+
|
|
104
|
+
### XML Schema patterns
|
|
105
|
+
|
|
106
|
+
`qti-pattern-match` uses XML Schema 1.0 Appendix F syntax and matches the whole string.
|
|
107
|
+
It supports XML name escapes (`\i`, `\c` and their complements), Unicode general categories,
|
|
108
|
+
Unicode blocks (`\p{IsBasicLatin}`), character-class subtraction, groups, alternation,
|
|
109
|
+
and quantifiers. `^` and `$` are literal characters. JavaScript-only constructs such as
|
|
110
|
+
lookaround, backreferences, and lazy quantifiers are authoring errors.
|
|
111
|
+
|
|
112
|
+
Use `pattern="{PATTERN}"` to read a string variable; `pattern="PATTERN"` matches that literal
|
|
113
|
+
text. NULL operands or NULL pattern variables return NULL. Invalid runtime patterns return
|
|
114
|
+
NULL with `processing.pattern.syntax`; no other dialect is used as a fallback.
|
|
115
|
+
|
|
116
|
+
Name escapes use the XML 1.0 Second Edition character productions referenced by Appendix F.
|
|
117
|
+
Unicode categories follow the JavaScript runtime's Unicode database; block ranges use
|
|
118
|
+
Unicode 17.0.0 with the Appendix F legacy names. The bundled Unicode data and its permissive
|
|
119
|
+
license are in `src/xml-schema-regex-data.ts`; no runtime dependency is added.
|
|
120
|
+
|
|
121
|
+
Matching uses memoized position sets, with limits of 16,384 pattern code units, 64 nested
|
|
122
|
+
groups/classes, 100,000 input code units, and 1,000,000 evaluation steps. Finite quantifier
|
|
123
|
+
counts must be safe integers. Exceeding a limit returns `processing.pattern.limit`, never a
|
|
124
|
+
partial boolean result. These limits are resource constraints, not a different regex dialect.
|
|
125
|
+
|
|
126
|
+
### Built-in variables
|
|
127
|
+
|
|
128
|
+
`qti-variable` resolves `completionStatus`, `numAttempts`, and the `QTI_CONTEXT` record
|
|
129
|
+
without declarations. Context contains `candidateIdentifier`, `testIdentifier`, and
|
|
130
|
+
`environmentIdentifier`; pass their string values in `createItemSession` options `context`
|
|
131
|
+
before template processing runs. Unspecified fields are empty strings. Explicit declarations
|
|
132
|
+
of these reserved identifiers are rejected.
|
|
133
|
+
|
|
134
|
+
`beginAttempt()` starts an attempt without a response. Responding or entering the interacting
|
|
135
|
+
state also starts one; repeated edits and suspension/resume keep its count. Each `score()`
|
|
136
|
+
ends the current attempt, and the next starts a new count. Scoring an untouched non-adaptive
|
|
137
|
+
item keeps zero attempts and `not_attempted` completion status.
|
|
138
|
+
|
|
139
|
+
For time-dependent items, `duration` is accumulated **float seconds**. Supply either
|
|
140
|
+
`duration` for a scoring operation or `now: () => performance.now()` for live delivery.
|
|
141
|
+
The clock must return monotonic milliseconds; the engine excludes suspended and completed
|
|
142
|
+
time and truncates expression readings to milliseconds while retaining clock precision in saved state. Missing or invalid time produces NULL and a typed
|
|
143
|
+
diagnostic when duration is read. Non-timed expressions cannot read duration. Server scoring,
|
|
144
|
+
adaptive turns, and submission materialization accept the same inputs in `sessionEnvironment`.
|
|
145
|
+
These values come from the trusted host, not candidate response fields.
|
|
146
|
+
|
|
147
|
+
Saved `builtInVariables` retains the count, open-attempt flag, accumulated duration, and context;
|
|
148
|
+
restoring a timed session starts the supplied clock afresh from the saved duration. Keep this
|
|
149
|
+
record when persisting `qti3.attempt-state.v1`; state validation checks its field types and ranges.
|
|
71
150
|
|
|
72
151
|
### Candidate-safe delivery XML
|
|
73
152
|
|
|
@@ -164,9 +243,9 @@ then runs response processing. It does not run candidate response-validation pol
|
|
|
164
243
|
as required interactions, cardinality limits, or min/max response counts; delivery hosts
|
|
165
244
|
should enforce that policy before accepting a submission or finalizing an attempt.
|
|
166
245
|
|
|
167
|
-
|
|
168
|
-
`validateQtiResponseVariables()` against a parsed assessment item
|
|
169
|
-
|
|
246
|
+
To validate responses before scoring or persisting a submission, call
|
|
247
|
+
`validateQtiResponseVariables()` against a parsed assessment item. Enable `requireScoredResponses`
|
|
248
|
+
to match the player's default policy:
|
|
170
249
|
|
|
171
250
|
```ts
|
|
172
251
|
import { parseQtiXml, validateQtiResponseVariables } from "@longsightgroup/qti3-core";
|
|
@@ -178,6 +257,7 @@ const validation = validateQtiResponseVariables({
|
|
|
178
257
|
item: parsed.document.item,
|
|
179
258
|
responses: { RESPONSE: "A" },
|
|
180
259
|
allowedUndeclaredResponseIdentifiers: ["duration"],
|
|
260
|
+
requireScoredResponses: true,
|
|
181
261
|
});
|
|
182
262
|
|
|
183
263
|
if (!validation.ok) {
|
|
@@ -188,7 +268,9 @@ if (!validation.ok) {
|
|
|
188
268
|
`validateQtiResponseVariables()` uses the same runtime diagnostic codes as the player
|
|
189
269
|
(`response.required`, `response.maximum`, `response.matchMax`, and related codes). It
|
|
190
270
|
checks cardinality shape, required responses, min/max choice and association bounds, and
|
|
191
|
-
per-choice `match-max` limits.
|
|
271
|
+
per-choice `match-min` and `match-max` limits. Without `requireScoredResponses: true`, an answer key
|
|
272
|
+
alone does not make an optional response required. Explicitly authored zero minimums remain
|
|
273
|
+
optional under either policy. It does not render custom validation messages in the DOM
|
|
192
274
|
or validate media play counts beyond what the item model exposes.
|
|
193
275
|
|
|
194
276
|
Use `materializeQtiItemSubmission()` when a server needs the reusable QTI mechanics behind
|
|
@@ -219,6 +301,11 @@ console.log(materialized.outcomeVariables);
|
|
|
219
301
|
these dispositions to product-specific finalization statuses, grading queues, result
|
|
220
302
|
aggregation, and external exports.
|
|
221
303
|
|
|
304
|
+
A `SCORE` outcome with `external-scored="human"` or `external-scored="externalMachine"`
|
|
305
|
+
returns `score: null` and `manual-scoring-required` until the host obtains an external grade.
|
|
306
|
+
The serialized outcomes retain authored defaults for round trips; those values are not proof
|
|
307
|
+
of a returned grade. The host owns external grading and finalization.
|
|
308
|
+
|
|
222
309
|
The `qti3 score` and `qti3 prepare-delivery` CLI commands expose file-oriented server scoring and
|
|
223
310
|
candidate-safe delivery preparation. Their response and state JSON files are server-trusted inputs,
|
|
224
311
|
not raw browser submissions. Secure adaptive turn handling remains a library API for hosts that
|
|
@@ -307,6 +394,38 @@ The registry models authoring-level fields such as `labels-style`, `choices-posi
|
|
|
307
394
|
`media-player-controls`; downstream products should keep UI labels, editor layout, and draft
|
|
308
395
|
property names in their own adapter layer.
|
|
309
396
|
|
|
397
|
+
## Batch import from extracted entries
|
|
398
|
+
|
|
399
|
+
`parseQtiPackageFromEntries(entries, { limits })` imports original or restored
|
|
400
|
+
`{ path, bytes }` entries into the same `QtiPackageParseResult` returned by
|
|
401
|
+
`parseQtiPackage`. It preserves all entry bytes and applies the same manifest,
|
|
402
|
+
assessment-test ordering, item, asset, and diagnostic semantics. No ZIP rebuilding
|
|
403
|
+
or stream-event collection is needed when the entries are already in memory.
|
|
404
|
+
|
|
405
|
+
Both batch parsers return `xmlFiles`, an inventory of `QtiPackageXmlFileSummary`
|
|
406
|
+
objects in entry order. Each summary contains its path, root local name, namespace,
|
|
407
|
+
and XML syntax diagnostics, including unreferenced files. Callers can classify
|
|
408
|
+
those files without parsing their XML again. Errors in unreferenced files remain
|
|
409
|
+
in the inventory; they do not change the selected package graph or its `ok` result.
|
|
410
|
+
No XML trees or source text are retained in this inventory. The streaming parser
|
|
411
|
+
does not scan unreferenced files or return this inventory.
|
|
412
|
+
|
|
413
|
+
The batch entry boundary rejects duplicate or noncanonical paths and enforces
|
|
414
|
+
entry-count, per-entry, and total byte limits before parsing XML. Compression
|
|
415
|
+
ratio limits apply only during ZIP extraction. Check `result.ok` before saving or
|
|
416
|
+
delivering items: parsing can return partial models with error diagnostics.
|
|
417
|
+
|
|
418
|
+
```ts
|
|
419
|
+
import { parseQtiPackageFromEntries } from "@longsightgroup/qti3-core";
|
|
420
|
+
|
|
421
|
+
const result = parseQtiPackageFromEntries(savedEntries);
|
|
422
|
+
if (result.ok) {
|
|
423
|
+
showPackage(result);
|
|
424
|
+
} else {
|
|
425
|
+
showDiagnostics(result.diagnostics);
|
|
426
|
+
}
|
|
427
|
+
```
|
|
428
|
+
|
|
310
429
|
## Incremental package parsing
|
|
311
430
|
|
|
312
431
|
`parseQtiPackageStream(source, limits)` reads an immutable package entry inventory
|
|
@@ -341,3 +460,33 @@ bounded diagnostics remain in memory; item bodies and parsed models do not.
|
|
|
341
460
|
Choose entry and total budgets for the host runtime and enforce archive integrity
|
|
342
461
|
at the host's extraction boundary. The synchronous `parseQtiPackage` API still
|
|
343
462
|
returns a complete in-memory package for callers that need that representation.
|
|
463
|
+
|
|
464
|
+
## ZIP extraction in browsers and other async runtimes
|
|
465
|
+
|
|
466
|
+
`readQtiPackageZipEntriesAsync(bytes, { inflateRaw, limits }, diagnostics)` uses the
|
|
467
|
+
same archive reader as `readQtiPackageZipEntries`. Its inflater returns a promise;
|
|
468
|
+
the existing synchronous API is unchanged. Both readers validate central/local
|
|
469
|
+
headers, canonical paths, duplicate entries, overlapping bodies, and resource
|
|
470
|
+
budgets. Multi-disk archives, ZIP64, encryption, and unsupported compression
|
|
471
|
+
methods produce typed diagnostics. CRC checks are not currently performed.
|
|
472
|
+
|
|
473
|
+
The host inflater must enforce `context.maxOutputLength` **during** expansion.
|
|
474
|
+
The browser example uses a bounded `DecompressionStream` reader and cancels it
|
|
475
|
+
when output exceeds that budget. Entries returned by either reader are
|
|
476
|
+
provisional: reject the archive when `diagnostics` contains an error, even when
|
|
477
|
+
some entries were extracted. Limits must be positive safe integers; `Infinity`
|
|
478
|
+
explicitly disables a budget and should be reserved for trusted input.
|
|
479
|
+
|
|
480
|
+
`isQtiItemResource(type)` classifies manifest item resource types. Package content
|
|
481
|
+
uses `isResolvableAssetUrl` for relative references; external URLs and fragments
|
|
482
|
+
are not package inventory entries. Root-absolute content paths such as `/media/a.png`
|
|
483
|
+
produce `package.path.absolute` instead of being rebased beneath an item's directory.
|
|
484
|
+
|
|
485
|
+
`parseQtiXml` retains authored top-level child names and locations in
|
|
486
|
+
`item.sourceChildren`. `validateAssessmentItem` uses that source metadata to check
|
|
487
|
+
the QTI 3.0.1 assessment-item sequence and reject unsupported direct children with
|
|
488
|
+
`assessmentItem.child.order` and `assessmentItem.child.unsupported` diagnostics.
|
|
489
|
+
These checks apply to ordinary item parsing, package import, CLI inspection, and
|
|
490
|
+
fixture validation. Programmatically created items without source metadata have
|
|
491
|
+
no authored XML order to check. This is an explicit structural check, not runtime
|
|
492
|
+
XSD validation.
|
|
@@ -22,16 +22,15 @@ export function materializeAdaptiveCandidateView(input) {
|
|
|
22
22
|
return redactDeliveryXml(templateMaterialization.xml, policy);
|
|
23
23
|
}
|
|
24
24
|
function shouldPreserveFeedback(node, outcomes) {
|
|
25
|
-
if (node.attributes["show-hide"] === "hide")
|
|
26
|
-
return false;
|
|
27
25
|
const identifier = node.attributes.identifier;
|
|
28
26
|
const outcomeIdentifier = node.attributes["outcome-identifier"];
|
|
29
27
|
if (!identifier || !outcomeIdentifier)
|
|
30
28
|
return false;
|
|
31
29
|
const outcome = outcomes[outcomeIdentifier] ?? null;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
const matches = Array.isArray(outcome)
|
|
31
|
+
? outcome.includes(identifier)
|
|
32
|
+
: qtiValueToString(outcome) === identifier;
|
|
33
|
+
return node.attributes["show-hide"] === "hide" ? !matches : matches;
|
|
35
34
|
}
|
|
36
35
|
function isFeedbackElement(normalizedName) {
|
|
37
36
|
return FEEDBACK_ELEMENT_NAMES.has(normalizedName);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adaptive-turn-materializer.js","sourceRoot":"","sources":["../src/adaptive-turn-materializer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uCAAuC,EACvC,kBAAkB,EAClB,yBAAyB,EACzB,gBAAgB,EAChB,iBAAiB,GAIlB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,+BAA+B,EAAE,MAAM,yCAAyC,CAAC;AAE1F,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGrD,MAAM,iCAAiC,GAAG,IAAI,GAAG,CAAC,CAAC,qBAAqB,EAAE,sBAAsB,CAAC,CAAC,CAAC;AAEnG,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAgBhG,MAAM,UAAU,gCAAgC,CAC9C,KAA+C;IAE/C,MAAM,MAAM,GAAG,6BAA6B,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7D,MAAM,uBAAuB,GAAG,+BAA+B,CAAC,KAAK,CAAC,OAAO,EAAE;QAC7E,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,EAAE;QAC1C,SAAS,EAAE,KAAK,CAAC,SAAS;KAC3B,CAAC,CAAC;IACH,IAAI,CAAC,uBAAuB,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;QAC7E,MAAM,WAAW,GAAG,CAAC,GAAG,uBAAuB,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;QACtF,OAAO;YACL,EAAE,EAAE,KAAK;YACT,WAAW;YACX,QAAQ;SACT,CAAC;IACJ,CAAC;IACD,OAAO,iBAAiB,CAAC,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAa,EAAE,QAAkC;IAC/E,
|
|
1
|
+
{"version":3,"file":"adaptive-turn-materializer.js","sourceRoot":"","sources":["../src/adaptive-turn-materializer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adaptive-turn.d.ts","sourceRoot":"","sources":["../src/adaptive-turn.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAGL,KAAK,+BAA+B,EACpC,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,6BAA6B,EAClC,KAAK,8BAA8B,EACpC,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,4BAA4B,GAAG,uBAAuB,CAAC;AAEnE,MAAM,WAAW,oBACf,SAAQ,0BAA0B,EAAE,6BAA6B;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,4BAA6B,SAAQ,oBAAoB;IACxE,UAAU,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAChD,gBAAgB,EAAE,+BAA+B,CAAC;IAClD,oBAAoB,CAAC,EAAE,8BAA8B,GAAG,SAAS,CAAC;IAClE,wBAAwB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAChD;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,OAAO,CAAC;IACZ,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACnC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,gBAAgB,EAAE,QAAQ,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,oBAAoB,GAAG,qBAAqB,CAE7F;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,4BAA4B,GAClC,qBAAqB,
|
|
1
|
+
{"version":3,"file":"adaptive-turn.d.ts","sourceRoot":"","sources":["../src/adaptive-turn.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EAGL,KAAK,+BAA+B,EACpC,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,KAAK,6BAA6B,EAClC,KAAK,8BAA8B,EACpC,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,4BAA4B,GAAG,uBAAuB,CAAC;AAEnE,MAAM,WAAW,oBACf,SAAQ,0BAA0B,EAAE,6BAA6B;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,4BAA6B,SAAQ,oBAAoB;IACxE,UAAU,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAChD,gBAAgB,EAAE,+BAA+B,CAAC;IAClD,oBAAoB,CAAC,EAAE,8BAA8B,GAAG,SAAS,CAAC;IAClE,wBAAwB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAChD;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,OAAO,CAAC;IACZ,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACnC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,gBAAgB,EAAE,QAAQ,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,oBAAoB,GAAG,qBAAqB,CAE7F;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,4BAA4B,GAClC,qBAAqB,CAkEvB"}
|
package/dist/adaptive-turn.js
CHANGED
|
@@ -14,6 +14,7 @@ export function runTrustedAdaptiveItemTurn(input) {
|
|
|
14
14
|
parsedItem: input.parsedItem,
|
|
15
15
|
diagnosticPrefix,
|
|
16
16
|
allowedUndeclaredResponseIdentifiers: input.allowedUndeclaredResponseIdentifiers,
|
|
17
|
+
sessionEnvironment: input.sessionEnvironment,
|
|
17
18
|
priorState: priorStateResult.state,
|
|
18
19
|
submission: {
|
|
19
20
|
trustedResponses: input.trustedResponses,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adaptive-turn.js","sourceRoot":"","sources":["../src/adaptive-turn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AAEnF,OAAO,EACL,qBAAqB,EACrB,qBAAqB,GAOtB,MAAM,2BAA2B,CAAC;AAgCnC,MAAM,UAAU,0BAA0B,CAAC,KAA2B;IACpE,OAAO,0BAA0B,CAAC,EAAE,GAAG,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,KAAmC;IAEnC,MAAM,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;IAChD,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,KAAK,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;IACnF,IAAI,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,OAAO,CAAC,EAAE,CAAC;QACvF,OAAO,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,aAAa,GAAG,qBAAqB,CAAC;QAC1C,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,gBAAgB;QAChB,oCAAoC,EAAE,KAAK,CAAC,oCAAoC;QAChF,UAAU,EAAE,gBAAgB,CAAC,KAAK;QAClC,UAAU,EAAE;YACV,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;YACxC,wBAAwB,EAAE,KAAK,CAAC,wBAAwB;SACzD;QACD,OAAO,EAAE,cAAc;QACvB,mBAAmB,EAAE,IAAI;QACzB,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;QAChD,wBAAwB,EAAE,KAAK,CAAC,wBAAwB;KACzD,CAAC,CAAC;IACH,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC;QACtB,OAAO,MAAM,CACX,aAAa,CAAC,WAAW,EACzB,aAAa,CAAC,KAAK,EACnB,aAAa,CAAC,QAAQ,EACtB,aAAa,CAAC,KAAK,CACpB,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,gCAAgC,CAAC;QAChD,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,QAAQ,EAAE,aAAa,CAAC,QAAQ;QAChC,SAAS,EAAE,aAAa,CAAC,SAAS;QAClC,cAAc,EAAE,aAAa,CAAC,KAAK,CAAC,cAAc,IAAI,EAAE;KACzD,CAAC,CAAC;IACH,MAAM,mBAAmB,GAAG,CAAC,GAAG,aAAa,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IACpF,MAAM,gBAAgB,GAAG,QAAQ,CAAC,GAAG,CAAC;IACtC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtC,OAAO,MAAM,CACX;YACE,GAAG,mBAAmB;YACtB;gBACE,IAAI,EAAE,GAAG,gBAAgB,2BAA2B;gBACpD,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,wDAAwD;aAClE;SACF,EACD,aAAa,CAAC,KAAK,EACnB,aAAa,CAAC,QAAQ,EACtB,aAAa,CAAC,KAAK,CACpB,CAAC;IACJ,CAAC;IAED,OAAO;QACL,EAAE,EAAE,IAAI;QACR,WAAW,EAAE,mBAAmB;QAChC,KAAK,EAAE,aAAa,CAAC,KAAK;QAC1B,SAAS,EAAE,aAAa,CAAC,SAAS;QAClC,QAAQ,EAAE,aAAa,CAAC,QAAQ;QAChC,KAAK,EAAE,aAAa,CAAC,KAAK;QAC1B,gBAAgB,EAAE,aAAa,CAAC,QAAQ,CAAC,gBAAgB,IAAI,IAAI;QACjE,gBAAgB;KACjB,CAAC;AACJ,CAAC;AAED,SAAS,MAAM,CACb,WAA4B,EAC5B,QAAkC,IAAI,EACtC,WAAqC,EAAE,EACvC,QAAuB,IAAI;IAE3B,OAAO;QACL,EAAE,EAAE,KAAK;QACT,WAAW;QACX,KAAK;QACL,SAAS,EAAE,KAAK,EAAE,SAAS,IAAI,EAAE;QACjC,QAAQ;QACR,KAAK;QACL,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,IAAI,IAAI;KACpD,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"adaptive-turn.js","sourceRoot":"","sources":["../src/adaptive-turn.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attempt-state.d.ts","sourceRoot":"","sources":["../src/attempt-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAGjB,WAAW,EAKZ,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"attempt-state.d.ts","sourceRoot":"","sources":["../src/attempt-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAGjB,WAAW,EAKZ,MAAM,YAAY,CAAC;AAcpB,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAE9E;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,iBAAiB,CAG1F;AAED,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,WAAW,EACrB,UAAU,EAAE,iBAAiB,GAAG,SAAS,GACxC,IAAI,CA2DN"}
|
package/dist/attempt-state.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { ATTEMPT_STATE_SCHEMA, COMPLETION_COMPLETED, COMPLETION_NOT_ATTEMPTED, COMPLETION_STATUS, COMPLETION_UNKNOWN, } from "./attempt-state-constants.js";
|
|
2
2
|
import { isQtiPortableCustomStateValue, isQtiValue, qtiValueToString } from "./value-format.js";
|
|
3
|
-
import { isRecordValue } from "./
|
|
3
|
+
import { isRecordValue } from "./value-guards.js";
|
|
4
4
|
import { parseQtiSliderDefinition, parseQtiSliderValue } from "./slider-definition.js";
|
|
5
5
|
import { qtiScalarMatchesBaseType } from "./validation-primitives.js";
|
|
6
|
+
import { validateQtiResponseVariables } from "./response-validation.js";
|
|
6
7
|
export function isQtiAttemptStateV1(value) {
|
|
7
8
|
return attemptStateErrors(value).length === 0;
|
|
8
9
|
}
|
|
@@ -41,6 +42,7 @@ export function assertCompatiblePriorState(document, priorState) {
|
|
|
41
42
|
assertRestoredValueMatchesDeclaration("response", declaration, priorState.responses);
|
|
42
43
|
}
|
|
43
44
|
assertRestoredSliderResponses(document, priorState.responses);
|
|
45
|
+
assertRestoredGraphicGapResponses(document, priorState.responses);
|
|
44
46
|
for (const declaration of document.item.outcomeDeclarations) {
|
|
45
47
|
assertRestoredValueMatchesDeclaration("outcome", declaration, priorState.outcomes);
|
|
46
48
|
}
|
|
@@ -56,6 +58,27 @@ export function assertCompatiblePriorState(document, priorState) {
|
|
|
56
58
|
throw new Error(`Cannot restore unsupported completionStatus ${qtiValueToString(completionStatus)}.`);
|
|
57
59
|
}
|
|
58
60
|
}
|
|
61
|
+
function assertRestoredGraphicGapResponses(document, responses) {
|
|
62
|
+
const responseIdentifiers = document.item.interactions.flatMap((interaction) => interaction.type === "graphicGapMatch" && interaction.responseIdentifier
|
|
63
|
+
? [interaction.responseIdentifier]
|
|
64
|
+
: []);
|
|
65
|
+
if (responseIdentifiers.length === 0)
|
|
66
|
+
return;
|
|
67
|
+
// Restore may resume an incomplete attempt, but cannot invent placements outside
|
|
68
|
+
// the authored domain or silently discard pairs to fit the interaction limits.
|
|
69
|
+
const result = validateQtiResponseVariables({
|
|
70
|
+
item: document.item,
|
|
71
|
+
responses,
|
|
72
|
+
responseIdentifiers,
|
|
73
|
+
allowIncompleteResponses: true,
|
|
74
|
+
});
|
|
75
|
+
const failure = result.diagnostics.find((diagnostic) => diagnostic.severity === "error");
|
|
76
|
+
if (failure) {
|
|
77
|
+
// Preserve the existing session-constructor assertion contract; player and
|
|
78
|
+
// trusted delivery boundaries translate this failure into typed diagnostics.
|
|
79
|
+
throw new Error(`Cannot restore response ${failure.identifier}: ${failure.message}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
59
82
|
function assertRestoredSliderResponses(document, responses) {
|
|
60
83
|
for (const interaction of document.item.interactions) {
|
|
61
84
|
if (interaction.type !== "slider" || !interaction.responseIdentifier)
|
|
@@ -145,6 +168,23 @@ function attemptStateErrors(value) {
|
|
|
145
168
|
if (!isQtiValueRecord(value.outcomes)) {
|
|
146
169
|
errors.push("QTI attempt state outcomes must be a record of QTI values.");
|
|
147
170
|
}
|
|
171
|
+
if (value.builtInVariables !== undefined) {
|
|
172
|
+
const builtIns = value.builtInVariables;
|
|
173
|
+
if (!isRecord(builtIns) ||
|
|
174
|
+
typeof builtIns.numAttempts !== "number" ||
|
|
175
|
+
!Number.isSafeInteger(builtIns.numAttempts) ||
|
|
176
|
+
builtIns.numAttempts < 0 ||
|
|
177
|
+
typeof builtIns.attemptInProgress !== "boolean" ||
|
|
178
|
+
(builtIns.attemptInProgress && builtIns.numAttempts === 0) ||
|
|
179
|
+
!(builtIns.duration === null ||
|
|
180
|
+
(typeof builtIns.duration === "number" &&
|
|
181
|
+
Number.isFinite(builtIns.duration) &&
|
|
182
|
+
builtIns.duration >= 0)) ||
|
|
183
|
+
!isRecord(builtIns.context) ||
|
|
184
|
+
!["candidateIdentifier", "testIdentifier", "environmentIdentifier"].every((key) => isRecord(builtIns.context) && typeof builtIns.context[key] === "string")) {
|
|
185
|
+
errors.push("QTI attempt state builtInVariables requires a non-negative integer attempt count, attempt flag, finite non-negative duration or null, and three string context fields.");
|
|
186
|
+
}
|
|
187
|
+
}
|
|
148
188
|
if (value.templateValues !== undefined && !isQtiValueRecord(value.templateValues)) {
|
|
149
189
|
errors.push("QTI attempt state templateValues must be a record of QTI values.");
|
|
150
190
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attempt-state.js","sourceRoot":"","sources":["../src/attempt-state.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACxB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,6BAA6B,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"attempt-state.js","sourceRoot":"","sources":["../src/attempt-state.ts"],"names":[],"mappings":"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"}
|
package/dist/catalog.d.ts
CHANGED
|
@@ -3,6 +3,14 @@ export interface QtiCatalogSupportResolutionOptions {
|
|
|
3
3
|
supports?: string | readonly string[] | undefined;
|
|
4
4
|
languages?: string | readonly string[] | undefined;
|
|
5
5
|
includeDefaultFallback?: boolean | undefined;
|
|
6
|
+
/** Exact catalog/support/language tuples. Replaces language ranking and fallback; [] selects nothing. */
|
|
7
|
+
exactSelections?: readonly QtiCatalogSupportSelection[] | undefined;
|
|
8
|
+
}
|
|
9
|
+
/** An already resolved catalog selection; absent language selects only unlanguaged content. */
|
|
10
|
+
export interface QtiCatalogSupportSelection {
|
|
11
|
+
readonly catalogId: string;
|
|
12
|
+
readonly support: string;
|
|
13
|
+
readonly entryLanguage?: string | undefined;
|
|
6
14
|
}
|
|
7
15
|
export interface QtiCatalogSupportResolution {
|
|
8
16
|
itemIdentifier: string;
|
package/dist/catalog.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,UAAU,EAGV,kBAAkB,EAClB,qBAAqB,EACrB,WAAW,EACX,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAClD,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACnD,sBAAsB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,UAAU,EAGV,kBAAkB,EAClB,qBAAqB,EACrB,WAAW,EACX,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAClD,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IACnD,sBAAsB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7C,yGAAyG;IACzG,eAAe,CAAC,EAAE,SAAS,0BAA0B,EAAE,GAAG,SAAS,CAAC;CACrE;AAED,+FAA+F;AAC/F,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7C;AAED,MAAM,WAAW,2BAA2B;IAC1C,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,2BAA2B,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACjC,OAAO,EAAE,yBAAyB,EAAE,CAAC;IACrC,MAAM,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;CACxC;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,yBAAyB,CAAC;IAC3C,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,WAAW,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;IAChD,MAAM,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACvC,UAAU,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC3C,aAAa,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;CAC/C;AAED,qFAAqF;AACrF,MAAM,MAAM,yBAAyB,GACjC,WAAW,GACX,SAAS,GACT,gBAAgB,GAChB,kBAAkB,GAClB,aAAa,CAAC;AAalB,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,WAAW,GAAG,iBAAiB,EACtC,OAAO,GAAE,kCAAuC,GAC/C,2BAA2B,CAuB7B"}
|
package/dist/catalog.js
CHANGED
|
@@ -25,6 +25,16 @@ function matchingCatalogSupports(catalog, supportFilter, languages, options) {
|
|
|
25
25
|
return catalog.cards.flatMap((card) => {
|
|
26
26
|
if (supportFilter && !supportFilter.has(card.support.toLowerCase()))
|
|
27
27
|
return [];
|
|
28
|
+
if (options.exactSelections !== undefined) {
|
|
29
|
+
const selections = options.exactSelections.filter((selection) => selection.catalogId === catalog.id &&
|
|
30
|
+
selection.support.toLowerCase() === card.support.toLowerCase());
|
|
31
|
+
return catalogCandidates(card)
|
|
32
|
+
.filter((candidate) => selections.some((selection) => selection.entryLanguage?.toLowerCase() === candidate.language?.toLowerCase()))
|
|
33
|
+
.map((candidate) => resolvedSupport(catalog, {
|
|
34
|
+
...candidate,
|
|
35
|
+
selectionReason: candidate.language === undefined ? "unlanguaged" : "exact-language",
|
|
36
|
+
}));
|
|
37
|
+
}
|
|
28
38
|
return selectedCandidates(card, languages, options).map((candidate) => resolvedSupport(catalog, candidate));
|
|
29
39
|
});
|
|
30
40
|
}
|
package/dist/catalog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { QtiDiagnostic } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Return a new array containing the first diagnostic for each diagnosticKey, in input order.
|
|
4
|
+
* Source locations do not distinguish duplicates; the first object's metadata is retained.
|
|
5
|
+
* The input array and diagnostic objects are not modified or cloned.
|
|
6
|
+
*/
|
|
7
|
+
export declare function uniqueDiagnostics(diagnostics: readonly QtiDiagnostic[]): QtiDiagnostic[];
|
|
8
|
+
/**
|
|
9
|
+
* Identify a diagnostic by code, severity, message, and path, excluding source location.
|
|
10
|
+
* Absent and empty paths are equivalent. Treat the returned string as an opaque key.
|
|
11
|
+
*/
|
|
12
|
+
export declare function diagnosticKey(diagnostic: QtiDiagnostic): string;
|
|
13
|
+
//# sourceMappingURL=diagnostics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,SAAS,aAAa,EAAE,GAAG,aAAa,EAAE,CAQxF;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,aAAa,GAAG,MAAM,CAO/D"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Return a new array containing the first diagnostic for each diagnosticKey, in input order.
|
|
3
|
+
* Source locations do not distinguish duplicates; the first object's metadata is retained.
|
|
4
|
+
* The input array and diagnostic objects are not modified or cloned.
|
|
5
|
+
*/
|
|
6
|
+
export function uniqueDiagnostics(diagnostics) {
|
|
7
|
+
const seen = new Set();
|
|
8
|
+
return diagnostics.filter((diagnostic) => {
|
|
9
|
+
const key = diagnosticKey(diagnostic);
|
|
10
|
+
if (seen.has(key))
|
|
11
|
+
return false;
|
|
12
|
+
seen.add(key);
|
|
13
|
+
return true;
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Identify a diagnostic by code, severity, message, and path, excluding source location.
|
|
18
|
+
* Absent and empty paths are equivalent. Treat the returned string as an opaque key.
|
|
19
|
+
*/
|
|
20
|
+
export function diagnosticKey(diagnostic) {
|
|
21
|
+
return JSON.stringify([
|
|
22
|
+
diagnostic.code,
|
|
23
|
+
diagnostic.severity,
|
|
24
|
+
diagnostic.message,
|
|
25
|
+
diagnostic.path ?? "",
|
|
26
|
+
]);
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=diagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,WAAqC;IACrE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE;QACvC,MAAM,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;QACtC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,UAAyB;IACrD,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,UAAU,CAAC,IAAI;QACf,UAAU,CAAC,QAAQ;QACnB,UAAU,CAAC,OAAO;QAClB,UAAU,CAAC,IAAI,IAAI,EAAE;KACtB,CAAC,CAAC;AACL,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { processQtiAdaptiveItemTurn, type QtiAdaptiveTurnInput, type QtiAdaptiveTurnResponseInput, type QtiAdaptiveTurnResult, } from "./adaptive-turn.js";
|
|
2
2
|
export { assertNever } from "./assert-never.js";
|
|
3
|
-
export {
|
|
3
|
+
export { diagnosticKey, uniqueDiagnostics } from "./diagnostics.js";
|
|
4
|
+
export { createCatalogSupportResolution, type QtiCatalogSupportResolution, type QtiCatalogSupportResolutionOptions, type QtiCatalogSupportSelection, type QtiCatalogSelectionReason, type QtiResolvedCatalogReference, type QtiResolvedCatalogSupport, } from "./catalog.js";
|
|
4
5
|
export { createCompanionMaterialsResolution, type QtiCompanionMaterialsResolution, type QtiCompanionMaterialsResolutionOptions, type QtiResolvedCompanionMaterialUnparsedChild, type QtiResolvedDigitalCompanionMaterial, type QtiResolvedPhysicalCompanionMaterial, } from "./companion-materials-resolution.js";
|
|
5
6
|
export { isResolvableAssetUrl } from "./asset-url.js";
|
|
6
7
|
export { materializeQtiItemSubmission, type QtiItemSubmissionMaterializationInput, type QtiItemSubmissionMaterializationResult, type QtiItemSubmissionResponseInput, type QtiItemSubmissionScoringDisposition, type QtiVariableSnapshot, } from "./item-submission-materialization.js";
|
|
@@ -8,7 +9,7 @@ export { prepareQtiDeliveryXml, type QtiDeliveryPreparationMode, type QtiDeliver
|
|
|
8
9
|
export { analyzeQtiDeliverySecurity, buildQtiDeliverySafeXml, type QtiDeliverySafeXmlResult, type QtiDeliverySecurityAnalysis, type QtiDeliverySecurityFinding, type QtiDeliverySecurityFindingKind, } from "./delivery-security.js";
|
|
9
10
|
export { compileQtiPatternMask, isValidQtiPatternMask } from "./pattern-mask.js";
|
|
10
11
|
export { parseQtiPackageXmlTree, type QtiPackageXmlNode, type QtiPackageXmlTree, } from "./package-xml.js";
|
|
11
|
-
export { decodeUtf8, DEFAULT_QTI_PACKAGE_RESOURCE_LIMITS, discoverQtiPackageContentAssets, normalizePackagePath, QTI_ITEM_RESOURCE_TYPE, QTI_PACKAGE_MANIFEST_PATH, parseQtiPackage, readQtiPackageZipEntries, type QtiAssessmentSectionPackageModel, type QtiAssessmentTestItemRef, type QtiAssessmentTestPackageModel, type QtiManifestFile, type QtiManifestResource, type QtiPackageAsset, type QtiPackageContentAssetDiscovery, type QtiPackageAssetSource, type QtiPackageEntry, type QtiPackageInflateContext, type QtiPackageInflateRaw, type QtiItemSessionControl, type QtiPackageItem, type QtiPackageItemSource, type QtiPackageParseOptions, type QtiPackageParseResult, type QtiPackageResourceLimits, type QtiPackageShape, type QtiStandardAlignment, type QtiTestPartNavigationMode, type QtiTestPartPackageModel, type QtiTestPartSubmissionMode, type QtiTimeLimits, type QtiTimingMetadata, } from "./qti-package.js";
|
|
12
|
+
export { decodeUtf8, DEFAULT_QTI_PACKAGE_RESOURCE_LIMITS, discoverQtiPackageContentAssets, normalizePackagePath, QTI_ITEM_RESOURCE_TYPE, isQtiItemResource, QTI_PACKAGE_MANIFEST_PATH, parseQtiPackage, parseQtiPackageFromEntries, readQtiPackageZipEntries, readQtiPackageZipEntriesAsync, scopeDiagnosticToPackagePath, type QtiAssessmentSectionPackageModel, type QtiAssessmentTestItemRef, type QtiAssessmentTestPackageModel, type QtiManifestFile, type QtiManifestResource, type QtiPackageAsset, type QtiPackageContentAssetDiscovery, type QtiPackageAssetSource, type QtiPackageEntry, type QtiPackageInflateContext, type QtiPackageInflateRaw, type QtiPackageInflateRawAsync, type QtiPackageZipAsyncOptions, type QtiItemSessionControl, type QtiPackageItem, type QtiPackageItemSource, type QtiPackageParseOptions, type QtiPackageParseResult, type QtiPackageXmlFileSummary, type QtiPackageResourceLimits, type QtiPackageShape, type QtiStandardAlignment, type QtiTestPartNavigationMode, type QtiTestPartPackageModel, type QtiTestPartSubmissionMode, type QtiTimeLimits, type QtiTimingMetadata, } from "./qti-package.js";
|
|
12
13
|
export { detectPackageMediaType } from "./qti-package-assets.js";
|
|
13
14
|
export { parseQtiXml } from "./parser.js";
|
|
14
15
|
export { numericTuple3, numericTuple4, parseXmlBoolean } from "./parser-values.js";
|
|
@@ -24,7 +25,7 @@ export { associationMaximumResponses, choiceMatchLimitExceeded, choiceMatchMaxim
|
|
|
24
25
|
export { validateQtiResponseVariables, type QtiResponseValidationDiagnostic, type QtiResponseValidationDiagnosticCode, type QtiResponseValidationInput, type QtiResponseValidationResult, type QtiResponseVariableInput, type QtiResponseVariablesInput, } from "./response-validation.js";
|
|
25
26
|
export { serializeResponseProcessing, type QtiSerializeResponseProcessingResult, } from "./serializer-processing.js";
|
|
26
27
|
export { createTextToSpeechTraversal, parseQtiDataSsml, validateQtiDataSsmlMetadata, type QtiDataSsml, type QtiDataSsmlBreak, type QtiDataSsmlBreakStrength, type QtiDataSsmlParseResult, type QtiDataSsmlPhoneme, type QtiDataSsmlProsody, type QtiDataSsmlSayAs, type QtiDataSsmlSub, type QtiTextToSpeechSegment, type QtiTextToSpeechSegmentKind, type QtiTextToSpeechTraversal, } from "./tts.js";
|
|
27
|
-
export { assertQtiAttemptStateV1, createItemSession, isQtiAttemptStateV1, visibleModalFeedback, type QtiCustomOperatorContext, type QtiCustomOperatorHandler, type QtiCustomOperatorRegistry, type QtiItemSession, type QtiItemSessionOptions, } from "./session.js";
|
|
28
|
+
export { assertQtiAttemptStateV1, createItemSession, isQtiAttemptStateV1, visibleModalFeedback, type QtiCustomOperatorContext, type QtiCustomOperatorHandler, type QtiCustomOperatorRegistry, type QtiItemSession, type QtiItemSessionOptions, type QtiSessionEnvironment, } from "./session.js";
|
|
28
29
|
export { deprecatedInteractionSupport, elementSupport, getInteractionSupport, interactionRegistryStatus, interactionNameToType, interactionSupport, itemMetadataSupport, processingSupport, } from "./support.js";
|
|
29
30
|
export { sharedVocabularyClassSupport } from "./shared-vocabulary-support.js";
|
|
30
31
|
export { findSharedVocabularyCoverageViolations, type SharedVocabularyCoverageViolation, } from "./shared-vocabulary-coverage-policy.js";
|
|
@@ -37,4 +38,5 @@ export { validateAssessmentItem } from "./validation.js";
|
|
|
37
38
|
export type { QtiAssessmentItem, QtiAttemptStatus, QtiAttemptStateV1, QtiCatalog, QtiCatalogCard, QtiCatalogCardEntry, QtiCatalogFileHref, QtiCatalogHtmlContent, QtiCatalogInfo, QtiCatalogReference, QtiChoice, QtiChoiceRole, QtiCompanionMaterialsInfo, QtiCompanionMaterialsUnparsedChild, QtiContentNode, QtiCustomInteractionDefinition, QtiDigitalMaterial, QtiInteractionMarkupDefinition, QtiDiagnostic, QtiDocument, QtiElementSupport, QtiInteractionElementSupport, QtiItemMetadataElementSupport, QtiInteraction, QtiInteractionRegistryStatus, QtiInteractionType, QtiMediaSource, QtiMediaTrack, QtiMapEntry, QtiModalFeedback, QtiObjectAsset, QtiOutcomeDeclaration, QtiParseResult, QtiPhysicalMaterial, QtiProcessingExpression, QtiProcessingElementSupport, QtiPortableCustomDefinition, QtiPortableCustomInteractionModule, QtiPortableCustomInteractionModules, QtiPortableCustomStateValue, QtiPortableCustomVariableBinding, QtiAreaMapEntry, QtiGapMatchGapSegment, QtiGapMatchSegment, QtiGapMatchTextSegment, QtiHottextChoiceSegment, QtiHottextSegment, QtiHottextTextSegment, QtiResponseBranch, QtiResponseCondition, QtiResponseDeclaration, QtiResponseProcessing, QtiResponseRule, QtiScoreResult, QtiSourceLocation, QtiStylesheet, QtiLookupOutcomeValue, QtiSetOutcomeValue, QtiSupportStatus, QtiTemplateDeclaration, QtiTemplateBranch, QtiTemplateProcessing, QtiTemplateRule, QtiValidationResult, QtiValue, SharedVocabularyClassSupport, } from "./types.js";
|
|
38
39
|
export { isQtiPortableCustomStateValue, isQtiValue, qtiScalarToString, qtiValueToIdentifierList, qtiValueToString, qtiValueToStringList, readQtiPortableCustomStateValue, readQtiJsonValue, unknownToDisplayString, } from "./value-format.js";
|
|
39
40
|
export { parseQtiPackageStream, type QtiPackageSource, type QtiPackageStreamLimits, type QtiPackageStreamEvent, type QtiPackageStreamSummary, } from "./qti-package-stream.js";
|
|
41
|
+
export { captureQtiTextResponse, formatQtiTextResponse, qtiTextResponseString, } from "./text-response.js";
|
|
40
42
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,KAAK,oBAAoB,EACzB,KAAK,4BAA4B,EACjC,KAAK,qBAAqB,GAC3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EACL,8BAA8B,EAC9B,KAAK,2BAA2B,EAChC,KAAK,kCAAkC,EACvC,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC9B,KAAK,2BAA2B,EAChC,KAAK,yBAAyB,GAC/B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,kCAAkC,EAClC,KAAK,+BAA+B,EACpC,KAAK,sCAAsC,EAC3C,KAAK,yCAAyC,EAC9C,KAAK,mCAAmC,EACxC,KAAK,oCAAoC,GAC1C,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EACL,4BAA4B,EAC5B,KAAK,qCAAqC,EAC1C,KAAK,sCAAsC,EAC3C,KAAK,8BAA8B,EACnC,KAAK,mCAAmC,EACxC,KAAK,mBAAmB,GACzB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACL,qBAAqB,EACrB,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,GAClC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAC/B,KAAK,8BAA8B,GACpC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EACL,sBAAsB,EACtB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,UAAU,EACV,mCAAmC,EACnC,+BAA+B,EAC/B,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,EACjB,yBAAyB,EACzB,eAAe,EACf,0BAA0B,EAC1B,wBAAwB,EACxB,6BAA6B,EAC7B,4BAA4B,EAC5B,KAAK,gCAAgC,EACrC,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,EAClC,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,+BAA+B,EACpC,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,aAAa,EAClB,KAAK,iBAAiB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,mCAAmC,EACnC,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,GACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,sBAAsB,EACtB,cAAc,EACd,kBAAkB,EAClB,KAAK,mBAAmB,EACxB,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,2BAA2B,EAChC,KAAK,oBAAoB,GAC1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,uCAAuC,EAAE,MAAM,uCAAuC,CAAC;AAChG,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EACL,sBAAsB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,6BAA6B,EAClC,KAAK,sBAAsB,GAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,EACxB,kBAAkB,EAClB,0BAA0B,EAC1B,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EACjB,yBAAyB,EACzB,cAAc,EACd,iBAAiB,EACjB,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,EACrB,0BAA0B,EAC1B,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,wBAAwB,EACxB,6BAA6B,EAC7B,KAAK,mBAAmB,EACxB,KAAK,2BAA2B,GACjC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,4BAA4B,EAC5B,KAAK,+BAA+B,EACpC,KAAK,mCAAmC,EACxC,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,GAC/B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,2BAA2B,EAC3B,KAAK,oCAAoC,GAC1C,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,2BAA2B,EAC3B,gBAAgB,EAChB,2BAA2B,EAC3B,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,GAC9B,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,GAC3B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,4BAA4B,EAC5B,cAAc,EACd,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EACL,sCAAsC,EACtC,KAAK,iCAAiC,GACvC,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,kCAAkC,EAClC,qCAAqC,EACrC,iCAAiC,EACjC,eAAe,EACf,mBAAmB,EACnB,+BAA+B,EAC/B,4BAA4B,EAC5B,mCAAmC,EACnC,mCAAmC,EACnC,kCAAkC,EAClC,yBAAyB,EACzB,oCAAoC,EACpC,8BAA8B,EAC9B,iCAAiC,EACjC,KAAK,qCAAqC,EAC1C,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,EAClC,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,GACnC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,+CAA+C,EAC/C,qCAAqC,EACrC,6CAA6C,EAC7C,oCAAoC,EACpC,qDAAqD,GACtD,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,4BAA4B,EAC5B,6CAA6C,EAC7C,oCAAoC,EACpC,wCAAwC,EACxC,0CAA0C,EAC1C,8CAA8C,EAC9C,iCAAiC,EACjC,uCAAuC,EACvC,uCAAuC,EACvC,0CAA0C,EAC1C,qCAAqC,EACrC,sCAAsC,GACvC,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,+BAA+B,EAC/B,KAAK,4BAA4B,GAClC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,2BAA2B,EAC3B,yCAAyC,EACzC,wBAAwB,EACxB,sCAAsC,EACtC,yBAAyB,EACzB,wCAAwC,EACxC,uBAAuB,EACvB,qCAAqC,EACrC,kCAAkC,EAClC,yCAAyC,EACzC,6CAA6C,EAC7C,mCAAmC,EACnC,gCAAgC,EAChC,wCAAwC,EACxC,2BAA2B,EAC3B,uCAAuC,EACvC,2CAA2C,EAC3C,wBAAwB,EACxB,8BAA8B,EAC9B,mCAAmC,EACnC,yBAAyB,EACzB,mCAAmC,EACnC,kCAAkC,EAClC,+CAA+C,EAC/C,4CAA4C,EAC5C,kCAAkC,EAClC,8BAA8B,EAC9B,8BAA8B,EAC9B,gCAAgC,EAChC,uCAAuC,EACvC,8BAA8B,EAC9B,iCAAiC,EACjC,0BAA0B,EAC1B,sCAAsC,EACtC,0CAA0C,EAC1C,gCAAgC,EAChC,6BAA6B,EAC7B,oCAAoC,EACpC,KAAK,wBAAwB,EAC7B,KAAK,2CAA2C,EAChD,KAAK,mCAAmC,GACzC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,cAAc,EACd,mBAAmB,EACnB,SAAS,EACT,aAAa,EACb,yBAAyB,EACzB,kCAAkC,EAClC,cAAc,EACd,8BAA8B,EAC9B,kBAAkB,EAClB,8BAA8B,EAC9B,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,4BAA4B,EAC5B,6BAA6B,EAC7B,cAAc,EACd,4BAA4B,EAC5B,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,mBAAmB,EACnB,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,EAC3B,kCAAkC,EAClC,mCAAmC,EACnC,2BAA2B,EAC3B,gCAAgC,EAChC,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,QAAQ,EACR,4BAA4B,GAC7B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,6BAA6B,EAC7B,UAAU,EACV,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,oBAAoB,EACpB,+BAA+B,EAC/B,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,GAC7B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC"}
|