scorm-again 3.1.3 → 3.1.5
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/esm/scorm-again.js +1257 -236
- 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 +14 -3
- 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 +1257 -236
- 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 +1619 -449
- package/dist/scorm-again.js.map +1 -1
- package/dist/scorm-again.min.js +1 -1
- package/dist/scorm12.js +54 -14
- package/dist/scorm12.js.map +1 -1
- package/dist/scorm12.min.js +1 -1
- package/dist/scorm2004.js +1614 -444
- package/dist/scorm2004.js.map +1 -1
- package/dist/scorm2004.min.js +1 -1
- package/dist/types/Scorm2004API.d.ts +12 -0
- package/dist/types/cmi/scorm2004/completion_status_evaluation.d.ts +7 -0
- package/dist/types/cmi/scorm2004/sequencing/activity.d.ts +47 -5
- package/dist/types/cmi/scorm2004/sequencing/handlers/rte_data_transfer.d.ts +1 -0
- package/dist/types/cmi/scorm2004/sequencing/handlers/termination_handler.d.ts +1 -0
- package/dist/types/cmi/scorm2004/sequencing/objectives/global_objective_synchronizer.d.ts +17 -1
- package/dist/types/cmi/scorm2004/sequencing/sequencing_rules.d.ts +6 -1
- package/dist/types/cmi/scorm2004/sequencing/traversal/flow_traversal_service.d.ts +5 -2
- package/dist/types/constants/regex.d.ts +1 -0
- package/dist/types/types/api_types.d.ts +12 -0
- package/dist/types/types/sequencing_types.d.ts +13 -0
- package/dist/types/utilities/core.d.ts +4 -1
- package/package.json +1 -1
package/dist/esm/scorm12.js
CHANGED
|
@@ -149,12 +149,18 @@ function stringMatches(str, tester) {
|
|
|
149
149
|
}
|
|
150
150
|
return new RegExp(tester).test(str);
|
|
151
151
|
}
|
|
152
|
-
function memoize(fn, keyFn) {
|
|
152
|
+
function memoize(fn, keyFn, options) {
|
|
153
153
|
const cache = /* @__PURE__ */ new Map();
|
|
154
154
|
return ((...args) => {
|
|
155
155
|
const key = keyFn ? keyFn(...args) : JSON.stringify(args);
|
|
156
|
+
if (options?.maxKeyLength !== void 0 && key.length > options.maxKeyLength) {
|
|
157
|
+
return fn(...args);
|
|
158
|
+
}
|
|
156
159
|
return cache.has(key) ? cache.get(key) : (() => {
|
|
157
160
|
const result = fn(...args);
|
|
161
|
+
if (options?.maxEntries !== void 0 && cache.size >= options.maxEntries) {
|
|
162
|
+
cache.delete(cache.keys().next().value);
|
|
163
|
+
}
|
|
158
164
|
cache.set(key, result);
|
|
159
165
|
return result;
|
|
160
166
|
})();
|
|
@@ -819,6 +825,8 @@ const scorm2004_regex = {
|
|
|
819
825
|
CMILang: "^([a-zA-Z]{1,8}|i|x)(-[a-zA-Z0-9-]{2,8})?$|^$",
|
|
820
826
|
/** CMILangString250 - String with optional language tag, max 250 chars (RTE C.1.3) */
|
|
821
827
|
CMILangString250: "^({lang=([a-zA-Z]{1,8}|i|x)(-[a-zA-Z0-9-]{2,8})?})?((?!{.*$).{0,250}$)?$",
|
|
828
|
+
/** CMILangString - Optional language tag, no length cap; RTE C.1.3 SPM is a floor and is deliberately not enforced */
|
|
829
|
+
CMILangString: "^({lang=([a-zA-Z]{1,8}|i|x)(-[a-zA-Z0-9-]{2,8})?})?((?!{.*$).*$)?$",
|
|
822
830
|
/** CMILangcr - Language tag pattern with content */
|
|
823
831
|
CMILangcr: "^(({lang=([a-zA-Z]{1,8}|i|x)?(-[a-zA-Z0-9-]{2,8})?}))(.*?)$",
|
|
824
832
|
/** CMILangString250cr - String with optional language tag (carriage return variant) */
|
|
@@ -2424,7 +2432,9 @@ const checkValidFormat = memoize(
|
|
|
2424
2432
|
(CMIElement, value, regexPattern, errorCode, _errorClass, allowEmptyString) => {
|
|
2425
2433
|
const valueKey = typeof value === "string" ? value : `[${typeof value}]`;
|
|
2426
2434
|
return `${CMIElement}:${valueKey}:${regexPattern}:${errorCode}:${allowEmptyString || false}`;
|
|
2427
|
-
}
|
|
2435
|
+
},
|
|
2436
|
+
// Normal capped CMI values and regexes fit within 2000 characters; large uncapped values bypass caching.
|
|
2437
|
+
{ maxEntries: 1e3, maxKeyLength: 2e3 }
|
|
2428
2438
|
);
|
|
2429
2439
|
const checkValidRange = memoize(
|
|
2430
2440
|
(CMIElement, value, rangePattern, errorCode, errorClass) => {
|
|
@@ -2447,7 +2457,8 @@ const checkValidRange = memoize(
|
|
|
2447
2457
|
},
|
|
2448
2458
|
// Custom key function that excludes the error class from the cache key
|
|
2449
2459
|
// since it can't be stringified and doesn't affect the validation result
|
|
2450
|
-
(CMIElement, value, rangePattern, errorCode, _errorClass) => `${CMIElement}:${value}:${rangePattern}:${errorCode}
|
|
2460
|
+
(CMIElement, value, rangePattern, errorCode, _errorClass) => `${CMIElement}:${value}:${rangePattern}:${errorCode}`,
|
|
2461
|
+
{ maxEntries: 1e3 }
|
|
2451
2462
|
);
|
|
2452
2463
|
|
|
2453
2464
|
class SerializationService {
|