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.
Files changed (68) hide show
  1. package/dist/aicc.js +37 -22
  2. package/dist/aicc.js.map +1 -1
  3. package/dist/aicc.min.js +1 -1
  4. package/dist/aicc.min.js.map +1 -1
  5. package/dist/esm/aicc.js +37 -22
  6. package/dist/esm/aicc.js.map +1 -1
  7. package/dist/esm/aicc.min.js +1 -1
  8. package/dist/esm/aicc.min.js.map +1 -1
  9. package/dist/esm/scorm-again.js +66 -42
  10. package/dist/esm/scorm-again.js.map +1 -1
  11. package/dist/esm/scorm-again.min.js +1 -1
  12. package/dist/esm/scorm-again.min.js.map +1 -1
  13. package/dist/esm/scorm12.js +34 -20
  14. package/dist/esm/scorm12.js.map +1 -1
  15. package/dist/esm/scorm12.min.js +1 -1
  16. package/dist/esm/scorm12.min.js.map +1 -1
  17. package/dist/esm/scorm2004.js +56 -36
  18. package/dist/esm/scorm2004.js.map +1 -1
  19. package/dist/esm/scorm2004.min.js +1 -1
  20. package/dist/esm/scorm2004.min.js.map +1 -1
  21. package/dist/scorm-again.js +66 -42
  22. package/dist/scorm-again.js.map +1 -1
  23. package/dist/scorm-again.min.js +1 -1
  24. package/dist/scorm-again.min.js.map +1 -1
  25. package/dist/scorm12.js +34 -20
  26. package/dist/scorm12.js.map +1 -1
  27. package/dist/scorm12.min.js +1 -1
  28. package/dist/scorm12.min.js.map +1 -1
  29. package/dist/scorm2004.js +56 -36
  30. package/dist/scorm2004.js.map +1 -1
  31. package/dist/scorm2004.min.js +1 -1
  32. package/dist/scorm2004.min.js.map +1 -1
  33. package/package.json +1 -1
  34. package/src/BaseAPI.ts +54 -33
  35. package/src/Scorm12API.ts +3 -2
  36. package/src/Scorm2004API.ts +31 -24
  37. package/src/cmi/aicc/attempts.ts +3 -3
  38. package/src/cmi/aicc/core.ts +30 -12
  39. package/src/cmi/aicc/evaluation.ts +1 -1
  40. package/src/cmi/aicc/student_data.ts +1 -1
  41. package/src/cmi/aicc/student_demographics.ts +13 -13
  42. package/src/cmi/aicc/student_preferences.ts +1 -1
  43. package/src/cmi/aicc/tries.ts +3 -3
  44. package/src/cmi/aicc/validation.ts +1 -1
  45. package/src/cmi/common/array.ts +1 -1
  46. package/src/cmi/common/score.ts +3 -3
  47. package/src/cmi/common/validation.ts +2 -2
  48. package/src/cmi/scorm12/cmi.ts +12 -4
  49. package/src/cmi/scorm12/interactions.ts +27 -11
  50. package/src/cmi/scorm12/objectives.ts +4 -4
  51. package/src/cmi/scorm12/student_data.ts +12 -4
  52. package/src/cmi/scorm12/student_preference.ts +3 -1
  53. package/src/cmi/scorm12/validation.ts +5 -3
  54. package/src/cmi/scorm2004/adl.ts +21 -7
  55. package/src/cmi/scorm2004/cmi.ts +45 -15
  56. package/src/cmi/scorm2004/comments.ts +11 -5
  57. package/src/cmi/scorm2004/interactions.ts +25 -23
  58. package/src/cmi/scorm2004/learner_preference.ts +3 -1
  59. package/src/cmi/scorm2004/objectives.ts +5 -5
  60. package/src/cmi/scorm2004/score.ts +3 -3
  61. package/src/cmi/scorm2004/validation.ts +2 -2
  62. package/src/exceptions/aicc_exceptions.ts +4 -4
  63. package/src/exceptions/scorm12_exceptions.ts +4 -4
  64. package/src/exceptions/scorm2004_exceptions.ts +4 -4
  65. package/src/utilities.ts +3 -3
  66. package/test/Scorm12API.spec.ts +45 -0
  67. package/test/Scorm2004API.spec.ts +43 -0
  68. package/tsconfig.json +1 -0
@@ -59,7 +59,7 @@ export class CMIStudentDemographics extends BaseCMI {
59
59
  */
60
60
  set city(city: string) {
61
61
  if (this.initialized) {
62
- throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);
62
+ throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT as number);
63
63
  } else {
64
64
  this._city = city;
65
65
  }
