@vpmedia/simplify 1.59.0 → 1.60.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.
Files changed (34) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/package.json +2 -2
  3. package/src/index.js +31 -11
  4. package/src/logging/OpenTelemetryLogHandler.js +0 -1
  5. package/src/pagelifecycle/const.js +3 -0
  6. package/src/pagelifecycle/util.js +2 -1
  7. package/src/typecheck/TypeCheckError.js +10 -0
  8. package/src/typecheck/TypeChecker.js +91 -0
  9. package/src/typecheck/util.js +55 -0
  10. package/src/{util/typecheck.test.js → typecheck/util.test.js} +11 -2
  11. package/src/util/error.test.js +2 -2
  12. package/src/util/string.js +7 -0
  13. package/src/util/string.test.js +12 -1
  14. package/src/util/validate.js +1 -1
  15. package/types/index.d.ts +11 -10
  16. package/types/logging/OpenTelemetryLogHandler.d.ts.map +1 -1
  17. package/types/pagelifecycle/const.d.ts +2 -0
  18. package/types/pagelifecycle/const.d.ts.map +1 -1
  19. package/types/pagelifecycle/util.d.ts.map +1 -1
  20. package/types/typecheck/TypeCheckError.d.ts +8 -0
  21. package/types/typecheck/TypeCheckError.d.ts.map +1 -0
  22. package/types/{util/typecheck.d.ts → typecheck/TypeChecker.d.ts} +13 -14
  23. package/types/typecheck/TypeChecker.d.ts.map +1 -0
  24. package/types/typecheck/util.d.ts +4 -0
  25. package/types/typecheck/util.d.ts.map +1 -0
  26. package/types/util/string.d.ts +1 -0
  27. package/types/util/string.d.ts.map +1 -1
  28. package/types/util/validate.d.ts +1 -1
  29. package/types/util/validate.d.ts.map +1 -1
  30. package/src/pagelifecycle/event.js +0 -2
  31. package/src/util/typecheck.js +0 -114
  32. package/types/pagelifecycle/event.d.ts +0 -3
  33. package/types/pagelifecycle/event.d.ts.map +0 -1
  34. package/types/util/typecheck.d.ts.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,23 @@
1
+ ## [1.60.0] - 2026-01-14
2
+
3
+ ### 💼 Other
4
+
5
+ - *(deps)* Bump dependency versions
6
+
7
+ ### 🚜 Refactor
8
+
9
+ - Adjusted exports and namespaces
10
+
11
+ ### ⚙️ Miscellaneous Tasks
12
+
13
+ - Release
14
+ - Cleanup, improve typechecker class
15
+ - Improve isEnum validator jsdoc types
16
+ - Improve validators and type checker
17
+ - Apply naming conventions
18
+ - Adjust exception message format
19
+ - Cleanup
20
+ - *(release)* V1.60.0
1
21
  ## [1.59.0] - 2026-01-13
2
22
 
3
23
  ### 🚀 Features
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vpmedia/simplify",
3
- "version": "1.59.0",
3
+ "version": "1.60.0",
4
4
  "description": "@vpmedia/simplify",
5
5
  "author": "Andras Csizmadia <andras@vpmedia.hu> (www.vpmedia.hu)",
6
6
  "license": "MIT",
@@ -28,7 +28,7 @@
28
28
  "@commitlint/cli": "^20.3.1",
29
29
  "@commitlint/config-conventional": "^20.3.1",
30
30
  "@eslint/js": "^9.39.2",
31
- "@types/node": "^25.0.7",
31
+ "@types/node": "^25.0.8",
32
32
  "@vitest/coverage-v8": "^4.0.17",
33
33
  "eslint": "^9.39.2",
34
34
  "eslint-plugin-jsdoc": "^62.0.0",
package/src/index.js CHANGED
@@ -1,4 +1,3 @@
1
- // core
2
1
  export * from './const/http_status.js';
3
2
  export { AbstractLogHandler } from './logging/AbstractLogHandler.js';
4
3
  export { ConsoleLogHandler } from './logging/ConsoleLogHandler.js';
@@ -8,16 +7,37 @@ export { OpenTelemetryLogHandler } from './logging/OpenTelemetryLogHandler.js';
8
7
  export { SentryLogHandler } from './logging/SentryLogHandler.js';
9
8
  export { formatLogMessage, getLogLevelName } from './logging/util.js';
10
9
  export * from './pagelifecycle/const.js';
11
- export * from './pagelifecycle/event.js';
12
10
  export * from './pagelifecycle/typedef.js';
