scorm-again 2.6.5 → 2.6.7

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.
Files changed (40) hide show
  1. package/.claude/settings.local.json +2 -1
  2. package/dist/aicc.js +13 -13
  3. package/dist/aicc.js.map +1 -1
  4. package/dist/aicc.min.js +1 -1
  5. package/dist/aicc.min.js.map +1 -1
  6. package/dist/esm/aicc.js +13 -13
  7. package/dist/esm/aicc.js.map +1 -1
  8. package/dist/esm/aicc.min.js +1 -1
  9. package/dist/esm/aicc.min.js.map +1 -1
  10. package/dist/esm/scorm-again.js +13 -13
  11. package/dist/esm/scorm-again.js.map +1 -1
  12. package/dist/esm/scorm-again.min.js +1 -1
  13. package/dist/esm/scorm-again.min.js.map +1 -1
  14. package/dist/esm/scorm12.js +13 -13
  15. package/dist/esm/scorm12.js.map +1 -1
  16. package/dist/esm/scorm12.min.js +1 -1
  17. package/dist/esm/scorm12.min.js.map +1 -1
  18. package/dist/esm/scorm2004.js +13 -13
  19. package/dist/esm/scorm2004.js.map +1 -1
  20. package/dist/esm/scorm2004.min.js +1 -1
  21. package/dist/esm/scorm2004.min.js.map +1 -1
  22. package/dist/scorm-again.js +13 -13
  23. package/dist/scorm-again.js.map +1 -1
  24. package/dist/scorm-again.min.js +1 -1
  25. package/dist/scorm-again.min.js.map +1 -1
  26. package/dist/scorm12.js +13 -13
  27. package/dist/scorm12.js.map +1 -1
  28. package/dist/scorm12.min.js +1 -1
  29. package/dist/scorm12.min.js.map +1 -1
  30. package/dist/scorm2004.js +13 -13
  31. package/dist/scorm2004.js.map +1 -1
  32. package/dist/scorm2004.min.js +1 -1
  33. package/dist/scorm2004.min.js.map +1 -1
  34. package/dist/types/types/api_types.d.ts +1 -1
  35. package/index.d.ts +24 -81
  36. package/package.json +24 -1
  37. package/src/BaseAPI.ts +71 -64
  38. package/src/constants/default_settings.ts +10 -10
  39. package/src/types/api_types.ts +2 -6
  40. package/tsconfig.json +1 -0
@@ -53,7 +53,7 @@ export type RefObject = {
53
53
  [key: string]: any;
54
54
  };
55
55
  export type ResultObject = {
56
- result: string;
56
+ result: string | boolean;
57
57
  errorCode: number;
58
58
  navRequest?: string;
59
59
  };