@@ -80,7 +80,7 @@ export class CMIStudentDemographics extends BaseCMI {
80
80
  */
81
81
  set class(clazz: string) {
82
82
  if (this.initialized) {
83
- throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);
83
+ throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT as number);
84
84
  } else {
85
85
  this._class = clazz;
86
86
  }
@@ -101,7 +101,7 @@ export class CMIStudentDemographics extends BaseCMI {
101
101
  */
102
102
  set company(company: string) {
103
103
  if (this.initialized) {
104
- throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);
104
+ throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT as number);
105
105
  } else {
106
106
  this._company = company;
107
107
  }
@@ -122,7 +122,7 @@ export class CMIStudentDemographics extends BaseCMI {
122
122
  */
123
123
  set country(country: string) {
124
124
  if (this.initialized) {
125
- throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);
125
+ throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT as number);
126
126
  } else {
127
127
  this._country = country;
128
128
  }
@@ -143,7 +143,7 @@ export class CMIStudentDemographics extends BaseCMI {
143
143
  */
144
144
  set experience(experience: string) {
145
145
  if (this.initialized) {
146
- throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);
146
+ throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT as number);
147
147
  } else {
148
148
  this._experience = experience;
149
149
  }
@@ -164,7 +164,7 @@ export class CMIStudentDemographics extends BaseCMI {
164
164
  */
165
165
  set familiar_name(familiar_name: string) {
166
166
  if (this.initialized) {
167
- throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);
167
+ throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT as number);
168
168
  } else {
169
169
  this._familiar_name = familiar_name;
170
170
  }
@@ -185,7 +185,7 @@ export class CMIStudentDemographics extends BaseCMI {
185
185
  */
186
186
  set instructor_name(instructor_name: string) {
187
187
  if (this.initialized) {
188
- throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);
188
+ throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT as number);
189
189
  } else {
190
190
  this._instructor_name = instructor_name;
191
191
  }
@@ -206,7 +206,7 @@ export class CMIStudentDemographics extends BaseCMI {
206
206
  */
207
207
  set title(title: string) {
208
208
  if (this.initialized) {
209
- throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);
209
+ throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT as number);
210
210
  } else {
211
211
  this._title = title;
212
212
  }
@@ -227,7 +227,7 @@ export class CMIStudentDemographics extends BaseCMI {
227
227
  */
228
228
  set native_language(native_language: string) {
229
229
  if (this.initialized) {
230
- throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);
230
+ throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT as number);
231
231
  } else {
232
232
  this._native_language = native_language;
233
233
  }
@@ -248,7 +248,7 @@ export class CMIStudentDemographics extends BaseCMI {
248
248
  */
249
249
  set state(state: string) {
250
250
  if (this.initialized) {
251
- throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);
251
+ throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT as number);
252
252
  } else {
253
253
  this._state = state;
254
254
  }
@@ -269,7 +269,7 @@ export class CMIStudentDemographics extends BaseCMI {
269
269
  */
270
270
  set street_address(street_address: string) {
271
271
  if (this.initialized) {
272
- throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);
272
+ throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT as number);
273
273
  } else {
274
274
  this._street_address = street_address;
275
275
  }
@@ -290,7 +290,7 @@ export class CMIStudentDemographics extends BaseCMI {
290
290
  */
291
291
  set telephone(telephone: string) {
292
292
  if (this.initialized) {
293
- throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);
293
+ throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT as number);
294
294
  } else {
295
295
  this._telephone = telephone;
296
296
  }
