@lxpack/runtime 0.1.1 → 0.2.1

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 (52) hide show
  1. package/README.md +67 -11
  2. package/dist/client.js +2250 -1673
  3. package/dist/core/completion-evaluator.d.ts +13 -0
  4. package/dist/core/completion-evaluator.d.ts.map +1 -0
  5. package/dist/core/progress-state.d.ts +20 -0
  6. package/dist/core/progress-state.d.ts.map +1 -0
  7. package/dist/flow-conditions.d.ts +4 -0
  8. package/dist/flow-conditions.d.ts.map +1 -0
  9. package/dist/flow.d.ts +14 -0
  10. package/dist/flow.d.ts.map +1 -0
  11. package/dist/lms/bridge.d.ts +11 -0
  12. package/dist/lms/bridge.d.ts.map +1 -0
  13. package/dist/lms/completion-state.d.ts +10 -0
  14. package/dist/lms/completion-state.d.ts.map +1 -0
  15. package/dist/lms/factory.d.ts +5 -0
  16. package/dist/lms/factory.d.ts.map +1 -0
  17. package/dist/lms/local-bridge.d.ts +15 -0
  18. package/dist/lms/local-bridge.d.ts.map +1 -0
  19. package/dist/lms/scorm12-bridge.d.ts +15 -0
  20. package/dist/lms/scorm12-bridge.d.ts.map +1 -0
  21. package/dist/lms/scorm2004-bridge.d.ts +15 -0
  22. package/dist/lms/scorm2004-bridge.d.ts.map +1 -0
  23. package/dist/{progress-persist.d.ts → progress/codec.d.ts} +2 -3
  24. package/dist/progress/codec.d.ts.map +1 -0
  25. package/dist/progress/constants.d.ts +3 -0
  26. package/dist/progress/constants.d.ts.map +1 -0
  27. package/dist/progress/size-policy.d.ts +4 -0
  28. package/dist/progress/size-policy.d.ts.map +1 -0
  29. package/dist/quiz/host.d.ts +9 -0
  30. package/dist/quiz/host.d.ts.map +1 -0
  31. package/dist/quiz/score.d.ts +6 -0
  32. package/dist/quiz/score.d.ts.map +1 -0
  33. package/dist/runtime.d.ts +13 -12
  34. package/dist/runtime.d.ts.map +1 -1
  35. package/dist/runtime.js +288 -377
  36. package/dist/scorm-api.d.ts +1 -1
  37. package/dist/scorm-api.d.ts.map +1 -1
  38. package/dist/scorm12-DpGWvsHb.js +375 -0
  39. package/dist/scorm12.d.ts +3 -0
  40. package/dist/scorm12.d.ts.map +1 -0
  41. package/dist/scorm12.js +11 -0
  42. package/dist/scorm2004-api.d.ts +57 -0
  43. package/dist/scorm2004-api.d.ts.map +1 -0
  44. package/dist/scorm2004.d.ts +2 -0
  45. package/dist/scorm2004.d.ts.map +1 -0
  46. package/dist/scorm2004.js +153 -0
  47. package/dist/types.d.ts +5 -2
  48. package/dist/types.d.ts.map +1 -1
  49. package/dist/variables.d.ts +7 -0
  50. package/dist/variables.d.ts.map +1 -0
  51. package/package.json +11 -3
  52. package/dist/progress-persist.d.ts.map +0 -1
