@vpmedia/simplify 1.74.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 +75 -0
- package/dist/const/http_status.d.ts +66 -0
- package/dist/const/http_status.d.ts.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1119 -0
- 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/ConsoleLogHandler.d.ts +13 -0
- package/dist/logging/ConsoleLogHandler.d.ts.map +1 -0
- package/dist/logging/Logger.d.ts +19 -0
- package/dist/logging/Logger.d.ts.map +1 -0
- package/dist/logging/OpenTelemetryLogHandler.d.ts +15 -0
- package/dist/logging/OpenTelemetryLogHandler.d.ts.map +1 -0
- package/dist/logging/SentryLogHandler.d.ts +13 -0
- package/dist/logging/SentryLogHandler.d.ts.map +1 -0
- package/dist/logging/const.d.ts +14 -0
- package/dist/logging/const.d.ts.map +1 -0
- package/dist/logging/util.d.ts +14 -0
- package/dist/logging/util.d.ts.map +1 -0
- package/dist/pagelifecycle/const.d.ts +15 -0
- package/dist/pagelifecycle/const.d.ts.map +1 -0
- package/dist/pagelifecycle/typedef.d.ts +4 -0
- package/dist/pagelifecycle/typedef.d.ts.map +1 -0
- package/dist/pagelifecycle/util.d.ts +31 -0
- package/dist/pagelifecycle/util.d.ts.map +1 -0
- package/dist/typecheck/TypeCheckError.d.ts +11 -0
- package/dist/typecheck/TypeCheckError.d.ts.map +1 -0
- package/dist/typecheck/TypeChecker.d.ts +27 -0
- package/dist/typecheck/TypeChecker.d.ts.map +1 -0
- package/dist/typecheck/util.d.ts +17 -0
- package/dist/typecheck/util.d.ts.map +1 -0
- package/dist/util/async.d.ts +13 -0
- package/dist/util/async.d.ts.map +1 -0
- package/dist/util/error.d.ts +16 -0
- package/dist/util/error.d.ts.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/fetch.d.ts +22 -0
- package/dist/util/fetch.d.ts.map +1 -0
- package/dist/util/number.d.ts +23 -0
- package/dist/util/number.d.ts.map +1 -0
- package/dist/util/object.d.ts +24 -0
- package/dist/util/object.d.ts.map +1 -0
- package/dist/util/query.d.ts +11 -0
- package/dist/util/query.d.ts.map +1 -0
- package/dist/util/state.d.ts +5 -0
- package/dist/util/state.d.ts.map +1 -0
- package/dist/util/string.d.ts +25 -0
- package/dist/util/string.d.ts.map +1 -0
- package/dist/util/uuid.d.ts +13 -0
- package/dist/util/uuid.d.ts.map +1 -0
- package/dist/util/validate.d.ts +106 -0
- package/dist/util/validate.d.ts.map +1 -0
- package/package.json +32 -16
- package/src/const/http_status.test.ts +7 -0
- package/src/const/{http_status.js → http_status.ts} +1 -1
- package/src/{index.js → index.ts} +8 -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 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["#events","#addListener","logger","logger","#instance","#swallowErrors"],"sources":["../src/const/http_status.ts","../src/logging/AbstractLogHandler.ts","../src/logging/const.ts","../src/logging/util.ts","../src/logging/ConsoleLogHandler.ts","../src/util/query.ts","../src/logging/Logger.ts","../src/logging/OpenTelemetryLogHandler.ts","../src/logging/SentryLogHandler.ts","../src/pagelifecycle/const.ts","../src/pagelifecycle/typedef.ts","../src/util/event_emitter.ts","../src/pagelifecycle/util.ts","../src/typecheck/TypeCheckError.ts","../src/util/string.ts","../src/util/number.ts","../src/util/validate.ts","../src/typecheck/util.ts","../src/typecheck/TypeChecker.ts","../src/util/error.ts","../src/util/async.ts","../src/util/fetch.ts","../src/util/object.ts","../src/util/state.ts","../src/util/uuid.ts"],"sourcesContent":["// @see https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml\n// @see https://www.rfc-editor.org/rfc/rfc9110\n\nexport const HTTP_100_CONTINUE = 100;\nexport const HTTP_101_SWITCHING_PROTOCOLS = 101;\nexport const HTTP_102_PROCESSING = 102;\nexport const HTTP_103_EARLY_HINTS = 103;\nexport const HTTP_200_OK = 200;\nexport const HTTP_201_CREATED = 201;\nexport const HTTP_202_ACCEPTED = 202;\nexport const HTTP_203_NON_AUTHORITATIVE_INFORMATION = 203;\nexport const HTTP_204_NO_CONTENT = 204;\nexport const HTTP_205_RESET_CONTENT = 205;\nexport const HTTP_206_PARTIAL_CONTENT = 206;\nexport const HTTP_207_MULTI_STATUS = 207;\nexport const HTTP_208_ALREADY_REPORTED = 208;\nexport const HTTP_226_IM_USED = 226;\nexport const HTTP_300_MULTIPLE_CHOICES = 300;\nexport const HTTP_301_MOVED_PERMANENTLY = 301;\nexport const HTTP_302_FOUND = 302;\nexport const HTTP_303_SEE_OTHER = 303;\nexport const HTTP_304_NOT_MODIFIED = 304;\nexport const HTTP_305_USE_PROXY = 305;\nexport const HTTP_306_RESERVED = 306;\nexport const HTTP_307_TEMPORARY_REDIRECT = 307;\nexport const HTTP_308_PERMANENT_REDIRECT = 308;\nexport const HTTP_400_BAD_REQUEST = 400;\nexport const HTTP_401_UNAUTHORIZED = 401;\nexport const HTTP_402_PAYMENT_REQUIRED = 402;\nexport const HTTP_403_FORBIDDEN = 403;\nexport const HTTP_404_NOT_FOUND = 404;\nexport const HTTP_405_METHOD_NOT_ALLOWED = 405;\nexport const HTTP_406_NOT_ACCEPTABLE = 406;\nexport const HTTP_407_PROXY_AUTHENTICATION_REQUIRED = 407;\nexport const HTTP_408_REQUEST_TIMEOUT = 408;\nexport const HTTP_409_CONFLICT = 409;\nexport const HTTP_410_GONE = 410;\nexport const HTTP_411_LENGTH_REQUIRED = 411;\nexport const HTTP_412_PRECONDITION_FAILED = 412;\nexport const HTTP_413_CONTENT_TOO_LARGE = 413;\nexport const HTTP_414_URI_TOO_LONG = 414;\nexport const HTTP_415_UNSUPPORTED_MEDIA_TYPE = 415;\nexport const HTTP_416_RANGE_NOT_SATISFIABLE = 416;\nexport const HTTP_417_EXPECTATION_FAILED = 417;\nexport const HTTP_418_IM_A_TEAPOT = 418;\nexport const HTTP_421_MISDIRECTED_REQUEST = 421;\nexport const HTTP_422_UNPROCESSABLE_CONTENT = 422;\nexport const HTTP_423_LOCKED = 423;\nexport const HTTP_424_FAILED_DEPENDENCY = 424;\nexport const HTTP_425_TOO_EARLY = 425;\nexport const HTTP_426_UPGRADE_REQUIRED = 426;\nexport const HTTP_428_PRECONDITION_REQUIRED = 428;\nexport const HTTP_429_TOO_MANY_REQUESTS = 429;\nexport const HTTP_431_REQUEST_HEADER_FIELDS_TOO_LARGE = 431;\nexport const HTTP_451_UNAVAILABLE_FOR_LEGAL_REASONS = 451;\nexport const HTTP_499_CLIENT_CLOSED_CONNECTION = 499;\nexport const HTTP_500_INTERNAL_SERVER_ERROR = 500;\nexport const HTTP_501_NOT_IMPLEMENTED = 501;\nexport const HTTP_502_BAD_GATEWAY = 502;\nexport const HTTP_503_SERVICE_UNAVAILABLE = 503;\nexport const HTTP_504_GATEWAY_TIMEOUT = 504;\nexport const HTTP_505_HTTP_VERSION_NOT_SUPPORTED = 505;\nexport const HTTP_506_VARIANT_ALSO_NEGOTIATES = 506;\nexport const HTTP_507_INSUFFICIENT_STORAGE = 507;\nexport const HTTP_508_LOOP_DETECTED = 508;\nexport const HTTP_510_NOT_EXTENDED = 510;\nexport const HTTP_511_NETWORK_AUTHENTICATION_REQUIRED = 511;\n\nexport const HTTP_STATUS_MAP: Record<number, string> = {\n [HTTP_100_CONTINUE]: 'HTTP_100_CONTINUE',\n [HTTP_101_SWITCHING_PROTOCOLS]: 'HTTP_101_SWITCHING_PROTOCOLS',\n [HTTP_102_PROCESSING]: 'HTTP_102_PROCESSING',\n [HTTP_103_EARLY_HINTS]: 'HTTP_103_EARLY_HINTS',\n [HTTP_200_OK]: 'HTTP_200_OK',\n [HTTP_201_CREATED]: 'HTTP_201_CREATED',\n [HTTP_202_ACCEPTED]: 'HTTP_202_ACCEPTED',\n [HTTP_203_NON_AUTHORITATIVE_INFORMATION]: 'HTTP_203_NON_AUTHORITATIVE_INFORMATION',\n [HTTP_204_NO_CONTENT]: 'HTTP_204_NO_CONTENT',\n [HTTP_205_RESET_CONTENT]: 'HTTP_205_RESET_CONTENT',\n [HTTP_206_PARTIAL_CONTENT]: 'HTTP_206_PARTIAL_CONTENT',\n [HTTP_207_MULTI_STATUS]: 'HTTP_207_MULTI_STATUS',\n [HTTP_208_ALREADY_REPORTED]: 'HTTP_208_ALREADY_REPORTED',\n [HTTP_226_IM_USED]: 'HTTP_226_IM_USED',\n [HTTP_300_MULTIPLE_CHOICES]: 'HTTP_300_MULTIPLE_CHOICES',\n [HTTP_301_MOVED_PERMANENTLY]: 'HTTP_301_MOVED_PERMANENTLY',\n [HTTP_302_FOUND]: 'HTTP_302_FOUND',\n [HTTP_303_SEE_OTHER]: 'HTTP_303_SEE_OTHER',\n [HTTP_304_NOT_MODIFIED]: 'HTTP_304_NOT_MODIFIED',\n [HTTP_305_USE_PROXY]: 'HTTP_305_USE_PROXY',\n [HTTP_306_RESERVED]: 'HTTP_306_RESERVED',\n [HTTP_307_TEMPORARY_REDIRECT]: 'HTTP_307_TEMPORARY_REDIRECT',\n [HTTP_308_PERMANENT_REDIRECT]: 'HTTP_308_PERMANENT_REDIRECT',\n [HTTP_400_BAD_REQUEST]: 'HTTP_400_BAD_REQUEST',\n [HTTP_401_UNAUTHORIZED]: 'HTTP_401_UNAUTHORIZED',\n [HTTP_402_PAYMENT_REQUIRED]: 'HTTP_402_PAYMENT_REQUIRED',\n [HTTP_403_FORBIDDEN]: 'HTTP_403_FORBIDDEN',\n [HTTP_404_NOT_FOUND]: 'HTTP_404_NOT_FOUND',\n [HTTP_405_METHOD_NOT_ALLOWED]: 'HTTP_405_METHOD_NOT_ALLOWED',\n [HTTP_406_NOT_ACCEPTABLE]: 'HTTP_406_NOT_ACCEPTABLE',\n [HTTP_407_PROXY_AUTHENTICATION_REQUIRED]: 'HTTP_407_PROXY_AUTHENTICATION_REQUIRED',\n [HTTP_408_REQUEST_TIMEOUT]: 'HTTP_408_REQUEST_TIMEOUT',\n [HTTP_409_CONFLICT]: 'HTTP_409_CONFLICT',\n [HTTP_410_GONE]: 'HTTP_410_GONE',\n [HTTP_411_LENGTH_REQUIRED]: 'HTTP_411_LENGTH_REQUIRED',\n [HTTP_412_PRECONDITION_FAILED]: 'HTTP_412_PRECONDITION_FAILED',\n [HTTP_413_CONTENT_TOO_LARGE]: 'HTTP_413_CONTENT_TOO_LARGE',\n [HTTP_414_URI_TOO_LONG]: 'HTTP_414_URI_TOO_LONG',\n [HTTP_415_UNSUPPORTED_MEDIA_TYPE]: 'HTTP_415_UNSUPPORTED_MEDIA_TYPE',\n [HTTP_416_RANGE_NOT_SATISFIABLE]: 'HTTP_416_RANGE_NOT_SATISFIABLE',\n [HTTP_417_EXPECTATION_FAILED]: 'HTTP_417_EXPECTATION_FAILED',\n [HTTP_418_IM_A_TEAPOT]: 'HTTP_418_IM_A_TEAPOT',\n [HTTP_421_MISDIRECTED_REQUEST]: 'HTTP_421_MISDIRECTED_REQUEST',\n [HTTP_422_UNPROCESSABLE_CONTENT]: 'HTTP_422_UNPROCESSABLE_CONTENT',\n [HTTP_423_LOCKED]: 'HTTP_423_LOCKED',\n [HTTP_424_FAILED_DEPENDENCY]: 'HTTP_424_FAILED_DEPENDENCY',\n [HTTP_425_TOO_EARLY]: 'HTTP_425_TOO_EARLY',\n [HTTP_426_UPGRADE_REQUIRED]: 'HTTP_426_UPGRADE_REQUIRED',\n [HTTP_428_PRECONDITION_REQUIRED]: 'HTTP_428_PRECONDITION_REQUIRED',\n [HTTP_429_TOO_MANY_REQUESTS]: 'HTTP_429_TOO_MANY_REQUESTS',\n [HTTP_431_REQUEST_HEADER_FIELDS_TOO_LARGE]: 'HTTP_431_REQUEST_HEADER_FIELDS_TOO_LARGE',\n [HTTP_451_UNAVAILABLE_FOR_LEGAL_REASONS]: 'HTTP_451_UNAVAILABLE_FOR_LEGAL_REASONS',\n [HTTP_499_CLIENT_CLOSED_CONNECTION]: 'HTTP_499_CLIENT_CLOSED_CONNECTION',\n [HTTP_500_INTERNAL_SERVER_ERROR]: 'HTTP_500_INTERNAL_SERVER_ERROR',\n [HTTP_501_NOT_IMPLEMENTED]: 'HTTP_501_NOT_IMPLEMENTED',\n [HTTP_502_BAD_GATEWAY]: 'HTTP_502_BAD_GATEWAY',\n [HTTP_503_SERVICE_UNAVAILABLE]: 'HTTP_503_SERVICE_UNAVAILABLE',\n [HTTP_504_GATEWAY_TIMEOUT]: 'HTTP_504_GATEWAY_TIMEOUT',\n [HTTP_505_HTTP_VERSION_NOT_SUPPORTED]: 'HTTP_505_HTTP_VERSION_NOT_SUPPORTED',\n [HTTP_506_VARIANT_ALSO_NEGOTIATES]: 'HTTP_506_VARIANT_ALSO_NEGOTIATES',\n [HTTP_507_INSUFFICIENT_STORAGE]: 'HTTP_507_INSUFFICIENT_STORAGE',\n [HTTP_508_LOOP_DETECTED]: 'HTTP_508_LOOP_DETECTED',\n [HTTP_510_NOT_EXTENDED]: 'HTTP_510_NOT_EXTENDED',\n [HTTP_511_NETWORK_AUTHENTICATION_REQUIRED]: 'HTTP_511_NETWORK_AUTHENTICATION_REQUIRED',\n};\n","import type { Logger } from './Logger.js';\n\nexport interface LogExtra {\n tags?: Record<string, string | number | boolean | null | undefined>;\n [key: string]: unknown;\n}\n\nexport class AbstractLogHandler {\n level: number;\n\n /**\n * Abstract log handler.\n */\n constructor(level: number) {\n this.level = level;\n }\n\n /**\n * Emit log record.\n */\n emit(\n _logger: Logger,\n _timestamp: number,\n _level: number,\n _message: string,\n _extra: LogExtra | null | undefined,\n _error: Error | null | undefined\n ): void {\n throw new Error('Not implemented.');\n }\n}\n","export const LOG_LEVEL_SILENT = 0;\nexport const LOG_LEVEL_FATAL = 1;\nexport const LOG_LEVEL_ERROR = 2;\nexport const LOG_LEVEL_WARNING = 3;\nexport const LOG_LEVEL_INFO = 4;\nexport const LOG_LEVEL_DEBUG = 5;\n\nexport const LOG_LEVEL_NAME_SILENT = 'silent';\nexport const LOG_LEVEL_NAME_FATAL = 'fatal';\nexport const LOG_LEVEL_NAME_ERROR = 'error';\nexport const LOG_LEVEL_NAME_WARNING = 'warning';\nexport const LOG_LEVEL_NAME_INFO = 'info';\nexport const LOG_LEVEL_NAME_DEBUG = 'debug';\n\nexport const LOG_LEVEL_NAMES: readonly string[] = [\n LOG_LEVEL_NAME_SILENT,\n LOG_LEVEL_NAME_FATAL,\n LOG_LEVEL_NAME_ERROR,\n LOG_LEVEL_NAME_WARNING,\n LOG_LEVEL_NAME_INFO,\n LOG_LEVEL_NAME_DEBUG,\n];\n","import type { Logger } from './Logger.js';\nimport { LOG_LEVEL_NAMES } from './const.js';\n\n/**\n * Format log message.\n */\nexport const formatLogMessage = (logger: Logger, timestamp: number, _level: number, message: string): string =>\n `${timestamp} [${logger.name}] ${message}`;\n\n/**\n * Get log level name.\n */\nexport const getLogLevelName = (level: number): string | undefined => LOG_LEVEL_NAMES[level];\n\n/**\n * Returns the application environment identifier.\n */\nexport const getAppEnvironment = (): string => {\n let appEnvironment = 'local';\n try {\n const { env } = import.meta as unknown as { env?: Record<string, string | undefined> };\n if (env?.['VITE_APP_ENVIRONMENT']) {\n appEnvironment = env['VITE_APP_ENVIRONMENT'];\n }\n } catch {\n // pass\n }\n try {\n if (process.env['APP_ENVIRONMENT']) {\n appEnvironment = process.env['APP_ENVIRONMENT'];\n }\n } catch {\n // pass\n }\n return appEnvironment;\n};\n","import { AbstractLogHandler, type LogExtra } from './AbstractLogHandler.js';\nimport { LOG_LEVEL_DEBUG } from './const.js';\nimport type { Logger } from './Logger.js';\nimport { formatLogMessage } from './util.js';\n\ntype ConsoleFn = (...data: unknown[]) => void;\n\nconst CONSOLE_FUNCTIONS: ReadonlyArray<ConsoleFn | null> = [\n null, // silent\n console.error, // fatal\n console.error, // error\n console.warn, // warning\n console.info, // info\n console.debug, // debug\n];\n\nexport class ConsoleLogHandler extends AbstractLogHandler {\n /**\n * Console log handler.\n */\n constructor(level: number = LOG_LEVEL_DEBUG) {\n super(level);\n }\n\n /**\n * Emit log record.\n */\n override emit(\n logger: Logger,\n timestamp: number,\n level: number,\n message: string,\n extra: LogExtra | null | undefined,\n error: Error | null | undefined\n ): void {\n if (logger.level < level) {\n return;\n }\n const logMessage = formatLogMessage(logger, timestamp, level, message);\n const consoleFunction = CONSOLE_FUNCTIONS[level];\n if (consoleFunction === null || consoleFunction === undefined) {\n return;\n }\n if (error) {\n extra === undefined ? consoleFunction(logMessage, error) : consoleFunction(logMessage, error, extra);\n if (error.cause) {\n consoleFunction('Error cause', error.cause);\n }\n return;\n }\n extra === undefined ? consoleFunction(logMessage) : consoleFunction(logMessage, extra);\n }\n}\n","const urlSearchParams = new URLSearchParams(globalThis.location?.search);\n\n/**\n * Sanitizes URL parameters allowing only alpha-numeric characters and dash.\n */\nexport function sanitizeURLParam(input: string): string;\nexport function sanitizeURLParam(input: null | undefined): null | undefined;\nexport function sanitizeURLParam(input: string | null | undefined): string | null | undefined;\nexport function sanitizeURLParam(input: string | null | undefined): string | null | undefined {\n if (!input) {\n return input;\n }\n return input.replaceAll(/[^\\w-]/giu, '');\n}\n\n/**\n * Get a URL parameter value.\n */\nexport function getURLParam<T = null>(\n key: string | null | undefined,\n defaultValue?: T,\n isSanitize?: boolean\n): string | T {\n if (!key) {\n return (defaultValue ?? null) as T;\n }\n const paramValue = urlSearchParams.get(key);\n if (paramValue === null || paramValue === undefined) {\n return (defaultValue ?? null) as T;\n }\n if (isSanitize !== false) {\n return sanitizeURLParam(paramValue) as string;\n }\n return paramValue;\n}\n","import { getURLParam } from '../util/query.js';\nimport type { AbstractLogHandler, LogExtra } from './AbstractLogHandler.js';\nimport {\n LOG_LEVEL_DEBUG,\n LOG_LEVEL_ERROR,\n LOG_LEVEL_FATAL,\n LOG_LEVEL_INFO,\n LOG_LEVEL_SILENT,\n LOG_LEVEL_WARNING,\n} from './const.js';\nimport { getAppEnvironment } from './util.js';\n\nconst ROOT_LOGGER_NAME = 'root';\n\nexport class Logger {\n static handlers: AbstractLogHandler[] = [];\n\n name: string;\n level: number;\n\n /**\n * Creates a new Logger instance.\n */\n constructor(name: string = ROOT_LOGGER_NAME) {\n this.name = name ?? ROOT_LOGGER_NAME;\n const appEnvironment = getAppEnvironment();\n const isProduction = appEnvironment === 'production' || appEnvironment === 'release';\n const defaultLevel = isProduction ? LOG_LEVEL_SILENT : LOG_LEVEL_DEBUG;\n const parameterName = `log_${this.name.toLowerCase()}`;\n const paramLevel =\n getURLParam(parameterName, getURLParam('log_all', defaultLevel.toString())) ?? defaultLevel.toString();\n this.level = Number.parseInt(paramLevel, 10);\n }\n\n static addHandler = (handler: AbstractLogHandler): void => {\n Logger.handlers.push(handler);\n };\n\n static emit = (\n logger: Logger,\n level: number,\n message: string,\n extra?: LogExtra | null,\n error?: Error | null\n ): void => {\n const timestamp = Date.now();\n for (const handler of Logger.handlers) {\n if (handler.level >= level) {\n handler.emit(logger, timestamp, level, message, extra, error);\n }\n }\n };\n\n debug(message: string, extra?: LogExtra | null): void {\n Logger.emit(this, LOG_LEVEL_DEBUG, message, extra);\n }\n\n info(message: string, extra?: LogExtra | null): void {\n Logger.emit(this, LOG_LEVEL_INFO, message, extra);\n }\n\n warn(message: string, extra?: LogExtra | null): void {\n Logger.emit(this, LOG_LEVEL_WARNING, message, extra);\n }\n\n warning(message: string, extra?: LogExtra | null): void {\n Logger.emit(this, LOG_LEVEL_WARNING, message, extra);\n }\n\n error(message: string, extra?: LogExtra | null): void {\n Logger.emit(this, LOG_LEVEL_ERROR, message, extra);\n }\n\n exception(message: string, error: Error, extra?: LogExtra | null): void {\n Logger.emit(this, LOG_LEVEL_FATAL, message, extra, error);\n }\n}\n","import { AbstractLogHandler, type LogExtra } from './AbstractLogHandler.js';\nimport type { Logger } from './Logger.js';\n\nexport type OpenTelemetryLogEmitter = (\n logger: Logger,\n timestamp: number,\n level: number,\n message: string,\n extra: LogExtra | null | undefined,\n error: Error | null | undefined\n) => void;\n\nexport class OpenTelemetryLogHandler extends AbstractLogHandler {\n emitter: OpenTelemetryLogEmitter;\n\n /**\n * Open Telemetry log handler.\n */\n constructor(level: number, emitter: OpenTelemetryLogEmitter) {\n super(level);\n this.emitter = emitter;\n }\n\n /**\n * Emit log record.\n */\n override emit(\n logger: Logger,\n timestamp: number,\n level: number,\n message: string,\n extra: LogExtra | null | undefined,\n error: Error | null | undefined\n ): void {\n if (!this.emitter) {\n return;\n }\n this.emitter(logger, timestamp, level, message, extra, error);\n }\n}\n","import { addBreadcrumb, captureException, captureMessage, type SeverityLevel } from '@sentry/browser';\nimport { AbstractLogHandler, type LogExtra } from './AbstractLogHandler.js';\nimport { LOG_LEVEL_DEBUG, LOG_LEVEL_WARNING } from './const.js';\nimport type { Logger } from './Logger.js';\nimport { getLogLevelName } from './util.js';\n\nexport class SentryLogHandler extends AbstractLogHandler {\n /**\n * Sentry log handler.\n */\n constructor(level: number = LOG_LEVEL_DEBUG) {\n super(level);\n }\n\n /**\n * Emit log record.\n */\n override emit(\n logger: Logger,\n _timestamp: number,\n level: number,\n message: string,\n extra: LogExtra | null | undefined,\n error: Error | null | undefined\n ): void {\n const levelName = getLogLevelName(level) as SeverityLevel;\n const logMessage = `[${logger.name}] ${message}`;\n const breadcrumb = {\n type: 'default',\n category: 'console',\n message: logMessage,\n level: levelName,\n data: extra ?? undefined,\n };\n addBreadcrumb(breadcrumb);\n if (error) {\n extra?.tags ? captureException(error, { tags: extra.tags }) : captureException(error);\n } else if (level === LOG_LEVEL_WARNING) {\n extra?.tags\n ? captureMessage(logMessage, { level: 'warning', tags: extra.tags })\n : captureMessage(logMessage, { level: 'warning' });\n }\n }\n}\n","export const PAGE_LIFECYCLE_STATE_HIDDEN = 'hidden';\nexport const PAGE_LIFECYCLE_STATE_ACTIVE = 'active';\nexport const PAGE_LIFECYCLE_STATE_PASSIVE = 'passive';\nexport const PAGE_LIFECYCLE_STATE_FROZEN = 'frozen';\nexport const PAGE_LIFECYCLE_STATE_TERMINATED = 'terminated';\n\nexport const PAGE_LIFECYCLE_STATES: ReadonlySet<string> = new Set([\n PAGE_LIFECYCLE_STATE_ACTIVE,\n PAGE_LIFECYCLE_STATE_FROZEN,\n PAGE_LIFECYCLE_STATE_HIDDEN,\n PAGE_LIFECYCLE_STATE_PASSIVE,\n PAGE_LIFECYCLE_STATE_TERMINATED,\n]);\n\nexport const DOCUMENT_STATE_DOM_LOADED = 'domLoaded';\nexport const DOCUMENT_STATE_FULLY_LOADED = 'fullyLoaded';\nexport const DOCUMENT_STATE_COMPLETE = 'complete';\nexport const DOCUMENT_STATE_INTERACTIVE = 'interactive';\nexport const DOCUMENT_STATE_LOADING = 'loading';\n\nexport const DOCUMENT_STATES: ReadonlySet<string> = new Set([\n DOCUMENT_STATE_COMPLETE,\n DOCUMENT_STATE_DOM_LOADED,\n DOCUMENT_STATE_FULLY_LOADED,\n DOCUMENT_STATE_INTERACTIVE,\n DOCUMENT_STATE_LOADING,\n]);\n\nexport const PAGE_LIFECYCLE_STATE_CHANGE_EVENT = 'pageLifecycleStateChange';\nexport const DOCUMENT_STATE_CHANGE_EVENT = 'documentStateChange';\n","export const TYPEDEF = true;\n\nexport type PageLifecycleState = 'hidden' | 'active' | 'passive' | 'frozen' | 'terminated';\n\nexport type DocumentState = 'loading' | 'interactive' | 'complete' | 'domLoaded' | 'fullyLoaded';\n","export type EventListener = (...args: any[]) => void;\n\n/**\n * Internal listener wrapper that stores metadata\n * about a registered event listener.\n */\nclass Listener {\n fn: EventListener;\n context: unknown;\n once: boolean;\n\n constructor(fn: EventListener, context: unknown, once = false) {\n this.fn = fn;\n this.context = context;\n this.once = once;\n }\n}\n\n/**\n * Event emitter implementation inspired by Node.js/EventEmitter3.\n */\nexport class EventEmitter {\n #events: Map<string | symbol, Listener[]>;\n\n constructor() {\n this.#events = new Map();\n }\n\n /**\n * Get all registered event names.\n */\n eventNames(): (string | symbol)[] {\n return [...this.#events.keys()];\n }\n\n /**\n * Get all listener functions registered for an event.\n */\n listeners(event: string | symbol): EventListener[] {\n const listeners = this.#events.get(event);\n return listeners ? listeners.map((l) => l.fn) : [];\n }\n\n /**\n * Get the number of listeners registered for an event.\n */\n listenerCount(event: string | symbol): number {\n const listeners = this.#events.get(event);\n return listeners ? listeners.length : 0;\n }\n\n /**\n * Emit an event, invoking all registered listeners.\n */\n emit(event: string | symbol, ...args: unknown[]): boolean {\n const listeners = this.#events.get(event);\n if (!listeners || listeners.length === 0) {\n return false;\n }\n\n for (const listener of [...listeners]) {\n listener.fn.apply(listener.context, args);\n if (listener.once) {\n this.off(event, listener.fn, listener.context);\n }\n }\n\n return true;\n }\n\n #addListener(event: string | symbol, fn: EventListener, context: unknown, once: boolean): this {\n if (typeof fn !== 'function') {\n throw new TypeError('Listener must be a function');\n }\n\n const listener = new Listener(fn, context ?? this, once);\n const listeners = this.#events.get(event);\n\n if (listeners) {\n listeners.push(listener);\n } else {\n this.#events.set(event, [listener]);\n }\n\n return this;\n }\n\n /**\n * Register a persistent listener for an event.\n */\n on(event: string | symbol, fn: EventListener, context?: unknown): this {\n return this.#addListener(event, fn, context, false);\n }\n\n /**\n * Register a one-time listener for an event.\n */\n once(event: string | symbol, fn: EventListener, context?: unknown): this {\n return this.#addListener(event, fn, context, true);\n }\n\n /**\n * Remove a specific listener, or all listeners for an event.\n */\n off(event: string | symbol, fn?: EventListener, context?: unknown): this {\n if (!this.#events.has(event)) {\n return this;\n }\n\n if (!fn) {\n this.#events.delete(event);\n return this;\n }\n\n const filtered = this.#events.get(event)!.filter((listener) => {\n if (listener.fn !== fn) {\n return true;\n }\n if (context !== undefined && listener.context !== context) {\n return true;\n }\n return false;\n });\n\n if (filtered.length > 0) {\n this.#events.set(event, filtered);\n } else {\n this.#events.delete(event);\n }\n\n return this;\n }\n\n /**\n * Remove all listeners from the emitter,\n * or all listeners for a specific event.\n */\n removeAllListeners(event?: string | symbol): this {\n if (event === undefined) {\n this.#events.clear();\n } else {\n this.#events.delete(event);\n }\n\n return this;\n }\n}\n","/**\n * Page lifecycle helper.\n * @see https://developer.chrome.com/docs/web-platform/page-lifecycle-api\n */\n\nimport { Logger } from '../logging/Logger.js';\nimport { EventEmitter } from '../util/event_emitter.js';\nimport {\n DOCUMENT_STATE_CHANGE_EVENT,\n DOCUMENT_STATE_DOM_LOADED,\n DOCUMENT_STATE_FULLY_LOADED,\n PAGE_LIFECYCLE_STATE_ACTIVE,\n PAGE_LIFECYCLE_STATE_CHANGE_EVENT,\n PAGE_LIFECYCLE_STATE_FROZEN,\n PAGE_LIFECYCLE_STATE_HIDDEN,\n PAGE_LIFECYCLE_STATE_PASSIVE,\n PAGE_LIFECYCLE_STATE_TERMINATED,\n} from './const.js';\nimport type { DocumentState, PageLifecycleState } from './typedef.js';\n\nconst logger = new Logger('pagelifecycle');\n\nconst eventEmitter = new EventEmitter();\n\nlet currentPageLifecycleState: PageLifecycleState | null | undefined = null;\n\nlet currentDocumentState: DocumentState | null | undefined = null;\n\nlet isInitialized = false;\n\nconst callbacks: Record<string, (() => void)[]> = {};\n\n/**\n * Run callbacks for a specific state change.\n */\nconst processCallbacks = (state: DocumentState | PageLifecycleState): void => {\n const stateCallbacks = callbacks[state];\n if (!stateCallbacks) {\n return;\n }\n for (const callback of stateCallbacks) {\n callback();\n }\n stateCallbacks.length = 0;\n};\n\n/**\n * Detects the current page lifecycle state.\n */\nconst detectPageLifecycleState = (): PageLifecycleState => {\n if (document.visibilityState === 'hidden') {\n return PAGE_LIFECYCLE_STATE_HIDDEN;\n }\n if (document.hasFocus()) {\n return PAGE_LIFECYCLE_STATE_ACTIVE;\n }\n return PAGE_LIFECYCLE_STATE_PASSIVE;\n};\n\n/**\n * Handles page lifecycle state change.\n */\nconst onPageLifecycleStateChange = (nextState: PageLifecycleState): void => {\n const previousState = currentPageLifecycleState;\n if (nextState !== previousState) {\n currentPageLifecycleState = nextState;\n const eventData = { previousState, nextState };\n logger.info(PAGE_LIFECYCLE_STATE_CHANGE_EVENT, eventData);\n eventEmitter.emit(PAGE_LIFECYCLE_STATE_CHANGE_EVENT, eventData);\n processCallbacks(currentPageLifecycleState);\n }\n};\n\n/**\n * Handles document state change.\n */\nconst onDocumentStateChange = (nextState: DocumentState): void => {\n const previousState = currentDocumentState;\n if (nextState !== previousState) {\n currentDocumentState = nextState;\n const eventData = { previousState, nextState };\n logger.info(DOCUMENT_STATE_CHANGE_EVENT, eventData);\n eventEmitter.emit(DOCUMENT_STATE_CHANGE_EVENT, eventData);\n processCallbacks(currentDocumentState);\n }\n};\n\n/**\n * Initialize page lifecycle observer.\n */\nexport const initPageLifecycle = (): void => {\n if (isInitialized) {\n return;\n }\n logger.info('initPageLifecycle');\n onPageLifecycleStateChange(detectPageLifecycleState());\n onDocumentStateChange(document.readyState);\n const options = { capture: true };\n document.addEventListener('visibilitychange', () => onPageLifecycleStateChange(detectPageLifecycleState()), options);\n globalThis.addEventListener('pageshow', () => onPageLifecycleStateChange(detectPageLifecycleState()), options);\n globalThis.addEventListener('focus', () => onPageLifecycleStateChange(detectPageLifecycleState()), options);\n globalThis.addEventListener('blur', () => onPageLifecycleStateChange(detectPageLifecycleState()), options);\n document.addEventListener('resume', () => onPageLifecycleStateChange(detectPageLifecycleState()), options);\n document.addEventListener('freeze', () => onPageLifecycleStateChange(PAGE_LIFECYCLE_STATE_FROZEN), options);\n globalThis.addEventListener(\n 'pagehide',\n (event) =>\n onPageLifecycleStateChange(event.persisted ? PAGE_LIFECYCLE_STATE_FROZEN : PAGE_LIFECYCLE_STATE_TERMINATED),\n options\n );\n document.addEventListener('DOMContentLoaded', () => onDocumentStateChange(DOCUMENT_STATE_DOM_LOADED), options);\n document.addEventListener('readystatechange', () => onDocumentStateChange(document.readyState), options);\n globalThis.addEventListener('load', () => onDocumentStateChange(DOCUMENT_STATE_FULLY_LOADED), options);\n isInitialized = true;\n};\n\n/**\n * Returns the current page lifecycle state.\n */\nexport const getPageLifecycleState = (): PageLifecycleState | null | undefined => currentPageLifecycleState;\n\n/**\n * Returns the current document state.\n */\nexport const getDocumentState = (): DocumentState | null | undefined => currentDocumentState;\n\n/**\n * Returns the event emitter instance.\n */\nexport const getPageLifecycleEventEmitter = (): EventEmitter => {\n if (!isInitialized) {\n initPageLifecycle();\n }\n return eventEmitter;\n};\n\n/**\n * Returns the page lifecycle observer initialized state.\n */\nexport const isPageLifecycleInitialized = (): boolean => isInitialized;\n\n/**\n * Add callback for a specific state change.\n */\nexport const addPageLifecycleCallback = (state: DocumentState | PageLifecycleState, callback: () => void): void => {\n const stateCallbacks = callbacks[state] ?? [];\n stateCallbacks.push(callback);\n callbacks[state] = stateCallbacks;\n};\n","export interface TypeCheckErrorOptions extends ErrorOptions {\n value?: unknown;\n}\n\nexport class TypeCheckError extends TypeError {\n value: unknown;\n\n /**\n * Creates a new `TypeCheckError` instance.\n */\n constructor(message: string, options?: TypeCheckErrorOptions) {\n super(message, options);\n this.name = 'TypeCheckError';\n this.value = options?.value;\n }\n}\n","/**\n * Add leading zeros to a value to ensure it has a minimum width.\n */\nexport const addLeadingZero = (value: number | string | null | undefined, size = 2): string | null => {\n if (value === null || value === undefined) {\n return null;\n }\n let str = value.toString();\n while (str.length < size) {\n str = `0${str}`;\n }\n return str;\n};\n\n/**\n * Capitalize a string.\n */\nexport const capitalize = (value: string | null | undefined): string | null => {\n if (value === null || value === undefined) {\n return null;\n }\n if (!value || value.length === 0) {\n return value;\n }\n const normValue = value.toLowerCase();\n return normValue.charAt(0).toUpperCase() + normValue.slice(1);\n};\n\n/**\n * Converts underscore case string to camel case.\n */\nexport const underscoreToCamelCase = (value: string): string =>\n value.replaceAll(/(_\\w)/gu, (m) => m[1]!.toUpperCase());\n\n/**\n * Saves text file.\n */\nexport const saveAsFile = (filename: string, text: string): void => {\n const element = document.createElement('a');\n element.setAttribute('href', `data:text/plain;charset=utf-8,${encodeURIComponent(text)}`);\n element.setAttribute('download', filename);\n element.style.display = 'none';\n document.body.append(element);\n element.click();\n element.remove();\n};\n\n/**\n * Get type from value in human readable format.\n */\nexport const getTypeFromValue = (value: unknown): string =>\n Object.prototype.toString.call(value).slice(8, -1).toLowerCase();\n\n/**\n * Get value in human readable format.\n */\nexport const getDisplayValue = (value: unknown): string => {\n if (typeof value === 'string') {\n return `\"${value}\"`;\n }\n if (typeof value === 'object') {\n return JSON.stringify(value);\n }\n return String(value);\n};\n","import { TypeCheckError } from '../typecheck/TypeCheckError.js';\n\nconst DEG_TO_RAD = Math.PI / 180;\nconst RAD_TO_DEG = 180 / Math.PI;\n\nconst PRECISION = 12;\nconst EPSILON = 1e-11;\n\n/**\n * Converts degrees to radians.\n */\nexport const deg2rad = (degrees: number): number => {\n if (!Number.isFinite(degrees)) {\n throw new TypeCheckError('Argument degrees must be a finite number', { value: degrees });\n }\n return degrees * DEG_TO_RAD;\n};\n\n/**\n * Converts radians to degrees.\n */\nexport const rad2deg = (radians: number): number => {\n if (!Number.isFinite(radians)) {\n throw new TypeCheckError('Argument radians must be a finite number', { value: radians });\n }\n return radians * RAD_TO_DEG;\n};\n\n/**\n * Returns random integer in range.\n */\nexport const getRandomInt = (min: number, max: number): number => {\n if (!Number.isFinite(min)) {\n throw new TypeCheckError('Argument min must be finite number', { value: min });\n }\n if (!Number.isFinite(max)) {\n throw new TypeCheckError('Argument max must be finite number', { value: max });\n }\n return Math.floor(Math.random() * (max - min + 1)) + min;\n};\n\n/**\n * Normalizes floating point precision (e.g. 0.20000000000000004 → 0.2).\n */\nexport const fixFloatPrecision = (value: number | string | null | undefined): number => {\n const parsedValue = typeof value === 'string' ? Number(value) : value;\n if (parsedValue === null || parsedValue === undefined || !Number.isFinite(parsedValue)) {\n return Number.NaN;\n }\n return Math.abs(parsedValue) < EPSILON ? 0 : Number(parsedValue.toPrecision(PRECISION));\n};\n\nexport const isGreater = (value: number, min: number): boolean => value > min;\nexport const isGreaterOrEqual = (value: number, min: number): boolean => value >= min;\nexport const isLess = (value: number, min: number): boolean => value < min;\nexport const isLessOrEqual = (value: number, min: number): boolean => value <= min;\nexport const isInRange = (value: number, min: number, max: number): boolean => value >= min && value <= max;\nexport const isEqual = (value: number, expected: number): boolean => value === expected;\n","import { isEqual, isGreater, isGreaterOrEqual, isInRange, isLess, isLessOrEqual } from './number.js';\n\nexport type Validator<T> = (value: unknown) => value is T;\n\n/**\n * Validates `value` as `boolean`.\n */\nexport const isBoolean = (value: unknown): value is boolean => typeof value === 'boolean';\n\n/**\n * Validates `value` as `number`.\n */\nexport const isNumber = (value: unknown): value is number => typeof value === 'number' && Number.isFinite(value);\n\n/**\n * Validates `value` as positive `number`.\n */\nexport const isPositiveNumber = (value: unknown): value is number => isNumber(value) && value > 0;\n\n/**\n * Validates `value` as non-negative `number`.\n */\nexport const isNonNegativeNumber = (value: unknown): value is number => isNumber(value) && value >= 0;\n\n/**\n * Validates `value` as `integer`.\n */\nexport const isInteger = (value: unknown): value is number => isNumber(value) && Number.isInteger(value);\n\n/**\n * Validates `value` as positive `integer`.\n */\nexport const isPositiveInteger = (value: unknown): value is number => isInteger(value) && value > 0;\n\n/**\n * Validates `value` as non-negative `integer`.\n */\nexport const isNonNegativeInteger = (value: unknown): value is number => isInteger(value) && value >= 0;\n\n/**\n * Validates `value` as `string`.\n */\nexport const isString = (value: unknown): value is string => typeof value === 'string';\n\n/**\n * Validates `value` as `array`.\n */\nexport const isArray = <T = unknown>(value: unknown): value is T[] => Array.isArray(value);\n\n/**\n * Validates `value` as `null`.\n */\nexport const isNull = (value: unknown): value is null => value === null;\n\n/**\n * Validates `value` as `undefined`.\n */\nexport const isUndefined = (value: unknown): value is undefined => value === undefined;\n\n/**\n * Validates `value` as `null` or `undefined`.\n */\nexport const isNullOrUndefined = (value: unknown): value is null | undefined => isNull(value) || isUndefined(value);\n\n/**\n * Validates `value` as plain `object`.\n */\nexport const isPlainObject = (value: unknown): value is Record<string, unknown> =>\n Object.prototype.toString.call(value) === '[object Object]';\n\n/**\n * Validates `value` as `function`.\n */\nexport const isFunction = (value: unknown): value is (...args: any[]) => any => typeof value === 'function';\n\n/**\n * Validates `value` as `type`.\n */\nexport const isInstance = <T>(value: unknown, type: new (...args: any[]) => T): value is T =>\n isFunction(type) && value instanceof type;\n\n/**\n * Validates `value` as `enum`.\n */\nexport const isEnum = (\n value: unknown,\n choices:\n | ReadonlyArray<string | number>\n | ReadonlySet<string | number>\n | Readonly<Record<string | number, string | number>>\n | null\n | undefined\n): boolean => {\n if (!isString(value) && !isNumber(value)) {\n return false;\n }\n return (\n (isArray<string | number>(choices) && choices.includes(value)) ||\n (isPlainObject(choices) && Object.values(choices).includes(value)) ||\n (isInstance(choices, Set) && (choices as Set<string | number>).has(value))\n );\n};\n\n/**\n * Type check an array of values using a validator.\n */\nexport const isArrayOf = <T>(values: unknown, validator: Validator<T>): values is T[] => {\n if (!isArray(values)) {\n return false;\n }\n for (const value of values) {\n if (!validator(value)) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Type check a plain object of values using a validator.\n */\nexport const isPlainObjectOf = <T>(\n record: unknown,\n validator: Validator<T>\n): record is Record<string | number, T> => {\n if (!isPlainObject(record)) {\n return false;\n }\n for (const value of Object.values(record)) {\n if (!validator(value)) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Refine a base validator with an extra condition.\n */\nexport const refineValidator = <T>(\n base: Validator<T>,\n predicate: (value: T) => boolean,\n name: string | null = null\n): Validator<T> => {\n const refinedValidator = (value: unknown): value is T => base(value) && predicate(value as T);\n Object.defineProperty(refinedValidator, 'name', {\n value: isString(name) ? name : `${base.name}Refined`,\n });\n return refinedValidator;\n};\n\n/**\n * Logical OR of two validators.\n */\nexport const isAnyOf =\n <A, B>(a: Validator<A>, b: Validator<B>): Validator<A | B> =>\n (value: unknown): value is A | B =>\n a(value) || b(value);\n\nexport const isNumberGreater = (min: number): Validator<number> =>\n refineValidator(isNumber, (value) => isGreater(value, min));\n\nexport const isNumberGreaterOrEqual = (min: number): Validator<number> =>\n refineValidator(isNumber, (value) => isGreaterOrEqual(value, min));\n\nexport const isNumberLess = (min: number): Validator<number> =>\n refineValidator(isNumber, (value) => isLess(value, min));\n\nexport const isNumberLessOrEqual = (min: number): Validator<number> =>\n refineValidator(isNumber, (value) => isLessOrEqual(value, min));\n\nexport const isNumberInRange = (min: number, max: number): Validator<number> =>\n refineValidator(isNumber, (value) => isInRange(value, min, max));\n\nexport const isNumberEqual = (expected: number): Validator<number> =>\n refineValidator(isNumber, (value) => isEqual(value, expected));\n\nexport const isIntegerGreater = (min: number): Validator<number> =>\n refineValidator(isInteger, (value) => isGreater(value, min));\n\nexport const isIntegerGreaterOrEqual = (min: number): Validator<number> =>\n refineValidator(isInteger, (value) => isGreaterOrEqual(value, min));\n\nexport const isIntegerLess = (min: number): Validator<number> =>\n refineValidator(isInteger, (value) => isLess(value, min));\n\nexport const isIntegerLessOrEqual = (min: number): Validator<number> =>\n refineValidator(isInteger, (value) => isLessOrEqual(value, min));\n\nexport const isIntegerInRange = (min: number, max: number): Validator<number> =>\n refineValidator(isInteger, (value) => isInRange(value, min, max));\n\nexport const isIntegerEqual = (expected: number): Validator<number> =>\n refineValidator(isInteger, (value) => isEqual(value, expected));\n\nexport const isStringLengthGreater = (min: number): Validator<string> =>\n refineValidator(isString, (value) => isGreater(value.length, min));\n\nexport const isStringLengthGreaterOrEqual = (min: number): Validator<string> =>\n refineValidator(isString, (value) => isGreaterOrEqual(value.length, min));\n\nexport const isStringLengthLess = (min: number): Validator<string> =>\n refineValidator(isString, (value) => isLess(value.length, min));\n\nexport const isStringLengthLessOrEqual = (min: number): Validator<string> =>\n refineValidator(isString, (value) => isLessOrEqual(value.length, min));\n\nexport const isStringLengthInRange = (min: number, max: number): Validator<string> =>\n refineValidator(isString, (value) => isInRange(value.length, min, max));\n\nexport const isStringLengthEqual = (expected: number): Validator<string> =>\n refineValidator(isString, (value) => isEqual(value.length, expected));\n\nexport const isArrayLengthGreater = (min: number): Validator<unknown[]> =>\n refineValidator(isArray, (value) => isGreater(value.length, min));\n\nexport const isArrayLengthGreaterOrEqual = (min: number): Validator<unknown[]> =>\n refineValidator(isArray, (value) => isGreaterOrEqual(value.length, min));\n\nexport const isArrayLengthLess = (min: number): Validator<unknown[]> =>\n refineValidator(isArray, (value) => isLess(value.length, min));\n\nexport const isArrayLengthLessOrEqual = (min: number): Validator<unknown[]> =>\n refineValidator(isArray, (value) => isLessOrEqual(value.length, min));\n\nexport const isArrayLengthInRange = (min: number, max: number): Validator<unknown[]> =>\n refineValidator(isArray, (value) => isInRange(value.length, min, max));\n\nexport const isArrayLengthEqual = (expected: number): Validator<unknown[]> =>\n refineValidator(isArray, (value) => isEqual(value.length, expected));\n","import { getDisplayValue, getTypeFromValue } from '../util/string.js';\nimport { isArrayOf, isEnum } from '../util/validate.js';\nimport { TypeCheckError } from './TypeCheckError.js';\n\nexport type EnumChoices =\n | ReadonlyArray<string | number>\n | ReadonlySet<string | number>\n | Readonly<Record<string | number, string | number>>;\n\n/**\n * Get error message for validator exceptions.\n */\nconst getErrorMessage = (validatorName: string, value: unknown): never => {\n const displayValue = getDisplayValue(value);\n const displayType = getTypeFromValue(value);\n throw new TypeCheckError(`Validation failed: ${validatorName || '<anonymous>'} - ${displayValue} (${displayType})`);\n};\n\n/**\n * Type check a value using a validator.\n * @throws {TypeCheckError}\n */\nexport const typeCheck = <T>(value: unknown, validator: (value: unknown) => value is T): T => {\n if (!validator(value)) {\n getErrorMessage(validator.name, value);\n }\n return value as T;\n};\n\n/**\n * Type check an array of values using a validator.\n * @throws {TypeCheckError}\n */\nexport const typeCheckArray = <T>(value: unknown[], validator: (value: unknown) => value is T): T[] => {\n if (!isArrayOf(value, validator)) {\n getErrorMessage(validator.name, value);\n }\n return value as T[];\n};\n\n/**\n * Type check an enum.\n * @throws {TypeCheckError}\n */\nexport const typeCheckEnum = (value: string | number, choices: EnumChoices): string | number => {\n if (!isEnum(value, choices)) {\n getErrorMessage('isEnum', value);\n }\n return value;\n};\n","import { Logger } from '../logging/Logger.js';\nimport { TypeCheckError } from './TypeCheckError.js';\nimport { typeCheck, typeCheckArray, typeCheckEnum, type EnumChoices } from './util.js';\n\nconst logger = new Logger('typechecker');\n\nclass TypeChecker {\n static #instance: TypeChecker | undefined;\n\n #swallowErrors = false;\n\n constructor() {\n if (TypeChecker.#instance === undefined) {\n TypeChecker.#instance = this;\n }\n }\n\n /**\n * Enable or disable swallowing of TypeCheckErrors.\n */\n setSwallowErrors(value: boolean): void {\n this.#swallowErrors = Boolean(value);\n }\n\n /**\n * Type check a single value.\n */\n check<T>(value: unknown, validator: (value: unknown) => value is T): T {\n try {\n return typeCheck(value, validator);\n } catch (error) {\n if (this.#swallowErrors && error instanceof TypeCheckError) {\n logger.exception('check', error);\n return value as T;\n }\n throw error;\n }\n }\n\n /**\n * Type check an array of values.\n */\n checkArray<T>(value: unknown[], validator: (value: unknown) => value is T): T[] {\n try {\n return typeCheckArray(value, validator);\n } catch (error) {\n if (this.#swallowErrors && error instanceof TypeCheckError) {\n logger.exception('checkArray', error);\n return value as T[];\n }\n throw error;\n }\n }\n\n /**\n * Type check an enum.\n */\n checkEnum(value: string | number, choices: EnumChoices): string | number {\n try {\n return typeCheckEnum(value, choices);\n } catch (error) {\n if (this.#swallowErrors && error instanceof TypeCheckError) {\n logger.exception('checkEnum', error);\n return value;\n }\n throw error;\n }\n }\n}\n\n/**\n * Export a single shared instance.\n */\nexport const typeChecker = new TypeChecker();\n","const DEFAULT_EXCLUDES = new Set(['stack']);\n\nexport interface ErrorDetails {\n name: string;\n type: string;\n message?: string;\n cause?: unknown;\n [key: string]: unknown;\n}\n\n/**\n * Retrieves detailed information from an error object.\n */\nexport const getErrorDetails = (error: Error, excludes?: string[] | null): ErrorDetails => {\n const errorDetails: ErrorDetails = {\n name: error.name,\n type: error.constructor?.name ?? typeof error,\n };\n if (error.message) {\n errorDetails.message = error.message;\n }\n if (error.cause) {\n errorDetails.cause = error.cause;\n }\n for (const key of Object.getOwnPropertyNames(error)) {\n if (!excludes?.includes(key) && !DEFAULT_EXCLUDES.has(key)) {\n errorDetails[key] = (error as unknown as Record<string, unknown>)[key];\n }\n }\n return errorDetails;\n};\n\n/**\n * Get typed error from an unknown type.\n */\nexport const getTypedError = (error: unknown): Error =>\n error instanceof Error ? error : new Error(String(error));\n","import { getTypedError } from './error.js';\n\n/**\n * Returns a promise with delayed resolve.\n */\nexport const delayPromise = (delayMS: number): Promise<void> =>\n new Promise((resolve) => {\n setTimeout(resolve, delayMS);\n });\n\n/**\n * Async method call retry helper.\n */\nexport const retryAsync = async <T>(method: () => Promise<T>, numTries = 1, delayMs = 100): Promise<T> => {\n for (let attempt = 0; attempt <= numTries; attempt += 1) {\n try {\n // oxlint-disable-next-line no-await-in-loop\n return await method();\n } catch (error) {\n if (attempt === numTries) {\n throw getTypedError(error);\n }\n if (delayMs > 0) {\n // oxlint-disable-next-line no-await-in-loop\n await delayPromise(delayMs);\n }\n }\n }\n throw new Error('Unknown error');\n};\n\n/**\n * Load JSON file using a fetch GET request.\n */\nexport const loadJSON = async (url: string): Promise<unknown> => {\n const response = await fetch(url);\n if (!response.ok) {\n throw new DOMException(`Fetch error ${response.status}`, 'FetchError');\n }\n return response.json();\n};\n","import {\n HTTP_401_UNAUTHORIZED,\n HTTP_403_FORBIDDEN,\n HTTP_405_METHOD_NOT_ALLOWED,\n HTTP_422_UNPROCESSABLE_CONTENT,\n} from '../const/http_status.js';\nimport { Logger } from '../logging/Logger.js';\nimport { delayPromise } from './async.js';\nimport { getErrorDetails } from './error.js';\n\nconst logger = new Logger('fetch');\n\nexport const HTTP_0_ANY = 0;\n\nexport interface FetchRetryOptions {\n delay?: number;\n numTries?: number;\n statusExcludes?: number[];\n timeout?: number;\n}\n\nexport class FetchError extends Error {\n resource: string | URL | Request;\n fetchOptions: RequestInit;\n response: Response | null;\n override cause: number | null;\n\n /**\n * Creates a new FetchError instance.\n */\n constructor(message: string, resource: string | URL | Request, fetchOptions: RequestInit, response: Response | null) {\n super(message);\n this.name = 'FetchError';\n this.resource = resource;\n this.fetchOptions = fetchOptions;\n this.response = response;\n this.cause = response?.status ?? null;\n }\n}\n\n/**\n * Fetch with retry.\n */\nexport const fetchRetry = async (\n resource: string | URL | Request,\n fetchOptions: RequestInit,\n retryOptions?: FetchRetryOptions\n): Promise<Response> => {\n const opts: Required<FetchRetryOptions> = {\n timeout: Math.max(retryOptions?.timeout ?? 30_000, 1),\n delay: Math.max(retryOptions?.delay ?? 1000, 1),\n numTries: Math.max(retryOptions?.numTries ?? 1, 1),\n statusExcludes: retryOptions?.statusExcludes ?? [\n HTTP_401_UNAUTHORIZED,\n HTTP_403_FORBIDDEN,\n HTTP_405_METHOD_NOT_ALLOWED,\n HTTP_422_UNPROCESSABLE_CONTENT,\n ],\n };\n while (opts.numTries > 0) {\n const isOnline = globalThis.navigator?.onLine;\n logger.info('request', { resource: String(resource), fetchOptions, retryOptions: { ...opts }, isOnline });\n const controller = new AbortController();\n const timeoutId = setTimeout(\n () => controller.abort(new DOMException('Fetch timed out', 'AbortError')),\n opts.timeout\n );\n const options: RequestInit = {\n ...fetchOptions,\n signal: controller.signal,\n };\n try {\n const response = await fetch(resource, options);\n if (!response.ok) {\n throw new FetchError(`Fetch error ${response.status}`, resource, options, response);\n }\n logger.info('response', { status: response.status });\n return response;\n } catch (error) {\n const typedError = error instanceof Error ? error : new Error(String(error));\n logger.debug('error', getErrorDetails(typedError));\n opts.numTries -= 1;\n if (\n opts.numTries === 0 ||\n (typedError instanceof FetchError &&\n (opts.statusExcludes.includes(typedError.response?.status ?? -1) ||\n opts.statusExcludes.includes(HTTP_0_ANY)))\n ) {\n throw error;\n }\n await delayPromise(opts.delay);\n opts.delay *= 2;\n } finally {\n clearTimeout(timeoutId);\n }\n }\n throw new Error('Fetch failed');\n};\n","const PROHIBITED_KEYS = new Set(['__proto__', 'constructor', 'prototype']);\n\ntype AnyRecord = Record<string, any>;\n\n/**\n * Purges object properties to free up memory.\n */\nexport const purgeObject = (target: AnyRecord | null | undefined): void => {\n if (!target) {\n return;\n }\n for (const entry of Object.keys(target)) {\n target[entry] = null;\n }\n};\n\n/**\n * Merge two objects.\n */\nexport const deepMerge = (target: AnyRecord | null, source: AnyRecord | null): AnyRecord | null => {\n if (typeof target !== 'object' || target === null) {\n return source;\n }\n if (typeof source !== 'object' || source === null) {\n return target;\n }\n for (const key of Object.keys(source)) {\n if (PROHIBITED_KEYS.has(key)) {\n throw new SyntaxError(`Security violation error. Cannot use \"${key}\" as object key.`);\n }\n if (typeof source[key] === 'object' && source[key] !== null) {\n if (!target[key] || typeof target[key] !== 'object') {\n target[key] = {};\n }\n deepMerge(target[key], source[key]);\n } else {\n target[key] = source[key];\n }\n }\n\n return target;\n};\n\n/**\n * Returns the sum value of an array of objects field.\n */\nexport const getObjArrayPropSum = (arr: AnyRecord[], prop: string): number =>\n arr.reduce((accumulator, object) => accumulator + (object[prop] as number), 0);\n\n/**\n * Get object value by path.\n */\nexport const getObjValueByPath = (obj: AnyRecord | null | undefined, path: string | null | undefined): unknown => {\n if (!obj || !path) {\n return null;\n }\n const keyParts = path.split('.');\n const nextKey = keyParts[0]!;\n if (keyParts.length === 1) {\n return obj[nextKey] === undefined ? null : obj[nextKey];\n }\n if (obj[nextKey] === undefined || obj[nextKey] === null) {\n return null;\n }\n return getObjValueByPath(obj[nextKey], keyParts.slice(1).join('.'));\n};\n\n/**\n * Set object value by path.\n * @throws {SyntaxError} Error when illegal path value has been provided.\n */\nexport const setObjValueByPath = (\n obj: AnyRecord | null | undefined,\n path: string | null | undefined,\n value: unknown\n): void => {\n if (!obj || !path) {\n return;\n }\n const keyParts = path.split('.');\n const nextKey = keyParts[0]!;\n if (PROHIBITED_KEYS.has(nextKey)) {\n throw new SyntaxError(`Security violation error. Cannot use \"${nextKey}\" as parameter.`);\n }\n if (keyParts.length === 1) {\n obj[nextKey] = value;\n } else {\n if (obj[nextKey] === undefined || obj[nextKey] === null) {\n obj[nextKey] = {};\n }\n setObjValueByPath(obj[nextKey], keyParts.slice(1).join('.'), value);\n }\n};\n","import { underscoreToCamelCase } from './string.js';\n\n/**\n * Maps server data to client data.\n */\nexport const serverDataToState = (data: unknown, isRecursive = false): any => {\n if (Array.isArray(data)) {\n return data.map((entry) => serverDataToState(entry, isRecursive));\n }\n\n if (data !== null && typeof data === 'object') {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(data)) {\n const clientKey = underscoreToCamelCase(key);\n result[clientKey] = isRecursive ? serverDataToState(value, isRecursive) : value;\n }\n return result;\n }\n\n return data;\n};\n","/**\n * Convert a byte (0–255) to a 2-character hex string.\n */\nexport const byteToHex = (byte: number): string => (byte >>> 4).toString(16) + (byte & 0b1111).toString(16);\n\n/**\n * UUIDv4 fallback generator (RFC 4122 compliant).\n */\nexport const randomUUIDFallback = (): string => {\n const bytes: number[] | Uint8Array = crypto.getRandomValues\n ? crypto.getRandomValues(new Uint8Array(16))\n : Array.from({ length: 16 }, () => Math.floor(Math.random() * 256));\n\n bytes[6] = (bytes[6]! & 0x0f) | 0x40;\n bytes[8] = (bytes[8]! & 0x3f) | 0x80;\n\n let uuid = '';\n for (let index = 0; index < bytes.length; index += 1) {\n if (index === 4 || index === 6 || index === 8 || index === 10) {\n uuid += '-';\n }\n uuid += byteToHex(bytes[index]!);\n }\n return uuid;\n};\n\n/**\n * Crypto UUIDv4 wrapper with fallback.\n */\nexport const uuidv4 = (): string =>\n typeof crypto.randomUUID === 'function' ? crypto.randomUUID() : randomUUIDFallback();\n"],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Logger } from './Logger.js';
|
|
2
|
+
export interface LogExtra {
|
|
3
|
+
tags?: Record<string, string | number | boolean | null | undefined>;
|
|
4
|
+
[key: string]: unknown;
|
|
5
|
+
}
|
|
6
|
+
export declare class AbstractLogHandler {
|
|
7
|
+
level: number;
|
|
8
|
+
/**
|
|
9
|
+
* Abstract log handler.
|
|
10
|
+
*/
|
|
11
|
+
constructor(level: number);
|
|
12
|
+
/**
|
|
13
|
+
* Emit log record.
|
|
14
|
+
*/
|
|
15
|
+
emit(_logger: Logger, _timestamp: number, _level: number, _message: string, _extra: LogExtra | null | undefined, _error: Error | null | undefined): void;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=AbstractLogHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AbstractLogHandler.d.ts","sourceRoot":"","sources":["../../src/logging/AbstractLogHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,WAAW,QAAQ;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IACpE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,qBAAa,kBAAkB;IAC7B,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;gBACS,KAAK,EAAE,MAAM;IAIzB;;OAEG;IACH,IAAI,CACF,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EACnC,MAAM,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,GAC/B,IAAI;CAGR"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AbstractLogHandler, type LogExtra } from './AbstractLogHandler.js';
|
|
2
|
+
import type { Logger } from './Logger.js';
|
|
3
|
+
export declare class ConsoleLogHandler extends AbstractLogHandler {
|
|
4
|
+
/**
|
|
5
|
+
* Console log handler.
|
|
6
|
+
*/
|
|
7
|
+
constructor(level?: number);
|
|
8
|
+
/**
|
|
9
|
+
* Emit log record.
|
|
10
|
+
*/
|
|
11
|
+
emit(logger: Logger, timestamp: number, level: number, message: string, extra: LogExtra | null | undefined, error: Error | null | undefined): void;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=ConsoleLogHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConsoleLogHandler.d.ts","sourceRoot":"","sources":["../../src/logging/ConsoleLogHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAE5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAc1C,qBAAa,iBAAkB,SAAQ,kBAAkB;IACvD;;OAEG;gBACS,KAAK,GAAE,MAAwB;IAI3C;;OAEG;IACM,IAAI,CACX,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EAClC,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,GAC9B,IAAI;CAkBR"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { AbstractLogHandler, LogExtra } from './AbstractLogHandler.js';
|
|
2
|
+
export declare class Logger {
|
|
3
|
+
static handlers: AbstractLogHandler[];
|
|
4
|
+
name: string;
|
|
5
|
+
level: number;
|
|
6
|
+
/**
|
|
7
|
+
* Creates a new Logger instance.
|
|
8
|
+
*/
|
|
9
|
+
constructor(name?: string);
|
|
10
|
+
static addHandler: (handler: AbstractLogHandler) => void;
|
|
11
|
+
static emit: (logger: Logger, level: number, message: string, extra?: LogExtra | null, error?: Error | null) => void;
|
|
12
|
+
debug(message: string, extra?: LogExtra | null): void;
|
|
13
|
+
info(message: string, extra?: LogExtra | null): void;
|
|
14
|
+
warn(message: string, extra?: LogExtra | null): void;
|
|
15
|
+
warning(message: string, extra?: LogExtra | null): void;
|
|
16
|
+
error(message: string, extra?: LogExtra | null): void;
|
|
17
|
+
exception(message: string, error: Error, extra?: LogExtra | null): void;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=Logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../src/logging/Logger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAa5E,qBAAa,MAAM;IACjB,MAAM,CAAC,QAAQ,EAAE,kBAAkB,EAAE,CAAM;IAE3C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;gBACS,IAAI,GAAE,MAAyB;IAW3C,MAAM,CAAC,UAAU,GAAI,SAAS,kBAAkB,KAAG,IAAI,CAErD;IAEF,MAAM,CAAC,IAAI,GACT,QAAQ,MAAM,EACd,OAAO,MAAM,EACb,SAAS,MAAM,EACf,QAAQ,QAAQ,GAAG,IAAI,EACvB,QAAQ,KAAK,GAAG,IAAI,KACnB,IAAI,CAOL;IAEF,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI;IAIrD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI;IAIpD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI;IAIpD,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI;IAIvD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI;IAIrD,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI;CAGxE"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AbstractLogHandler, type LogExtra } from './AbstractLogHandler.js';
|
|
2
|
+
import type { Logger } from './Logger.js';
|
|
3
|
+
export type OpenTelemetryLogEmitter = (logger: Logger, timestamp: number, level: number, message: string, extra: LogExtra | null | undefined, error: Error | null | undefined) => void;
|
|
4
|
+
export declare class OpenTelemetryLogHandler extends AbstractLogHandler {
|
|
5
|
+
emitter: OpenTelemetryLogEmitter;
|
|
6
|
+
/**
|
|
7
|
+
* Open Telemetry log handler.
|
|
8
|
+
*/
|
|
9
|
+
constructor(level: number, emitter: OpenTelemetryLogEmitter);
|
|
10
|
+
/**
|
|
11
|
+
* Emit log record.
|
|
12
|
+
*/
|
|
13
|
+
emit(logger: Logger, timestamp: number, level: number, message: string, extra: LogExtra | null | undefined, error: Error | null | undefined): void;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=OpenTelemetryLogHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenTelemetryLogHandler.d.ts","sourceRoot":"","sources":["../../src/logging/OpenTelemetryLogHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,MAAM,uBAAuB,GAAG,CACpC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EAClC,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,KAC5B,IAAI,CAAC;AAEV,qBAAa,uBAAwB,SAAQ,kBAAkB;IAC7D,OAAO,EAAE,uBAAuB,CAAC;IAEjC;;OAEG;gBACS,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB;IAK3D;;OAEG;IACM,IAAI,CACX,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EAClC,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,GAC9B,IAAI;CAMR"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AbstractLogHandler, type LogExtra } from './AbstractLogHandler.js';
|
|
2
|
+
import type { Logger } from './Logger.js';
|
|
3
|
+
export declare class SentryLogHandler extends AbstractLogHandler {
|
|
4
|
+
/**
|
|
5
|
+
* Sentry log handler.
|
|
6
|
+
*/
|
|
7
|
+
constructor(level?: number);
|
|
8
|
+
/**
|
|
9
|
+
* Emit log record.
|
|
10
|
+
*/
|
|
11
|
+
emit(logger: Logger, _timestamp: number, level: number, message: string, extra: LogExtra | null | undefined, error: Error | null | undefined): void;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=SentryLogHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SentryLogHandler.d.ts","sourceRoot":"","sources":["../../src/logging/SentryLogHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAE5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,qBAAa,gBAAiB,SAAQ,kBAAkB;IACtD;;OAEG;gBACS,KAAK,GAAE,MAAwB;IAI3C;;OAEG;IACM,IAAI,CACX,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EAClC,KAAK,EAAE,KAAK,GAAG,IAAI,GAAG,SAAS,GAC9B,IAAI;CAmBR"}
|
|
@@ -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,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,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 @@
|
|
|
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,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,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,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,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,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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface ErrorDetails {
|
|
2
|
+
name: string;
|
|
3
|
+
type: string;
|
|
4
|
+
message?: string;
|
|
5
|
+
cause?: unknown;
|
|
6
|
+
[key: string]: unknown;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Retrieves detailed information from an error object.
|
|
10
|
+
*/
|
|
11
|
+
export declare const getErrorDetails: (error: Error, excludes?: string[] | null) => ErrorDetails;
|
|
12
|
+
/**
|
|
13
|
+
* Get typed error from an unknown type.
|
|
14
|
+
*/
|
|
15
|
+
export declare const getTypedError: (error: unknown) => Error;
|
|
16
|
+
//# sourceMappingURL=error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/util/error.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,KAAK,EAAE,WAAW,MAAM,EAAE,GAAG,IAAI,KAAG,YAiB1E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,KAAG,KACY,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export type EventListener = (...args: any[]) => void;
|
|
2
|
+
/**
|
|
3
|
+
* Event emitter implementation inspired by Node.js/EventEmitter3.
|
|
4
|
+
*/
|
|
5
|
+
export declare class EventEmitter {
|
|
6
|
+
#private;
|
|
7
|
+
constructor();
|
|
8
|
+
/**
|
|
9
|
+
* Get all registered event names.
|
|
10
|
+
*/
|
|
11
|
+
eventNames(): (string | symbol)[];
|
|
12
|
+
/**
|
|
13
|
+
* Get all listener functions registered for an event.
|
|
14
|
+
*/
|
|
15
|
+
listeners(event: string | symbol): EventListener[];
|
|
16
|
+
/**
|
|
17
|
+
* Get the number of listeners registered for an event.
|
|
18
|
+
*/
|
|
19
|
+
listenerCount(event: string | symbol): number;
|
|
20
|
+
/**
|
|
21
|
+
* Emit an event, invoking all registered listeners.
|
|
22
|
+
*/
|
|
23
|
+
emit(event: string | symbol, ...args: unknown[]): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Register a persistent listener for an event.
|
|
26
|
+
*/
|
|
27
|
+
on(event: string | symbol, fn: EventListener, context?: unknown): this;
|
|
28
|
+
/**
|
|
29
|
+
* Register a one-time listener for an event.
|
|
30
|
+
*/
|
|
31
|
+
once(event: string | symbol, fn: EventListener, context?: unknown): this;
|
|
32
|
+
/**
|
|
33
|
+
* Remove a specific listener, or all listeners for an event.
|
|
34
|
+
*/
|
|
35
|
+
off(event: string | symbol, fn?: EventListener, context?: unknown): this;
|
|
36
|
+
/**
|
|
37
|
+
* Remove all listeners from the emitter,
|
|
38
|
+
* or all listeners for a specific event.
|
|
39
|
+
*/
|
|
40
|
+
removeAllListeners(event?: string | symbol): this;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=event_emitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event_emitter.d.ts","sourceRoot":"","sources":["../../src/util/event_emitter.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;AAkBrD;;GAEG;AACH,qBAAa,YAAY;;;IAOvB;;OAEG;IACH,UAAU,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE;IAIjC;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,EAAE;IAKlD;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAK7C;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO;IAiCzD;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAItE;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IAIxE;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI;IA6BxE;;;OAGG;IACH,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CASlD"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare const HTTP_0_ANY = 0;
|
|
2
|
+
export interface FetchRetryOptions {
|
|
3
|
+
delay?: number;
|
|
4
|
+
numTries?: number;
|
|
5
|
+
statusExcludes?: number[];
|
|
6
|
+
timeout?: number;
|
|
7
|
+
}
|
|
8
|
+
export declare class FetchError extends Error {
|
|
9
|
+
resource: string | URL | Request;
|
|
10
|
+
fetchOptions: RequestInit;
|
|
11
|
+
response: Response | null;
|
|
12
|
+
cause: number | null;
|
|
13
|
+
/**
|
|
14
|
+
* Creates a new FetchError instance.
|
|
15
|
+
*/
|
|
16
|
+
constructor(message: string, resource: string | URL | Request, fetchOptions: RequestInit, response: Response | null);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Fetch with retry.
|
|
20
|
+
*/
|
|
21
|
+
export declare const fetchRetry: (resource: string | URL | Request, fetchOptions: RequestInit, retryOptions?: FetchRetryOptions) => Promise<Response>;
|
|
22
|
+
//# sourceMappingURL=fetch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/util/fetch.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,UAAU,IAAI,CAAC;AAE5B,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC;IACjC,YAAY,EAAE,WAAW,CAAC;IAC1B,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B;;OAEG;gBACS,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;CAQpH;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,GACrB,UAAU,MAAM,GAAG,GAAG,GAAG,OAAO,EAChC,cAAc,WAAW,EACzB,eAAe,iBAAiB,KAC/B,OAAO,CAAC,QAAQ,CAkDlB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts degrees to radians.
|
|
3
|
+
*/
|
|
4
|
+
export declare const deg2rad: (degrees: number) => number;
|
|
5
|
+
/**
|
|
6
|
+
* Converts radians to degrees.
|
|
7
|
+
*/
|
|
8
|
+
export declare const rad2deg: (radians: number) => number;
|
|
9
|
+
/**
|
|
10
|
+
* Returns random integer in range.
|
|
11
|
+
*/
|
|
12
|
+
export declare const getRandomInt: (min: number, max: number) => number;
|
|
13
|
+
/**
|
|
14
|
+
* Normalizes floating point precision (e.g. 0.20000000000000004 → 0.2).
|
|
15
|
+
*/
|
|
16
|
+
export declare const fixFloatPrecision: (value: number | string | null | undefined) => number;
|
|
17
|
+
export declare const isGreater: (value: number, min: number) => boolean;
|
|
18
|
+
export declare const isGreaterOrEqual: (value: number, min: number) => boolean;
|
|
19
|
+
export declare const isLess: (value: number, min: number) => boolean;
|
|
20
|
+
export declare const isLessOrEqual: (value: number, min: number) => boolean;
|
|
21
|
+
export declare const isInRange: (value: number, min: number, max: number) => boolean;
|
|
22
|
+
export declare const isEqual: (value: number, expected: number) => boolean;
|
|
23
|
+
//# sourceMappingURL=number.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../../src/util/number.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,eAAO,MAAM,OAAO,GAAI,SAAS,MAAM,KAAG,MAKzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO,GAAI,SAAS,MAAM,KAAG,MAKzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,EAAE,KAAK,MAAM,KAAG,MAQvD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,KAAG,MAM7E,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,EAAE,KAAK,MAAM,KAAG,OAAsB,CAAC;AAC9E,eAAO,MAAM,gBAAgB,GAAI,OAAO,MAAM,EAAE,KAAK,MAAM,KAAG,OAAuB,CAAC;AACtF,eAAO,MAAM,MAAM,GAAI,OAAO,MAAM,EAAE,KAAK,MAAM,KAAG,OAAsB,CAAC;AAC3E,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,EAAE,KAAK,MAAM,KAAG,OAAuB,CAAC;AACnF,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,MAAM,KAAG,OAAuC,CAAC;AAC5G,eAAO,MAAM,OAAO,GAAI,OAAO,MAAM,EAAE,UAAU,MAAM,KAAG,OAA6B,CAAC"}
|