@@ -311,7 +311,7 @@ export class CMIStudentDemographics extends BaseCMI {
311
311
  */
312
312
  set years_experience(years_experience: string) {
313
313
  if (this.initialized) {
314
- throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT);
314
+ throw new AICCValidationError(scorm12_errors.READ_ONLY_ELEMENT as number);
315
315
  } else {
316
316
  this._years_experience = years_experience;
317
317
  }
@@ -16,7 +16,7 @@ export class AICCStudentPreferences extends CMIStudentPreference {
16
16
  constructor() {
17
17
  super(aicc_constants.student_preference_children);
18
18
  this.windows = new CMIArray({
19
- errorCode: scorm12_errors.INVALID_SET_VALUE,
19
+ errorCode: scorm12_errors.INVALID_SET_VALUE as number,
20
20
  errorClass: AICCValidationError,
21
21
  children: "",
22
22
  });
@@ -36,9 +36,9 @@ export class CMITriesObject extends BaseCMI {
36
36
  this.score = new CMIScore({
37
37
  score_children: aicc_constants.score_children,
38
38
  score_range: aicc_regex.score_range,
39
- invalidErrorCode: scorm12_errors.INVALID_SET_VALUE,
40
- invalidTypeCode: scorm12_errors.TYPE_MISMATCH,
41
- invalidRangeCode: scorm12_errors.VALUE_OUT_OF_RANGE,
39
+ invalidErrorCode: scorm12_errors.INVALID_SET_VALUE as number,
40
+ invalidTypeCode: scorm12_errors.TYPE_MISMATCH as number,
41
+ invalidRangeCode: scorm12_errors.VALUE_OUT_OF_RANGE as number,
42
42
  errorClass: AICCValidationError,
43
43
  });
44
44
  }
@@ -17,7 +17,7 @@ export function checkAICCValidFormat(
17
17
  return checkValidFormat(
18
18
  value,
19
19
  regexPattern,
20
- scorm12_errors.TYPE_MISMATCH,
20
+ scorm12_errors.TYPE_MISMATCH as number,
21
21
  AICCValidationError,
22
22
  allowEmptyString,
23
23
  );
@@ -22,7 +22,7 @@ export class CMIArray extends BaseCMI {
22
22
  }) {
23
23
  super();
24
24
  this.__children = params.children;
25
- this._errorCode = params.errorCode || scorm12_errors.GENERAL;
25
+ this._errorCode = params.errorCode || (scorm12_errors.GENERAL as number);
26
26
  this._errorClass = params.errorClass || BaseScormValidationError;
27
27
  this.childArray = [];
28
28
  }
@@ -51,11 +51,11 @@ export class CMIScore extends BaseCMI {
51
51
  : scorm12_regex.score_range;
52
52
  this._max = params.max || params.max === "" ? params.max : "100";
53
53
  this.__invalid_error_code =
54
- params.invalidErrorCode || scorm12_errors.INVALID_SET_VALUE;
54
+ params.invalidErrorCode || (scorm12_errors.INVALID_SET_VALUE as number);
55
55
  this.__invalid_type_code =
56
- params.invalidTypeCode || scorm12_errors.TYPE_MISMATCH;
56
+ params.invalidTypeCode || (scorm12_errors.TYPE_MISMATCH as number);
57
57
  this.__invalid_range_code =
58
- params.invalidRangeCode || scorm12_errors.VALUE_OUT_OF_RANGE;
58
+ params.invalidRangeCode || (scorm12_errors.VALUE_OUT_OF_RANGE as number);
59
59
  this.__decimal_regex = params.decimalRegex || scorm12_regex.CMIDecimal;
60
60
  this.__error_class = params.errorClass;
61
61
  }
@@ -48,8 +48,8 @@ export function checkValidRange(
48
48
  ): boolean {
49
49
  const ranges = rangePattern.split("#");
50
50
  value = value * 1.0;
51
- if (value >= ranges[0]) {
52
- if (ranges[1] === "*" || value <= ranges[1]) {
51
+ if (ranges[0] && value >= ranges[0]) {
52
+ if (ranges[1] && (ranges[1] === "*" || value <= ranges[1])) {
53
53
  return true;
54
54
  } else {
55
55
  throw new errorClass(errorCode);
@@ -133,7 +133,9 @@ export class CMI extends BaseRootCMI {
133
133
  * @param {string} _version
134
134
  */
135
135
  set _version(_version: string) {
136
- throw new Scorm12ValidationError(scorm12_errors.INVALID_SET_VALUE);
136
+ throw new Scorm12ValidationError(
137
+ scorm12_errors.INVALID_SET_VALUE as number,
138
+ );
137
139
  }
138
140
 
139
141
  /**
@@ -149,7 +151,9 @@ export class CMI extends BaseRootCMI {
149
151
  * @param {string} _children
150
152
  */
151
153
  set _children(_children: string) {
152
- throw new Scorm12ValidationError(scorm12_errors.INVALID_SET_VALUE);
154
+ throw new Scorm12ValidationError(
155
+ scorm12_errors.INVALID_SET_VALUE as number,
156
+ );
153
157
  }
154
158
 
155
159
  /**
@@ -184,7 +188,9 @@ export class CMI extends BaseRootCMI {
184
188
  */
185
189
  set launch_data(launch_data: string) {
186
190
  if (this.initialized) {
187
- throw new Scorm12ValidationError(scorm12_errors.READ_ONLY_ELEMENT);
191
+ throw new Scorm12ValidationError(
192
+ scorm12_errors.READ_ONLY_ELEMENT as number,
193
+ );
188
194
  } else {
189
195
  this._launch_data = launch_data;
190
196
  }
@@ -222,7 +228,9 @@ export class CMI extends BaseRootCMI {
222
228
  */
223
229
  set comments_from_lms(comments_from_lms: string) {
224
230
  if (this.initialized) {
225
- throw new Scorm12ValidationError(scorm12_errors.READ_ONLY_ELEMENT);
231
+ throw new Scorm12ValidationError(
232
+ scorm12_errors.READ_ONLY_ELEMENT as number,
233
+ );
226
234
  } else {
227
235
  this._comments_from_lms = comments_from_lms;
228
236
  }
@@ -17,7 +17,7 @@ export class CMIInteractions extends CMIArray {
17
17
  constructor() {
18
18
  super({
19
19
  children: scorm12_constants.interactions_children,
20
- errorCode: scorm12_errors.INVALID_SET_VALUE,
20
+ errorCode: scorm12_errors.INVALID_SET_VALUE as number,
21
21
  errorClass: Scorm12ValidationError,
22
22
  });
23
23
  }
@@ -34,12 +34,12 @@ export class CMIInteractionsObject extends BaseCMI {
34
34
  constructor() {
35
35
  super();
36
36
  this.objectives = new CMIArray({
37
- errorCode: scorm12_errors.INVALID_SET_VALUE,
37
+ errorCode: scorm12_errors.INVALID_SET_VALUE as number,
38
38
  errorClass: Scorm12ValidationError,
39
39
  children: scorm12_constants.objectives_children,
40
40
  });
41
41
  this.correct_responses = new CMIArray({
42
- errorCode: scorm12_errors.INVALID_SET_VALUE,
42
+ errorCode: scorm12_errors.INVALID_SET_VALUE as number,
43
43
  errorClass: Scorm12ValidationError,
44
44
  children: scorm12_constants.correct_responses_children,
45
45
  });
@@ -89,7 +89,9 @@ export class CMIInteractionsObject extends BaseCMI {
89
89
  */
90
90
  get id(): string {
91
91
  if (!this.jsonString) {
92
- throw new Scorm12ValidationError(scorm12_errors.WRITE_ONLY_ELEMENT);
92
+ throw new Scorm12ValidationError(
93
+ scorm12_errors.WRITE_ONLY_ELEMENT as number,
94
+ );
93
95
  }
94
96
  return this._id;
95
97
  }
@@ -110,7 +112,9 @@ export class CMIInteractionsObject extends BaseCMI {
110
112
  */
111
113
  get time(): string {
112
114
  if (!this.jsonString) {
113
- throw new Scorm12ValidationError(scorm12_errors.WRITE_ONLY_ELEMENT);
115
+ throw new Scorm12ValidationError(
116
+ scorm12_errors.WRITE_ONLY_ELEMENT as number,
117
+ );
114
118
  }
115
119
  return this._time;
116
120
  }
@@ -131,7 +135,9 @@ export class CMIInteractionsObject extends BaseCMI {
131
135
  */
132
136
  get type(): string {
133
137
  if (!this.jsonString) {
134
- throw new Scorm12ValidationError(scorm12_errors.WRITE_ONLY_ELEMENT);
138
+ throw new Scorm12ValidationError(
139
+ scorm12_errors.WRITE_ONLY_ELEMENT as number,
140
+ );
135
141
  }
136
142
  return this._type;
137
143
  }
@@ -152,7 +158,9 @@ export class CMIInteractionsObject extends BaseCMI {
152
158
  */
153
159
  get weighting(): string {
154
160
  if (!this.jsonString) {
155
- throw new Scorm12ValidationError(scorm12_errors.WRITE_ONLY_ELEMENT);
161
+ throw new Scorm12ValidationError(
162
+ scorm12_errors.WRITE_ONLY_ELEMENT as number,
163
+ );
156
164
  }
157
165
  return this._weighting;
158
166
  }
@@ -176,7 +184,9 @@ export class CMIInteractionsObject extends BaseCMI {
176
184
  */
177
185
  get student_response(): string {
178
186
  if (!this.jsonString) {
179
- throw new Scorm12ValidationError(scorm12_errors.WRITE_ONLY_ELEMENT);
187
+ throw new Scorm12ValidationError(
188
+ scorm12_errors.WRITE_ONLY_ELEMENT as number,
189
+ );
180
190
  }
181
191
  return this._student_response;
182
192
  }
@@ -197,7 +207,9 @@ export class CMIInteractionsObject extends BaseCMI {
197
207
  */
198
208
  get result(): string {
199
209
  if (!this.jsonString) {
200
- throw new Scorm12ValidationError(scorm12_errors.WRITE_ONLY_ELEMENT);
210
+ throw new Scorm12ValidationError(
211
+ scorm12_errors.WRITE_ONLY_ELEMENT as number,
212
+ );
201
213
  }
202
214
  return this._result;
203
215
  }
@@ -218,7 +230,9 @@ export class CMIInteractionsObject extends BaseCMI {
218
230
  */
219
231
  get latency(): string {
220
232
  if (!this.jsonString) {
221
- throw new Scorm12ValidationError(scorm12_errors.WRITE_ONLY_ELEMENT);
233
+ throw new Scorm12ValidationError(
234
+ scorm12_errors.WRITE_ONLY_ELEMENT as number,
235
+ );
222
236
  }
223
237
  return this._latency;
224
238
  }
@@ -366,7 +380,9 @@ export class CMIInteractionsCorrectResponsesObject extends BaseCMI {
366
380
  */
367
381
  get pattern(): string {
368
382
  if (!this.jsonString) {
369
- throw new Scorm12ValidationError(scorm12_errors.WRITE_ONLY_ELEMENT);
383
+ throw new Scorm12ValidationError(
384
+ scorm12_errors.WRITE_ONLY_ELEMENT as number,
385
+ );
370
386
  }
371
387
  return this._pattern;
372
388
  }
@@ -18,7 +18,7 @@ export class CMIObjectives extends CMIArray {
18
18
  constructor() {
19
19
  super({
20
20
  children: scorm12_constants.objectives_children,
21
- errorCode: scorm12_errors.INVALID_SET_VALUE,
21
+ errorCode: scorm12_errors.INVALID_SET_VALUE as number,
22
22
  errorClass: Scorm12ValidationError,
23
23
  });
24
24
  }
@@ -37,9 +37,9 @@ export class CMIObjectivesObject extends BaseCMI {
37
37
  this.score = new CMIScore({
38
38
  score_children: scorm12_constants.score_children,
39
39
  score_range: scorm12_regex.score_range,
40
- invalidErrorCode: scorm12_errors.INVALID_SET_VALUE,
41
- invalidTypeCode: scorm12_errors.TYPE_MISMATCH,
42
- invalidRangeCode: scorm12_errors.VALUE_OUT_OF_RANGE,
40
+ invalidErrorCode: scorm12_errors.INVALID_SET_VALUE as number,
41
+ invalidTypeCode: scorm12_errors.TYPE_MISMATCH as number,
42
+ invalidRangeCode: scorm12_errors.VALUE_OUT_OF_RANGE as number,
43
43
  errorClass: Scorm12ValidationError,
44
44
  });
45
45
  }
@@ -46,7 +46,9 @@ export class CMIStudentData extends BaseCMI {
46
46
  * @private
47
47
  */
48
48
  set _children(_children: string) {
49
- throw new Scorm12ValidationError(scorm12_errors.INVALID_SET_VALUE);
49
+ throw new Scorm12ValidationError(
50
+ scorm12_errors.INVALID_SET_VALUE as number,
51
+ );
50
52
  }
51
53
 
52
54
  /**
@@ -63,7 +65,9 @@ export class CMIStudentData extends BaseCMI {
63
65
  */
64
66
  set mastery_score(mastery_score: string) {
65
67
  if (this.initialized) {
66
- throw new Scorm12ValidationError(scorm12_errors.READ_ONLY_ELEMENT);
68
+ throw new Scorm12ValidationError(
69
+ scorm12_errors.READ_ONLY_ELEMENT as number,
70
+ );
67
71
  } else {
68
72
  this._mastery_score = mastery_score;
69
73
  }
@@ -83,7 +87,9 @@ export class CMIStudentData extends BaseCMI {
83
87
  */
84
88
  set max_time_allowed(max_time_allowed: string) {
85
89
  if (this.initialized) {
86
- throw new Scorm12ValidationError(scorm12_errors.READ_ONLY_ELEMENT);
90
+ throw new Scorm12ValidationError(
91
+ scorm12_errors.READ_ONLY_ELEMENT as number,
92
+ );
87
93
  } else {
88
94
  this._max_time_allowed = max_time_allowed;
89
95
  }
@@ -103,7 +109,9 @@ export class CMIStudentData extends BaseCMI {
103
109
  */
104
110
  set time_limit_action(time_limit_action: string) {
105
111
  if (this.initialized) {
106
- throw new Scorm12ValidationError(scorm12_errors.READ_ONLY_ELEMENT);
112
+ throw new Scorm12ValidationError(
113
+ scorm12_errors.READ_ONLY_ELEMENT as number,
114
+ );
107
115
  } else {
108
116
  this._time_limit_action = time_limit_action;
109
117
  }
@@ -50,7 +50,9 @@ export class CMIStudentPreference extends BaseCMI {
50
50
  * @private
51
51
  */
52
52
  set _children(_children: string) {
53
- throw new Scorm12ValidationError(scorm12_errors.INVALID_SET_VALUE);
53
+ throw new Scorm12ValidationError(
54
+ scorm12_errors.INVALID_SET_VALUE as number,
55
+ );
54
56
  }
55
57
 
56
58
  /**
@@ -17,7 +17,7 @@ export function check12ValidFormat(
17
17
  return checkValidFormat(
18
18
  value,
19
19
  regexPattern,
20
- scorm12_errors.TYPE_MISMATCH,
20
+ scorm12_errors.TYPE_MISMATCH as number,
21
21
  Scorm12ValidationError,
22
22
  allowEmptyString,
23
23
  );
@@ -36,13 +36,15 @@ export function check12ValidRange(
36
36
  allowEmptyString?: boolean,
37
37
  ): boolean {
38
38
  if (!allowEmptyString && value === "") {
39
- throw new Scorm12ValidationError(scorm12_errors.VALUE_OUT_OF_RANGE);
39
+ throw new Scorm12ValidationError(
40
+ scorm12_errors.VALUE_OUT_OF_RANGE as number,
41
+ );
40
42
  }
41
43
 
42
44
  return checkValidRange(
43
45
  value,
44
46
  rangePattern,
45
- scorm12_errors.VALUE_OUT_OF_RANGE,
47
+ scorm12_errors.VALUE_OUT_OF_RANGE as number,
46
48
  Scorm12ValidationError,
47
49
  );
48
50
  }
@@ -142,7 +142,7 @@ export class ADLData extends CMIArray {
142
142
  constructor() {
143
143
  super({
144
144
  children: scorm2004_constants.adl_data_children,
145
- errorCode: scorm2004_errors.READ_ONLY_ELEMENT,
145
+ errorCode: scorm2004_errors.READ_ONLY_ELEMENT as number,
146
146
  errorClass: Scorm2004ValidationError,
147
147
  });
148
148
  }
@@ -270,7 +270,9 @@ export class ADLNavRequestValid extends BaseCMI {
270
270
  */
271
271
  set continue(_continue: string) {
272
272
  if (this.initialized) {
273
- throw new Scorm2004ValidationError(scorm2004_errors.READ_ONLY_ELEMENT);
273
+ throw new Scorm2004ValidationError(
274
+ scorm2004_errors.READ_ONLY_ELEMENT as number,
275
+ );
274
276
  }
275
277
  if (check2004ValidFormat(_continue, scorm2004_regex.NAVBoolean)) {
276
278
  this._continue = _continue;
@@ -291,7 +293,9 @@ export class ADLNavRequestValid extends BaseCMI {
291
293
  */
292
294
  set previous(_previous: string) {
293
295
  if (this.initialized) {
294
- throw new Scorm2004ValidationError(scorm2004_errors.READ_ONLY_ELEMENT);
296
+ throw new Scorm2004ValidationError(
297
+ scorm2004_errors.READ_ONLY_ELEMENT as number,
298
+ );
295
299
  }
296
300
  if (check2004ValidFormat(_previous, scorm2004_regex.NAVBoolean)) {
297
301
  this._previous = _previous;
@@ -312,14 +316,19 @@ export class ADLNavRequestValid extends BaseCMI {
312
316
  */
313
317
  set choice(choice: { [key: string]: string }) {
314
318
  if (this.initialized) {
315
- throw new Scorm2004ValidationError(scorm2004_errors.READ_ONLY_ELEMENT);
319
+ throw new Scorm2004ValidationError(
320
+ scorm2004_errors.READ_ONLY_ELEMENT as number,
321
+ );
316
322
  }
317
323
  if (typeof choice !== "object") {
318
- throw new Scorm2004ValidationError(scorm2004_errors.TYPE_MISMATCH);
324
+ throw new Scorm2004ValidationError(
325
+ scorm2004_errors.TYPE_MISMATCH as number,
326
+ );
319
327
  }
320
328
  for (const key in choice) {
321
329
  if ({}.hasOwnProperty.call(choice, key)) {
322
330
  if (
331
+ choice[key] !== undefined &&
323
332
  check2004ValidFormat(choice[key], scorm2004_regex.NAVBoolean) &&
324
333
  check2004ValidFormat(key, scorm2004_regex.NAVTarget)
325
334
  ) {
@@ -344,14 +353,19 @@ export class ADLNavRequestValid extends BaseCMI {
344
353
  */
345
354
  set jump(jump: { [key: string]: string }) {
346
355
  if (this.initialized) {
347
- throw new Scorm2004ValidationError(scorm2004_errors.READ_ONLY_ELEMENT);
356
+ throw new Scorm2004ValidationError(
357
+ scorm2004_errors.READ_ONLY_ELEMENT as number,
358
+ );
348
359
  }
349
360
  if (typeof jump !== "object") {
350
- throw new Scorm2004ValidationError(scorm2004_errors.TYPE_MISMATCH);
361
+ throw new Scorm2004ValidationError(
362
+ scorm2004_errors.TYPE_MISMATCH as number,
363
+ );
351
364
  }
352
365
  for (const key in jump) {
353
366
  if ({}.hasOwnProperty.call(jump, key)) {
354
367
  if (
368
+ jump[key] !== undefined &&
355
369
  check2004ValidFormat(jump[key], scorm2004_regex.NAVBoolean) &&
356
370
  check2004ValidFormat(key, scorm2004_regex.NAVTarget)
357
371
  ) {
@@ -107,7 +107,9 @@ export class CMI extends BaseRootCMI {
107
107
  * @private
108
108
  */
109
109
  set _version(_version: string) {
110
- throw new Scorm2004ValidationError(scorm2004_errors.READ_ONLY_ELEMENT);
110
+ throw new Scorm2004ValidationError(
111
+ scorm2004_errors.READ_ONLY_ELEMENT as number,
112
+ );
111
113
  }
112
114
 
113
115
  /**
@@ -125,7 +127,9 @@ export class CMI extends BaseRootCMI {
125
127
  * @private
126
128
  */
127
129
  set _children(_children: number) {
128
- throw new Scorm2004ValidationError(scorm2004_errors.READ_ONLY_ELEMENT);
130
+ throw new Scorm2004ValidationError(
131
+ scorm2004_errors.READ_ONLY_ELEMENT as number,
132
+ );
129
133
  }
130
134
 
131
135
  /**
@@ -160,7 +164,9 @@ export class CMI extends BaseRootCMI {
160
164
  */
161
165
  set completion_threshold(completion_threshold: string) {
162
166
  if (this.initialized) {
163
- throw new Scorm2004ValidationError(scorm2004_errors.READ_ONLY_ELEMENT);
167
+ throw new Scorm2004ValidationError(
168
+ scorm2004_errors.READ_ONLY_ELEMENT as number,
169
+ );
164
170
  } else {
165
171
  this._completion_threshold = completion_threshold;
166
172
  }
@@ -180,7 +186,9 @@ export class CMI extends BaseRootCMI {
180
186
  */
181
187
  set credit(credit: string) {
182
188
  if (this.initialized) {
183
- throw new Scorm2004ValidationError(scorm2004_errors.READ_ONLY_ELEMENT);
189
+ throw new Scorm2004ValidationError(
190
+ scorm2004_errors.READ_ONLY_ELEMENT as number,
191
+ );
184
192
  } else {
185
193
  this._credit = credit;
186
194
  }
@@ -200,7 +208,9 @@ export class CMI extends BaseRootCMI {
200
208
  */
201
209
  set entry(entry: string) {
202
210
  if (this.initialized) {
203
- throw new Scorm2004ValidationError(scorm2004_errors.READ_ONLY_ELEMENT);
211
+ throw new Scorm2004ValidationError(
212
+ scorm2004_errors.READ_ONLY_ELEMENT as number,
213
+ );
204
214
  } else {
205
215
  this._entry = entry;
206
216
  }
@@ -212,7 +222,9 @@ export class CMI extends BaseRootCMI {
212
222
  */
213
223
  get exit(): string {
214
224
  if (!this.jsonString) {
215
- throw new Scorm2004ValidationError(scorm2004_errors.WRITE_ONLY_ELEMENT);
225
+ throw new Scorm2004ValidationError(
226
+ scorm2004_errors.WRITE_ONLY_ELEMENT as number,
227
+ );
216
228
  }
217
229
  return this._exit;
218
230
  }
@@ -241,7 +253,9 @@ export class CMI extends BaseRootCMI {
241
253
  */
242
254
  set launch_data(launch_data: string) {
243
255
  if (this.initialized) {
244
- throw new Scorm2004ValidationError(scorm2004_errors.READ_ONLY_ELEMENT);
256
+ throw new Scorm2004ValidationError(
257
+ scorm2004_errors.READ_ONLY_ELEMENT as number,
258
+ );
245
259
  } else {
246
260
  this._launch_data = launch_data;
247
261
  }
@@ -261,7 +275,9 @@ export class CMI extends BaseRootCMI {
261
275
  */
262
276
  set learner_id(learner_id: string) {
263
277
  if (this.initialized) {
264
- throw new Scorm2004ValidationError(scorm2004_errors.READ_ONLY_ELEMENT);
278
+ throw new Scorm2004ValidationError(
279
+ scorm2004_errors.READ_ONLY_ELEMENT as number,
280
+ );
265
281
  } else {
266
282
  this._learner_id = learner_id;
267
283
  }
@@ -281,7 +297,9 @@ export class CMI extends BaseRootCMI {
281
297
  */
282
298
  set learner_name(learner_name: string) {
283
299
  if (this.initialized) {
284
- throw new Scorm2004ValidationError(scorm2004_errors.READ_ONLY_ELEMENT);
300
+ throw new Scorm2004ValidationError(
301
+ scorm2004_errors.READ_ONLY_ELEMENT as number,
302
+ );
285
303
  } else {
286
304
  this._learner_name = learner_name;
287
305
  }
@@ -319,7 +337,9 @@ export class CMI extends BaseRootCMI {
319
337
  */
320
338
  set max_time_allowed(max_time_allowed: string) {
321
339
  if (this.initialized) {
322
- throw new Scorm2004ValidationError(scorm2004_errors.READ_ONLY_ELEMENT);
340
+ throw new Scorm2004ValidationError(
341
+ scorm2004_errors.READ_ONLY_ELEMENT as number,
342
+ );
323
343
  } else {
324
344
  this._max_time_allowed = max_time_allowed;
325
345
  }
@@ -339,7 +359,9 @@ export class CMI extends BaseRootCMI {
339
359
  */
340
360
  set mode(mode: string) {
341
361
  if (this.initialized) {
342
- throw new Scorm2004ValidationError(scorm2004_errors.READ_ONLY_ELEMENT);
362
+ throw new Scorm2004ValidationError(
363
+ scorm2004_errors.READ_ONLY_ELEMENT as number,
364
+ );
343
365
  } else {
344
366
  this._mode = mode;
345
367
  }
@@ -380,7 +402,9 @@ export class CMI extends BaseRootCMI {
380
402
  */
381
403
  set scaled_passing_score(scaled_passing_score: string) {
382
404
  if (this.initialized) {
383
- throw new Scorm2004ValidationError(scorm2004_errors.READ_ONLY_ELEMENT);
405
+ throw new Scorm2004ValidationError(
406
+ scorm2004_errors.READ_ONLY_ELEMENT as number,
407
+ );
384
408
  } else {
385
409
  this._scaled_passing_score = scaled_passing_score;
386
410
  }
@@ -392,7 +416,9 @@ export class CMI extends BaseRootCMI {
392
416
  */
393
417
  get session_time(): string {
394
418
  if (!this.jsonString) {
395
- throw new Scorm2004ValidationError(scorm2004_errors.WRITE_ONLY_ELEMENT);
419
+ throw new Scorm2004ValidationError(
420
+ scorm2004_errors.WRITE_ONLY_ELEMENT as number,
421
+ );
396
422
  }
397
423
  return this._session_time;
398
424
  }
@@ -459,7 +485,9 @@ export class CMI extends BaseRootCMI {
459
485
  */
460
486
  set time_limit_action(time_limit_action: string) {
461
487
  if (this.initialized) {
462
- throw new Scorm2004ValidationError(scorm2004_errors.READ_ONLY_ELEMENT);
488
+ throw new Scorm2004ValidationError(
489
+ scorm2004_errors.READ_ONLY_ELEMENT as number,
490
+ );
463
491
  } else {
464
492
  this._time_limit_action = time_limit_action;
465
493
  }
@@ -479,7 +507,9 @@ export class CMI extends BaseRootCMI {
479
507
  */
480
508
  set total_time(total_time: string) {
481
509
  if (this.initialized) {
482
- throw new Scorm2004ValidationError(scorm2004_errors.READ_ONLY_ELEMENT);
510
+ throw new Scorm2004ValidationError(
511
+ scorm2004_errors.READ_ONLY_ELEMENT as number,
512
+ );
483
513
  } else {
484
514
  this._total_time = total_time;
485
515
  }