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/scorm2004.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];
|
|
@@ -1179,8 +1191,8 @@ function checkValidFormat(value, regexPattern, errorCode, errorClass, allowEmpty
|
|
|
1179
1191
|
function checkValidRange(value, rangePattern, errorCode, errorClass) {
|
|
1180
1192
|
var ranges = rangePattern.split("#");
|
|
1181
1193
|
value = value * 1.0;
|
|
1182
|
-
if (value >= ranges[0]) {
|
|
1183
|
-
if (ranges[1] === "*" || value <= ranges[1]) {
|
|
1194
|
+
if (ranges[0] && value >= ranges[0]) {
|
|
1195
|
+
if (ranges[1] && (ranges[1] === "*" || value <= ranges[1])) {
|
|
1184
1196
|
return true;
|
|
1185
1197
|
}
|
|
1186
1198
|
else {
|
|
@@ -1513,7 +1525,7 @@ var scorm12_regex = {
|
|
|
1513
1525
|
CMISInteger: "^-?([0-9]+)$",
|
|
1514
1526
|
CMIDecimal: "^-?([0-9]{0,3})(.[0-9]*)?$",
|
|
1515
1527
|
CMIIdentifier: "^[\\u0021-\\u007E\\s]{0,255}$",
|
|
1516
|
-
CMIFeedback: "
|
|
1528
|
+
CMIFeedback: "^.*$",
|
|
1517
1529
|
CMIIndex: "[._](\\d+).",
|
|
1518
1530
|
CMIStatus: "^(passed|completed|failed|incomplete|browsed)$",
|
|
1519
1531
|
CMIStatus2: "^(passed|completed|failed|incomplete|browsed|not attempted)$",
|
|
@@ -1690,7 +1702,7 @@ function getSecondsAsISODuration(seconds) {
|
|
|
1690
1702
|
var duration = "P";
|
|
1691
1703
|
var remainder = seconds;
|
|
1692
1704
|
for (var designationsKey in designations) {
|
|
1693
|
-
var current_seconds = designations[designationsKey];
|
|
1705
|
+
var current_seconds = designations[designationsKey] || 1;
|
|
1694
1706
|
var value = Math.floor(remainder / current_seconds);
|
|
1695
1707
|
remainder = remainder % current_seconds;
|
|
1696
1708
|
if (countDecimals(remainder) > 2) {
|
|
@@ -1797,7 +1809,7 @@ function unflatten(data) {
|
|
|
1797
1809
|
var m = regex.exec(p);
|
|
1798
1810
|
while (m) {
|
|
1799
1811
|
cur = cur[prop] || (cur[prop] = m[2] ? [] : {});
|
|
1800
|
-
prop = m[2] || m[1];
|
|
1812
|
+
prop = m[2] || m[1] || "";
|
|
1801
1813
|
m = regex.exec(p);
|
|
1802
1814
|
}
|
|
1803
1815
|
cur[prop] = data[p];
|
|
@@ -1809,7 +1821,7 @@ function countDecimals(num) {
|
|
|
1809
1821
|
if (Math.floor(num) === num || String(num).indexOf(".") < 0)
|
|
1810
1822
|
return 0;
|
|
1811
1823
|
var parts = num.toString().split(".")[1];
|
|
1812
|
-
return parts.length || 0;
|
|
1824
|
+
return (parts === null || parts === void 0 ? void 0 : parts.length) || 0;
|
|
1813
1825
|
}
|
|
1814
1826
|
function formatMessage(functionName, message, CMIElement) {
|
|
1815
1827
|
var baseLength = 20;
|
|
@@ -2345,11 +2357,12 @@ var Scorm2004ValidationError = (function (_super) {
|
|
|
2345
2357
|
(0,tslib_es6.__extends)(Scorm2004ValidationError, _super);
|
|
2346
2358
|
function Scorm2004ValidationError(errorCode) {
|
|
2347
2359
|
var _this = this;
|
|
2360
|
+
var _a, _b, _c, _d;
|
|
2348
2361
|
if ({}.hasOwnProperty.call(scorm2004_errors, String(errorCode))) {
|
|
2349
|
-
_this = _super.call(this, errorCode, scorm2004_errors[String(errorCode)].basicMessage, scorm2004_errors[String(errorCode)].detailMessage) || this;
|
|
2362
|
+
_this = _super.call(this, errorCode, ((_a = scorm2004_errors[String(errorCode)]) === null || _a === void 0 ? void 0 : _a.basicMessage) || "Unknown error", (_b = scorm2004_errors[String(errorCode)]) === null || _b === void 0 ? void 0 : _b.detailMessage) || this;
|
|
2350
2363
|
}
|
|
2351
2364
|
else {
|
|
2352
|
-
_this = _super.call(this, 101, scorm2004_errors["101"].basicMessage, scorm2004_errors["101"].detailMessage) || this;
|
|
2365
|
+
_this = _super.call(this, 101, ((_c = scorm2004_errors["101"]) === null || _c === void 0 ? void 0 : _c.basicMessage) || "General error", (_d = scorm2004_errors["101"]) === null || _d === void 0 ? void 0 : _d.detailMessage) || this;
|
|
2353
2366
|
}
|
|
2354
2367
|
return _this;
|
|
2355
2368
|
}
|
|
@@ -2765,6 +2778,7 @@ var CMIInteractionsObject = (function (_super) {
|
|
|
2765
2778
|
return this._learner_response;
|
|
2766
2779
|
},
|
|
2767
2780
|
set: function (learner_response) {
|
|
2781
|
+
var _a, _b, _c, _d;
|
|
2768
2782
|
if (this.initialized && (this._type === "" || this._id === "")) {
|
|
2769
2783
|
throw new Scorm2004ValidationError(error_codes.scorm2004_errors.DEPENDENCY_NOT_ESTABLISHED);
|
|
2770
2784
|
}
|
|
@@ -2782,14 +2796,14 @@ var CMIInteractionsObject = (function (_super) {
|
|
|
2782
2796
|
var formatRegex = new RegExp(response_type.format);
|
|
2783
2797
|
for (var i = 0; i < nodes.length; i++) {
|
|
2784
2798
|
if (response_type === null || response_type === void 0 ? void 0 : response_type.delimiter2) {
|
|
2785
|
-
var values = nodes[i].split(response_type.delimiter2);
|
|
2786
|
-
if (values.length === 2) {
|
|
2787
|
-
if (!values[0].match(formatRegex)) {
|
|
2799
|
+
var values = (_a = nodes[i]) === null || _a === void 0 ? void 0 : _a.split(response_type.delimiter2);
|
|
2800
|
+
if ((values === null || values === void 0 ? void 0 : values.length) === 2) {
|
|
2801
|
+
if (!((_b = values[0]) === null || _b === void 0 ? void 0 : _b.match(formatRegex))) {
|
|
2788
2802
|
throw new Scorm2004ValidationError(error_codes.scorm2004_errors.TYPE_MISMATCH);
|
|
2789
2803
|
}
|
|
2790
2804
|
else {
|
|
2791
2805
|
if (!response_type.format2 ||
|
|
2792
|
-
!values[1].match(new RegExp(response_type.format2))) {
|
|
2806
|
+
!((_c = values[1]) === null || _c === void 0 ? void 0 : _c.match(new RegExp(response_type.format2)))) {
|
|
2793
2807
|
throw new Scorm2004ValidationError(error_codes.scorm2004_errors.TYPE_MISMATCH);
|
|
2794
2808
|
}
|
|
2795
2809
|
}
|
|
@@ -2799,7 +2813,7 @@ var CMIInteractionsObject = (function (_super) {
|
|
|
2799
2813
|
}
|
|
2800
2814
|
}
|
|
2801
2815
|
else {
|
|
2802
|
-
if (!nodes[i].match(formatRegex)) {
|
|
2816
|
+
if (!((_d = nodes[i]) === null || _d === void 0 ? void 0 : _d.match(formatRegex))) {
|
|
2803
2817
|
throw new Scorm2004ValidationError(error_codes.scorm2004_errors.TYPE_MISMATCH);
|
|
2804
2818
|
}
|
|
2805
2819
|
else {
|
|
@@ -4277,7 +4291,8 @@ var ADLNavRequestValid = (function (_super) {
|
|
|
4277
4291
|
}
|
|
4278
4292
|
for (var key in choice) {
|
|
4279
4293
|
if ({}.hasOwnProperty.call(choice, key)) {
|
|
4280
|
-
if (
|
|
4294
|
+
if (choice[key] !== undefined &&
|
|
4295
|
+
check2004ValidFormat(choice[key], regex.scorm2004_regex.NAVBoolean) &&
|
|
4281
4296
|
check2004ValidFormat(key, regex.scorm2004_regex.NAVTarget)) {
|
|
4282
4297
|
this._choice[key] =
|
|
4283
4298
|
enums.NAVBoolean[choice[key]];
|
|
@@ -4301,7 +4316,8 @@ var ADLNavRequestValid = (function (_super) {
|
|
|
4301
4316
|
}
|
|
4302
4317
|
for (var key in jump) {
|
|
4303
4318
|
if ({}.hasOwnProperty.call(jump, key)) {
|
|
4304
|
-
if (
|
|
4319
|
+
if (jump[key] !== undefined &&
|
|
4320
|
+
check2004ValidFormat(jump[key], regex.scorm2004_regex.NAVBoolean) &&
|
|
4305
4321
|
check2004ValidFormat(key, regex.scorm2004_regex.NAVTarget)) {
|
|
4306
4322
|
this._jump[key] = enums.NAVBoolean[jump[key]];
|
|
4307
4323
|
}
|
|
@@ -4454,19 +4470,19 @@ var Scorm2004Impl = (function (_super) {
|
|
|
4454
4470
|
});
|
|
4455
4471
|
};
|
|
4456
4472
|
Scorm2004Impl.prototype.lmsGetValue = function (CMIElement) {
|
|
4457
|
-
var _a;
|
|
4473
|
+
var _a, _b;
|
|
4458
4474
|
var adlNavRequestRegex = "^adl\\.nav\\.request_valid\\.(choice|jump)\\.{target=\\S{0,}([a-zA-Z0-9-_]+)}$";
|
|
4459
4475
|
if ((0,utilities.stringMatches)(CMIElement, adlNavRequestRegex)) {
|
|
4460
4476
|
var matches = CMIElement.match(adlNavRequestRegex);
|
|
4461
4477
|
if (matches) {
|
|
4462
4478
|
var request = matches[1];
|
|
4463
|
-
var target = matches[2].replace("{target=", "").replace("}", "");
|
|
4464
|
-
if (request === "choice" || request === "jump") {
|
|
4479
|
+
var target = (_a = matches[2]) === null || _a === void 0 ? void 0 : _a.replace("{target=", "").replace("}", "");
|
|
4480
|
+
if (target && (request === "choice" || request === "jump")) {
|
|
4465
4481
|
if (this.settings.scoItemIdValidator) {
|
|
4466
4482
|
return String(this.settings.scoItemIdValidator(target));
|
|
4467
4483
|
}
|
|
4468
4484
|
if (this.settings.scoItemIds) {
|
|
4469
|
-
return String((
|
|
4485
|
+
return String((_b = this.settings.scoItemIds) === null || _b === void 0 ? void 0 : _b.includes(target));
|
|
4470
4486
|
}
|
|
4471
4487
|
return String(request);
|
|
4472
4488
|
}
|
|
@@ -4620,8 +4636,9 @@ var Scorm2004Impl = (function (_super) {
|
|
|
4620
4636
|
var interaction_count = interaction.correct_responses._count;
|
|
4621
4637
|
this.checkDuplicateChoiceResponse(interaction, value);
|
|
4622
4638
|
var response_type = CorrectResponses[interaction.type];
|
|
4623
|
-
if (typeof response_type
|
|
4624
|
-
|
|
4639
|
+
if (typeof response_type !== "undefined" &&
|
|
4640
|
+
(typeof response_type.limit === "undefined" ||
|
|
4641
|
+
interaction_count <= response_type.limit)) {
|
|
4625
4642
|
this.checkValidResponseType(response_type, value, interaction.type);
|
|
4626
4643
|
if ((this.lastErrorCode === "0" &&
|
|
4627
4644
|
(!response_type.duplicate ||
|
|
@@ -4642,14 +4659,17 @@ var Scorm2004Impl = (function (_super) {
|
|
|
4642
4659
|
return this._commonGetCMIValue("GetValue", true, CMIElement);
|
|
4643
4660
|
};
|
|
4644
4661
|
Scorm2004Impl.prototype.getLmsErrorMessageDetails = function (errorNumber, detail) {
|
|
4662
|
+
var _a, _b;
|
|
4645
4663
|
var basicMessage = "";
|
|
4646
4664
|
var detailMessage = "";
|
|
4647
4665
|
errorNumber = String(errorNumber);
|
|
4648
4666
|
if (api_constants.scorm2004_constants.error_descriptions[errorNumber]) {
|
|
4649
4667
|
basicMessage =
|
|
4650
|
-
api_constants.scorm2004_constants.error_descriptions[errorNumber].basicMessage
|
|
4668
|
+
((_a = api_constants.scorm2004_constants.error_descriptions[errorNumber]) === null || _a === void 0 ? void 0 : _a.basicMessage) ||
|
|
4669
|
+
"Unknown Error";
|
|
4651
4670
|
detailMessage =
|
|
4652
|
-
api_constants.scorm2004_constants.error_descriptions[errorNumber].detailMessage
|
|
4671
|
+
((_b = api_constants.scorm2004_constants.error_descriptions[errorNumber]) === null || _b === void 0 ? void 0 : _b.detailMessage) ||
|
|
4672
|
+
"";
|
|
4653
4673
|
}
|
|
4654
4674
|
return detail ? detailMessage : basicMessage;
|
|
4655
4675
|
};
|
|
@@ -4665,7 +4685,7 @@ var Scorm2004Impl = (function (_super) {
|
|
|
4665
4685
|
};
|
|
4666
4686
|
Scorm2004Impl.prototype.checkCorrectResponseValue = function (interaction_type, nodes, value) {
|
|
4667
4687
|
var response = CorrectResponses[interaction_type];
|
|
4668
|
-
var formatRegex = new RegExp(response.format);
|
|
4688
|
+
var formatRegex = new RegExp((response === null || response === void 0 ? void 0 : response.format) || ".*");
|
|
4669
4689
|
for (var i = 0; i < nodes.length && this.lastErrorCode === "0"; i++) {
|
|
4670
4690
|
if (interaction_type.match("^(fill-in|long-fill-in|matching|performance|sequencing)$")) {
|
|
4671
4691
|
nodes[i] = this.removeCorrectResponsePrefixes(nodes[i]);
|
|
@@ -4701,7 +4721,7 @@ var Scorm2004Impl = (function (_super) {
|
|
|
4701
4721
|
}
|
|
4702
4722
|
}
|
|
4703
4723
|
else {
|
|
4704
|
-
if (nodes[i] !== "" && response.unique) {
|
|
4724
|
+
if (nodes[i] !== "" && (response === null || response === void 0 ? void 0 : response.unique)) {
|
|
4705
4725
|
for (var j = 0; j < i && this.lastErrorCode === "0"; j++) {
|
|
4706
4726
|
if (nodes[i] === nodes[j]) {
|
|
4707
4727
|
this.throwSCORMError(error_codes.scorm2004_errors.TYPE_MISMATCH);
|
|
@@ -4714,6 +4734,7 @@ var Scorm2004Impl = (function (_super) {
|
|
|
4714
4734
|
}
|
|
4715
4735
|
};
|
|
4716
4736
|
Scorm2004Impl.prototype.removeCorrectResponsePrefixes = function (node) {
|
|
4737
|
+
var _a;
|
|
4717
4738
|
var seenOrder = false;
|
|
4718
4739
|
var seenCase = false;
|
|
4719
4740
|
var seenLang = false;
|
|
@@ -4751,7 +4772,7 @@ var Scorm2004Impl = (function (_super) {
|
|
|
4751
4772
|
seenOrder = true;
|
|
4752
4773
|
break;
|
|
4753
4774
|
}
|
|
4754
|
-
node = node.substring(matches[1].length);
|
|
4775
|
+
node = node.substring(((_a = matches[1]) === null || _a === void 0 ? void 0 : _a.length) || 0);
|
|
4755
4776
|
matches = node.match(prefixRegex);
|
|
4756
4777
|
}
|
|
4757
4778
|
return node;
|