UNPKG

@interopio/gateway

Version:

[![npm version](https://img.shields.io/npm/v/@interopio/gateway.svg)](https://www.npmjs.com/package/@interopio/gateway)

8 lines (7 loc) 38.2 kB
{ "version": 3, "sources": ["../../../../node_modules/non-error/index.js", "../../../../node_modules/serialize-error/error-constructors.js", "../../../../node_modules/serialize-error/index.js", "../../src/logging/core.ts", "../../src/worker/worker.ts", "../../src/metrics/worker-common.ts", "../../src/metrics/worker.ts"], "sourcesContent": ["const isNonErrorSymbol = Symbol('isNonError');\n\nfunction defineProperty(object, key, value) {\n\tObject.defineProperty(object, key, {\n\t\tvalue,\n\t\twritable: false,\n\t\tenumerable: false,\n\t\tconfigurable: false,\n\t});\n}\n\nfunction stringify(value) {\n\tif (value === undefined) {\n\t\treturn 'undefined';\n\t}\n\n\tif (value === null) {\n\t\treturn 'null';\n\t}\n\n\tif (typeof value === 'string') {\n\t\treturn value;\n\t}\n\n\tif (typeof value === 'number' || typeof value === 'boolean') {\n\t\treturn String(value);\n\t}\n\n\tif (typeof value === 'bigint') {\n\t\treturn `${value}n`;\n\t}\n\n\tif (typeof value === 'symbol') {\n\t\treturn value.toString();\n\t}\n\n\tif (typeof value === 'function') {\n\t\treturn `[Function${value.name ? ` ${value.name}` : ' (anonymous)'}]`;\n\t}\n\n\t// TODO: Use `Error.isError` when targeting Node.js 24\n\tif (value instanceof Error) {\n\t\ttry {\n\t\t\treturn String(value);\n\t\t} catch {\n\t\t\treturn '<Unserializable error>';\n\t\t}\n\t}\n\n\ttry {\n\t\treturn JSON.stringify(value);\n\t} catch {\n\t\ttry {\n\t\t\treturn String(value);\n\t\t} catch {\n\t\t\treturn '<Unserializable value>';\n\t\t}\n\t}\n}\n\nexport default class NonError extends Error {\n\tconstructor(value, {superclass: Superclass = Error} = {}) {\n\t\t// If already a NonError, return it as-is\n\t\tif (NonError.isNonError(value)) {\n\t\t\treturn value; // eslint-disable-line no-constructor-return\n\t\t}\n\n\t\tif (value instanceof Error) {\n\t\t\tthrow new TypeError('Do not pass Error instances to NonError. Throw the error directly instead.');\n\t\t}\n\n\t\tsuper(`Non-error value: ${stringify(value)}`);\n\n\t\tif (Superclass !== Error) {\n\t\t\t// Change this instance's prototype to Superclass.prototype\n\t\t\t// This makes instanceof Superclass work\n\t\t\tObject.setPrototypeOf(this, Superclass.prototype);\n\t\t}\n\n\t\tdefineProperty(this, 'name', 'NonError');\n\t\tdefineProperty(this, isNonErrorSymbol, true);\n\t\tdefineProperty(this, 'isNonError', true);\n\t\tdefineProperty(this, 'value', value);\n\t}\n\n\tstatic isNonError(value) {\n\t\treturn value?.[isNonErrorSymbol] === true;\n\t}\n\n\tstatic #handleCallback(callback, arguments_) {\n\t\ttry {\n\t\t\tconst result = callback(...arguments_);\n\n\t\t\t// If the result is thenable (Promise-like), handle async rejections\n\t\t\tif (result && typeof result.then === 'function') {\n\t\t\t\treturn (async () => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn await result;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t// TODO: Use `Error.isError` when targeting Node.js 24\n\t\t\t\t\t\tif (error instanceof Error) {\n\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthrow new NonError(error);\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t}\n\n\t\t\treturn result;\n\t\t} catch (error) {\n\t\t\t// TODO: Use `Error.isError` when targeting Node.js 24\n\t\t\t// If it's already an Error, re-throw as-is\n\t\t\tif (error instanceof Error) {\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\t// Otherwise, wrap it in NonError\n\t\t\tthrow new NonError(error);\n\t\t}\n\t}\n\n\tstatic try(callback) {\n\t\treturn NonError.#handleCallback(callback, []);\n\t}\n\n\tstatic wrap(callback) {\n\t\treturn (...arguments_) => NonError.#handleCallback(callback, arguments_);\n\t}\n\n\t// This makes instanceof work even when using the `superclass` option\n\tstatic [Symbol.hasInstance](instance) {\n\t\treturn NonError.isNonError(instance);\n\t}\n}\n", "const list = [\n\t// Native ES errors https://262.ecma-international.org/12.0/#sec-well-known-intrinsic-objects\n\tError,\n\tEvalError,\n\tRangeError,\n\tReferenceError,\n\tSyntaxError,\n\tTypeError,\n\tURIError,\n\tAggregateError,\n\n\t// Built-in errors\n\tglobalThis.DOMException,\n\n\t// Node-specific errors\n\t// https://nodejs.org/api/errors.html\n\tglobalThis.AssertionError,\n\tglobalThis.SystemError,\n]\n\t// Non-native Errors are used with `globalThis` because they might be missing. This filter drops them when undefined.\n\t.filter(Boolean)\n\t.map(constructor => [constructor.name, constructor]);\n\nexport const errorConstructors = new Map(list);\nexport const errorFactories = new Map();\n\nexport function addKnownErrorConstructor(constructor, factory) {\n\tlet instance;\n\tlet resolvedName;\n\n\tif (factory) {\n\t\tif (typeof factory !== 'function') {\n\t\t\tthrow new TypeError('Factory must be a function');\n\t\t}\n\n\t\t// Verify factory can execute without throwing\n\t\ttry {\n\t\t\tinstance = factory();\n\t\t} catch (error) {\n\t\t\tthrow new Error('Factory is not compatible', {cause: error});\n\t\t}\n\n\t\tif (!(instance instanceof constructor)) {\n\t\t\tthrow new TypeError('Factory must return an instance of the constructor');\n\t\t}\n\n\t\tresolvedName = instance.name;\n\t} else {\n\t\ttry {\n\t\t\tinstance = new constructor();\n\t\t} catch (error) {\n\t\t\tthrow new Error(`Constructor \"${constructor.name}\" is not compatible`, {cause: error});\n\t\t}\n\n\t\tresolvedName = instance.name;\n\t}\n\n\tif (!resolvedName || typeof resolvedName !== 'string') {\n\t\tthrow new TypeError('Error instances must have a non-empty string \"name\" property');\n\t}\n\n\tif (errorConstructors.has(resolvedName)) {\n\t\tthrow new Error(`Error constructor \"${resolvedName}\" is already known`);\n\t}\n\n\terrorConstructors.set(resolvedName, constructor);\n\tif (factory) {\n\t\terrorFactories.set(resolvedName, factory);\n\t}\n}\n", "import NonError from 'non-error';\nimport {errorConstructors, errorFactories} from './error-constructors.js';\n\nconst errorProperties = [\n\t{\n\t\tproperty: 'name',\n\t\tenumerable: false,\n\t},\n\t{\n\t\tproperty: 'message',\n\t\tenumerable: false,\n\t},\n\t{\n\t\tproperty: 'stack',\n\t\tenumerable: false,\n\t},\n\t{\n\t\tproperty: 'code',\n\t\tenumerable: true,\n\t},\n\t{\n\t\tproperty: 'cause',\n\t\tenumerable: false,\n\t},\n\t{\n\t\tproperty: 'errors',\n\t\tenumerable: false,\n\t},\n];\n\nconst toJsonWasCalled = new WeakSet();\n\nconst toJSON = from => {\n\ttoJsonWasCalled.add(from);\n\tconst json = from.toJSON();\n\ttoJsonWasCalled.delete(from);\n\treturn json;\n};\n\nconst newError = name => {\n\tif (name === 'NonError') {\n\t\treturn new NonError();\n\t}\n\n\tconst factory = errorFactories.get(name);\n\tif (factory) {\n\t\treturn factory();\n\t}\n\n\tconst ErrorConstructor = errorConstructors.get(name) ?? Error;\n\treturn ErrorConstructor === AggregateError\n\t\t? new ErrorConstructor([])\n\t\t: new ErrorConstructor();\n};\n\nconst destroyCircular = ({\n\tfrom,\n\tseen,\n\tto,\n\tforceEnumerable,\n\tmaxDepth,\n\tdepth,\n\tuseToJSON,\n\tserialize,\n}) => {\n\tif (!to) {\n\t\tif (Array.isArray(from)) {\n\t\t\tto = [];\n\t\t} else if (!serialize && isErrorLike(from)) {\n\t\t\tto = newError(from.name);\n\t\t} else {\n\t\t\tto = {};\n\t\t}\n\t}\n\n\tseen.add(from);\n\n\tif (depth >= maxDepth) {\n\t\tseen.delete(from);\n\t\treturn to;\n\t}\n\n\tif (useToJSON && typeof from.toJSON === 'function' && !toJsonWasCalled.has(from)) {\n\t\tseen.delete(from);\n\t\treturn toJSON(from);\n\t}\n\n\tconst continueDestroyCircular = value => destroyCircular({\n\t\tfrom: value,\n\t\tseen,\n\t\tforceEnumerable,\n\t\tmaxDepth,\n\t\tdepth: depth + 1,\n\t\tuseToJSON,\n\t\tserialize,\n\t});\n\n\tfor (const key of Object.keys(from)) {\n\t\tconst value = from[key];\n\n\t\tif (value && value instanceof Uint8Array && value.constructor.name === 'Buffer') {\n\t\t\tto[key] = serialize ? '[object Buffer]' : value;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (value !== null && typeof value === 'object' && typeof value.pipe === 'function') {\n\t\t\tto[key] = serialize ? '[object Stream]' : value;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (typeof value === 'function') {\n\t\t\tif (!serialize) {\n\t\t\t\tto[key] = value;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (serialize && typeof value === 'bigint') {\n\t\t\tto[key] = `${value}n`;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!value || typeof value !== 'object') {\n\t\t\t// Gracefully handle non-configurable errors like `DOMException`.\n\t\t\ttry {\n\t\t\t\tto[key] = value;\n\t\t\t} catch {}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!seen.has(value)) {\n\t\t\tto[key] = continueDestroyCircular(value);\n\t\t\tcontinue;\n\t\t}\n\n\t\tto[key] = '[Circular]';\n\t}\n\n\tif (serialize || to instanceof Error) {\n\t\tfor (const {property, enumerable} of errorProperties) {\n\t\t\tconst value = from[property];\n\t\t\tif (value === undefined || value === null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst descriptor = Object.getOwnPropertyDescriptor(to, property);\n\t\t\tif (descriptor?.configurable === false) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet processedValue = value;\n\t\t\tif (typeof value === 'object') {\n\t\t\t\tprocessedValue = seen.has(value)\n\t\t\t\t\t? '[Circular]'\n\t\t\t\t\t: continueDestroyCircular(value);\n\t\t\t}\n\n\t\t\tObject.defineProperty(to, property, {\n\t\t\t\tvalue: processedValue,\n\t\t\t\tenumerable: forceEnumerable || enumerable,\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true,\n\t\t\t});\n\t\t}\n\t}\n\n\tseen.delete(from);\n\treturn to;\n};\n\nexport function serializeError(value, options = {}) {\n\tconst {\n\t\tmaxDepth = Number.POSITIVE_INFINITY,\n\t\tuseToJSON = true,\n\t} = options;\n\n\tif (typeof value === 'object' && value !== null) {\n\t\treturn destroyCircular({\n\t\t\tfrom: value,\n\t\t\tseen: new Set(),\n\t\t\tforceEnumerable: true,\n\t\t\tmaxDepth,\n\t\t\tdepth: 0,\n\t\t\tuseToJSON,\n\t\t\tserialize: true,\n\t\t});\n\t}\n\n\t// People sometimes throw things besides Error objects\u2026\n\tif (typeof value === 'function') {\n\t\tvalue = '<Function>';\n\t}\n\n\treturn destroyCircular({\n\t\tfrom: new NonError(value),\n\t\tseen: new Set(),\n\t\tforceEnumerable: true,\n\t\tmaxDepth,\n\t\tdepth: 0,\n\t\tuseToJSON,\n\t\tserialize: true,\n\t});\n}\n\nexport function deserializeError(value, options = {}) {\n\tconst {maxDepth = Number.POSITIVE_INFINITY} = options;\n\n\tif (value instanceof Error) {\n\t\treturn value;\n\t}\n\n\tif (isMinimumViableSerializedError(value)) {\n\t\treturn destroyCircular({\n\t\t\tfrom: value,\n\t\t\tseen: new Set(),\n\t\t\tto: newError(value.name),\n\t\t\tmaxDepth,\n\t\t\tdepth: 0,\n\t\t\tserialize: false,\n\t\t});\n\t}\n\n\treturn new NonError(value);\n}\n\nexport function isErrorLike(value) {\n\treturn Boolean(value)\n\t\t&& typeof value === 'object'\n\t\t&& typeof value.name === 'string'\n\t\t&& typeof value.message === 'string'\n\t\t&& typeof value.stack === 'string';\n}\n\n// Used as a weak check for immediately-passed objects, whereas `isErrorLike` is used for nested values to avoid bad detection\nfunction isMinimumViableSerializedError(value) {\n\treturn Boolean(value)\n\t\t&& typeof value === 'object'\n\t\t&& typeof value.message === 'string'\n\t\t&& !Array.isArray(value);\n}\n\nexport {addKnownErrorConstructor} from './error-constructors.js';\nexport {default as NonError} from 'non-error';\n", "import * as API from '../../types/logging/core';\n\nenum LogLevel {\n off = 0,\n error = 200,\n warn = 300,\n info = 400,\n debug = 500,\n trace = 600,\n all = Number.MAX_SAFE_INTEGER\n}\n\nconst loggers: {[key: string]: Logger} = Object.create(null);\nconst logLevels: Record<string, LogLevel> = {};\nexport const ROOT_LOGGER_NAME = 'gateway';\nlogLevels[ROOT_LOGGER_NAME] = LogLevel.trace;\nlet appender : (e: API.LogEvent) => void = (e) => {\n console[e.level](`${e.time.toISOString()} ${e.level.toUpperCase()} [${e.name}] - ${e.message}`, ...e.data);\n};\n\ntype LogLevelKey = Exclude<keyof typeof LogLevel, 'off' | 'all'>;\n\nexport interface Logger extends API.Logger {\n (level: LogLevelKey, message?: string, ...args: unknown[])\n}\n\nexport function logEvent(event: API.LogEvent) {\n const { name, level } = event;\n checkNameAndConfigureLevel(name);\n if (isLevelEnabledFor(level, name)) {\n appender(event);\n }\n}\n\nfunction log(this: Logger, name: string, level: LogLevelKey, message: string, ...data: unknown[]) {\n if (this.enabledFor(level)) {\n const time = new Date();\n const event: API.LogEvent = {time, level, name, message, data};\n appender(event);\n }\n}\n\nfunction isLevelEnabledFor(level: LogLevelKey, name: string) {\n const logLevelValue = LogLevel[level];\n const configuredLevel = logLevels[name];\n return configuredLevel >= logLevelValue;\n}\n\nfunction newLogger(name: string): Logger {\n checkNameAndConfigureLevel(name);\n const logger: Logger = function(level: LogLevelKey, message: string, ...args:unknown[]) {\n log.call(logger, name, level, message, ...args);\n } as Logger;\n function methods(key: string): key is LogLevelKey {\n return isNaN(Number(key));\n }\n for (const method of Object.keys(LogLevel).filter(methods)) {\n logger[method] = function(message: string, ...args: unknown[]) {\n log.call(logger, name, method, message, ...args);\n };\n }\n logger.enabledFor = function(level: LogLevelKey) {\n return isLevelEnabledFor(level, name);\n }\n logger.child = function (suffix: string) {\n return getLogger(`${name}.${suffix}`);\n }\n return logger;\n}\n\nfunction checkNameAndConfigureLevel(name: string) {\n if (!name.startsWith(ROOT_LOGGER_NAME)) throw new Error(`Logger name must start with ${ROOT_LOGGER_NAME}`);\n if (logLevels[name] === undefined) {\n const orderedEntries = Object.entries(logLevels).sort(([n1,], [n2,])=> n2.localeCompare(n1));\n const [, level] = orderedEntries.find(([prefix,]) => name.startsWith(prefix))!;\n logLevels[name] = level;\n }\n}\n\nexport function getLogger(name: string): API.Logger {\n let logger: Logger | undefined = loggers[name];\n if (logger === undefined) {\n logger = newLogger(name);\n loggers[name] = logger;\n }\n return logger;\n}\n\nexport function configure(config: API.LogConfig) {\n function updateLevels(prefix: string, level: API.LogConfigLevel) {\n for (const name of Object.keys(logLevels).filter(k => k.startsWith(prefix))) {\n logLevels[name] = LogLevel[level];\n }\n if (logLevels[prefix] === undefined) {\n logLevels[prefix] = LogLevel[level];\n }\n }\n\n const logLevel = config.level;\n\n if (typeof logLevel === 'string') {\n logLevels[ROOT_LOGGER_NAME] = LogLevel[logLevel];\n updateLevels(ROOT_LOGGER_NAME, logLevel);\n }\n else if (typeof logLevel === 'object') {\n const orderedEntries = Object.entries(logLevel).sort(([n1], [n2]) => n1.localeCompare(n2));\n for (const [prefix, level] of orderedEntries) {\n updateLevels(prefix, level);\n }\n }\n\n appender = config.appender ?? appender;\n}\n", "import type { LogConfig, LogEvent, Logger } from '../../types/logging/core';\n\nexport interface GatewayWorker {\n send<T>(payload: T): void\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n on(type: string, callback: (message: any) => void): void\n\n onmessage: ((this: GatewayWorker, message: MessageEvent) => Promise<void> | void) | null\n onerror: ((this: GatewayWorker, error: ErrorEvent) => void) | null\n\n exit(code?: number): void\n\n findParameter(name: string): string | null | undefined\n\n streamLogs(level: LogConfig['level']): Promise<{ getLogger: (name: string) => Logger }>\n\n importModule<T>(moduleName: string): Promise<T>\n}\n\nconst worker: GatewayWorker = {\n send: (): void => { },\n on: (): void => { },\n onmessage: null,\n onerror: null,\n exit: (): void => { },\n findParameter(name: string): string | null | undefined {\n let value = new URLSearchParams(globalThis.location?.search).get(name);\n if (!value) {\n const arg = globalThis.process?.argv\n .filter(a => a.startsWith('--'))\n .map((arg) => {\n const strings = arg.slice('--'.length).split('=');\n return [strings[0], strings[1]];\n })\n .find(([k, _v]) => k === name);\n if (arg) {\n [, value] = arg;\n }\n }\n return value;\n },\n async streamLogs(level: LogConfig['level'] = 'trace'): Promise<{ getLogger: (name: string) => Logger }> {\n const appender = (e: LogEvent) => {\n worker.send({\n log: {\n time: e.time.getTime(),\n level: e.level,\n name: e.name,\n message: e.message,\n data: e.data\n }\n });\n }\n const logging = await import('../logging/core.ts');\n logging.configure({ level, appender });\n return logging;\n },\n async importModule<T>(moduleName: string): Promise<T> {\n return await import(moduleName);\n }\n}\n\nif (typeof self !== 'undefined' && typeof postMessage === 'function' && typeof addEventListener === 'function') {\n worker.on = (event, callback) => {\n addEventListener(event, (message) => {\n callback(message);\n })\n }\n worker.send = <T>(payload: T) => {\n postMessage(payload)\n };\n if (typeof close === 'function') {\n worker.exit = close;\n }\n} else if (typeof process !== 'undefined') {\n (globalThis as { self?: unknown }).self = worker;\n worker.on = process.on.bind(process);\n\n const send = process.send?.bind(process);\n if (send) { // probably just loading the file from non worker context\n worker.send = <T>(payload: T) => {\n send(JSON.stringify({type: 'message', data: payload}));\n };\n }\n\n worker.on('disconnect', () => {\n process.exit(1);\n });\n\n process.on('unhandledRejection', (reason: unknown) => {\n if (send) {\n send(JSON.stringify({type: 'error', message: `Unhandled Rejection: ${reason instanceof Error ? reason.message : String(reason)}`}) );\n }\n });\n process.on('uncaughtException', (error) => {\n if (send) {\n send(JSON.stringify({type: 'error', message: `Uncaught Error: ${error.message}`}));\n }\n });\n worker.exit = process.exit.bind(process);\n}\n\nworker.on('message', (message: MessageEvent) => {\n if (worker.onmessage) {\n worker.onmessage(message);\n }\n});\n\nworker.on('error', (error: ErrorEvent) => {\n if (worker.onerror) {\n worker.onerror(error);\n }\n});\n\nexport default worker;\n", "import type { Logger } from '../../types/logging/api';\nimport type { WorkerCommandType } from './publisher.ts';\nimport type { PublishCommand } from './publisher/types.ts';\nimport { Metrics } from '../../types/metrics/api';\n\n// common code for worker and in-process publisher execution\n\nasync function importPreload(log: Logger, module: string) {\n try {\n const preload = await import(module);\n if (typeof preload === 'function') {\n return await preload();\n }\n if (typeof preload.default === 'function') {\n return await preload.default();\n }\n }\n catch (e) {\n log.error(`failed to load preload`, e);\n }\n}\n\nasync function importHandler(log: Logger, publishFn: string, cfg: unknown) {\n log.debug(`loading publisher from ${publishFn}`);\n let factory: {\n name?: string,\n create: (cfg: unknown, logger: Logger) => Promise<(command: PublishCommand) => Promise<unknown>>;\n } = await import(publishFn);\n if (typeof factory['default'] === 'object') {\n factory = factory['default'] as typeof factory;\n }\n return await factory.create(cfg, log.child(`publisher.${factory.name ?? publishFn}`));\n}\n\nexport class WorkerCommandExecutor {\n readonly #log: Logger;\n #handler?: (command: PublishCommand) => Promise<unknown>;\n #cleanupArg: unknown;\n\n constructor(log: Logger) {\n this.#log = log;\n }\n\n async #startHandler(arg: WorkerCommandType['start']): Promise<void> {\n const { publishFn, cfg } = arg;\n if (cfg?.preload) {\n const result = await importPreload(this.#log, cfg.preload);\n if (typeof result === 'object') {\n for (const key in result) {\n cfg[key] = result[key];\n }\n }\n }\n let handler: (command: PublishCommand) => Promise<unknown>;\n if (typeof publishFn === 'function') {\n handler = publishFn;\n }\n else {\n handler = await importHandler(this.#log, publishFn, cfg);\n }\n const cleanupArg = await handler('start');\n this.#handler = handler;\n this.#cleanupArg = cleanupArg;\n }\n\n async #stopHandler() {\n const cleanup = await this.#handler?.('stop');\n if (typeof cleanup === 'function') {\n await cleanup(this.#cleanupArg);\n }\n }\n\n async #handleUpdate(update: Metrics.Update) {\n if (!this.#handler) {\n throw new Error('worker not started');\n }\n await this.#handler(update);\n }\n\n async execute<C extends keyof WorkerCommandType>(cmd: C, arg: WorkerCommandType[C]) {\n switch (cmd) {\n case 'start': {\n await this.#startHandler(arg as WorkerCommandType['start']);\n break;\n }\n case 'stop': {\n await this.#stopHandler();\n break;\n }\n case 'update': {\n await this.#handleUpdate(arg as Metrics.Update);\n break;\n }\n }\n }\n}\n", "import type { LogConfig, Logger } from '../../types/logging/core';\nimport type { WorkerCommandType, WorkerRequest } from './publisher.ts';\nimport { WorkerCommandExecutor } from './worker-common.ts';\nimport type { GatewayWorker } from '../worker/worker.ts';\n\n\n// all imports except for worker should be dynamic. This way we can do preload before those imports\n// (very helpful in web tests that involve workers)\n\nasync function configureLogging(worker: GatewayWorker) {\n let logLevel = worker.findParameter('logLevel');\n\n if (logLevel?.startsWith('\"')) {\n try {\n logLevel = JSON.parse(logLevel);\n } catch (e) {\n logLevel = null;\n }\n }\n return await worker.streamLogs(logLevel as LogConfig['level'] ?? 'info');\n}\n\n\nfunction attach(worker: GatewayWorker, log: Logger) {\n const executor = new WorkerCommandExecutor(log);\n worker.onmessage = async (event: { data: WorkerRequest<keyof WorkerCommandType> }) => {\n const {id, cmd, arg} = event.data;\n try {\n await executor.execute(cmd, arg);\n worker.send({id, result: 'ok'});\n } catch (ex) {\n const {serializeError} = await import('serialize-error');\n const error = serializeError(ex);\n worker.send({id, error});\n }\n };\n}\n\nimport('../worker/worker.ts')\n .then((module) => module.default)\n .then(async (worker) => {\n const logging = await configureLogging(worker)\n const log = logging.getLogger('gateway.metrics.worker');\n attach(worker, log);\n worker.send({ready: true});\n }\n ).catch(e => console.error(e));\n"], "mappings": "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", "names": ["defineProperty", "object", "key", "value", "stringify", "isNonErrorSymbol", "NonError", "init_non_error", "__esmMin", "_NonError", "Superclass", "#handleCallback", "callback", "arguments_", "result", "error", "instance", "addKnownErrorConstructor", "constructor", "factory", "instance", "resolvedName", "error", "errorConstructors", "errorFactories", "list", "init_error_constructors", "__esmMin", "serialize_error_exports", "__export", "NonError", "addKnownErrorConstructor", "deserializeError", "isErrorLike", "serializeError", "value", "options", "maxDepth", "useToJSON", "destroyCircular", "isMinimumViableSerializedError", "newError", "errorProperties", "toJsonWasCalled", "toJSON", "init_serialize_error", "__esmMin", "init_non_error", "init_error_constructors", "from", "json", "name", "factory", "errorFactories", "ErrorConstructor", "errorConstructors", "seen", "to", "forceEnumerable", "depth", "serialize", "continueDestroyCircular", "key", "property", "enumerable", "processedValue", "core_exports", "__export", "ROOT_LOGGER_NAME", "configure", "getLogger", "logEvent", "event", "name", "level", "checkNameAndConfigureLevel", "isLevelEnabledFor", "appender", "log", "message", "data", "logLevelValue", "LogLevel", "logLevels", "newLogger", "logger", "args", "methods", "key", "method", "suffix", "orderedEntries", "n1", "n2", "prefix", "loggers", "config", "updateLevels", "k", "logLevel", "init_core", "__esmMin", "worker_exports", "__export", "worker_default", "worker", "init_worker", "__esmMin", "name", "value", "arg", "a", "strings", "k", "_v", "level", "appender", "e", "logging", "moduleName", "__toESM", "event", "callback", "message", "payload", "send", "reason", "error", "importPreload", "log", "module", "preload", "__toESM", "e", "importHandler", "publishFn", "cfg", "factory", "WorkerCommandExecutor", "#log", "#handler", "#cleanupArg", "#startHandler", "arg", "result", "key", "handler", "cleanupArg", "#stopHandler", "cleanup", "#handleUpdate", "update", "cmd", "configureLogging", "worker", "logLevel", "attach", "log", "executor", "WorkerCommandExecutor", "event", "id", "cmd", "arg", "ex", "serializeError", "error", "module"] }