@longsightgroup/qti3-core 0.10.3 → 0.10.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/README.md +35 -0
  2. package/dist/attempt-state.d.ts.map +1 -1
  3. package/dist/attempt-state.js +2 -27
  4. package/dist/attempt-state.js.map +1 -1
  5. package/dist/content-text.d.ts.map +1 -1
  6. package/dist/content-text.js +31 -9
  7. package/dist/content-text.js.map +1 -1
  8. package/dist/index.d.ts +3 -1
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +3 -1
  11. package/dist/index.js.map +1 -1
  12. package/dist/package-xml.d.ts +1 -0
  13. package/dist/package-xml.d.ts.map +1 -1
  14. package/dist/package-xml.js +1 -0
  15. package/dist/package-xml.js.map +1 -1
  16. package/dist/parser-custom-interactions.js +1 -0
  17. package/dist/parser-custom-interactions.js.map +1 -1
  18. package/dist/parser-item-metadata.d.ts.map +1 -1
  19. package/dist/parser-item-metadata.js +1 -0
  20. package/dist/parser-item-metadata.js.map +1 -1
  21. package/dist/parser-values.d.ts +5 -1
  22. package/dist/parser-values.d.ts.map +1 -1
  23. package/dist/parser-values.js +31 -5
  24. package/dist/parser-values.js.map +1 -1
  25. package/dist/parser.d.ts.map +1 -1
  26. package/dist/parser.js +65 -34
  27. package/dist/parser.js.map +1 -1
  28. package/dist/processing-evaluator-comparison.d.ts.map +1 -1
  29. package/dist/processing-evaluator-comparison.js +16 -6
  30. package/dist/processing-evaluator-comparison.js.map +1 -1
  31. package/dist/processing-evaluator-variable.d.ts.map +1 -1
  32. package/dist/processing-evaluator-variable.js +1 -1
  33. package/dist/processing-evaluator-variable.js.map +1 -1
  34. package/dist/processing-mapping.d.ts.map +1 -1
  35. package/dist/processing-mapping.js +15 -7
  36. package/dist/processing-mapping.js.map +1 -1
  37. package/dist/processing-values.d.ts +4 -4
  38. package/dist/processing-values.d.ts.map +1 -1
  39. package/dist/processing-values.js +28 -14
  40. package/dist/processing-values.js.map +1 -1
  41. package/dist/processing-variables.d.ts +3 -1
  42. package/dist/processing-variables.d.ts.map +1 -1
  43. package/dist/processing-variables.js +38 -2
  44. package/dist/processing-variables.js.map +1 -1
  45. package/dist/qti-namespaces.d.ts +7 -0
  46. package/dist/qti-namespaces.d.ts.map +1 -0
  47. package/dist/qti-namespaces.js +7 -0
  48. package/dist/qti-namespaces.js.map +1 -0
  49. package/dist/qti-package-assets.d.ts +3 -2
  50. package/dist/qti-package-assets.d.ts.map +1 -1
  51. package/dist/qti-package-assets.js.map +1 -1
  52. package/dist/qti-package-items.d.ts +1 -0
  53. package/dist/qti-package-items.d.ts.map +1 -1
  54. package/dist/qti-package-items.js +55 -41
  55. package/dist/qti-package-items.js.map +1 -1
  56. package/dist/qti-package-manifest.d.ts +3 -2
  57. package/dist/qti-package-manifest.d.ts.map +1 -1
  58. package/dist/qti-package-manifest.js +4 -3
  59. package/dist/qti-package-manifest.js.map +1 -1
  60. package/dist/qti-package-metadata.d.ts +3 -2
  61. package/dist/qti-package-metadata.d.ts.map +1 -1
  62. package/dist/qti-package-metadata.js +8 -4
  63. package/dist/qti-package-metadata.js.map +1 -1
  64. package/dist/qti-package-plan.d.ts +41 -0
  65. package/dist/qti-package-plan.d.ts.map +1 -0
  66. package/dist/qti-package-plan.js +85 -0
  67. package/dist/qti-package-plan.js.map +1 -0
  68. package/dist/qti-package-stream.d.ts +38 -0
  69. package/dist/qti-package-stream.d.ts.map +1 -0
  70. package/dist/qti-package-stream.js +149 -0
  71. package/dist/qti-package-stream.js.map +1 -0
  72. package/dist/qti-package-xml.d.ts +4 -2
  73. package/dist/qti-package-xml.d.ts.map +1 -1
  74. package/dist/qti-package-xml.js +10 -5
  75. package/dist/qti-package-xml.js.map +1 -1
  76. package/dist/qti-package-zip.d.ts +17 -1
  77. package/dist/qti-package-zip.d.ts.map +1 -1
  78. package/dist/qti-package-zip.js +60 -5
  79. package/dist/qti-package-zip.js.map +1 -1
  80. package/dist/qti-package.d.ts +3 -3
  81. package/dist/qti-package.d.ts.map +1 -1
  82. package/dist/qti-package.js +23 -47
  83. package/dist/qti-package.js.map +1 -1
  84. package/dist/response-validation.d.ts +12 -2
  85. package/dist/response-validation.d.ts.map +1 -1
  86. package/dist/response-validation.js +122 -19
  87. package/dist/response-validation.js.map +1 -1
  88. package/dist/session.js +1 -1
  89. package/dist/session.js.map +1 -1
  90. package/dist/trusted-item-session.d.ts.map +1 -1
  91. package/dist/trusted-item-session.js +5 -3
  92. package/dist/trusted-item-session.js.map +1 -1
  93. package/dist/types.d.ts +2 -0
  94. package/dist/types.d.ts.map +1 -1
  95. package/dist/validation-primitives.d.ts +5 -1
  96. package/dist/validation-primitives.d.ts.map +1 -1
  97. package/dist/validation-primitives.js +40 -2
  98. package/dist/validation-primitives.js.map +1 -1
  99. package/dist/xml.d.ts.map +1 -1
  100. package/dist/xml.js +28 -0
  101. package/dist/xml.js.map +1 -1
  102. package/package.json +1 -1
  103. package/src/attempt-state.ts +2 -26
  104. package/src/content-text.ts +45 -9
  105. package/src/index.ts +11 -0
  106. package/src/package-xml.ts +2 -0
  107. package/src/parser-custom-interactions.ts +1 -0
  108. package/src/parser-item-metadata.ts +1 -0
  109. package/src/parser-values.ts +31 -5
  110. package/src/parser.ts +122 -91
  111. package/src/processing-evaluator-comparison.ts +24 -5
  112. package/src/processing-evaluator-variable.ts +1 -0
  113. package/src/processing-mapping.ts +22 -6
  114. package/src/processing-values.ts +59 -14
  115. package/src/processing-variables.ts +47 -2
  116. package/src/qti-namespaces.ts +8 -0
  117. package/src/qti-package-assets.ts +3 -4
  118. package/src/qti-package-items.ts +101 -84
  119. package/src/qti-package-manifest.ts +15 -7
  120. package/src/qti-package-metadata.ts +19 -6
  121. package/src/qti-package-plan.ts +168 -0
  122. package/src/qti-package-stream.ts +254 -0
  123. package/src/qti-package-xml.ts +16 -3
  124. package/src/qti-package-zip.ts +128 -3
  125. package/src/qti-package.ts +30 -81
  126. package/src/response-validation.ts +185 -20
  127. package/src/session.ts +1 -0
  128. package/src/trusted-item-session.ts +5 -3
  129. package/src/types.ts +2 -0
  130. package/src/validation-primitives.ts +43 -3
  131. package/src/xml.ts +37 -0
