@vpmedia/simplify 1.59.0 → 1.61.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 (35) hide show
  1. package/CHANGELOG.md +30 -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 +60 -0
  10. package/src/typecheck/util.test.js +35 -0
  11. package/src/util/error.test.js +2 -2
  12. package/src/util/string.js +22 -0
  13. package/src/util/string.test.js +23 -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 +2 -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/src/util/typecheck.test.js +0 -19
  33. package/types/pagelifecycle/event.d.ts +0 -3
  34. package/types/pagelifecycle/event.d.ts.map +0 -1
  35. package/types/util/typecheck.d.ts.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,33 @@
1
+ ## [1.61.0] - 2026-01-14
2
+
3
+ ### 🚜 Refactor
4
+
5
+ - Improve validation error message
6
+
7
+ ### ⚙️ Miscellaneous Tasks
8
+
9
+ - Release
10
+ - *(release)* V1.61.0
11
+ ## [1.60.0] - 2026-01-14
12
+
13
+ ### 💼 Other
14
+
15
+ - *(deps)* Bump dependency versions
16
+
17
+ ### 🚜 Refactor
18
+
19
+ - Adjusted exports and namespaces
20
+
21
+ ### ⚙️ Miscellaneous Tasks
22
+
23
+ - Release
24
+ - Cleanup, improve typechecker class
25
+ - Improve isEnum validator jsdoc types
26
+ - Improve validators and type checker
27
+ - Apply naming conventions
28
+ - Adjust exception message format
29
+ - Cleanup
30
+ - *(release)* V1.60.0
1
31
  ## [1.59.0] - 2026-01-13
2
32
 
3
33
  ### 🚀 Features
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vpmedia/simplify",
3
- "version": "1.59.0",
3
+ "version": "1.61.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,60 @@
1
+ import { getDisplayValue, getTypeFromValue } from '../util/string.js';
2
+ import { isArrayOf, isEnum } from '../util/validate.js';
3
+ import { TypeCheckError } from './TypeCheckError.js';
4
+
5
+ /**
6
+ * Get error message for validator exceptions.
7
+ * @param {string} validatorName - Validator name.
8
+ * @param {unknown} value - Input value.
9
+ */
10
+ const getErrorMessage = (validatorName, value) => {
11
+ const displayValue = getDisplayValue(value);
12
+ const displayType = getTypeFromValue(value);
13
+ throw new TypeCheckError(`Validation failed: ${validatorName || '<anonymous>'} - ${displayValue} (${displayType})`);
14
+ };
15
+ /**
16
+ * Type check a value using a validator.
17
+ * @template T
18
+ * @param {unknown} value - The value to check.
19
+ * @param {(value: unknown) => value is T} validator - The validator to check with.
20
+ * @returns {T} The type checked value.
21
+ * @throws {TypeCheckError}
22
+ */
23
+ export const typeCheck = (value, validator) => {
24
+ if (!validator(value)) {
25
+ const errorMessage = getErrorMessage(validator.name, value);
26
+ throw new TypeCheckError(errorMessage);
27
+ }
28
+ return value;
29
+ };
30
+
31
+ /**
32
+ * Type check a value using a validator.
33
+ * @template T
34
+ * @param {unknown[]} value - The value to check.
35
+ * @param {(value: unknown) => value is T} validator - The validator to check the array with.
36
+ * @returns {T[]} The type checked value.
37
+ * @throws {TypeCheckError}
38
+ */
39
+ export const typeCheckArray = (value, validator) => {
40
+ if (!isArrayOf(value, validator)) {
41
+ const errorMessage = getErrorMessage(validator.name, value);
42
+ throw new TypeCheckError(errorMessage);
43
+ }
44
+ return value;
45
+ };
46
+
47
+ /**
48
+ * Type check an enum.
49
+ * @param {string | number} value - The value to check.
50
+ * @param {(string | number)[] | Set<string | number> | Record<string | number, string | number>} choices - Enum list.
51
+ * @returns {string | number} The type checked value.
52
+ * @throws {TypeCheckError}
53
+ */
54
+ export const typeCheckEnum = (value, choices) => {
55
+ if (!isEnum(value, choices)) {
56
+ const errorMessage = getErrorMessage('isEnum', value);
57
+ throw new TypeCheckError(errorMessage);
58
+ }
59
+ return value;
60
+ };
@@ -0,0 +1,35 @@
1
+ import { isNumber, isPositiveInteger } from '../util/validate.js';
2
+ import { TypeCheckError } from './TypeCheckError.js';
3
+ import { typeCheck, typeCheckArray, typeCheckEnum } from './util.js';
4
+
5
+ describe('typecheck', () => {
6
+ test('typeCheck', () => {
7
+ expect(() => typeCheck(0.1, isNumber)).not.toThrowError(TypeCheckError);
8
+ expect(() => typeCheck(-0.1, isPositiveInteger)).toThrowError(TypeCheckError);
9
+ expect(() => typeCheck('string', isNumber)).toThrowError(TypeCheckError);
10
+ });
11
+
12
+ test('typeCheckArray', () => {
13
+ expect(() => typeCheckArray([0.1], isNumber)).not.toThrowError(TypeCheckError);
14
+ expect(() => typeCheckArray(['string'], isNumber)).toThrowError(TypeCheckError);
15
+ // @ts-expect-error
16
+ expect(() => typeCheckArray(-0.1, isPositiveInteger)).toThrowError(TypeCheckError);
17
+ // @ts-expect-error
18
+ expect(() => typeCheckArray('string', isNumber)).toThrowError(TypeCheckError);
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
+ try {
28
+ typeCheckEnum('AA', ['BB']);
29
+ } catch (error) {
30
+ if (error instanceof Error) {
31
+ expect(error.message).toBe('Validation failed: isEnum - "AA" (string)');
32
+ }
33
+ }
34
+ });
35
+ });
@@ -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,25 @@ 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();
62
+
63
+ /**
64
+ * Get value in human readable format.
65
+ * @param {unknown} value - The value to check.
66
+ * @returns {string} Value in human readable format.
67
+ */
68
+ export const getDisplayValue = (value) => {
69
+ if (typeof value === 'string') {
70
+ return `"${value}"`;
71
+ }
72
+ if (typeof value === 'object') {
73
+ return JSON.stringify(value);
74
+ }
75
+ return String(value);
76
+ };
@@ -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, getDisplayValue } from './string.js';
4
4
 
