@vpmedia/simplify 1.74.0 → 1.75.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 +60 -0
- package/dist/const/http_status.d.ts +66 -0
- package/dist/const/http_status.d.ts.map +1 -0
- package/dist/const/http_status.js +133 -0
- package/dist/const/http_status.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/{src → dist}/index.js +3 -20
- package/dist/index.js.map +1 -0
- package/dist/logging/AbstractLogHandler.d.ts +17 -0
- package/dist/logging/AbstractLogHandler.d.ts.map +1 -0
- package/dist/logging/AbstractLogHandler.js +16 -0
- package/dist/logging/AbstractLogHandler.js.map +1 -0
- package/dist/logging/ConsoleLogHandler.d.ts +13 -0
- package/dist/logging/ConsoleLogHandler.d.ts.map +1 -0
- package/dist/logging/ConsoleLogHandler.js +41 -0
- package/dist/logging/ConsoleLogHandler.js.map +1 -0
- package/dist/logging/Logger.d.ts +19 -0
- package/dist/logging/Logger.d.ts.map +1 -0
- package/dist/logging/Logger.js +51 -0
- package/dist/logging/Logger.js.map +1 -0
- package/dist/logging/OpenTelemetryLogHandler.d.ts +15 -0
- package/dist/logging/OpenTelemetryLogHandler.d.ts.map +1 -0
- package/dist/logging/OpenTelemetryLogHandler.js +21 -0
- package/dist/logging/OpenTelemetryLogHandler.js.map +1 -0
- package/dist/logging/SentryLogHandler.d.ts +13 -0
- package/dist/logging/SentryLogHandler.d.ts.map +1 -0
- package/dist/logging/SentryLogHandler.js +36 -0
- package/dist/logging/SentryLogHandler.js.map +1 -0
- package/dist/logging/const.d.ts +14 -0
- package/dist/logging/const.d.ts.map +1 -0
- package/dist/logging/const.js +21 -0
- package/dist/logging/const.js.map +1 -0
- package/dist/logging/util.d.ts +14 -0
- package/dist/logging/util.d.ts.map +1 -0
- package/dist/logging/util.js +34 -0
- package/dist/logging/util.js.map +1 -0
- package/dist/pagelifecycle/const.d.ts +15 -0
- package/dist/pagelifecycle/const.d.ts.map +1 -0
- package/dist/pagelifecycle/const.js +27 -0
- package/dist/pagelifecycle/const.js.map +1 -0
- package/dist/pagelifecycle/typedef.d.ts +4 -0
- package/dist/pagelifecycle/typedef.d.ts.map +1 -0
- package/dist/pagelifecycle/typedef.js +2 -0
- package/dist/pagelifecycle/typedef.js.map +1 -0
- package/dist/pagelifecycle/util.d.ts +31 -0
- package/dist/pagelifecycle/util.d.ts.map +1 -0
- package/dist/pagelifecycle/util.js +117 -0
- package/dist/pagelifecycle/util.js.map +1 -0
- package/dist/typecheck/TypeCheckError.d.ts +11 -0
- package/dist/typecheck/TypeCheckError.d.ts.map +1 -0
- package/dist/typecheck/TypeCheckError.js +12 -0
- package/dist/typecheck/TypeCheckError.js.map +1 -0
- package/dist/typecheck/TypeChecker.d.ts +27 -0
- package/dist/typecheck/TypeChecker.d.ts.map +1 -0
- package/dist/typecheck/TypeChecker.js +69 -0
- package/dist/typecheck/TypeChecker.js.map +1 -0
- package/dist/typecheck/util.d.ts +17 -0
- package/dist/typecheck/util.d.ts.map +1 -0
- package/dist/typecheck/util.js +42 -0
- package/dist/typecheck/util.js.map +1 -0
- package/dist/util/async.d.ts +13 -0
- package/dist/util/async.d.ts.map +1 -0
- package/dist/util/async.js +39 -0
- package/dist/util/async.js.map +1 -0
- package/dist/util/error.d.ts +16 -0
- package/dist/util/error.d.ts.map +1 -0
- package/dist/util/error.js +27 -0
- package/dist/util/error.js.map +1 -0
- package/dist/util/event_emitter.d.ts +42 -0
- package/dist/util/event_emitter.d.ts.map +1 -0
- package/dist/util/event_emitter.js +127 -0
- package/dist/util/event_emitter.js.map +1 -0
- package/dist/util/fetch.d.ts +22 -0
- package/dist/util/fetch.d.ts.map +1 -0
- package/dist/util/fetch.js +75 -0
- package/dist/util/fetch.js.map +1 -0
- package/dist/util/number.d.ts +23 -0
- package/dist/util/number.d.ts.map +1 -0
- package/dist/util/number.js +52 -0
- package/dist/util/number.js.map +1 -0
- package/dist/util/object.d.ts +24 -0
- package/dist/util/object.d.ts.map +1 -0
- package/dist/util/object.js +83 -0
- package/dist/util/object.js.map +1 -0
- package/dist/util/query.d.ts +11 -0
- package/dist/util/query.d.ts.map +1 -0
- package/dist/util/query.js +24 -0
- package/dist/util/query.js.map +1 -0
- package/dist/util/state.d.ts +5 -0
- package/dist/util/state.d.ts.map +1 -0
- package/dist/util/state.js +19 -0
- package/dist/util/state.js.map +1 -0
- package/dist/util/string.d.ts +25 -0
- package/dist/util/string.d.ts.map +1 -0
- package/dist/util/string.js +59 -0
- package/dist/util/string.js.map +1 -0
- package/dist/util/uuid.d.ts +13 -0
- package/dist/util/uuid.d.ts.map +1 -0
- package/dist/util/uuid.js +27 -0
- package/dist/util/uuid.js.map +1 -0
- package/dist/util/validate.d.ts +106 -0
- package/dist/util/validate.d.ts.map +1 -0
- package/dist/util/validate.js +139 -0
- package/dist/util/validate.js.map +1 -0
- package/package.json +31 -16
- package/src/const/http_status.test.ts +7 -0
- package/src/const/{http_status.js → http_status.ts} +1 -1
- package/src/index.ts +51 -0
- package/src/logging/AbstractLogHandler.ts +31 -0
- package/src/logging/{ConsoleLogHandler.js → ConsoleLogHandler.ts} +15 -13
- package/src/logging/Logger.test.ts +69 -0
- package/src/logging/Logger.ts +77 -0
- package/src/logging/OpenTelemetryLogHandler.ts +40 -0
- package/src/logging/SentryLogHandler.ts +44 -0
- package/src/logging/{const.js → const.ts} +1 -1
- package/src/logging/util.test.ts +33 -0
- package/src/logging/util.ts +36 -0
- package/src/pagelifecycle/{const.js → const.ts} +2 -2
- package/src/pagelifecycle/typedef.ts +5 -0
- package/src/pagelifecycle/util.test.ts +99 -0
- package/src/pagelifecycle/{util.js → util.ts} +14 -27
- package/src/typecheck/{TypeCheckError.js → TypeCheckError.ts} +7 -3
- package/src/typecheck/TypeChecker.test.ts +70 -0
- package/src/typecheck/{TypeChecker.js → TypeChecker.ts} +10 -27
- package/src/typecheck/util.test.ts +36 -0
- package/src/typecheck/util.ts +50 -0
- package/src/util/async.test.ts +74 -0
- package/src/util/{async.js → async.ts} +3 -12
- package/src/util/error.test.ts +32 -0
- package/src/util/error.ts +37 -0
- package/src/util/event_emitter.test.ts +228 -0
- package/src/util/event_emitter.ts +147 -0
- package/src/util/fetch.test.ts +62 -0
- package/src/util/{fetch.js → fetch.ts} +40 -31
- package/src/util/number.test.ts +124 -0
- package/src/util/number.ts +58 -0
- package/src/util/object.test.ts +203 -0
- package/src/util/{object.js → object.ts} +14 -21
- package/src/util/query.test.ts +71 -0
- package/src/util/query.ts +35 -0
- package/src/util/state.test.ts +47 -0
- package/src/util/{state.js → state.ts} +3 -6
- package/src/util/string.test.ts +64 -0
- package/src/util/string.ts +65 -0
- package/src/util/uuid.test.ts +53 -0
- package/src/util/uuid.ts +31 -0
- package/src/util/validate.test.ts +309 -0
- package/src/util/validate.ts +230 -0
- package/.vscode/extensions.json +0 -6
- package/.vscode/settings.json +0 -27
- package/src/logging/AbstractLogHandler.js +0 -23
- package/src/logging/Logger.js +0 -115
- package/src/logging/OpenTelemetryLogHandler.js +0 -30
- package/src/logging/SentryLogHandler.js +0 -46
- package/src/logging/util.js +0 -41
- package/src/pagelifecycle/typedef.js +0 -9
- package/src/typecheck/util.js +0 -60
- package/src/util/error.js +0 -33
- package/src/util/event_emitter.js +0 -196
- package/src/util/number.js +0 -118
- package/src/util/query.js +0 -32
- package/src/util/string.js +0 -76
- package/src/util/uuid.js +0 -35
- package/src/util/validate.js +0 -247
- package/types/const/http_status.d.ts +0 -131
- package/types/const/http_status.d.ts.map +0 -1
- package/types/index.d.ts +0 -26
- package/types/index.d.ts.map +0 -1
- package/types/logging/AbstractLogHandler.d.ts +0 -20
- package/types/logging/AbstractLogHandler.d.ts.map +0 -1
- package/types/logging/ConsoleLogHandler.d.ts +0 -9
- package/types/logging/ConsoleLogHandler.d.ts.map +0 -1
- package/types/logging/Logger.d.ts +0 -66
- package/types/logging/Logger.d.ts.map +0 -1
- package/types/logging/OpenTelemetryLogHandler.d.ts +0 -11
- package/types/logging/OpenTelemetryLogHandler.d.ts.map +0 -1
- package/types/logging/SentryLogHandler.d.ts +0 -9
- package/types/logging/SentryLogHandler.d.ts.map +0 -1
- package/types/logging/const.d.ts +0 -14
- package/types/logging/const.d.ts.map +0 -1
- package/types/logging/util.d.ts +0 -4
- package/types/logging/util.d.ts.map +0 -1
- package/types/pagelifecycle/const.d.ts +0 -15
- package/types/pagelifecycle/const.d.ts.map +0 -1
- package/types/pagelifecycle/typedef.d.ts +0 -4
- package/types/pagelifecycle/typedef.d.ts.map +0 -1
- package/types/pagelifecycle/util.d.ts +0 -8
- package/types/pagelifecycle/util.d.ts.map +0 -1
- package/types/typecheck/TypeCheckError.d.ts +0 -13
- package/types/typecheck/TypeCheckError.d.ts.map +0 -1
- package/types/typecheck/TypeChecker.d.ts +0 -40
- package/types/typecheck/TypeChecker.d.ts.map +0 -1
- package/types/typecheck/util.d.ts +0 -4
- package/types/typecheck/util.d.ts.map +0 -1
- package/types/util/async.d.ts +0 -4
- package/types/util/async.d.ts.map +0 -1
- package/types/util/error.d.ts +0 -3
- package/types/util/error.d.ts.map +0 -1
- package/types/util/event_emitter.d.ts +0 -69
- package/types/util/event_emitter.d.ts.map +0 -1
- package/types/util/fetch.d.ts +0 -22
- package/types/util/fetch.d.ts.map +0 -1
- package/types/util/number.d.ts +0 -11
- package/types/util/number.d.ts.map +0 -1
- package/types/util/object.d.ts +0 -6
- package/types/util/object.d.ts.map +0 -1
- package/types/util/query.d.ts +0 -3
- package/types/util/query.d.ts.map +0 -1
- package/types/util/state.d.ts +0 -2
- package/types/util/state.d.ts.map +0 -1
- package/types/util/string.d.ts +0 -7
- package/types/util/string.d.ts.map +0 -1
- package/types/util/uuid.d.ts +0 -4
- package/types/util/uuid.d.ts.map +0 -1
- package/types/util/validate.d.ts +0 -45
- package/types/util/validate.d.ts.map +0 -1
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { addBreadcrumb, captureException, captureMessage } from '@sentry/browser';
|
|
2
|
+
import { AbstractLogHandler } from './AbstractLogHandler.js';
|
|
3
|
+
import { LOG_LEVEL_DEBUG, LOG_LEVEL_WARNING } from './const.js';
|
|
4
|
+
import { getLogLevelName } from './util.js';
|
|
5
|
+
export class SentryLogHandler extends AbstractLogHandler {
|
|
6
|
+
/**
|
|
7
|
+
* Sentry log handler.
|
|
8
|
+
*/
|
|
9
|
+
constructor(level = LOG_LEVEL_DEBUG) {
|
|
10
|
+
super(level);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Emit log record.
|
|
14
|
+
*/
|
|
15
|
+
emit(logger, _timestamp, level, message, extra, error) {
|
|
16
|
+
const levelName = getLogLevelName(level);
|
|
17
|
+
const logMessage = `[${logger.name}] ${message}`;
|
|
18
|
+
const breadcrumb = {
|
|
19
|
+
type: 'default',
|
|
20
|
+
category: 'console',
|
|
21
|
+
message: logMessage,
|
|
22
|
+
level: levelName,
|
|
23
|
+
data: extra ?? undefined,
|
|
24
|
+
};
|
|
25
|
+
addBreadcrumb(breadcrumb);
|
|
26
|
+
if (error) {
|
|
27
|
+
extra?.tags ? captureException(error, { tags: extra.tags }) : captureException(error);
|
|
28
|
+
}
|
|
29
|
+
else if (level === LOG_LEVEL_WARNING) {
|
|
30
|
+
extra?.tags
|
|
31
|
+
? captureMessage(logMessage, { level: 'warning', tags: extra.tags })
|
|
32
|
+
: captureMessage(logMessage, { level: 'warning' });
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=SentryLogHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SentryLogHandler.js","sourceRoot":"","sources":["../../src/logging/SentryLogHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAsB,MAAM,iBAAiB,CAAC;AACtG,OAAO,EAAE,kBAAkB,EAAiB,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,MAAM,OAAO,gBAAiB,SAAQ,kBAAkB;IACtD;;OAEG;IACH,YAAY,QAAgB,eAAe;QACzC,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAED;;OAEG;IACM,IAAI,CACX,MAAc,EACd,UAAkB,EAClB,KAAa,EACb,OAAe,EACf,KAAkC,EAClC,KAA+B;QAE/B,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAkB,CAAC;QAC1D,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACjD,MAAM,UAAU,GAAG;YACjB,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,UAAU;YACnB,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,KAAK,IAAI,SAAS;SACzB,CAAC;QACF,aAAa,CAAC,UAAU,CAAC,CAAC;QAC1B,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACxF,CAAC;aAAM,IAAI,KAAK,KAAK,iBAAiB,EAAE,CAAC;YACvC,KAAK,EAAE,IAAI;gBACT,CAAC,CAAC,cAAc,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;gBACpE,CAAC,CAAC,cAAc,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const LOG_LEVEL_SILENT = 0;
|
|
2
|
+
export declare const LOG_LEVEL_FATAL = 1;
|
|
3
|
+
export declare const LOG_LEVEL_ERROR = 2;
|
|
4
|
+
export declare const LOG_LEVEL_WARNING = 3;
|
|
5
|
+
export declare const LOG_LEVEL_INFO = 4;
|
|
6
|
+
export declare const LOG_LEVEL_DEBUG = 5;
|
|
7
|
+
export declare const LOG_LEVEL_NAME_SILENT = "silent";
|
|
8
|
+
export declare const LOG_LEVEL_NAME_FATAL = "fatal";
|
|
9
|
+
export declare const LOG_LEVEL_NAME_ERROR = "error";
|
|
10
|
+
export declare const LOG_LEVEL_NAME_WARNING = "warning";
|
|
11
|
+
export declare const LOG_LEVEL_NAME_INFO = "info";
|
|
12
|
+
export declare const LOG_LEVEL_NAME_DEBUG = "debug";
|
|
13
|
+
export declare const LOG_LEVEL_NAMES: readonly string[];
|
|
14
|
+
//# sourceMappingURL=const.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../src/logging/const.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,eAAO,MAAM,iBAAiB,IAAI,CAAC;AACnC,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC,eAAO,MAAM,qBAAqB,WAAW,CAAC;AAC9C,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAC5C,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAC5C,eAAO,MAAM,sBAAsB,YAAY,CAAC;AAChD,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAC1C,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAE5C,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAO5C,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export const LOG_LEVEL_SILENT = 0;
|
|
2
|
+
export const LOG_LEVEL_FATAL = 1;
|
|
3
|
+
export const LOG_LEVEL_ERROR = 2;
|
|
4
|
+
export const LOG_LEVEL_WARNING = 3;
|
|
5
|
+
export const LOG_LEVEL_INFO = 4;
|
|
6
|
+
export const LOG_LEVEL_DEBUG = 5;
|
|
7
|
+
export const LOG_LEVEL_NAME_SILENT = 'silent';
|
|
8
|
+
export const LOG_LEVEL_NAME_FATAL = 'fatal';
|
|
9
|
+
export const LOG_LEVEL_NAME_ERROR = 'error';
|
|
10
|
+
export const LOG_LEVEL_NAME_WARNING = 'warning';
|
|
11
|
+
export const LOG_LEVEL_NAME_INFO = 'info';
|
|
12
|
+
export const LOG_LEVEL_NAME_DEBUG = 'debug';
|
|
13
|
+
export const LOG_LEVEL_NAMES = [
|
|
14
|
+
LOG_LEVEL_NAME_SILENT,
|
|
15
|
+
LOG_LEVEL_NAME_FATAL,
|
|
16
|
+
LOG_LEVEL_NAME_ERROR,
|
|
17
|
+
LOG_LEVEL_NAME_WARNING,
|
|
18
|
+
LOG_LEVEL_NAME_INFO,
|
|
19
|
+
LOG_LEVEL_NAME_DEBUG,
|
|
20
|
+
];
|
|
21
|
+
//# sourceMappingURL=const.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"const.js","sourceRoot":"","sources":["../../src/logging/const.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAClC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AACjC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AACjC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AACnC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAChC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AAEjC,MAAM,CAAC,MAAM,qBAAqB,GAAG,QAAQ,CAAC;AAC9C,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAC5C,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAC5C,MAAM,CAAC,MAAM,sBAAsB,GAAG,SAAS,CAAC;AAChD,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAC1C,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAE5C,MAAM,CAAC,MAAM,eAAe,GAAsB;IAChD,qBAAqB;IACrB,oBAAoB;IACpB,oBAAoB;IACpB,sBAAsB;IACtB,mBAAmB;IACnB,oBAAoB;CACrB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Logger } from './Logger.js';
|
|
2
|
+
/**
|
|
3
|
+
* Format log message.
|
|
4
|
+
*/
|
|
5
|
+
export declare const formatLogMessage: (logger: Logger, timestamp: number, _level: number, message: string) => string;
|
|
6
|
+
/**
|
|
7
|
+
* Get log level name.
|
|
8
|
+
*/
|
|
9
|
+
export declare const getLogLevelName: (level: number) => string | undefined;
|
|
10
|
+
/**
|
|
11
|
+
* Returns the application environment identifier.
|
|
12
|
+
*/
|
|
13
|
+
export declare const getAppEnvironment: () => string;
|
|
14
|
+
//# sourceMappingURL=util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/logging/util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,EAAE,WAAW,MAAM,EAAE,QAAQ,MAAM,EAAE,SAAS,MAAM,KAAG,MAC1D,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,KAAG,MAAM,GAAG,SAAmC,CAAC;AAE7F;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAAO,MAkBpC,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { LOG_LEVEL_NAMES } from './const.js';
|
|
2
|
+
/**
|
|
3
|
+
* Format log message.
|
|
4
|
+
*/
|
|
5
|
+
export const formatLogMessage = (logger, timestamp, _level, message) => `${timestamp} [${logger.name}] ${message}`;
|
|
6
|
+
/**
|
|
7
|
+
* Get log level name.
|
|
8
|
+
*/
|
|
9
|
+
export const getLogLevelName = (level) => LOG_LEVEL_NAMES[level];
|
|
10
|
+
/**
|
|
11
|
+
* Returns the application environment identifier.
|
|
12
|
+
*/
|
|
13
|
+
export const getAppEnvironment = () => {
|
|
14
|
+
let appEnvironment = 'local';
|
|
15
|
+
try {
|
|
16
|
+
const { env } = import.meta;
|
|
17
|
+
if (env?.['VITE_APP_ENVIRONMENT']) {
|
|
18
|
+
appEnvironment = env['VITE_APP_ENVIRONMENT'];
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
// pass
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
if (process.env['APP_ENVIRONMENT']) {
|
|
26
|
+
appEnvironment = process.env['APP_ENVIRONMENT'];
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
// pass
|
|
31
|
+
}
|
|
32
|
+
return appEnvironment;
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/logging/util.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAE,SAAiB,EAAE,MAAc,EAAE,OAAe,EAAU,EAAE,CAC7G,GAAG,SAAS,KAAK,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;AAE7C;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAa,EAAsB,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AAE7F;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAW,EAAE;IAC5C,IAAI,cAAc,GAAG,OAAO,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,IAA+D,CAAC;QACvF,IAAI,GAAG,EAAE,CAAC,sBAAsB,CAAC,EAAE,CAAC;YAClC,cAAc,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IACD,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACnC,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const PAGE_LIFECYCLE_STATE_HIDDEN = "hidden";
|
|
2
|
+
export declare const PAGE_LIFECYCLE_STATE_ACTIVE = "active";
|
|
3
|
+
export declare const PAGE_LIFECYCLE_STATE_PASSIVE = "passive";
|
|
4
|
+
export declare const PAGE_LIFECYCLE_STATE_FROZEN = "frozen";
|
|
5
|
+
export declare const PAGE_LIFECYCLE_STATE_TERMINATED = "terminated";
|
|
6
|
+
export declare const PAGE_LIFECYCLE_STATES: ReadonlySet<string>;
|
|
7
|
+
export declare const DOCUMENT_STATE_DOM_LOADED = "domLoaded";
|
|
8
|
+
export declare const DOCUMENT_STATE_FULLY_LOADED = "fullyLoaded";
|
|
9
|
+
export declare const DOCUMENT_STATE_COMPLETE = "complete";
|
|
10
|
+
export declare const DOCUMENT_STATE_INTERACTIVE = "interactive";
|
|
11
|
+
export declare const DOCUMENT_STATE_LOADING = "loading";
|
|
12
|
+
export declare const DOCUMENT_STATES: ReadonlySet<string>;
|
|
13
|
+
export declare const PAGE_LIFECYCLE_STATE_CHANGE_EVENT = "pageLifecycleStateChange";
|
|
14
|
+
export declare const DOCUMENT_STATE_CHANGE_EVENT = "documentStateChange";
|
|
15
|
+
//# sourceMappingURL=const.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../src/pagelifecycle/const.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,2BAA2B,WAAW,CAAC;AACpD,eAAO,MAAM,2BAA2B,WAAW,CAAC;AACpD,eAAO,MAAM,4BAA4B,YAAY,CAAC;AACtD,eAAO,MAAM,2BAA2B,WAAW,CAAC;AACpD,eAAO,MAAM,+BAA+B,eAAe,CAAC;AAE5D,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAMpD,CAAC;AAEH,eAAO,MAAM,yBAAyB,cAAc,CAAC;AACrD,eAAO,MAAM,2BAA2B,gBAAgB,CAAC;AACzD,eAAO,MAAM,uBAAuB,aAAa,CAAC;AAClD,eAAO,MAAM,0BAA0B,gBAAgB,CAAC;AACxD,eAAO,MAAM,sBAAsB,YAAY,CAAC;AAEhD,eAAO,MAAM,eAAe,EAAE,WAAW,CAAC,MAAM,CAM9C,CAAC;AAEH,eAAO,MAAM,iCAAiC,6BAA6B,CAAC;AAC5E,eAAO,MAAM,2BAA2B,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typedef.d.ts","sourceRoot":"","sources":["../../src/pagelifecycle/typedef.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,OAAO,CAAC;AAE5B,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE3F,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,WAAW,GAAG,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typedef.js","sourceRoot":"","sources":["../../src/pagelifecycle/typedef.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Page lifecycle helper.
|
|
3
|
+
* @see https://developer.chrome.com/docs/web-platform/page-lifecycle-api
|
|
4
|
+
*/
|
|
5
|
+
import { EventEmitter } from '../util/event_emitter.js';
|
|
6
|
+
import type { DocumentState, PageLifecycleState } from './typedef.js';
|
|
7
|
+
/**
|
|
8
|
+
* Initialize page lifecycle observer.
|
|
9
|
+
*/
|
|
10
|
+
export declare const initPageLifecycle: () => void;
|
|
11
|
+
/**
|
|
12
|
+
* Returns the current page lifecycle state.
|
|
13
|
+
*/
|
|
14
|
+
export declare const getPageLifecycleState: () => PageLifecycleState | null | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* Returns the current document state.
|
|
17
|
+
*/
|
|
18
|
+
export declare const getDocumentState: () => DocumentState | null | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* Returns the event emitter instance.
|
|
21
|
+
*/
|
|
22
|
+
export declare const getPageLifecycleEventEmitter: () => EventEmitter;
|
|
23
|
+
/**
|
|
24
|
+
* Returns the page lifecycle observer initialized state.
|
|
25
|
+
*/
|
|
26
|
+
export declare const isPageLifecycleInitialized: () => boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Add callback for a specific state change.
|
|
29
|
+
*/
|
|
30
|
+
export declare const addPageLifecycleCallback: (state: DocumentState | PageLifecycleState, callback: () => void) => void;
|
|
31
|
+
//# sourceMappingURL=util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/pagelifecycle/util.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAYxD,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAqEtE;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAAO,IAwBpC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,QAAO,kBAAkB,GAAG,IAAI,GAAG,SAAsC,CAAC;AAE5G;;GAEG;AACH,eAAO,MAAM,gBAAgB,QAAO,aAAa,GAAG,IAAI,GAAG,SAAiC,CAAC;AAE7F;;GAEG;AACH,eAAO,MAAM,4BAA4B,QAAO,YAK/C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,QAAO,OAAwB,CAAC;AAEvE;;GAEG;AACH,eAAO,MAAM,wBAAwB,GAAI,OAAO,aAAa,GAAG,kBAAkB,EAAE,UAAU,MAAM,IAAI,KAAG,IAI1G,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/pagelifecycle/util.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface TypeCheckErrorOptions extends ErrorOptions {
|
|
2
|
+
value?: unknown;
|
|
3
|
+
}
|
|
4
|
+
export declare class TypeCheckError extends TypeError {
|
|
5
|
+
value: unknown;
|
|
6
|
+
/**
|
|
7
|
+
* Creates a new `TypeCheckError` instance.
|
|
8
|
+
*/
|
|
9
|
+
constructor(message: string, options?: TypeCheckErrorOptions);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=TypeCheckError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypeCheckError.d.ts","sourceRoot":"","sources":["../../src/typecheck/TypeCheckError.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAsB,SAAQ,YAAY;IACzD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,qBAAa,cAAe,SAAQ,SAAS;IAC3C,KAAK,EAAE,OAAO,CAAC;IAEf;;OAEG;gBACS,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB;CAK7D"}
|
|
@@ -0,0 +1,12 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type EnumChoices } from './util.js';
|
|
2
|
+
declare class TypeChecker {
|
|
3
|
+
#private;
|
|
4
|
+
constructor();
|
|
5
|
+
/**
|
|
6
|
+
* Enable or disable swallowing of TypeCheckErrors.
|
|
7
|
+
*/
|
|
8
|
+
setSwallowErrors(value: boolean): void;
|
|
9
|
+
/**
|
|
10
|
+
* Type check a single value.
|
|
11
|
+
*/
|
|
12
|
+
check<T>(value: unknown, validator: (value: unknown) => value is T): T;
|
|
13
|
+
/**
|
|
14
|
+
* Type check an array of values.
|
|
15
|
+
*/
|
|
16
|
+
checkArray<T>(value: unknown[], validator: (value: unknown) => value is T): T[];
|
|
17
|
+
/**
|
|
18
|
+
* Type check an enum.
|
|
19
|
+
*/
|
|
20
|
+
checkEnum(value: string | number, choices: EnumChoices): string | number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Export a single shared instance.
|
|
24
|
+
*/
|
|
25
|
+
export declare const typeChecker: TypeChecker;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=TypeChecker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TypeChecker.d.ts","sourceRoot":"","sources":["../../src/typecheck/TypeChecker.ts"],"names":[],"mappings":"AAEA,OAAO,EAA4C,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAIvF,cAAM,WAAW;;;IAWf;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAItC;;OAEG;IACH,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC;IAYtE;;OAEG;IACH,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE;IAY/E;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM;CAWzE;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,aAAoB,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type EnumChoices = ReadonlyArray<string | number> | ReadonlySet<string | number> | Readonly<Record<string | number, string | number>>;
|
|
2
|
+
/**
|
|
3
|
+
* Type check a value using a validator.
|
|
4
|
+
* @throws {TypeCheckError}
|
|
5
|
+
*/
|
|
6
|
+
export declare const typeCheck: <T>(value: unknown, validator: (value: unknown) => value is T) => T;
|
|
7
|
+
/**
|
|
8
|
+
* Type check an array of values using a validator.
|
|
9
|
+
* @throws {TypeCheckError}
|
|
10
|
+
*/
|
|
11
|
+
export declare const typeCheckArray: <T>(value: unknown[], validator: (value: unknown) => value is T) => T[];
|
|
12
|
+
/**
|
|
13
|
+
* Type check an enum.
|
|
14
|
+
* @throws {TypeCheckError}
|
|
15
|
+
*/
|
|
16
|
+
export declare const typeCheckEnum: (value: string | number, choices: EnumChoices) => string | number;
|
|
17
|
+
//# sourceMappingURL=util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/typecheck/util.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,WAAW,GACnB,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,GAC9B,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,GAC5B,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;AAWvD;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,OAAO,OAAO,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,KAAG,CAKxF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,EAAE,OAAO,OAAO,EAAE,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,KAAG,CAAC,EAKhG,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,GAAG,MAAM,EAAE,SAAS,WAAW,KAAG,MAAM,GAAG,MAKrF,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns a promise with delayed resolve.
|
|
3
|
+
*/
|
|
4
|
+
export declare const delayPromise: (delayMS: number) => Promise<void>;
|
|
5
|
+
/**
|
|
6
|
+
* Async method call retry helper.
|
|
7
|
+
*/
|
|
8
|
+
export declare const retryAsync: <T>(method: () => Promise<T>, numTries?: number, delayMs?: number) => Promise<T>;
|
|
9
|
+
/**
|
|
10
|
+
* Load JSON file using a fetch GET request.
|
|
11
|
+
*/
|
|
12
|
+
export declare const loadJSON: (url: string) => Promise<unknown>;
|
|
13
|
+
//# sourceMappingURL=async.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async.d.ts","sourceRoot":"","sources":["../../src/util/async.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,SAAS,MAAM,KAAG,OAAO,CAAC,IAAI,CAGvD,CAAC;AAEL;;GAEG;AACH,eAAO,MAAM,UAAU,GAAU,CAAC,EAAE,QAAQ,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,iBAAY,EAAE,gBAAa,KAAG,OAAO,CAAC,CAAC,CAgBpG,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAU,KAAK,MAAM,KAAG,OAAO,CAAC,OAAO,CAM3D,CAAC"}
|