13
- export * from './pagelifecycle/util.js';
14
- export * from './util/async.js';
15
- export * from './util/error.js';
11
+ export {
12
+ addPageLifecycleCallback,
13
+ getDocumentState,
14
+ getPageLifecycleEventEmitter,
15
+ getPageLifecycleState,
16
+ initPageLifecycle,
17
+ isPageLifecycleInitialized,
18
+ } from './pagelifecycle/util.js';
19
+ export { typeChecker } from './typecheck/TypeChecker.js';
20
+ export { TypeCheckError } from './typecheck/TypeCheckError.js';
21
+ export { typeCheck, typeCheckArray, typeCheckEnum } from './typecheck/util.js';
22
+ export { delayPromise, loadJSON } from './util/async.js';
23
+ export { getErrorDetails } from './util/error.js';
16
24
  export { FetchError, fetchRetry, HTTP_0_ANY } from './util/fetch.js';
17
- export * from './util/number.js';
18
- export * from './util/object.js';
19
- export * from './util/query.js';
20
- export * from './util/state.js';
21
- export * from './util/string.js';
22
- export * from './util/typecheck.js';
25
+ export {
26
+ addFloat,
27
+ deg2rad,
28
+ fixFloat,
29
+ fixFloatPrecision,
30
+ getRandomInt,
31
+ isEqual,
32
+ isGreater,
33
+ isGreaterOrEqual,
34
+ isInRange,
35
+ isLess,
36
+ isLessOrEqual,
37
+ subFloat,
38
+ } from './util/number.js';
39
+ export { purgeObject, deepMerge, getObjArrayPropSum, getObjValueByPath, setObjValueByPath } from './util/object.js';
40
+ export { getURLParam, sanitizeURLParam } from './util/query.js';
41
+ export { serverDataToState } from './util/state.js';
42
+ export { addLeadingZero, capitalize, getTypeFromValue, saveAsFile, underscoreToCamelCase } from './util/string.js';
23
43
  export * from './util/validate.js';
@@ -1,5 +1,4 @@
1
1
  import { AbstractLogHandler } from './AbstractLogHandler.js';
2
- import { LOG_LEVEL_DEBUG } from './const.js';
3
2
 
