@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.
- package/CHANGELOG.md +20 -0
- package/package.json +2 -2
- package/src/index.js +31 -11
- package/src/logging/OpenTelemetryLogHandler.js +0 -1
- package/src/pagelifecycle/const.js +3 -0
- package/src/pagelifecycle/util.js +2 -1
- package/src/typecheck/TypeCheckError.js +10 -0
- package/src/typecheck/TypeChecker.js +91 -0
- package/src/typecheck/util.js +55 -0
- package/src/{util/typecheck.test.js → typecheck/util.test.js} +11 -2
- package/src/util/error.test.js +2 -2
- package/src/util/string.js +7 -0
- package/src/util/string.test.js +12 -1
- package/src/util/validate.js +1 -1
- package/types/index.d.ts +11 -10
- package/types/logging/OpenTelemetryLogHandler.d.ts.map +1 -1
- package/types/pagelifecycle/const.d.ts +2 -0
- package/types/pagelifecycle/const.d.ts.map +1 -1
- package/types/pagelifecycle/util.d.ts.map +1 -1
- package/types/typecheck/TypeCheckError.d.ts +8 -0
- package/types/typecheck/TypeCheckError.d.ts.map +1 -0
- package/types/{util/typecheck.d.ts → typecheck/TypeChecker.d.ts} +13 -14
- package/types/typecheck/TypeChecker.d.ts.map +1 -0
- package/types/typecheck/util.d.ts +4 -0
- package/types/typecheck/util.d.ts.map +1 -0
- package/types/util/string.d.ts +1 -0
- package/types/util/string.d.ts.map +1 -1
- package/types/util/validate.d.ts +1 -1
- package/types/util/validate.d.ts.map +1 -1
- package/src/pagelifecycle/event.js +0 -2
- package/src/util/typecheck.js +0 -114
- package/types/pagelifecycle/event.d.ts +0 -3
- package/types/pagelifecycle/event.d.ts.map +0 -1
- 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.
|
|
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.
|
|
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
|
|
14
|
-
|
|
15
|
-
|
|
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
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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';
|
|
@@ -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,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 {
|
|
2
|
-
import {
|
|
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
|
});
|
package/src/util/error.test.js
CHANGED
|
@@ -9,9 +9,9 @@ test('Tests getErrorDetails', () => {
|
|
|
9
9
|
});
|
|
10
10
|
|
|
11
11
|
test('Tests getErrorDetails with Error cause', () => {
|
|
12
|
-
const error = new
|
|
12
|
+
const error = new SyntaxError('Test error', { cause: new TypeError('Cause error') });
|
|
13
13
|
const errorDetails = getErrorDetails(error);
|
|
14
|
-
expect(errorDetails.type).toBe('
|
|
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) {
|
package/src/util/string.js
CHANGED
|
@@ -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();
|
package/src/util/string.test.js
CHANGED
|
@@ -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
|
+
});
|
package/src/util/validate.js
CHANGED
|
@@ -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 {
|
|
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":"
|
|
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":"
|
|
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 @@
|
|
|
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
|
|
18
|
+
* @returns {T} - The type checked value.
|
|
28
19
|
*/
|
|
29
|
-
check<T>(value: unknown, validator: (value: unknown) => value is T): T
|
|
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[]
|
|
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
|
-
|
|
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=
|
|
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"}
|
package/types/util/string.d.ts
CHANGED
|
@@ -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"}
|
package/types/util/validate.d.ts
CHANGED
|
@@ -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:
|
|
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":"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,
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/util/validate.js"],"names":[],"mappings":"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"}
|
package/src/util/typecheck.js
DELETED
|
@@ -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 +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"}
|