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