4
3
  export class OpenTelemetryLogHandler extends AbstractLogHandler {
5
4
  /**
@@ -9,3 +9,6 @@ export const DOCUMENT_STATE_FULLY_LOADED = 'fullyLoaded';
9
9
  export const DOCUMENT_STATE_COMPLETE = 'complete';
10
10
  export const DOCUMENT_STATE_INTERACTIVE = 'interactive';
11
11
  export const DOCUMENT_STATE_LOADING = 'loading';
12
+
13
+ export const PAGE_LIFECYCLE_STATE_CHANGE_EVENT = 'pageLifecycleStateChange';
14
+ export const DOCUMENT_STATE_CHANGE_EVENT = 'documentStateChange';
@@ -8,15 +8,16 @@
8
8
  import { EventEmitter } from 'eventemitter3';
9
9
  import { Logger } from '../logging/Logger.js';
10
10
  import {
11
+ DOCUMENT_STATE_CHANGE_EVENT,
11
12
  DOCUMENT_STATE_DOM_LOADED,
12
13
  DOCUMENT_STATE_FULLY_LOADED,
13
14
  PAGE_LIFECYCLE_STATE_ACTIVE,
15
+ PAGE_LIFECYCLE_STATE_CHANGE_EVENT,
14
16
  PAGE_LIFECYCLE_STATE_FROZEN,
15
17
  PAGE_LIFECYCLE_STATE_HIDDEN,
16
18
  PAGE_LIFECYCLE_STATE_PASSIVE,
17
19
  PAGE_LIFECYCLE_STATE_TERMINATED,
18
20
  } from './const.js';
19
- import { DOCUMENT_STATE_CHANGE_EVENT, PAGE_LIFECYCLE_STATE_CHANGE_EVENT } from './event.js';
20
21
 
21
22
  const logger = new Logger('pagelifecycle');
22
23
 
@@ -0,0 +1,10 @@
1
+ export class TypeCheckError extends TypeError {
2
+ /**
3
+ * Creates a new `TypeCheckError` instance.
4
+ * @param {string} message - Error message.
5
+ */
6
+ constructor(message) {
7
+ super(message);
8
+ this.name = 'TypeCheckError';
9
+ }
10
+ }
@@ -0,0 +1,91 @@
1
+ import { TypeCheckError } from './TypeCheckError.js';
2
+ import { Logger } from '../logging/Logger.js';
3
+ import { typeCheck, typeCheckArray, typeCheckEnum } from './util.js';
4
+
5
+ const logger = new Logger('typechecker');
6
+
7
+ class TypeChecker {
8
+ /** @type {TypeChecker} */
9
+ static #instance;
10
+
11
+ /** @type {boolean} */
12
+ #swallowErrors = false;
13
+
14
+ constructor() {
15
+ if (TypeChecker.#instance === undefined) {
16
+ TypeChecker.#instance = this;
17
+ }
18
+ }
19
+
20
+ /**
21
+ * Enable or disable swallowing of TypeCheckErrors.
22
+ * @param {boolean} value - Swallow errors flag.
23
+ */
24
+ setSwallowErrors(value) {
25
+ this.#swallowErrors = Boolean(value);
26
+ }
27
+
28
+ /**
29
+ * Type check a single value.
30
+ * @template T
31
+ * @param {unknown} value - The value to check.
32
+ * @param {(value: unknown) => value is T} validator - The validator to check with.
33
+ * @returns {T} - The type checked value.
34
+ */
35
+ check(value, validator) {
36
+ try {
37
+ return typeCheck(value, validator);
38
+ } catch (error) {
39
+ if (this.#swallowErrors && error instanceof TypeCheckError) {
40
+ logger.exception('check', error);
41
+ // @ts-expect-error
42
+ return value;
43
+ }
44
+ throw error;
45
+ }
46
+ }
47
+
48
+ /**
49
+ * Type check an array of values.
50
+ * @template T
51
+ * @param {unknown[]} value - The value to check.
52
+ * @param {(value: unknown) => value is T} validator - The validator to check the array with.
53
+ * @returns {T[]} - The type checked value.
54
+ */
55
+ checkArray(value, validator) {
56
+ try {
57
+ return typeCheckArray(value, validator);
58
+ } catch (error) {
59
+ if (this.#swallowErrors && error instanceof TypeCheckError) {
60
+ logger.exception('checkArray', error);
61
+ // @ts-expect-error
62
+ return value;
63
+ }
64
+ throw error;
65
+ }
66
+ }
67
+
68
+ /**
69
+ * Type check an array of values.
70
+ * @template T
71
+ * @param {string | number} value - The value to check.
72
+ * @param {(string | number)[] | Set<string | number> | Record<string | number, string | number>} choices - Enum list.
73
+ * @returns {string | number} - The type checked value.
74
+ */
75
+ checkEnum(value, choices) {
76
+ try {
77
+ return typeCheckEnum(value, choices);
78
+ } catch (error) {
79
+ if (this.#swallowErrors && error instanceof TypeCheckError) {
80
+ logger.exception('checkEnum', error);
81
+ return value;
82
+ }
83
+ throw error;
84
+ }
85
+ }
86
+ }
87
+
88
+ /**
89
+ * Export a single shared instance.
90
+ */
91
+ export const typeChecker = new TypeChecker();
@@ -0,0 +1,55 @@
1
+ import { getTypeFromValue } from '../util/string.js';
2
+ import { isArrayOf, isEnum } from '../util/validate.js';
3
+ import { TypeCheckError } from './TypeCheckError.js';
4
+
5
+ const VALIDATOR_FALLBACK_NAME = '<anonymous>';
6
+
7
+ /**
8
+ * Type check a value using a validator.
9
+ * @template T
10
+ * @param {unknown} value - The value to check.
11
+ * @param {(value: unknown) => value is T} validator - The validator to check with.
12
+ * @returns {T} The type checked value.
13
+ * @throws {TypeCheckError}
14
+ */
15
+ export const typeCheck = (value, validator) => {
16
+ if (!validator(value)) {
17
+ const validatorName = validator.name || VALIDATOR_FALLBACK_NAME;
18
+ const displayValue = getTypeFromValue(value);
19
+ throw new TypeCheckError(`Validation failed: ${validatorName} (${displayValue})`);
20
+ }
21
+ return value;
22
+ };
23
+
24
+ /**
25
+ * Type check a value using a validator.
26
+ * @template T
27
+ * @param {unknown[]} value - The value to check.
28
+ * @param {(value: unknown) => value is T} validator - The validator to check the array with.
29
+ * @returns {T[]} The type checked value.
30
+ * @throws {TypeCheckError}
31
+ */
32
+ export const typeCheckArray = (value, validator) => {
33
+ if (!isArrayOf(value, validator)) {
34
+ const validatorName = validator.name || VALIDATOR_FALLBACK_NAME;
35
+ const displayValue = getTypeFromValue(value);
36
+ throw new TypeCheckError(`Validation failed: ${validatorName} (${displayValue})`);
37
+ }
38
+ return value;
39
+ };
40
+
41
+ /**
42
+ * Type check an enum.
43
+ * @param {string | number} value - The value to check.
44
+ * @param {(string | number)[] | Set<string | number> | Record<string | number, string | number>} choices - Enum list.
45
+ * @returns {string | number} The type checked value.
46
+ * @throws {TypeCheckError}
47
+ */
48
+ export const typeCheckEnum = (value, choices) => {
49
+ if (!isEnum(value, choices)) {
50
+ const validatorName = 'isEnum';
51
+ const displayValue = getTypeFromValue(value);
52
+ throw new TypeCheckError(`Validation failed: ${validatorName} (${displayValue})`);
53
+ }
54
+ return value;
55
+ };
@@ -1,5 +1,6 @@
1
- import { typeCheck, typeCheckArray, TypeCheckError } from './typecheck.js';
2
- import { isNumber, isPositiveInteger } from './validate.js';
1
+ import { isNumber, isPositiveInteger } from '../util/validate.js';
2
+ import { TypeCheckError } from './TypeCheckError.js';
3
+ import { typeCheck, typeCheckArray, typeCheckEnum } from './util.js';
3
4
 
