scorm-again 2.0.0 → 2.1.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/.github/workflows/stale.yml +14 -0
- package/.run/{Mocha Unit Tests.run.xml → Mocha Unit Tests (watch).run.xml } +1 -1
- package/.run/Template Mocha.run.xml +17 -0
- package/README.md +171 -72
- package/dist/aicc.js +1441 -1140
- package/dist/aicc.js.map +1 -1
- package/dist/aicc.min.js +1 -1
- package/dist/aicc.min.js.map +1 -1
- package/dist/scorm-again.js +2703 -2212
- package/dist/scorm-again.js.map +1 -1
- package/dist/scorm-again.min.js +1 -1
- package/dist/scorm-again.min.js.map +1 -1
- package/dist/scorm12.js +1069 -852
- package/dist/scorm12.js.map +1 -1
- package/dist/scorm12.min.js +1 -1
- package/dist/scorm12.min.js.map +1 -1
- package/dist/scorm2004.js +1861 -1571
- package/dist/scorm2004.js.map +1 -1
- package/dist/scorm2004.min.js +1 -1
- package/dist/scorm2004.min.js.map +1 -1
- package/package.json +10 -6
- package/src/AICC.ts +15 -17
- package/src/BaseAPI.ts +268 -417
- package/src/Scorm12API.ts +65 -38
- package/src/Scorm2004API.ts +151 -117
- package/src/cmi/aicc/attempts.ts +94 -0
- package/src/cmi/aicc/cmi.ts +100 -0
- package/src/cmi/aicc/core.ts +360 -0
- package/src/cmi/aicc/evaluation.ts +157 -0
- package/src/cmi/aicc/paths.ts +180 -0
- package/src/cmi/aicc/student_data.ts +86 -0
- package/src/cmi/aicc/student_demographics.ts +367 -0
- package/src/cmi/aicc/student_preferences.ts +176 -0
- package/src/cmi/aicc/tries.ts +116 -0
- package/src/cmi/aicc/validation.ts +25 -0
- package/src/cmi/common/array.ts +77 -0
- package/src/cmi/common/base_cmi.ts +46 -0
- package/src/cmi/common/score.ts +203 -0
- package/src/cmi/common/validation.ts +60 -0
- package/src/cmi/scorm12/cmi.ts +224 -0
- package/src/cmi/scorm12/interactions.ts +368 -0
- package/src/cmi/scorm12/nav.ts +54 -0
- package/src/cmi/scorm12/objectives.ts +112 -0
- package/src/cmi/scorm12/student_data.ts +130 -0
- package/src/cmi/scorm12/student_preference.ts +158 -0
- package/src/cmi/scorm12/validation.ts +48 -0
- package/src/cmi/scorm2004/adl.ts +272 -0
- package/src/cmi/scorm2004/cmi.ts +599 -0
- package/src/cmi/scorm2004/comments.ts +163 -0
- package/src/cmi/scorm2004/interactions.ts +466 -0
- package/src/cmi/scorm2004/learner_preference.ts +152 -0
- package/src/cmi/scorm2004/objectives.ts +212 -0
- package/src/cmi/scorm2004/score.ts +78 -0
- package/src/cmi/scorm2004/validation.ts +42 -0
- package/src/constants/default_settings.ts +81 -0
- package/src/constants/enums.ts +5 -0
- package/src/constants/regex.ts +2 -2
- package/src/constants/response_constants.ts +2 -0
- package/src/exceptions.ts +22 -1
- package/src/helpers/scheduled_commit.ts +42 -0
- package/src/interfaces/IBaseAPI.ts +35 -0
- package/src/types/api_types.ts +32 -0
- package/src/utilities/debounce.ts +31 -0
- package/src/utilities.ts +56 -0
- package/test/AICC.spec.ts +11 -1
- package/test/Scorm12API.spec.ts +262 -9
- package/test/Scorm2004API.spec.ts +488 -2
- package/test/cmi/aicc_cmi.spec.ts +188 -11
- package/test/cmi/scorm12_cmi.spec.ts +5 -5
- package/test/cmi/scorm2004_cmi.spec.ts +8 -8
- package/test/cmi_helpers.ts +1 -1
- package/test/types/api_types.spec.ts +126 -0
- package/test/utilities/debounce.spec.ts +56 -0
- package/src/cmi/aicc_cmi.ts +0 -1248
- package/src/cmi/common.ts +0 -411
- package/src/cmi/scorm12_cmi.ts +0 -1426
- package/src/cmi/scorm2004_cmi.ts +0 -1874
package/dist/scorm12.js
CHANGED
|
@@ -381,9 +381,88 @@ function __disposeResources(env) {
|
|
|
381
381
|
__disposeResources,
|
|
382
382
|
});
|
|
383
383
|
|
|
384
|
-
;// ./src/
|
|
384
|
+
;// ./src/cmi/common/base_cmi.ts
|
|
385
|
+
|
|
386
|
+
var BaseCMI = (function () {
|
|
387
|
+
function BaseCMI() {
|
|
388
|
+
this.jsonString = false;
|
|
389
|
+
this._initialized = false;
|
|
390
|
+
}
|
|
391
|
+
Object.defineProperty(BaseCMI.prototype, "initialized", {
|
|
392
|
+
get: function () {
|
|
393
|
+
return this._initialized;
|
|
394
|
+
},
|
|
395
|
+
enumerable: false,
|
|
396
|
+
configurable: true
|
|
397
|
+
});
|
|
398
|
+
Object.defineProperty(BaseCMI.prototype, "start_time", {
|
|
399
|
+
get: function () {
|
|
400
|
+
return this._start_time;
|
|
401
|
+
},
|
|
402
|
+
enumerable: false,
|
|
403
|
+
configurable: true
|
|
404
|
+
});
|
|
405
|
+
BaseCMI.prototype.initialize = function () {
|
|
406
|
+
this._initialized = true;
|
|
407
|
+
};
|
|
408
|
+
BaseCMI.prototype.setStartTime = function () {
|
|
409
|
+
this._start_time = new Date().getTime();
|
|
410
|
+
};
|
|
411
|
+
return BaseCMI;
|
|
412
|
+
}());
|
|
413
|
+
|
|
414
|
+
var BaseRootCMI = (function (_super) {
|
|
415
|
+
__extends(BaseRootCMI, _super);
|
|
416
|
+
function BaseRootCMI() {
|
|
417
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
418
|
+
}
|
|
419
|
+
return BaseRootCMI;
|
|
420
|
+
}(BaseCMI));
|
|
421
|
+
|
|
422
|
+
|
|
423
|
+
;// ./src/constants/error_codes.ts
|
|
385
424
|
|
|
386
425
|
var global = {
|
|
426
|
+
GENERAL: 101,
|
|
427
|
+
INITIALIZATION_FAILED: 101,
|
|
428
|
+
INITIALIZED: 101,
|
|
429
|
+
TERMINATED: 101,
|
|
430
|
+
TERMINATION_FAILURE: 101,
|
|
431
|
+
TERMINATION_BEFORE_INIT: 101,
|
|
432
|
+
MULTIPLE_TERMINATION: 101,
|
|
433
|
+
RETRIEVE_BEFORE_INIT: 101,
|
|
434
|
+
RETRIEVE_AFTER_TERM: 101,
|
|
435
|
+
STORE_BEFORE_INIT: 101,
|
|
436
|
+
STORE_AFTER_TERM: 101,
|
|
437
|
+
COMMIT_BEFORE_INIT: 101,
|
|
438
|
+
COMMIT_AFTER_TERM: 101,
|
|
439
|
+
ARGUMENT_ERROR: 101,
|
|
440
|
+
CHILDREN_ERROR: 101,
|
|
441
|
+
COUNT_ERROR: 101,
|
|
442
|
+
GENERAL_GET_FAILURE: 101,
|
|
443
|
+
GENERAL_SET_FAILURE: 101,
|
|
444
|
+
GENERAL_COMMIT_FAILURE: 101,
|
|
445
|
+
UNDEFINED_DATA_MODEL: 101,
|
|
446
|
+
UNIMPLEMENTED_ELEMENT: 101,
|
|
447
|
+
VALUE_NOT_INITIALIZED: 101,
|
|
448
|
+
INVALID_SET_VALUE: 101,
|
|
449
|
+
READ_ONLY_ELEMENT: 101,
|
|
450
|
+
WRITE_ONLY_ELEMENT: 101,
|
|
451
|
+
TYPE_MISMATCH: 101,
|
|
452
|
+
VALUE_OUT_OF_RANGE: 101,
|
|
453
|
+
DEPENDENCY_NOT_ESTABLISHED: 101,
|
|
454
|
+
};
|
|
455
|
+
var scorm12 = __assign(__assign({}, global), { RETRIEVE_BEFORE_INIT: 301, STORE_BEFORE_INIT: 301, COMMIT_BEFORE_INIT: 301, ARGUMENT_ERROR: 201, CHILDREN_ERROR: 202, COUNT_ERROR: 203, UNDEFINED_DATA_MODEL: 401, UNIMPLEMENTED_ELEMENT: 401, VALUE_NOT_INITIALIZED: 301, INVALID_SET_VALUE: 402, READ_ONLY_ELEMENT: 403, WRITE_ONLY_ELEMENT: 404, TYPE_MISMATCH: 405, VALUE_OUT_OF_RANGE: 407, DEPENDENCY_NOT_ESTABLISHED: 408 });
|
|
456
|
+
var scorm2004 = __assign(__assign({}, global), { INITIALIZATION_FAILED: 102, INITIALIZED: 103, TERMINATED: 104, TERMINATION_FAILURE: 111, TERMINATION_BEFORE_INIT: 112, MULTIPLE_TERMINATIONS: 113, RETRIEVE_BEFORE_INIT: 122, RETRIEVE_AFTER_TERM: 123, STORE_BEFORE_INIT: 132, STORE_AFTER_TERM: 133, COMMIT_BEFORE_INIT: 142, COMMIT_AFTER_TERM: 143, ARGUMENT_ERROR: 201, GENERAL_GET_FAILURE: 301, GENERAL_SET_FAILURE: 351, GENERAL_COMMIT_FAILURE: 391, UNDEFINED_DATA_MODEL: 401, UNIMPLEMENTED_ELEMENT: 402, VALUE_NOT_INITIALIZED: 403, READ_ONLY_ELEMENT: 404, WRITE_ONLY_ELEMENT: 405, TYPE_MISMATCH: 406, VALUE_OUT_OF_RANGE: 407, DEPENDENCY_NOT_ESTABLISHED: 408 });
|
|
457
|
+
var ErrorCodes = {
|
|
458
|
+
scorm12: scorm12,
|
|
459
|
+
scorm2004: scorm2004,
|
|
460
|
+
};
|
|
461
|
+
/* harmony default export */ var error_codes = (ErrorCodes);
|
|
462
|
+
|
|
463
|
+
;// ./src/constants/api_constants.ts
|
|
464
|
+
|
|
465
|
+
var api_constants_global = {
|
|
387
466
|
SCORM_TRUE: "true",
|
|
388
467
|
SCORM_FALSE: "false",
|
|
389
468
|
STATE_NOT_INITIALIZED: 0,
|
|
@@ -395,7 +474,7 @@ var global = {
|
|
|
395
474
|
LOG_LEVEL_ERROR: 4,
|
|
396
475
|
LOG_LEVEL_NONE: 5,
|
|
397
476
|
};
|
|
398
|
-
var
|
|
477
|
+
var api_constants_scorm12 = {
|
|
399
478
|
cmi_children: "core,suspend_data,launch_data,comments,objectives,student_data,student_preference,interactions",
|
|
400
479
|
core_children: "student_id,student_name,lesson_location,credit,lesson_status,entry,score,total_time,lesson_mode,exit,session_time",
|
|
401
480
|
score_children: "raw,min,max",
|
|
@@ -456,7 +535,7 @@ var scorm12 = {
|
|
|
456
535
|
},
|
|
457
536
|
},
|
|
458
537
|
};
|
|
459
|
-
var aicc = __assign(__assign({},
|
|
538
|
+
var aicc = __assign(__assign({}, api_constants_scorm12), {
|
|
460
539
|
cmi_children: "core,suspend_data,launch_data,comments,objectives,student_data,student_preference,interactions,evaluation",
|
|
461
540
|
student_preference_children: "audio,language,lesson_type,speed,text,text_color,text_location,text_size,video,windows",
|
|
462
541
|
student_data_children: "attempt_number,tries,mastery_score,max_time_allowed,time_limit_action",
|
|
@@ -465,7 +544,7 @@ var aicc = __assign(__assign({}, scorm12), {
|
|
|
465
544
|
attempt_records_children: "score,lesson_status",
|
|
466
545
|
paths_children: "location_id,date,time,status,why_left,time_in_element",
|
|
467
546
|
});
|
|
468
|
-
var
|
|
547
|
+
var api_constants_scorm2004 = {
|
|
469
548
|
cmi_children: "_version,comments_from_learner,comments_from_lms,completion_status,credit,entry,exit,interactions,launch_data,learner_id,learner_name,learner_preference,location,max_time_allowed,mode,objectives,progress_measure,scaled_passing_score,score,session_time,success_status,suspend_data,time_limit_action,total_time",
|
|
470
549
|
comments_children: "comment,timestamp,location",
|
|
471
550
|
score_children: "max,raw,scaled,min",
|
|
@@ -582,132 +661,19 @@ var scorm2004 = {
|
|
|
582
661
|
},
|
|
583
662
|
};
|
|
584
663
|
var APIConstants = {
|
|
585
|
-
global:
|
|
586
|
-
scorm12:
|
|
664
|
+
global: api_constants_global,
|
|
665
|
+
scorm12: api_constants_scorm12,
|
|
587
666
|
aicc: aicc,
|
|
588
|
-
scorm2004:
|
|
667
|
+
scorm2004: api_constants_scorm2004,
|
|
589
668
|
};
|
|
590
669
|
/* harmony default export */ var api_constants = (APIConstants);
|
|
591
670
|
|
|
592
|
-
;// ./src/
|
|
593
|
-
|
|
594
|
-
var error_codes_global = {
|
|
595
|
-
GENERAL: 101,
|
|
596
|
-
INITIALIZATION_FAILED: 101,
|
|
597
|
-
INITIALIZED: 101,
|
|
598
|
-
TERMINATED: 101,
|
|
599
|
-
TERMINATION_FAILURE: 101,
|
|
600
|
-
TERMINATION_BEFORE_INIT: 101,
|
|
601
|
-
MULTIPLE_TERMINATION: 101,
|
|
602
|
-
RETRIEVE_BEFORE_INIT: 101,
|
|
603
|
-
RETRIEVE_AFTER_TERM: 101,
|
|
604
|
-
STORE_BEFORE_INIT: 101,
|
|
605
|
-
STORE_AFTER_TERM: 101,
|
|
606
|
-
COMMIT_BEFORE_INIT: 101,
|
|
607
|
-
COMMIT_AFTER_TERM: 101,
|
|
608
|
-
ARGUMENT_ERROR: 101,
|
|
609
|
-
CHILDREN_ERROR: 101,
|
|
610
|
-
COUNT_ERROR: 101,
|
|
611
|
-
GENERAL_GET_FAILURE: 101,
|
|
612
|
-
GENERAL_SET_FAILURE: 101,
|
|
613
|
-
GENERAL_COMMIT_FAILURE: 101,
|
|
614
|
-
UNDEFINED_DATA_MODEL: 101,
|
|
615
|
-
UNIMPLEMENTED_ELEMENT: 101,
|
|
616
|
-
VALUE_NOT_INITIALIZED: 101,
|
|
617
|
-
INVALID_SET_VALUE: 101,
|
|
618
|
-
READ_ONLY_ELEMENT: 101,
|
|
619
|
-
WRITE_ONLY_ELEMENT: 101,
|
|
620
|
-
TYPE_MISMATCH: 101,
|
|
621
|
-
VALUE_OUT_OF_RANGE: 101,
|
|
622
|
-
DEPENDENCY_NOT_ESTABLISHED: 101,
|
|
623
|
-
};
|
|
624
|
-
var error_codes_scorm12 = __assign(__assign({}, error_codes_global), { RETRIEVE_BEFORE_INIT: 301, STORE_BEFORE_INIT: 301, COMMIT_BEFORE_INIT: 301, ARGUMENT_ERROR: 201, CHILDREN_ERROR: 202, COUNT_ERROR: 203, UNDEFINED_DATA_MODEL: 401, UNIMPLEMENTED_ELEMENT: 401, VALUE_NOT_INITIALIZED: 301, INVALID_SET_VALUE: 402, READ_ONLY_ELEMENT: 403, WRITE_ONLY_ELEMENT: 404, TYPE_MISMATCH: 405, VALUE_OUT_OF_RANGE: 407, DEPENDENCY_NOT_ESTABLISHED: 408 });
|
|
625
|
-
var error_codes_scorm2004 = __assign(__assign({}, error_codes_global), { INITIALIZATION_FAILED: 102, INITIALIZED: 103, TERMINATED: 104, TERMINATION_FAILURE: 111, TERMINATION_BEFORE_INIT: 112, MULTIPLE_TERMINATIONS: 113, RETRIEVE_BEFORE_INIT: 122, RETRIEVE_AFTER_TERM: 123, STORE_BEFORE_INIT: 132, STORE_AFTER_TERM: 133, COMMIT_BEFORE_INIT: 142, COMMIT_AFTER_TERM: 143, ARGUMENT_ERROR: 201, GENERAL_GET_FAILURE: 301, GENERAL_SET_FAILURE: 351, GENERAL_COMMIT_FAILURE: 391, UNDEFINED_DATA_MODEL: 401, UNIMPLEMENTED_ELEMENT: 402, VALUE_NOT_INITIALIZED: 403, READ_ONLY_ELEMENT: 404, WRITE_ONLY_ELEMENT: 405, TYPE_MISMATCH: 406, VALUE_OUT_OF_RANGE: 407, DEPENDENCY_NOT_ESTABLISHED: 408 });
|
|
626
|
-
var ErrorCodes = {
|
|
627
|
-
scorm12: error_codes_scorm12,
|
|
628
|
-
scorm2004: error_codes_scorm2004,
|
|
629
|
-
};
|
|
630
|
-
/* harmony default export */ var error_codes = (ErrorCodes);
|
|
631
|
-
|
|
632
|
-
;// ./src/constants/regex.ts
|
|
633
|
-
|
|
634
|
-
var regex_scorm12 = {
|
|
635
|
-
CMIString256: "^.{0,255}$",
|
|
636
|
-
CMIString4096: "^.{0,4096}$",
|
|
637
|
-
CMITime: "^(?:[01]\\d|2[0123]):(?:[012345]\\d):(?:[012345]\\d)$",
|
|
638
|
-
CMITimespan: "^([0-9]{2,}):([0-9]{2}):([0-9]{2})(.[0-9]{1,2})?$",
|
|
639
|
-
CMIInteger: "^\\d+$",
|
|
640
|
-
CMISInteger: "^-?([0-9]+)$",
|
|
641
|
-
CMIDecimal: "^-?([0-9]{0,3})(.[0-9]*)?$",
|
|
642
|
-
CMIIdentifier: "^[\\u0021-\\u007E\\s]{0,255}$",
|
|
643
|
-
CMIFeedback: "^.{0,255}$",
|
|
644
|
-
CMIIndex: "[._](\\d+).",
|
|
645
|
-
CMIStatus: "^(passed|completed|failed|incomplete|browsed)$",
|
|
646
|
-
CMIStatus2: "^(passed|completed|failed|incomplete|browsed|not attempted)$",
|
|
647
|
-
CMIExit: "^(time-out|suspend|logout|)$",
|
|
648
|
-
CMIType: "^(true-false|choice|fill-in|matching|performance|sequencing|likert|numeric)$",
|
|
649
|
-
CMIResult: "^(correct|wrong|unanticipated|neutral|([0-9]{0,3})?(\\.[0-9]*)?)$",
|
|
650
|
-
NAVEvent: "^(previous|continue)$",
|
|
651
|
-
score_range: "0#100",
|
|
652
|
-
audio_range: "-1#100",
|
|
653
|
-
speed_range: "-100#100",
|
|
654
|
-
weighting_range: "-100#100",
|
|
655
|
-
text_range: "-1#1",
|
|
656
|
-
};
|
|
657
|
-
var regex_aicc = __assign(__assign({}, regex_scorm12), {
|
|
658
|
-
CMIIdentifier: "^\\w{1,255}$",
|
|
659
|
-
});
|
|
660
|
-
var regex_scorm2004 = {
|
|
661
|
-
CMIString200: "^[\\u0000-\\uFFFF]{0,200}$",
|
|
662
|
-
CMIString250: "^[\\u0000-\\uFFFF]{0,250}$",
|
|
663
|
-
CMIString1000: "^[\\u0000-\\uFFFF]{0,1000}$",
|
|
664
|
-
CMIString4000: "^[\\u0000-\\uFFFF]{0,4000}$",
|
|
665
|
-
CMIString64000: "^[\\u0000-\\uFFFF]{0,64000}$",
|
|
666
|
-
CMILang: "^([a-zA-Z]{2,3}|i|x)(-[a-zA-Z0-9-]{2,8})?$|^$",
|
|
667
|
-
CMILangString250: "^({lang=([a-zA-Z]{2,3}|i|x)(-[a-zA-Z0-9-]{2,8})?})?((?!{.*$).{0,250}$)?$",
|
|
668
|
-
CMILangcr: "^(({lang=([a-zA-Z]{2,3}|i|x)?(-[a-zA-Z0-9-]{2,8})?}))(.*?)$",
|
|
669
|
-
CMILangString250cr: "^(({lang=([a-zA-Z]{2,3}|i|x)?(-[a-zA-Z0-9-]{2,8})?})?(.{0,250})?)?$",
|
|
670
|
-
CMILangString4000: "^({lang=([a-zA-Z]{2,3}|i|x)(-[a-zA-Z0-9-]{2,8})?})?((?!{.*$).{0,4000}$)?$",
|
|
671
|
-
CMITime: "^(19[7-9]{1}[0-9]{1}|20[0-2]{1}[0-9]{1}|203[0-8]{1})((-(0[1-9]{1}|1[0-2]{1}))((-(0[1-9]{1}|[1-2]{1}[0-9]{1}|3[0-1]{1}))(T([0-1]{1}[0-9]{1}|2[0-3]{1})((:[0-5]{1}[0-9]{1})((:[0-5]{1}[0-9]{1})((\\.[0-9]{1,2})((Z|([+|-]([0-1]{1}[0-9]{1}|2[0-3]{1})))(:[0-5]{1}[0-9]{1})?)?)?)?)?)?)?)?$",
|
|
672
|
-
CMITimespan: "^P(?:([.,\\d]+)Y)?(?:([.,\\d]+)M)?(?:([.,\\d]+)W)?(?:([.,\\d]+)D)?(?:T?(?:([.,\\d]+)H)?(?:([.,\\d]+)M)?(?:([.,\\d]+)S)?)?$",
|
|
673
|
-
CMIInteger: "^\\d+$",
|
|
674
|
-
CMISInteger: "^-?([0-9]+)$",
|
|
675
|
-
CMIDecimal: "^-?([0-9]{1,5})(\\.[0-9]{1,18})?$",
|
|
676
|
-
CMIIdentifier: "^\\S{1,250}[a-zA-Z0-9]$",
|
|
677
|
-
CMIShortIdentifier: "^[\\w\\.\\-\\_]{1,250}$",
|
|
678
|
-
CMILongIdentifier: "^(?:(?!urn:)\\S{1,4000}|urn:[A-Za-z0-9-]{1,31}:\\S{1,4000}|.{1,4000})$",
|
|
679
|
-
CMIFeedback: "^.*$",
|
|
680
|
-
CMIIndex: "[._](\\d+).",
|
|
681
|
-
CMIIndexStore: ".N(\\d+).",
|
|
682
|
-
CMICStatus: "^(completed|incomplete|not attempted|unknown)$",
|
|
683
|
-
CMISStatus: "^(passed|failed|unknown)$",
|
|
684
|
-
CMIExit: "^(time-out|suspend|logout|normal)$",
|
|
685
|
-
CMIType: "^(true-false|choice|fill-in|long-fill-in|matching|performance|sequencing|likert|numeric|other)$",
|
|
686
|
-
CMIResult: "^(correct|incorrect|unanticipated|neutral|-?([0-9]{1,4})(\\.[0-9]{1,18})?)$",
|
|
687
|
-
NAVEvent: "^(previous|continue|exit|exitAll|abandon|abandonAll|suspendAll|{target=\\S{0,200}[a-zA-Z0-9]}choice|jump)$",
|
|
688
|
-
NAVBoolean: "^(unknown|true|false$)",
|
|
689
|
-
NAVTarget: "^(previous|continue|choice.{target=\\S{0,200}[a-zA-Z0-9]})$",
|
|
690
|
-
scaled_range: "-1#1",
|
|
691
|
-
audio_range: "0#*",
|
|
692
|
-
speed_range: "0#*",
|
|
693
|
-
text_range: "-1#1",
|
|
694
|
-
progress_range: "0#1",
|
|
695
|
-
};
|
|
696
|
-
var Regex = {
|
|
697
|
-
aicc: regex_aicc,
|
|
698
|
-
scorm12: regex_scorm12,
|
|
699
|
-
scorm2004: regex_scorm2004,
|
|
700
|
-
};
|
|
701
|
-
/* harmony default export */ var regex = (Regex);
|
|
702
|
-
|
|
703
|
-
;// ./src/cmi/common.ts
|
|
704
|
-
|
|
705
|
-
|
|
671
|
+
;// ./src/exceptions.ts
|
|
706
672
|
|
|
707
673
|
|
|
708
|
-
var
|
|
709
|
-
var
|
|
710
|
-
var
|
|
674
|
+
var scorm12_errors = api_constants.scorm12.error_descriptions;
|
|
675
|
+
var aicc_errors = api_constants.aicc.error_descriptions;
|
|
676
|
+
var scorm2004_errors = api_constants.scorm2004.error_descriptions;
|
|
711
677
|
var BaseScormValidationError = (function (_super) {
|
|
712
678
|
__extends(BaseScormValidationError, _super);
|
|
713
679
|
function BaseScormValidationError(errorCode) {
|
|
@@ -729,224 +695,6 @@ var BaseScormValidationError = (function (_super) {
|
|
|
729
695
|
return BaseScormValidationError;
|
|
730
696
|
}(Error));
|
|
731
697
|
|
|
732
|
-
var BaseScorm12ValidationError = (function (_super) {
|
|
733
|
-
__extends(BaseScorm12ValidationError, _super);
|
|
734
|
-
function BaseScorm12ValidationError(errorCode) {
|
|
735
|
-
var _this = _super.call(this, errorCode) || this;
|
|
736
|
-
_this.name = "Scorm12ValidationError";
|
|
737
|
-
return _this;
|
|
738
|
-
}
|
|
739
|
-
return BaseScorm12ValidationError;
|
|
740
|
-
}(BaseScormValidationError));
|
|
741
|
-
|
|
742
|
-
var BaseScorm2004ValidationError = (function (_super) {
|
|
743
|
-
__extends(BaseScorm2004ValidationError, _super);
|
|
744
|
-
function BaseScorm2004ValidationError(errorCode) {
|
|
745
|
-
var _this = _super.call(this, errorCode) || this;
|
|
746
|
-
_this.name = "Scorm2004ValidationError";
|
|
747
|
-
return _this;
|
|
748
|
-
}
|
|
749
|
-
return BaseScorm2004ValidationError;
|
|
750
|
-
}(BaseScormValidationError));
|
|
751
|
-
|
|
752
|
-
function checkValidFormat(value, regexPattern, errorCode, errorClass, allowEmptyString) {
|
|
753
|
-
var formatRegex = new RegExp(regexPattern);
|
|
754
|
-
var matches = value.match(formatRegex);
|
|
755
|
-
if (allowEmptyString && value === "") {
|
|
756
|
-
return true;
|
|
757
|
-
}
|
|
758
|
-
if (value === undefined || !matches || matches[0] === "") {
|
|
759
|
-
throw new errorClass(errorCode);
|
|
760
|
-
}
|
|
761
|
-
return true;
|
|
762
|
-
}
|
|
763
|
-
function checkValidRange(value, rangePattern, errorCode, errorClass) {
|
|
764
|
-
var ranges = rangePattern.split("#");
|
|
765
|
-
value = value * 1.0;
|
|
766
|
-
if (value >= ranges[0]) {
|
|
767
|
-
if (ranges[1] === "*" || value <= ranges[1]) {
|
|
768
|
-
return true;
|
|
769
|
-
}
|
|
770
|
-
else {
|
|
771
|
-
throw new errorClass(errorCode);
|
|
772
|
-
}
|
|
773
|
-
}
|
|
774
|
-
else {
|
|
775
|
-
throw new errorClass(errorCode);
|
|
776
|
-
}
|
|
777
|
-
}
|
|
778
|
-
var BaseCMI = (function () {
|
|
779
|
-
function BaseCMI() {
|
|
780
|
-
this.jsonString = false;
|
|
781
|
-
this._initialized = false;
|
|
782
|
-
}
|
|
783
|
-
Object.defineProperty(BaseCMI.prototype, "initialized", {
|
|
784
|
-
get: function () {
|
|
785
|
-
return this._initialized;
|
|
786
|
-
},
|
|
787
|
-
enumerable: false,
|
|
788
|
-
configurable: true
|
|
789
|
-
});
|
|
790
|
-
Object.defineProperty(BaseCMI.prototype, "start_time", {
|
|
791
|
-
get: function () {
|
|
792
|
-
return this._start_time;
|
|
793
|
-
},
|
|
794
|
-
enumerable: false,
|
|
795
|
-
configurable: true
|
|
796
|
-
});
|
|
797
|
-
BaseCMI.prototype.initialize = function () {
|
|
798
|
-
this._initialized = true;
|
|
799
|
-
};
|
|
800
|
-
BaseCMI.prototype.setStartTime = function () {
|
|
801
|
-
this._start_time = new Date().getTime();
|
|
802
|
-
};
|
|
803
|
-
return BaseCMI;
|
|
804
|
-
}());
|
|
805
|
-
|
|
806
|
-
var BaseRootCMI = (function (_super) {
|
|
807
|
-
__extends(BaseRootCMI, _super);
|
|
808
|
-
function BaseRootCMI() {
|
|
809
|
-
return _super !== null && _super.apply(this, arguments) || this;
|
|
810
|
-
}
|
|
811
|
-
return BaseRootCMI;
|
|
812
|
-
}(BaseCMI));
|
|
813
|
-
|
|
814
|
-
var CMIScore = (function (_super) {
|
|
815
|
-
__extends(CMIScore, _super);
|
|
816
|
-
function CMIScore(params) {
|
|
817
|
-
var _this = _super.call(this) || this;
|
|
818
|
-
_this._raw = "";
|
|
819
|
-
_this._min = "";
|
|
820
|
-
_this.__children = params.score_children || scorm12_constants.score_children;
|
|
821
|
-
_this.__score_range = !params.score_range
|
|
822
|
-
? false
|
|
823
|
-
: scorm12_regex.score_range;
|
|
824
|
-
_this._max = params.max || params.max === "" ? params.max : "100";
|
|
825
|
-
_this.__invalid_error_code =
|
|
826
|
-
params.invalidErrorCode || scorm12_error_codes.INVALID_SET_VALUE;
|
|
827
|
-
_this.__invalid_type_code =
|
|
828
|
-
params.invalidTypeCode || scorm12_error_codes.TYPE_MISMATCH;
|
|
829
|
-
_this.__invalid_range_code =
|
|
830
|
-
params.invalidRangeCode || scorm12_error_codes.VALUE_OUT_OF_RANGE;
|
|
831
|
-
_this.__decimal_regex = params.decimalRegex || scorm12_regex.CMIDecimal;
|
|
832
|
-
_this.__error_class = params.errorClass;
|
|
833
|
-
return _this;
|
|
834
|
-
}
|
|
835
|
-
Object.defineProperty(CMIScore.prototype, "_children", {
|
|
836
|
-
get: function () {
|
|
837
|
-
return this.__children;
|
|
838
|
-
},
|
|
839
|
-
set: function (_children) {
|
|
840
|
-
throw new this.__error_class(this.__invalid_error_code);
|
|
841
|
-
},
|
|
842
|
-
enumerable: false,
|
|
843
|
-
configurable: true
|
|
844
|
-
});
|
|
845
|
-
Object.defineProperty(CMIScore.prototype, "raw", {
|
|
846
|
-
get: function () {
|
|
847
|
-
return this._raw;
|
|
848
|
-
},
|
|
849
|
-
set: function (raw) {
|
|
850
|
-
if (checkValidFormat(raw, this.__decimal_regex, this.__invalid_type_code, this.__error_class) &&
|
|
851
|
-
(!this.__score_range ||
|
|
852
|
-
checkValidRange(raw, this.__score_range, this.__invalid_range_code, this.__error_class))) {
|
|
853
|
-
this._raw = raw;
|
|
854
|
-
}
|
|
855
|
-
},
|
|
856
|
-
enumerable: false,
|
|
857
|
-
configurable: true
|
|
858
|
-
});
|
|
859
|
-
Object.defineProperty(CMIScore.prototype, "min", {
|
|
860
|
-
get: function () {
|
|
861
|
-
return this._min;
|
|
862
|
-
},
|
|
863
|
-
set: function (min) {
|
|
864
|
-
if (checkValidFormat(min, this.__decimal_regex, this.__invalid_type_code, this.__error_class) &&
|
|
865
|
-
(!this.__score_range ||
|
|
866
|
-
checkValidRange(min, this.__score_range, this.__invalid_range_code, this.__error_class))) {
|
|
867
|
-
this._min = min;
|
|
868
|
-
}
|
|
869
|
-
},
|
|
870
|
-
enumerable: false,
|
|
871
|
-
configurable: true
|
|
872
|
-
});
|
|
873
|
-
Object.defineProperty(CMIScore.prototype, "max", {
|
|
874
|
-
get: function () {
|
|
875
|
-
return this._max;
|
|
876
|
-
},
|
|
877
|
-
set: function (max) {
|
|
878
|
-
if (checkValidFormat(max, this.__decimal_regex, this.__invalid_type_code, this.__error_class) &&
|
|
879
|
-
(!this.__score_range ||
|
|
880
|
-
checkValidRange(max, this.__score_range, this.__invalid_range_code, this.__error_class))) {
|
|
881
|
-
this._max = max;
|
|
882
|
-
}
|
|
883
|
-
},
|
|
884
|
-
enumerable: false,
|
|
885
|
-
configurable: true
|
|
886
|
-
});
|
|
887
|
-
CMIScore.prototype.toJSON = function () {
|
|
888
|
-
this.jsonString = true;
|
|
889
|
-
var result = {
|
|
890
|
-
raw: this.raw,
|
|
891
|
-
min: this.min,
|
|
892
|
-
max: this.max,
|
|
893
|
-
};
|
|
894
|
-
delete this.jsonString;
|
|
895
|
-
return result;
|
|
896
|
-
};
|
|
897
|
-
return CMIScore;
|
|
898
|
-
}(BaseCMI));
|
|
899
|
-
|
|
900
|
-
var CMIArray = (function (_super) {
|
|
901
|
-
__extends(CMIArray, _super);
|
|
902
|
-
function CMIArray(params) {
|
|
903
|
-
var _this = _super.call(this) || this;
|
|
904
|
-
_this.__children = params.children;
|
|
905
|
-
_this._errorCode = params.errorCode || scorm12_error_codes.GENERAL;
|
|
906
|
-
_this._errorClass = params.errorClass || BaseScorm12ValidationError;
|
|
907
|
-
_this.childArray = [];
|
|
908
|
-
return _this;
|
|
909
|
-
}
|
|
910
|
-
Object.defineProperty(CMIArray.prototype, "_children", {
|
|
911
|
-
get: function () {
|
|
912
|
-
return this.__children;
|
|
913
|
-
},
|
|
914
|
-
set: function (_children) {
|
|
915
|
-
throw new this._errorClass(this._errorCode);
|
|
916
|
-
},
|
|
917
|
-
enumerable: false,
|
|
918
|
-
configurable: true
|
|
919
|
-
});
|
|
920
|
-
Object.defineProperty(CMIArray.prototype, "_count", {
|
|
921
|
-
get: function () {
|
|
922
|
-
return this.childArray.length;
|
|
923
|
-
},
|
|
924
|
-
set: function (_count) {
|
|
925
|
-
throw new this._errorClass(this._errorCode);
|
|
926
|
-
},
|
|
927
|
-
enumerable: false,
|
|
928
|
-
configurable: true
|
|
929
|
-
});
|
|
930
|
-
CMIArray.prototype.toJSON = function () {
|
|
931
|
-
this.jsonString = true;
|
|
932
|
-
var result = {};
|
|
933
|
-
for (var i = 0; i < this.childArray.length; i++) {
|
|
934
|
-
result[i + ""] = this.childArray[i];
|
|
935
|
-
}
|
|
936
|
-
delete this.jsonString;
|
|
937
|
-
return result;
|
|
938
|
-
};
|
|
939
|
-
return CMIArray;
|
|
940
|
-
}(BaseCMI));
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
;// ./src/exceptions.ts
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
var scorm12_errors = api_constants.scorm12.error_descriptions;
|
|
948
|
-
var aicc_errors = api_constants.aicc.error_descriptions;
|
|
949
|
-
var scorm2004_errors = api_constants.scorm2004.error_descriptions;
|
|
950
698
|
var ValidationError = (function (_super) {
|
|
951
699
|
__extends(ValidationError, _super);
|
|
952
700
|
function ValidationError(errorCode, errorMessage, detailedMessage) {
|
|
@@ -1022,6 +770,55 @@ var Scorm2004ValidationError = (function (_super) {
|
|
|
1022
770
|
}(ValidationError));
|
|
1023
771
|
|
|
1024
772
|
|
|
773
|
+
;// ./src/cmi/common/array.ts
|
|
774
|
+
|
|
775
|
+
|
|
776
|
+
|
|
777
|
+
|
|
778
|
+
var scorm12_error_codes = error_codes.scorm12;
|
|
779
|
+
var CMIArray = (function (_super) {
|
|
780
|
+
__extends(CMIArray, _super);
|
|
781
|
+
function CMIArray(params) {
|
|
782
|
+
var _this = _super.call(this) || this;
|
|
783
|
+
_this.__children = params.children;
|
|
784
|
+
_this._errorCode = params.errorCode || scorm12_error_codes.GENERAL;
|
|
785
|
+
_this._errorClass = params.errorClass || BaseScormValidationError;
|
|
786
|
+
_this.childArray = [];
|
|
787
|
+
return _this;
|
|
788
|
+
}
|
|
789
|
+
Object.defineProperty(CMIArray.prototype, "_children", {
|
|
790
|
+
get: function () {
|
|
791
|
+
return this.__children;
|
|
792
|
+
},
|
|
793
|
+
set: function (_children) {
|
|
794
|
+
throw new this._errorClass(this._errorCode);
|
|
795
|
+
},
|
|
796
|
+
enumerable: false,
|
|
797
|
+
configurable: true
|
|
798
|
+
});
|
|
799
|
+
Object.defineProperty(CMIArray.prototype, "_count", {
|
|
800
|
+
get: function () {
|
|
801
|
+
return this.childArray.length;
|
|
802
|
+
},
|
|
803
|
+
set: function (_count) {
|
|
804
|
+
throw new this._errorClass(this._errorCode);
|
|
805
|
+
},
|
|
806
|
+
enumerable: false,
|
|
807
|
+
configurable: true
|
|
808
|
+
});
|
|
809
|
+
CMIArray.prototype.toJSON = function () {
|
|
810
|
+
this.jsonString = true;
|
|
811
|
+
var result = {};
|
|
812
|
+
for (var i = 0; i < this.childArray.length; i++) {
|
|
813
|
+
result[i + ""] = this.childArray[i];
|
|
814
|
+
}
|
|
815
|
+
delete this.jsonString;
|
|
816
|
+
return result;
|
|
817
|
+
};
|
|
818
|
+
return CMIArray;
|
|
819
|
+
}(BaseCMI));
|
|
820
|
+
|
|
821
|
+
|
|
1025
822
|
;// ./src/utilities.ts
|
|
1026
823
|
var SECONDS_PER_SECOND = 1.0;
|
|
1027
824
|
var SECONDS_PER_MINUTE = 60;
|
|
@@ -1182,16 +979,33 @@ function countDecimals(num) {
|
|
|
1182
979
|
var parts = num.toString().split(".")[1];
|
|
1183
980
|
return parts.length || 0;
|
|
1184
981
|
}
|
|
982
|
+
function formatMessage(functionName, message, CMIElement) {
|
|
983
|
+
var baseLength = 20;
|
|
984
|
+
var messageString = "";
|
|
985
|
+
messageString += functionName;
|
|
986
|
+
var fillChars = baseLength - messageString.length;
|
|
987
|
+
for (var i = 0; i < fillChars; i++) {
|
|
988
|
+
messageString += " ";
|
|
989
|
+
}
|
|
990
|
+
messageString += ": ";
|
|
991
|
+
if (CMIElement) {
|
|
992
|
+
var CMIElementBaseLength = 70;
|
|
993
|
+
messageString += CMIElement;
|
|
994
|
+
fillChars = CMIElementBaseLength - messageString.length;
|
|
995
|
+
for (var j = 0; j < fillChars; j++) {
|
|
996
|
+
messageString += " ";
|
|
997
|
+
}
|
|
998
|
+
}
|
|
999
|
+
if (message) {
|
|
1000
|
+
messageString += message;
|
|
1001
|
+
}
|
|
1002
|
+
return messageString;
|
|
1003
|
+
}
|
|
1004
|
+
function stringMatches(str, tester) {
|
|
1005
|
+
return (str === null || str === void 0 ? void 0 : str.match(tester)) !== null;
|
|
1006
|
+
}
|
|
1185
1007
|
|
|
1186
|
-
;// ./src/
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
var global_constants = api_constants.global;
|
|
1194
|
-
var BaseAPI_scorm12_error_codes = error_codes.scorm12;
|
|
1008
|
+
;// ./src/utilities/debounce.ts
|
|
1195
1009
|
function debounce(func, wait, immediate) {
|
|
1196
1010
|
if (immediate === void 0) { immediate = false; }
|
|
1197
1011
|
var timeout;
|
|
@@ -1214,16 +1028,20 @@ function debounce(func, wait, immediate) {
|
|
|
1214
1028
|
func.apply(context, args);
|
|
1215
1029
|
};
|
|
1216
1030
|
}
|
|
1031
|
+
|
|
1032
|
+
;// ./src/constants/default_settings.ts
|
|
1033
|
+
|
|
1034
|
+
|
|
1217
1035
|
var DefaultSettings = {
|
|
1218
1036
|
autocommit: false,
|
|
1219
1037
|
autocommitSeconds: 10,
|
|
1220
1038
|
asyncCommit: false,
|
|
1221
|
-
|
|
1039
|
+
sendFullCommit: true,
|
|
1222
1040
|
lmsCommitUrl: false,
|
|
1223
1041
|
dataCommitFormat: "json",
|
|
1224
1042
|
commitRequestDataType: "application/json;charset=UTF-8",
|
|
1225
1043
|
autoProgress: false,
|
|
1226
|
-
logLevel:
|
|
1044
|
+
logLevel: api_constants.global.LOG_LEVEL_ERROR,
|
|
1227
1045
|
selfReportSessionTime: false,
|
|
1228
1046
|
alwaysSendTotalTime: false,
|
|
1229
1047
|
strict_errors: true,
|
|
@@ -1231,26 +1049,26 @@ var DefaultSettings = {
|
|
|
1231
1049
|
xhrWithCredentials: false,
|
|
1232
1050
|
responseHandler: function (response) {
|
|
1233
1051
|
return __awaiter(this, void 0, void 0, function () {
|
|
1234
|
-
var httpResult, _a,
|
|
1235
|
-
return __generator(this, function (
|
|
1236
|
-
switch (
|
|
1052
|
+
var httpResult, _a, _b;
|
|
1053
|
+
return __generator(this, function (_c) {
|
|
1054
|
+
switch (_c.label) {
|
|
1237
1055
|
case 0:
|
|
1238
1056
|
if (!(typeof response !== "undefined")) return [3, 2];
|
|
1239
|
-
|
|
1057
|
+
_b = (_a = JSON).parse;
|
|
1240
1058
|
return [4, response.text()];
|
|
1241
1059
|
case 1:
|
|
1242
|
-
httpResult =
|
|
1060
|
+
httpResult = _b.apply(_a, [_c.sent()]);
|
|
1243
1061
|
if (httpResult === null ||
|
|
1244
1062
|
!{}.hasOwnProperty.call(httpResult, "result")) {
|
|
1245
1063
|
if (response.status === 200) {
|
|
1246
1064
|
return [2, {
|
|
1247
|
-
result:
|
|
1065
|
+
result: api_constants.global.SCORM_TRUE,
|
|
1248
1066
|
errorCode: 0,
|
|
1249
1067
|
}];
|
|
1250
1068
|
}
|
|
1251
1069
|
else {
|
|
1252
1070
|
return [2, {
|
|
1253
|
-
result:
|
|
1071
|
+
result: api_constants.global.SCORM_FALSE,
|
|
1254
1072
|
errorCode: 101,
|
|
1255
1073
|
}];
|
|
1256
1074
|
}
|
|
@@ -1260,14 +1078,14 @@ var DefaultSettings = {
|
|
|
1260
1078
|
result: httpResult.result,
|
|
1261
1079
|
errorCode: httpResult.errorCode
|
|
1262
1080
|
? httpResult.errorCode
|
|
1263
|
-
: httpResult.result ===
|
|
1081
|
+
: httpResult.result === api_constants.global.SCORM_TRUE
|
|
1264
1082
|
? 0
|
|
1265
1083
|
: 101,
|
|
1266
1084
|
}];
|
|
1267
1085
|
}
|
|
1268
|
-
|
|
1086
|
+
_c.label = 2;
|
|
1269
1087
|
case 2: return [2, {
|
|
1270
|
-
result:
|
|
1088
|
+
result: api_constants.global.SCORM_FALSE,
|
|
1271
1089
|
errorCode: 101,
|
|
1272
1090
|
}];
|
|
1273
1091
|
}
|
|
@@ -1279,16 +1097,16 @@ var DefaultSettings = {
|
|
|
1279
1097
|
},
|
|
1280
1098
|
onLogMessage: function (messageLevel, logMessage) {
|
|
1281
1099
|
switch (messageLevel) {
|
|
1282
|
-
case
|
|
1100
|
+
case api_constants.global.LOG_LEVEL_ERROR:
|
|
1283
1101
|
console.error(logMessage);
|
|
1284
1102
|
break;
|
|
1285
|
-
case
|
|
1103
|
+
case api_constants.global.LOG_LEVEL_WARNING:
|
|
1286
1104
|
console.warn(logMessage);
|
|
1287
1105
|
break;
|
|
1288
|
-
case
|
|
1106
|
+
case api_constants.global.LOG_LEVEL_INFO:
|
|
1289
1107
|
console.info(logMessage);
|
|
1290
1108
|
break;
|
|
1291
|
-
case
|
|
1109
|
+
case api_constants.global.LOG_LEVEL_DEBUG:
|
|
1292
1110
|
if (console.debug) {
|
|
1293
1111
|
console.debug(logMessage);
|
|
1294
1112
|
}
|
|
@@ -1298,7 +1116,50 @@ var DefaultSettings = {
|
|
|
1298
1116
|
break;
|
|
1299
1117
|
}
|
|
1300
1118
|
},
|
|
1119
|
+
scoItemIds: [],
|
|
1120
|
+
scoItemIdValidator: false,
|
|
1301
1121
|
};
|
|
1122
|
+
|
|
1123
|
+
;// ./src/helpers/scheduled_commit.ts
|
|
1124
|
+
|
|
1125
|
+
var ScheduledCommit = (function () {
|
|
1126
|
+
function ScheduledCommit(API, when, callback) {
|
|
1127
|
+
this._cancelled = false;
|
|
1128
|
+
this._API = API;
|
|
1129
|
+
this._timeout = setTimeout(this.wrapper.bind(this), when);
|
|
1130
|
+
this._callback = callback;
|
|
1131
|
+
}
|
|
1132
|
+
ScheduledCommit.prototype.cancel = function () {
|
|
1133
|
+
this._cancelled = true;
|
|
1134
|
+
if (this._timeout) {
|
|
1135
|
+
clearTimeout(this._timeout);
|
|
1136
|
+
}
|
|
1137
|
+
};
|
|
1138
|
+
ScheduledCommit.prototype.wrapper = function () {
|
|
1139
|
+
var _this = this;
|
|
1140
|
+
if (!this._cancelled) {
|
|
1141
|
+
(function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
|
|
1142
|
+
switch (_a.label) {
|
|
1143
|
+
case 0: return [4, this._API.commit(this._callback)];
|
|
1144
|
+
case 1: return [2, _a.sent()];
|
|
1145
|
+
}
|
|
1146
|
+
}); }); })();
|
|
1147
|
+
}
|
|
1148
|
+
};
|
|
1149
|
+
return ScheduledCommit;
|
|
1150
|
+
}());
|
|
1151
|
+
|
|
1152
|
+
|
|
1153
|
+
;// ./src/BaseAPI.ts
|
|
1154
|
+
|
|
1155
|
+
|
|
1156
|
+
|
|
1157
|
+
|
|
1158
|
+
|
|
1159
|
+
|
|
1160
|
+
|
|
1161
|
+
|
|
1162
|
+
|
|
1302
1163
|
var BaseAPI = (function () {
|
|
1303
1164
|
function BaseAPI(error_codes, settings) {
|
|
1304
1165
|
var _newTarget = this.constructor;
|
|
@@ -1306,7 +1167,7 @@ var BaseAPI = (function () {
|
|
|
1306
1167
|
if (_newTarget === BaseAPI) {
|
|
1307
1168
|
throw new TypeError("Cannot construct BaseAPI instances directly");
|
|
1308
1169
|
}
|
|
1309
|
-
this.currentState =
|
|
1170
|
+
this.currentState = api_constants.global.STATE_NOT_INITIALIZED;
|
|
1310
1171
|
this.lastErrorCode = "0";
|
|
1311
1172
|
this.listenerArray = [];
|
|
1312
1173
|
this._error_codes = error_codes;
|
|
@@ -1316,8 +1177,14 @@ var BaseAPI = (function () {
|
|
|
1316
1177
|
this.apiLogLevel = this.settings.logLevel;
|
|
1317
1178
|
this.selfReportSessionTime = this.settings.selfReportSessionTime;
|
|
1318
1179
|
}
|
|
1180
|
+
BaseAPI.prototype.commonReset = function (settings) {
|
|
1181
|
+
this.settings = __assign(__assign({}, this.settings), settings);
|
|
1182
|
+
this.currentState = api_constants.global.STATE_NOT_INITIALIZED;
|
|
1183
|
+
this.lastErrorCode = "0";
|
|
1184
|
+
this.listenerArray = [];
|
|
1185
|
+
};
|
|
1319
1186
|
BaseAPI.prototype.initialize = function (callbackName, initializeMessage, terminationMessage) {
|
|
1320
|
-
var returnValue =
|
|
1187
|
+
var returnValue = api_constants.global.SCORM_FALSE;
|
|
1321
1188
|
if (this.isInitialized()) {
|
|
1322
1189
|
this.throwSCORMError(this._error_codes.INITIALIZED, initializeMessage);
|
|
1323
1190
|
}
|
|
@@ -1328,15 +1195,21 @@ var BaseAPI = (function () {
|
|
|
1328
1195
|
if (this.selfReportSessionTime) {
|
|
1329
1196
|
this.cmi.setStartTime();
|
|
1330
1197
|
}
|
|
1331
|
-
this.currentState =
|
|
1198
|
+
this.currentState = api_constants.global.STATE_INITIALIZED;
|
|
1332
1199
|
this.lastErrorCode = "0";
|
|
1333
|
-
returnValue =
|
|
1200
|
+
returnValue = api_constants.global.SCORM_TRUE;
|
|
1334
1201
|
this.processListeners(callbackName);
|
|
1335
1202
|
}
|
|
1336
|
-
this.apiLog(callbackName, "returned: " + returnValue,
|
|
1203
|
+
this.apiLog(callbackName, "returned: " + returnValue, api_constants.global.LOG_LEVEL_INFO);
|
|
1337
1204
|
this.clearSCORMError(returnValue);
|
|
1338
1205
|
return returnValue;
|
|
1339
1206
|
};
|
|
1207
|
+
BaseAPI.prototype.apiLog = function (functionName, logMessage, messageLevel, CMIElement) {
|
|
1208
|
+
logMessage = formatMessage(functionName, logMessage, CMIElement);
|
|
1209
|
+
if (messageLevel >= this.apiLogLevel) {
|
|
1210
|
+
this.settings.onLogMessage(messageLevel, logMessage);
|
|
1211
|
+
}
|
|
1212
|
+
};
|
|
1340
1213
|
Object.defineProperty(BaseAPI.prototype, "error_codes", {
|
|
1341
1214
|
get: function () {
|
|
1342
1215
|
return this._error_codes;
|
|
@@ -1355,25 +1228,36 @@ var BaseAPI = (function () {
|
|
|
1355
1228
|
configurable: true
|
|
1356
1229
|
});
|
|
1357
1230
|
BaseAPI.prototype.terminate = function (callbackName, checkTerminated) {
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
this
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1231
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
1232
|
+
var returnValue, result;
|
|
1233
|
+
return __generator(this, function (_a) {
|
|
1234
|
+
switch (_a.label) {
|
|
1235
|
+
case 0:
|
|
1236
|
+
returnValue = api_constants.global.SCORM_FALSE;
|
|
1237
|
+
if (!this.checkState(checkTerminated, this._error_codes.TERMINATION_BEFORE_INIT, this._error_codes.MULTIPLE_TERMINATION)) return [3, 2];
|
|
1238
|
+
this.currentState = api_constants.global.STATE_TERMINATED;
|
|
1239
|
+
return [4, this.storeData(true)];
|
|
1240
|
+
case 1:
|
|
1241
|
+
result = _a.sent();
|
|
1242
|
+
if (typeof result.errorCode !== "undefined" && result.errorCode > 0) {
|
|
1243
|
+
this.throwSCORMError(result.errorCode);
|
|
1244
|
+
}
|
|
1245
|
+
returnValue =
|
|
1246
|
+
typeof result !== "undefined" && result.result
|
|
1247
|
+
? result.result
|
|
1248
|
+
: api_constants.global.SCORM_FALSE;
|
|
1249
|
+
if (checkTerminated)
|
|
1250
|
+
this.lastErrorCode = "0";
|
|
1251
|
+
returnValue = api_constants.global.SCORM_TRUE;
|
|
1252
|
+
this.processListeners(callbackName);
|
|
1253
|
+
_a.label = 2;
|
|
1254
|
+
case 2:
|
|
1255
|
+
this.apiLog(callbackName, "returned: " + returnValue, api_constants.global.LOG_LEVEL_INFO);
|
|
1256
|
+
this.clearSCORMError(returnValue);
|
|
1257
|
+
return [2, returnValue];
|
|
1258
|
+
}
|
|
1259
|
+
});
|
|
1260
|
+
});
|
|
1377
1261
|
};
|
|
1378
1262
|
BaseAPI.prototype.getValue = function (callbackName, checkTerminated, CMIElement) {
|
|
1379
1263
|
var returnValue = "";
|
|
@@ -1388,7 +1272,10 @@ var BaseAPI = (function () {
|
|
|
1388
1272
|
}
|
|
1389
1273
|
this.processListeners(callbackName, CMIElement);
|
|
1390
1274
|
}
|
|
1391
|
-
this.apiLog(callbackName, ": returned: " + returnValue,
|
|
1275
|
+
this.apiLog(callbackName, ": returned: " + returnValue, api_constants.global.LOG_LEVEL_INFO, CMIElement);
|
|
1276
|
+
if (returnValue === undefined) {
|
|
1277
|
+
return "";
|
|
1278
|
+
}
|
|
1392
1279
|
this.clearSCORMError(returnValue);
|
|
1393
1280
|
return returnValue;
|
|
1394
1281
|
};
|
|
@@ -1396,7 +1283,7 @@ var BaseAPI = (function () {
|
|
|
1396
1283
|
if (value !== undefined) {
|
|
1397
1284
|
value = String(value);
|
|
1398
1285
|
}
|
|
1399
|
-
var returnValue =
|
|
1286
|
+
var returnValue = api_constants.global.SCORM_FALSE;
|
|
1400
1287
|
if (this.checkState(checkTerminated, this._error_codes.STORE_BEFORE_INIT, this._error_codes.STORE_AFTER_TERM)) {
|
|
1401
1288
|
if (checkTerminated)
|
|
1402
1289
|
this.lastErrorCode = "0";
|
|
@@ -1409,43 +1296,54 @@ var BaseAPI = (function () {
|
|
|
1409
1296
|
this.processListeners(callbackName, CMIElement, value);
|
|
1410
1297
|
}
|
|
1411
1298
|
if (returnValue === undefined) {
|
|
1412
|
-
returnValue =
|
|
1299
|
+
returnValue = api_constants.global.SCORM_FALSE;
|
|
1413
1300
|
}
|
|
1414
1301
|
if (String(this.lastErrorCode) === "0") {
|
|
1415
1302
|
if (this.settings.autocommit && !this._timeout) {
|
|
1416
1303
|
this.scheduleCommit(this.settings.autocommitSeconds * 1000, commitCallback);
|
|
1417
1304
|
}
|
|
1418
1305
|
}
|
|
1419
|
-
this.apiLog(callbackName, ": " + value + ": result: " + returnValue,
|
|
1306
|
+
this.apiLog(callbackName, ": " + value + ": result: " + returnValue, api_constants.global.LOG_LEVEL_INFO, CMIElement);
|
|
1420
1307
|
this.clearSCORMError(returnValue);
|
|
1421
1308
|
return returnValue;
|
|
1422
1309
|
};
|
|
1423
|
-
BaseAPI.prototype.commit = function (
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1310
|
+
BaseAPI.prototype.commit = function (callbackName_1) {
|
|
1311
|
+
return __awaiter(this, arguments, void 0, function (callbackName, checkTerminated) {
|
|
1312
|
+
var returnValue, result;
|
|
1313
|
+
if (checkTerminated === void 0) { checkTerminated = false; }
|
|
1314
|
+
return __generator(this, function (_a) {
|
|
1315
|
+
switch (_a.label) {
|
|
1316
|
+
case 0:
|
|
1317
|
+
this.clearScheduledCommit();
|
|
1318
|
+
returnValue = api_constants.global.SCORM_FALSE;
|
|
1319
|
+
if (!this.checkState(checkTerminated, this._error_codes.COMMIT_BEFORE_INIT, this._error_codes.COMMIT_AFTER_TERM)) return [3, 2];
|
|
1320
|
+
return [4, this.storeData(false)];
|
|
1321
|
+
case 1:
|
|
1322
|
+
result = _a.sent();
|
|
1323
|
+
if (result.errorCode && result.errorCode > 0) {
|
|
1324
|
+
this.throwSCORMError(result.errorCode);
|
|
1325
|
+
}
|
|
1326
|
+
returnValue =
|
|
1327
|
+
typeof result !== "undefined" && result.result
|
|
1328
|
+
? result.result
|
|
1329
|
+
: api_constants.global.SCORM_FALSE;
|
|
1330
|
+
this.apiLog(callbackName, " Result: " + returnValue, api_constants.global.LOG_LEVEL_DEBUG, "HttpRequest");
|
|
1331
|
+
if (checkTerminated)
|
|
1332
|
+
this.lastErrorCode = "0";
|
|
1333
|
+
this.processListeners(callbackName);
|
|
1334
|
+
_a.label = 2;
|
|
1335
|
+
case 2:
|
|
1336
|
+
this.apiLog(callbackName, "returned: " + returnValue, api_constants.global.LOG_LEVEL_INFO);
|
|
1337
|
+
this.clearSCORMError(returnValue);
|
|
1338
|
+
return [2, returnValue];
|
|
1339
|
+
}
|
|
1340
|
+
});
|
|
1341
|
+
});
|
|
1444
1342
|
};
|
|
1445
1343
|
BaseAPI.prototype.getLastError = function (callbackName) {
|
|
1446
1344
|
var returnValue = String(this.lastErrorCode);
|
|
1447
1345
|
this.processListeners(callbackName);
|
|
1448
|
-
this.apiLog(callbackName, "returned: " + returnValue,
|
|
1346
|
+
this.apiLog(callbackName, "returned: " + returnValue, api_constants.global.LOG_LEVEL_INFO);
|
|
1449
1347
|
return returnValue;
|
|
1450
1348
|
};
|
|
1451
1349
|
BaseAPI.prototype.getErrorString = function (callbackName, CMIErrorCode) {
|
|
@@ -1454,7 +1352,7 @@ var BaseAPI = (function () {
|
|
|
1454
1352
|
returnValue = this.getLmsErrorMessageDetails(CMIErrorCode);
|
|
1455
1353
|
this.processListeners(callbackName);
|
|
1456
1354
|
}
|
|
1457
|
-
this.apiLog(callbackName, "returned: " + returnValue,
|
|
1355
|
+
this.apiLog(callbackName, "returned: " + returnValue, api_constants.global.LOG_LEVEL_INFO);
|
|
1458
1356
|
return returnValue;
|
|
1459
1357
|
};
|
|
1460
1358
|
BaseAPI.prototype.getDiagnostic = function (callbackName, CMIErrorCode) {
|
|
@@ -1463,7 +1361,7 @@ var BaseAPI = (function () {
|
|
|
1463
1361
|
returnValue = this.getLmsErrorMessageDetails(CMIErrorCode, true);
|
|
1464
1362
|
this.processListeners(callbackName);
|
|
1465
1363
|
}
|
|
1466
|
-
this.apiLog(callbackName, "returned: " + returnValue,
|
|
1364
|
+
this.apiLog(callbackName, "returned: " + returnValue, api_constants.global.LOG_LEVEL_INFO);
|
|
1467
1365
|
return returnValue;
|
|
1468
1366
|
};
|
|
1469
1367
|
BaseAPI.prototype.checkState = function (checkTerminated, beforeInitError, afterTermError) {
|
|
@@ -1477,42 +1375,6 @@ var BaseAPI = (function () {
|
|
|
1477
1375
|
}
|
|
1478
1376
|
return true;
|
|
1479
1377
|
};
|
|
1480
|
-
BaseAPI.prototype.apiLog = function (functionName, logMessage, messageLevel, CMIElement) {
|
|
1481
|
-
logMessage = this.formatMessage(functionName, logMessage, CMIElement);
|
|
1482
|
-
if (messageLevel >= this.apiLogLevel) {
|
|
1483
|
-
this.settings.onLogMessage(messageLevel, logMessage);
|
|
1484
|
-
}
|
|
1485
|
-
};
|
|
1486
|
-
BaseAPI.prototype.formatMessage = function (functionName, message, CMIElement) {
|
|
1487
|
-
var baseLength = 20;
|
|
1488
|
-
var messageString = "";
|
|
1489
|
-
messageString += functionName;
|
|
1490
|
-
var fillChars = baseLength - messageString.length;
|
|
1491
|
-
for (var i = 0; i < fillChars; i++) {
|
|
1492
|
-
messageString += " ";
|
|
1493
|
-
}
|
|
1494
|
-
messageString += ": ";
|
|
1495
|
-
if (CMIElement) {
|
|
1496
|
-
var CMIElementBaseLength = 70;
|
|
1497
|
-
messageString += CMIElement;
|
|
1498
|
-
fillChars = CMIElementBaseLength - messageString.length;
|
|
1499
|
-
for (var j = 0; j < fillChars; j++) {
|
|
1500
|
-
messageString += " ";
|
|
1501
|
-
}
|
|
1502
|
-
}
|
|
1503
|
-
if (message) {
|
|
1504
|
-
messageString += message;
|
|
1505
|
-
}
|
|
1506
|
-
return messageString;
|
|
1507
|
-
};
|
|
1508
|
-
BaseAPI.prototype.stringMatches = function (str, tester) {
|
|
1509
|
-
return (str === null || str === void 0 ? void 0 : str.match(tester)) !== null;
|
|
1510
|
-
};
|
|
1511
|
-
BaseAPI.prototype._checkObjectHasProperty = function (refObject, attribute) {
|
|
1512
|
-
return (Object.hasOwnProperty.call(refObject, attribute) ||
|
|
1513
|
-
Object.getOwnPropertyDescriptor(Object.getPrototypeOf(refObject), attribute) != null ||
|
|
1514
|
-
attribute in refObject);
|
|
1515
|
-
};
|
|
1516
1378
|
BaseAPI.prototype.getLmsErrorMessageDetails = function (_errorNumber, _detail) {
|
|
1517
1379
|
if (_detail === void 0) { _detail = false; }
|
|
1518
1380
|
throw new Error("The getLmsErrorMessageDetails method has not been implemented");
|
|
@@ -1525,11 +1387,11 @@ var BaseAPI = (function () {
|
|
|
1525
1387
|
};
|
|
1526
1388
|
BaseAPI.prototype._commonSetCMIValue = function (methodName, scorm2004, CMIElement, value) {
|
|
1527
1389
|
if (!CMIElement || CMIElement === "") {
|
|
1528
|
-
return
|
|
1390
|
+
return api_constants.global.SCORM_FALSE;
|
|
1529
1391
|
}
|
|
1530
1392
|
var structure = CMIElement.split(".");
|
|
1531
1393
|
var refObject = this;
|
|
1532
|
-
var returnValue =
|
|
1394
|
+
var returnValue = api_constants.global.SCORM_FALSE;
|
|
1533
1395
|
var foundFirstIndex = false;
|
|
1534
1396
|
var invalidErrorMessage = "The data model element passed to ".concat(methodName, " (").concat(CMIElement, ") is not a valid SCORM data model element.");
|
|
1535
1397
|
var invalidErrorCode = scorm2004
|
|
@@ -1538,22 +1400,25 @@ var BaseAPI = (function () {
|
|
|
1538
1400
|
for (var idx = 0; idx < structure.length; idx++) {
|
|
1539
1401
|
var attribute = structure[idx];
|
|
1540
1402
|
if (idx === structure.length - 1) {
|
|
1541
|
-
if (scorm2004 &&
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1403
|
+
if (scorm2004 && attribute.substring(0, 8) === "{target=") {
|
|
1404
|
+
if (this.isInitialized()) {
|
|
1405
|
+
this.throwSCORMError(this._error_codes.READ_ONLY_ELEMENT);
|
|
1406
|
+
}
|
|
1407
|
+
else {
|
|
1408
|
+
refObject = __assign(__assign({}, refObject), { attribute: value });
|
|
1409
|
+
}
|
|
1545
1410
|
}
|
|
1546
1411
|
else if (!this._checkObjectHasProperty(refObject, attribute)) {
|
|
1547
1412
|
this.throwSCORMError(invalidErrorCode, invalidErrorMessage);
|
|
1548
1413
|
}
|
|
1549
1414
|
else {
|
|
1550
|
-
if (
|
|
1551
|
-
this.
|
|
1415
|
+
if (stringMatches(CMIElement, "\\.correct_responses\\.\\d+") &&
|
|
1416
|
+
this.isInitialized()) {
|
|
1552
1417
|
this.validateCorrectResponse(CMIElement, value);
|
|
1553
1418
|
}
|
|
1554
1419
|
if (!scorm2004 || this.lastErrorCode === "0") {
|
|
1555
1420
|
refObject[attribute] = value;
|
|
1556
|
-
returnValue =
|
|
1421
|
+
returnValue = api_constants.global.SCORM_TRUE;
|
|
1557
1422
|
}
|
|
1558
1423
|
}
|
|
1559
1424
|
}
|
|
@@ -1589,8 +1454,8 @@ var BaseAPI = (function () {
|
|
|
1589
1454
|
}
|
|
1590
1455
|
}
|
|
1591
1456
|
}
|
|
1592
|
-
if (returnValue ===
|
|
1593
|
-
this.apiLog(methodName, "There was an error setting the value for: ".concat(CMIElement, ", value of: ").concat(value),
|
|
1457
|
+
if (returnValue === api_constants.global.SCORM_FALSE) {
|
|
1458
|
+
this.apiLog(methodName, "There was an error setting the value for: ".concat(CMIElement, ", value of: ").concat(value), api_constants.global.LOG_LEVEL_WARNING);
|
|
1594
1459
|
}
|
|
1595
1460
|
return returnValue;
|
|
1596
1461
|
};
|
|
@@ -1650,10 +1515,10 @@ var BaseAPI = (function () {
|
|
|
1650
1515
|
if (refObject === null || refObject === undefined) {
|
|
1651
1516
|
if (!scorm2004) {
|
|
1652
1517
|
if (attribute === "_children") {
|
|
1653
|
-
this.throwSCORMError(
|
|
1518
|
+
this.throwSCORMError(error_codes.scorm12.CHILDREN_ERROR);
|
|
1654
1519
|
}
|
|
1655
1520
|
else if (attribute === "_count") {
|
|
1656
|
-
this.throwSCORMError(
|
|
1521
|
+
this.throwSCORMError(error_codes.scorm12.COUNT_ERROR);
|
|
1657
1522
|
}
|
|
1658
1523
|
}
|
|
1659
1524
|
}
|
|
@@ -1662,13 +1527,13 @@ var BaseAPI = (function () {
|
|
|
1662
1527
|
}
|
|
1663
1528
|
};
|
|
1664
1529
|
BaseAPI.prototype.isInitialized = function () {
|
|
1665
|
-
return this.currentState ===
|
|
1530
|
+
return this.currentState === api_constants.global.STATE_INITIALIZED;
|
|
1666
1531
|
};
|
|
1667
1532
|
BaseAPI.prototype.isNotInitialized = function () {
|
|
1668
|
-
return this.currentState ===
|
|
1533
|
+
return this.currentState === api_constants.global.STATE_NOT_INITIALIZED;
|
|
1669
1534
|
};
|
|
1670
1535
|
BaseAPI.prototype.isTerminated = function () {
|
|
1671
|
-
return this.currentState ===
|
|
1536
|
+
return this.currentState === api_constants.global.STATE_TERMINATED;
|
|
1672
1537
|
};
|
|
1673
1538
|
BaseAPI.prototype.on = function (listenerName, callback) {
|
|
1674
1539
|
if (!callback)
|
|
@@ -1688,7 +1553,7 @@ var BaseAPI = (function () {
|
|
|
1688
1553
|
CMIElement: CMIElement,
|
|
1689
1554
|
callback: callback,
|
|
1690
1555
|
});
|
|
1691
|
-
this.apiLog("on", "Added event listener: ".concat(this.listenerArray.length),
|
|
1556
|
+
this.apiLog("on", "Added event listener: ".concat(this.listenerArray.length), api_constants.global.LOG_LEVEL_INFO, functionName);
|
|
1692
1557
|
}
|
|
1693
1558
|
};
|
|
1694
1559
|
BaseAPI.prototype.off = function (listenerName, callback) {
|
|
@@ -1711,7 +1576,7 @@ var BaseAPI = (function () {
|
|
|
1711
1576
|
});
|
|
1712
1577
|
if (removeIndex !== -1) {
|
|
1713
1578
|
this_1.listenerArray.splice(removeIndex, 1);
|
|
1714
|
-
this_1.apiLog("off", "Removed event listener: ".concat(this_1.listenerArray.length),
|
|
1579
|
+
this_1.apiLog("off", "Removed event listener: ".concat(this_1.listenerArray.length), api_constants.global.LOG_LEVEL_INFO, functionName);
|
|
1715
1580
|
}
|
|
1716
1581
|
};
|
|
1717
1582
|
var this_1 = this;
|
|
@@ -1744,7 +1609,7 @@ var BaseAPI = (function () {
|
|
|
1744
1609
|
}
|
|
1745
1610
|
};
|
|
1746
1611
|
BaseAPI.prototype.processListeners = function (functionName, CMIElement, value) {
|
|
1747
|
-
this.apiLog(functionName, value,
|
|
1612
|
+
this.apiLog(functionName, value, api_constants.global.LOG_LEVEL_INFO, CMIElement);
|
|
1748
1613
|
for (var i = 0; i < this.listenerArray.length; i++) {
|
|
1749
1614
|
var listener = this.listenerArray[i];
|
|
1750
1615
|
var functionsMatch = listener.functionName === functionName;
|
|
@@ -1760,7 +1625,7 @@ var BaseAPI = (function () {
|
|
|
1760
1625
|
CMIElementsMatch = listener.CMIElement === CMIElement;
|
|
1761
1626
|
}
|
|
1762
1627
|
if (functionsMatch && (!listenerHasCMIElement || CMIElementsMatch)) {
|
|
1763
|
-
this.apiLog("processListeners", "Processing listener: ".concat(listener.functionName),
|
|
1628
|
+
this.apiLog("processListeners", "Processing listener: ".concat(listener.functionName), api_constants.global.LOG_LEVEL_INFO, CMIElement);
|
|
1764
1629
|
listener.callback(CMIElement, value);
|
|
1765
1630
|
}
|
|
1766
1631
|
}
|
|
@@ -1769,16 +1634,19 @@ var BaseAPI = (function () {
|
|
|
1769
1634
|
if (!message) {
|
|
1770
1635
|
message = this.getLmsErrorMessageDetails(errorNumber);
|
|
1771
1636
|
}
|
|
1772
|
-
this.apiLog("throwSCORMError", errorNumber + ": " + message,
|
|
1637
|
+
this.apiLog("throwSCORMError", errorNumber + ": " + message, api_constants.global.LOG_LEVEL_ERROR);
|
|
1773
1638
|
this.lastErrorCode = String(errorNumber);
|
|
1774
1639
|
};
|
|
1775
1640
|
BaseAPI.prototype.clearSCORMError = function (success) {
|
|
1776
|
-
if (success !== undefined && success !==
|
|
1641
|
+
if (success !== undefined && success !== api_constants.global.SCORM_FALSE) {
|
|
1777
1642
|
this.lastErrorCode = "0";
|
|
1778
1643
|
}
|
|
1779
1644
|
};
|
|
1780
1645
|
BaseAPI.prototype.loadFromFlattenedJSON = function (json, CMIElement) {
|
|
1781
1646
|
var _this = this;
|
|
1647
|
+
if (!CMIElement) {
|
|
1648
|
+
CMIElement = "";
|
|
1649
|
+
}
|
|
1782
1650
|
if (!this.isNotInitialized()) {
|
|
1783
1651
|
console.error("loadFromFlattenedJSON can only be called before the call to lmsInitialize.");
|
|
1784
1652
|
return;
|
|
@@ -1866,275 +1734,384 @@ var BaseAPI = (function () {
|
|
|
1866
1734
|
};
|
|
1867
1735
|
BaseAPI.prototype.renderCMIToJSONString = function () {
|
|
1868
1736
|
var cmi = this.cmi;
|
|
1869
|
-
|
|
1737
|
+
if (this.settings.sendFullCommit) {
|
|
1738
|
+
return JSON.stringify({ cmi: cmi });
|
|
1739
|
+
}
|
|
1740
|
+
return JSON.stringify({ cmi: cmi }, function (k, v) { return (v === undefined ? null : v); }, 2);
|
|
1870
1741
|
};
|
|
1871
1742
|
BaseAPI.prototype.renderCMIToJSONObject = function () {
|
|
1872
1743
|
return JSON.parse(this.renderCMIToJSONString());
|
|
1873
1744
|
};
|
|
1874
|
-
BaseAPI.prototype.processHttpRequest = function (
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
};
|
|
1882
|
-
var process = function (url, params, settings) { return __awaiter(_this, void 0, void 0, function () {
|
|
1883
|
-
var response, result, _a, e_1;
|
|
1884
|
-
return __generator(this, function (_c) {
|
|
1885
|
-
switch (_c.label) {
|
|
1745
|
+
BaseAPI.prototype.processHttpRequest = function (url_1, params_1) {
|
|
1746
|
+
return __awaiter(this, arguments, void 0, function (url, params, immediate) {
|
|
1747
|
+
var api, genericError, process, debouncedProcess;
|
|
1748
|
+
var _this = this;
|
|
1749
|
+
if (immediate === void 0) { immediate = false; }
|
|
1750
|
+
return __generator(this, function (_a) {
|
|
1751
|
+
switch (_a.label) {
|
|
1886
1752
|
case 0:
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
case 5:
|
|
1908
|
-
result = _a;
|
|
1909
|
-
if (response.status >= 200 &&
|
|
1910
|
-
response.status <= 299 &&
|
|
1911
|
-
(result.result === true ||
|
|
1912
|
-
result.result === global_constants.SCORM_TRUE)) {
|
|
1913
|
-
api.processListeners("CommitSuccess");
|
|
1914
|
-
}
|
|
1915
|
-
else {
|
|
1916
|
-
api.processListeners("CommitError");
|
|
1753
|
+
api = this;
|
|
1754
|
+
genericError = {
|
|
1755
|
+
result: api_constants.global.SCORM_FALSE,
|
|
1756
|
+
errorCode: this.error_codes.GENERAL,
|
|
1757
|
+
};
|
|
1758
|
+
if (immediate) {
|
|
1759
|
+
this.performFetch(url, params).then(function (response) { return __awaiter(_this, void 0, void 0, function () {
|
|
1760
|
+
return __generator(this, function (_a) {
|
|
1761
|
+
switch (_a.label) {
|
|
1762
|
+
case 0: return [4, this.transformResponse(response)];
|
|
1763
|
+
case 1:
|
|
1764
|
+
_a.sent();
|
|
1765
|
+
return [2];
|
|
1766
|
+
}
|
|
1767
|
+
});
|
|
1768
|
+
}); });
|
|
1769
|
+
return [2, {
|
|
1770
|
+
result: api_constants.global.SCORM_TRUE,
|
|
1771
|
+
errorCode: 0,
|
|
1772
|
+
}];
|
|
1917
1773
|
}
|
|
1918
|
-
return
|
|
1919
|
-
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1774
|
+
process = function (url, params, settings) { return __awaiter(_this, void 0, void 0, function () {
|
|
1775
|
+
var response, e_1;
|
|
1776
|
+
return __generator(this, function (_a) {
|
|
1777
|
+
switch (_a.label) {
|
|
1778
|
+
case 0:
|
|
1779
|
+
_a.trys.push([0, 2, , 3]);
|
|
1780
|
+
params = settings.requestHandler(params);
|
|
1781
|
+
return [4, this.performFetch(url, params)];
|
|
1782
|
+
case 1:
|
|
1783
|
+
response = _a.sent();
|
|
1784
|
+
return [2, this.transformResponse(response)];
|
|
1785
|
+
case 2:
|
|
1786
|
+
e_1 = _a.sent();
|
|
1787
|
+
this.apiLog("processHttpRequest", e_1, api_constants.global.LOG_LEVEL_ERROR);
|
|
1788
|
+
api.processListeners("CommitError");
|
|
1789
|
+
return [2, genericError];
|
|
1790
|
+
case 3: return [2];
|
|
1791
|
+
}
|
|
1792
|
+
});
|
|
1793
|
+
}); };
|
|
1794
|
+
if (!this.settings.asyncCommit) return [3, 1];
|
|
1795
|
+
debouncedProcess = debounce(process, 500, immediate);
|
|
1796
|
+
debouncedProcess(url, params, this.settings);
|
|
1797
|
+
return [2, {
|
|
1798
|
+
result: api_constants.global.SCORM_TRUE,
|
|
1799
|
+
errorCode: 0,
|
|
1800
|
+
}];
|
|
1801
|
+
case 1: return [4, process(url, params, this.settings)];
|
|
1802
|
+
case 2: return [2, _a.sent()];
|
|
1925
1803
|
}
|
|
1926
1804
|
});
|
|
1927
|
-
});
|
|
1928
|
-
var debouncedProcess = debounce(process, 500, immediate);
|
|
1929
|
-
debouncedProcess(url, params, this.settings);
|
|
1930
|
-
return {
|
|
1931
|
-
result: global_constants.SCORM_TRUE,
|
|
1932
|
-
errorCode: 0,
|
|
1933
|
-
};
|
|
1805
|
+
});
|
|
1934
1806
|
};
|
|
1935
1807
|
BaseAPI.prototype.scheduleCommit = function (when, callback) {
|
|
1936
1808
|
this._timeout = new ScheduledCommit(this, when, callback);
|
|
1937
|
-
this.apiLog("scheduleCommit", "scheduled",
|
|
1809
|
+
this.apiLog("scheduleCommit", "scheduled", api_constants.global.LOG_LEVEL_DEBUG, "");
|
|
1938
1810
|
};
|
|
1939
1811
|
BaseAPI.prototype.clearScheduledCommit = function () {
|
|
1940
1812
|
if (this._timeout) {
|
|
1941
1813
|
this._timeout.cancel();
|
|
1942
1814
|
this._timeout = undefined;
|
|
1943
|
-
this.apiLog("clearScheduledCommit", "cleared",
|
|
1815
|
+
this.apiLog("clearScheduledCommit", "cleared", api_constants.global.LOG_LEVEL_DEBUG, "");
|
|
1944
1816
|
}
|
|
1945
1817
|
};
|
|
1818
|
+
BaseAPI.prototype._checkObjectHasProperty = function (refObject, attribute) {
|
|
1819
|
+
return (Object.hasOwnProperty.call(refObject, attribute) ||
|
|
1820
|
+
Object.getOwnPropertyDescriptor(Object.getPrototypeOf(refObject), attribute) != null ||
|
|
1821
|
+
attribute in refObject);
|
|
1822
|
+
};
|
|
1946
1823
|
BaseAPI.prototype.handleValueAccessException = function (e, returnValue) {
|
|
1947
1824
|
if (e instanceof ValidationError) {
|
|
1948
1825
|
this.lastErrorCode = String(e.errorCode);
|
|
1949
|
-
returnValue =
|
|
1826
|
+
returnValue = api_constants.global.SCORM_FALSE;
|
|
1827
|
+
}
|
|
1828
|
+
else {
|
|
1829
|
+
if (e instanceof Error && e.message) {
|
|
1830
|
+
console.error(e.message);
|
|
1831
|
+
}
|
|
1832
|
+
else {
|
|
1833
|
+
console.error(e);
|
|
1834
|
+
}
|
|
1835
|
+
this.throwSCORMError(this._error_codes.GENERAL);
|
|
1836
|
+
}
|
|
1837
|
+
return returnValue;
|
|
1838
|
+
};
|
|
1839
|
+
BaseAPI.prototype.performFetch = function (url, params) {
|
|
1840
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
1841
|
+
return __generator(this, function (_a) {
|
|
1842
|
+
return [2, fetch(url, {
|
|
1843
|
+
method: "POST",
|
|
1844
|
+
body: params instanceof Array ? params.join("&") : JSON.stringify(params),
|
|
1845
|
+
headers: __assign(__assign({}, this.settings.xhrHeaders), { "Content-Type": this.settings.commitRequestDataType }),
|
|
1846
|
+
credentials: this.settings.xhrWithCredentials ? "include" : undefined,
|
|
1847
|
+
keepalive: true,
|
|
1848
|
+
})];
|
|
1849
|
+
});
|
|
1850
|
+
});
|
|
1851
|
+
};
|
|
1852
|
+
BaseAPI.prototype.transformResponse = function (response) {
|
|
1853
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
1854
|
+
var result, _a;
|
|
1855
|
+
return __generator(this, function (_c) {
|
|
1856
|
+
switch (_c.label) {
|
|
1857
|
+
case 0:
|
|
1858
|
+
if (!(typeof this.settings.responseHandler === "function")) return [3, 2];
|
|
1859
|
+
return [4, this.settings.responseHandler(response)];
|
|
1860
|
+
case 1:
|
|
1861
|
+
_a = _c.sent();
|
|
1862
|
+
return [3, 4];
|
|
1863
|
+
case 2: return [4, response.json()];
|
|
1864
|
+
case 3:
|
|
1865
|
+
_a = _c.sent();
|
|
1866
|
+
_c.label = 4;
|
|
1867
|
+
case 4:
|
|
1868
|
+
result = _a;
|
|
1869
|
+
if (response.status >= 200 &&
|
|
1870
|
+
response.status <= 299 &&
|
|
1871
|
+
(result.result === true ||
|
|
1872
|
+
result.result === api_constants.global.SCORM_TRUE)) {
|
|
1873
|
+
this.processListeners("CommitSuccess");
|
|
1874
|
+
}
|
|
1875
|
+
else {
|
|
1876
|
+
this.processListeners("CommitError");
|
|
1877
|
+
}
|
|
1878
|
+
return [2, result];
|
|
1879
|
+
}
|
|
1880
|
+
});
|
|
1881
|
+
});
|
|
1882
|
+
};
|
|
1883
|
+
return BaseAPI;
|
|
1884
|
+
}());
|
|
1885
|
+
/* harmony default export */ var src_BaseAPI = (BaseAPI);
|
|
1886
|
+
|
|
1887
|
+
;// ./src/constants/regex.ts
|
|
1888
|
+
|
|
1889
|
+
var regex_scorm12 = {
|
|
1890
|
+
CMIString256: "^.{0,255}$",
|
|
1891
|
+
CMIString4096: "^.{0,4096}$",
|
|
1892
|
+
CMITime: "^(?:[01]\\d|2[0123]):(?:[012345]\\d):(?:[012345]\\d)$",
|
|
1893
|
+
CMITimespan: "^([0-9]{2,}):([0-9]{2}):([0-9]{2})(.[0-9]{1,2})?$",
|
|
1894
|
+
CMIInteger: "^\\d+$",
|
|
1895
|
+
CMISInteger: "^-?([0-9]+)$",
|
|
1896
|
+
CMIDecimal: "^-?([0-9]{0,3})(.[0-9]*)?$",
|
|
1897
|
+
CMIIdentifier: "^[\\u0021-\\u007E\\s]{0,255}$",
|
|
1898
|
+
CMIFeedback: "^.{0,255}$",
|
|
1899
|
+
CMIIndex: "[._](\\d+).",
|
|
1900
|
+
CMIStatus: "^(passed|completed|failed|incomplete|browsed)$",
|
|
1901
|
+
CMIStatus2: "^(passed|completed|failed|incomplete|browsed|not attempted)$",
|
|
1902
|
+
CMIExit: "^(time-out|suspend|logout|)$",
|
|
1903
|
+
CMIType: "^(true-false|choice|fill-in|matching|performance|sequencing|likert|numeric)$",
|
|
1904
|
+
CMIResult: "^(correct|wrong|unanticipated|neutral|([0-9]{0,3})?(\\.[0-9]*)?)$",
|
|
1905
|
+
NAVEvent: "^(previous|continue)$",
|
|
1906
|
+
score_range: "0#100",
|
|
1907
|
+
audio_range: "-1#100",
|
|
1908
|
+
speed_range: "-100#100",
|
|
1909
|
+
weighting_range: "-100#100",
|
|
1910
|
+
text_range: "-1#1",
|
|
1911
|
+
};
|
|
1912
|
+
var regex_aicc = __assign(__assign({}, regex_scorm12), {
|
|
1913
|
+
CMIIdentifier: "^\\w{1,255}$",
|
|
1914
|
+
});
|
|
1915
|
+
var regex_scorm2004 = {
|
|
1916
|
+
CMIString200: "^[\\u0000-\\uFFFF]{0,200}$",
|
|
1917
|
+
CMIString250: "^[\\u0000-\\uFFFF]{0,250}$",
|
|
1918
|
+
CMIString1000: "^[\\u0000-\\uFFFF]{0,1000}$",
|
|
1919
|
+
CMIString4000: "^[\\u0000-\\uFFFF]{0,4000}$",
|
|
1920
|
+
CMIString64000: "^[\\u0000-\\uFFFF]{0,64000}$",
|
|
1921
|
+
CMILang: "^([a-zA-Z]{2,3}|i|x)(-[a-zA-Z0-9-]{2,8})?$|^$",
|
|
1922
|
+
CMILangString250: "^({lang=([a-zA-Z]{2,3}|i|x)(-[a-zA-Z0-9-]{2,8})?})?((?!{.*$).{0,250}$)?$",
|
|
1923
|
+
CMILangcr: "^(({lang=([a-zA-Z]{2,3}|i|x)?(-[a-zA-Z0-9-]{2,8})?}))(.*?)$",
|
|
1924
|
+
CMILangString250cr: "^(({lang=([a-zA-Z]{2,3}|i|x)?(-[a-zA-Z0-9-]{2,8})?})?(.{0,250})?)?$",
|
|
1925
|
+
CMILangString4000: "^({lang=([a-zA-Z]{2,3}|i|x)(-[a-zA-Z0-9-]{2,8})?})?((?!{.*$).{0,4000}$)?$",
|
|
1926
|
+
CMITime: "^(19[7-9]{1}[0-9]{1}|20[0-2]{1}[0-9]{1}|203[0-8]{1})((-(0[1-9]{1}|1[0-2]{1}))((-(0[1-9]{1}|[1-2]{1}[0-9]{1}|3[0-1]{1}))(T([0-1]{1}[0-9]{1}|2[0-3]{1})((:[0-5]{1}[0-9]{1})((:[0-5]{1}[0-9]{1})((\\.[0-9]{1,2})((Z|([+|-]([0-1]{1}[0-9]{1}|2[0-3]{1})))(:[0-5]{1}[0-9]{1})?)?)?)?)?)?)?)?$",
|
|
1927
|
+
CMITimespan: "^P(?:([.,\\d]+)Y)?(?:([.,\\d]+)M)?(?:([.,\\d]+)W)?(?:([.,\\d]+)D)?(?:T?(?:([.,\\d]+)H)?(?:([.,\\d]+)M)?(?:([.,\\d]+)S)?)?$",
|
|
1928
|
+
CMIInteger: "^\\d+$",
|
|
1929
|
+
CMISInteger: "^-?([0-9]+)$",
|
|
1930
|
+
CMIDecimal: "^-?([0-9]{1,5})(\\.[0-9]{1,18})?$",
|
|
1931
|
+
CMIIdentifier: "^\\S{1,250}[a-zA-Z0-9]$",
|
|
1932
|
+
CMIShortIdentifier: "^[\\w\\.\\-\\_]{1,250}$",
|
|
1933
|
+
CMILongIdentifier: "^(?:(?!urn:)\\S{1,4000}|urn:[A-Za-z0-9-]{1,31}:\\S{1,4000}|.{1,4000})$",
|
|
1934
|
+
CMIFeedback: "^.*$",
|
|
1935
|
+
CMIIndex: "[._](\\d+).",
|
|
1936
|
+
CMIIndexStore: ".N(\\d+).",
|
|
1937
|
+
CMICStatus: "^(completed|incomplete|not attempted|unknown)$",
|
|
1938
|
+
CMISStatus: "^(passed|failed|unknown)$",
|
|
1939
|
+
CMIExit: "^(time-out|suspend|logout|normal)$",
|
|
1940
|
+
CMIType: "^(true-false|choice|fill-in|long-fill-in|matching|performance|sequencing|likert|numeric|other)$",
|
|
1941
|
+
CMIResult: "^(correct|incorrect|unanticipated|neutral|-?([0-9]{1,4})(\\.[0-9]{1,18})?)$",
|
|
1942
|
+
NAVEvent: "^(previous|continue|exit|exitAll|abandon|abandonAll|suspendAll|_none_|(\\{target=\\S{0,}[a-zA-Z0-9-_]+})?choice|(\\{target=\\S{0,}[a-zA-Z0-9-_]+})?jump)$",
|
|
1943
|
+
NAVBoolean: "^(unknown|true|false$)",
|
|
1944
|
+
NAVTarget: "^{target=\\S{0,}[a-zA-Z0-9-_]+}$",
|
|
1945
|
+
scaled_range: "-1#1",
|
|
1946
|
+
audio_range: "0#*",
|
|
1947
|
+
speed_range: "0#*",
|
|
1948
|
+
text_range: "-1#1",
|
|
1949
|
+
progress_range: "0#1",
|
|
1950
|
+
};
|
|
1951
|
+
var Regex = {
|
|
1952
|
+
aicc: regex_aicc,
|
|
1953
|
+
scorm12: regex_scorm12,
|
|
1954
|
+
scorm2004: regex_scorm2004,
|
|
1955
|
+
};
|
|
1956
|
+
/* harmony default export */ var regex = (Regex);
|
|
1957
|
+
|
|
1958
|
+
;// ./src/cmi/common/validation.ts
|
|
1959
|
+
function checkValidFormat(value, regexPattern, errorCode, errorClass, allowEmptyString) {
|
|
1960
|
+
if (typeof value !== "string") {
|
|
1961
|
+
return false;
|
|
1962
|
+
}
|
|
1963
|
+
var formatRegex = new RegExp(regexPattern);
|
|
1964
|
+
var matches = value.match(formatRegex);
|
|
1965
|
+
if (allowEmptyString && value === "") {
|
|
1966
|
+
return true;
|
|
1967
|
+
}
|
|
1968
|
+
if (value === undefined || !matches || matches[0] === "") {
|
|
1969
|
+
throw new errorClass(errorCode);
|
|
1970
|
+
}
|
|
1971
|
+
return true;
|
|
1972
|
+
}
|
|
1973
|
+
function checkValidRange(value, rangePattern, errorCode, errorClass) {
|
|
1974
|
+
var ranges = rangePattern.split("#");
|
|
1975
|
+
value = value * 1.0;
|
|
1976
|
+
if (value >= ranges[0]) {
|
|
1977
|
+
if (ranges[1] === "*" || value <= ranges[1]) {
|
|
1978
|
+
return true;
|
|
1950
1979
|
}
|
|
1951
1980
|
else {
|
|
1952
|
-
|
|
1953
|
-
console.error(e.message);
|
|
1954
|
-
}
|
|
1955
|
-
else {
|
|
1956
|
-
console.error(e);
|
|
1957
|
-
}
|
|
1958
|
-
this.throwSCORMError(this._error_codes.GENERAL);
|
|
1981
|
+
throw new errorClass(errorCode);
|
|
1959
1982
|
}
|
|
1960
|
-
return returnValue;
|
|
1961
|
-
};
|
|
1962
|
-
return BaseAPI;
|
|
1963
|
-
}());
|
|
1964
|
-
/* harmony default export */ var src_BaseAPI = (BaseAPI);
|
|
1965
|
-
var ScheduledCommit = (function () {
|
|
1966
|
-
function ScheduledCommit(API, when, callback) {
|
|
1967
|
-
this._cancelled = false;
|
|
1968
|
-
this._API = API;
|
|
1969
|
-
this._timeout = setTimeout(this.wrapper.bind(this), when);
|
|
1970
|
-
this._callback = callback;
|
|
1971
1983
|
}
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1975
|
-
|
|
1976
|
-
}
|
|
1977
|
-
};
|
|
1978
|
-
ScheduledCommit.prototype.wrapper = function () {
|
|
1979
|
-
if (!this._cancelled) {
|
|
1980
|
-
this._API.commit(this._callback);
|
|
1981
|
-
}
|
|
1982
|
-
};
|
|
1983
|
-
return ScheduledCommit;
|
|
1984
|
-
}());
|
|
1985
|
-
|
|
1986
|
-
;// ./src/cmi/scorm12_cmi.ts
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
|
|
1984
|
+
else {
|
|
1985
|
+
throw new errorClass(errorCode);
|
|
1986
|
+
}
|
|
1987
|
+
}
|
|
1990
1988
|
|
|
1989
|
+
;// ./src/cmi/scorm12/validation.ts
|
|
1991
1990
|
|
|
1992
1991
|
|
|
1993
1992
|
|
|
1994
|
-
var scorm12_cmi_scorm12_constants = api_constants.scorm12;
|
|
1995
|
-
var scorm12_cmi_scorm12_regex = regex.scorm12;
|
|
1996
|
-
var scorm12_cmi_scorm12_error_codes = error_codes.scorm12;
|
|
1997
1993
|
function check12ValidFormat(value, regexPattern, allowEmptyString) {
|
|
1998
|
-
return checkValidFormat(value, regexPattern,
|
|
1994
|
+
return checkValidFormat(value, regexPattern, error_codes.scorm12.TYPE_MISMATCH, Scorm12ValidationError, allowEmptyString);
|
|
1999
1995
|
}
|
|
2000
1996
|
function check12ValidRange(value, rangePattern, allowEmptyString) {
|
|
2001
1997
|
if (!allowEmptyString && value === "") {
|
|
2002
|
-
throw new Scorm12ValidationError(
|
|
1998
|
+
throw new Scorm12ValidationError(error_codes.scorm12.VALUE_OUT_OF_RANGE);
|
|
2003
1999
|
}
|
|
2004
|
-
return checkValidRange(value, rangePattern,
|
|
2000
|
+
return checkValidRange(value, rangePattern, error_codes.scorm12.VALUE_OUT_OF_RANGE, Scorm12ValidationError);
|
|
2005
2001
|
}
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
|
|
2002
|
+
|
|
2003
|
+
;// ./src/cmi/common/score.ts
|
|
2004
|
+
|
|
2005
|
+
|
|
2006
|
+
|
|
2007
|
+
|
|
2008
|
+
|
|
2009
|
+
|
|
2010
|
+
var scorm12_constants = api_constants.scorm12;
|
|
2011
|
+
var scorm12_regex = regex.scorm12;
|
|
2012
|
+
var score_scorm12_error_codes = error_codes.scorm12;
|
|
2013
|
+
var CMIScore = (function (_super) {
|
|
2014
|
+
__extends(CMIScore, _super);
|
|
2015
|
+
function CMIScore(params) {
|
|
2009
2016
|
var _this = _super.call(this) || this;
|
|
2010
|
-
_this.
|
|
2011
|
-
_this.
|
|
2012
|
-
_this.
|
|
2013
|
-
_this.
|
|
2014
|
-
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
_this.
|
|
2018
|
-
|
|
2019
|
-
|
|
2020
|
-
|
|
2021
|
-
_this.
|
|
2022
|
-
|
|
2023
|
-
_this.
|
|
2024
|
-
_this.
|
|
2017
|
+
_this._raw = "";
|
|
2018
|
+
_this._min = "";
|
|
2019
|
+
_this.__children = params.score_children || scorm12_constants.score_children;
|
|
2020
|
+
_this.__score_range = !params.score_range
|
|
2021
|
+
? false
|
|
2022
|
+
: scorm12_regex.score_range;
|
|
2023
|
+
_this._max = params.max || params.max === "" ? params.max : "100";
|
|
2024
|
+
_this.__invalid_error_code =
|
|
2025
|
+
params.invalidErrorCode || score_scorm12_error_codes.INVALID_SET_VALUE;
|
|
2026
|
+
_this.__invalid_type_code =
|
|
2027
|
+
params.invalidTypeCode || score_scorm12_error_codes.TYPE_MISMATCH;
|
|
2028
|
+
_this.__invalid_range_code =
|
|
2029
|
+
params.invalidRangeCode || score_scorm12_error_codes.VALUE_OUT_OF_RANGE;
|
|
2030
|
+
_this.__decimal_regex = params.decimalRegex || scorm12_regex.CMIDecimal;
|
|
2031
|
+
_this.__error_class = params.errorClass;
|
|
2025
2032
|
return _this;
|
|
2026
2033
|
}
|
|
2027
|
-
|
|
2028
|
-
var _a, _b, _c, _d, _e;
|
|
2029
|
-
_super.prototype.initialize.call(this);
|
|
2030
|
-
(_a = this.core) === null || _a === void 0 ? void 0 : _a.initialize();
|
|
2031
|
-
(_b = this.objectives) === null || _b === void 0 ? void 0 : _b.initialize();
|
|
2032
|
-
(_c = this.student_data) === null || _c === void 0 ? void 0 : _c.initialize();
|
|
2033
|
-
(_d = this.student_preference) === null || _d === void 0 ? void 0 : _d.initialize();
|
|
2034
|
-
(_e = this.interactions) === null || _e === void 0 ? void 0 : _e.initialize();
|
|
2035
|
-
};
|
|
2036
|
-
CMI.prototype.toJSON = function () {
|
|
2037
|
-
this.jsonString = true;
|
|
2038
|
-
var result = {
|
|
2039
|
-
suspend_data: this.suspend_data,
|
|
2040
|
-
launch_data: this.launch_data,
|
|
2041
|
-
comments: this.comments,
|
|
2042
|
-
comments_from_lms: this.comments_from_lms,
|
|
2043
|
-
core: this.core,
|
|
2044
|
-
objectives: this.objectives,
|
|
2045
|
-
student_data: this.student_data,
|
|
2046
|
-
student_preference: this.student_preference,
|
|
2047
|
-
interactions: this.interactions,
|
|
2048
|
-
};
|
|
2049
|
-
delete this.jsonString;
|
|
2050
|
-
return result;
|
|
2051
|
-
};
|
|
2052
|
-
Object.defineProperty(CMI.prototype, "_version", {
|
|
2053
|
-
get: function () {
|
|
2054
|
-
return this.__version;
|
|
2055
|
-
},
|
|
2056
|
-
set: function (_version) {
|
|
2057
|
-
throw new Scorm12ValidationError(scorm12_cmi_scorm12_error_codes.INVALID_SET_VALUE);
|
|
2058
|
-
},
|
|
2059
|
-
enumerable: false,
|
|
2060
|
-
configurable: true
|
|
2061
|
-
});
|
|
2062
|
-
Object.defineProperty(CMI.prototype, "_children", {
|
|
2034
|
+
Object.defineProperty(CMIScore.prototype, "_children", {
|
|
2063
2035
|
get: function () {
|
|
2064
2036
|
return this.__children;
|
|
2065
2037
|
},
|
|
2066
2038
|
set: function (_children) {
|
|
2067
|
-
throw new
|
|
2068
|
-
},
|
|
2069
|
-
enumerable: false,
|
|
2070
|
-
configurable: true
|
|
2071
|
-
});
|
|
2072
|
-
Object.defineProperty(CMI.prototype, "suspend_data", {
|
|
2073
|
-
get: function () {
|
|
2074
|
-
var _a;
|
|
2075
|
-
return (_a = this.core) === null || _a === void 0 ? void 0 : _a.suspend_data;
|
|
2076
|
-
},
|
|
2077
|
-
set: function (suspend_data) {
|
|
2078
|
-
if (this.core) {
|
|
2079
|
-
this.core.suspend_data = suspend_data;
|
|
2080
|
-
}
|
|
2039
|
+
throw new this.__error_class(this.__invalid_error_code);
|
|
2081
2040
|
},
|
|
2082
2041
|
enumerable: false,
|
|
2083
2042
|
configurable: true
|
|
2084
2043
|
});
|
|
2085
|
-
Object.defineProperty(
|
|
2044
|
+
Object.defineProperty(CMIScore.prototype, "raw", {
|
|
2086
2045
|
get: function () {
|
|
2087
|
-
return this.
|
|
2046
|
+
return this._raw;
|
|
2088
2047
|
},
|
|
2089
|
-
set: function (
|
|
2090
|
-
if (this.
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
this._launch_data = launch_data;
|
|
2048
|
+
set: function (raw) {
|
|
2049
|
+
if (checkValidFormat(raw, this.__decimal_regex, this.__invalid_type_code, this.__error_class) &&
|
|
2050
|
+
(!this.__score_range ||
|
|
2051
|
+
checkValidRange(raw, this.__score_range, this.__invalid_range_code, this.__error_class))) {
|
|
2052
|
+
this._raw = raw;
|
|
2095
2053
|
}
|
|
2096
2054
|
},
|
|
2097
2055
|
enumerable: false,
|
|
2098
2056
|
configurable: true
|
|
2099
2057
|
});
|
|
2100
|
-
Object.defineProperty(
|
|
2058
|
+
Object.defineProperty(CMIScore.prototype, "min", {
|
|
2101
2059
|
get: function () {
|
|
2102
|
-
return this.
|
|
2060
|
+
return this._min;
|
|
2103
2061
|
},
|
|
2104
|
-
set: function (
|
|
2105
|
-
if (
|
|
2106
|
-
this.
|
|
2062
|
+
set: function (min) {
|
|
2063
|
+
if (checkValidFormat(min, this.__decimal_regex, this.__invalid_type_code, this.__error_class) &&
|
|
2064
|
+
(!this.__score_range ||
|
|
2065
|
+
checkValidRange(min, this.__score_range, this.__invalid_range_code, this.__error_class))) {
|
|
2066
|
+
this._min = min;
|
|
2107
2067
|
}
|
|
2108
2068
|
},
|
|
2109
2069
|
enumerable: false,
|
|
2110
2070
|
configurable: true
|
|
2111
2071
|
});
|
|
2112
|
-
Object.defineProperty(
|
|
2072
|
+
Object.defineProperty(CMIScore.prototype, "max", {
|
|
2113
2073
|
get: function () {
|
|
2114
|
-
return this.
|
|
2074
|
+
return this._max;
|
|
2115
2075
|
},
|
|
2116
|
-
set: function (
|
|
2117
|
-
if (this.
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
-
this._comments_from_lms = comments_from_lms;
|
|
2076
|
+
set: function (max) {
|
|
2077
|
+
if (checkValidFormat(max, this.__decimal_regex, this.__invalid_type_code, this.__error_class) &&
|
|
2078
|
+
(!this.__score_range ||
|
|
2079
|
+
checkValidRange(max, this.__score_range, this.__invalid_range_code, this.__error_class))) {
|
|
2080
|
+
this._max = max;
|
|
2122
2081
|
}
|
|
2123
2082
|
},
|
|
2124
2083
|
enumerable: false,
|
|
2125
2084
|
configurable: true
|
|
2126
2085
|
});
|
|
2127
|
-
|
|
2128
|
-
|
|
2086
|
+
CMIScore.prototype.toJSON = function () {
|
|
2087
|
+
this.jsonString = true;
|
|
2088
|
+
var result = {
|
|
2089
|
+
raw: this.raw,
|
|
2090
|
+
min: this.min,
|
|
2091
|
+
max: this.max,
|
|
2092
|
+
};
|
|
2093
|
+
delete this.jsonString;
|
|
2094
|
+
return result;
|
|
2129
2095
|
};
|
|
2130
|
-
return
|
|
2131
|
-
}(
|
|
2096
|
+
return CMIScore;
|
|
2097
|
+
}(BaseCMI));
|
|
2098
|
+
|
|
2099
|
+
|
|
2100
|
+
;// ./src/cmi/aicc/core.ts
|
|
2101
|
+
|
|
2102
|
+
|
|
2103
|
+
|
|
2104
|
+
|
|
2105
|
+
|
|
2106
|
+
|
|
2107
|
+
|
|
2108
|
+
|
|
2132
2109
|
|
|
2133
2110
|
var CMICore = (function (_super) {
|
|
2134
2111
|
__extends(CMICore, _super);
|
|
2135
2112
|
function CMICore() {
|
|
2136
2113
|
var _this = _super.call(this) || this;
|
|
2137
|
-
_this.__children =
|
|
2114
|
+
_this.__children = api_constants.scorm12.core_children;
|
|
2138
2115
|
_this._student_id = "";
|
|
2139
2116
|
_this._student_name = "";
|
|
2140
2117
|
_this._lesson_location = "";
|
|
@@ -2147,11 +2124,11 @@ var CMICore = (function (_super) {
|
|
|
2147
2124
|
_this._session_time = "00:00:00";
|
|
2148
2125
|
_this._suspend_data = "";
|
|
2149
2126
|
_this.score = new CMIScore({
|
|
2150
|
-
score_children:
|
|
2151
|
-
score_range:
|
|
2152
|
-
invalidErrorCode:
|
|
2153
|
-
invalidTypeCode:
|
|
2154
|
-
invalidRangeCode:
|
|
2127
|
+
score_children: api_constants.scorm12.score_children,
|
|
2128
|
+
score_range: regex.scorm12.score_range,
|
|
2129
|
+
invalidErrorCode: error_codes.scorm12.INVALID_SET_VALUE,
|
|
2130
|
+
invalidTypeCode: error_codes.scorm12.TYPE_MISMATCH,
|
|
2131
|
+
invalidRangeCode: error_codes.scorm12.VALUE_OUT_OF_RANGE,
|
|
2155
2132
|
errorClass: Scorm12ValidationError,
|
|
2156
2133
|
});
|
|
2157
2134
|
return _this;
|
|
@@ -2166,7 +2143,7 @@ var CMICore = (function (_super) {
|
|
|
2166
2143
|
return this.__children;
|
|
2167
2144
|
},
|
|
2168
2145
|
set: function (_children) {
|
|
2169
|
-
throw new Scorm12ValidationError(
|
|
2146
|
+
throw new Scorm12ValidationError(error_codes.scorm12.INVALID_SET_VALUE);
|
|
2170
2147
|
},
|
|
2171
2148
|
enumerable: false,
|
|
2172
2149
|
configurable: true
|
|
@@ -2177,7 +2154,7 @@ var CMICore = (function (_super) {
|
|
|
2177
2154
|
},
|
|
2178
2155
|
set: function (student_id) {
|
|
2179
2156
|
if (this.initialized) {
|
|
2180
|
-
throw new Scorm12ValidationError(
|
|
2157
|
+
throw new Scorm12ValidationError(error_codes.scorm12.READ_ONLY_ELEMENT);
|
|
2181
2158
|
}
|
|
2182
2159
|
else {
|
|
2183
2160
|
this._student_id = student_id;
|
|
@@ -2192,7 +2169,7 @@ var CMICore = (function (_super) {
|
|
|
2192
2169
|
},
|
|
2193
2170
|
set: function (student_name) {
|
|
2194
2171
|
if (this.initialized) {
|
|
2195
|
-
throw new Scorm12ValidationError(
|
|
2172
|
+
throw new Scorm12ValidationError(error_codes.scorm12.READ_ONLY_ELEMENT);
|
|
2196
2173
|
}
|
|
2197
2174
|
else {
|
|
2198
2175
|
this._student_name = student_name;
|
|
@@ -2206,7 +2183,7 @@ var CMICore = (function (_super) {
|
|
|
2206
2183
|
return this._lesson_location;
|
|
2207
2184
|
},
|
|
2208
2185
|
set: function (lesson_location) {
|
|
2209
|
-
if (check12ValidFormat(lesson_location,
|
|
2186
|
+
if (check12ValidFormat(lesson_location, regex.scorm12.CMIString256, true)) {
|
|
2210
2187
|
this._lesson_location = lesson_location;
|
|
2211
2188
|
}
|
|
2212
2189
|
},
|
|
@@ -2219,7 +2196,7 @@ var CMICore = (function (_super) {
|
|
|
2219
2196
|
},
|
|
2220
2197
|
set: function (credit) {
|
|
2221
2198
|
if (this.initialized) {
|
|
2222
|
-
throw new Scorm12ValidationError(
|
|
2199
|
+
throw new Scorm12ValidationError(error_codes.scorm12.READ_ONLY_ELEMENT);
|
|
2223
2200
|
}
|
|
2224
2201
|
else {
|
|
2225
2202
|
this._credit = credit;
|
|
@@ -2234,12 +2211,12 @@ var CMICore = (function (_super) {
|
|
|
2234
2211
|
},
|
|
2235
2212
|
set: function (lesson_status) {
|
|
2236
2213
|
if (this.initialized) {
|
|
2237
|
-
if (check12ValidFormat(lesson_status,
|
|
2214
|
+
if (check12ValidFormat(lesson_status, regex.scorm12.CMIStatus)) {
|
|
2238
2215
|
this._lesson_status = lesson_status;
|
|
2239
2216
|
}
|
|
2240
2217
|
}
|
|
2241
2218
|
else {
|
|
2242
|
-
if (check12ValidFormat(lesson_status,
|
|
2219
|
+
if (check12ValidFormat(lesson_status, regex.scorm12.CMIStatus2)) {
|
|
2243
2220
|
this._lesson_status = lesson_status;
|
|
2244
2221
|
}
|
|
2245
2222
|
}
|
|
@@ -2253,7 +2230,7 @@ var CMICore = (function (_super) {
|
|
|
2253
2230
|
},
|
|
2254
2231
|
set: function (entry) {
|
|
2255
2232
|
if (this.initialized) {
|
|
2256
|
-
throw new Scorm12ValidationError(
|
|
2233
|
+
throw new Scorm12ValidationError(error_codes.scorm12.READ_ONLY_ELEMENT);
|
|
2257
2234
|
}
|
|
2258
2235
|
else {
|
|
2259
2236
|
this._entry = entry;
|
|
@@ -2268,7 +2245,7 @@ var CMICore = (function (_super) {
|
|
|
2268
2245
|
},
|
|
2269
2246
|
set: function (total_time) {
|
|
2270
2247
|
if (this.initialized) {
|
|
2271
|
-
throw new Scorm12ValidationError(
|
|
2248
|
+
throw new Scorm12ValidationError(error_codes.scorm12.READ_ONLY_ELEMENT);
|
|
2272
2249
|
}
|
|
2273
2250
|
else {
|
|
2274
2251
|
this._total_time = total_time;
|
|
@@ -2283,7 +2260,7 @@ var CMICore = (function (_super) {
|
|
|
2283
2260
|
},
|
|
2284
2261
|
set: function (lesson_mode) {
|
|
2285
2262
|
if (this.initialized) {
|
|
2286
|
-
throw new Scorm12ValidationError(
|
|
2263
|
+
throw new Scorm12ValidationError(error_codes.scorm12.READ_ONLY_ELEMENT);
|
|
2287
2264
|
}
|
|
2288
2265
|
else {
|
|
2289
2266
|
this._lesson_mode = lesson_mode;
|
|
@@ -2295,12 +2272,12 @@ var CMICore = (function (_super) {
|
|
|
2295
2272
|
Object.defineProperty(CMICore.prototype, "exit", {
|
|
2296
2273
|
get: function () {
|
|
2297
2274
|
if (!this.jsonString) {
|
|
2298
|
-
throw new Scorm12ValidationError(
|
|
2275
|
+
throw new Scorm12ValidationError(error_codes.scorm12.WRITE_ONLY_ELEMENT);
|
|
2299
2276
|
}
|
|
2300
2277
|
return this._exit;
|
|
2301
2278
|
},
|
|
2302
2279
|
set: function (exit) {
|
|
2303
|
-
if (check12ValidFormat(exit,
|
|
2280
|
+
if (check12ValidFormat(exit, regex.scorm12.CMIExit, true)) {
|
|
2304
2281
|
this._exit = exit;
|
|
2305
2282
|
}
|
|
2306
2283
|
},
|
|
@@ -2310,12 +2287,12 @@ var CMICore = (function (_super) {
|
|
|
2310
2287
|
Object.defineProperty(CMICore.prototype, "session_time", {
|
|
2311
2288
|
get: function () {
|
|
2312
2289
|
if (!this.jsonString) {
|
|
2313
|
-
throw new Scorm12ValidationError(
|
|
2290
|
+
throw new Scorm12ValidationError(error_codes.scorm12.WRITE_ONLY_ELEMENT);
|
|
2314
2291
|
}
|
|
2315
2292
|
return this._session_time;
|
|
2316
2293
|
},
|
|
2317
2294
|
set: function (session_time) {
|
|
2318
|
-
if (check12ValidFormat(session_time,
|
|
2295
|
+
if (check12ValidFormat(session_time, regex.scorm12.CMITimespan)) {
|
|
2319
2296
|
this._session_time = session_time;
|
|
2320
2297
|
}
|
|
2321
2298
|
},
|
|
@@ -2327,7 +2304,7 @@ var CMICore = (function (_super) {
|
|
|
2327
2304
|
return this._suspend_data;
|
|
2328
2305
|
},
|
|
2329
2306
|
set: function (suspend_data) {
|
|
2330
|
-
if (check12ValidFormat(suspend_data,
|
|
2307
|
+
if (check12ValidFormat(suspend_data, regex.scorm12.CMIString4096, true)) {
|
|
2331
2308
|
this._suspend_data = suspend_data;
|
|
2332
2309
|
}
|
|
2333
2310
|
},
|
|
@@ -2341,7 +2318,7 @@ var CMICore = (function (_super) {
|
|
|
2341
2318
|
var seconds = new Date().getTime() - startTime;
|
|
2342
2319
|
sessionTime = getSecondsAsHHMMSS(seconds / 1000);
|
|
2343
2320
|
}
|
|
2344
|
-
return addHHMMSSTimeStrings(this._total_time, sessionTime, new RegExp(
|
|
2321
|
+
return addHHMMSSTimeStrings(this._total_time, sessionTime, new RegExp(regex.scorm12.CMITimespan));
|
|
2345
2322
|
};
|
|
2346
2323
|
CMICore.prototype.toJSON = function () {
|
|
2347
2324
|
this.jsonString = true;
|
|
@@ -2363,18 +2340,89 @@ var CMICore = (function (_super) {
|
|
|
2363
2340
|
return CMICore;
|
|
2364
2341
|
}(BaseCMI));
|
|
2365
2342
|
|
|
2343
|
+
|
|
2344
|
+
;// ./src/cmi/scorm12/objectives.ts
|
|
2345
|
+
|
|
2346
|
+
|
|
2347
|
+
|
|
2348
|
+
|
|
2349
|
+
|
|
2350
|
+
|
|
2351
|
+
|
|
2352
|
+
|
|
2353
|
+
|
|
2366
2354
|
var CMIObjectives = (function (_super) {
|
|
2367
2355
|
__extends(CMIObjectives, _super);
|
|
2368
2356
|
function CMIObjectives() {
|
|
2369
2357
|
return _super.call(this, {
|
|
2370
|
-
children:
|
|
2371
|
-
errorCode:
|
|
2358
|
+
children: api_constants.scorm12.objectives_children,
|
|
2359
|
+
errorCode: error_codes.scorm12.INVALID_SET_VALUE,
|
|
2372
2360
|
errorClass: Scorm12ValidationError,
|
|
2373
2361
|
}) || this;
|
|
2374
2362
|
}
|
|
2375
2363
|
return CMIObjectives;
|
|
2376
2364
|
}(CMIArray));
|
|
2377
2365
|
|
|
2366
|
+
var CMIObjectivesObject = (function (_super) {
|
|
2367
|
+
__extends(CMIObjectivesObject, _super);
|
|
2368
|
+
function CMIObjectivesObject() {
|
|
2369
|
+
var _this = _super.call(this) || this;
|
|
2370
|
+
_this._id = "";
|
|
2371
|
+
_this._status = "";
|
|
2372
|
+
_this.score = new CMIScore({
|
|
2373
|
+
score_children: api_constants.scorm12.score_children,
|
|
2374
|
+
score_range: regex.scorm12.score_range,
|
|
2375
|
+
invalidErrorCode: error_codes.scorm12.INVALID_SET_VALUE,
|
|
2376
|
+
invalidTypeCode: error_codes.scorm12.TYPE_MISMATCH,
|
|
2377
|
+
invalidRangeCode: error_codes.scorm12.VALUE_OUT_OF_RANGE,
|
|
2378
|
+
errorClass: Scorm12ValidationError,
|
|
2379
|
+
});
|
|
2380
|
+
return _this;
|
|
2381
|
+
}
|
|
2382
|
+
Object.defineProperty(CMIObjectivesObject.prototype, "id", {
|
|
2383
|
+
get: function () {
|
|
2384
|
+
return this._id;
|
|
2385
|
+
},
|
|
2386
|
+
set: function (id) {
|
|
2387
|
+
if (check12ValidFormat(id, regex.scorm12.CMIIdentifier)) {
|
|
2388
|
+
this._id = id;
|
|
2389
|
+
}
|
|
2390
|
+
},
|
|
2391
|
+
enumerable: false,
|
|
2392
|
+
configurable: true
|
|
2393
|
+
});
|
|
2394
|
+
Object.defineProperty(CMIObjectivesObject.prototype, "status", {
|
|
2395
|
+
get: function () {
|
|
2396
|
+
return this._status;
|
|
2397
|
+
},
|
|
2398
|
+
set: function (status) {
|
|
2399
|
+
if (check12ValidFormat(status, regex.scorm12.CMIStatus2)) {
|
|
2400
|
+
this._status = status;
|
|
2401
|
+
}
|
|
2402
|
+
},
|
|
2403
|
+
enumerable: false,
|
|
2404
|
+
configurable: true
|
|
2405
|
+
});
|
|
2406
|
+
CMIObjectivesObject.prototype.toJSON = function () {
|
|
2407
|
+
this.jsonString = true;
|
|
2408
|
+
var result = {
|
|
2409
|
+
id: this.id,
|
|
2410
|
+
status: this.status,
|
|
2411
|
+
score: this.score,
|
|
2412
|
+
};
|
|
2413
|
+
delete this.jsonString;
|
|
2414
|
+
return result;
|
|
2415
|
+
};
|
|
2416
|
+
return CMIObjectivesObject;
|
|
2417
|
+
}(BaseCMI));
|
|
2418
|
+
|
|
2419
|
+
|
|
2420
|
+
;// ./src/cmi/scorm12/student_data.ts
|
|
2421
|
+
|
|
2422
|
+
|
|
2423
|
+
|
|
2424
|
+
|
|
2425
|
+
|
|
2378
2426
|
var CMIStudentData = (function (_super) {
|
|
2379
2427
|
__extends(CMIStudentData, _super);
|
|
2380
2428
|
function CMIStudentData(student_data_children) {
|
|
@@ -2384,7 +2432,7 @@ var CMIStudentData = (function (_super) {
|
|
|
2384
2432
|
_this._time_limit_action = "";
|
|
2385
2433
|
_this.__children = student_data_children
|
|
2386
2434
|
? student_data_children
|
|
2387
|
-
:
|
|
2435
|
+
: api_constants.scorm12.student_data_children;
|
|
2388
2436
|
return _this;
|
|
2389
2437
|
}
|
|
2390
2438
|
Object.defineProperty(CMIStudentData.prototype, "_children", {
|
|
@@ -2392,7 +2440,7 @@ var CMIStudentData = (function (_super) {
|
|
|
2392
2440
|
return this.__children;
|
|
2393
2441
|
},
|
|
2394
2442
|
set: function (_children) {
|
|
2395
|
-
throw new Scorm12ValidationError(
|
|
2443
|
+
throw new Scorm12ValidationError(error_codes.scorm12.INVALID_SET_VALUE);
|
|
2396
2444
|
},
|
|
2397
2445
|
enumerable: false,
|
|
2398
2446
|
configurable: true
|
|
@@ -2403,7 +2451,7 @@ var CMIStudentData = (function (_super) {
|
|
|
2403
2451
|
},
|
|
2404
2452
|
set: function (mastery_score) {
|
|
2405
2453
|
if (this.initialized) {
|
|
2406
|
-
throw new Scorm12ValidationError(
|
|
2454
|
+
throw new Scorm12ValidationError(error_codes.scorm12.READ_ONLY_ELEMENT);
|
|
2407
2455
|
}
|
|
2408
2456
|
else {
|
|
2409
2457
|
this._mastery_score = mastery_score;
|
|
@@ -2418,7 +2466,7 @@ var CMIStudentData = (function (_super) {
|
|
|
2418
2466
|
},
|
|
2419
2467
|
set: function (max_time_allowed) {
|
|
2420
2468
|
if (this.initialized) {
|
|
2421
|
-
throw new Scorm12ValidationError(
|
|
2469
|
+
throw new Scorm12ValidationError(error_codes.scorm12.READ_ONLY_ELEMENT);
|
|
2422
2470
|
}
|
|
2423
2471
|
else {
|
|
2424
2472
|
this._max_time_allowed = max_time_allowed;
|
|
@@ -2433,7 +2481,7 @@ var CMIStudentData = (function (_super) {
|
|
|
2433
2481
|
},
|
|
2434
2482
|
set: function (time_limit_action) {
|
|
2435
2483
|
if (this.initialized) {
|
|
2436
|
-
throw new Scorm12ValidationError(
|
|
2484
|
+
throw new Scorm12ValidationError(error_codes.scorm12.READ_ONLY_ELEMENT);
|
|
2437
2485
|
}
|
|
2438
2486
|
else {
|
|
2439
2487
|
this._time_limit_action = time_limit_action;
|
|
@@ -2455,6 +2503,15 @@ var CMIStudentData = (function (_super) {
|
|
|
2455
2503
|
return CMIStudentData;
|
|
2456
2504
|
}(BaseCMI));
|
|
2457
2505
|
|
|
2506
|
+
|
|
2507
|
+
;// ./src/cmi/scorm12/student_preference.ts
|
|
2508
|
+
|
|
2509
|
+
|
|
2510
|
+
|
|
2511
|
+
|
|
2512
|
+
|
|
2513
|
+
|
|
2514
|
+
|
|
2458
2515
|
var CMIStudentPreference = (function (_super) {
|
|
2459
2516
|
__extends(CMIStudentPreference, _super);
|
|
2460
2517
|
function CMIStudentPreference(student_preference_children) {
|
|
@@ -2465,7 +2522,7 @@ var CMIStudentPreference = (function (_super) {
|
|
|
2465
2522
|
_this._text = "";
|
|
2466
2523
|
_this.__children = student_preference_children
|
|
2467
2524
|
? student_preference_children
|
|
2468
|
-
:
|
|
2525
|
+
: api_constants.scorm12.student_preference_children;
|
|
2469
2526
|
return _this;
|
|
2470
2527
|
}
|
|
2471
2528
|
Object.defineProperty(CMIStudentPreference.prototype, "_children", {
|
|
@@ -2473,7 +2530,7 @@ var CMIStudentPreference = (function (_super) {
|
|
|
2473
2530
|
return this.__children;
|
|
2474
2531
|
},
|
|
2475
2532
|
set: function (_children) {
|
|
2476
|
-
throw new Scorm12ValidationError(
|
|
2533
|
+
throw new Scorm12ValidationError(error_codes.scorm12.INVALID_SET_VALUE);
|
|
2477
2534
|
},
|
|
2478
2535
|
enumerable: false,
|
|
2479
2536
|
configurable: true
|
|
@@ -2483,8 +2540,8 @@ var CMIStudentPreference = (function (_super) {
|
|
|
2483
2540
|
return this._audio;
|
|
2484
2541
|
},
|
|
2485
2542
|
set: function (audio) {
|
|
2486
|
-
if (check12ValidFormat(audio,
|
|
2487
|
-
check12ValidRange(audio,
|
|
2543
|
+
if (check12ValidFormat(audio, regex.scorm12.CMISInteger) &&
|
|
2544
|
+
check12ValidRange(audio, regex.scorm12.audio_range)) {
|
|
2488
2545
|
this._audio = audio;
|
|
2489
2546
|
}
|
|
2490
2547
|
},
|
|
@@ -2496,7 +2553,7 @@ var CMIStudentPreference = (function (_super) {
|
|
|
2496
2553
|
return this._language;
|
|
2497
2554
|
},
|
|
2498
2555
|
set: function (language) {
|
|
2499
|
-
if (check12ValidFormat(language,
|
|
2556
|
+
if (check12ValidFormat(language, regex.scorm12.CMIString256)) {
|
|
2500
2557
|
this._language = language;
|
|
2501
2558
|
}
|
|
2502
2559
|
},
|
|
@@ -2508,8 +2565,8 @@ var CMIStudentPreference = (function (_super) {
|
|
|
2508
2565
|
return this._speed;
|
|
2509
2566
|
},
|
|
2510
2567
|
set: function (speed) {
|
|
2511
|
-
if (check12ValidFormat(speed,
|
|
2512
|
-
check12ValidRange(speed,
|
|
2568
|
+
if (check12ValidFormat(speed, regex.scorm12.CMISInteger) &&
|
|
2569
|
+
check12ValidRange(speed, regex.scorm12.speed_range)) {
|
|
2513
2570
|
this._speed = speed;
|
|
2514
2571
|
}
|
|
2515
2572
|
},
|
|
@@ -2521,8 +2578,8 @@ var CMIStudentPreference = (function (_super) {
|
|
|
2521
2578
|
return this._text;
|
|
2522
2579
|
},
|
|
2523
2580
|
set: function (text) {
|
|
2524
|
-
if (check12ValidFormat(text,
|
|
2525
|
-
check12ValidRange(text,
|
|
2581
|
+
if (check12ValidFormat(text, regex.scorm12.CMISInteger) &&
|
|
2582
|
+
check12ValidRange(text, regex.scorm12.text_range)) {
|
|
2526
2583
|
this._text = text;
|
|
2527
2584
|
}
|
|
2528
2585
|
},
|
|
@@ -2543,12 +2600,22 @@ var CMIStudentPreference = (function (_super) {
|
|
|
2543
2600
|
return CMIStudentPreference;
|
|
2544
2601
|
}(BaseCMI));
|
|
2545
2602
|
|
|
2603
|
+
|
|
2604
|
+
;// ./src/cmi/scorm12/interactions.ts
|
|
2605
|
+
|
|
2606
|
+
|
|
2607
|
+
|
|
2608
|
+
|
|
2609
|
+
|
|
2610
|
+
|
|
2611
|
+
|
|
2612
|
+
|
|
2546
2613
|
var CMIInteractions = (function (_super) {
|
|
2547
2614
|
__extends(CMIInteractions, _super);
|
|
2548
2615
|
function CMIInteractions() {
|
|
2549
2616
|
return _super.call(this, {
|
|
2550
|
-
children:
|
|
2551
|
-
errorCode:
|
|
2617
|
+
children: api_constants.scorm12.interactions_children,
|
|
2618
|
+
errorCode: error_codes.scorm12.INVALID_SET_VALUE,
|
|
2552
2619
|
errorClass: Scorm12ValidationError,
|
|
2553
2620
|
}) || this;
|
|
2554
2621
|
}
|
|
@@ -2567,14 +2634,14 @@ var CMIInteractionsObject = (function (_super) {
|
|
|
2567
2634
|
_this._result = "";
|
|
2568
2635
|
_this._latency = "";
|
|
2569
2636
|
_this.objectives = new CMIArray({
|
|
2570
|
-
errorCode:
|
|
2637
|
+
errorCode: error_codes.scorm12.INVALID_SET_VALUE,
|
|
2571
2638
|
errorClass: Scorm12ValidationError,
|
|
2572
|
-
children:
|
|
2639
|
+
children: api_constants.scorm12.objectives_children,
|
|
2573
2640
|
});
|
|
2574
2641
|
_this.correct_responses = new CMIArray({
|
|
2575
|
-
errorCode:
|
|
2642
|
+
errorCode: error_codes.scorm12.INVALID_SET_VALUE,
|
|
2576
2643
|
errorClass: Scorm12ValidationError,
|
|
2577
|
-
children:
|
|
2644
|
+
children: api_constants.scorm12.correct_responses_children,
|
|
2578
2645
|
});
|
|
2579
2646
|
return _this;
|
|
2580
2647
|
}
|
|
@@ -2587,12 +2654,12 @@ var CMIInteractionsObject = (function (_super) {
|
|
|
2587
2654
|
Object.defineProperty(CMIInteractionsObject.prototype, "id", {
|
|
2588
2655
|
get: function () {
|
|
2589
2656
|
if (!this.jsonString) {
|
|
2590
|
-
throw new Scorm12ValidationError(
|
|
2657
|
+
throw new Scorm12ValidationError(error_codes.scorm12.WRITE_ONLY_ELEMENT);
|
|
2591
2658
|
}
|
|
2592
2659
|
return this._id;
|
|
2593
2660
|
},
|
|
2594
2661
|
set: function (id) {
|
|
2595
|
-
if (check12ValidFormat(id,
|
|
2662
|
+
if (check12ValidFormat(id, regex.scorm12.CMIIdentifier)) {
|
|
2596
2663
|
this._id = id;
|
|
2597
2664
|
}
|
|
2598
2665
|
},
|
|
@@ -2602,12 +2669,12 @@ var CMIInteractionsObject = (function (_super) {
|
|
|
2602
2669
|
Object.defineProperty(CMIInteractionsObject.prototype, "time", {
|
|
2603
2670
|
get: function () {
|
|
2604
2671
|
if (!this.jsonString) {
|
|
2605
|
-
throw new Scorm12ValidationError(
|
|
2672
|
+
throw new Scorm12ValidationError(error_codes.scorm12.WRITE_ONLY_ELEMENT);
|
|
2606
2673
|
}
|
|
2607
2674
|
return this._time;
|
|
2608
2675
|
},
|
|
2609
2676
|
set: function (time) {
|
|
2610
|
-
if (check12ValidFormat(time,
|
|
2677
|
+
if (check12ValidFormat(time, regex.scorm12.CMITime)) {
|
|
2611
2678
|
this._time = time;
|
|
2612
2679
|
}
|
|
2613
2680
|
},
|
|
@@ -2617,12 +2684,12 @@ var CMIInteractionsObject = (function (_super) {
|
|
|
2617
2684
|
Object.defineProperty(CMIInteractionsObject.prototype, "type", {
|
|
2618
2685
|
get: function () {
|
|
2619
2686
|
if (!this.jsonString) {
|
|
2620
|
-
throw new Scorm12ValidationError(
|
|
2687
|
+
throw new Scorm12ValidationError(error_codes.scorm12.WRITE_ONLY_ELEMENT);
|
|
2621
2688
|
}
|
|
2622
2689
|
return this._type;
|
|
2623
2690
|
},
|
|
2624
2691
|
set: function (type) {
|
|
2625
|
-
if (check12ValidFormat(type,
|
|
2692
|
+
if (check12ValidFormat(type, regex.scorm12.CMIType)) {
|
|
2626
2693
|
this._type = type;
|
|
2627
2694
|
}
|
|
2628
2695
|
},
|
|
@@ -2632,13 +2699,13 @@ var CMIInteractionsObject = (function (_super) {
|
|
|
2632
2699
|
Object.defineProperty(CMIInteractionsObject.prototype, "weighting", {
|
|
2633
2700
|
get: function () {
|
|
2634
2701
|
if (!this.jsonString) {
|
|
2635
|
-
throw new Scorm12ValidationError(
|
|
2702
|
+
throw new Scorm12ValidationError(error_codes.scorm12.WRITE_ONLY_ELEMENT);
|
|
2636
2703
|
}
|
|
2637
2704
|
return this._weighting;
|
|
2638
2705
|
},
|
|
2639
2706
|
set: function (weighting) {
|
|
2640
|
-
if (check12ValidFormat(weighting,
|
|
2641
|
-
check12ValidRange(weighting,
|
|
2707
|
+
if (check12ValidFormat(weighting, regex.scorm12.CMIDecimal) &&
|
|
2708
|
+
check12ValidRange(weighting, regex.scorm12.weighting_range)) {
|
|
2642
2709
|
this._weighting = weighting;
|
|
2643
2710
|
}
|
|
2644
2711
|
},
|
|
@@ -2648,12 +2715,12 @@ var CMIInteractionsObject = (function (_super) {
|
|
|
2648
2715
|
Object.defineProperty(CMIInteractionsObject.prototype, "student_response", {
|
|
2649
2716
|
get: function () {
|
|
2650
2717
|
if (!this.jsonString) {
|
|
2651
|
-
throw new Scorm12ValidationError(
|
|
2718
|
+
throw new Scorm12ValidationError(error_codes.scorm12.WRITE_ONLY_ELEMENT);
|
|
2652
2719
|
}
|
|
2653
2720
|
return this._student_response;
|
|
2654
2721
|
},
|
|
2655
2722
|
set: function (student_response) {
|
|
2656
|
-
if (check12ValidFormat(student_response,
|
|
2723
|
+
if (check12ValidFormat(student_response, regex.scorm12.CMIFeedback, true)) {
|
|
2657
2724
|
this._student_response = student_response;
|
|
2658
2725
|
}
|
|
2659
2726
|
},
|
|
@@ -2663,12 +2730,12 @@ var CMIInteractionsObject = (function (_super) {
|
|
|
2663
2730
|
Object.defineProperty(CMIInteractionsObject.prototype, "result", {
|
|
2664
2731
|
get: function () {
|
|
2665
2732
|
if (!this.jsonString) {
|
|
2666
|
-
throw new Scorm12ValidationError(
|
|
2733
|
+
throw new Scorm12ValidationError(error_codes.scorm12.WRITE_ONLY_ELEMENT);
|
|
2667
2734
|
}
|
|
2668
2735
|
return this._result;
|
|
2669
2736
|
},
|
|
2670
2737
|
set: function (result) {
|
|
2671
|
-
if (check12ValidFormat(result,
|
|
2738
|
+
if (check12ValidFormat(result, regex.scorm12.CMIResult)) {
|
|
2672
2739
|
this._result = result;
|
|
2673
2740
|
}
|
|
2674
2741
|
},
|
|
@@ -2678,12 +2745,12 @@ var CMIInteractionsObject = (function (_super) {
|
|
|
2678
2745
|
Object.defineProperty(CMIInteractionsObject.prototype, "latency", {
|
|
2679
2746
|
get: function () {
|
|
2680
2747
|
if (!this.jsonString) {
|
|
2681
|
-
throw new Scorm12ValidationError(
|
|
2748
|
+
throw new Scorm12ValidationError(error_codes.scorm12.WRITE_ONLY_ELEMENT);
|
|
2682
2749
|
}
|
|
2683
2750
|
return this._latency;
|
|
2684
2751
|
},
|
|
2685
2752
|
set: function (latency) {
|
|
2686
|
-
if (check12ValidFormat(latency,
|
|
2753
|
+
if (check12ValidFormat(latency, regex.scorm12.CMITimespan)) {
|
|
2687
2754
|
this._latency = latency;
|
|
2688
2755
|
}
|
|
2689
2756
|
},
|
|
@@ -2709,59 +2776,6 @@ var CMIInteractionsObject = (function (_super) {
|
|
|
2709
2776
|
return CMIInteractionsObject;
|
|
2710
2777
|
}(BaseCMI));
|
|
2711
2778
|
|
|
2712
|
-
var CMIObjectivesObject = (function (_super) {
|
|
2713
|
-
__extends(CMIObjectivesObject, _super);
|
|
2714
|
-
function CMIObjectivesObject() {
|
|
2715
|
-
var _this = _super.call(this) || this;
|
|
2716
|
-
_this._id = "";
|
|
2717
|
-
_this._status = "";
|
|
2718
|
-
_this.score = new CMIScore({
|
|
2719
|
-
score_children: scorm12_cmi_scorm12_constants.score_children,
|
|
2720
|
-
score_range: scorm12_cmi_scorm12_regex.score_range,
|
|
2721
|
-
invalidErrorCode: scorm12_cmi_scorm12_error_codes.INVALID_SET_VALUE,
|
|
2722
|
-
invalidTypeCode: scorm12_cmi_scorm12_error_codes.TYPE_MISMATCH,
|
|
2723
|
-
invalidRangeCode: scorm12_cmi_scorm12_error_codes.VALUE_OUT_OF_RANGE,
|
|
2724
|
-
errorClass: Scorm12ValidationError,
|
|
2725
|
-
});
|
|
2726
|
-
return _this;
|
|
2727
|
-
}
|
|
2728
|
-
Object.defineProperty(CMIObjectivesObject.prototype, "id", {
|
|
2729
|
-
get: function () {
|
|
2730
|
-
return this._id;
|
|
2731
|
-
},
|
|
2732
|
-
set: function (id) {
|
|
2733
|
-
if (check12ValidFormat(id, scorm12_cmi_scorm12_regex.CMIIdentifier)) {
|
|
2734
|
-
this._id = id;
|
|
2735
|
-
}
|
|
2736
|
-
},
|
|
2737
|
-
enumerable: false,
|
|
2738
|
-
configurable: true
|
|
2739
|
-
});
|
|
2740
|
-
Object.defineProperty(CMIObjectivesObject.prototype, "status", {
|
|
2741
|
-
get: function () {
|
|
2742
|
-
return this._status;
|
|
2743
|
-
},
|
|
2744
|
-
set: function (status) {
|
|
2745
|
-
if (check12ValidFormat(status, scorm12_cmi_scorm12_regex.CMIStatus2)) {
|
|
2746
|
-
this._status = status;
|
|
2747
|
-
}
|
|
2748
|
-
},
|
|
2749
|
-
enumerable: false,
|
|
2750
|
-
configurable: true
|
|
2751
|
-
});
|
|
2752
|
-
CMIObjectivesObject.prototype.toJSON = function () {
|
|
2753
|
-
this.jsonString = true;
|
|
2754
|
-
var result = {
|
|
2755
|
-
id: this.id,
|
|
2756
|
-
status: this.status,
|
|
2757
|
-
score: this.score,
|
|
2758
|
-
};
|
|
2759
|
-
delete this.jsonString;
|
|
2760
|
-
return result;
|
|
2761
|
-
};
|
|
2762
|
-
return CMIObjectivesObject;
|
|
2763
|
-
}(BaseCMI));
|
|
2764
|
-
|
|
2765
2779
|
var CMIInteractionsObjectivesObject = (function (_super) {
|
|
2766
2780
|
__extends(CMIInteractionsObjectivesObject, _super);
|
|
2767
2781
|
function CMIInteractionsObjectivesObject() {
|
|
@@ -2774,7 +2788,7 @@ var CMIInteractionsObjectivesObject = (function (_super) {
|
|
|
2774
2788
|
return this._id;
|
|
2775
2789
|
},
|
|
2776
2790
|
set: function (id) {
|
|
2777
|
-
if (check12ValidFormat(id,
|
|
2791
|
+
if (check12ValidFormat(id, regex.scorm12.CMIIdentifier)) {
|
|
2778
2792
|
this._id = id;
|
|
2779
2793
|
}
|
|
2780
2794
|
},
|
|
@@ -2802,12 +2816,12 @@ var CMIInteractionsCorrectResponsesObject = (function (_super) {
|
|
|
2802
2816
|
Object.defineProperty(CMIInteractionsCorrectResponsesObject.prototype, "pattern", {
|
|
2803
2817
|
get: function () {
|
|
2804
2818
|
if (!this.jsonString) {
|
|
2805
|
-
throw new Scorm12ValidationError(
|
|
2819
|
+
throw new Scorm12ValidationError(error_codes.scorm12.WRITE_ONLY_ELEMENT);
|
|
2806
2820
|
}
|
|
2807
2821
|
return this._pattern;
|
|
2808
2822
|
},
|
|
2809
2823
|
set: function (pattern) {
|
|
2810
|
-
if (check12ValidFormat(pattern,
|
|
2824
|
+
if (check12ValidFormat(pattern, regex.scorm12.CMIFeedback, true)) {
|
|
2811
2825
|
this._pattern = pattern;
|
|
2812
2826
|
}
|
|
2813
2827
|
},
|
|
@@ -2825,6 +2839,153 @@ var CMIInteractionsCorrectResponsesObject = (function (_super) {
|
|
|
2825
2839
|
return CMIInteractionsCorrectResponsesObject;
|
|
2826
2840
|
}(BaseCMI));
|
|
2827
2841
|
|
|
2842
|
+
|
|
2843
|
+
;// ./src/cmi/scorm12/cmi.ts
|
|
2844
|
+
|
|
2845
|
+
|
|
2846
|
+
|
|
2847
|
+
|
|
2848
|
+
|
|
2849
|
+
|
|
2850
|
+
|
|
2851
|
+
|
|
2852
|
+
|
|
2853
|
+
|
|
2854
|
+
|
|
2855
|
+
|
|
2856
|
+
var CMI = (function (_super) {
|
|
2857
|
+
__extends(CMI, _super);
|
|
2858
|
+
function CMI(cmi_children, student_data, initialized) {
|
|
2859
|
+
var _this = _super.call(this) || this;
|
|
2860
|
+
_this.__children = "";
|
|
2861
|
+
_this.__version = "3.4";
|
|
2862
|
+
_this._launch_data = "";
|
|
2863
|
+
_this._comments = "";
|
|
2864
|
+
_this._comments_from_lms = "";
|
|
2865
|
+
if (initialized)
|
|
2866
|
+
_this.initialize();
|
|
2867
|
+
_this.__children = cmi_children
|
|
2868
|
+
? cmi_children
|
|
2869
|
+
: api_constants.scorm12.cmi_children;
|
|
2870
|
+
_this.core = new CMICore();
|
|
2871
|
+
_this.objectives = new CMIObjectives();
|
|
2872
|
+
_this.student_data = student_data ? student_data : new CMIStudentData();
|
|
2873
|
+
_this.student_preference = new CMIStudentPreference();
|
|
2874
|
+
_this.interactions = new CMIInteractions();
|
|
2875
|
+
return _this;
|
|
2876
|
+
}
|
|
2877
|
+
CMI.prototype.initialize = function () {
|
|
2878
|
+
var _a, _b, _c, _d, _e;
|
|
2879
|
+
_super.prototype.initialize.call(this);
|
|
2880
|
+
(_a = this.core) === null || _a === void 0 ? void 0 : _a.initialize();
|
|
2881
|
+
(_b = this.objectives) === null || _b === void 0 ? void 0 : _b.initialize();
|
|
2882
|
+
(_c = this.student_data) === null || _c === void 0 ? void 0 : _c.initialize();
|
|
2883
|
+
(_d = this.student_preference) === null || _d === void 0 ? void 0 : _d.initialize();
|
|
2884
|
+
(_e = this.interactions) === null || _e === void 0 ? void 0 : _e.initialize();
|
|
2885
|
+
};
|
|
2886
|
+
CMI.prototype.toJSON = function () {
|
|
2887
|
+
this.jsonString = true;
|
|
2888
|
+
var result = {
|
|
2889
|
+
suspend_data: this.suspend_data,
|
|
2890
|
+
launch_data: this.launch_data,
|
|
2891
|
+
comments: this.comments,
|
|
2892
|
+
comments_from_lms: this.comments_from_lms,
|
|
2893
|
+
core: this.core,
|
|
2894
|
+
objectives: this.objectives,
|
|
2895
|
+
student_data: this.student_data,
|
|
2896
|
+
student_preference: this.student_preference,
|
|
2897
|
+
interactions: this.interactions,
|
|
2898
|
+
};
|
|
2899
|
+
delete this.jsonString;
|
|
2900
|
+
return result;
|
|
2901
|
+
};
|
|
2902
|
+
Object.defineProperty(CMI.prototype, "_version", {
|
|
2903
|
+
get: function () {
|
|
2904
|
+
return this.__version;
|
|
2905
|
+
},
|
|
2906
|
+
set: function (_version) {
|
|
2907
|
+
throw new Scorm12ValidationError(error_codes.scorm12.INVALID_SET_VALUE);
|
|
2908
|
+
},
|
|
2909
|
+
enumerable: false,
|
|
2910
|
+
configurable: true
|
|
2911
|
+
});
|
|
2912
|
+
Object.defineProperty(CMI.prototype, "_children", {
|
|
2913
|
+
get: function () {
|
|
2914
|
+
return this.__children;
|
|
2915
|
+
},
|
|
2916
|
+
set: function (_children) {
|
|
2917
|
+
throw new Scorm12ValidationError(error_codes.scorm12.INVALID_SET_VALUE);
|
|
2918
|
+
},
|
|
2919
|
+
enumerable: false,
|
|
2920
|
+
configurable: true
|
|
2921
|
+
});
|
|
2922
|
+
Object.defineProperty(CMI.prototype, "suspend_data", {
|
|
2923
|
+
get: function () {
|
|
2924
|
+
var _a;
|
|
2925
|
+
return (_a = this.core) === null || _a === void 0 ? void 0 : _a.suspend_data;
|
|
2926
|
+
},
|
|
2927
|
+
set: function (suspend_data) {
|
|
2928
|
+
if (this.core) {
|
|
2929
|
+
this.core.suspend_data = suspend_data;
|
|
2930
|
+
}
|
|
2931
|
+
},
|
|
2932
|
+
enumerable: false,
|
|
2933
|
+
configurable: true
|
|
2934
|
+
});
|
|
2935
|
+
Object.defineProperty(CMI.prototype, "launch_data", {
|
|
2936
|
+
get: function () {
|
|
2937
|
+
return this._launch_data;
|
|
2938
|
+
},
|
|
2939
|
+
set: function (launch_data) {
|
|
2940
|
+
if (this.initialized) {
|
|
2941
|
+
throw new Scorm12ValidationError(error_codes.scorm12.READ_ONLY_ELEMENT);
|
|
2942
|
+
}
|
|
2943
|
+
else {
|
|
2944
|
+
this._launch_data = launch_data;
|
|
2945
|
+
}
|
|
2946
|
+
},
|
|
2947
|
+
enumerable: false,
|
|
2948
|
+
configurable: true
|
|
2949
|
+
});
|
|
2950
|
+
Object.defineProperty(CMI.prototype, "comments", {
|
|
2951
|
+
get: function () {
|
|
2952
|
+
return this._comments;
|
|
2953
|
+
},
|
|
2954
|
+
set: function (comments) {
|
|
2955
|
+
if (check12ValidFormat(comments, regex.scorm12.CMIString4096, true)) {
|
|
2956
|
+
this._comments = comments;
|
|
2957
|
+
}
|
|
2958
|
+
},
|
|
2959
|
+
enumerable: false,
|
|
2960
|
+
configurable: true
|
|
2961
|
+
});
|
|
2962
|
+
Object.defineProperty(CMI.prototype, "comments_from_lms", {
|
|
2963
|
+
get: function () {
|
|
2964
|
+
return this._comments_from_lms;
|
|
2965
|
+
},
|
|
2966
|
+
set: function (comments_from_lms) {
|
|
2967
|
+
if (this.initialized) {
|
|
2968
|
+
throw new Scorm12ValidationError(error_codes.scorm12.READ_ONLY_ELEMENT);
|
|
2969
|
+
}
|
|
2970
|
+
else {
|
|
2971
|
+
this._comments_from_lms = comments_from_lms;
|
|
2972
|
+
}
|
|
2973
|
+
},
|
|
2974
|
+
enumerable: false,
|
|
2975
|
+
configurable: true
|
|
2976
|
+
});
|
|
2977
|
+
CMI.prototype.getCurrentTotalTime = function () {
|
|
2978
|
+
return this.core.getCurrentTotalTime(this.start_time);
|
|
2979
|
+
};
|
|
2980
|
+
return CMI;
|
|
2981
|
+
}(BaseRootCMI));
|
|
2982
|
+
|
|
2983
|
+
|
|
2984
|
+
;// ./src/cmi/scorm12/nav.ts
|
|
2985
|
+
|
|
2986
|
+
|
|
2987
|
+
|
|
2988
|
+
|
|
2828
2989
|
var NAV = (function (_super) {
|
|
2829
2990
|
__extends(NAV, _super);
|
|
2830
2991
|
function NAV() {
|
|
@@ -2837,7 +2998,7 @@ var NAV = (function (_super) {
|
|
|
2837
2998
|
return this._event;
|
|
2838
2999
|
},
|
|
2839
3000
|
set: function (event) {
|
|
2840
|
-
if (check12ValidFormat(event,
|
|
3001
|
+
if (check12ValidFormat(event, regex.scorm12.NAVEvent)) {
|
|
2841
3002
|
this._event = event;
|
|
2842
3003
|
}
|
|
2843
3004
|
},
|
|
@@ -2863,9 +3024,10 @@ var NAV = (function (_super) {
|
|
|
2863
3024
|
|
|
2864
3025
|
|
|
2865
3026
|
|
|
2866
|
-
|
|
2867
|
-
|
|
2868
|
-
|
|
3027
|
+
|
|
3028
|
+
|
|
3029
|
+
|
|
3030
|
+
|
|
2869
3031
|
var Scorm12API = (function (_super) {
|
|
2870
3032
|
__extends(Scorm12API, _super);
|
|
2871
3033
|
function Scorm12API(settings) {
|
|
@@ -2875,7 +3037,8 @@ var Scorm12API = (function (_super) {
|
|
|
2875
3037
|
settings.mastery_override = false;
|
|
2876
3038
|
}
|
|
2877
3039
|
}
|
|
2878
|
-
_this = _super.call(this,
|
|
3040
|
+
_this = _super.call(this, error_codes.scorm12, settings) || this;
|
|
3041
|
+
_this.statusSetByModule = false;
|
|
2879
3042
|
_this.cmi = new CMI();
|
|
2880
3043
|
_this.nav = new NAV();
|
|
2881
3044
|
_this.LMSInitialize = _this.lmsInitialize;
|
|
@@ -2888,35 +3051,83 @@ var Scorm12API = (function (_super) {
|
|
|
2888
3051
|
_this.LMSGetDiagnostic = _this.lmsGetDiagnostic;
|
|
2889
3052
|
return _this;
|
|
2890
3053
|
}
|
|
3054
|
+
Scorm12API.prototype.reset = function (settings) {
|
|
3055
|
+
this.commonReset(settings);
|
|
3056
|
+
this.cmi = new CMI();
|
|
3057
|
+
this.nav = new NAV();
|
|
3058
|
+
};
|
|
2891
3059
|
Scorm12API.prototype.lmsInitialize = function () {
|
|
2892
3060
|
this.cmi.initialize();
|
|
3061
|
+
if (this.cmi.core.lesson_status) {
|
|
3062
|
+
this.statusSetByModule = true;
|
|
3063
|
+
}
|
|
3064
|
+
else {
|
|
3065
|
+
this.cmi.core.lesson_status = "not attempted";
|
|
3066
|
+
}
|
|
2893
3067
|
return this.initialize("LMSInitialize", "LMS was already initialized!", "LMS is already finished!");
|
|
2894
3068
|
};
|
|
2895
3069
|
Scorm12API.prototype.lmsFinish = function () {
|
|
2896
|
-
var
|
|
2897
|
-
|
|
2898
|
-
|
|
2899
|
-
|
|
2900
|
-
this.
|
|
3070
|
+
var _this = this;
|
|
3071
|
+
(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
3072
|
+
return __generator(this, function (_a) {
|
|
3073
|
+
switch (_a.label) {
|
|
3074
|
+
case 0: return [4, this.internalFinish()];
|
|
3075
|
+
case 1:
|
|
3076
|
+
_a.sent();
|
|
3077
|
+
return [2];
|
|
2901
3078
|
}
|
|
2902
|
-
|
|
2903
|
-
|
|
3079
|
+
});
|
|
3080
|
+
}); })();
|
|
3081
|
+
return api_constants.global.SCORM_TRUE;
|
|
3082
|
+
};
|
|
3083
|
+
Scorm12API.prototype.internalFinish = function () {
|
|
3084
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
3085
|
+
var result;
|
|
3086
|
+
return __generator(this, function (_a) {
|
|
3087
|
+
switch (_a.label) {
|
|
3088
|
+
case 0: return [4, this.terminate("LMSFinish", true)];
|
|
3089
|
+
case 1:
|
|
3090
|
+
result = _a.sent();
|
|
3091
|
+
if (result === api_constants.global.SCORM_TRUE) {
|
|
3092
|
+
if (this.nav.event !== "") {
|
|
3093
|
+
if (this.nav.event === "continue") {
|
|
3094
|
+
this.processListeners("SequenceNext");
|
|
3095
|
+
}
|
|
3096
|
+
else {
|
|
3097
|
+
this.processListeners("SequencePrevious");
|
|
3098
|
+
}
|
|
3099
|
+
}
|
|
3100
|
+
else if (this.settings.autoProgress) {
|
|
3101
|
+
this.processListeners("SequenceNext");
|
|
3102
|
+
}
|
|
3103
|
+
}
|
|
3104
|
+
return [2, result];
|
|
2904
3105
|
}
|
|
2905
|
-
}
|
|
2906
|
-
|
|
2907
|
-
this.processListeners("SequenceNext");
|
|
2908
|
-
}
|
|
2909
|
-
}
|
|
2910
|
-
return result;
|
|
3106
|
+
});
|
|
3107
|
+
});
|
|
2911
3108
|
};
|
|
2912
3109
|
Scorm12API.prototype.lmsGetValue = function (CMIElement) {
|
|
2913
3110
|
return this.getValue("LMSGetValue", false, CMIElement);
|
|
2914
3111
|
};
|
|
2915
3112
|
Scorm12API.prototype.lmsSetValue = function (CMIElement, value) {
|
|
3113
|
+
if (CMIElement === "cmi.core.lesson_status") {
|
|
3114
|
+
this.statusSetByModule = true;
|
|
3115
|
+
}
|
|
2916
3116
|
return this.setValue("LMSSetValue", "LMSCommit", false, CMIElement, value);
|
|
2917
3117
|
};
|
|
2918
3118
|
Scorm12API.prototype.lmsCommit = function () {
|
|
2919
|
-
|
|
3119
|
+
var _this = this;
|
|
3120
|
+
(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
3121
|
+
return __generator(this, function (_a) {
|
|
3122
|
+
switch (_a.label) {
|
|
3123
|
+
case 0: return [4, this.commit("LMSCommit", false)];
|
|
3124
|
+
case 1:
|
|
3125
|
+
_a.sent();
|
|
3126
|
+
return [2];
|
|
3127
|
+
}
|
|
3128
|
+
});
|
|
3129
|
+
}); })();
|
|
3130
|
+
return api_constants.global.SCORM_TRUE;
|
|
2920
3131
|
};
|
|
2921
3132
|
Scorm12API.prototype.lmsGetLastError = function () {
|
|
2922
3133
|
return this.getLastError("LMSGetLastError");
|
|
@@ -2934,19 +3145,19 @@ var Scorm12API = (function (_super) {
|
|
|
2934
3145
|
return this._commonGetCMIValue("getCMIValue", false, CMIElement);
|
|
2935
3146
|
};
|
|
2936
3147
|
Scorm12API.prototype.getChildElement = function (CMIElement, _value, foundFirstIndex) {
|
|
2937
|
-
if (
|
|
3148
|
+
if (stringMatches(CMIElement, "cmi\\.objectives\\.\\d+")) {
|
|
2938
3149
|
return new CMIObjectivesObject();
|
|
2939
3150
|
}
|
|
2940
3151
|
else if (foundFirstIndex &&
|
|
2941
|
-
|
|
3152
|
+
stringMatches(CMIElement, "cmi\\.interactions\\.\\d+\\.correct_responses\\.\\d+")) {
|
|
2942
3153
|
return new CMIInteractionsCorrectResponsesObject();
|
|
2943
3154
|
}
|
|
2944
3155
|
else if (foundFirstIndex &&
|
|
2945
|
-
|
|
3156
|
+
stringMatches(CMIElement, "cmi\\.interactions\\.\\d+\\.objectives\\.\\d+")) {
|
|
2946
3157
|
return new CMIInteractionsObjectivesObject();
|
|
2947
3158
|
}
|
|
2948
3159
|
else if (!foundFirstIndex &&
|
|
2949
|
-
|
|
3160
|
+
stringMatches(CMIElement, "cmi\\.interactions\\.\\d+")) {
|
|
2950
3161
|
return new CMIInteractionsObject();
|
|
2951
3162
|
}
|
|
2952
3163
|
return null;
|
|
@@ -2957,11 +3168,11 @@ var Scorm12API = (function (_super) {
|
|
|
2957
3168
|
var basicMessage = "No Error";
|
|
2958
3169
|
var detailMessage = "No Error";
|
|
2959
3170
|
errorNumber = String(errorNumber);
|
|
2960
|
-
if (
|
|
3171
|
+
if (api_constants.scorm12.error_descriptions[errorNumber]) {
|
|
2961
3172
|
basicMessage =
|
|
2962
|
-
|
|
3173
|
+
api_constants.scorm12.error_descriptions[errorNumber].basicMessage;
|
|
2963
3174
|
detailMessage =
|
|
2964
|
-
|
|
3175
|
+
api_constants.scorm12.error_descriptions[errorNumber].detailMessage;
|
|
2965
3176
|
}
|
|
2966
3177
|
return detail ? detailMessage : basicMessage;
|
|
2967
3178
|
};
|
|
@@ -2991,48 +3202,54 @@ var Scorm12API = (function (_super) {
|
|
|
2991
3202
|
}
|
|
2992
3203
|
};
|
|
2993
3204
|
Scorm12API.prototype.storeData = function (terminateCommit) {
|
|
2994
|
-
|
|
2995
|
-
|
|
2996
|
-
var
|
|
2997
|
-
|
|
2998
|
-
|
|
2999
|
-
|
|
3000
|
-
|
|
3001
|
-
|
|
3002
|
-
|
|
3003
|
-
|
|
3004
|
-
|
|
3005
|
-
|
|
3006
|
-
|
|
3007
|
-
this.cmi.core.
|
|
3205
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
3206
|
+
var originalStatus, commitObject;
|
|
3207
|
+
var _a, _b, _c;
|
|
3208
|
+
return __generator(this, function (_d) {
|
|
3209
|
+
switch (_d.label) {
|
|
3210
|
+
case 0:
|
|
3211
|
+
if (terminateCommit) {
|
|
3212
|
+
originalStatus = this.cmi.core.lesson_status;
|
|
3213
|
+
if (!this.cmi.core.lesson_status ||
|
|
3214
|
+
(!this.statusSetByModule &&
|
|
3215
|
+
this.cmi.core.lesson_status === "not attempted")) {
|
|
3216
|
+
this.cmi.core.lesson_status = "completed";
|
|
3217
|
+
}
|
|
3218
|
+
if (this.cmi.core.lesson_mode === "normal") {
|
|
3219
|
+
if (this.cmi.core.credit === "credit") {
|
|
3220
|
+
if (this.settings.mastery_override &&
|
|
3221
|
+
this.cmi.student_data.mastery_score !== "" &&
|
|
3222
|
+
this.cmi.core.score.raw !== "") {
|
|
3223
|
+
this.cmi.core.lesson_status =
|
|
3224
|
+
parseFloat(this.cmi.core.score.raw) >=
|
|
3225
|
+
parseFloat(this.cmi.student_data.mastery_score)
|
|
3226
|
+
? "passed"
|
|
3227
|
+
: "failed";
|
|
3228
|
+
}
|
|
3229
|
+
}
|
|
3230
|
+
}
|
|
3231
|
+
else if (this.cmi.core.lesson_mode === "browse") {
|
|
3232
|
+
if ((((_c = (_b = (_a = this.startingData) === null || _a === void 0 ? void 0 : _a.cmi) === null || _b === void 0 ? void 0 : _b.core) === null || _c === void 0 ? void 0 : _c.lesson_status) || "") === "" &&
|
|
3233
|
+
originalStatus === "not attempted") {
|
|
3234
|
+
this.cmi.core.lesson_status = "browsed";
|
|
3235
|
+
}
|
|
3236
|
+
}
|
|
3008
3237
|
}
|
|
3009
|
-
|
|
3010
|
-
|
|
3238
|
+
commitObject = this.renderCommitCMI(terminateCommit || this.settings.alwaysSendTotalTime);
|
|
3239
|
+
if (this.apiLogLevel === api_constants.global.LOG_LEVEL_DEBUG) {
|
|
3240
|
+
console.debug("Commit (terminated: " + (terminateCommit ? "yes" : "no") + "): ");
|
|
3241
|
+
console.debug(commitObject);
|
|
3011
3242
|
}
|
|
3012
|
-
|
|
3013
|
-
|
|
3014
|
-
|
|
3015
|
-
|
|
3016
|
-
|
|
3017
|
-
|
|
3018
|
-
|
|
3243
|
+
if (!(typeof this.settings.lmsCommitUrl === "string")) return [3, 2];
|
|
3244
|
+
return [4, this.processHttpRequest(this.settings.lmsCommitUrl, commitObject, terminateCommit)];
|
|
3245
|
+
case 1: return [2, _d.sent()];
|
|
3246
|
+
case 2: return [2, {
|
|
3247
|
+
result: api_constants.global.SCORM_TRUE,
|
|
3248
|
+
errorCode: 0,
|
|
3249
|
+
}];
|
|
3019
3250
|
}
|
|
3020
|
-
}
|
|
3021
|
-
}
|
|
3022
|
-
var commitObject = this.renderCommitCMI(terminateCommit || this.settings.alwaysSendTotalTime);
|
|
3023
|
-
if (this.apiLogLevel === Scorm12API_global_constants.LOG_LEVEL_DEBUG) {
|
|
3024
|
-
console.debug("Commit (terminated: " + (terminateCommit ? "yes" : "no") + "): ");
|
|
3025
|
-
console.debug(commitObject);
|
|
3026
|
-
}
|
|
3027
|
-
if (typeof this.settings.lmsCommitUrl === "string") {
|
|
3028
|
-
return this.processHttpRequest(this.settings.lmsCommitUrl, commitObject, terminateCommit);
|
|
3029
|
-
}
|
|
3030
|
-
else {
|
|
3031
|
-
return {
|
|
3032
|
-
result: Scorm12API_global_constants.SCORM_TRUE,
|
|
3033
|
-
errorCode: 0,
|
|
3034
|
-
};
|
|
3035
|
-
}
|
|
3251
|
+
});
|
|
3252
|
+
});
|
|
3036
3253
|
};
|
|
3037
3254
|
return Scorm12API;
|
|
3038
3255
|
}(src_BaseAPI));
|