@vpmedia/simplify 1.75.0 → 1.76.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 +15 -0
- package/dist/index.js +1118 -25
- package/dist/index.js.map +1 -1
- package/package.json +8 -7
- package/dist/const/http_status.js +0 -133
- package/dist/const/http_status.js.map +0 -1
- package/dist/logging/AbstractLogHandler.js +0 -16
- package/dist/logging/AbstractLogHandler.js.map +0 -1
- package/dist/logging/ConsoleLogHandler.js +0 -41
- package/dist/logging/ConsoleLogHandler.js.map +0 -1
- package/dist/logging/Logger.js +0 -51
- package/dist/logging/Logger.js.map +0 -1
- package/dist/logging/OpenTelemetryLogHandler.js +0 -21
- package/dist/logging/OpenTelemetryLogHandler.js.map +0 -1
- package/dist/logging/SentryLogHandler.js +0 -36
- package/dist/logging/SentryLogHandler.js.map +0 -1
- package/dist/logging/const.js +0 -21
- package/dist/logging/const.js.map +0 -1
- package/dist/logging/util.js +0 -34
- package/dist/logging/util.js.map +0 -1
- package/dist/pagelifecycle/const.js +0 -27
- package/dist/pagelifecycle/const.js.map +0 -1
- package/dist/pagelifecycle/typedef.js +0 -2
- package/dist/pagelifecycle/typedef.js.map +0 -1
- package/dist/pagelifecycle/util.js +0 -117
- package/dist/pagelifecycle/util.js.map +0 -1
- package/dist/typecheck/TypeCheckError.js +0 -12
- package/dist/typecheck/TypeCheckError.js.map +0 -1
- package/dist/typecheck/TypeChecker.js +0 -69
- package/dist/typecheck/TypeChecker.js.map +0 -1
- package/dist/typecheck/util.js +0 -42
- package/dist/typecheck/util.js.map +0 -1
- package/dist/util/async.js +0 -39
- package/dist/util/async.js.map +0 -1
- package/dist/util/error.js +0 -27
- package/dist/util/error.js.map +0 -1
- package/dist/util/event_emitter.js +0 -127
- package/dist/util/event_emitter.js.map +0 -1
- package/dist/util/fetch.js +0 -75
- package/dist/util/fetch.js.map +0 -1
- package/dist/util/number.js +0 -52
- package/dist/util/number.js.map +0 -1
- package/dist/util/object.js +0 -83
- package/dist/util/object.js.map +0 -1
- package/dist/util/query.js +0 -24
- package/dist/util/query.js.map +0 -1
- package/dist/util/state.js +0 -19
- package/dist/util/state.js.map +0 -1
- package/dist/util/string.js +0 -59
- package/dist/util/string.js.map +0 -1
- package/dist/util/uuid.js +0 -27
- package/dist/util/uuid.js.map +0 -1
- package/dist/util/validate.js +0 -139
- package/dist/util/validate.js.map +0 -1
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
export const PAGE_LIFECYCLE_STATE_HIDDEN = 'hidden';
|
|
2
|
-
export const PAGE_LIFECYCLE_STATE_ACTIVE = 'active';
|
|
3
|
-
export const PAGE_LIFECYCLE_STATE_PASSIVE = 'passive';
|
|
4
|
-
export const PAGE_LIFECYCLE_STATE_FROZEN = 'frozen';
|
|
5
|
-
export const PAGE_LIFECYCLE_STATE_TERMINATED = 'terminated';
|
|
6
|
-
export const PAGE_LIFECYCLE_STATES = new Set([
|
|
7
|
-
PAGE_LIFECYCLE_STATE_ACTIVE,
|
|
8
|
-
PAGE_LIFECYCLE_STATE_FROZEN,
|
|
9
|
-
PAGE_LIFECYCLE_STATE_HIDDEN,
|
|
10
|
-
PAGE_LIFECYCLE_STATE_PASSIVE,
|
|
11
|
-
PAGE_LIFECYCLE_STATE_TERMINATED,
|
|
12
|
-
]);
|
|
13
|
-
export const DOCUMENT_STATE_DOM_LOADED = 'domLoaded';
|
|
14
|
-
export const DOCUMENT_STATE_FULLY_LOADED = 'fullyLoaded';
|
|
15
|
-
export const DOCUMENT_STATE_COMPLETE = 'complete';
|
|
16
|
-
export const DOCUMENT_STATE_INTERACTIVE = 'interactive';
|
|
17
|
-
export const DOCUMENT_STATE_LOADING = 'loading';
|
|
18
|
-
export const DOCUMENT_STATES = new Set([
|
|
19
|
-
DOCUMENT_STATE_COMPLETE,
|
|
20
|
-
DOCUMENT_STATE_DOM_LOADED,
|
|
21
|
-
DOCUMENT_STATE_FULLY_LOADED,
|
|
22
|
-
DOCUMENT_STATE_INTERACTIVE,
|
|
23
|
-
DOCUMENT_STATE_LOADING,
|
|
24
|
-
]);
|
|
25
|
-
export const PAGE_LIFECYCLE_STATE_CHANGE_EVENT = 'pageLifecycleStateChange';
|
|
26
|
-
export const DOCUMENT_STATE_CHANGE_EVENT = 'documentStateChange';
|
|
27
|
-
//# sourceMappingURL=const.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"const.js","sourceRoot":"","sources":["../../src/pagelifecycle/const.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,2BAA2B,GAAG,QAAQ,CAAC;AACpD,MAAM,CAAC,MAAM,2BAA2B,GAAG,QAAQ,CAAC;AACpD,MAAM,CAAC,MAAM,4BAA4B,GAAG,SAAS,CAAC;AACtD,MAAM,CAAC,MAAM,2BAA2B,GAAG,QAAQ,CAAC;AACpD,MAAM,CAAC,MAAM,+BAA+B,GAAG,YAAY,CAAC;AAE5D,MAAM,CAAC,MAAM,qBAAqB,GAAwB,IAAI,GAAG,CAAC;IAChE,2BAA2B;IAC3B,2BAA2B;IAC3B,2BAA2B;IAC3B,4BAA4B;IAC5B,+BAA+B;CAChC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,yBAAyB,GAAG,WAAW,CAAC;AACrD,MAAM,CAAC,MAAM,2BAA2B,GAAG,aAAa,CAAC;AACzD,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAAC;AAClD,MAAM,CAAC,MAAM,0BAA0B,GAAG,aAAa,CAAC;AACxD,MAAM,CAAC,MAAM,sBAAsB,GAAG,SAAS,CAAC;AAEhD,MAAM,CAAC,MAAM,eAAe,GAAwB,IAAI,GAAG,CAAC;IAC1D,uBAAuB;IACvB,yBAAyB;IACzB,2BAA2B;IAC3B,0BAA0B;IAC1B,sBAAsB;CACvB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iCAAiC,GAAG,0BAA0B,CAAC;AAC5E,MAAM,CAAC,MAAM,2BAA2B,GAAG,qBAAqB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"typedef.js","sourceRoot":"","sources":["../../src/pagelifecycle/typedef.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC"}
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Page lifecycle helper.
|
|
3
|
-
* @see https://developer.chrome.com/docs/web-platform/page-lifecycle-api
|
|
4
|
-
*/
|
|
5
|
-
import { Logger } from '../logging/Logger.js';
|
|
6
|
-
import { EventEmitter } from '../util/event_emitter.js';
|
|
7
|
-
import { DOCUMENT_STATE_CHANGE_EVENT, DOCUMENT_STATE_DOM_LOADED, DOCUMENT_STATE_FULLY_LOADED, PAGE_LIFECYCLE_STATE_ACTIVE, PAGE_LIFECYCLE_STATE_CHANGE_EVENT, PAGE_LIFECYCLE_STATE_FROZEN, PAGE_LIFECYCLE_STATE_HIDDEN, PAGE_LIFECYCLE_STATE_PASSIVE, PAGE_LIFECYCLE_STATE_TERMINATED, } from './const.js';
|
|
8
|
-
const logger = new Logger('pagelifecycle');
|
|
9
|
-
const eventEmitter = new EventEmitter();
|
|
10
|
-
let currentPageLifecycleState = null;
|
|
11
|
-
let currentDocumentState = null;
|
|
12
|
-
let isInitialized = false;
|
|
13
|
-
const callbacks = {};
|
|
14
|
-
/**
|
|
15
|
-
* Run callbacks for a specific state change.
|
|
16
|
-
*/
|
|
17
|
-
const processCallbacks = (state) => {
|
|
18
|
-
const stateCallbacks = callbacks[state];
|
|
19
|
-
if (!stateCallbacks) {
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
for (const callback of stateCallbacks) {
|
|
23
|
-
callback();
|
|
24
|
-
}
|
|
25
|
-
stateCallbacks.length = 0;
|
|
26
|
-
};
|
|
27
|
-
/**
|
|
28
|
-
* Detects the current page lifecycle state.
|
|
29
|
-
*/
|
|
30
|
-
const detectPageLifecycleState = () => {
|
|
31
|
-
if (document.visibilityState === 'hidden') {
|
|
32
|
-
return PAGE_LIFECYCLE_STATE_HIDDEN;
|
|
33
|
-
}
|
|
34
|
-
if (document.hasFocus()) {
|
|
35
|
-
return PAGE_LIFECYCLE_STATE_ACTIVE;
|
|
36
|
-
}
|
|
37
|
-
return PAGE_LIFECYCLE_STATE_PASSIVE;
|
|
38
|
-
};
|
|
39
|
-
/**
|
|
40
|
-
* Handles page lifecycle state change.
|
|
41
|
-
*/
|
|
42
|
-
const onPageLifecycleStateChange = (nextState) => {
|
|
43
|
-
const previousState = currentPageLifecycleState;
|
|
44
|
-
if (nextState !== previousState) {
|
|
45
|
-
currentPageLifecycleState = nextState;
|
|
46
|
-
const eventData = { previousState, nextState };
|
|
47
|
-
logger.info(PAGE_LIFECYCLE_STATE_CHANGE_EVENT, eventData);
|
|
48
|
-
eventEmitter.emit(PAGE_LIFECYCLE_STATE_CHANGE_EVENT, eventData);
|
|
49
|
-
processCallbacks(currentPageLifecycleState);
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
/**
|
|
53
|
-
* Handles document state change.
|
|
54
|
-
*/
|
|
55
|
-
const onDocumentStateChange = (nextState) => {
|
|
56
|
-
const previousState = currentDocumentState;
|
|
57
|
-
if (nextState !== previousState) {
|
|
58
|
-
currentDocumentState = nextState;
|
|
59
|
-
const eventData = { previousState, nextState };
|
|
60
|
-
logger.info(DOCUMENT_STATE_CHANGE_EVENT, eventData);
|
|
61
|
-
eventEmitter.emit(DOCUMENT_STATE_CHANGE_EVENT, eventData);
|
|
62
|
-
processCallbacks(currentDocumentState);
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
/**
|
|
66
|
-
* Initialize page lifecycle observer.
|
|
67
|
-
*/
|
|
68
|
-
export const initPageLifecycle = () => {
|
|
69
|
-
if (isInitialized) {
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
logger.info('initPageLifecycle');
|
|
73
|
-
onPageLifecycleStateChange(detectPageLifecycleState());
|
|
74
|
-
onDocumentStateChange(document.readyState);
|
|
75
|
-
const options = { capture: true };
|
|
76
|
-
document.addEventListener('visibilitychange', () => onPageLifecycleStateChange(detectPageLifecycleState()), options);
|
|
77
|
-
globalThis.addEventListener('pageshow', () => onPageLifecycleStateChange(detectPageLifecycleState()), options);
|
|
78
|
-
globalThis.addEventListener('focus', () => onPageLifecycleStateChange(detectPageLifecycleState()), options);
|
|
79
|
-
globalThis.addEventListener('blur', () => onPageLifecycleStateChange(detectPageLifecycleState()), options);
|
|
80
|
-
document.addEventListener('resume', () => onPageLifecycleStateChange(detectPageLifecycleState()), options);
|
|
81
|
-
document.addEventListener('freeze', () => onPageLifecycleStateChange(PAGE_LIFECYCLE_STATE_FROZEN), options);
|
|
82
|
-
globalThis.addEventListener('pagehide', (event) => onPageLifecycleStateChange(event.persisted ? PAGE_LIFECYCLE_STATE_FROZEN : PAGE_LIFECYCLE_STATE_TERMINATED), options);
|
|
83
|
-
document.addEventListener('DOMContentLoaded', () => onDocumentStateChange(DOCUMENT_STATE_DOM_LOADED), options);
|
|
84
|
-
document.addEventListener('readystatechange', () => onDocumentStateChange(document.readyState), options);
|
|
85
|
-
globalThis.addEventListener('load', () => onDocumentStateChange(DOCUMENT_STATE_FULLY_LOADED), options);
|
|
86
|
-
isInitialized = true;
|
|
87
|
-
};
|
|
88
|
-
/**
|
|
89
|
-
* Returns the current page lifecycle state.
|
|
90
|
-
*/
|
|
91
|
-
export const getPageLifecycleState = () => currentPageLifecycleState;
|
|
92
|
-
/**
|
|
93
|
-
* Returns the current document state.
|
|
94
|
-
*/
|
|
95
|
-
export const getDocumentState = () => currentDocumentState;
|
|
96
|
-
/**
|
|
97
|
-
* Returns the event emitter instance.
|
|
98
|
-
*/
|
|
99
|
-
export const getPageLifecycleEventEmitter = () => {
|
|
100
|
-
if (!isInitialized) {
|
|
101
|
-
initPageLifecycle();
|
|
102
|
-
}
|
|
103
|
-
return eventEmitter;
|
|
104
|
-
};
|
|
105
|
-
/**
|
|
106
|
-
* Returns the page lifecycle observer initialized state.
|
|
107
|
-
*/
|
|
108
|
-
export const isPageLifecycleInitialized = () => isInitialized;
|
|
109
|
-
/**
|
|
110
|
-
* Add callback for a specific state change.
|
|
111
|
-
*/
|
|
112
|
-
export const addPageLifecycleCallback = (state, callback) => {
|
|
113
|
-
const stateCallbacks = callbacks[state] ?? [];
|
|
114
|
-
stateCallbacks.push(callback);
|
|
115
|
-
callbacks[state] = stateCallbacks;
|
|
116
|
-
};
|
|
117
|
-
//# sourceMappingURL=util.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/pagelifecycle/util.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export class TypeCheckError extends TypeError {
|
|
2
|
-
value;
|
|
3
|
-
/**
|
|
4
|
-
* Creates a new `TypeCheckError` instance.
|
|
5
|
-
*/
|
|
6
|
-
constructor(message, options) {
|
|
7
|
-
super(message, options);
|
|
8
|
-
this.name = 'TypeCheckError';
|
|
9
|
-
this.value = options?.value;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
//# sourceMappingURL=TypeCheckError.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TypeCheckError.js","sourceRoot":"","sources":["../../src/typecheck/TypeCheckError.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,cAAe,SAAQ,SAAS;IAC3C,KAAK,CAAU;IAEf;;OAEG;IACH,YAAY,OAAe,EAAE,OAA+B;QAC1D,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,KAAK,CAAC;IAC9B,CAAC;CACF"}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { Logger } from '../logging/Logger.js';
|
|
2
|
-
import { TypeCheckError } from './TypeCheckError.js';
|
|
3
|
-
import { typeCheck, typeCheckArray, typeCheckEnum } from './util.js';
|
|
4
|
-
const logger = new Logger('typechecker');
|
|
5
|
-
class TypeChecker {
|
|
6
|
-
static #instance;
|
|
7
|
-
#swallowErrors = false;
|
|
8
|
-
constructor() {
|
|
9
|
-
if (TypeChecker.#instance === undefined) {
|
|
10
|
-
TypeChecker.#instance = this;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Enable or disable swallowing of TypeCheckErrors.
|
|
15
|
-
*/
|
|
16
|
-
setSwallowErrors(value) {
|
|
17
|
-
this.#swallowErrors = Boolean(value);
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Type check a single value.
|
|
21
|
-
*/
|
|
22
|
-
check(value, validator) {
|
|
23
|
-
try {
|
|
24
|
-
return typeCheck(value, validator);
|
|
25
|
-
}
|
|
26
|
-
catch (error) {
|
|
27
|
-
if (this.#swallowErrors && error instanceof TypeCheckError) {
|
|
28
|
-
logger.exception('check', error);
|
|
29
|
-
return value;
|
|
30
|
-
}
|
|
31
|
-
throw error;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Type check an array of values.
|
|
36
|
-
*/
|
|
37
|
-
checkArray(value, validator) {
|
|
38
|
-
try {
|
|
39
|
-
return typeCheckArray(value, validator);
|
|
40
|
-
}
|
|
41
|
-
catch (error) {
|
|
42
|
-
if (this.#swallowErrors && error instanceof TypeCheckError) {
|
|
43
|
-
logger.exception('checkArray', error);
|
|
44
|
-
return value;
|
|
45
|
-
}
|
|
46
|
-
throw error;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Type check an enum.
|
|
51
|
-
*/
|
|
52
|
-
checkEnum(value, choices) {
|
|
53
|
-
try {
|
|
54
|
-
return typeCheckEnum(value, choices);
|
|
55
|
-
}
|
|
56
|
-
catch (error) {
|
|
57
|
-
if (this.#swallowErrors && error instanceof TypeCheckError) {
|
|
58
|
-
logger.exception('checkEnum', error);
|
|
59
|
-
return value;
|
|
60
|
-
}
|
|
61
|
-
throw error;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Export a single shared instance.
|
|
67
|
-
*/
|
|
68
|
-
export const typeChecker = new TypeChecker();
|
|
69
|
-
//# sourceMappingURL=TypeChecker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TypeChecker.js","sourceRoot":"","sources":["../../src/typecheck/TypeChecker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAoB,MAAM,WAAW,CAAC;AAEvF,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzC,MAAM,WAAW;IACf,MAAM,CAAC,SAAS,CAA0B;IAE1C,cAAc,GAAG,KAAK,CAAC;IAEvB;QACE,IAAI,WAAW,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACxC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,KAAc;QAC7B,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,KAAK,CAAI,KAAc,EAAE,SAAyC;QAChE,IAAI,CAAC;YACH,OAAO,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,cAAc,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;gBAC3D,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACjC,OAAO,KAAU,CAAC;YACpB,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,UAAU,CAAI,KAAgB,EAAE,SAAyC;QACvE,IAAI,CAAC;YACH,OAAO,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,cAAc,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;gBAC3D,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;gBACtC,OAAO,KAAY,CAAC;YACtB,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,KAAsB,EAAE,OAAoB;QACpD,IAAI,CAAC;YACH,OAAO,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,cAAc,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;gBAC3D,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;gBACrC,OAAO,KAAK,CAAC;YACf,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC"}
|
package/dist/typecheck/util.js
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { getDisplayValue, getTypeFromValue } from '../util/string.js';
|
|
2
|
-
import { isArrayOf, isEnum } from '../util/validate.js';
|
|
3
|
-
import { TypeCheckError } from './TypeCheckError.js';
|
|
4
|
-
/**
|
|
5
|
-
* Get error message for validator exceptions.
|
|
6
|
-
*/
|
|
7
|
-
const getErrorMessage = (validatorName, value) => {
|
|
8
|
-
const displayValue = getDisplayValue(value);
|
|
9
|
-
const displayType = getTypeFromValue(value);
|
|
10
|
-
throw new TypeCheckError(`Validation failed: ${validatorName || '<anonymous>'} - ${displayValue} (${displayType})`);
|
|
11
|
-
};
|
|
12
|
-
/**
|
|
13
|
-
* Type check a value using a validator.
|
|
14
|
-
* @throws {TypeCheckError}
|
|
15
|
-
*/
|
|
16
|
-
export const typeCheck = (value, validator) => {
|
|
17
|
-
if (!validator(value)) {
|
|
18
|
-
getErrorMessage(validator.name, value);
|
|
19
|
-
}
|
|
20
|
-
return value;
|
|
21
|
-
};
|
|
22
|
-
/**
|
|
23
|
-
* Type check an array of values using a validator.
|
|
24
|
-
* @throws {TypeCheckError}
|
|
25
|
-
*/
|
|
26
|
-
export const typeCheckArray = (value, validator) => {
|
|
27
|
-
if (!isArrayOf(value, validator)) {
|
|
28
|
-
getErrorMessage(validator.name, value);
|
|
29
|
-
}
|
|
30
|
-
return value;
|
|
31
|
-
};
|
|
32
|
-
/**
|
|
33
|
-
* Type check an enum.
|
|
34
|
-
* @throws {TypeCheckError}
|
|
35
|
-
*/
|
|
36
|
-
export const typeCheckEnum = (value, choices) => {
|
|
37
|
-
if (!isEnum(value, choices)) {
|
|
38
|
-
getErrorMessage('isEnum', value);
|
|
39
|
-
}
|
|
40
|
-
return value;
|
|
41
|
-
};
|
|
42
|
-
//# sourceMappingURL=util.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/typecheck/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAOrD;;GAEG;AACH,MAAM,eAAe,GAAG,CAAC,aAAqB,EAAE,KAAc,EAAS,EAAE;IACvE,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,IAAI,cAAc,CAAC,sBAAsB,aAAa,IAAI,aAAa,MAAM,YAAY,KAAK,WAAW,GAAG,CAAC,CAAC;AACtH,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAI,KAAc,EAAE,SAAyC,EAAK,EAAE;IAC3F,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACtB,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,KAAU,CAAC;AACpB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAI,KAAgB,EAAE,SAAyC,EAAO,EAAE;IACpG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;QACjC,eAAe,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,KAAY,CAAC;AACtB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAsB,EAAE,OAAoB,EAAmB,EAAE;IAC7F,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;QAC5B,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
|
package/dist/util/async.js
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { getTypedError } from './error.js';
|
|
2
|
-
/**
|
|
3
|
-
* Returns a promise with delayed resolve.
|
|
4
|
-
*/
|
|
5
|
-
export const delayPromise = (delayMS) => new Promise((resolve) => {
|
|
6
|
-
setTimeout(resolve, delayMS);
|
|
7
|
-
});
|
|
8
|
-
/**
|
|
9
|
-
* Async method call retry helper.
|
|
10
|
-
*/
|
|
11
|
-
export const retryAsync = async (method, numTries = 1, delayMs = 100) => {
|
|
12
|
-
for (let attempt = 0; attempt <= numTries; attempt += 1) {
|
|
13
|
-
try {
|
|
14
|
-
// oxlint-disable-next-line no-await-in-loop
|
|
15
|
-
return await method();
|
|
16
|
-
}
|
|
17
|
-
catch (error) {
|
|
18
|
-
if (attempt === numTries) {
|
|
19
|
-
throw getTypedError(error);
|
|
20
|
-
}
|
|
21
|
-
if (delayMs > 0) {
|
|
22
|
-
// oxlint-disable-next-line no-await-in-loop
|
|
23
|
-
await delayPromise(delayMs);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
throw new Error('Unknown error');
|
|
28
|
-
};
|
|
29
|
-
/**
|
|
30
|
-
* Load JSON file using a fetch GET request.
|
|
31
|
-
*/
|
|
32
|
-
export const loadJSON = async (url) => {
|
|
33
|
-
const response = await fetch(url);
|
|
34
|
-
if (!response.ok) {
|
|
35
|
-
throw new DOMException(`Fetch error ${response.status}`, 'FetchError');
|
|
36
|
-
}
|
|
37
|
-
return response.json();
|
|
38
|
-
};
|
|
39
|
-
//# sourceMappingURL=async.js.map
|
package/dist/util/async.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"async.js","sourceRoot":"","sources":["../../src/util/async.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,OAAe,EAAiB,EAAE,CAC7D,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;IACtB,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEL;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAK,MAAwB,EAAE,QAAQ,GAAG,CAAC,EAAE,OAAO,GAAG,GAAG,EAAc,EAAE;IACvG,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,QAAQ,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC;YACH,4CAA4C;YAC5C,OAAO,MAAM,MAAM,EAAE,CAAC;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACzB,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC;YACD,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAChB,4CAA4C;gBAC5C,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AACnC,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAE,GAAW,EAAoB,EAAE;IAC9D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,YAAY,CAAC,eAAe,QAAQ,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC,CAAC"}
|
package/dist/util/error.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
const DEFAULT_EXCLUDES = new Set(['stack']);
|
|
2
|
-
/**
|
|
3
|
-
* Retrieves detailed information from an error object.
|
|
4
|
-
*/
|
|
5
|
-
export const getErrorDetails = (error, excludes) => {
|
|
6
|
-
const errorDetails = {
|
|
7
|
-
name: error.name,
|
|
8
|
-
type: error.constructor?.name ?? typeof error,
|
|
9
|
-
};
|
|
10
|
-
if (error.message) {
|
|
11
|
-
errorDetails.message = error.message;
|
|
12
|
-
}
|
|
13
|
-
if (error.cause) {
|
|
14
|
-
errorDetails.cause = error.cause;
|
|
15
|
-
}
|
|
16
|
-
for (const key of Object.getOwnPropertyNames(error)) {
|
|
17
|
-
if (!excludes?.includes(key) && !DEFAULT_EXCLUDES.has(key)) {
|
|
18
|
-
errorDetails[key] = error[key];
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
return errorDetails;
|
|
22
|
-
};
|
|
23
|
-
/**
|
|
24
|
-
* Get typed error from an unknown type.
|
|
25
|
-
*/
|
|
26
|
-
export const getTypedError = (error) => error instanceof Error ? error : new Error(String(error));
|
|
27
|
-
//# sourceMappingURL=error.js.map
|
package/dist/util/error.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/util/error.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAU5C;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAY,EAAE,QAA0B,EAAgB,EAAE;IACxF,MAAM,YAAY,GAAiB;QACjC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,IAAI,IAAI,OAAO,KAAK;KAC9C,CAAC;IACF,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IACvC,CAAC;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACnC,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;QACpD,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3D,YAAY,CAAC,GAAG,CAAC,GAAI,KAA4C,CAAC,GAAG,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAc,EAAS,EAAE,CACrD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC"}
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Internal listener wrapper that stores metadata
|
|
3
|
-
* about a registered event listener.
|
|
4
|
-
*/
|
|
5
|
-
class Listener {
|
|
6
|
-
fn;
|
|
7
|
-
context;
|
|
8
|
-
once;
|
|
9
|
-
constructor(fn, context, once = false) {
|
|
10
|
-
this.fn = fn;
|
|
11
|
-
this.context = context;
|
|
12
|
-
this.once = once;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Event emitter implementation inspired by Node.js/EventEmitter3.
|
|
17
|
-
*/
|
|
18
|
-
export class EventEmitter {
|
|
19
|
-
#events;
|
|
20
|
-
constructor() {
|
|
21
|
-
this.#events = new Map();
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Get all registered event names.
|
|
25
|
-
*/
|
|
26
|
-
eventNames() {
|
|
27
|
-
return [...this.#events.keys()];
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Get all listener functions registered for an event.
|
|
31
|
-
*/
|
|
32
|
-
listeners(event) {
|
|
33
|
-
const listeners = this.#events.get(event);
|
|
34
|
-
return listeners ? listeners.map((l) => l.fn) : [];
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Get the number of listeners registered for an event.
|
|
38
|
-
*/
|
|
39
|
-
listenerCount(event) {
|
|
40
|
-
const listeners = this.#events.get(event);
|
|
41
|
-
return listeners ? listeners.length : 0;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Emit an event, invoking all registered listeners.
|
|
45
|
-
*/
|
|
46
|
-
emit(event, ...args) {
|
|
47
|
-
const listeners = this.#events.get(event);
|
|
48
|
-
if (!listeners || listeners.length === 0) {
|
|
49
|
-
return false;
|
|
50
|
-
}
|
|
51
|
-
for (const listener of [...listeners]) {
|
|
52
|
-
listener.fn.apply(listener.context, args);
|
|
53
|
-
if (listener.once) {
|
|
54
|
-
this.off(event, listener.fn, listener.context);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
return true;
|
|
58
|
-
}
|
|
59
|
-
#addListener(event, fn, context, once) {
|
|
60
|
-
if (typeof fn !== 'function') {
|
|
61
|
-
throw new TypeError('Listener must be a function');
|
|
62
|
-
}
|
|
63
|
-
const listener = new Listener(fn, context ?? this, once);
|
|
64
|
-
const listeners = this.#events.get(event);
|
|
65
|
-
if (listeners) {
|
|
66
|
-
listeners.push(listener);
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
this.#events.set(event, [listener]);
|
|
70
|
-
}
|
|
71
|
-
return this;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Register a persistent listener for an event.
|
|
75
|
-
*/
|
|
76
|
-
on(event, fn, context) {
|
|
77
|
-
return this.#addListener(event, fn, context, false);
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Register a one-time listener for an event.
|
|
81
|
-
*/
|
|
82
|
-
once(event, fn, context) {
|
|
83
|
-
return this.#addListener(event, fn, context, true);
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Remove a specific listener, or all listeners for an event.
|
|
87
|
-
*/
|
|
88
|
-
off(event, fn, context) {
|
|
89
|
-
if (!this.#events.has(event)) {
|
|
90
|
-
return this;
|
|
91
|
-
}
|
|
92
|
-
if (!fn) {
|
|
93
|
-
this.#events.delete(event);
|
|
94
|
-
return this;
|
|
95
|
-
}
|
|
96
|
-
const filtered = this.#events.get(event).filter((listener) => {
|
|
97
|
-
if (listener.fn !== fn) {
|
|
98
|
-
return true;
|
|
99
|
-
}
|
|
100
|
-
if (context !== undefined && listener.context !== context) {
|
|
101
|
-
return true;
|
|
102
|
-
}
|
|
103
|
-
return false;
|
|
104
|
-
});
|
|
105
|
-
if (filtered.length > 0) {
|
|
106
|
-
this.#events.set(event, filtered);
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
this.#events.delete(event);
|
|
110
|
-
}
|
|
111
|
-
return this;
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Remove all listeners from the emitter,
|
|
115
|
-
* or all listeners for a specific event.
|
|
116
|
-
*/
|
|
117
|
-
removeAllListeners(event) {
|
|
118
|
-
if (event === undefined) {
|
|
119
|
-
this.#events.clear();
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
this.#events.delete(event);
|
|
123
|
-
}
|
|
124
|
-
return this;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
//# sourceMappingURL=event_emitter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"event_emitter.js","sourceRoot":"","sources":["../../src/util/event_emitter.ts"],"names":[],"mappings":"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"}
|
package/dist/util/fetch.js
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { HTTP_401_UNAUTHORIZED, HTTP_403_FORBIDDEN, HTTP_405_METHOD_NOT_ALLOWED, HTTP_422_UNPROCESSABLE_CONTENT, } from '../const/http_status.js';
|
|
2
|
-
import { Logger } from '../logging/Logger.js';
|
|
3
|
-
import { delayPromise } from './async.js';
|
|
4
|
-
import { getErrorDetails } from './error.js';
|
|
5
|
-
const logger = new Logger('fetch');
|
|
6
|
-
export const HTTP_0_ANY = 0;
|
|
7
|
-
export class FetchError extends Error {
|
|
8
|
-
resource;
|
|
9
|
-
fetchOptions;
|
|
10
|
-
response;
|
|
11
|
-
cause;
|
|
12
|
-
/**
|
|
13
|
-
* Creates a new FetchError instance.
|
|
14
|
-
*/
|
|
15
|
-
constructor(message, resource, fetchOptions, response) {
|
|
16
|
-
super(message);
|
|
17
|
-
this.name = 'FetchError';
|
|
18
|
-
this.resource = resource;
|
|
19
|
-
this.fetchOptions = fetchOptions;
|
|
20
|
-
this.response = response;
|
|
21
|
-
this.cause = response?.status ?? null;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Fetch with retry.
|
|
26
|
-
*/
|
|
27
|
-
export const fetchRetry = async (resource, fetchOptions, retryOptions) => {
|
|
28
|
-
const opts = {
|
|
29
|
-
timeout: Math.max(retryOptions?.timeout ?? 30_000, 1),
|
|
30
|
-
delay: Math.max(retryOptions?.delay ?? 1000, 1),
|
|
31
|
-
numTries: Math.max(retryOptions?.numTries ?? 1, 1),
|
|
32
|
-
statusExcludes: retryOptions?.statusExcludes ?? [
|
|
33
|
-
HTTP_401_UNAUTHORIZED,
|
|
34
|
-
HTTP_403_FORBIDDEN,
|
|
35
|
-
HTTP_405_METHOD_NOT_ALLOWED,
|
|
36
|
-
HTTP_422_UNPROCESSABLE_CONTENT,
|
|
37
|
-
],
|
|
38
|
-
};
|
|
39
|
-
while (opts.numTries > 0) {
|
|
40
|
-
const isOnline = globalThis.navigator?.onLine;
|
|
41
|
-
logger.info('request', { resource: String(resource), fetchOptions, retryOptions: { ...opts }, isOnline });
|
|
42
|
-
const controller = new AbortController();
|
|
43
|
-
const timeoutId = setTimeout(() => controller.abort(new DOMException('Fetch timed out', 'AbortError')), opts.timeout);
|
|
44
|
-
const options = {
|
|
45
|
-
...fetchOptions,
|
|
46
|
-
signal: controller.signal,
|
|
47
|
-
};
|
|
48
|
-
try {
|
|
49
|
-
const response = await fetch(resource, options);
|
|
50
|
-
if (!response.ok) {
|
|
51
|
-
throw new FetchError(`Fetch error ${response.status}`, resource, options, response);
|
|
52
|
-
}
|
|
53
|
-
logger.info('response', { status: response.status });
|
|
54
|
-
return response;
|
|
55
|
-
}
|
|
56
|
-
catch (error) {
|
|
57
|
-
const typedError = error instanceof Error ? error : new Error(String(error));
|
|
58
|
-
logger.debug('error', getErrorDetails(typedError));
|
|
59
|
-
opts.numTries -= 1;
|
|
60
|
-
if (opts.numTries === 0 ||
|
|
61
|
-
(typedError instanceof FetchError &&
|
|
62
|
-
(opts.statusExcludes.includes(typedError.response?.status ?? -1) ||
|
|
63
|
-
opts.statusExcludes.includes(HTTP_0_ANY)))) {
|
|
64
|
-
throw error;
|
|
65
|
-
}
|
|
66
|
-
await delayPromise(opts.delay);
|
|
67
|
-
opts.delay *= 2;
|
|
68
|
-
}
|
|
69
|
-
finally {
|
|
70
|
-
clearTimeout(timeoutId);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
throw new Error('Fetch failed');
|
|
74
|
-
};
|
|
75
|
-
//# sourceMappingURL=fetch.js.map
|
package/dist/util/fetch.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/util/fetch.ts"],"names":[],"mappings":"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"}
|
package/dist/util/number.js
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { TypeCheckError } from '../typecheck/TypeCheckError.js';
|
|
2
|
-
const DEG_TO_RAD = Math.PI / 180;
|
|
3
|
-
const RAD_TO_DEG = 180 / Math.PI;
|
|
4
|
-
const PRECISION = 12;
|
|
5
|
-
const EPSILON = 1e-11;
|
|
6
|
-
/**
|
|
7
|
-
* Converts degrees to radians.
|
|
8
|
-
*/
|
|
9
|
-
export const deg2rad = (degrees) => {
|
|
10
|
-
if (!Number.isFinite(degrees)) {
|
|
11
|
-
throw new TypeCheckError('Argument degrees must be a finite number', { value: degrees });
|
|
12
|
-
}
|
|
13
|
-
return degrees * DEG_TO_RAD;
|
|
14
|
-
};
|
|
15
|
-
/**
|
|
16
|
-
* Converts radians to degrees.
|
|
17
|
-
*/
|
|
18
|
-
export const rad2deg = (radians) => {
|
|
19
|
-
if (!Number.isFinite(radians)) {
|
|
20
|
-
throw new TypeCheckError('Argument radians must be a finite number', { value: radians });
|
|
21
|
-
}
|
|
22
|
-
return radians * RAD_TO_DEG;
|
|
23
|
-
};
|
|
24
|
-
/**
|
|
25
|
-
* Returns random integer in range.
|
|
26
|
-
*/
|
|
27
|
-
export const getRandomInt = (min, max) => {
|
|
28
|
-
if (!Number.isFinite(min)) {
|
|
29
|
-
throw new TypeCheckError('Argument min must be finite number', { value: min });
|
|
30
|
-
}
|
|
31
|
-
if (!Number.isFinite(max)) {
|
|
32
|
-
throw new TypeCheckError('Argument max must be finite number', { value: max });
|
|
33
|
-
}
|
|
34
|
-
return Math.floor(Math.random() * (max - min + 1)) + min;
|
|
35
|
-
};
|
|
36
|
-
/**
|
|
37
|
-
* Normalizes floating point precision (e.g. 0.20000000000000004 → 0.2).
|
|
38
|
-
*/
|
|
39
|
-
export const fixFloatPrecision = (value) => {
|
|
40
|
-
const parsedValue = typeof value === 'string' ? Number(value) : value;
|
|
41
|
-
if (parsedValue === null || parsedValue === undefined || !Number.isFinite(parsedValue)) {
|
|
42
|
-
return Number.NaN;
|
|
43
|
-
}
|
|
44
|
-
return Math.abs(parsedValue) < EPSILON ? 0 : Number(parsedValue.toPrecision(PRECISION));
|
|
45
|
-
};
|
|
46
|
-
export const isGreater = (value, min) => value > min;
|
|
47
|
-
export const isGreaterOrEqual = (value, min) => value >= min;
|
|
48
|
-
export const isLess = (value, min) => value < min;
|
|
49
|
-
export const isLessOrEqual = (value, min) => value <= min;
|
|
50
|
-
export const isInRange = (value, min, max) => value >= min && value <= max;
|
|
51
|
-
export const isEqual = (value, expected) => value === expected;
|
|
52
|
-
//# sourceMappingURL=number.js.map
|
package/dist/util/number.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"number.js","sourceRoot":"","sources":["../../src/util/number.ts"],"names":[],"mappings":"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"}
|