scorm-again 2.1.0 → 2.2.0

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.
@@ -1044,6 +1044,7 @@ var DefaultSettings = {
1044
1044
  logLevel: api_constants.global.LOG_LEVEL_ERROR,
1045
1045
  selfReportSessionTime: false,
1046
1046
  alwaysSendTotalTime: false,
1047
+ renderCommonCommitFields: false,
1047
1048
  strict_errors: true,
1048
1049
  xhrHeaders: {},
1049
1050
  xhrWithCredentials: false,
@@ -3730,6 +3731,18 @@ var NAVBoolean;
3730
3731
  NAVBoolean["true"] = "true";
3731
3732
  NAVBoolean["false"] = "false";
3732
3733
  })(NAVBoolean || (NAVBoolean = {}));
3734
+ var SuccessStatus;
3735
+ (function (SuccessStatus) {
3736
+ SuccessStatus["passed"] = "passed";
3737
+ SuccessStatus["failed"] = "failed";
3738
+ SuccessStatus["unknown"] = "unknown";
3739
+ })(SuccessStatus || (SuccessStatus = {}));
3740
+ var CompletionStatus;
3741
+ (function (CompletionStatus) {
3742
+ CompletionStatus["completed"] = "completed";
3743
+ CompletionStatus["incomplete"] = "incomplete";
3744
+ CompletionStatus["unknown"] = "unknown";
3745
+ })(CompletionStatus || (CompletionStatus = {}));
3733
3746
 
3734
3747
  ;// ./src/cmi/scorm2004/adl.ts
3735
3748
 
