scorm-again 2.6.2 → 2.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/aicc.js +41 -25
- package/dist/aicc.js.map +1 -1
- package/dist/aicc.min.js +1 -1
- package/dist/aicc.min.js.map +1 -1
- package/dist/esm/aicc.js +41 -25
- package/dist/esm/aicc.js.map +1 -1
- package/dist/esm/aicc.min.js +1 -1
- package/dist/esm/aicc.min.js.map +1 -1
- package/dist/esm/scorm-again.js +70 -45
- package/dist/esm/scorm-again.js.map +1 -1
- package/dist/esm/scorm-again.min.js +1 -1
- package/dist/esm/scorm-again.min.js.map +1 -1
- package/dist/esm/scorm12.js +38 -23
- package/dist/esm/scorm12.js.map +1 -1
- package/dist/esm/scorm12.min.js +1 -1
- package/dist/esm/scorm12.min.js.map +1 -1
- package/dist/esm/scorm2004.js +60 -39
- package/dist/esm/scorm2004.js.map +1 -1
- package/dist/esm/scorm2004.min.js +1 -1
- package/dist/esm/scorm2004.min.js.map +1 -1
- package/dist/scorm-again.js +70 -45
- 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 +38 -23
- 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 +60 -39
- package/dist/scorm2004.js.map +1 -1
- package/dist/scorm2004.min.js +1 -1
- package/dist/scorm2004.min.js.map +1 -1
- package/index.d.ts +24 -3
- package/package.json +1 -1
- package/src/BaseAPI.ts +57 -35
- package/src/Scorm12API.ts +3 -2
- package/src/Scorm2004API.ts +31 -24
- package/src/cmi/aicc/attempts.ts +3 -3
- package/src/cmi/aicc/core.ts +30 -12
- package/src/cmi/aicc/evaluation.ts +1 -1
- package/src/cmi/aicc/student_data.ts +1 -1
- package/src/cmi/aicc/student_demographics.ts +13 -13
- package/src/cmi/aicc/student_preferences.ts +1 -1
- package/src/cmi/aicc/tries.ts +3 -3
- package/src/cmi/aicc/validation.ts +1 -1
- package/src/cmi/common/array.ts +1 -1
- package/src/cmi/common/score.ts +3 -3
- package/src/cmi/common/validation.ts +2 -2
- package/src/cmi/scorm12/cmi.ts +12 -4
- package/src/cmi/scorm12/interactions.ts +27 -11
- package/src/cmi/scorm12/objectives.ts +4 -4
- package/src/cmi/scorm12/student_data.ts +12 -4
- package/src/cmi/scorm12/student_preference.ts +3 -1
- package/src/cmi/scorm12/validation.ts +5 -3
- package/src/cmi/scorm2004/adl.ts +21 -7
- package/src/cmi/scorm2004/cmi.ts +45 -15
- package/src/cmi/scorm2004/comments.ts +11 -5
- package/src/cmi/scorm2004/interactions.ts +25 -23
- package/src/cmi/scorm2004/learner_preference.ts +3 -1
- package/src/cmi/scorm2004/objectives.ts +5 -5
- package/src/cmi/scorm2004/score.ts +3 -3
- package/src/cmi/scorm2004/validation.ts +2 -2
- package/src/constants/regex.ts +8 -1
- package/src/exceptions/aicc_exceptions.ts +4 -4
- package/src/exceptions/scorm12_exceptions.ts +4 -4
- package/src/exceptions/scorm2004_exceptions.ts +4 -4
- package/src/utilities.ts +3 -3
- package/test/Scorm12API.spec.ts +45 -0
- package/test/Scorm2004API.spec.ts +43 -0
- package/tsconfig.json +1 -0
package/dist/scorm12.js
CHANGED
|
@@ -417,6 +417,10 @@ var BaseAPI = (function () {
|
|
|
417
417
|
: this._error_codes.GENERAL;
|
|
418
418
|
for (var idx = 0; idx < structure.length; idx++) {
|
|
419
419
|
var attribute = structure[idx];
|
|
420
|
+
if (!attribute) {
|
|
421
|
+
this.throwSCORMError(invalidErrorCode, invalidErrorMessage);
|
|
422
|
+
return api_constants.global_constants.SCORM_FALSE;
|
|
423
|
+
}
|
|
420
424
|
if (idx === structure.length - 1) {
|
|
421
425
|
if (scorm2004 && attribute.substring(0, 8) === "{target=") {
|
|
422
426
|
if (this.isInitialized()) {
|
|
@@ -447,7 +451,7 @@ var BaseAPI = (function () {
|
|
|
447
451
|
break;
|
|
448
452
|
}
|
|
449
453
|
if (refObject instanceof array.CMIArray) {
|
|
450
|
-
var index = parseInt(structure[idx + 1], 10);
|
|
454
|
+
var index = parseInt(structure[idx + 1] || "0", 10);
|
|
451
455
|
if (!isNaN(index)) {
|
|
452
456
|
var item = refObject.childArray[index];
|
|
453
457
|
if (item) {
|
|
@@ -491,6 +495,10 @@ var BaseAPI = (function () {
|
|
|
491
495
|
: this._error_codes.GENERAL;
|
|
492
496
|
for (var idx = 0; idx < structure.length; idx++) {
|
|
493
497
|
attribute = structure[idx];
|
|
498
|
+
if (!attribute) {
|
|
499
|
+
this.throwSCORMError(invalidErrorCode, invalidErrorMessage);
|
|
500
|
+
return;
|
|
501
|
+
}
|
|
494
502
|
if (!scorm2004) {
|
|
495
503
|
if (idx === structure.length - 1) {
|
|
496
504
|
if (!this._checkObjectHasProperty(refObject, attribute)) {
|
|
@@ -516,7 +524,7 @@ var BaseAPI = (function () {
|
|
|
516
524
|
break;
|
|
517
525
|
}
|
|
518
526
|
if (refObject instanceof array.CMIArray) {
|
|
519
|
-
var index = parseInt(structure[idx + 1], 10);
|
|
527
|
+
var index = parseInt(structure[idx + 1] || "", 10);
|
|
520
528
|
if (!isNaN(index)) {
|
|
521
529
|
var item = refObject.childArray[index];
|
|
522
530
|
if (item) {
|
|
@@ -554,17 +562,18 @@ var BaseAPI = (function () {
|
|
|
554
562
|
return this.currentState === api_constants.global_constants.STATE_TERMINATED;
|
|
555
563
|
};
|
|
556
564
|
BaseAPI.prototype.on = function (listenerName, callback) {
|
|
565
|
+
var _a, _c;
|
|
557
566
|
if (!callback)
|
|
558
567
|
return;
|
|
559
568
|
var listenerFunctions = listenerName.split(" ");
|
|
560
569
|
for (var i = 0; i < listenerFunctions.length; i++) {
|
|
561
|
-
var listenerSplit = listenerFunctions[i].split(".");
|
|
562
|
-
if (listenerSplit.length === 0)
|
|
570
|
+
var listenerSplit = (_a = listenerFunctions[i]) === null || _a === void 0 ? void 0 : _a.split(".");
|
|
571
|
+
if (!listenerSplit || listenerSplit.length === 0)
|
|
563
572
|
return;
|
|
564
573
|
var functionName = listenerSplit[0];
|
|
565
574
|
var CMIElement = null;
|
|
566
575
|
if (listenerSplit.length > 1) {
|
|
567
|
-
CMIElement =
|
|
576
|
+
CMIElement = (_c = listenerFunctions[i]) === null || _c === void 0 ? void 0 : _c.replace(functionName + ".", "");
|
|
568
577
|
}
|
|
569
578
|
this.listenerArray.push({
|
|
570
579
|
functionName: functionName,
|
|
@@ -575,17 +584,18 @@ var BaseAPI = (function () {
|
|
|
575
584
|
}
|
|
576
585
|
};
|
|
577
586
|
BaseAPI.prototype.off = function (listenerName, callback) {
|
|
587
|
+
var _a, _c;
|
|
578
588
|
if (!callback)
|
|
579
589
|
return;
|
|
580
590
|
var listenerFunctions = listenerName.split(" ");
|
|
581
591
|
var _loop_1 = function (i) {
|
|
582
|
-
var listenerSplit = listenerFunctions[i].split(".");
|
|
583
|
-
if (listenerSplit.length === 0)
|
|
592
|
+
var listenerSplit = (_a = listenerFunctions[i]) === null || _a === void 0 ? void 0 : _a.split(".");
|
|
593
|
+
if (!listenerSplit || listenerSplit.length === 0)
|
|
584
594
|
return { value: void 0 };
|
|
585
595
|
var functionName = listenerSplit[0];
|
|
586
596
|
var CMIElement = null;
|
|
587
597
|
if (listenerSplit.length > 1) {
|
|
588
|
-
CMIElement =
|
|
598
|
+
CMIElement = (_c = listenerFunctions[i]) === null || _c === void 0 ? void 0 : _c.replace(functionName + ".", "");
|
|
589
599
|
}
|
|
590
600
|
var removeIndex = this_1.listenerArray.findIndex(function (obj) {
|
|
591
601
|
return obj.functionName === functionName &&
|
|
@@ -605,15 +615,16 @@ var BaseAPI = (function () {
|
|
|
605
615
|
}
|
|
606
616
|
};
|
|
607
617
|
BaseAPI.prototype.clear = function (listenerName) {
|
|
618
|
+
var _a, _c;
|
|
608
619
|
var listenerFunctions = listenerName.split(" ");
|
|
609
620
|
var _loop_2 = function (i) {
|
|
610
|
-
var listenerSplit = listenerFunctions[i].split(".");
|
|
611
|
-
if (listenerSplit.length === 0)
|
|
621
|
+
var listenerSplit = (_a = listenerFunctions[i]) === null || _a === void 0 ? void 0 : _a.split(".");
|
|
622
|
+
if (!listenerSplit || (listenerSplit === null || listenerSplit === void 0 ? void 0 : listenerSplit.length) === 0)
|
|
612
623
|
return { value: void 0 };
|
|
613
624
|
var functionName = listenerSplit[0];
|
|
614
625
|
var CMIElement = null;
|
|
615
626
|
if (listenerSplit.length > 1) {
|
|
616
|
-
CMIElement =
|
|
627
|
+
CMIElement = (_c = listenerFunctions[i]) === null || _c === void 0 ? void 0 : _c.replace(functionName + ".", "");
|
|
617
628
|
}
|
|
618
629
|
this_2.listenerArray = this_2.listenerArray.filter(function (obj) {
|
|
619
630
|
return obj.functionName !== functionName && obj.CMIElement !== CMIElement;
|
|
@@ -796,7 +807,7 @@ var BaseAPI = (function () {
|
|
|
796
807
|
}];
|
|
797
808
|
}
|
|
798
809
|
process = function (url, params, settings) { return (0,tslib_es6.__awaiter)(_this, void 0, void 0, function () {
|
|
799
|
-
var response, e_1;
|
|
810
|
+
var response, e_1, message;
|
|
800
811
|
return (0,tslib_es6.__generator)(this, function (_a) {
|
|
801
812
|
switch (_a.label) {
|
|
802
813
|
case 0:
|
|
@@ -808,7 +819,8 @@ var BaseAPI = (function () {
|
|
|
808
819
|
return [2, this.transformResponse(response)];
|
|
809
820
|
case 2:
|
|
810
821
|
e_1 = _a.sent();
|
|
811
|
-
|
|
822
|
+
message = e_1 instanceof Error ? e_1.message : String(e_1);
|
|
823
|
+
this.apiLog("processHttpRequest", message, enums.LogLevelEnum.ERROR);
|
|
812
824
|
api.processListeners("CommitError");
|
|
813
825
|
return [2, genericError];
|
|
814
826
|
case 3: return [2];
|
|
@@ -1181,8 +1193,8 @@ function checkValidFormat(value, regexPattern, errorCode, errorClass, allowEmpty
|
|
|
1181
1193
|
function checkValidRange(value, rangePattern, errorCode, errorClass) {
|
|
1182
1194
|
var ranges = rangePattern.split("#");
|
|
1183
1195
|
value = value * 1.0;
|
|
1184
|
-
if (value >= ranges[0]) {
|
|
1185
|
-
if (ranges[1] === "*" || value <= ranges[1]) {
|
|
1196
|
+
if (ranges[0] && value >= ranges[0]) {
|
|
1197
|
+
if (ranges[1] && (ranges[1] === "*" || value <= ranges[1])) {
|
|
1186
1198
|
return true;
|
|
1187
1199
|
}
|
|
1188
1200
|
else {
|
|
@@ -2641,7 +2653,7 @@ var scorm12_regex = {
|
|
|
2641
2653
|
CMISInteger: "^-?([0-9]+)$",
|
|
2642
2654
|
CMIDecimal: "^-?([0-9]{0,3})(.[0-9]*)?$",
|
|
2643
2655
|
CMIIdentifier: "^[\\u0021-\\u007E\\s]{0,255}$",
|
|
2644
|
-
CMIFeedback: "
|
|
2656
|
+
CMIFeedback: "^.*$",
|
|
2645
2657
|
CMIIndex: "[._](\\d+).",
|
|
2646
2658
|
CMIStatus: "^(passed|completed|failed|incomplete|browsed)$",
|
|
2647
2659
|
CMIStatus2: "^(passed|completed|failed|incomplete|browsed|not attempted)$",
|
|
@@ -2777,11 +2789,12 @@ var Scorm12ValidationError = (function (_super) {
|
|
|
2777
2789
|
(0,tslib__WEBPACK_IMPORTED_MODULE_1__.__extends)(Scorm12ValidationError, _super);
|
|
2778
2790
|
function Scorm12ValidationError(errorCode) {
|
|
2779
2791
|
var _this = this;
|
|
2792
|
+
var _a, _b, _c, _d, _e;
|
|
2780
2793
|
if ({}.hasOwnProperty.call(scorm12_errors, String(errorCode))) {
|
|
2781
|
-
_this = _super.call(this, errorCode, scorm12_errors[String(errorCode)].basicMessage, scorm12_errors[String(errorCode)].detailMessage) || this;
|
|
2794
|
+
_this = _super.call(this, errorCode, ((_a = scorm12_errors[String(errorCode)]) === null || _a === void 0 ? void 0 : _a.basicMessage) || "Unknown error", (_b = scorm12_errors[String(errorCode)]) === null || _b === void 0 ? void 0 : _b.detailMessage) || this;
|
|
2782
2795
|
}
|
|
2783
2796
|
else {
|
|
2784
|
-
_this = _super.call(this, 101, scorm12_errors["101"].basicMessage, scorm12_errors["101"].detailMessage) || this;
|
|
2797
|
+
_this = _super.call(this, 101, (_d = (_c = scorm12_errors["101"]) === null || _c === void 0 ? void 0 : _c.basicMessage) !== null && _d !== void 0 ? _d : "General error", (_e = scorm12_errors["101"]) === null || _e === void 0 ? void 0 : _e.detailMessage) || this;
|
|
2785
2798
|
}
|
|
2786
2799
|
return _this;
|
|
2787
2800
|
}
|
|
@@ -2851,7 +2864,7 @@ function getSecondsAsISODuration(seconds) {
|
|
|
2851
2864
|
var duration = "P";
|
|
2852
2865
|
var remainder = seconds;
|
|
2853
2866
|
for (var designationsKey in designations) {
|
|
2854
|
-
var current_seconds = designations[designationsKey];
|
|
2867
|
+
var current_seconds = designations[designationsKey] || 1;
|
|
2855
2868
|
var value = Math.floor(remainder / current_seconds);
|
|
2856
2869
|
remainder = remainder % current_seconds;
|
|
2857
2870
|
if (countDecimals(remainder) > 2) {
|
|
@@ -2958,7 +2971,7 @@ function unflatten(data) {
|
|
|
2958
2971
|
var m = regex.exec(p);
|
|
2959
2972
|
while (m) {
|
|
2960
2973
|
cur = cur[prop] || (cur[prop] = m[2] ? [] : {});
|
|
2961
|
-
prop = m[2] || m[1];
|
|
2974
|
+
prop = m[2] || m[1] || "";
|
|
2962
2975
|
m = regex.exec(p);
|
|
2963
2976
|
}
|
|
2964
2977
|
cur[prop] = data[p];
|
|
@@ -2970,7 +2983,7 @@ function countDecimals(num) {
|
|
|
2970
2983
|
if (Math.floor(num) === num || String(num).indexOf(".") < 0)
|
|
2971
2984
|
return 0;
|
|
2972
2985
|
var parts = num.toString().split(".")[1];
|
|
2973
|
-
return parts.length || 0;
|
|
2986
|
+
return (parts === null || parts === void 0 ? void 0 : parts.length) || 0;
|
|
2974
2987
|
}
|
|
2975
2988
|
function formatMessage(functionName, message, CMIElement) {
|
|
2976
2989
|
var baseLength = 20;
|
|
@@ -3647,14 +3660,16 @@ var Scorm12Impl = (function (_super) {
|
|
|
3647
3660
|
Scorm12Impl.prototype.validateCorrectResponse = function (_CMIElement, _value) {
|
|
3648
3661
|
};
|
|
3649
3662
|
Scorm12Impl.prototype.getLmsErrorMessageDetails = function (errorNumber, detail) {
|
|
3663
|
+
var _a, _b;
|
|
3650
3664
|
var basicMessage = "No Error";
|
|
3651
3665
|
var detailMessage = "No Error";
|
|
3652
3666
|
errorNumber = String(errorNumber);
|
|
3653
3667
|
if (_constants_api_constants__WEBPACK_IMPORTED_MODULE_4__.scorm12_constants.error_descriptions[errorNumber]) {
|
|
3654
3668
|
basicMessage =
|
|
3655
|
-
_constants_api_constants__WEBPACK_IMPORTED_MODULE_4__.scorm12_constants.error_descriptions[errorNumber].basicMessage
|
|
3669
|
+
((_a = _constants_api_constants__WEBPACK_IMPORTED_MODULE_4__.scorm12_constants.error_descriptions[errorNumber]) === null || _a === void 0 ? void 0 : _a.basicMessage) ||
|
|
3670
|
+
"General Error";
|
|
3656
3671
|
detailMessage =
|
|
3657
|
-
_constants_api_constants__WEBPACK_IMPORTED_MODULE_4__.scorm12_constants.error_descriptions[errorNumber].detailMessage;
|
|
3672
|
+
((_b = _constants_api_constants__WEBPACK_IMPORTED_MODULE_4__.scorm12_constants.error_descriptions[errorNumber]) === null || _b === void 0 ? void 0 : _b.detailMessage) || "";
|
|
3658
3673
|
}
|
|
3659
3674
|
return detail ? detailMessage : basicMessage;
|
|
3660
3675
|
};
|