4
5
  describe('typecheck', () => {
5
6
  test('typeCheck', () => {
@@ -16,4 +17,12 @@ describe('typecheck', () => {
16
17
  // @ts-expect-error
17
18
  expect(() => typeCheckArray('string', isNumber)).toThrowError(TypeCheckError);
18
19
  });
20
+
21
+ test('typeCheckEnum', () => {
22
+ expect(() => typeCheckEnum('AA', ['AA'])).not.toThrowError(TypeCheckError);
23
+ expect(() => typeCheckEnum('AA', ['BB'])).toThrowError(TypeCheckError);
24
+ expect(() => typeCheckEnum(null, ['BB'])).toThrowError(TypeCheckError);
25
+ // @ts-expect-error
26
+ expect(() => typeCheckEnum(['AA'], null)).toThrowError(TypeCheckError);
27
+ });
19
28
  });
@@ -9,9 +9,9 @@ test('Tests getErrorDetails', () => {
9
9
  });
10
10
 
11
11
  test('Tests getErrorDetails with Error cause', () => {
12
- const error = new Error('Test error', { cause: new Error('Cause error') });
12
+ const error = new SyntaxError('Test error', { cause: new TypeError('Cause error') });
13
13
  const errorDetails = getErrorDetails(error);
14
- expect(errorDetails.type).toBe('Error');
14
+ expect(errorDetails.type).toBe('SyntaxError');
15
15
  expect(errorDetails.message).toBe('Test error');
16
16
  expect(errorDetails.cause instanceof Error).toBe(true);
17
17
  if (errorDetails.cause instanceof Error) {
@@ -52,3 +52,10 @@ export const saveAsFile = (filename, text) => {
52
52
  element.click();
53
53
  element.remove();
54
54
  };
55
+
56
+ /**
57
+ * Get type from value in human readable format.
58
+ * @param {unknown} value - The value to check.
59
+ * @returns {string} Type in human readable format.
60
+ */
61
+ export const getTypeFromValue = (value) => Object.prototype.toString.call(value).slice(8, -1).toLowerCase();
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable unicorn/no-useless-undefined */
2
2
 
3
- import { underscoreToCamelCase, capitalize, addLeadingZero } from './string.js';
3
+ import { underscoreToCamelCase, capitalize, addLeadingZero, getTypeFromValue } from './string.js';
4
4
 
5
5
  test('Tests add leading zero', () => {
6
6
  expect(addLeadingZero(1)).toBe('01');
@@ -46,3 +46,14 @@ test('Converts underscore to camelCase', () => {
46
46
  expect(underscoreToCamelCase('test_variable')).toBe('testVariable');
47
47
  expect(underscoreToCamelCase('test_variable_name')).toBe('testVariableName');
48
48
  });
49
+
50
+ test('getDisplayValue', () => {
51
+ expect(getTypeFromValue('test')).toBe('string');
52
+ expect(getTypeFromValue(() => null)).toBe('function');
53
+ expect(getTypeFromValue([])).toBe('array');
54
+ expect(getTypeFromValue({})).toBe('object');
55
+ expect(getTypeFromValue(new Date())).toBe('date');
56
+ expect(getTypeFromValue(null)).toBe('null');
57
+ expect(getTypeFromValue(true)).toBe('boolean');
58
+ expect(getTypeFromValue(undefined)).toBe('undefined');
59
+ });
@@ -113,7 +113,7 @@ export const isInstance = (value, type) => isFunction(type) && value instanceof
113
113
  /**
114
114
  * Validates `value` as `enum`.
115
115
  * @param {unknown} value - Input value.
116
- * @param {unknown[] | Set<string | number> | Record<string | number, unknown>} choices - Input value.
116
+ * @param {(string | number)[] | Set<string | number> | Record<string | number, string | number>} choices - Enum list.
117
117
  * @returns {boolean} `true` if `value` is `enum` type.
118
118
  */
119
119
  export const isEnum = (value, choices) => {
package/types/index.d.ts CHANGED
@@ -1,23 +1,24 @@
1
1
  export * from "./const/http_status.js";
2
2
  export * from "./logging/const.js";
3
3
  export * from "./pagelifecycle/const.js";
4
- export * from "./pagelifecycle/event.js";
5
4
  export * from "./pagelifecycle/typedef.js";
6
- export * from "./pagelifecycle/util.js";
7
- export * from "./util/async.js";
8
- export * from "./util/error.js";
9
- export * from "./util/number.js";
10
- export * from "./util/object.js";
11
- export * from "./util/query.js";
12
- export * from "./util/state.js";
13
- export * from "./util/string.js";
14
- export * from "./util/typecheck.js";
15
5
  export * from "./util/validate.js";
16
6
  export { AbstractLogHandler } from "./logging/AbstractLogHandler.js";
17
7
  export { ConsoleLogHandler } from "./logging/ConsoleLogHandler.js";
18
8
  export { Logger } from "./logging/Logger.js";
19
9
  export { OpenTelemetryLogHandler } from "./logging/OpenTelemetryLogHandler.js";
20
10
  export { SentryLogHandler } from "./logging/SentryLogHandler.js";
11
+ export { typeChecker } from "./typecheck/TypeChecker.js";
12
+ export { TypeCheckError } from "./typecheck/TypeCheckError.js";
13
+ export { getErrorDetails } from "./util/error.js";
14
+ export { serverDataToState } from "./util/state.js";
21
15
  export { formatLogMessage, getLogLevelName } from "./logging/util.js";
16
+ export { addPageLifecycleCallback, getDocumentState, getPageLifecycleEventEmitter, getPageLifecycleState, initPageLifecycle, isPageLifecycleInitialized } from "./pagelifecycle/util.js";
17
+ export { typeCheck, typeCheckArray, typeCheckEnum } from "./typecheck/util.js";
18
+ export { delayPromise, loadJSON } from "./util/async.js";
22
19
  export { FetchError, fetchRetry, HTTP_0_ANY } from "./util/fetch.js";
20
+ export { addFloat, deg2rad, fixFloat, fixFloatPrecision, getRandomInt, isEqual, isGreater, isGreaterOrEqual, isInRange, isLess, isLessOrEqual, subFloat } from "./util/number.js";
21
+ export { purgeObject, deepMerge, getObjArrayPropSum, getObjValueByPath, setObjValueByPath } from "./util/object.js";
22
+ export { getURLParam, sanitizeURLParam } from "./util/query.js";
23
+ export { addLeadingZero, capitalize, getTypeFromValue, saveAsFile, underscoreToCamelCase } from "./util/string.js";
23
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OpenTelemetryLogHandler.d.ts","sourceRoot":"","sources":["../../src/logging/OpenTelemetryLogHandler.js"],"names":[],"mappings":"AAGA;IACE;;;;OAIG;IACH,mBAHW,MAAM,WACN,CAAC,MAAM,EAAE,OAAO,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,KAAK,IAAI,EAK9K;IADC,kBAJkB,OAAO,aAAa,EAAE,MAAM,aAAa,MAAM,SAAS,MAAM,WAAW,MAAM,SAAS,MAAM,GAAG,IAAI,GAAG,SAAS,SAAS,KAAK,GAAG,IAAI,GAAG,SAAS,KAAK,IAAI,CAIvJ;CAmBzB;mCA9BkC,yBAAyB"}
1
+ {"version":3,"file":"OpenTelemetryLogHandler.d.ts","sourceRoot":"","sources":["../../src/logging/OpenTelemetryLogHandler.js"],"names":[],"mappings":"AAEA;IACE;;;;OAIG;IACH,mBAHW,MAAM,WACN,CAAC,MAAM,EAAE,OAAO,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,KAAK,IAAI,EAK9K;IADC,kBAJkB,OAAO,aAAa,EAAE,MAAM,aAAa,MAAM,SAAS,MAAM,WAAW,MAAM,SAAS,MAAM,GAAG,IAAI,GAAG,SAAS,SAAS,KAAK,GAAG,IAAI,GAAG,SAAS,KAAK,IAAI,CAIvJ;CAmBzB;mCA7BkC,yBAAyB"}
@@ -8,4 +8,6 @@ export const DOCUMENT_STATE_FULLY_LOADED: "fullyLoaded";
8
8
  export const DOCUMENT_STATE_COMPLETE: "complete";
9
9
  export const DOCUMENT_STATE_INTERACTIVE: "interactive";
10
10
  export const DOCUMENT_STATE_LOADING: "loading";
11
+ export const PAGE_LIFECYCLE_STATE_CHANGE_EVENT: "pageLifecycleStateChange";
12
+ export const DOCUMENT_STATE_CHANGE_EVENT: "documentStateChange";
11
13
  //# sourceMappingURL=const.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../src/pagelifecycle/const.js"],"names":[],"mappings":"AAAA,0CAA2C,QAAQ,CAAC;AACpD,0CAA2C,QAAQ,CAAC;AACpD,2CAA4C,SAAS,CAAC;AACtD,0CAA2C,QAAQ,CAAC;AACpD,8CAA+C,YAAY,CAAC;AAE5D,wCAAyC,WAAW,CAAC;AACrD,0CAA2C,aAAa,CAAC;AACzD,sCAAuC,UAAU,CAAC;AAClD,yCAA0C,aAAa,CAAC;AACxD,qCAAsC,SAAS,CAAC"}
1
+ {"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../src/pagelifecycle/const.js"],"names":[],"mappings":"AAAA,0CAA2C,QAAQ,CAAC;AACpD,0CAA2C,QAAQ,CAAC;AACpD,2CAA4C,SAAS,CAAC;AACtD,0CAA2C,QAAQ,CAAC;AACpD,8CAA+C,YAAY,CAAC;AAE5D,wCAAyC,WAAW,CAAC;AACrD,0CAA2C,aAAa,CAAC;AACzD,sCAAuC,UAAU,CAAC;AAClD,yCAA0C,aAAa,CAAC;AACxD,qCAAsC,SAAS,CAAC;AAEhD,gDAAiD,0BAA0B,CAAC;AAC5E,0CAA2C,qBAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/pagelifecycle/util.js"],"names":[],"mappings":"AAiGO,0CAyBN;AAMM,yCAFM,MAAM,GAAG,IAAI,GAAG,SAAS,CAE8B;AAM7D,oCAFM,OAAO,cAAc,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,CAEV;AAMnD,gDAFM,YAAY,CAOxB;AAMM,8CAFM,OAAO,CAEyC;AAOtD,gDAHI,OAAO,cAAc,EAAE,aAAa,GAAG,OAAO,cAAc,EAAE,kBAAkB,YAChF,MAAM,IAAI,QAMpB;6BA3J4B,eAAe"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/pagelifecycle/util.js"],"names":[],"mappings":"AAkGO,0CAyBN;AAMM,yCAFM,MAAM,GAAG,IAAI,GAAG,SAAS,CAE8B;AAM7D,oCAFM,OAAO,cAAc,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,CAEV;AAMnD,gDAFM,YAAY,CAOxB;AAMM,8CAFM,OAAO,CAEyC;AAOtD,gDAHI,OAAO,cAAc,EAAE,aAAa,GAAG,OAAO,cAAc,EAAE,kBAAkB,YAChF,MAAM,IAAI,QAMpB;6BA5J4B,eAAe"}
@@ -0,0 +1,8 @@
1
+ export class TypeCheckError extends TypeError {
2
+ /**
3
+ * Creates a new `TypeCheckError` instance.
4
+ * @param {string} message - Error message.
5
+ */
6
+ constructor(message: string);
7
+ }
8
+ //# sourceMappingURL=TypeCheckError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypeCheckError.d.ts","sourceRoot":"","sources":["../../src/typecheck/TypeCheckError.js"],"names":[],"mappings":"AAAA;IACE;;;OAGG;IACH,qBAFW,MAAM,EAKhB;CACF"}
@@ -1,12 +1,3 @@
1
- export class TypeCheckError extends TypeError {
2
- /**
3
- * Creates a new `TypeCheckError` instance.
4
- * @param {string} message - Error message.
5
- */
6
- constructor(message: string);
7
- }
8
- export function typeCheck<T>(value: unknown, validator: (value: unknown) => value is T): T;
9
- export function typeCheckArray<T>(value: unknown[], validator: (value: unknown) => value is T): T[];
10
1
  /**
11
2
  * Export a single shared instance.
12
3
  */
@@ -24,18 +15,26 @@ declare class TypeChecker {
24
15
  * @template T
25
16
  * @param {unknown} value - The value to check.
26
17
  * @param {(value: unknown) => value is T} validator - The validator to check with.
27
- * @returns {T | null} - The type checked value.
18
+ * @returns {T} - The type checked value.
28
19
  */
29
- check<T>(value: unknown, validator: (value: unknown) => value is T): T | null;
20
+ check<T>(value: unknown, validator: (value: unknown) => value is T): T;
30
21
  /**
31
22
  * Type check an array of values.
32
23
  * @template T
33
24
  * @param {unknown[]} value - The value to check.
34
25
  * @param {(value: unknown) => value is T} validator - The validator to check the array with.
35
- * @returns {T[] | null} - The type checked value.
26
+ * @returns {T[]} - The type checked value.
27
+ */
28
+ checkArray<T>(value: unknown[], validator: (value: unknown) => value is T): T[];
29
+ /**
30
+ * Type check an array of values.
31
+ * @template T
32
+ * @param {string | number} value - The value to check.
33
+ * @param {(string | number)[] | Set<string | number> | Record<string | number, string | number>} choices - Enum list.
34
+ * @returns {string | number} - The type checked value.
36
35
  */
37
- checkArray<T>(value: unknown[], validator: (value: unknown) => value is T): T[] | null;
36
+ checkEnum<T>(value: string | number, choices: (string | number)[] | Set<string | number> | Record<string | number, string | number>): string | number;
38
37
  #private;
39
38
  }
40
39
  export {};
41
- //# sourceMappingURL=typecheck.d.ts.map
40
+ //# sourceMappingURL=TypeChecker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TypeChecker.d.ts","sourceRoot":"","sources":["../../src/typecheck/TypeChecker.js"],"names":[],"mappings":"AAuFA;;GAEG;AACH,sCAA6C;AApF7C;IACE,0BAA0B;IAC1B,+BADW,WAAW,CACL;IAWjB;;;OAGG;IACH,wBAFW,OAAO,QAIjB;IAED;;;;;;OAMG;IACH,MALa,CAAC,SACH,OAAO,aACP,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,GAC5B,CAAC,CAab;IAED;;;;;;OAMG;IACH,WALa,CAAC,SACH,OAAO,EAAE,aACT,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,GAC5B,CAAC,EAAE,CAaf;IAED;;;;;;OAMG;IACH,UALa,CAAC,SACH,MAAM,GAAG,MAAM,WACf,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GACnF,MAAM,GAAG,MAAM,CAY3B;;CACF"}
@@ -0,0 +1,4 @@
1
+ export function typeCheck<T>(value: unknown, validator: (value: unknown) => value is T): T;
2
+ export function typeCheckArray<T>(value: unknown[], validator: (value: unknown) => value is T): T[];
3
+ export function typeCheckEnum(value: string | number, choices: (string | number)[] | Set<string | number> | Record<string | number, string | number>): string | number;
4
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/typecheck/util.js"],"names":[],"mappings":"AAcO,0BANM,CAAC,SACH,OAAO,aACP,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,GAC5B,CAAC,CAUb;AAUM,+BANM,CAAC,SACH,OAAO,EAAE,aACT,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,GAC5B,CAAC,EAAE,CAUf;AASM,qCALI,MAAM,GAAG,MAAM,WACf,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GACnF,MAAM,GAAG,MAAM,CAU3B"}
@@ -2,4 +2,5 @@ export function addLeadingZero(value: number | string | null | undefined, size?:
2
2
  export function capitalize(value: string | null | undefined): string | null;
3
3
  export function underscoreToCamelCase(value: string): string;
4
4
  export function saveAsFile(filename: string, text: string): void;
5
+ export function getTypeFromValue(value: unknown): string;
5
6
  //# sourceMappingURL=string.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../src/util/string.js"],"names":[],"mappings":"AAMO,sCAJI,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,SAClC,MAAM,GACJ,MAAM,GAAG,IAAI,CAWzB;AAOM,kCAHI,MAAM,GAAG,IAAI,GAAG,SAAS,GACvB,MAAM,GAAG,IAAI,CAWzB;AAOM,6CAHI,MAAM,GACJ,MAAM,CAEmF;AAO/F,qCAHI,MAAM,QACN,MAAM,QAUhB"}
1
+ {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../src/util/string.js"],"names":[],"mappings":"AAMO,sCAJI,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,SAClC,MAAM,GACJ,MAAM,GAAG,IAAI,CAWzB;AAOM,kCAHI,MAAM,GAAG,IAAI,GAAG,SAAS,GACvB,MAAM,GAAG,IAAI,CAWzB;AAOM,6CAHI,MAAM,GACJ,MAAM,CAEmF;AAO/F,qCAHI,MAAM,QACN,MAAM,QAUhB;AAOM,wCAHI,OAAO,GACL,MAAM,CAEwF"}
@@ -13,7 +13,7 @@ export function isNullOrUndefined(value: unknown): value is null | undefined;
13
13
  export function isPlainObject(value: unknown): value is Record<string, unknown>;
14
14
  export function isFunction(value: unknown): value is (...args: any[]) => any;
15
15
  export function isInstance<T>(value: unknown, type: new (...args: any[]) => T): value is T;
16
- export function isEnum(value: unknown, choices: unknown[] | Set<string | number> | Record<string | number, unknown>): boolean;
16
+ export function isEnum(value: unknown, choices: (string | number)[] | Set<string | number> | Record<string | number, string | number>): boolean;
17
17
  export function isArrayOf<T>(values: unknown[], validator: (value: unknown) => value is T): values is T[];
18
18
  export function isPlainObjectOf<T>(record: Record<string | number, unknown>, validator: (value: unknown) => value is T): record is Record<string | number, T>;
19
19
  export function refineValidator<T>(base: (value: unknown) => value is T, predicate: (value: T) => boolean, name?: string | null): (value: unknown) => value is T;
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/util/validate.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/util/validate.js"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export const PAGE_LIFECYCLE_STATE_CHANGE_EVENT = 'pageLifecycleStateChange';
2
- export const DOCUMENT_STATE_CHANGE_EVENT = 'documentStateChange';
@@ -1,114 +0,0 @@
1
- import { Logger } from '../logging/Logger.js';
2
- import { isArrayOf } from './validate.js';
3
-
4
- const logger = new Logger('typecheck');
5
-
6
- export class TypeCheckError extends TypeError {
7
- /**
8
- * Creates a new `TypeCheckError` instance.
9
- * @param {string} message - Error message.
10
- */
11
- constructor(message) {
12
- super(message);
13
- this.name = 'TypeCheckError';
14
- }
15
- }
16
-
17
- /**
18
- * Type check a value using a validator.
19
- * @template T
20
- * @param {unknown} value - The value to check.
21
- * @param {(value: unknown) => value is T} validator - The validator to check with.
22
- * @returns {T} The type checked value.
23
- * @throws {TypeCheckError}
24
- */
25
- export const typeCheck = (value, validator) => {
26
- if (!validator(value)) {
27
- const name = validator.name || '<anonymous>';
28
- const display = typeof value === 'string' ? `"${value}"` : Object.prototype.toString.call(value);
29
- throw new TypeCheckError(`Validation failed: ${name} (${display})`);
30
- }
31
- return value;
32
- };
33
-
34
- /**
35
- * Type check a value using a validator.
36
- * @template T
37
- * @param {unknown[]} value - The value to check.
38
- * @param {(value: unknown) => value is T} validator - The validator to check the array with.
39
- * @returns {T[]} The type checked value.
40
- * @throws {TypeCheckError}
41
- */
42
- export const typeCheckArray = (value, validator) => {
43
- if (!isArrayOf(value, validator)) {
44
- const name = validator.name || '<anonymous>';
45
- const display = typeof value === 'string' ? `"${value}"` : Object.prototype.toString.call(value);
46
- throw new TypeCheckError(`Validation failed: ${name} (${display})`);
47
- }
48
- return value;
49
- };
50
-
51
- class TypeChecker {
52
- /** @type {TypeChecker} */
53
- static #instance;
54
-
55
- /** @type {boolean} */
56
- #swallowErrors = false;
57
-
58
- constructor() {
59
- if (TypeChecker.#instance === undefined) {
60
- TypeChecker.#instance = this;
61
- }
62
- }
63
-
64
- /**
65
- * Enable or disable swallowing of TypeCheckErrors.
66
- * @param {boolean} value - Swallow errors flag.
67
- */
68
- setSwallowErrors(value) {
69
- this.#swallowErrors = Boolean(value);
70
- }
71
-
72
- /**
73
- * Type check a single value.
74
- * @template T
75
- * @param {unknown} value - The value to check.
76
- * @param {(value: unknown) => value is T} validator - The validator to check with.
77
- * @returns {T | null} - The type checked value.
78
- */
79
- check(value, validator) {
80
- try {
81
- return typeCheck(value, validator);
82
- } catch (error) {
83
- if (this.#swallowErrors && error instanceof TypeCheckError) {
84
- logger.exception('check', error);
85
- return null;
86
- }
87
- throw error;
88
- }
89
- }
90
-
91
- /**
92
- * Type check an array of values.
93
- * @template T
94
- * @param {unknown[]} value - The value to check.
95
- * @param {(value: unknown) => value is T} validator - The validator to check the array with.
96
- * @returns {T[] | null} - The type checked value.
97
- */
98
- checkArray(value, validator) {
99
- try {
100
- return typeCheckArray(value, validator);
101
- } catch (error) {
102
- if (this.#swallowErrors && error instanceof TypeCheckError) {
103
- logger.exception('checkArray', error);
104
- return null;
105
- }
106
- throw error;
107
- }
108
- }
109
- }
110
-
111
- /**
112
- * Export a single shared instance.
113
- */
114
- export const typeChecker = new TypeChecker();
@@ -1,3 +0,0 @@
1
- export const PAGE_LIFECYCLE_STATE_CHANGE_EVENT: "pageLifecycleStateChange";
2
- export const DOCUMENT_STATE_CHANGE_EVENT: "documentStateChange";
3
- //# sourceMappingURL=event.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../src/pagelifecycle/event.js"],"names":[],"mappings":"AAAA,gDAAiD,0BAA0B,CAAC;AAC5E,0CAA2C,qBAAqB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"typecheck.d.ts","sourceRoot":"","sources":["../../src/util/typecheck.js"],"names":[],"mappings":"AAKA;IACE;;;OAGG;IACH,qBAFW,MAAM,EAKhB;CACF;AAUM,0BANM,CAAC,SACH,OAAO,aACP,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,GAC5B,CAAC,CAUb;AAUM,+BANM,CAAC,SACH,OAAO,EAAE,aACT,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,GAC5B,CAAC,EAAE,CAUf;AA8DD;;GAEG;AACH,sCAA6C;AA/D7C;IACE,0BAA0B;IAC1B,+BADW,WAAW,CACL;IAWjB;;;OAGG;IACH,wBAFW,OAAO,QAIjB;IAED;;;;;;OAMG;IACH,MALa,CAAC,SACH,OAAO,aACP,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,GAC5B,CAAC,GAAG,IAAI,CAYpB;IAED;;;;;;OAMG;IACH,WALa,CAAC,SACH,OAAO,EAAE,aACT,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,GAC5B,CAAC,EAAE,GAAG,IAAI,CAYtB;;CACF"}