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/aicc.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];
|
|
@@ -1094,14 +1106,16 @@ var Scorm12Impl = (function (_super) {
|
|
|
1094
1106
|
Scorm12Impl.prototype.validateCorrectResponse = function (_CMIElement, _value) {
|
|
1095
1107
|
};
|
|
1096
1108
|
Scorm12Impl.prototype.getLmsErrorMessageDetails = function (errorNumber, detail) {
|
|
1109
|
+
var _a, _b;
|
|
1097
1110
|
var basicMessage = "No Error";
|
|
1098
1111
|
var detailMessage = "No Error";
|
|
1099
1112
|
errorNumber = String(errorNumber);
|
|
1100
1113
|
if (_constants_api_constants__WEBPACK_IMPORTED_MODULE_4__.scorm12_constants.error_descriptions[errorNumber]) {
|
|
1101
1114
|
basicMessage =
|
|
1102
|
-
_constants_api_constants__WEBPACK_IMPORTED_MODULE_4__.scorm12_constants.error_descriptions[errorNumber].basicMessage
|
|
1115
|
+
((_a = _constants_api_constants__WEBPACK_IMPORTED_MODULE_4__.scorm12_constants.error_descriptions[errorNumber]) === null || _a === void 0 ? void 0 : _a.basicMessage) ||
|
|
1116
|
+
"General Error";
|
|
1103
1117
|
detailMessage =
|
|
1104
|
-
_constants_api_constants__WEBPACK_IMPORTED_MODULE_4__.scorm12_constants.error_descriptions[errorNumber].detailMessage;
|
|
1118
|
+
((_b = _constants_api_constants__WEBPACK_IMPORTED_MODULE_4__.scorm12_constants.error_descriptions[errorNumber]) === null || _b === void 0 ? void 0 : _b.detailMessage) || "";
|
|
1105
1119
|
}
|
|
1106
1120
|
return detail ? detailMessage : basicMessage;
|
|
1107
1121
|
};
|
|
@@ -1486,8 +1500,8 @@ function checkValidFormat(value, regexPattern, errorCode, errorClass, allowEmpty
|
|
|
1486
1500
|
function checkValidRange(value, rangePattern, errorCode, errorClass) {
|
|
1487
1501
|
var ranges = rangePattern.split("#");
|
|
1488
1502
|
value = value * 1.0;
|
|
1489
|
-
if (value >= ranges[0]) {
|
|
1490
|
-
if (ranges[1] === "*" || value <= ranges[1]) {
|
|
1503
|
+
if (ranges[0] && value >= ranges[0]) {
|
|
1504
|
+
if (ranges[1] && (ranges[1] === "*" || value <= ranges[1])) {
|
|
1491
1505
|
return true;
|
|
1492
1506
|
}
|
|
1493
1507
|
else {
|
|
@@ -2946,7 +2960,7 @@ var scorm12_regex = {
|
|
|
2946
2960
|
CMISInteger: "^-?([0-9]+)$",
|
|
2947
2961
|
CMIDecimal: "^-?([0-9]{0,3})(.[0-9]*)?$",
|
|
2948
2962
|
CMIIdentifier: "^[\\u0021-\\u007E\\s]{0,255}$",
|
|
2949
|
-
CMIFeedback: "
|
|
2963
|
+
CMIFeedback: "^.*$",
|
|
2950
2964
|
CMIIndex: "[._](\\d+).",
|
|
2951
2965
|
CMIStatus: "^(passed|completed|failed|incomplete|browsed)$",
|
|
2952
2966
|
CMIStatus2: "^(passed|completed|failed|incomplete|browsed|not attempted)$",
|
|
@@ -3082,11 +3096,12 @@ var Scorm12ValidationError = (function (_super) {
|
|
|
3082
3096
|
(0,tslib__WEBPACK_IMPORTED_MODULE_1__.__extends)(Scorm12ValidationError, _super);
|
|
3083
3097
|
function Scorm12ValidationError(errorCode) {
|
|
3084
3098
|
var _this = this;
|
|
3099
|
+
var _a, _b, _c, _d, _e;
|
|
3085
3100
|
if ({}.hasOwnProperty.call(scorm12_errors, String(errorCode))) {
|
|
3086
|
-
_this = _super.call(this, errorCode, scorm12_errors[String(errorCode)].basicMessage, scorm12_errors[String(errorCode)].detailMessage) || this;
|
|
3101
|
+
_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;
|
|
3087
3102
|
}
|
|
3088
3103
|
else {
|
|
3089
|
-
_this = _super.call(this, 101, scorm12_errors["101"].basicMessage, scorm12_errors["101"].detailMessage) || this;
|
|
3104
|
+
_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;
|
|
3090
3105
|
}
|
|
3091
3106
|
return _this;
|
|
3092
3107
|
}
|
|
@@ -3156,7 +3171,7 @@ function getSecondsAsISODuration(seconds) {
|
|
|
3156
3171
|
var duration = "P";
|
|
3157
3172
|
var remainder = seconds;
|
|
3158
3173
|
for (var designationsKey in designations) {
|
|
3159
|
-
var current_seconds = designations[designationsKey];
|
|
3174
|
+
var current_seconds = designations[designationsKey] || 1;
|
|
3160
3175
|
var value = Math.floor(remainder / current_seconds);
|
|
3161
3176
|
remainder = remainder % current_seconds;
|
|
3162
3177
|
if (countDecimals(remainder) > 2) {
|
|
@@ -3263,7 +3278,7 @@ function unflatten(data) {
|
|
|
3263
3278
|
var m = regex.exec(p);
|
|
3264
3279
|
while (m) {
|
|
3265
3280
|
cur = cur[prop] || (cur[prop] = m[2] ? [] : {});
|
|
3266
|
-
prop = m[2] || m[1];
|
|
3281
|
+
prop = m[2] || m[1] || "";
|
|
3267
3282
|
m = regex.exec(p);
|
|
3268
3283
|
}
|
|
3269
3284
|
cur[prop] = data[p];
|
|
@@ -3275,7 +3290,7 @@ function countDecimals(num) {
|
|
|
3275
3290
|
if (Math.floor(num) === num || String(num).indexOf(".") < 0)
|
|
3276
3291
|
return 0;
|
|
3277
3292
|
var parts = num.toString().split(".")[1];
|
|
3278
|
-
return parts.length || 0;
|
|
3293
|
+
return (parts === null || parts === void 0 ? void 0 : parts.length) || 0;
|
|
3279
3294
|
}
|
|
3280
3295
|
function formatMessage(functionName, message, CMIElement) {
|
|
3281
3296
|
var baseLength = 20;
|
|
@@ -3811,11 +3826,12 @@ var AICCValidationError = (function (_super) {
|
|
|
3811
3826
|
(0,tslib_es6.__extends)(AICCValidationError, _super);
|
|
3812
3827
|
function AICCValidationError(errorCode) {
|
|
3813
3828
|
var _this = this;
|
|
3829
|
+
var _a, _b, _c, _d;
|
|
3814
3830
|
if ({}.hasOwnProperty.call(aicc_errors, String(errorCode))) {
|
|
3815
|
-
_this = _super.call(this, errorCode, aicc_errors[String(errorCode)].basicMessage, aicc_errors[String(errorCode)].detailMessage) || this;
|
|
3831
|
+
_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;
|
|
3816
3832
|
}
|
|
3817
3833
|
else {
|
|
3818
|
-
_this = _super.call(this, 101, aicc_errors["101"].basicMessage, aicc_errors["101"].detailMessage) || this;
|
|
3834
|
+
_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;
|
|
3819
3835
|
}
|
|
3820
3836
|
return _this;
|
|
3821
3837
|
}
|