@@ -1 +1 @@
1
- {"version":3,"file":"qti-package-manifest.js","sourceRoot":"","sources":["../src/qti-package-manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"qti-package-manifest.js","sourceRoot":"","sources":["../src/qti-package-manifest.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ export declare function parseTimeLimits(node: QtiPackageXmlNode | undefined, sou
6
6
  export declare function parseItemSessionControl(node: QtiPackageXmlNode | undefined, sourcePath: string, diagnostics: QtiDiagnostic[]): QtiItemSessionControl | undefined;
7
7
  export declare function parseStandardAlignments(root: QtiPackageXmlNode, sourcePath: string): QtiStandardAlignment[];
8
8
  export declare function uniqueStandards(standards: readonly QtiStandardAlignment[]): QtiStandardAlignment[];
9
- export declare function primaryTiming(assessmentTest: QtiAssessmentTestPackageModel | undefined, items: readonly QtiPackageItem[]): QtiTimingMetadata | undefined;
10
- export declare function packageTitle(manifestRoot: QtiPackageXmlNode | undefined, assessmentTest: QtiAssessmentTestPackageModel | undefined, items: readonly QtiPackageItem[]): string;
9
+ export declare function primaryTimingFromScan(assessmentTest: QtiAssessmentTestPackageModel | undefined, timedItemCount: number, soleItemTiming: QtiTimingMetadata | undefined): QtiTimingMetadata | undefined;
10
+ export declare function primaryTiming(assessmentTest: QtiAssessmentTestPackageModel | undefined, items: readonly Pick<QtiPackageItem, "timing">[]): QtiTimingMetadata | undefined;
11
+ export declare function packageTitle(manifestRoot: QtiPackageXmlNode | undefined, assessmentTest: QtiAssessmentTestPackageModel | undefined, items: readonly Pick<QtiPackageItem, "title">[]): string;
11
12
  //# sourceMappingURL=qti-package-metadata.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"qti-package-metadata.d.ts","sourceRoot":"","sources":["../src/qti-package-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAI1D,OAAO,KAAK,EACV,6BAA6B,EAC7B,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAkBhD,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,iBAAiB,EACvB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,aAAa,EAAE,EAC5B,gBAAgB,CAAC,EAAE,aAAa,GAC/B,iBAAiB,GAAG,SAAS,CAc/B;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,iBAAiB,GAAG,SAAS,EACnC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,aAAa,EAAE,GAC3B,aAAa,GAAG,SAAS,CAgC3B;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,iBAAiB,GAAG,SAAS,EACnC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,aAAa,EAAE,GAC3B,qBAAqB,GAAG,SAAS,CAanC;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,iBAAiB,EACvB,UAAU,EAAE,MAAM,GACjB,oBAAoB,EAAE,CAiCxB;AA4DD,wBAAgB,eAAe,CAC7B,SAAS,EAAE,SAAS,oBAAoB,EAAE,GACzC,oBAAoB,EAAE,CAsBxB;AAuDD,wBAAgB,aAAa,CAC3B,cAAc,EAAE,6BAA6B,GAAG,SAAS,EACzD,KAAK,EAAE,SAAS,cAAc,EAAE,GAC/B,iBAAiB,GAAG,SAAS,CAI/B;AAED,wBAAgB,YAAY,CAC1B,YAAY,EAAE,iBAAiB,GAAG,SAAS,EAC3C,cAAc,EAAE,6BAA6B,GAAG,SAAS,EACzD,KAAK,EAAE,SAAS,cAAc,EAAE,GAC/B,MAAM,CAaR"}
1
+ {"version":3,"file":"qti-package-metadata.d.ts","sourceRoot":"","sources":["../src/qti-package-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAI1D,OAAO,KAAK,EACV,6BAA6B,EAC7B,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAmBhD,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,iBAAiB,EACvB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,aAAa,EAAE,EAC5B,gBAAgB,CAAC,EAAE,aAAa,GAC/B,iBAAiB,GAAG,SAAS,CAc/B;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,iBAAiB,GAAG,SAAS,EACnC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,aAAa,EAAE,GAC3B,aAAa,GAAG,SAAS,CAgC3B;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,iBAAiB,GAAG,SAAS,EACnC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,aAAa,EAAE,GAC3B,qBAAqB,GAAG,SAAS,CAanC;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,iBAAiB,EACvB,UAAU,EAAE,MAAM,GACjB,oBAAoB,EAAE,CAiCxB;AA4DD,wBAAgB,eAAe,CAC7B,SAAS,EAAE,SAAS,oBAAoB,EAAE,GACzC,oBAAoB,EAAE,CAsBxB;AAuDD,wBAAgB,qBAAqB,CACnC,cAAc,EAAE,6BAA6B,GAAG,SAAS,EACzD,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,iBAAiB,GAAG,SAAS,GAC5C,iBAAiB,GAAG,SAAS,CAG/B;AAED,wBAAgB,aAAa,CAC3B,cAAc,EAAE,6BAA6B,GAAG,SAAS,EACzD,KAAK,EAAE,SAAS,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,EAAE,GAC/C,iBAAiB,GAAG,SAAS,CAO/B;AAED,wBAAgB,YAAY,CAC1B,YAAY,EAAE,iBAAiB,GAAG,SAAS,EAC3C,cAAc,EAAE,6BAA6B,GAAG,SAAS,EACzD,KAAK,EAAE,SAAS,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,GAC9C,MAAM,CAaR"}
@@ -1,6 +1,7 @@
1
1
  import { parseXmlBoolean } from "./parser-values.js";
2
2
  import { pushPackageDiagnostic } from "./qti-package-paths.js";
3
3
  import { childPackageElements, packageDescendants } from "./qti-package-xml.js";
4
+ import { QTI_ASI_NAMESPACE, QTI_PACKAGE_MANIFEST_NAMESPACE } from "./qti-namespaces.js";
4
5
  /** Known QTI / IMS CP alignment element names plus attribute-driven manifest metadata. */
5
6
  const STANDARD_ALIGNMENT_ELEMENT_NAMES = new Set([
6
7
  "standard-alignment",
@@ -16,7 +17,7 @@ const STANDARD_ALIGNMENT_ATTRIBUTE_NAMES = new Set([
16
17
  "targetIdentifier",
17
18
  ]);
18
19
  export function parseTimingMetadata(root, sourcePath, diagnostics, parsedTimeLimits) {
19
- const timeLimitsNode = childPackageElements(root, "qti-time-limits")[0];
20
+ const timeLimitsNode = childPackageElements(root, "qti-time-limits", QTI_ASI_NAMESPACE)[0];
20
21
  const timeLimits = parsedTimeLimits ?? parseTimeLimits(timeLimitsNode, sourcePath, diagnostics);
21
22
  const timeDependent = parseXmlBoolean(root.attributes["time-dependent"]);
22
23
  if (!timeLimitsNode && timeDependent === undefined)
@@ -202,15 +203,18 @@ function optionalFiniteNumber(raw) {
202
203
  const value = Number(raw);
203
204
  return Number.isFinite(value) ? value : undefined;
204
205
  }
205
- export function primaryTiming(assessmentTest, items) {
206
+ export function primaryTimingFromScan(assessmentTest, timedItemCount, soleItemTiming) {
206
207
  if (assessmentTest?.timing)
207
208
  return assessmentTest.timing;
209
+ return timedItemCount === 1 ? soleItemTiming : undefined;
210
+ }
211
+ export function primaryTiming(assessmentTest, items) {
208
212
  const timedItems = items.filter((item) => item.timing !== undefined);
209
- return timedItems.length === 1 ? timedItems[0]?.timing : undefined;
213
+ return primaryTimingFromScan(assessmentTest, timedItems.length, timedItems.length === 1 ? timedItems[0]?.timing : undefined);
210
214
  }
211
215
  export function packageTitle(manifestRoot, assessmentTest, items) {
212
216
  const manifestTitle = manifestRoot
213
- ? packageDescendants(manifestRoot, "title")
217
+ ? packageDescendants(manifestRoot, "title", QTI_PACKAGE_MANIFEST_NAMESPACE)
214
218
  .map((node) => node.text.trim())
215
219
  .find((text) => text.length > 0)
216
220
  : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"qti-package-metadata.js","sourceRoot":"","sources":["../src/qti-package-metadata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"qti-package-metadata.js","sourceRoot":"","sources":["../src/qti-package-metadata.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import type { QtiPackageXmlNode } from "./package-xml.js";
2
+ import { type PackageXmlFile } from "./qti-package-xml.js";
3
+ import type { QtiAssessmentTestPackageModel, QtiManifestResource, QtiPackageItem, QtiPackageParseResult, QtiPackageShape, QtiStandardAlignment, QtiTimingMetadata } from "./qti-package-types.js";
4
+ import type { QtiDiagnostic } from "./types.js";
5
+ /** Package metadata without extracted bodies or retained item models. */
6
+ export type QtiPackageSummary = Omit<QtiPackageParseResult, "items" | "entries"> & {
7
+ readonly itemCount: number;
8
+ };
9
+ /** Inspect manifest semantics against an entry inventory without reading item bodies. */
10
+ export declare function inspectPackageManifest(entriesByPath: {
11
+ has(path: string): boolean;
12
+ }, manifestXml: PackageXmlFile | undefined, diagnostics: QtiDiagnostic[]): {
13
+ manifestRoot: QtiPackageXmlNode | undefined;
14
+ manifestResources: QtiManifestResource[];
15
+ resourcesByIdentifier: Map<string, QtiManifestResource>;
16
+ itemResources: QtiManifestResource[];
17
+ assessmentTestResources: QtiManifestResource[];
18
+ packageShape: QtiPackageShape;
19
+ };
20
+ export interface BuildPackageSummaryInput {
21
+ readonly manifestRoot: QtiPackageXmlNode | undefined;
22
+ readonly manifestResources: readonly QtiManifestResource[];
23
+ readonly resourcesByIdentifier: ReadonlyMap<string, QtiManifestResource>;
24
+ readonly packageShape: QtiPackageShape;
25
+ readonly assessmentTest: QtiAssessmentTestPackageModel | undefined;
26
+ readonly assetItems: readonly Pick<QtiPackageItem, "href" | "manifestResourceIdentifier" | "assetHrefs">[];
27
+ readonly titleItems: readonly Pick<QtiPackageItem, "title">[];
28
+ readonly timedItemCount: number;
29
+ readonly soleItemTiming: QtiTimingMetadata | undefined;
30
+ readonly itemStandards: readonly QtiStandardAlignment[];
31
+ readonly entriesByPath: {
32
+ has(path: string): boolean;
33
+ };
34
+ readonly diagnostics: QtiDiagnostic[];
35
+ readonly itemCount: number;
36
+ }
37
+ /** Build canonical package metadata shared by sync and incremental parsers. */
38
+ export declare function buildPackageSummary(input: BuildPackageSummaryInput): QtiPackageSummary;
39
+ export declare function failedPackageSummary(diagnostics: QtiDiagnostic[]): QtiPackageSummary;
40
+ export declare function enforceDiagnosticLimit(diagnostics: QtiDiagnostic[], maxDiagnostics: number): void;
41
+ //# sourceMappingURL=qti-package-plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qti-package-plan.d.ts","sourceRoot":"","sources":["../src/qti-package-plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAmB1D,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,KAAK,EACV,6BAA6B,EAC7B,mBAAmB,EACnB,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,yEAAyE;AACzE,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,EAAE,OAAO,GAAG,SAAS,CAAC,GAAG;IACjF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,yFAAyF;AACzF,wBAAgB,sBAAsB,CACpC,aAAa,EAAE;IAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,EAC7C,WAAW,EAAE,cAAc,GAAG,SAAS,EACvC,WAAW,EAAE,aAAa,EAAE;;;;;;;EAoD7B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,YAAY,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACrD,QAAQ,CAAC,iBAAiB,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC3D,QAAQ,CAAC,qBAAqB,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACzE,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;IACvC,QAAQ,CAAC,cAAc,EAAE,6BAA6B,GAAG,SAAS,CAAC;IACnE,QAAQ,CAAC,UAAU,EAAE,SAAS,IAAI,CAChC,cAAc,EACd,MAAM,GAAG,4BAA4B,GAAG,YAAY,CACrD,EAAE,CAAC;IACJ,QAAQ,CAAC,UAAU,EAAE,SAAS,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,CAAC;IAC9D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACvD,QAAQ,CAAC,aAAa,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACxD,QAAQ,CAAC,aAAa,EAAE;QAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACvD,QAAQ,CAAC,WAAW,EAAE,aAAa,EAAE,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,GAAG,iBAAiB,CA0BtF;AAED,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,aAAa,EAAE,GAAG,iBAAiB,CAapF;AAED,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,aAAa,EAAE,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CASjG"}
@@ -0,0 +1,85 @@
1
+ import { collectPackageAssets } from "./qti-package-assets.js";
2
+ import { QTI_PACKAGE_MANIFEST_PATH } from "./qti-package-manifest.js";
3
+ import { packageTitle, parseStandardAlignments, primaryTimingFromScan, uniqueStandards, } from "./qti-package-metadata.js";
4
+ import { pushPackageDiagnostic } from "./qti-package-paths.js";
5
+ import { detectPackageShape, diagnoseManifestDependencyReferences, diagnosePrimaryResourceHrefs, indexManifestResources, isQtiAssessmentTestResource, isQtiItemResource, parseManifestResources, } from "./qti-package-manifest.js";
6
+ import { pushXmlDiagnostics } from "./qti-package-xml.js";
7
+ import { QTI_PACKAGE_MANIFEST_NAMESPACE } from "./qti-namespaces.js";
8
+ /** Inspect manifest semantics against an entry inventory without reading item bodies. */
9
+ export function inspectPackageManifest(entriesByPath, manifestXml, diagnostics) {
10
+ if (!manifestXml) {
11
+ pushPackageDiagnostic(diagnostics, "package.manifest.missing", "error", "QTI package does not contain imsmanifest.xml.", QTI_PACKAGE_MANIFEST_PATH);
12
+ }
13
+ else {
14
+ pushXmlDiagnostics(manifestXml, diagnostics);
15
+ }
16
+ const manifestRoot = manifestXml?.root?.localName === "manifest" &&
17
+ manifestXml.root.uri === QTI_PACKAGE_MANIFEST_NAMESPACE
18
+ ? manifestXml.root
19
+ : undefined;
20
+ if (manifestXml?.root && !manifestRoot) {
21
+ pushPackageDiagnostic(diagnostics, "package.manifest.root", "error", manifestXml.root.localName === "manifest"
22
+ ? `Expected imsmanifest.xml manifest in namespace ${QTI_PACKAGE_MANIFEST_NAMESPACE}, found ${manifestXml.root.uri ?? "(none)"}.`
23
+ : `Expected imsmanifest.xml root manifest, found ${manifestXml.root.localName}.`, QTI_PACKAGE_MANIFEST_PATH);
24
+ }
25
+ const manifestResources = manifestRoot
26
+ ? parseManifestResources(manifestRoot, entriesByPath, diagnostics)
27
+ : [];
28
+ const resourcesByIdentifier = indexManifestResources(manifestResources, diagnostics);
29
+ diagnoseManifestDependencyReferences(manifestResources, resourcesByIdentifier, diagnostics);
30
+ const itemResources = manifestResources.filter((resource) => isQtiItemResource(resource.type));
31
+ const assessmentTestResources = manifestResources.filter((resource) => isQtiAssessmentTestResource(resource.type));
32
+ diagnosePrimaryResourceHrefs([...itemResources, ...assessmentTestResources], diagnostics);
33
+ const packageShape = detectPackageShape(itemResources, assessmentTestResources, diagnostics);
34
+ return {
35
+ manifestRoot,
36
+ manifestResources,
37
+ resourcesByIdentifier,
38
+ itemResources,
39
+ assessmentTestResources,
40
+ packageShape,
41
+ };
42
+ }
43
+ /** Build canonical package metadata shared by sync and incremental parsers. */
44
+ export function buildPackageSummary(input) {
45
+ const assets = collectPackageAssets(input.resourcesByIdentifier, input.assessmentTest, input.assetItems, input.entriesByPath, input.diagnostics);
46
+ return {
47
+ ok: input.diagnostics.every((diagnostic) => diagnostic.severity !== "error"),
48
+ title: packageTitle(input.manifestRoot, input.assessmentTest, input.titleItems),
49
+ packageShape: input.packageShape,
50
+ manifestResources: input.manifestResources,
51
+ assessmentTest: input.assessmentTest,
52
+ assets,
53
+ standards: uniqueStandards([
54
+ ...(input.manifestRoot
55
+ ? parseStandardAlignments(input.manifestRoot, QTI_PACKAGE_MANIFEST_PATH)
56
+ : []),
57
+ ...(input.assessmentTest?.standards ?? []),
58
+ ...input.itemStandards,
59
+ ]),
60
+ timing: primaryTimingFromScan(input.assessmentTest, input.timedItemCount, input.soleItemTiming),
61
+ diagnostics: input.diagnostics,
62
+ itemCount: input.itemCount,
63
+ };
64
+ }
65
+ export function failedPackageSummary(diagnostics) {
66
+ return {
67
+ ok: false,
68
+ title: "",
69
+ packageShape: "unknown",
70
+ manifestResources: [],
71
+ assessmentTest: undefined,
72
+ assets: [],
73
+ standards: [],
74
+ timing: undefined,
75
+ itemCount: 0,
76
+ diagnostics,
77
+ };
78
+ }
79
+ export function enforceDiagnosticLimit(diagnostics, maxDiagnostics) {
80
+ if (diagnostics.length < maxDiagnostics)
81
+ return;
82
+ diagnostics.length = maxDiagnostics;
83
+ pushPackageDiagnostic(diagnostics, "package.diagnostics.limit", "error", "Package processing stopped at the diagnostic limit.");
84
+ }
85
+ //# sourceMappingURL=qti-package-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qti-package-plan.js","sourceRoot":"","sources":["../src/qti-package-plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { type QtiPackageSummary } from "./qti-package-plan.js";
2
+ import type { QtiPackageItem } from "./qti-package-types.js";
3
+ /** An immutable entry inventory and host-owned, bounded reads of decoded entry bytes. */
4
+ export interface QtiPackageSource {
5
+ readonly entries: readonly {
6
+ readonly path: string;
7
+ readonly size: number;
8
+ }[];
9
+ /** Enforce maxBytes during extraction, before allocating an oversized body. */
10
+ readonly readEntry: (path: string, maxBytes: number) => Promise<Uint8Array>;
11
+ }
12
+ /** Explicit resource budgets for an incremental package read. */
13
+ export interface QtiPackageStreamLimits {
14
+ readonly maxEntries: number;
15
+ readonly maxEntryBytes: number;
16
+ readonly maxTotalBytes: number;
17
+ readonly maxDiagnostics: number;
18
+ }
19
+ /** Package metadata without extracted bodies or retained item models. */
20
+ export type QtiPackageStreamSummary = QtiPackageSummary;
21
+ /** Items are provisional until the terminal summary reports ok; hosts must stage them. */
22
+ export type QtiPackageStreamEvent = {
23
+ readonly kind: "item";
24
+ readonly index: number;
25
+ readonly item: QtiPackageItem;
26
+ } | {
27
+ readonly kind: "summary";
28
+ readonly summary: QtiPackageStreamSummary;
29
+ };
30
+ /**
31
+ * Parse immutable package entries sequentially with canonical package semantics.
32
+ *
33
+ * The caller owns ZIP/object storage and must not collect item events when bounded
34
+ * memory is required. Assets are described in the terminal summary, never loaded.
35
+ * Breaking iteration stops subsequent reads. Read failures become safe diagnostics.
36
+ */
37
+ export declare function parseQtiPackageStream(source: QtiPackageSource, limits: QtiPackageStreamLimits): AsyncGenerator<QtiPackageStreamEvent>;
38
+ //# sourceMappingURL=qti-package-stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qti-package-stream.d.ts","sourceRoot":"","sources":["../src/qti-package-stream.ts"],"names":[],"mappings":"AAMA,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAK7D,yFAAyF;AACzF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9E,+EAA+E;IAC/E,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CAC7E;AAED,iEAAiE;AACjE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,yEAAyE;AACzE,MAAM,MAAM,uBAAuB,GAAG,iBAAiB,CAAC;AAExD,0FAA0F;AAC1F,MAAM,MAAM,qBAAqB,GAC7B;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;CAAE,GAChF;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAA;CAAE,CAAC;AAE5E;;;;;;GAMG;AACH,wBAAuB,qBAAqB,CAC1C,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,sBAAsB,GAC7B,cAAc,CAAC,qBAAqB,CAAC,CA6FvC"}
@@ -0,0 +1,149 @@
1
+ import { itemReferencesForPackageShape, parseAssessmentTestPackageModel, parsePackageItem, } from "./qti-package-items.js";
2
+ import { QTI_PACKAGE_MANIFEST_PATH } from "./qti-package-manifest.js";
3
+ import { buildPackageSummary, enforceDiagnosticLimit, failedPackageSummary, inspectPackageManifest, } from "./qti-package-plan.js";
4
+ import { normalizePackagePath, pushPackageDiagnostic } from "./qti-package-paths.js";
5
+ import { parsePackageXml } from "./qti-package-xml.js";
6
+ /**
7
+ * Parse immutable package entries sequentially with canonical package semantics.
8
+ *
9
+ * The caller owns ZIP/object storage and must not collect item events when bounded
10
+ * memory is required. Assets are described in the terminal summary, never loaded.
11
+ * Breaking iteration stops subsequent reads. Read failures become safe diagnostics.
12
+ */
13
+ export async function* parseQtiPackageStream(source, limits) {
14
+ const diagnostics = [];
15
+ const inventory = inspectInventory(source, limits, diagnostics);
16
+ if (!inventory) {
17
+ yield { kind: "summary", summary: failedPackageSummary(diagnostics) };
18
+ return;
19
+ }
20
+ const read = createEntryReader(source, inventory, limits, diagnostics);
21
+ const manifestEntry = await read(QTI_PACKAGE_MANIFEST_PATH);
22
+ const manifest = inspectPackageManifest(inventory, manifestEntry ? parsePackageXml(manifestEntry) : undefined, diagnostics);
23
+ // Only the primary assessment test supplies the package structure. The shared
24
+ // parser diagnoses additional test resources without loading their bodies.
25
+ const testEntries = new Map();
26
+ const testHref = manifest.assessmentTestResources[0]?.href;
27
+ if (testHref !== undefined) {
28
+ const entry = await read(testHref);
29
+ if (entry)
30
+ testEntries.set(testHref, entry);
31
+ }
32
+ const assessmentTest = parseAssessmentTestPackageModel(manifest.packageShape, manifest.assessmentTestResources, testEntries, new Map(), diagnostics);
33
+ const references = itemReferencesForPackageShape(manifest.packageShape, manifest.itemResources, assessmentTest, diagnostics);
34
+ const assetItems = [];
35
+ const itemStandards = [];
36
+ const titleItems = [];
37
+ const seen = new Set();
38
+ let itemCount = 0;
39
+ let timedItemCount = 0;
40
+ let soleItemTiming;
41
+ for (const reference of references) {
42
+ if (diagnostics.length >= limits.maxDiagnostics)
43
+ break;
44
+ if (seen.has(reference.href)) {
45
+ pushPackageDiagnostic(diagnostics, "package.item.reference.duplicate", "warning", `Package item ${reference.href} is referenced more than once.`, reference.href);
46
+ continue;
47
+ }
48
+ seen.add(reference.href);
49
+ const entry = await read(reference.href);
50
+ if (!entry)
51
+ continue;
52
+ const item = parsePackageItem(reference, entry, undefined, diagnostics);
53
+ if (item.title !== undefined && titleItems.length === 0) {
54
+ titleItems.push({ title: item.title });
55
+ }
56
+ if (item.timing !== undefined) {
57
+ timedItemCount += 1;
58
+ soleItemTiming = item.timing;
59
+ }
60
+ itemStandards.push(...item.standards);
61
+ assetItems.push({
62
+ href: item.href,
63
+ manifestResourceIdentifier: item.manifestResourceIdentifier,
64
+ assetHrefs: item.assetHrefs,
65
+ });
66
+ yield { kind: "item", index: itemCount++, item };
67
+ }
68
+ enforceDiagnosticLimit(diagnostics, limits.maxDiagnostics);
69
+ yield {
70
+ kind: "summary",
71
+ summary: buildPackageSummary({
72
+ manifestRoot: manifest.manifestRoot,
73
+ manifestResources: manifest.manifestResources,
74
+ resourcesByIdentifier: manifest.resourcesByIdentifier,
75
+ packageShape: manifest.packageShape,
76
+ assessmentTest,
77
+ assetItems,
78
+ titleItems,
79
+ timedItemCount,
80
+ soleItemTiming,
81
+ itemStandards,
82
+ entriesByPath: inventory,
83
+ diagnostics,
84
+ itemCount,
85
+ }),
86
+ };
87
+ }
88
+ function createEntryReader(source, inventory, limits, diagnostics) {
89
+ return async (path) => {
90
+ const size = inventory.get(path);
91
+ if (size === undefined)
92
+ return undefined;
93
+ try {
94
+ const bytes = await source.readEntry(path, limits.maxEntryBytes);
95
+ if (!(bytes instanceof Uint8Array) || bytes.byteLength !== size) {
96
+ pushPackageDiagnostic(diagnostics, "package.entry.size", "error", "Package entry size does not match its immutable inventory.", path);
97
+ return undefined;
98
+ }
99
+ return { path, bytes };
100
+ }
101
+ catch {
102
+ pushPackageDiagnostic(diagnostics, "package.entry.read", "error", "Package entry could not be read.", path);
103
+ return undefined;
104
+ }
105
+ };
106
+ }
107
+ function inspectInventory(source, limits, diagnostics) {
108
+ if (!validStreamLimits(limits)) {
109
+ pushPackageDiagnostic(diagnostics, "package.limits.invalid", "error", "Package limits must be positive safe integers.");
110
+ return undefined;
111
+ }
112
+ if (source.entries.length > limits.maxEntries) {
113
+ pushPackageDiagnostic(diagnostics, "package.entries.limit", "error", "Package contains more entries than allowed.");
114
+ return undefined;
115
+ }
116
+ const inventory = new Map();
117
+ let total = 0;
118
+ for (const entry of source.entries) {
119
+ const path = normalizePackagePath(entry.path, "entry", diagnostics);
120
+ if (!path)
121
+ return undefined;
122
+ if (path !== entry.path || inventory.has(path)) {
123
+ pushPackageDiagnostic(diagnostics, "package.entry.duplicate", "error", "Package inventory paths must be unique and canonical.", entry.path);
124
+ return undefined;
125
+ }
126
+ total += entry.size;
127
+ if (!Number.isSafeInteger(entry.size) ||
128
+ entry.size < 0 ||
129
+ entry.size > limits.maxEntryBytes ||
130
+ !Number.isSafeInteger(total) ||
131
+ total > limits.maxTotalBytes) {
132
+ pushPackageDiagnostic(diagnostics, "package.bytes.limit", "error", "Package entry or total size exceeds its configured budget.", path);
133
+ return undefined;
134
+ }
135
+ inventory.set(path, entry.size);
136
+ }
137
+ return inventory;
138
+ }
139
+ function validStreamLimits(limits) {
140
+ return (Number.isSafeInteger(limits.maxEntries) &&
141
+ limits.maxEntries > 0 &&
142
+ Number.isSafeInteger(limits.maxEntryBytes) &&
143
+ limits.maxEntryBytes > 0 &&
144
+ Number.isSafeInteger(limits.maxTotalBytes) &&
145
+ limits.maxTotalBytes > 0 &&
146
+ Number.isSafeInteger(limits.maxDiagnostics) &&
147
+ limits.maxDiagnostics > 0);
148
+ }
149
+ //# sourceMappingURL=qti-package-stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qti-package-stream.js","sourceRoot":"","sources":["../src/qti-package-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,+BAA+B,EAC/B,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,GAEvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAErF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AA2BvD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,qBAAqB,CAC1C,MAAwB,EACxB,MAA8B;IAE9B,MAAM,WAAW,GAAoB,EAAE,CAAC;IACxC,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAChE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,oBAAoB,CAAC,WAAW,CAAC,EAAE,CAAC;QACtE,OAAO;IACT,CAAC;IACD,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACvE,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,sBAAsB,CACrC,SAAS,EACT,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,EAC1D,WAAW,CACZ,CAAC;IACF,8EAA8E;IAC9E,2EAA2E;IAC3E,MAAM,WAAW,GAAG,IAAI,GAAG,EAA2B,CAAC;IACvD,MAAM,QAAQ,GAAG,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;IAC3D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,KAAK;YAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IACD,MAAM,cAAc,GAAG,+BAA+B,CACpD,QAAQ,CAAC,YAAY,EACrB,QAAQ,CAAC,uBAAuB,EAChC,WAAW,EACX,IAAI,GAAG,EAAE,EACT,WAAW,CACZ,CAAC;IACF,MAAM,UAAU,GAAG,6BAA6B,CAC9C,QAAQ,CAAC,YAAY,EACrB,QAAQ,CAAC,aAAa,EACtB,cAAc,EACd,WAAW,CACZ,CAAC;IACF,MAAM,UAAU,GACd,EAAE,CAAC;IACL,MAAM,aAAa,GAA0C,EAAE,CAAC;IAChE,MAAM,UAAU,GAAoC,EAAE,CAAC;IACvD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,cAAoD,CAAC;IACzD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,WAAW,CAAC,MAAM,IAAI,MAAM,CAAC,cAAc;YAAE,MAAM;QACvD,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,qBAAqB,CACnB,WAAW,EACX,kCAAkC,EAClC,SAAS,EACT,gBAAgB,SAAS,CAAC,IAAI,gCAAgC,EAC9D,SAAS,CAAC,IAAI,CACf,CAAC;YACF,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,MAAM,IAAI,GAAG,gBAAgB,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QACxE,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxD,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,cAAc,IAAI,CAAC,CAAC;YACpB,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;QAC/B,CAAC;QACD,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;QACtC,UAAU,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,0BAA0B,EAAE,IAAI,CAAC,0BAA0B;YAC3D,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC;IACnD,CAAC;IACD,sBAAsB,CAAC,WAAW,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;IAC3D,MAAM;QACJ,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,mBAAmB,CAAC;YAC3B,YAAY,EAAE,QAAQ,CAAC,YAAY;YACnC,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;YAC7C,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB;YACrD,YAAY,EAAE,QAAQ,CAAC,YAAY;YACnC,cAAc;YACd,UAAU;YACV,UAAU;YACV,cAAc;YACd,cAAc;YACd,aAAa;YACb,aAAa,EAAE,SAAS;YACxB,WAAW;YACX,SAAS;SACV,CAAC;KACH,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,MAAwB,EACxB,SAAsC,EACtC,MAA8B,EAC9B,WAA4B;IAE5B,OAAO,KAAK,EAAE,IAAI,EAAE,EAAE;QACpB,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QACzC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;YACjE,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;gBAChE,qBAAqB,CACnB,WAAW,EACX,oBAAoB,EACpB,OAAO,EACP,4DAA4D,EAC5D,IAAI,CACL,CAAC;gBACF,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,qBAAqB,CACnB,WAAW,EACX,oBAAoB,EACpB,OAAO,EACP,kCAAkC,EAClC,IAAI,CACL,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,MAAwB,EACxB,MAA8B,EAC9B,WAA4B;IAE5B,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,qBAAqB,CACnB,WAAW,EACX,wBAAwB,EACxB,OAAO,EACP,gDAAgD,CACjD,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QAC9C,qBAAqB,CACnB,WAAW,EACX,uBAAuB,EACvB,OAAO,EACP,6CAA6C,CAC9C,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QACpE,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/C,qBAAqB,CACnB,WAAW,EACX,yBAAyB,EACzB,OAAO,EACP,uDAAuD,EACvD,KAAK,CAAC,IAAI,CACX,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC;QACpB,IACE,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC;YACjC,KAAK,CAAC,IAAI,GAAG,CAAC;YACd,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,aAAa;YACjC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;YAC5B,KAAK,GAAG,MAAM,CAAC,aAAa,EAC5B,CAAC;YACD,qBAAqB,CACnB,WAAW,EACX,qBAAqB,EACrB,OAAO,EACP,4DAA4D,EAC5D,IAAI,CACL,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,iBAAiB,CAAC,MAA8B;IACvD,OAAO,CACL,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC;QACvC,MAAM,CAAC,UAAU,GAAG,CAAC;QACrB,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC;QAC1C,MAAM,CAAC,aAAa,GAAG,CAAC;QACxB,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC;QAC1C,MAAM,CAAC,aAAa,GAAG,CAAC;QACxB,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,cAAc,CAAC;QAC3C,MAAM,CAAC,cAAc,GAAG,CAAC,CAC1B,CAAC;AACJ,CAAC"}
@@ -11,8 +11,10 @@ export interface PackageXmlFile {
11
11
  export declare function parseXmlFiles(entriesByPath: ReadonlyMap<string, QtiPackageEntry>): Map<string, PackageXmlFile>;
12
12
  export declare function parsePackageXml(entry: QtiPackageEntry): PackageXmlFile;
13
13
  export declare function pushXmlDiagnostics(xmlFile: PackageXmlFile, diagnostics: QtiDiagnostic[]): void;
14
- export declare function childPackageElements(node: QtiPackageXmlNode, localName?: string): QtiPackageXmlNode[];
15
- export declare function packageDescendants(node: QtiPackageXmlNode | undefined, localName?: string): QtiPackageXmlNode[];
14
+ /** Return direct package-XML children, optionally restricted by local name and namespace. */
15
+ export declare function childPackageElements(node: QtiPackageXmlNode, localName?: string, namespaceUri?: string): QtiPackageXmlNode[];
16
+ /** Return package-XML descendants, optionally restricted by local name and namespace. */
17
+ export declare function packageDescendants(node: QtiPackageXmlNode | undefined, localName?: string, namespaceUri?: string): QtiPackageXmlNode[];
16
18
  export declare function resolvePackageHref(from: string, href: string, diagnostics: QtiDiagnostic[]): string | undefined;
17
19
  export declare function stripHrefSuffix(href: string): string;
18
20
  export declare function isPackageRelativeHref(href: string | undefined): href is string;
@@ -1 +1 @@
1
- {"version":3,"file":"qti-package-xml.d.ts","sourceRoot":"","sources":["../src/qti-package-xml.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAElF,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,qEAAqE;AACrE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,wBAAgB,aAAa,CAC3B,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,GAClD,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAO7B;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,cAAc,CAStE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,IAAI,CAI9F;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,iBAAiB,EACvB,SAAS,CAAC,EAAE,MAAM,GACjB,iBAAiB,EAAE,CAErB;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,iBAAiB,GAAG,SAAS,EACnC,SAAS,CAAC,EAAE,MAAM,GACjB,iBAAiB,EAAE,CAQrB;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,aAAa,EAAE,GAC3B,MAAM,GAAG,SAAS,CAIpB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,IAAI,MAAM,CAI9E;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,aAAa,GACxB,aAAa,CASf"}
1
+ {"version":3,"file":"qti-package-xml.d.ts","sourceRoot":"","sources":["../src/qti-package-xml.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAElF,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,qEAAqE;AACrE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,wBAAgB,aAAa,CAC3B,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAAC,GAClD,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAO7B;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,cAAc,CAStE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,IAAI,CAI9F;AAED,6FAA6F;AAC7F,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,iBAAiB,EACvB,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,GACpB,iBAAiB,EAAE,CAMrB;AAED,yFAAyF;AACzF,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,iBAAiB,GAAG,SAAS,EACnC,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,GACpB,iBAAiB,EAAE,CAarB;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,aAAa,EAAE,GAC3B,MAAM,GAAG,SAAS,CAIpB;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,IAAI,MAAM,CAI9E;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,aAAa,GACxB,aAAa,CASf"}
@@ -25,17 +25,22 @@ export function pushXmlDiagnostics(xmlFile, diagnostics) {
25
25
  pushPackageDiagnostic(diagnostics, "xml.parse", "error", message, xmlFile.path);
26
26
  }
27
27
  }
28
- export function childPackageElements(node, localName) {
29
- return node.children.filter((child) => !localName || child.localName === localName);
28
+ /** Return direct package-XML children, optionally restricted by local name and namespace. */
29
+ export function childPackageElements(node, localName, namespaceUri) {
30
+ return node.children.filter((child) => (!localName || child.localName === localName) &&
31
+ (namespaceUri === undefined || child.uri === namespaceUri));
30
32
  }
31
- export function packageDescendants(node, localName) {
33
+ /** Return package-XML descendants, optionally restricted by local name and namespace. */
34
+ export function packageDescendants(node, localName, namespaceUri) {
32
35
  if (!node)
33
36
  return [];
34
37
  const found = [];
35
38
  for (const child of node.children) {
36
- if (!localName || child.localName === localName)
39
+ if ((!localName || child.localName === localName) &&
40
+ (namespaceUri === undefined || child.uri === namespaceUri)) {
37
41
  found.push(child);
38
- found.push(...packageDescendants(child, localName));
42
+ }
43
+ found.push(...packageDescendants(child, localName, namespaceUri));
39
44
  }
40
45
  return found;
41
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"qti-package-xml.js","sourceRoot":"","sources":["../src/qti-package-xml.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"qti-package-xml.js","sourceRoot":"","sources":["../src/qti-package-xml.ts"],"names":[],"mappings":"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"}
@@ -5,12 +5,28 @@ export interface QtiPackageInflateContext {
5
5
  readonly compressedSize: number;
6
6
  readonly uncompressedSize: number;
7
7
  readonly compressionMethod: number;
8
+ /** Maximum output bytes the inflater may materialize for this entry. */
9
+ readonly maxOutputLength: number;
8
10
  }
9
- /** Optional raw DEFLATE inflater for ZIP entries compressed with method 8. */
11
+ /**
12
+ * Optional raw DEFLATE inflater for ZIP entries compressed with method 8.
13
+ * Implementations must enforce `context.maxOutputLength` while expanding input.
14
+ */
10
15
  export type QtiPackageInflateRaw = (bytes: Uint8Array, context: QtiPackageInflateContext) => Uint8Array;
16
+ /** Resource budgets applied before and after QTI package entry expansion. */
17
+ export interface QtiPackageResourceLimits {
18
+ readonly maxEntries: number;
19
+ readonly maxEntryUncompressedBytes: number;
20
+ readonly maxTotalUncompressedBytes: number;
21
+ readonly maxCompressionRatio: number;
22
+ }
23
+ /** Conservative default budgets for untrusted QTI package ZIP input. */
24
+ export declare const DEFAULT_QTI_PACKAGE_RESOURCE_LIMITS: QtiPackageResourceLimits;
11
25
  /** Options for parsing a QTI ZIP package. */
12
26
  export interface QtiPackageParseOptions {
13
27
  readonly inflateRaw?: QtiPackageInflateRaw | undefined;
28
+ /** Overrides for the default package resource budgets. */
29
+ readonly limits?: Partial<QtiPackageResourceLimits> | undefined;
14
30
  }
15
31
  /** Decoded ZIP entry from a QTI package. */
16
32
  export interface QtiPackageEntry {
@@ -1 +1 @@
1
- {"version":3,"file":"qti-package-zip.d.ts","sourceRoot":"","sources":["../src/qti-package-zip.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,6DAA6D;AAC7D,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED,8EAA8E;AAC9E,MAAM,MAAM,oBAAoB,GAAG,CACjC,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,wBAAwB,KAC9B,UAAU,CAAC;AAEhB,6CAA6C;AAC7C,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAC;CACxD;AAED,4CAA4C;AAC5C,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC5B;AAED,8FAA8F;AAC9F,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,sBAAsB,EAC/B,WAAW,EAAE,aAAa,EAAE,GAC3B,eAAe,EAAE,CAYnB;AAKD,yDAAyD;AACzD,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAoBpD"}
1
+ {"version":3,"file":"qti-package-zip.d.ts","sourceRoot":"","sources":["../src/qti-package-zip.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,6DAA6D;AAC7D,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,wEAAwE;IACxE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,CACjC,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,wBAAwB,KAC9B,UAAU,CAAC;AAEhB,6EAA6E;AAC7E,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;IAC3C,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AAED,wEAAwE;AACxE,eAAO,MAAM,mCAAmC,EAAE,wBAKhD,CAAC;AAEH,6CAA6C;AAC7C,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAC;IACvD,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC,GAAG,SAAS,CAAC;CACjE;AAED,4CAA4C;AAC5C,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC5B;AAED,8FAA8F;AAC9F,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,sBAAsB,EAC/B,WAAW,EAAE,aAAa,EAAE,GAC3B,eAAe,EAAE,CAYnB;AAKD,yDAAyD;AACzD,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAoBpD"}