@@ -3916,6 +3929,7 @@ var ADLNavRequestValid = (function (_super) {
3916
3929
 
3917
3930
 
3918
3931
 
3932
+
3919
3933
  var Scorm2004API = (function (_super) {
3920
3934
  __extends(Scorm2004API, _super);
3921
3935
  function Scorm2004API(settings) {
@@ -4298,9 +4312,59 @@ var Scorm2004API = (function (_super) {
4298
4312
  return cmiExport;
4299
4313
  }
4300
4314
  };
4315
+ Scorm2004API.prototype.renderCommitObject = function (terminateCommit) {
4316
+ var cmiExport = this.renderCommitCMI(terminateCommit);
4317
+ var totalTimeDuration = this.cmi.getCurrentTotalTime();
4318
+ var totalTimeSeconds = getDurationAsSeconds(totalTimeDuration, regex.scorm2004.CMITimespan);
4319
+ var completionStatus = CompletionStatus.unknown;
4320
+ var successStatus = SuccessStatus.unknown;
4321
+ if (this.cmi.completion_status) {
4322
+ if (this.cmi.completion_status === "completed") {
4323
+ completionStatus = CompletionStatus.completed;
4324
+ }
4325
+ else if (this.cmi.completion_status === "incomplete") {
4326
+ completionStatus = CompletionStatus.incomplete;
4327
+ }
4328
+ }
4329
+ if (this.cmi.success_status) {
4330
+ if (this.cmi.success_status === "passed") {
4331
+ successStatus = SuccessStatus.passed;
4332
+ }
4333
+ else if (this.cmi.success_status === "failed") {
4334
+ successStatus = SuccessStatus.failed;
4335
+ }
4336
+ }
4337
+ var score = this.cmi.score;
4338
+ var scoreObject = null;
4339
+ if (score) {
4340
+ scoreObject = {};
4341
+ if (!Number.isNaN(Number.parseFloat(score.raw))) {
4342
+ scoreObject.raw = Number.parseFloat(score.raw);
4343
+ }
4344
+ if (!Number.isNaN(Number.parseFloat(score.min))) {
4345
+ scoreObject.min = Number.parseFloat(score.min);
4346
+ }
4347
+ if (!Number.isNaN(Number.parseFloat(score.max))) {
4348
+ scoreObject.max = Number.parseFloat(score.max);
4349
+ }
4350
+ if (!Number.isNaN(Number.parseFloat(score.scaled))) {
4351
+ scoreObject.scaled = Number.parseFloat(score.scaled);
4352
+ }
4353
+ }
4354
+ var commitObject = {
4355
+ completionStatus: completionStatus,
4356
+ successStatus: successStatus,
4357
+ totalTimeSeconds: totalTimeSeconds,
4358
+ runtimeData: cmiExport,
4359
+ };
4360
+ if (scoreObject) {
4361
+ commitObject.score = scoreObject;
4362
+ }
4363
+ return commitObject;
4364
+ };
4301
4365
  Scorm2004API.prototype.storeData = function (terminateCommit) {
4302
4366
  return __awaiter(this, void 0, void 0, function () {
4303
- var navRequest, commitObject, result;
4367
+ var navRequest, shouldTerminateCommit, commitObject, result;
4304
4368
  var _a, _b, _c;
4305
4369
  return __generator(this, function (_d) {
4306
4370
  switch (_d.label) {
@@ -4333,7 +4397,10 @@ var Scorm2004API = (function (_super) {
4333
4397
  this.adl.nav.request = encodeURIComponent(this.adl.nav.request);
4334
4398
  navRequest = true;
4335
4399
  }
4336
- commitObject = this.renderCommitCMI(terminateCommit || this.settings.alwaysSendTotalTime);
4400
+ shouldTerminateCommit = terminateCommit || this.settings.alwaysSendTotalTime;
4401
+ commitObject = this.settings.renderCommonCommitFields
4402
+ ? this.renderCommitObject(shouldTerminateCommit)
4403
+ : this.renderCommitCMI(shouldTerminateCommit);
4337
4404
  if (this.apiLogLevel === api_constants.global.LOG_LEVEL_DEBUG) {
4338
4405
  console.debug("Commit (terminated: " + (terminateCommit ? "yes" : "no") + "): ");
4339
4406
  console.debug(commitObject);
@@ -5307,6 +5374,8 @@ var NAV = (function (_super) {
5307
5374
 
5308
5375
 
5309
5376
 
5377
+
5378
+
5310
5379
  var Scorm12API = (function (_super) {
5311
5380
  __extends(Scorm12API, _super);
5312
5381
  function Scorm12API(settings) {
@@ -5480,9 +5549,53 @@ var Scorm12API = (function (_super) {
5480
5549
  return cmiExport;
5481
5550
  }
5482
5551
  };
5552
+ Scorm12API.prototype.renderCommitObject = function (terminateCommit) {
5553
+ var cmiExport = this.renderCommitCMI(terminateCommit);
5554
+ var totalTimeHHMMSS = this.cmi.getCurrentTotalTime();
5555
+ var totalTimeSeconds = getTimeAsSeconds(totalTimeHHMMSS, regex.scorm12.CMITimespan);
5556
+ var lessonStatus = this.cmi.core.lesson_status;
5557
+ var completionStatus = CompletionStatus.unknown;
5558
+ var successStatus = SuccessStatus.unknown;
5559
+ if (lessonStatus) {
5560
+ completionStatus =
5561
+ lessonStatus === "completed" || lessonStatus === "passed"
5562
+ ? CompletionStatus.completed
5563
+ : CompletionStatus.incomplete;
5564
+ if (lessonStatus === "passed") {
5565
+ successStatus = SuccessStatus.passed;
5566
+ }
5567
+ else if (lessonStatus === "failed") {
5568
+ successStatus = SuccessStatus.failed;
5569
+ }
5570
+ }
5571
+ var score = this.cmi.core.score;
5572
+ var scoreObject = null;
5573
+ if (score) {
5574
+ scoreObject = {};
5575
+ if (!Number.isNaN(Number.parseFloat(score.raw))) {
5576
+ scoreObject.raw = Number.parseFloat(score.raw);
5577
+ }
5578
+ if (!Number.isNaN(Number.parseFloat(score.min))) {
5579
+ scoreObject.min = Number.parseFloat(score.min);
5580
+ }
5581
+ if (!Number.isNaN(Number.parseFloat(score.max))) {
5582
+ scoreObject.max = Number.parseFloat(score.max);
5583
+ }
5584
+ }
5585
+ var commitObject = {
5586
+ successStatus: successStatus,
5587
+ completionStatus: completionStatus,
5588
+ runtimeData: cmiExport,
5589
+ totalTimeSeconds: totalTimeSeconds,
5590
+ };
5591
+ if (scoreObject) {
5592
+ commitObject.score = scoreObject;
5593
+ }
5594
+ return commitObject;
5595
+ };
5483
5596
  Scorm12API.prototype.storeData = function (terminateCommit) {
5484
5597
  return __awaiter(this, void 0, void 0, function () {
5485
- var originalStatus, commitObject;
5598
+ var originalStatus, shouldTerminateCommit, commitObject;
5486
5599
  var _a, _b, _c;
5487
5600
  return __generator(this, function (_d) {
5488
5601
  switch (_d.label) {
@@ -5514,7 +5627,10 @@ var Scorm12API = (function (_super) {
5514
5627
  }
5515
5628
  }
5516
5629
  }
5517
- commitObject = this.renderCommitCMI(terminateCommit || this.settings.alwaysSendTotalTime);
5630
+ shouldTerminateCommit = terminateCommit || this.settings.alwaysSendTotalTime;
5631
+ commitObject = this.settings.renderCommonCommitFields
5632
+ ? this.renderCommitObject(shouldTerminateCommit)
5633
+ : this.renderCommitCMI(shouldTerminateCommit);
5518
5634
  if (this.apiLogLevel === api_constants.global.LOG_LEVEL_DEBUG) {
5519
5635
  console.debug("Commit (terminated: " + (terminateCommit ? "yes" : "no") + "): ");
5520
5636
  console.debug(commitObject);