5
5
  test('Tests add leading zero', () => {
6
6
  expect(addLeadingZero(1)).toBe('01');
@@ -46,3 +46,25 @@ 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('getTypeFromValue', () => {
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
+ });
60
+
61
+ test('getDisplayValue', () => {
62
+ expect(getDisplayValue('test')).toBe('"test"');
63
+ expect(getDisplayValue(() => null)).toBe('() => null');
64
+ expect(getDisplayValue([])).toBe('[]');
65
+ expect(getDisplayValue({})).toBe('{}');
66
+ expect(getDisplayValue(new Date())).not.toBe(null);
67
+ expect(getDisplayValue(null)).toBe('null');
68
+ expect(getDisplayValue(true)).toBe('true');
69
+ expect(getDisplayValue(undefined)).toBe('undefined');
70
+ });
@@ -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":"AAsBO,0BANM,CAAC,SACH,OAAO,aACP,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,GAC5B,CAAC,CASb;AAUM,+BANM,CAAC,SACH,OAAO,EAAE,aACT,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,GAC5B,CAAC,EAAE,CASf;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,CAS3B"}
@@ -2,4 +2,6 @@ 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;
6
+ export function getDisplayValue(value: unknown): string;
5
7
  //# 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;AAOpG,uCAHI,OAAO,GACL,MAAM,CAUlB"}
@@ -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":"AASO,iCAHI,OAAO,GACL,KAAK,IAAI,OAAO,CAEiC;AAOvD,gCAHI,OAAO,GACL,KAAK,IAAI,MAAM,CAE0D;AAO/E,wCAHI,OAAO,GACL,KAAK,IAAI,MAAM,CAE2C;AAOhE,2CAHI,OAAO,GACL,KAAK,IAAI,MAAM,CAE+C;AAOpE,iCAHI,OAAO,GACL,KAAK,IAAI,MAAM,CAEkD;AAOvE,yCAHI,OAAO,GACL,KAAK,IAAI,MAAM,CAE6C;AAOlE,4CAHI,OAAO,GACL,KAAK,IAAI,MAAM,CAEiD;AAOtE,gCAHI,OAAO,GACL,KAAK,IAAI,MAAM,CAEgC;AAQrD,wBAJM,CAAC,SACH,OAAO,GACL,KAAK,IAAI,CAAC,EAAE,CAE6B;AAO/C,8BAHI,OAAO,GACL,KAAK,IAAI,IAAI,CAEqB;AAOxC,mCAHI,OAAO,GACL,KAAK,IAAI,SAAS,CAE0B;AAOlD,yCAHI,OAAO,GACL,KAAK,IAAI,IAAI,GAAG,SAAS,CAEyC;AAOxE,qCAHI,OAAO,GACL,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEsD;AAO5F,kCAHI,OAAO,GACL,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAEmB;AASzD,2BALM,CAAC,SACH,OAAO,QACP,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GACvB,KAAK,IAAI,CAAC,CAE6D;AAQ7E,8BAJI,OAAO,WACP,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,OAAO,CAWnB;AASM,0BALM,CAAC,UACH,OAAO,EAAE,aACT,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,GAC5B,MAAM,IAAI,CAAC,EAAE,CAYzB;AASM,gCALM,CAAC,UACH,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,aAChC,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,GAC5B,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC,CAYhD;AAUM,gCANM,CAAC,QACH,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,aAC9B,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,SACrB,MAAM,GAAG,IAAI,GACX,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,CAS1C;AAaM,wBALM,CAAC,EAAE,CAAC,KACN,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,KAC9B,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,GAC5B,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,CAEiB;AAEzD,mDAxBc,OAAO,KAAK,KAAK,UAAK,CAwBwD;AAE5F,0DA1Bc,OAAO,KAAK,KAAK,UAAK,CA0BsE;AAE1G,gDA5Bc,OAAO,KAAK,KAAK,UAAK,CA4BkD;AAEtF,uDA9Bc,OAAO,KAAK,KAAK,UAAK,CA8BgE;AAEpG,6DAhCc,OAAO,KAAK,KAAK,UAAK,CAgCkE;AAEtG,sDAlCc,OAAO,KAAK,KAAK,UAAK,CAkC8D;AAElG,oDApCc,OAAO,KAAK,KAAK,UAAK,CAoC0D;AAE9F,2DAtCc,OAAO,KAAK,KAAK,UAAK,CAsCwE;AAE5G,iDAxCc,OAAO,KAAK,KAAK,UAAK,CAwCoD;AAExF,wDA1Cc,OAAO,KAAK,KAAK,UAAK,CA0CkE;AAEtG,8DA5Cc,OAAO,KAAK,KAAK,UAAK,CA4CoE;AAExG,uDA9Cc,OAAO,KAAK,KAAK,UAAK,CA8CgE;AAEpG,yDAhDc,OAAO,KAAK,KAAK,UAAK,CAgDqE;AAEzG,gEAlDc,OAAO,KAAK,KAAK,UAAK,CAmDgC;AAEpE,sDArDc,OAAO,KAAK,KAAK,UAAK,CAqD+D;AAEnG,6DAvDc,OAAO,KAAK,KAAK,UAAK,CAwD6B;AAEjE,mEA1Dc,OAAO,KAAK,KAAK,UAAK,CA2D8B;AAElE,4DA7Dc,OAAO,KAAK,KAAK,UAAK,CA6D2E;AAE/G,wDA/Dc,OAAO,KAAK,KAAK,aAAK,CA+DmE;AAEvG,+DAjEc,OAAO,KAAK,KAAK,aAAK,CAkE+B;AAEnE,qDApEc,OAAO,KAAK,KAAK,aAAK,CAoE6D;AAEjG,4DAtEc,OAAO,KAAK,KAAK,aAAK,CAsE2E;AAE/G,kEAxEc,OAAO,KAAK,KAAK,aAAK,CAyE6B;AAEjE,2DA3Ec,OAAO,KAAK,KAAK,aAAK,CA2EyE"}
@@ -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,19 +0,0 @@
1
- import { typeCheck, typeCheckArray, TypeCheckError } from './typecheck.js';
2
- import { isNumber, isPositiveInteger } from './validate.js';
3
-
4
- describe('typecheck', () => {
5
- test('typeCheck', () => {
6
- expect(() => typeCheck(0.1, isNumber)).not.toThrowError(TypeCheckError);
7
- expect(() => typeCheck(-0.1, isPositiveInteger)).toThrowError(TypeCheckError);
8
- expect(() => typeCheck('string', isNumber)).toThrowError(TypeCheckError);
9
- });
10
-
11
- test('typeCheckArray', () => {
12
- expect(() => typeCheckArray([0.1], isNumber)).not.toThrowError(TypeCheckError);
13
- expect(() => typeCheckArray(['string'], isNumber)).toThrowError(TypeCheckError);
14
- // @ts-expect-error
15
- expect(() => typeCheckArray(-0.1, isPositiveInteger)).toThrowError(TypeCheckError);
16
- // @ts-expect-error
17
- expect(() => typeCheckArray('string', isNumber)).toThrowError(TypeCheckError);
18
- });
19
- });
@@ -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"}