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/esm/aicc.js
CHANGED
|
@@ -415,6 +415,10 @@ var BaseAPI = (function () {
|
|
|
415
415
|
: this._error_codes.GENERAL;
|
|
416
416
|
for (var idx = 0; idx < structure.length; idx++) {
|
|
417
417
|
var attribute = structure[idx];
|
|
418
|
+
if (!attribute) {
|
|
419
|
+
this.throwSCORMError(invalidErrorCode, invalidErrorMessage);
|
|
420
|
+
return api_constants.global_constants.SCORM_FALSE;
|
|
421
|
+
}
|
|
418
422
|
if (idx === structure.length - 1) {
|
|
419
423
|
if (scorm2004 && attribute.substring(0, 8) === "{target=") {
|
|
420
424
|
if (this.isInitialized()) {
|
|
@@ -445,7 +449,7 @@ var BaseAPI = (function () {
|
|
|
445
449
|
break;
|
|
446
450
|
}
|
|
447
451
|
if (refObject instanceof array.CMIArray) {
|
|
448
|
-
var index = parseInt(structure[idx + 1], 10);
|
|
452
|
+
var index = parseInt(structure[idx + 1] || "0", 10);
|
|
449
453
|
if (!isNaN(index)) {
|
|
450
454
|
var item = refObject.childArray[index];
|
|
451
455
|
if (item) {
|
|
@@ -489,6 +493,10 @@ var BaseAPI = (function () {
|
|
|
489
493
|
: this._error_codes.GENERAL;
|
|
490
494
|
for (var idx = 0; idx < structure.length; idx++) {
|
|
491
495
|
attribute = structure[idx];
|
|
496
|
+
if (!attribute) {
|
|
497
|
+
this.throwSCORMError(invalidErrorCode, invalidErrorMessage);
|
|
498
|
+
return;
|
|
499
|
+
}
|
|
492
500
|
if (!scorm2004) {
|
|
493
501
|
if (idx === structure.length - 1) {
|
|
494
502
|
if (!this._checkObjectHasProperty(refObject, attribute)) {
|
|
@@ -514,7 +522,7 @@ var BaseAPI = (function () {
|
|
|
514
522
|
break;
|
|
515
523
|
}
|
|
516
524
|
if (refObject instanceof array.CMIArray) {
|
|
517
|
-
var index = parseInt(structure[idx + 1], 10);
|
|
525
|
+
var index = parseInt(structure[idx + 1] || "", 10);
|
|
518
526
|
if (!isNaN(index)) {
|
|
519
527
|
var item = refObject.childArray[index];
|
|
520
528
|
if (item) {
|
|
@@ -552,17 +560,18 @@ var BaseAPI = (function () {
|
|
|
552
560
|
return this.currentState === api_constants.global_constants.STATE_TERMINATED;
|
|
553
561
|
};
|
|
554
562
|
BaseAPI.prototype.on = function (listenerName, callback) {
|
|
563
|
+
var _a, _c;
|
|
555
564
|
if (!callback)
|
|
556
565
|
return;
|
|
557
566
|
var listenerFunctions = listenerName.split(" ");
|
|
558
567
|
for (var i = 0; i < listenerFunctions.length; i++) {
|
|
559
|
-
var listenerSplit = listenerFunctions[i].split(".");
|
|
560
|
-
if (listenerSplit.length === 0)
|
|
568
|
+
var listenerSplit = (_a = listenerFunctions[i]) === null || _a === void 0 ? void 0 : _a.split(".");
|
|
569
|
+
if (!listenerSplit || listenerSplit.length === 0)
|
|
561
570
|
return;
|
|
562
571
|
var functionName = listenerSplit[0];
|
|
563
572
|
var CMIElement = null;
|
|
564
573
|
if (listenerSplit.length > 1) {
|
|
565
|
-
CMIElement =
|
|
574
|
+
CMIElement = (_c = listenerFunctions[i]) === null || _c === void 0 ? void 0 : _c.replace(functionName + ".", "");
|
|
566
575
|
}
|
|
567
576
|
this.listenerArray.push({
|
|
568
577
|
functionName: functionName,
|
|
@@ -573,17 +582,18 @@ var BaseAPI = (function () {
|
|
|
573
582
|
}
|
|
574
583
|
};
|
|
575
584
|
BaseAPI.prototype.off = function (listenerName, callback) {
|
|
585
|
+
var _a, _c;
|
|
576
586
|
if (!callback)
|
|
577
587
|
return;
|
|
578
588
|
var listenerFunctions = listenerName.split(" ");
|
|
579
589
|
var _loop_1 = function (i) {
|
|
580
|
-
var listenerSplit = listenerFunctions[i].split(".");
|
|
581
|
-
if (listenerSplit.length === 0)
|
|
590
|
+
var listenerSplit = (_a = listenerFunctions[i]) === null || _a === void 0 ? void 0 : _a.split(".");
|
|
591
|
+
if (!listenerSplit || listenerSplit.length === 0)
|
|
582
592
|
return { value: void 0 };
|
|
583
593
|
var functionName = listenerSplit[0];
|
|
584
594
|
var CMIElement = null;
|
|
585
595
|
if (listenerSplit.length > 1) {
|
|
586
|
-
CMIElement =
|
|
596
|
+
CMIElement = (_c = listenerFunctions[i]) === null || _c === void 0 ? void 0 : _c.replace(functionName + ".", "");
|
|
587
597
|
}
|
|
588
598
|
var removeIndex = this_1.listenerArray.findIndex(function (obj) {
|
|
589
599
|
return obj.functionName === functionName &&
|
|
@@ -603,15 +613,16 @@ var BaseAPI = (function () {
|
|
|
603
613
|
}
|
|
604
614
|
};
|
|
605
615
|
BaseAPI.prototype.clear = function (listenerName) {
|
|
616
|
+
var _a, _c;
|
|
606
617
|
var listenerFunctions = listenerName.split(" ");
|
|
607
618
|
var _loop_2 = function (i) {
|
|
608
|
-
var listenerSplit = listenerFunctions[i].split(".");
|
|
609
|
-
if (listenerSplit.length === 0)
|
|
619
|
+
var listenerSplit = (_a = listenerFunctions[i]) === null || _a === void 0 ? void 0 : _a.split(".");
|
|
620
|
+
if (!listenerSplit || (listenerSplit === null || listenerSplit === void 0 ? void 0 : listenerSplit.length) === 0)
|
|
610
621
|
return { value: void 0 };
|
|
611
622
|
var functionName = listenerSplit[0];
|
|
612
623
|
var CMIElement = null;
|
|
613
624
|
if (listenerSplit.length > 1) {
|
|
614
|
-
CMIElement =
|
|
625
|
+
CMIElement = (_c = listenerFunctions[i]) === null || _c === void 0 ? void 0 : _c.replace(functionName + ".", "");
|
|
615
626
|
}
|
|
616
627
|
this_2.listenerArray = this_2.listenerArray.filter(function (obj) {
|
|
617
628
|
return obj.functionName !== functionName && obj.CMIElement !== CMIElement;
|
|
@@ -794,7 +805,7 @@ var BaseAPI = (function () {
|
|
|
794
805
|
}];
|
|
795
806
|
}
|
|
796
807
|
process = function (url, params, settings) { return (0,tslib_es6.__awaiter)(_this, void 0, void 0, function () {
|
|
797
|
-
var response, e_1;
|
|
808
|
+
var response, e_1, message;
|
|
798
809
|
return (0,tslib_es6.__generator)(this, function (_a) {
|
|
799
810
|
switch (_a.label) {
|
|
800
811
|
case 0:
|
|
@@ -806,7 +817,8 @@ var BaseAPI = (function () {
|
|
|
806
817
|
return [2, this.transformResponse(response)];
|
|
807
818
|
case 2:
|
|
808
819
|
e_1 = _a.sent();
|
|
809
|
-
|
|
820
|
+
message = e_1 instanceof Error ? e_1.message : String(e_1);
|
|
821
|
+
this.apiLog("processHttpRequest", message, enums.LogLevelEnum.ERROR);
|
|
810
822
|
api.processListeners("CommitError");
|
|
811
823
|
return [2, genericError];
|
|
812
824
|
case 3: return [2];
|
|
@@ -1092,14 +1104,16 @@ var Scorm12Impl = (function (_super) {
|
|
|
1092
1104
|
Scorm12Impl.prototype.validateCorrectResponse = function (_CMIElement, _value) {
|
|
1093
1105
|
};
|
|
1094
1106
|
Scorm12Impl.prototype.getLmsErrorMessageDetails = function (errorNumber, detail) {
|
|
1107
|
+
var _a, _b;
|
|
1095
1108
|
var basicMessage = "No Error";
|
|
1096
1109
|
var detailMessage = "No Error";
|
|
1097
1110
|
errorNumber = String(errorNumber);
|
|
1098
1111
|
if (_constants_api_constants__WEBPACK_IMPORTED_MODULE_4__.scorm12_constants.error_descriptions[errorNumber]) {
|
|
1099
1112
|
basicMessage =
|
|
1100
|
-
_constants_api_constants__WEBPACK_IMPORTED_MODULE_4__.scorm12_constants.error_descriptions[errorNumber].basicMessage
|
|
1113
|
+
((_a = _constants_api_constants__WEBPACK_IMPORTED_MODULE_4__.scorm12_constants.error_descriptions[errorNumber]) === null || _a === void 0 ? void 0 : _a.basicMessage) ||
|
|
1114
|
+
"General Error";
|
|
1101
1115
|
detailMessage =
|
|
1102
|
-
_constants_api_constants__WEBPACK_IMPORTED_MODULE_4__.scorm12_constants.error_descriptions[errorNumber].detailMessage;
|
|
1116
|
+
((_b = _constants_api_constants__WEBPACK_IMPORTED_MODULE_4__.scorm12_constants.error_descriptions[errorNumber]) === null || _b === void 0 ? void 0 : _b.detailMessage) || "";
|
|
1103
1117
|
}
|
|
1104
1118
|
return detail ? detailMessage : basicMessage;
|
|
1105
1119
|
};
|
|
@@ -1484,8 +1498,8 @@ function checkValidFormat(value, regexPattern, errorCode, errorClass, allowEmpty
|
|
|
1484
1498
|
function checkValidRange(value, rangePattern, errorCode, errorClass) {
|
|
1485
1499
|
var ranges = rangePattern.split("#");
|
|
1486
1500
|
value = value * 1.0;
|
|
1487
|
-
if (value >= ranges[0]) {
|
|
1488
|
-
if (ranges[1] === "*" || value <= ranges[1]) {
|
|
1501
|
+
if (ranges[0] && value >= ranges[0]) {
|
|
1502
|
+
if (ranges[1] && (ranges[1] === "*" || value <= ranges[1])) {
|
|
1489
1503
|
return true;
|
|
1490
1504
|
}
|
|
1491
1505
|
else {
|
|
@@ -2944,7 +2958,7 @@ var scorm12_regex = {
|
|
|
2944
2958
|
CMISInteger: "^-?([0-9]+)$",
|
|
2945
2959
|
CMIDecimal: "^-?([0-9]{0,3})(.[0-9]*)?$",
|
|
2946
2960
|
CMIIdentifier: "^[\\u0021-\\u007E\\s]{0,255}$",
|
|
2947
|
-
CMIFeedback: "
|
|
2961
|
+
CMIFeedback: "^.*$",
|
|
2948
2962
|
CMIIndex: "[._](\\d+).",
|
|
2949
2963
|
CMIStatus: "^(passed|completed|failed|incomplete|browsed)$",
|
|
2950
2964
|
CMIStatus2: "^(passed|completed|failed|incomplete|browsed|not attempted)$",
|
|
@@ -3080,11 +3094,12 @@ var Scorm12ValidationError = (function (_super) {
|
|
|
3080
3094
|
(0,tslib__WEBPACK_IMPORTED_MODULE_1__.__extends)(Scorm12ValidationError, _super);
|
|
3081
3095
|
function Scorm12ValidationError(errorCode) {
|
|
3082
3096
|
var _this = this;
|
|
3097
|
+
var _a, _b, _c, _d, _e;
|
|
3083
3098
|
if ({}.hasOwnProperty.call(scorm12_errors, String(errorCode))) {
|
|
3084
|
-
_this = _super.call(this, errorCode, scorm12_errors[String(errorCode)].basicMessage, scorm12_errors[String(errorCode)].detailMessage) || this;
|
|
3099
|
+
_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;
|
|
3085
3100
|
}
|
|
3086
3101
|
else {
|
|
3087
|
-
_this = _super.call(this, 101, scorm12_errors["101"].basicMessage, scorm12_errors["101"].detailMessage) || this;
|
|
3102
|
+
_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;
|
|
3088
3103
|
}
|
|
3089
3104
|
return _this;
|
|
3090
3105
|
}
|
|
@@ -3154,7 +3169,7 @@ function getSecondsAsISODuration(seconds) {
|
|
|
3154
3169
|
var duration = "P";
|
|
3155
3170
|
var remainder = seconds;
|
|
3156
3171
|
for (var designationsKey in designations) {
|
|
3157
|
-
var current_seconds = designations[designationsKey];
|
|
3172
|
+
var current_seconds = designations[designationsKey] || 1;
|
|
3158
3173
|
var value = Math.floor(remainder / current_seconds);
|
|
3159
3174
|
remainder = remainder % current_seconds;
|
|
3160
3175
|
if (countDecimals(remainder) > 2) {
|
|
@@ -3261,7 +3276,7 @@ function unflatten(data) {
|
|
|
3261
3276
|
var m = regex.exec(p);
|
|
3262
3277
|
while (m) {
|
|
3263
3278
|
cur = cur[prop] || (cur[prop] = m[2] ? [] : {});
|
|
3264
|
-
prop = m[2] || m[1];
|
|
3279
|
+
prop = m[2] || m[1] || "";
|
|
3265
3280
|
m = regex.exec(p);
|
|
3266
3281
|
}
|
|
3267
3282
|
cur[prop] = data[p];
|
|
@@ -3273,7 +3288,7 @@ function countDecimals(num) {
|
|
|
3273
3288
|
if (Math.floor(num) === num || String(num).indexOf(".") < 0)
|
|
3274
3289
|
return 0;
|
|
3275
3290
|
var parts = num.toString().split(".")[1];
|
|
3276
|
-
return parts.length || 0;
|
|
3291
|
+
return (parts === null || parts === void 0 ? void 0 : parts.length) || 0;
|
|
3277
3292
|
}
|
|
3278
3293
|
function formatMessage(functionName, message, CMIElement) {
|
|
3279
3294
|
var baseLength = 20;
|
|
@@ -3809,11 +3824,12 @@ var AICCValidationError = (function (_super) {
|
|
|
3809
3824
|
(0,tslib_es6.__extends)(AICCValidationError, _super);
|
|
3810
3825
|
function AICCValidationError(errorCode) {
|
|
3811
3826
|
var _this = this;
|
|
3827
|
+
var _a, _b, _c, _d;
|
|
3812
3828
|
if ({}.hasOwnProperty.call(aicc_errors, String(errorCode))) {
|
|
3813
|
-
_this = _super.call(this, errorCode, aicc_errors[String(errorCode)].basicMessage, aicc_errors[String(errorCode)].detailMessage) || this;
|
|
3829
|
+
_this = _super.call(this, errorCode, ((_a = aicc_errors[String(errorCode)]) === null || _a === void 0 ? void 0 : _a.basicMessage) || "Unknown rror", (_b = aicc_errors[String(errorCode)]) === null || _b === void 0 ? void 0 : _b.detailMessage) || this;
|
|
3814
3830
|
}
|
|
3815
3831
|
else {
|
|
3816
|
-
_this = _super.call(this, 101, aicc_errors["101"].basicMessage, aicc_errors["101"].detailMessage) || this;
|
|
3832
|
+
_this = _super.call(this, 101, ((_c = aicc_errors["101"]) === null || _c === void 0 ? void 0 : _c.basicMessage) || "General error", (_d = aicc_errors["101"]) === null || _d === void 0 ? void 0 : _d.detailMessage) || this;
|
|
3817
3833
|
}
|
|
3818
3834
|
return _this;
|
|
3819
3835
|
}
|