@@ -0,0 +1,13 @@
1
+ import type { CourseManifest } from "@lxpack/validators";
2
+ import type { AssessmentRuntimeConfig } from "@lxpack/validators";
3
+ import type { CourseProgress } from "../types.js";
4
+ import type { CompletionState } from "../lms/completion-state.js";
5
+ export interface CompletionEvaluatorOptions {
6
+ manifest: CourseManifest;
7
+ completionThreshold: number;
8
+ assessmentConfigs: Record<string, AssessmentRuntimeConfig>;
9
+ defaultPassingScores: Record<string, number>;
10
+ passedAssessments: Set<string>;
11
+ }
12
+ export declare function buildCompletionState(progress: CourseProgress, options: CompletionEvaluatorOptions): CompletionState;
13
+ //# sourceMappingURL=completion-evaluator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion-evaluator.d.ts","sourceRoot":"","sources":["../../src/core/completion-evaluator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAGlE,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,cAAc,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IAC3D,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAChC;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,0BAA0B,GAClC,eAAe,CAoCjB"}
@@ -0,0 +1,20 @@
1
+ import type { CourseManifest } from "@lxpack/validators";
2
+ import type { CourseProgress } from "../types.js";
3
+ export declare class ProgressState {
4
+ private readonly manifest;
5
+ private readonly defaultPassingScores;
6
+ progress: CourseProgress;
7
+ readonly passedAssessments: Set<string>;
8
+ constructor(initial: CourseProgress, manifest: CourseManifest, defaultPassingScores: Record<string, number>);
9
+ private getAssessmentPassingScore;
10
+ syncPassedAssessments(): void;
11
+ applyAssessmentResult(assessmentId: string, score: number, passingScore: number): void;
12
+ recordAssessmentAttempt(assessmentId: string): number;
13
+ getAssessmentAttemptCount(assessmentId: string): number;
14
+ completeLesson(lessonId: string): void;
15
+ setCurrentLesson(lessonId: string): void;
16
+ isLessonComplete(lessonId: string): boolean;
17
+ isAssessmentPassed(assessmentId: string): boolean;
18
+ getAssessmentPassingScoreForTrack(assessmentId: string): number;
19
+ }
20
+ //# sourceMappingURL=progress-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress-state.d.ts","sourceRoot":"","sources":["../../src/core/progress-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,qBAAa,aAAa;IAMtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IANvC,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,CAAC,iBAAiB,cAAqB;gBAG7C,OAAO,EAAE,cAAc,EACN,QAAQ,EAAE,cAAc,EACxB,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAM/D,OAAO,CAAC,yBAAyB;IASjC,qBAAqB,IAAI,IAAI;IAS7B,qBAAqB,CACnB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,GACnB,IAAI;IAWP,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAIrD,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAIvD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQtC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIxC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI3C,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAIjD,iCAAiC,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;CAGhE"}
@@ -0,0 +1,4 @@
1
+ import type { Condition } from "@lxpack/validators";
2
+ import type { FlowContext } from "./flow.js";
3
+ export declare function evaluateCondition(condition: Condition, ctx: FlowContext): boolean;
4
+ //# sourceMappingURL=flow-conditions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-conditions.d.ts","sourceRoot":"","sources":["../src/flow-conditions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAsC7C,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,WAAW,GACf,OAAO,CAQT"}
package/dist/flow.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ import type { CourseManifest, FlowRule } from "@lxpack/validators";
2
+ export interface FlowContext {
3
+ getVariable: (name: string) => unknown;
4
+ isAssessmentPassed: (id: string) => boolean;
5
+ isInteractionDone: (id: string) => boolean;
6
+ }
7
+ export { evaluateCondition } from "./flow-conditions.js";
8
+ export declare function resolveFlowGoto(manifest: CourseManifest, ctx: FlowContext): string | null;
9
+ export declare function buildActivityOrder(manifest: CourseManifest): string[];
10
+ export declare function resolveLinearAdjacent(manifest: CourseManifest, currentId: string, direction: 1 | -1): string | null;
11
+ export declare function resolveNextActivityId(manifest: CourseManifest, currentId: string, ctx: FlowContext): string | null;
12
+ export declare function resolvePreviousActivityId(manifest: CourseManifest, currentId: string): string | null;
13
+ export type { FlowRule };
14
+ //# sourceMappingURL=flow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow.d.ts","sourceRoot":"","sources":["../src/flow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAGnE,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5C,iBAAiB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;CAC5C;AAED,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,cAAc,EACxB,GAAG,EAAE,WAAW,GACf,MAAM,GAAG,IAAI,CAUf;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,EAAE,CAMrE;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,GAChB,MAAM,GAAG,IAAI,CAMf;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,WAAW,GACf,MAAM,GAAG,IAAI,CAMf;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CAEf;AAED,YAAY,EAAE,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { CourseProgress } from "../types.js";
2
+ import type { CompletionState } from "./completion-state.js";
3
+ export interface LmsBridge {
4
+ init(): void;
5
+ restoreProgress(defaults: CourseProgress): CourseProgress;
6
+ persist(progress: CourseProgress, serialized: string): void;
7
+ setLocation(lessonId: string): void;
8
+ applyCompletion(state: CompletionState): void;
9
+ terminate(): void;
10
+ }
11
+ //# sourceMappingURL=bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/lms/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,WAAW,SAAS;IACxB,IAAI,IAAI,IAAI,CAAC;IACb,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,cAAc,CAAC;IAC1D,OAAO,CAAC,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5D,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IAC9C,SAAS,IAAI,IAAI,CAAC;CACnB"}
@@ -0,0 +1,10 @@
1
+ export interface CompletionState {
2
+ ratio: number;
3
+ scorePercent: number;
4
+ allLessonsComplete: boolean;
5
+ allAssessmentsPassed: boolean;
6
+ anyAssessmentFailed: boolean;
7
+ hasAssessments: boolean;
8
+ completionThreshold: number;
9
+ }
10
+ //# sourceMappingURL=completion-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion-state.d.ts","sourceRoot":"","sources":["../../src/lms/completion-state.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,cAAc,EAAE,OAAO,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;CAC7B"}
@@ -0,0 +1,5 @@
1
+ import type { RuntimeConfig } from "../types.js";
2
+ import type { LmsBridge } from "./bridge.js";
3
+ export declare function progressStorageKey(title: string, version: string): string;
4
+ export declare function createLmsBridge(mode: RuntimeConfig["mode"], storageKey: string): LmsBridge;
5
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/lms/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAK7C,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,MAAM,CAQR;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,EAC3B,UAAU,EAAE,MAAM,GACjB,SAAS,CAWX"}
@@ -0,0 +1,15 @@
1
+ import type { CourseProgress } from "../types.js";
2
+ import type { CompletionState } from "./completion-state.js";
3
+ import type { LmsBridge } from "./bridge.js";
4
+ /** Preview / standalone: localStorage only, no LMS CMI. */
5
+ export declare class LocalBridge implements LmsBridge {
6
+ private readonly storageKey;
7
+ constructor(storageKey: string);
8
+ init(): void;
9
+ restoreProgress(defaults: CourseProgress): CourseProgress;
10
+ persist(_progress: CourseProgress, serialized: string): void;
11
+ setLocation(_lessonId: string): void;
12
+ applyCompletion(_state: CompletionState): void;
13
+ terminate(): void;
14
+ }
15
+ //# sourceMappingURL=local-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-bridge.d.ts","sourceRoot":"","sources":["../../src/lms/local-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,2DAA2D;AAC3D,qBAAa,WAAY,YAAW,SAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,MAAM;IAE/C,IAAI,IAAI,IAAI;IAIZ,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,cAAc;IAazD,OAAO,CAAC,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAQ5D,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIpC,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAI9C,SAAS,IAAI,IAAI;CAGlB"}
@@ -0,0 +1,15 @@
1
+ import type { CourseProgress } from "../types.js";
2
+ import type { ScormConnection } from "../scorm-api.js";
3
+ import type { CompletionState } from "./completion-state.js";
4
+ import type { LmsBridge } from "./bridge.js";
5
+ export declare class Scorm12Bridge implements LmsBridge {
6
+ private readonly connection;
7
+ constructor(connection: ScormConnection);
8
+ init(): void;
9
+ restoreProgress(defaults: CourseProgress): CourseProgress;
10
+ persist(_progress: CourseProgress, serialized: string): void;
11
+ setLocation(lessonId: string): void;
12
+ applyCompletion(state: CompletionState): void;
13
+ terminate(): void;
14
+ }
15
+ //# sourceMappingURL=scorm12-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scorm12-bridge.d.ts","sourceRoot":"","sources":["../../src/lms/scorm12-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,qBAAa,aAAc,YAAW,SAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,eAAe;IAExD,IAAI,IAAI,IAAI;IAIZ,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,cAAc;IAkBzD,OAAO,CAAC,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAK5D,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAInC,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAiB7C,SAAS,IAAI,IAAI;CAGlB"}
@@ -0,0 +1,15 @@
1
+ import type { CourseProgress } from "../types.js";
2
+ import type { Scorm2004Connection } from "../scorm2004-api.js";
3
+ import type { CompletionState } from "./completion-state.js";
4
+ import type { LmsBridge } from "./bridge.js";
5
+ export declare class Scorm2004Bridge implements LmsBridge {
6
+ private readonly connection;
7
+ constructor(connection: Scorm2004Connection);
8
+ init(): void;
9
+ restoreProgress(defaults: CourseProgress): CourseProgress;
10
+ persist(_progress: CourseProgress, serialized: string): void;
11
+ setLocation(lessonId: string): void;
12
+ applyCompletion(state: CompletionState): void;
13
+ terminate(): void;
14
+ }
15
+ //# sourceMappingURL=scorm2004-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scorm2004-bridge.d.ts","sourceRoot":"","sources":["../../src/lms/scorm2004-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,qBAAa,eAAgB,YAAW,SAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,mBAAmB;IAE5D,IAAI,IAAI,IAAI;IAIZ,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,cAAc;IAkBzD,OAAO,CAAC,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAK5D,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAInC,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAkB7C,SAAS,IAAI,IAAI;CAGlB"}
@@ -1,4 +1,4 @@
1
- import type { CourseProgress } from "./types.js";
1
+ import type { CourseProgress } from "../types.js";
2
2
  interface CompactProgress {
3
3
  c?: string;
4
4
  l?: string[];
@@ -7,11 +7,10 @@ interface CompactProgress {
7
7
  }
8
8
  export declare function compactProgress(progress: CourseProgress): CompactProgress;
9
9
  export declare function expandProgress(compact: CompactProgress, defaults: CourseProgress): CourseProgress;
10
- export declare function serializeProgressForStorage(progress: CourseProgress): string;
11
10
  export declare function expandLegacyProgress(saved: Partial<CourseProgress>, defaults: CourseProgress): CourseProgress;
12
11
  export declare function parseStoredProgress(raw: string, defaults: CourseProgress): {
13
12
  progress: CourseProgress;
14
13
  parsed: boolean;
15
14
  };
16
15
  export {};
17
- //# sourceMappingURL=progress-persist.d.ts.map
16
+ //# sourceMappingURL=codec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/progress/codec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,UAAU,eAAe;IACvB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;IACb,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7B;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,eAAe,CAWzE;AAED,wBAAgB,cAAc,CAC5B,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,cAAc,GACvB,cAAc,CAahB;AAYD,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC,EAC9B,QAAQ,EAAE,cAAc,GACvB,cAAc,CAehB;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,cAAc,GACvB;IAAE,QAAQ,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAa/C"}
@@ -0,0 +1,3 @@
1
+ /** SCORM 1.2 suspend_data character limit (cmi.suspend_data). */
2
+ export declare const SCORM_SUSPEND_DATA_MAX = 4096;
3
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/progress/constants.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,eAAO,MAAM,sBAAsB,OAAO,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { CourseProgress } from "../types.js";
2
+ export declare function serializeProgressForStorage(progress: CourseProgress, maxBytes?: number): string;
3
+ export declare function trimSuspendData(data: string, maxBytes?: number): string;
4
+ //# sourceMappingURL=size-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"size-policy.d.ts","sourceRoot":"","sources":["../../src/progress/size-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAyGlD,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,cAAc,EACxB,QAAQ,SAAyB,GAChC,MAAM,CAmBR;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,QAAQ,SAAyB,GAChC,MAAM,CAmBR"}
@@ -0,0 +1,9 @@
1
+ import type { CourseProgress } from "../types.js";
2
+ /** Minimal surface for quiz UI (ISP). */
3
+ export interface AssessmentHost {
4
+ getProgress(): CourseProgress;
5
+ getAssessmentAttemptCount(assessmentId: string): number;
6
+ isAssessmentPassed(assessmentId: string): boolean;
7
+ submitAssessment(assessmentId: string, score: number, passingScore: number): void;
8
+ }
9
+ //# sourceMappingURL=host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../src/quiz/host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,yCAAyC;AACzC,MAAM,WAAW,cAAc;IAC7B,WAAW,IAAI,cAAc,CAAC;IAC9B,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;IACxD,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;IAClD,gBAAgB,CACd,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,GACnB,IAAI,CAAC;CACT"}
@@ -0,0 +1,6 @@
1
+ import type { LearnerAssessment } from "@lxpack/validators";
2
+ export declare function scoreAssessmentForm(assessment: LearnerAssessment, answerKey: Record<string, string>, form: HTMLFormElement): number;
3
+ export declare function shuffleQuestions<T>(items: T[]): T[];
4
+ export declare function getAttemptCount(suspendData: Record<string, unknown>, assessmentId: string): number;
5
+ export declare function incrementAttemptCount(suspendData: Record<string, unknown>, assessmentId: string): number;
6
+ //# sourceMappingURL=score.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"score.d.ts","sourceRoot":"","sources":["../../src/quiz/score.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,iBAAiB,EAC7B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,IAAI,EAAE,eAAe,GACpB,MAAM,CAYR;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAOnD;AAED,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,YAAY,EAAE,MAAM,GACnB,MAAM,CAOR;AAED,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,YAAY,EAAE,MAAM,GACnB,MAAM,CAIR"}
package/dist/runtime.d.ts CHANGED
@@ -1,25 +1,21 @@
1
1
  import type { CourseManifest, CourseProgress, LxpackAPI, RuntimeConfig, TrackEvent } from "./types.js";
2
- export declare class LxpackRuntime {
2
+ import type { FlowContext } from "./flow.js";
3
+ import type { AssessmentHost } from "./quiz/host.js";
4
+ export declare class LxpackRuntime implements AssessmentHost {
3
5
  private manifest;
4
- private progress;
5
- private scorm;
6
+ private state;
7
+ private bridge;
6
8
  private completionThreshold;
7
- private storageKey;
8
- private mode;
9
- private passedAssessments;
9
+ private assessmentConfigs;
10
10
  private defaultPassingScores;
11
11
  private terminated;
12
12
  constructor(config: RuntimeConfig);
13
- private restoreLessonLocation;
14
- private restoreScormProgress;
15
- private restoreLocalProgress;
16
- private syncPassedAssessments;
17
- private getAssessmentPassingScore;
18
13
  getAPI(): LxpackAPI;
19
14
  track(event: TrackEvent, options?: {
20
15
  persist?: boolean;
21
16
  }): void;
22
- private applyAssessmentResult;
17
+ recordAssessmentAttempt(assessmentId: string): number;
18
+ getAssessmentAttemptCount(assessmentId: string): number;
23
19
  submitAssessment(assessmentId: string, score: number, passingScore: number): void;
24
20
  completeLesson(lessonId: string): void;
25
21
  setCurrentLesson(lessonId: string): void;
@@ -31,8 +27,13 @@ export declare class LxpackRuntime {
31
27
  getCompletionRatio(): number;
32
28
  private updateCompletion;
33
29
  private persist;
30
+ getFlowContext(): FlowContext;
31
+ resolveFlowNavigation(): string | null;
34
32
  terminate(): void;
35
33
  }
36
34
  export { createScormConnection, findLmsApi, Scorm12Adapter, Scorm12Simulator, Scorm12API, installScormAPI, trimSuspendData, } from "./scorm-api.js";
35
+ export { SCORM_SUSPEND_DATA_MAX } from "./progress/constants.js";
37
36
  export type { CourseManifest, CourseProgress, LxpackAPI, RuntimeConfig, TrackEvent };
37
+ export type { LmsBridge } from "./lms/bridge.js";
38
+ export type { AssessmentHost } from "./quiz/host.js";
38
39
  //# sourceMappingURL=runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,SAAS,EACT,aAAa,EACb,UAAU,EACX,MAAM,YAAY,CAAC;AAoBpB,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,IAAI,CAAwB;IACpC,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,oBAAoB,CAAyB;IACrD,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,EAAE,aAAa;IA4BjC,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,oBAAoB;IAkB5B,OAAO,CAAC,oBAAoB;IAiB5B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,yBAAyB;IASjC,MAAM,IAAI,SAAS;IAoBnB,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IA2B/D,OAAO,CAAC,qBAAqB;IAe7B,gBAAgB,CACd,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,GACnB,IAAI;IAMP,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAWtC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQxC,WAAW,IAAI,cAAc;IAI7B,WAAW,IAAI,cAAc;IAI7B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI3C,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAIjD,aAAa,IAAI,MAAM;IAKvB,kBAAkB,IAAI,MAAM;IAc5B,OAAO,CAAC,gBAAgB;IAkCxB,OAAO,CAAC,OAAO;IAiBf,SAAS,IAAI,IAAI;CAOlB;AAED,OAAO,EACL,qBAAqB,EACrB,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,eAAe,GAChB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,SAAS,EACT,aAAa,EACb,UAAU,EACX,MAAM,YAAY,CAAC;AAOpB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAO7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,iBAAiB,CAA0C;IACnE,OAAO,CAAC,oBAAoB,CAAyB;IACrD,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,EAAE,aAAa;IA0CjC,MAAM,IAAI,SAAS;IAwBnB,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI;IA2B/D,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAIrD,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAIvD,gBAAgB,CACd,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,GACnB,IAAI;IAOP,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMtC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAMxC,WAAW,IAAI,cAAc;IAU7B,WAAW,IAAI,cAAc;IAI7B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI3C,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAIjD,aAAa,IAAI,MAAM;IAKvB,kBAAkB,IAAI,MAAM;IAU5B,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,OAAO;IAKf,cAAc,IAAI,WAAW;IAU7B,qBAAqB,IAAI,MAAM,GAAG,IAAI;IAItC,SAAS,IAAI,IAAI;CAKlB;AAED,OAAO,EACL,qBAAqB,EACrB,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,eAAe,GAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;AACrF,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}