package/index.d.ts CHANGED
@@ -1,91 +1,34 @@
1
- import { Scorm12API as Scorm12Impl } from "./src/Scorm12API";
2
- import { CMI as Scorm12CMI } from "./src/cmi/scorm12/cmi";
3
- import { NAV as Scorm12NAV } from "./src/cmi/scorm12/nav";
4
- import { CMI as Scorm2004CMI } from "./src/cmi/scorm2004/cmi";
5
- import { ADL as Scorm2004ADL } from "./src/cmi/scorm2004/adl";
6
- import { Settings } from "./src/types/api_types";
7
- import { Scorm2004API as Scorm2004Impl } from "./src/Scorm2004API";
8
- import { AICC as AICCImpl } from "./src/AICC";
9
-
10
- declare class Scorm12API extends Scorm12Impl {
1
+ // Re-export all types from the generated declarations
2
+ export * from "./dist/types/Scorm12API";
3
+ export * from "./dist/types/Scorm2004API";
4
+ export * from "./dist/types/AICC";
5
+ export * from "./dist/types/types/api_types";
6
+ export * from "./dist/types/constants/enums";
7
+ export * from "./dist/types/constants/error_codes";
8
+ export * from "./dist/types/constants/api_constants";
9
+ export * from "./dist/types/exceptions";
10
+ export * from "./dist/types/exceptions/scorm12_exceptions";
11
+ export * from "./dist/types/exceptions/scorm2004_exceptions";
12
+ export * from "./dist/types/exceptions/aicc_exceptions";
13
+
14
+ // Import implementations for extending
15
+ import { Scorm12API as Scorm12APIImpl } from "./dist/types/Scorm12API";
16
+ import { Scorm2004API as Scorm2004APIImpl } from "./dist/types/Scorm2004API";
17
+ import { AICC as AICCImpl } from "./dist/types/AICC";
18
+ import { Settings } from "./dist/types/types/api_types";
19
+
20
+ // Declare the main API classes
21
+ declare class Scorm12API extends Scorm12APIImpl {
11
22
  constructor(settings?: Settings);
12
-
13
- cmi: Scorm12CMI;
14
- nav: Scorm12NAV;
15
- LMSInitialize: () => string;
16
- LMSFinish: () => string;
17
- LMSGetValue: (CMIElement: string) => string;
18
- LMSSetValue: (CMIElement: string, value: any) => string;
19
- LMSCommit: () => string;
20
- LMSGetLastError: () => string;
21
- LMSGetErrorString: (CMIErrorCode: string) => string;
22
- LMSGetDiagnostic: (CMIErrorCode: string) => string;
23
-
24
- loadFromJSON: (json: any, CMIElement?: string) => void;
25
- loadFromFlattenedJSON: (json: any, CMIElement?: string) => void;
26
- on: (listenerName: string, callback: Function) => void;
27
- off: (listenerName: string, callback: Function) => void;
28
- clear: (listenerName: string) => void;
29
-
30
-
31
- /**
32
- * Called when the API needs to be reset
33
- */
34
- reset(settings?: Settings): void;
35
23
  }
36
24
 
37
- declare class Scorm2004API extends Scorm2004Impl {
25
+ declare class Scorm2004API extends Scorm2004APIImpl {
38
26
  constructor(settings?: Settings);
39
-
40
- cmi: Scorm2004CMI;
41
- adl: Scorm2004ADL;
42
- Initialize: () => string;
43
- Terminate: () => string;
44
- GetValue: (CMIElement: string) => string;
45
- SetValue: (CMIElement: string, value: any) => string;
46
- Commit: () => string;
47
- GetLastError: () => string;
48
- GetErrorString: (CMIErrorCode: string) => string;
49
- GetDiagnostic: (CMIErrorCode: string) => string;
50
-
51
- loadFromJSON: (json: any, CMIElement?: string) => void;
52
- loadFromFlattenedJSON: (json: any, CMIElement?: string) => void;
53
- on: (listenerName: string, callback: Function) => void;
54
- off: (listenerName: string, callback: Function) => void;
55
- clear: (listenerName: string) => void;
56
-
57
-
58
- /**
59
- * Called when the API needs to be reset
60
- */
61
- reset(settings?: Settings): void;
62
27
  }
63
28
 
64
29
  declare class AICC extends AICCImpl {
65
30
  constructor(settings?: Settings);
66
-
67
- cmi: Scorm12CMI;
68
- nav: Scorm12NAV;
69
- LMSInitialize: () => string;
70
- LMSFinish: () => string;
71
- LMSGetValue: (CMIElement: string) => string;
72
- LMSSetValue: (CMIElement: string, value: any) => string;
73
- LMSCommit: () => string;
74
- LMSGetLastError: () => string;
75
- LMSGetErrorString: (CMIErrorCode: string) => string;
76
- LMSGetDiagnostic: (CMIErrorCode: string) => string;
77
-
78
- loadFromJSON: (json: any, CMIElement?: string) => void;
79
- loadFromFlattenedJSON: (json: any, CMIElement?: string) => void;
80
- on: (listenerName: string, callback: Function) => void;
81
- off: (listenerName: string, callback: Function) => void;
82
- clear: (listenerName: string) => void;
83
-
84
-
85
- /**
86
- * Called when the API needs to be reset
87
- */
88
- reset(settings?: Settings): void;
89
31
  }
90
32
 
91
- export { Scorm12API, Scorm2004API, AICC, Settings };
33
+ // Export the main API classes and commonly used types
34
+ export { Scorm12API, Scorm2004API, AICC, Settings };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "scorm-again",
3
- "version": "2.6.5",
3
+ "version": "2.6.7",
4
4
  "description": "A modern SCORM JavaScript run-time library for AICC, SCORM 1.2, and SCORM 2004",
5
5
  "main": "dist/scorm-again.js",
6
6
  "types": "index.d.ts",
@@ -9,6 +9,29 @@
9
9
  "browser": {
10
10
  "electron": false
11
11
  },
12
+ "exports": {
13
+ ".": {
14
+ "types": "./index.d.ts",
15
+ "import": "./dist/esm/scorm-again.js",
16
+ "require": "./dist/scorm-again.js"
17
+ },
18
+ "./scorm12": {
19
+ "types": "./dist/types/Scorm12API.d.ts",
20
+ "import": "./dist/esm/scorm12.js",
21
+ "require": "./dist/scorm12.js"
22
+ },
23
+ "./scorm2004": {
24
+ "types": "./dist/types/Scorm2004API.d.ts",
25
+ "import": "./dist/esm/scorm2004.js",
26
+ "require": "./dist/scorm2004.js"
27
+ },
28
+ "./aicc": {
29
+ "types": "./dist/types/AICC.d.ts",
30
+ "import": "./dist/esm/aicc.js",
31
+ "require": "./dist/aicc.js"
32
+ },
33
+ "./package.json": "./package.json"
34
+ },
12
35
  "browserslist": [
13
36
  "> 1%",
14
37
  "edge >= 16",
package/src/BaseAPI.ts CHANGED
@@ -4,7 +4,14 @@ import { ErrorCode } from "./constants/error_codes";
4
4
  import { global_constants } from "./constants/api_constants";
5
5
  import { formatMessage, stringMatches, unflatten } from "./utilities";
6
6
  import { BaseCMI } from "./cmi/common/base_cmi";
7
- import { CommitObject, InternalSettings, LogLevel, RefObject, ResultObject, Settings } from "./types/api_types";
7
+ import {
8
+ CommitObject,
9
+ InternalSettings,
10
+ LogLevel,
11
+ RefObject,
12
+ ResultObject,
13
+ Settings
14
+ } from "./types/api_types";
8
15
  import { DefaultSettings } from "./constants/default_settings";
9
16
  import { IBaseAPI } from "./interfaces/IBaseAPI";
10
17
  import { ScheduledCommit } from "./helpers/scheduled_commit";
@@ -38,7 +45,7 @@ export default abstract class BaseAPI implements IBaseAPI {
38
45
  if (settings) {
39
46
  this.settings = {
40
47
  ...DefaultSettings,
41
- ...settings,
48
+ ...settings
42
49
  } as InternalSettings;
43
50
  }
44
51
  this.apiLogLevel = this.settings.logLevel ?? LogLevelEnum.ERROR;
@@ -83,19 +90,19 @@ export default abstract class BaseAPI implements IBaseAPI {
83
90
  initialize(
84
91
  callbackName: string,
85
92
  initializeMessage?: string,
86
- terminationMessage?: string,
93
+ terminationMessage?: string
87
94
  ): string {
88
95
  let returnValue = global_constants.SCORM_FALSE;
89
96
 
90
97
  if (this.isInitialized()) {
91
98
  this.throwSCORMError(
92
99
  this._error_codes.INITIALIZED as number,
93
- initializeMessage,
100
+ initializeMessage
94
101
  );
95
102
  } else if (this.isTerminated()) {
96
103
  this.throwSCORMError(
97
104
  this._error_codes.TERMINATED as number,
98
- terminationMessage,
105
+ terminationMessage
99
106
  );
100
107
  } else {
101
108
  if (this.selfReportSessionTime) {
@@ -151,7 +158,7 @@ export default abstract class BaseAPI implements IBaseAPI {
151
158
  abstract getChildElement(
152
159
  _CMIElement: string,
153
160
  _value: any,
154
- _foundFirstIndex: boolean,
161
+ _foundFirstIndex: boolean
155
162
  ): BaseCMI | null;
156
163
 
157
164
  /**
@@ -193,7 +200,7 @@ export default abstract class BaseAPI implements IBaseAPI {
193
200
  functionName: string,
194
201
  logMessage: string,
195
202
  messageLevel: LogLevel,
196
- CMIElement?: string,
203
+ CMIElement?: string
197
204
  ) {
198
205
  logMessage = formatMessage(functionName, logMessage, CMIElement);
199
206
 
@@ -234,7 +241,7 @@ export default abstract class BaseAPI implements IBaseAPI {
234
241
  */
235
242
  async terminate(
236
243
  callbackName: string,
237
- checkTerminated: boolean,
244
+ checkTerminated: boolean
238
245
  ): Promise<string> {
239
246
  let returnValue = global_constants.SCORM_FALSE;
240
247
 
@@ -242,7 +249,7 @@ export default abstract class BaseAPI implements IBaseAPI {
242
249
  this.checkState(
243
250
  checkTerminated,
244
251
  this._error_codes.TERMINATION_BEFORE_INIT as number,
245
- this._error_codes.MULTIPLE_TERMINATION as number,
252
+ this._error_codes.MULTIPLE_TERMINATION as number
246
253
  )
247
254
  ) {
248
255
  this.currentState = global_constants.STATE_TERMINATED;
@@ -252,8 +259,8 @@ export default abstract class BaseAPI implements IBaseAPI {
252
259
  this.throwSCORMError(result.errorCode);
253
260
  }
254
261
  returnValue =
255
- typeof result !== "undefined" && result.result
256
- ? result.result
262
+ typeof result !== "undefined" && (result.result === true || result.result === global_constants.SCORM_TRUE)
263
+ ? global_constants.SCORM_TRUE
257
264
  : global_constants.SCORM_FALSE;
258
265
 
259
266
  if (checkTerminated) this.lastErrorCode = "0";
@@ -279,7 +286,7 @@ export default abstract class BaseAPI implements IBaseAPI {
279
286
  getValue(
280
287
  callbackName: string,
281
288
  checkTerminated: boolean,
282
- CMIElement: string,
289
+ CMIElement: string
283
290
  ): string {
284
291
  let returnValue: string = "";
285
292
 
@@ -287,7 +294,7 @@ export default abstract class BaseAPI implements IBaseAPI {
287
294
  this.checkState(
288
295
  checkTerminated,
289
296
  this._error_codes.RETRIEVE_BEFORE_INIT as number,
290
- this._error_codes.RETRIEVE_AFTER_TERM as number,
297
+ this._error_codes.RETRIEVE_AFTER_TERM as number
291
298
  )
292
299
  ) {
293
300
  if (checkTerminated) this.lastErrorCode = "0";
@@ -303,7 +310,7 @@ export default abstract class BaseAPI implements IBaseAPI {
303
310
  callbackName,
304
311
  ": returned: " + returnValue,
305
312
  LogLevelEnum.INFO,
306
- CMIElement,
313
+ CMIElement
307
314
  );
308
315
 
309
316
  if (returnValue === undefined) {
@@ -330,7 +337,7 @@ export default abstract class BaseAPI implements IBaseAPI {
330
337
  commitCallback: string,
331
338
  checkTerminated: boolean,
332
339
  CMIElement: string,
333
- value: any,
340
+ value: any
334
341
  ): string {
335
342
  if (value !== undefined) {
336
343
  value = String(value);
@@ -341,7 +348,7 @@ export default abstract class BaseAPI implements IBaseAPI {
341
348
  this.checkState(
342
349
  checkTerminated,
343
350
  this._error_codes.STORE_BEFORE_INIT as number,
344
- this._error_codes.STORE_AFTER_TERM as number,
351
+ this._error_codes.STORE_AFTER_TERM as number
345
352
  )
346
353
  ) {
347
354
  if (checkTerminated) this.lastErrorCode = "0";
@@ -363,7 +370,7 @@ export default abstract class BaseAPI implements IBaseAPI {
363
370
  if (this.settings.autocommit) {
364
371
  this.scheduleCommit(
365
372
  this.settings.autocommitSeconds * 1000,
366
- commitCallback,
373
+ commitCallback
367
374
  );
368
375
  }
369
376
  }
@@ -372,7 +379,7 @@ export default abstract class BaseAPI implements IBaseAPI {
372
379
  callbackName,
373
380
  ": " + value + ": result: " + returnValue,
374
381
  LogLevelEnum.INFO,
375
- CMIElement,
382
+ CMIElement
376
383
  );
377
384
  this.clearSCORMError(returnValue);
378
385
 
@@ -387,17 +394,17 @@ export default abstract class BaseAPI implements IBaseAPI {
387
394
  */
388
395
  async commit(
389
396
  callbackName: string,
390
- checkTerminated: boolean = false,
397
+ checkTerminated: boolean = false
391
398
  ): Promise<string> {
392
399
  this.clearScheduledCommit();
393
400
 
394
- let returnValue = global_constants.SCORM_FALSE;
401
+ let returnValue: string = global_constants.SCORM_FALSE;
395
402
 
396
403
  if (
397
404
  this.checkState(
398
405
  checkTerminated,
399
406
  this._error_codes.COMMIT_BEFORE_INIT as number,
400
- this._error_codes.COMMIT_AFTER_TERM as number,
407
+ this._error_codes.COMMIT_AFTER_TERM as number
401
408
  )
402
409
  ) {
403
410
  const result = await this.storeData(false);
@@ -405,15 +412,15 @@ export default abstract class BaseAPI implements IBaseAPI {
405
412
  this.throwSCORMError(result.errorCode);
406
413
  }
407
414
  returnValue =
408
- typeof result !== "undefined" && result.result
409
- ? result.result
415
+ typeof result !== "undefined" && (result.result === true || result.result === global_constants.SCORM_TRUE)
416
+ ? global_constants.SCORM_TRUE
410
417
  : global_constants.SCORM_FALSE;
411
418
 
412
419
  this.apiLog(
413
420
  callbackName,
414
421
  " Result: " + returnValue,
415
422
  LogLevelEnum.DEBUG,
416
- "HttpRequest",
423
+ "HttpRequest"
417
424
  );
418
425
 
419
426
  if (checkTerminated) this.lastErrorCode = "0";
@@ -493,7 +500,7 @@ export default abstract class BaseAPI implements IBaseAPI {
493
500
  checkState(
494
501
  checkTerminated: boolean,
495
502
  beforeInitError: number,
496
- afterTermError: number,
503
+ afterTermError: number
497
504
  ): boolean {
498
505
  if (this.isNotInitialized()) {
499
506
  this.throwSCORMError(beforeInitError);
@@ -517,10 +524,10 @@ export default abstract class BaseAPI implements IBaseAPI {
517
524
  */
518
525
  getLmsErrorMessageDetails(
519
526
  _errorNumber: string | number,
520
- _detail: boolean = false,
527
+ _detail: boolean = false
521
528
  ): string {
522
529
  throw new Error(
523
- "The getLmsErrorMessageDetails method has not been implemented",
530
+ "The getLmsErrorMessageDetails method has not been implemented"
524
531
  );
525
532
  }
526
533
 
@@ -562,7 +569,7 @@ export default abstract class BaseAPI implements IBaseAPI {
562
569
  methodName: string,
563
570
  scorm2004: boolean,
564
571
  CMIElement: string,
565
- value: any,
572
+ value: any
566
573
  ): string {
567
574
  if (!CMIElement || CMIElement === "") {
568
575
  return global_constants.SCORM_FALSE;
@@ -592,7 +599,7 @@ export default abstract class BaseAPI implements IBaseAPI {
592
599
  } else {
593
600
  refObject = {
594
601
  ...refObject,
595
- attribute: value,
602
+ attribute: value
596
603
  };
597
604
  }
598
605
  } else if (!this._checkObjectHasProperty(refObject, attribute)) {
@@ -631,14 +638,14 @@ export default abstract class BaseAPI implements IBaseAPI {
631
638
  const newChild = this.getChildElement(
632
639
  CMIElement,
633
640
  value,
634
- foundFirstIndex,
641
+ foundFirstIndex
635
642
  );
636
643
  foundFirstIndex = true;
637
644
 
638
645
  if (!newChild) {
639
646
  this.throwSCORMError(
640
647
  invalidErrorCode as number,
641
- invalidErrorMessage,
648
+ invalidErrorMessage
642
649
  );
643
650
  } else {
644
651
  if (refObject.initialized) newChild.initialize();
@@ -659,7 +666,7 @@ export default abstract class BaseAPI implements IBaseAPI {
659
666
  this.apiLog(
660
667
  methodName,
661
668
  `There was an error setting the value for: ${CMIElement}, value of: ${value}`,
662
- LogLevelEnum.WARN,
669
+ LogLevelEnum.WARN
663
670
  );
664
671
  }
665
672
 
@@ -677,7 +684,7 @@ export default abstract class BaseAPI implements IBaseAPI {
677
684
  _commonGetCMIValue(
678
685
  methodName: string,
679
686
  scorm2004: boolean,
680
- CMIElement: string,
687
+ CMIElement: string
681
688
  ): any {
682
689
  if (!CMIElement || CMIElement === "") {
683
690
  return "";
@@ -706,7 +713,7 @@ export default abstract class BaseAPI implements IBaseAPI {
706
713
  if (!this._checkObjectHasProperty(refObject, attribute)) {
707
714
  this.throwSCORMError(
708
715
  invalidErrorCode as number,
709
- invalidErrorMessage,
716
+ invalidErrorMessage
710
717
  );
711
718
  return;
712
719
  }
@@ -718,7 +725,7 @@ export default abstract class BaseAPI implements IBaseAPI {
718
725
  ) {
719
726
  const target = String(attribute).substring(
720
727
  8,
721
- String(attribute).length - 9,
728
+ String(attribute).length - 9
722
729
  );
723
730
  return refObject._isTargetValid(target);
724
731
  } else if (!this._checkObjectHasProperty(refObject, attribute)) {
@@ -745,7 +752,7 @@ export default abstract class BaseAPI implements IBaseAPI {
745
752
  } else {
746
753
  this.throwSCORMError(
747
754
  this._error_codes.VALUE_NOT_INITIALIZED as number,
748
- uninitializedErrorMessage,
755
+ uninitializedErrorMessage
749
756
  );
750
757
  break;
751
758
  }
@@ -820,14 +827,14 @@ export default abstract class BaseAPI implements IBaseAPI {
820
827
  this.listenerArray.push({
821
828
  functionName: functionName,
822
829
  CMIElement: CMIElement,
823
- callback: callback,
830
+ callback: callback
824
831
  });
825
832
 
826
833
  this.apiLog(
827
834
  "on",
828
835
  `Added event listener: ${this.listenerArray.length}`,
829
836
  LogLevelEnum.INFO,
830
- functionName,
837
+ functionName
831
838
  );
832
839
  }
833
840
  }
@@ -857,7 +864,7 @@ export default abstract class BaseAPI implements IBaseAPI {
857
864
  (obj) =>
858
865
  obj.functionName === functionName &&
859
866
  obj.CMIElement === CMIElement &&
860
- obj.callback === callback,
867
+ obj.callback === callback
861
868
  );
862
869
  if (removeIndex !== -1) {
863
870
  this.listenerArray.splice(removeIndex, 1);
@@ -865,7 +872,7 @@ export default abstract class BaseAPI implements IBaseAPI {
865
872
  "off",
866
873
  `Removed event listener: ${this.listenerArray.length}`,
867
874
  LogLevelEnum.INFO,
868
- functionName,
875
+ functionName
869
876
  );
870
877
  }
871
878
  }
@@ -891,7 +898,7 @@ export default abstract class BaseAPI implements IBaseAPI {
891
898
 
892
899
  this.listenerArray = this.listenerArray.filter(
893
900
  (obj) =>
894
- obj.functionName !== functionName && obj.CMIElement !== CMIElement,
901
+ obj.functionName !== functionName && obj.CMIElement !== CMIElement
895
902
  );
896
903
  }
897
904
  }
@@ -917,7 +924,7 @@ export default abstract class BaseAPI implements IBaseAPI {
917
924
  ) {
918
925
  CMIElementsMatch =
919
926
  CMIElement.indexOf(
920
- listener.CMIElement.substring(0, listener.CMIElement.length - 1),
927
+ listener.CMIElement.substring(0, listener.CMIElement.length - 1)
921
928
  ) === 0;
922
929
  } else {
923
930
  CMIElementsMatch = listener.CMIElement === CMIElement;
@@ -928,7 +935,7 @@ export default abstract class BaseAPI implements IBaseAPI {
928
935
  "processListeners",
929
936
  `Processing listener: ${listener.functionName}`,
930
937
  LogLevelEnum.INFO,
931
- CMIElement,
938
+ CMIElement
932
939
  );
933
940
  listener.callback(CMIElement, value);
934
941
  }
@@ -949,7 +956,7 @@ export default abstract class BaseAPI implements IBaseAPI {
949
956
  this.apiLog(
950
957
  "throwSCORMError",
951
958
  errorNumber + ": " + message,
952
- LogLevelEnum.ERROR,
959
+ LogLevelEnum.ERROR
953
960
  );
954
961
 
955
962
  this.lastErrorCode = String(errorNumber);
@@ -978,7 +985,7 @@ export default abstract class BaseAPI implements IBaseAPI {
978
985
  }
979
986
  if (!this.isNotInitialized()) {
980
987
  console.error(
981
- "loadFromFlattenedJSON can only be called before the call to lmsInitialize.",
988
+ "loadFromFlattenedJSON can only be called before the call to lmsInitialize."
982
989
  );
983
990
  return;
984
991
  }
@@ -994,7 +1001,7 @@ export default abstract class BaseAPI implements IBaseAPI {
994
1001
  function testPattern(
995
1002
  a: string,
996
1003
  c: string,
997
- a_pattern: RegExp,
1004
+ a_pattern: RegExp
998
1005
  ): number | null {
999
1006
  const a_match = a.match(a_pattern);
1000
1007
 
@@ -1024,12 +1031,12 @@ export default abstract class BaseAPI implements IBaseAPI {
1024
1031
  const int_pattern = /^(cmi\.interactions\.)(\d+)\.(.*)$/;
1025
1032
  const obj_pattern = /^(cmi\.objectives\.)(\d+)\.(.*)$/;
1026
1033
 
1027
- const result = Object.keys(json).map(function (key) {
1034
+ const result = Object.keys(json).map(function(key) {
1028
1035
  return [String(key), json[key]];
1029
1036
  });
1030
1037
 
1031
1038
  // CMI interactions need to have id and type loaded before any other fields
1032
- result.sort(function ([a, _b], [c, _d]) {
1039
+ result.sort(function([a, _b], [c, _d]) {
1033
1040
  let test;
1034
1041
  if ((test = testPattern(a, c, int_pattern)) !== null) {
1035
1042
  return test;
@@ -1073,7 +1080,7 @@ export default abstract class BaseAPI implements IBaseAPI {
1073
1080
 
1074
1081
  if (!this.isNotInitialized()) {
1075
1082
  console.error(
1076
- "loadFromJSON can only be called before the call to lmsInitialize.",
1083
+ "loadFromJSON can only be called before the call to lmsInitialize."
1077
1084
  );
1078
1085
  return;
1079
1086
  }
@@ -1092,7 +1099,7 @@ export default abstract class BaseAPI implements IBaseAPI {
1092
1099
  for (let i = 0; i < value["childArray"].length; i++) {
1093
1100
  this.loadFromJSON(
1094
1101
  value["childArray"][i],
1095
- currentCMIElement + "." + i,
1102
+ currentCMIElement + "." + i
1096
1103
  );
1097
1104
  }
1098
1105
  } else if (value.constructor === Object) {
@@ -1123,7 +1130,7 @@ export default abstract class BaseAPI implements IBaseAPI {
1123
1130
  * @return {object}
1124
1131
  */
1125
1132
  renderCMIToJSONObject(): object {
1126
- return JSON.parse(this.renderCMIToJSONString());
1133
+ return JSON.parse(this.renderCMIToJSONString()) as object;
1127
1134
  }
1128
1135
 
1129
1136
  /**
@@ -1136,12 +1143,12 @@ export default abstract class BaseAPI implements IBaseAPI {
1136
1143
  async processHttpRequest(
1137
1144
  url: string,
1138
1145
  params: CommitObject | RefObject | Array<any>,
1139
- immediate: boolean = false,
1146
+ immediate: boolean = false
1140
1147
  ): Promise<ResultObject> {
1141
1148
  const api = this;
1142
1149
  const genericError: ResultObject = {
1143
1150
  result: global_constants.SCORM_FALSE,
1144
- errorCode: this.error_codes.GENERAL as number,
1151
+ errorCode: this.error_codes.GENERAL as number
1145
1152
  };
1146
1153
 
1147
1154
  // if we are terminating the module or closing the browser window/tab, we need to make this fetch ASAP.
@@ -1154,14 +1161,14 @@ export default abstract class BaseAPI implements IBaseAPI {
1154
1161
  });
1155
1162
  return {
1156
1163
  result: global_constants.SCORM_TRUE,
1157
- errorCode: 0,
1164
+ errorCode: 0
1158
1165
  };
1159
1166
  }
1160
1167
 
1161
1168
  const process = async (
1162
1169
  url: string,
1163
1170
  params: CommitObject | RefObject | Array<any>,
1164
- settings: InternalSettings,
1171
+ settings: InternalSettings
1165
1172
  ): Promise<ResultObject> => {
1166
1173
  try {
1167
1174
  params = settings.requestHandler(params);
@@ -1212,13 +1219,13 @@ export default abstract class BaseAPI implements IBaseAPI {
1212
1219
  */
1213
1220
  private _checkObjectHasProperty(
1214
1221
  refObject: RefObject,
1215
- attribute: string,
1222
+ attribute: string
1216
1223
  ): boolean {
1217
1224
  return (
1218
1225
  Object.hasOwnProperty.call(refObject, attribute) ||
1219
1226
  Object.getOwnPropertyDescriptor(
1220
1227
  Object.getPrototypeOf(refObject),
1221
- attribute,
1228
+ attribute
1222
1229
  ) != null ||
1223
1230
  attribute in refObject
1224
1231
  );
@@ -1253,7 +1260,7 @@ export default abstract class BaseAPI implements IBaseAPI {
1253
1260
  * @private
1254
1261
  */
1255
1262
  protected getCommitObject(
1256
- terminateCommit: boolean,
1263
+ terminateCommit: boolean
1257
1264
  ): CommitObject | RefObject | Array<any> {
1258
1265
  const shouldTerminateCommit =
1259
1266
  terminateCommit || this.settings.alwaysSendTotalTime;
@@ -1263,7 +1270,7 @@ export default abstract class BaseAPI implements IBaseAPI {
1263
1270
 
1264
1271
  if ([LogLevelEnum.DEBUG, "1", 1, "DEBUG"].includes(this.apiLogLevel)) {
1265
1272
  console.debug(
1266
- "Commit (terminated: " + (terminateCommit ? "yes" : "no") + "): ",
1273
+ "Commit (terminated: " + (terminateCommit ? "yes" : "no") + "): "
1267
1274
  );
1268
1275
  console.debug(commitObject);
1269
1276
  }
@@ -1279,7 +1286,7 @@ export default abstract class BaseAPI implements IBaseAPI {
1279
1286
  */
1280
1287
  private async performFetch(
1281
1288
  url: string,
1282
- params: RefObject | Array<any>,
1289
+ params: RefObject | Array<any>
1283
1290
  ): Promise<Response> {
1284
1291
  let init = {
1285
1292
  method: "POST",
@@ -1287,15 +1294,15 @@ export default abstract class BaseAPI implements IBaseAPI {
1287
1294
  body: params instanceof Array ? params.join("&") : JSON.stringify(params),
1288
1295
  headers: {
1289
1296
  ...this.settings.xhrHeaders,
1290
- "Content-Type": this.settings.commitRequestDataType,
1297
+ "Content-Type": this.settings.commitRequestDataType
1291
1298
  },
1292
- keepalive: true,
1299
+ keepalive: true
1293
1300
  } as RequestInit;
1294
1301
 
1295
1302
  if (this.settings.xhrWithCredentials) {
1296
1303
  init = {
1297
1304
  ...init,
1298
- credentials: "include",
1305
+ credentials: "include"
1299
1306
  };
1300
1307
  }
1301
1308
 
@@ -1309,7 +1316,7 @@ export default abstract class BaseAPI implements IBaseAPI {
1309
1316
  * @private
1310
1317
  */
1311
1318
  private async transformResponse(response: Response): Promise<ResultObject> {
1312
- const result =
1319
+ const result: ResultObject =
1313
1320
  typeof this.settings.responseHandler === "function"
1314
1321
  ? await this.settings.responseHandler(response)
1315
1322
  : await response.json();