From 453ca74ccc03f6eb4aa11dc0c64b5db0197b23e1 Mon Sep 17 00:00:00 2001 From: Github Action Date: Tue, 4 Aug 2026 11:14:30 +0000 Subject: [PATCH] chore: release v10.0.0 * (@GermanBluefox) Typescript 6 support * (@GermanBluefox) GUI was migrated to React 19 and MUI 9 * (@GermanBluefox) Showed host name in the instance selection dialog --- CHANGELOG_OLD.md | 5 + README.md | 7 +- build/lib/debugger.js | 2 +- build/lib/debugger.js.map | 2 +- build/lib/sandbox.js | 2 +- build/lib/sandbox.js.map | 2 +- build/main.js | 2 +- build/main.js.map | 2 +- io-package.json | 28 +- package-lock.json | 19997 +++++++++++++++++---------------- package.json | 230 +- src-admin/package-lock.json | 14 +- src-editor/package-lock.json | 22 - 13 files changed, 10303 insertions(+), 10012 deletions(-) diff --git a/CHANGELOG_OLD.md b/CHANGELOG_OLD.md index 9af928e0..0b14de1c 100644 --- a/CHANGELOG_OLD.md +++ b/CHANGELOG_OLD.md @@ -1,4 +1,9 @@ The newest change log is in README.md +## 9.2.2 (2026-05-07) +* (Eistee82) Fix: AI chat mode tooltip no longer covers the dropdown options (issue #2201) — moved tooltip to the left of the selector +* (Eistee82) Clarified the AI chat mode descriptions in the tooltip: Agent is for larger models with tool support and handles both analysis and script creation, Code is for smaller models without tool support (uses two-step plan-then-code) — translations updated in all 11 languages +* (@GermanBluefox) Added the "is state exists" block to blockly + ## 9.2.1 (2026-04-30) * (@GermanBluefox) See previous changelog entries diff --git a/README.md b/README.md index 0fc2c4a4..b302ffc2 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Executes Javascript, Typescript Scripts. --> ## Changelog -### **WORK IN PROGRESS** +### 10.0.0 (2026-08-04) * (@GermanBluefox) Typescript 6 support * (@GermanBluefox) GUI was migrated to React 19 and MUI 9 * (@GermanBluefox) Showed host name in the instance selection dialog @@ -48,11 +48,6 @@ Executes Javascript, Typescript Scripts. * (arteck) Performance optimizations done * (@GermanBluefox) Added on mouse over the value of the state -### 9.2.2 (2026-05-07) -* (Eistee82) Fix: AI chat mode tooltip no longer covers the dropdown options (issue #2201) — moved tooltip to the left of the selector -* (Eistee82) Clarified the AI chat mode descriptions in the tooltip: Agent is for larger models with tool support and handles both analysis and script creation, Code is for smaller models without tool support (uses two-step plan-then-code) — translations updated in all 11 languages -* (@GermanBluefox) Added the "is state exists" block to blockly - ## License The MIT License (MIT) diff --git a/build/lib/debugger.js b/build/lib/debugger.js index adab013d..1dedb01e 100644 --- a/build/lib/debugger.js +++ b/build/lib/debugger.js @@ -309,8 +309,8 @@ function createRepl(inspector) { selectedFrame = undefined; if (exitDebugRepl) { exitDebugRepl(); + exitDebugRepl = undefined; } - exitDebugRepl = undefined; } resetOnStart(); const INSPECT_OPTIONS = { colors: inspector.stdout.isTTY }; diff --git a/build/lib/debugger.js.map b/build/lib/debugger.js.map index 13d04144..5913c0d4 100644 --- a/build/lib/debugger.js.map +++ b/build/lib/debugger.js.map @@ -1 +1 @@ -{"version":3,"file":"debugger.js","sourceRoot":"","sources":["../../src/lib/debugger.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright Node.js contributors. All rights reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { join, resolve } from 'node:path';\nimport { type ReplOptions, type REPLServer, start } from 'node:repl';\nimport {\n debuglog as debuglogUtil,\n inspect as inspectUtil,\n type InspectOptions,\n type InspectOptionsStylized,\n type Style,\n} from 'node:util';\nimport { type Context, runInContext } from 'node:vm';\nimport { fileURLToPath } from 'node:url';\nimport { builtinModules as PUBLIC_BUILTINS } from 'node:module';\nimport type { Debugger, Runtime } from 'node:inspector';\n\nimport type { NodeInspector } from './inspect';\n\nconst debuglog = debuglogUtil('inspect');\n\ninterface PropertyPreview {\n /**\n * Property name.\n */\n name: string;\n /**\n * Object type. Accessor means that the property itself is an accessor property.\n */\n type: string;\n /**\n * User-friendly property value string.\n */\n value?: string | undefined;\n /**\n * Object subtype hint. Specified for object type values only.\n */\n subtype?: string | undefined;\n}\n/*const SHORTCUTS = {\n cont: 'c',\n next: 'n',\n step: 's',\n out: 'o',\n backtrace: 'bt',\n setBreakpoint: 'sb',\n clearBreakpoint: 'cb',\n run: 'r',\n};\n\nconst HELP = `\nrun, restart, r Run the application or reconnect\nkill Kill a running application or disconnect\n\ncont, c Resume execution\nnext, n Continue to next line in current file\nstep, s Step into, potentially entering a function\nout, o Step out, leaving the current function\nbacktrace, bt Print the current backtrace\nlist Print the source around the current line where execution\n is currently paused\n\nsetBreakpoint, sb Set a breakpoint\nclearBreakpoint, cb Clear a breakpoint\nbreakpoints List all known breakpoints\nbreakOnException Pause execution whenever an exception is thrown\nbreakOnUncaught Pause execution whenever an exception isn't caught\nbreakOnNone Don't pause on exceptions (this is the default)\n\nwatch(expr) Start watching the given expression\nunwatch(expr) Stop watching an expression\nwatchers Print all watched expressions and their current values\n\nexec(expr) Evaluate the expression and print the value\nrepl Enter a debug repl that works like exec\n\nscripts List application scripts that are currently loaded\nscripts(true) List all scripts (including node-internals)\n\nprofile Start CPU profiling session.\nprofileEnd Stop current CPU profiling session.\nprofiles Array of completed CPU profiling sessions.\nprofiles[n].save(filepath = 'node.cpuprofile')\n Save CPU profiling session to disk as JSON.\n\ntakeHeapSnapshot(filepath = 'node.heapsnapshot')\n Take a heap snapshot and save to disk as JSON.\n`.trim();*/\n\nconst FUNCTION_NAME_PATTERN = /^(?:function\\*? )?([^(\\s]+)\\(/;\nfunction extractFunctionName(description: string | undefined): string {\n const fnNameMatch = description?.match(FUNCTION_NAME_PATTERN);\n return fnNameMatch ? `: ${fnNameMatch[1]}` : '';\n}\n\n// process.binding is a method available on the process object, which allows you to load internal modules written in C++\n// @ts-expect-error binding is internal function\nconst NATIVES = PUBLIC_BUILTINS ? process.binding('natives') : {};\n\nfunction isNativeUrl(url: string): boolean {\n url = url.replace(/\\.js$/, '');\n if (PUBLIC_BUILTINS) {\n if (url.startsWith('internal/') || PUBLIC_BUILTINS.includes(url)) {\n return true;\n }\n }\n\n return url in NATIVES || url === 'bootstrap_node';\n}\n\nfunction getRelativePath(filenameOrURL: string): string {\n const dir = join(resolve(), 'x').slice(0, -1);\n\n const filename = filenameOrURL.startsWith('file://') ? fileURLToPath(filenameOrURL) : filenameOrURL;\n\n // Change a path to relative, if possible\n if (filename.indexOf(dir) === 0) {\n return filename.slice(dir.length);\n }\n return filename;\n}\n\nfunction toCallback(promise: Promise, callback: (...args: any[]) => void): void {\n function forward(...args: any[]): void {\n process.nextTick(() => callback(...args));\n }\n\n promise.then(forward.bind(null, null), forward);\n}\n\n// Adds spaces and prefix to number\n// maxN is a maximum number we should have space for\nfunction leftPad(n: number, prefix: string, maxN: number): string {\n const s = n.toString();\n const nchars = Math.max(2, String(maxN).length) + 1;\n const nspaces = nchars - s.length - 1;\n\n return prefix + ' '.repeat(nspaces) + s;\n}\n\nfunction markSourceColumn(sourceText: string, position: number, useColors?: boolean): string {\n if (!sourceText) {\n return '';\n }\n\n const head = sourceText.slice(0, position);\n let tail = sourceText.slice(position);\n\n // Colorize char if stdout supports colours\n if (useColors) {\n tail = tail.replace(/(.+?)([^\\w]|$)/, '\\u001b[32m$1\\u001b[39m$2');\n }\n\n // Return source line with coloured char at `position`\n return [head, tail].join('');\n}\n\nfunction extractErrorMessage(stack: string | undefined): string {\n if (!stack) {\n return '';\n }\n const m = stack.match(/^\\w+: ([^\\n]+)/);\n return m ? m[1] : stack;\n}\n\nfunction convertResultToError(result: Runtime.RemoteObject): Error {\n const { className, description } = result;\n const err = new Error(extractErrorMessage(description));\n err.stack = description;\n Object.defineProperty(err, 'name', { value: className });\n return err;\n}\n\nclass RemoteObject implements Runtime.RemoteObject {\n type: string;\n subtype?: string | undefined;\n className?: string | undefined;\n\n value: any;\n unserializableValue?: Runtime.UnserializableValue | undefined;\n description: string | undefined;\n objectId?: Runtime.RemoteObjectId | undefined;\n preview?: Runtime.ObjectPreview | undefined;\n customPreview?: Runtime.CustomPreview | undefined;\n\n constructor(attributes: Runtime.RemoteObject | undefined) {\n this.type = 'undefined';\n Object.assign(this, attributes);\n if (this.type === 'number') {\n this.value = this.unserializableValue ? +this.unserializableValue : +this.value;\n }\n }\n\n [inspectUtil.custom](_depth: number, opts: InspectOptionsStylized): string {\n function formatProperty(prop: PropertyPreview): any {\n switch (prop.type) {\n case 'string':\n case 'undefined':\n return inspectUtil(prop.value, opts);\n\n case 'number':\n case 'boolean':\n return opts.stylize(prop.value as string, prop.type);\n\n case 'object':\n case 'symbol':\n if (prop.subtype === 'date') {\n return inspectUtil(new Date(prop.value as string), opts);\n }\n if (prop.subtype === 'array') {\n return opts.stylize(prop.value as string, 'special');\n }\n return opts.stylize(prop.value as string, (prop.subtype as Style) || 'special');\n\n default:\n return prop.value;\n }\n }\n\n switch (this.type) {\n case 'boolean':\n case 'number':\n case 'string':\n case 'undefined':\n return inspectUtil(this.value, opts);\n\n case 'symbol':\n return opts.stylize(this.description as string, 'special');\n\n case 'function': {\n const fnName = extractFunctionName(this.description);\n const formatted = `[${this.className}${fnName}]`;\n return opts.stylize(formatted, 'special');\n }\n\n case 'object':\n switch (this.subtype) {\n case 'date':\n return inspectUtil(new Date(this.description as string), opts);\n\n case 'null':\n return inspectUtil(null, opts);\n\n case 'regexp':\n return opts.stylize(this.description as string, 'regexp');\n\n default:\n break;\n }\n if (this.preview) {\n const props: any[] = this.preview.properties.map((prop, idx) => {\n const value = formatProperty(prop);\n if (prop.name === `${idx}`) {\n return value;\n }\n return `${prop.name}: ${value}`;\n });\n if (this.preview.overflow) {\n props.push('...');\n }\n const singleLine = props.join(', ');\n const propString = singleLine.length > 60 ? props.join(',\\n ') : singleLine;\n\n return this.subtype === 'array' ? `[ ${propString} ]` : `{ ${propString} }`;\n }\n return this.description || '';\n\n default:\n return this.description || '';\n }\n }\n\n static fromEvalResult({ result, wasThrown }: { result: RemoteObject; wasThrown?: boolean }): RemoteObject | Error {\n if (wasThrown) {\n return convertResultToError(result);\n }\n return new RemoteObject(result);\n }\n}\n\nclass ScopeSnapshot implements Debugger.Scope {\n /**\n * Scope type.\n */\n type: string;\n /**\n * Object representing the scope. For global and with scopes it represents the actual object; for the rest of the scopes, it is artificial transient object enumerating scope variables as its properties.\n */\n object: Runtime.RemoteObject;\n\n name?: string | undefined;\n /**\n * Location in the source code where scope starts\n */\n startLocation?: Debugger.Location | undefined;\n /**\n * Location in the source code where scope ends\n */\n endLocation?: Debugger.Location | undefined;\n\n properties: Map;\n\n completionGroup: string[];\n\n constructor(scope: Debugger.Scope, properties: Runtime.PropertyDescriptor[]) {\n this.type = scope.type;\n this.object = scope.object;\n\n Object.assign(this, scope);\n\n this.properties = new Map(\n properties.map(prop => {\n const value = new RemoteObject(prop.value);\n return [prop.name, value];\n }),\n );\n\n this.completionGroup = properties.map(prop => prop.name);\n }\n\n [inspectUtil.custom](_depth: number, opts: InspectOptions): string {\n const type = `${this.type[0].toUpperCase()}${this.type.slice(1)}`;\n const name = this.name ? `<${this.name}>` : '';\n const prefix = `${type}${name} `;\n return inspectUtil(this.properties, opts).replace(/^Map /, prefix);\n }\n}\n/*\nfunction copyOwnProperties(target: any, source: any): void {\n Object.getOwnPropertyNames(source).forEach(prop => {\n const descriptor = Object.getOwnPropertyDescriptor(source, prop);\n if (descriptor) {\n Object.defineProperty(target, prop, descriptor);\n }\n });\n}\n\nfunction aliasProperties(target, mapping) {\n Object.keys(mapping).forEach((key) => {\n const descriptor = Object.getOwnPropertyDescriptor(target, key);\n Object.defineProperty(target, mapping[key], descriptor);\n });\n}\n*/\nexport default function createRepl(inspector: NodeInspector): () => REPLServer {\n const { Debugger, /*HeapProfiler, Profiler,*/ Runtime } = inspector;\n\n let repl: REPLServer;\n\n // Things we want to keep around\n // const history = { control: [], debug: [] };\n // const watchedExpressions = [];\n // const knownBreakpoints = [];\n // let pauseOnExceptionState = 'none';\n let lastCommand: string;\n\n // Things we need to reset when the app restarts\n let knownScripts: Record = {};\n let currentBacktrace: CallFrame[] | undefined;\n let selectedFrame: CallFrame | undefined;\n let exitDebugRepl: undefined | (() => void);\n\n function resetOnStart(): void {\n knownScripts = {};\n currentBacktrace = undefined;\n selectedFrame = undefined;\n\n if (exitDebugRepl) {\n exitDebugRepl();\n }\n exitDebugRepl = undefined;\n }\n\n resetOnStart();\n\n const INSPECT_OPTIONS: InspectOptions = { colors: inspector.stdout.isTTY };\n function inspect(value: any): string {\n return inspectUtil(value, INSPECT_OPTIONS);\n }\n\n function print(value: any, oneline = false): void {\n const text = typeof value === 'string' ? value : inspect(value);\n return inspector.print(text, oneline);\n }\n\n function getCurrentLocation(): Debugger.Location {\n if (!selectedFrame) {\n throw new Error('Requires execution to be paused');\n }\n return selectedFrame.location;\n }\n\n function isCurrentScript(script: Debugger.ScriptParsedEventDataType & { isNative: boolean }): boolean {\n return !!selectedFrame && getCurrentLocation().scriptId === script.scriptId;\n }\n\n function formatScripts(displayNatives = false): string {\n function isVisible(script: Debugger.ScriptParsedEventDataType & { isNative: boolean }): boolean {\n if (displayNatives) {\n return true;\n }\n return !script.isNative || isCurrentScript(script);\n }\n\n return Object.keys(knownScripts)\n .map(scriptId => knownScripts[scriptId])\n .filter(isVisible)\n .map(script => {\n const isCurrent = isCurrentScript(script);\n const { isNative, url } = script;\n const name = `${getRelativePath(url)}${isNative ? ' ' : ''}`;\n return `${isCurrent ? '*' : ' '} ${script.scriptId}: ${name}`;\n })\n .join('\\n');\n }\n function listScripts(displayNatives = false): void {\n print(formatScripts(displayNatives));\n }\n // @ts-expect-error no idea what this is\n listScripts[inspectUtil.custom] = function listWithoutInternal(): string {\n return formatScripts();\n };\n /*\n const profiles = [];\n class Profile {\n constructor(data) {\n this.data = data;\n }\n\n static createAndRegister({ profile }) {\n const p = new Profile(profile);\n profiles.push(p);\n return p;\n }\n\n [util.inspect.custom](depth, { stylize }) {\n const { startTime, endTime } = this.data;\n return stylize(`[Profile ${endTime - startTime}μs]`, 'special');\n }\n\n save(filename = 'node.cpuprofile') {\n const absoluteFile = Path.resolve(filename);\n const json = JSON.stringify(this.data);\n FS.writeFileSync(absoluteFile, json);\n print(`Saved profile to ${absoluteFile}`);\n }\n }\n*/\n class SourceSnippet {\n scriptSource: string;\n /**\n * Script identifier as reported in the Debugger.scriptParsed.\n */\n scriptId: Runtime.ScriptId;\n /**\n * Line number in the script (0-based).\n */\n lineNumber: number;\n /**\n * Column number in the script (0-based).\n */\n columnNumber: number;\n delta: number;\n constructor(location: Debugger.Location, delta: number, scriptSource: string) {\n this.lineNumber = location.lineNumber;\n this.columnNumber = location.columnNumber || 0;\n this.scriptId = location.scriptId;\n this.scriptSource = scriptSource;\n this.delta = delta;\n Object.assign(this, location);\n }\n\n [inspectUtil.custom](_depth: number, options: InspectOptions): string {\n const { /* scriptId, */ lineNumber, columnNumber, delta, scriptSource } = this;\n const start = Math.max(1, lineNumber - delta + 1);\n const end = lineNumber + delta + 1;\n\n const lines = scriptSource.split('\\n');\n return lines\n .slice(start - 1, end)\n .map((lineText, offset) => {\n const i = start + offset;\n const isCurrent = i === lineNumber + 1;\n\n const markedLine = isCurrent ? markSourceColumn(lineText, columnNumber, options.colors) : lineText;\n\n /*\n let isBreakpoint = false;\n knownBreakpoints.forEach(({ location }) => {\n if (!location) return;\n if (scriptId === location.scriptId &&\n i === (location.lineNumber + 1)) {\n isBreakpoint = true;\n }\n });\n */\n\n let prefixChar = ' ';\n if (isCurrent) {\n prefixChar = '>';\n } /*else if (isBreakpoint) {\n prefixChar = '*';\n }*/\n return `${leftPad(i, prefixChar, end)} ${markedLine}`;\n })\n .join('\\n');\n }\n }\n\n function getSourceSnippet(location: Debugger.Location, delta: number = 5): SourceSnippet {\n const { scriptId } = location;\n return Debugger.getScriptSource({ scriptId }).then(\n ({ scriptSource }: Debugger.GetScriptSourceReturnType) => new SourceSnippet(location, delta, scriptSource),\n );\n }\n\n class CallFrame implements Debugger.CallFrame {\n /**\n * Call frame identifier. This identifier is only valid while the virtual machine is paused.\n */\n callFrameId: Debugger.CallFrameId;\n /**\n * Name of the JavaScript function called on this call frame.\n */\n functionName: string;\n /**\n * Location in the source code.\n */\n functionLocation?: Debugger.Location | undefined;\n /**\n * Location in the source code.\n */\n location: Debugger.Location;\n /**\n * JavaScript script name or url.\n */\n url: string;\n /**\n * Scope chain for this call frame.\n */\n scopeChain: Debugger.Scope[];\n /**\n * this object for this call frame.\n */\n this: Runtime.RemoteObject;\n /**\n * The value being returned if the function is at return point.\n */\n returnValue?: Runtime.RemoteObject | undefined;\n\n constructor(callFrame: Debugger.CallFrame) {\n this.functionName = callFrame.functionName;\n this.url = callFrame.url;\n this.scopeChain = callFrame.scopeChain;\n this.this = callFrame.this;\n this.returnValue = callFrame.returnValue;\n this.location = callFrame.location;\n this.callFrameId = callFrame.callFrameId;\n\n Object.assign(this, callFrame);\n }\n\n loadScopes(): Promise {\n return Promise.all(\n this.scopeChain\n .filter(scope => scope.type !== 'global')\n .map(scope => {\n const { objectId } = scope.object;\n return Runtime.getProperties({\n objectId,\n generatePreview: true,\n }).then(({ result }: Runtime.GetPropertiesReturnType) => {\n return new ScopeSnapshot(scope, result);\n });\n }),\n );\n }\n\n list(delta: number = 5): SourceSnippet {\n return getSourceSnippet(this.location, delta);\n }\n }\n\n class Backtrace extends Array {\n [inspectUtil.custom](): string {\n return this.map((callFrame, idx) => {\n const {\n location: { scriptId, lineNumber, columnNumber },\n functionName,\n } = callFrame;\n const name = functionName || '(anonymous)';\n\n const script = knownScripts[scriptId];\n const relativeUrl = (script && getRelativePath(script.url)) || '';\n const frameLocation = `${relativeUrl}:${lineNumber + 1}:${columnNumber}`;\n\n return `#${idx} ${name} ${frameLocation}`;\n }).join('\\n');\n }\n\n static from(callFrames: CallFrame[]): CallFrame[] {\n return super.from(\n Array.from(callFrames).map(callFrame => {\n if (callFrame instanceof CallFrame) {\n return callFrame;\n }\n return new CallFrame(callFrame);\n }),\n );\n }\n }\n\n function prepareControlCode(input: string): string {\n if (input === '\\n') {\n return lastCommand;\n }\n // exec process.title => exec(\"process.title\");\n const match = input.match(/^\\s*exec\\s+([^\\n]*)/);\n if (match) {\n lastCommand = `exec(${JSON.stringify(match[1])})`;\n } else {\n lastCommand = input;\n }\n return lastCommand;\n }\n\n // function evalInCurrentContext(code) {\n // // Repl asked for scope variables\n // if (code === '.scope') {\n // if (!selectedFrame) {\n // return Promise.reject(new Error('Requires execution to be paused'));\n // }\n // return selectedFrame.loadScopes().then((scopes) => {\n // return scopes.map((scope) => scope.completionGroup);\n // });\n // }\n //\n // if (selectedFrame) {\n // return Debugger.evaluateOnCallFrame({\n // callFrameId: selectedFrame.callFrameId,\n // expression: code,\n // objectGroup: 'node-inspect',\n // generatePreview: true,\n // }).then(RemoteObject.fromEvalResult);\n // }\n // return Runtime.evaluate({\n // expression: code,\n // objectGroup: 'node-inspect',\n // generatePreview: true,\n // }).then(RemoteObject.fromEvalResult);\n // }\n\n function controlEval(\n input: string,\n context: Context,\n filename: string,\n callback: (error: Error | null, result?: any) => void,\n ): void {\n debuglog('eval:', input);\n function returnToCallback(error: Error | null, result?: any): void {\n debuglog('end-eval:', input, error);\n callback(error, result);\n }\n\n try {\n const code = prepareControlCode(input);\n const result = runInContext(code, context, filename);\n\n if (result && typeof result.then === 'function') {\n toCallback(result, returnToCallback);\n return;\n }\n returnToCallback(null, result);\n } catch (e: any) {\n returnToCallback(e as Error);\n }\n }\n\n // function debugEval(input, context, filename, callback) {\n // debuglog('eval:', input);\n // function returnToCallback(error, result) {\n // debuglog('end-eval:', input, error);\n // callback(error, result);\n // }\n //\n // try {\n // const result = evalInCurrentContext(input);\n //\n // if (result && typeof result.then === 'function') {\n // toCallback(result, returnToCallback);\n // return;\n // }\n // returnToCallback(null, result);\n // } catch (e) {\n // returnToCallback(e);\n // }\n // }\n\n /*function formatWatchers(verbose = false) {\n if (!watchedExpressions.length) {\n return Promise.resolve('');\n }\n\n const inspectValue = (expr) =>\n evalInCurrentContext(expr)\n // .then(formatValue)\n .catch((error) => `<${error.message}>`);\n const lastIndex = watchedExpressions.length - 1;\n\n return Promise.all(watchedExpressions.map(inspectValue))\n .then((values) => {\n const lines = watchedExpressions\n .map((expr, idx) => {\n const prefix = `${leftPad(idx, ' ', lastIndex)}: ${expr} =`;\n const value = inspect(values[idx], { colors: true });\n if (value.indexOf('\\n') === -1) {\n return `${prefix} ${value}`;\n }\n return `${prefix}\\n ${value.split('\\n').join('\\n ')}`;\n });\n return lines.join('\\n');\n })\n .then((valueList) => {\n return verbose ? `Watchers:\\n${valueList}\\n` : valueList;\n });\n }*/\n\n //function watchers(verbose = false) {\n // return formatWatchers(verbose).then(print);\n //}\n\n // List source code\n // function list(delta = 5) {\n // return selectedFrame.list(delta)\n // .then(null, (error) => {\n // print('You can\\'t list source code right now');\n // throw error;\n // });\n // }\n\n //function handleBreakpointResolved({ breakpointId, location }) {\n // const script = knownScripts[location.scriptId];\n // const scriptUrl = script && script.url;\n // if (scriptUrl) {\n // Object.assign(location, { scriptUrl });\n // }\n // const isExisting = knownBreakpoints.some((bp) => {\n // if (bp.breakpointId === breakpointId) {\n // Object.assign(bp, { location });\n // return true;\n // }\n // return false;\n // });\n // if (!isExisting) {\n // knownBreakpoints.push({ breakpointId, location });\n // }\n //}\n\n // function listBreakpoints() {\n // if (!knownBreakpoints.length) {\n // print('No breakpoints yet');\n // return;\n // }\n //\n // function formatLocation(location) {\n // if (!location) return '';\n // const script = knownScripts[location.scriptId];\n // const scriptUrl = script ? script.url : location.scriptUrl;\n // return `${getRelativePath(scriptUrl)}:${location.lineNumber + 1}`;\n // }\n // const breaklist = knownBreakpoints\n // .map((bp, idx) => `#${idx} ${formatLocation(bp.location)}`)\n // .join('\\n');\n // print(breaklist);\n // }\n\n // function setBreakpoint(script, line, condition, silent) {\n // function registerBreakpoint({ breakpointId, actualLocation }) {\n // handleBreakpointResolved({ breakpointId, location: actualLocation });\n // if (actualLocation && actualLocation.scriptId) {\n // if (!silent) return getSourceSnippet(actualLocation, 5);\n // } else {\n // print(`Warning: script '${script}' was not loaded yet.`);\n // }\n // return undefined;\n // }\n //\n // // setBreakpoint(): set breakpoint at current location\n // if (script === undefined) {\n // return Debugger\n // .setBreakpoint({ location: getCurrentLocation(), condition })\n // .then(registerBreakpoint);\n // }\n //\n // // setBreakpoint(line): set breakpoint in current script at specific line\n // if (line === undefined && typeof script === 'number') {\n // const location = {\n // scriptId: getCurrentLocation().scriptId,\n // lineNumber: script - 1,\n // };\n // return Debugger.setBreakpoint({ location, condition })\n // .then(registerBreakpoint);\n // }\n //\n // if (typeof script !== 'string') {\n // throw new TypeError(`setBreakpoint() expects a string, got ${script}`);\n // }\n //\n // // setBreakpoint('fn()'): Break when a function is called\n // if (script.endsWith('()')) {\n // const debugExpr = `debug(${script.slice(0, -2)})`;\n // const debugCall = selectedFrame\n // ? Debugger.evaluateOnCallFrame({\n // callFrameId: selectedFrame.callFrameId,\n // expression: debugExpr,\n // includeCommandLineAPI: true,\n // })\n // : Runtime.evaluate({\n // expression: debugExpr,\n // includeCommandLineAPI: true,\n // });\n // return debugCall.then(({ result, wasThrown }) => {\n // if (wasThrown) return convertResultToError(result);\n // return undefined; // This breakpoint can't be removed the same way\n // });\n // }\n //\n // // setBreakpoint('scriptname')\n // let scriptId = null;\n // let ambiguous = false;\n // if (knownScripts[script]) {\n // scriptId = script;\n // } else {\n // for (const id of Object.keys(knownScripts)) {\n // const scriptUrl = knownScripts[id].url;\n // if (scriptUrl && scriptUrl.indexOf(script) !== -1) {\n // if (scriptId !== null) {\n // ambiguous = true;\n // }\n // scriptId = id;\n // }\n // }\n // }\n //\n // if (ambiguous) {\n // print('Script name is ambiguous');\n // return undefined;\n // }\n // if (line <= 0) {\n // print('Line should be a positive value');\n // return undefined;\n // }\n //\n // if (scriptId !== null) {\n // const location = { scriptId, lineNumber: line - 1 };\n // return Debugger.setBreakpoint({ location, condition })\n // .then(registerBreakpoint);\n // }\n //\n // const escapedPath = script.replace(/([/\\\\.?*()^${}|[\\]])/g, '\\\\$1');\n // const urlRegex = `^(.*[\\\\/\\\\\\\\])?${escapedPath}$`;\n //\n // return Debugger\n // .setBreakpointByUrl({ urlRegex, lineNumber: line - 1, condition })\n // .then((bp) => {\n // // TODO: handle bp.locations in case the regex matches existing files\n // if (!bp.location) { // Fake it for now.\n // Object.assign(bp, {\n // actualLocation: {\n // scriptUrl: `.*/${script}$`,\n // lineNumber: line - 1,\n // },\n // });\n // }\n // return registerBreakpoint(bp);\n // });\n // }\n //\n // function clearBreakpoint(url, line) {\n // const breakpoint = knownBreakpoints.find(({ location }) => {\n // if (!location) return false;\n // const script = knownScripts[location.scriptId];\n // if (!script) return false;\n // return (\n // script.url.indexOf(url) !== -1 && (location.lineNumber + 1) === line\n // );\n // });\n // if (!breakpoint) {\n // print(`Could not find breakpoint at ${url}:${line}`);\n // return Promise.resolve();\n // }\n // return Debugger.removeBreakpoint({ breakpointId: breakpoint.breakpointId })\n // .then(() => {\n // const idx = knownBreakpoints.indexOf(breakpoint);\n // knownBreakpoints.splice(idx, 1);\n // });\n // }\n //\n // function restoreBreakpoints() {\n // const lastBreakpoints = knownBreakpoints.slice();\n // knownBreakpoints.length = 0;\n // const newBreakpoints = lastBreakpoints\n // .filter(({ location }) => !!location.scriptUrl)\n // .map(({ location }) =>\n // setBreakpoint(location.scriptUrl, location.lineNumber + 1));\n // if (!newBreakpoints.length) return Promise.resolve();\n // return Promise.all(newBreakpoints).then((results) => {\n // print(`${results.length} breakpoints restored.`);\n // });\n // }\n\n // function setPauseOnExceptions(state) {\n // return Debugger.setPauseOnExceptions({ state })\n // .then(() => {\n // pauseOnExceptionState = state;\n // });\n // }\n\n Debugger.on('paused', (data: Debugger.PausedEventDataType): void => {\n const callFrames: CallFrame[] = data.callFrames as CallFrame[];\n const reason: string = data.reason;\n\n if (process.env.NODE_INSPECT_RESUME_ON_START === '1' && reason === 'Break on start') {\n debuglog('Paused on start, but NODE_INSPECT_RESUME_ON_START environment variable is set to 1, resuming');\n inspector.client.callMethod('Debugger.resume');\n return;\n }\n\n // Save execution context's data\n currentBacktrace = Backtrace.from(callFrames);\n selectedFrame = currentBacktrace[0];\n // const { scriptId, lineNumber } = selectedFrame.location;\n\n // const breakType = reason === 'other' ? 'break' : reason;\n // const script = knownScripts[scriptId];\n // const scriptUrl = script ? getRelativePath(script.url) : '[unknown]';\n\n // const header = `${breakType} in ${scriptUrl}:${lineNumber + 1}`;\n\n void inspector.suspendReplWhile(() => {\n const context = selectedFrame?.list(3);\n inspect(context);\n });\n });\n\n function handleResumed(): void {\n currentBacktrace = undefined;\n selectedFrame = undefined;\n }\n\n Debugger.on('resumed', handleResumed);\n\n //Debugger.on('breakpointResolved', handleBreakpointResolved);\n\n Debugger.on('scriptParsed', (script: Debugger.ScriptParsedEventDataType) => {\n const { scriptId, url } = script;\n if (url) {\n knownScripts[scriptId] = Object.assign(\n {\n isNative: isNativeUrl(url),\n },\n script,\n );\n }\n });\n\n /*Profiler.on('consoleProfileFinished', ({ profile }) => {\n Profile.createAndRegister({ profile });\n print([\n 'Captured new CPU profile.',\n `Access it with profiles[${profiles.length - 1}]`\n ].join('\\n'));\n });*/\n\n function initializeContext(context: Context): void {\n Object.defineProperty(context, 'Debugger', {\n value: inspector.Debugger,\n enumerable: true,\n configurable: true,\n // @ts-expect-error fix later\n writeable: false,\n });\n Object.defineProperty(context, 'HeapProfiler', {\n value: inspector.HeapProfiler,\n enumerable: true,\n configurable: true,\n // @ts-expect-error fix later\n writeable: false,\n });\n Object.defineProperty(context, 'Profiler', {\n value: inspector.Profiler,\n enumerable: true,\n configurable: true,\n // @ts-expect-error fix later\n writeable: false,\n });\n Object.defineProperty(context, 'Runtime', {\n value: inspector.Runtime,\n enumerable: true,\n configurable: true,\n // @ts-expect-error fix later\n writeable: false,\n });\n\n /*copyOwnProperties(context, {\n get help() {\n print(HELP);\n },\n\n get run() {\n return inspector.run();\n },\n\n get kill() {\n return inspector.killChild();\n },\n\n get restart() {\n return inspector.run();\n },\n\n get cont() {\n handleResumed();\n return Debugger.resume();\n },\n\n get next() {\n handleResumed();\n return Debugger.stepOver();\n },\n\n get step() {\n handleResumed();\n return Debugger.stepInto();\n },\n\n get out() {\n handleResumed();\n return Debugger.stepOut();\n },\n\n get pause() {\n return Debugger.pause();\n },\n\n get backtrace() {\n return currentBacktrace;\n },\n\n get breakpoints() {\n return listBreakpoints();\n },\n\n exec(expr) {\n return evalInCurrentContext(expr);\n },\n\n get profile() {\n return Profiler.start();\n },\n\n get profileEnd() {\n return Profiler.stop()\n .then(Profile.createAndRegister);\n },\n\n get profiles() {\n return profiles;\n },\n\n takeHeapSnapshot(filename = 'node.heapsnapshot') {\n return new Promise((resolve, reject) => {\n const absoluteFile = Path.resolve(filename);\n const writer = FS.createWriteStream(absoluteFile);\n let sizeWritten = 0;\n function onProgress({ done, total, finished }) {\n if (finished) {\n print('Heap snaphost prepared.');\n } else {\n print(`Heap snapshot: ${done}/${total}`, true);\n }\n }\n function onChunk({ chunk }) {\n sizeWritten += chunk.length;\n writer.write(chunk);\n print(`Writing snapshot: ${sizeWritten}`, true);\n }\n function onResolve() {\n writer.end(() => {\n teardown();\n print(`Wrote snapshot: ${absoluteFile}`);\n resolve();\n });\n }\n function onReject(error) {\n teardown();\n reject(error);\n }\n function teardown() {\n HeapProfiler.removeListener(\n 'reportHeapSnapshotProgress', onProgress);\n HeapProfiler.removeListener('addHeapSnapshotChunk', onChunk);\n }\n\n HeapProfiler.on('reportHeapSnapshotProgress', onProgress);\n HeapProfiler.on('addHeapSnapshotChunk', onChunk);\n\n print('Heap snapshot: 0/0', true);\n HeapProfiler.takeHeapSnapshot({ reportProgress: true })\n .then(onResolve, onReject);\n });\n },\n\n get watchers() {\n return watchers();\n },\n\n watch(expr) {\n watchedExpressions.push(expr);\n },\n\n unwatch(expr) {\n const index = watchedExpressions.indexOf(expr);\n\n // Unwatch by expression\n // or\n // Unwatch by watcher number\n watchedExpressions.splice(index !== -1 ? index : +expr, 1);\n },\n\n get repl() {\n // Don't display any default messages\n const listeners = repl.listeners('SIGINT').slice(0);\n repl.removeAllListeners('SIGINT');\n\n const oldContext = repl.context;\n\n exitDebugRepl = () => {\n // Restore all listeners\n process.nextTick(() => {\n listeners.forEach((listener) => {\n repl.on('SIGINT', listener);\n });\n });\n\n // Exit debug repl\n repl.eval = controlEval;\n\n // Swap history\n history.debug = repl.history;\n repl.history = history.control;\n\n repl.context = oldContext;\n repl.setPrompt('debug> ');\n repl.displayPrompt();\n\n repl.removeListener('SIGINT', exitDebugRepl);\n repl.removeListener('exit', exitDebugRepl);\n\n exitDebugRepl = null;\n };\n\n // Exit debug repl on SIGINT\n repl.on('SIGINT', exitDebugRepl);\n\n // Exit debug repl on repl exit\n repl.on('exit', exitDebugRepl);\n\n // Set new\n repl.eval = debugEval;\n repl.context = {};\n\n // Swap history\n history.control = repl.history;\n repl.history = history.debug;\n\n repl.setPrompt('> ');\n\n print('Press Ctrl + C to leave debug repl');\n repl.displayPrompt();\n },\n\n get version() {\n return Runtime.evaluate({\n expression: 'process.versions.v8',\n contextId: 1,\n returnByValue: true,\n }).then(({ result }) => {\n print(result.value);\n });\n },\n\n scripts: listScripts,\n\n //setBreakpoint,\n //clearBreakpoint,\n setPauseOnExceptions,\n get breakOnException() {\n return setPauseOnExceptions('all');\n },\n get breakOnUncaught() {\n return setPauseOnExceptions('uncaught');\n },\n get breakOnNone() {\n return setPauseOnExceptions('none');\n },\n\n list,\n });*/\n //aliasProperties(context, SHORTCUTS);\n }\n\n function initAfterStart(): Promise {\n const setupTasks = [\n Runtime.enable(),\n //Profiler.enable(),\n //Profiler.setSamplingInterval({ interval: 100 }),\n Debugger.enable(),\n Debugger.setPauseOnExceptions({ state: 'none' }),\n Debugger.setAsyncCallStackDepth({ maxDepth: 1 }),\n Debugger.setBlackboxPatterns({ patterns: [] }),\n // Debugger.setPauseOnExceptions({ state: 'all' }),\n //restoreBreakpoints(),\n Runtime.runIfWaitingForDebugger(),\n ];\n return Promise.all(setupTasks);\n }\n\n return function startRepl(): REPLServer {\n inspector.client.on('close', () => resetOnStart());\n inspector.client.on('ready', () => {\n initAfterStart().catch(err => {\n print(`Error starting inspector: ${err.message}`);\n });\n });\n\n const replOptions: ReplOptions = {\n prompt: 'debug> ',\n input: inspector.stdin,\n output: inspector.stdout,\n eval: controlEval,\n useGlobal: false,\n ignoreUndefined: true,\n };\n\n repl = start(replOptions);\n initializeContext(repl.context);\n repl.on('reset', initializeContext);\n\n repl.defineCommand('interrupt', () => {\n // We want this for testing purposes where sending CTRL-C can be tricky.\n repl.emit('SIGINT');\n });\n\n // Init once for the initial connection\n initAfterStart().catch(err => {\n print(`Error starting inspector: ${err.message}`);\n });\n\n return repl;\n };\n}\n"]} \ No newline at end of file +{"version":3,"file":"debugger.js","sourceRoot":"","sources":["../../src/lib/debugger.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright Node.js contributors. All rights reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\nimport { join, resolve } from 'node:path';\nimport { type ReplOptions, type REPLServer, start } from 'node:repl';\nimport {\n debuglog as debuglogUtil,\n inspect as inspectUtil,\n type InspectOptions,\n type InspectOptionsStylized,\n type Style,\n} from 'node:util';\nimport { type Context, runInContext } from 'node:vm';\nimport { fileURLToPath } from 'node:url';\nimport { builtinModules as PUBLIC_BUILTINS } from 'node:module';\nimport type { Debugger, Runtime } from 'node:inspector';\n\nimport type { NodeInspector } from './inspect';\n\nconst debuglog = debuglogUtil('inspect');\n\ninterface PropertyPreview {\n /**\n * Property name.\n */\n name: string;\n /**\n * Object type. Accessor means that the property itself is an accessor property.\n */\n type: string;\n /**\n * User-friendly property value string.\n */\n value?: string | undefined;\n /**\n * Object subtype hint. Specified for object type values only.\n */\n subtype?: string | undefined;\n}\n/*const SHORTCUTS = {\n cont: 'c',\n next: 'n',\n step: 's',\n out: 'o',\n backtrace: 'bt',\n setBreakpoint: 'sb',\n clearBreakpoint: 'cb',\n run: 'r',\n};\n\nconst HELP = `\nrun, restart, r Run the application or reconnect\nkill Kill a running application or disconnect\n\ncont, c Resume execution\nnext, n Continue to next line in current file\nstep, s Step into, potentially entering a function\nout, o Step out, leaving the current function\nbacktrace, bt Print the current backtrace\nlist Print the source around the current line where execution\n is currently paused\n\nsetBreakpoint, sb Set a breakpoint\nclearBreakpoint, cb Clear a breakpoint\nbreakpoints List all known breakpoints\nbreakOnException Pause execution whenever an exception is thrown\nbreakOnUncaught Pause execution whenever an exception isn't caught\nbreakOnNone Don't pause on exceptions (this is the default)\n\nwatch(expr) Start watching the given expression\nunwatch(expr) Stop watching an expression\nwatchers Print all watched expressions and their current values\n\nexec(expr) Evaluate the expression and print the value\nrepl Enter a debug repl that works like exec\n\nscripts List application scripts that are currently loaded\nscripts(true) List all scripts (including node-internals)\n\nprofile Start CPU profiling session.\nprofileEnd Stop current CPU profiling session.\nprofiles Array of completed CPU profiling sessions.\nprofiles[n].save(filepath = 'node.cpuprofile')\n Save CPU profiling session to disk as JSON.\n\ntakeHeapSnapshot(filepath = 'node.heapsnapshot')\n Take a heap snapshot and save to disk as JSON.\n`.trim();*/\n\nconst FUNCTION_NAME_PATTERN = /^(?:function\\*? )?([^(\\s]+)\\(/;\nfunction extractFunctionName(description: string | undefined): string {\n const fnNameMatch = description?.match(FUNCTION_NAME_PATTERN);\n return fnNameMatch ? `: ${fnNameMatch[1]}` : '';\n}\n\n// process.binding is a method available on the process object, which allows you to load internal modules written in C++\n// @ts-expect-error binding is internal function\nconst NATIVES = PUBLIC_BUILTINS ? process.binding('natives') : {};\n\nfunction isNativeUrl(url: string): boolean {\n url = url.replace(/\\.js$/, '');\n if (PUBLIC_BUILTINS) {\n if (url.startsWith('internal/') || PUBLIC_BUILTINS.includes(url)) {\n return true;\n }\n }\n\n return url in NATIVES || url === 'bootstrap_node';\n}\n\nfunction getRelativePath(filenameOrURL: string): string {\n const dir = join(resolve(), 'x').slice(0, -1);\n\n const filename = filenameOrURL.startsWith('file://') ? fileURLToPath(filenameOrURL) : filenameOrURL;\n\n // Change a path to relative, if possible\n if (filename.indexOf(dir) === 0) {\n return filename.slice(dir.length);\n }\n return filename;\n}\n\nfunction toCallback(promise: Promise, callback: (...args: any[]) => void): void {\n function forward(...args: any[]): void {\n process.nextTick(() => callback(...args));\n }\n\n promise.then(forward.bind(null, null), forward);\n}\n\n// Adds spaces and prefix to number\n// maxN is a maximum number we should have space for\nfunction leftPad(n: number, prefix: string, maxN: number): string {\n const s = n.toString();\n const nchars = Math.max(2, String(maxN).length) + 1;\n const nspaces = nchars - s.length - 1;\n\n return prefix + ' '.repeat(nspaces) + s;\n}\n\nfunction markSourceColumn(sourceText: string, position: number, useColors?: boolean): string {\n if (!sourceText) {\n return '';\n }\n\n const head = sourceText.slice(0, position);\n let tail = sourceText.slice(position);\n\n // Colorize char if stdout supports colours\n if (useColors) {\n tail = tail.replace(/(.+?)([^\\w]|$)/, '\\u001b[32m$1\\u001b[39m$2');\n }\n\n // Return source line with coloured char at `position`\n return [head, tail].join('');\n}\n\nfunction extractErrorMessage(stack: string | undefined): string {\n if (!stack) {\n return '';\n }\n const m = stack.match(/^\\w+: ([^\\n]+)/);\n return m ? m[1] : stack;\n}\n\nfunction convertResultToError(result: Runtime.RemoteObject): Error {\n const { className, description } = result;\n const err = new Error(extractErrorMessage(description));\n err.stack = description;\n Object.defineProperty(err, 'name', { value: className });\n return err;\n}\n\nclass RemoteObject implements Runtime.RemoteObject {\n type: string;\n subtype?: string | undefined;\n className?: string | undefined;\n\n value: any;\n unserializableValue?: Runtime.UnserializableValue | undefined;\n description: string | undefined;\n objectId?: Runtime.RemoteObjectId | undefined;\n preview?: Runtime.ObjectPreview | undefined;\n customPreview?: Runtime.CustomPreview | undefined;\n\n constructor(attributes: Runtime.RemoteObject | undefined) {\n this.type = 'undefined';\n Object.assign(this, attributes);\n if (this.type === 'number') {\n this.value = this.unserializableValue ? +this.unserializableValue : +this.value;\n }\n }\n\n [inspectUtil.custom](_depth: number, opts: InspectOptionsStylized): string {\n function formatProperty(prop: PropertyPreview): any {\n switch (prop.type) {\n case 'string':\n case 'undefined':\n return inspectUtil(prop.value, opts);\n\n case 'number':\n case 'boolean':\n return opts.stylize(prop.value as string, prop.type);\n\n case 'object':\n case 'symbol':\n if (prop.subtype === 'date') {\n return inspectUtil(new Date(prop.value as string), opts);\n }\n if (prop.subtype === 'array') {\n return opts.stylize(prop.value as string, 'special');\n }\n return opts.stylize(prop.value as string, (prop.subtype as Style) || 'special');\n\n default:\n return prop.value;\n }\n }\n\n switch (this.type) {\n case 'boolean':\n case 'number':\n case 'string':\n case 'undefined':\n return inspectUtil(this.value, opts);\n\n case 'symbol':\n return opts.stylize(this.description as string, 'special');\n\n case 'function': {\n const fnName = extractFunctionName(this.description);\n const formatted = `[${this.className}${fnName}]`;\n return opts.stylize(formatted, 'special');\n }\n\n case 'object':\n switch (this.subtype) {\n case 'date':\n return inspectUtil(new Date(this.description as string), opts);\n\n case 'null':\n return inspectUtil(null, opts);\n\n case 'regexp':\n return opts.stylize(this.description as string, 'regexp');\n\n default:\n break;\n }\n if (this.preview) {\n const props: any[] = this.preview.properties.map((prop, idx) => {\n const value = formatProperty(prop);\n if (prop.name === `${idx}`) {\n return value;\n }\n return `${prop.name}: ${value}`;\n });\n if (this.preview.overflow) {\n props.push('...');\n }\n const singleLine = props.join(', ');\n const propString = singleLine.length > 60 ? props.join(',\\n ') : singleLine;\n\n return this.subtype === 'array' ? `[ ${propString} ]` : `{ ${propString} }`;\n }\n return this.description || '';\n\n default:\n return this.description || '';\n }\n }\n\n static fromEvalResult({ result, wasThrown }: { result: RemoteObject; wasThrown?: boolean }): RemoteObject | Error {\n if (wasThrown) {\n return convertResultToError(result);\n }\n return new RemoteObject(result);\n }\n}\n\nclass ScopeSnapshot implements Debugger.Scope {\n /**\n * Scope type.\n */\n type: string;\n /**\n * Object representing the scope. For global and with scopes it represents the actual object; for the rest of the scopes, it is artificial transient object enumerating scope variables as its properties.\n */\n object: Runtime.RemoteObject;\n\n name?: string | undefined;\n /**\n * Location in the source code where scope starts\n */\n startLocation?: Debugger.Location | undefined;\n /**\n * Location in the source code where scope ends\n */\n endLocation?: Debugger.Location | undefined;\n\n properties: Map;\n\n completionGroup: string[];\n\n constructor(scope: Debugger.Scope, properties: Runtime.PropertyDescriptor[]) {\n this.type = scope.type;\n this.object = scope.object;\n\n Object.assign(this, scope);\n\n this.properties = new Map(\n properties.map(prop => {\n const value = new RemoteObject(prop.value);\n return [prop.name, value];\n }),\n );\n\n this.completionGroup = properties.map(prop => prop.name);\n }\n\n [inspectUtil.custom](_depth: number, opts: InspectOptions): string {\n const type = `${this.type[0].toUpperCase()}${this.type.slice(1)}`;\n const name = this.name ? `<${this.name}>` : '';\n const prefix = `${type}${name} `;\n return inspectUtil(this.properties, opts).replace(/^Map /, prefix);\n }\n}\n/*\nfunction copyOwnProperties(target: any, source: any): void {\n Object.getOwnPropertyNames(source).forEach(prop => {\n const descriptor = Object.getOwnPropertyDescriptor(source, prop);\n if (descriptor) {\n Object.defineProperty(target, prop, descriptor);\n }\n });\n}\n\nfunction aliasProperties(target, mapping) {\n Object.keys(mapping).forEach((key) => {\n const descriptor = Object.getOwnPropertyDescriptor(target, key);\n Object.defineProperty(target, mapping[key], descriptor);\n });\n}\n*/\nexport default function createRepl(inspector: NodeInspector): () => REPLServer {\n const { Debugger, /*HeapProfiler, Profiler,*/ Runtime } = inspector;\n\n let repl: REPLServer;\n\n // Things we want to keep around\n // const history = { control: [], debug: [] };\n // const watchedExpressions = [];\n // const knownBreakpoints = [];\n // let pauseOnExceptionState = 'none';\n let lastCommand: string;\n\n // Things we need to reset when the app restarts\n let knownScripts: Record = {};\n let currentBacktrace: CallFrame[] | undefined;\n let selectedFrame: CallFrame | undefined;\n let exitDebugRepl: undefined | (() => void);\n\n function resetOnStart(): void {\n knownScripts = {};\n currentBacktrace = undefined;\n selectedFrame = undefined;\n\n if (exitDebugRepl) {\n exitDebugRepl();\n exitDebugRepl = undefined;\n }\n }\n\n resetOnStart();\n\n const INSPECT_OPTIONS: InspectOptions = { colors: inspector.stdout.isTTY };\n function inspect(value: any): string {\n return inspectUtil(value, INSPECT_OPTIONS);\n }\n\n function print(value: any, oneline = false): void {\n const text = typeof value === 'string' ? value : inspect(value);\n return inspector.print(text, oneline);\n }\n\n function getCurrentLocation(): Debugger.Location {\n if (!selectedFrame) {\n throw new Error('Requires execution to be paused');\n }\n return selectedFrame.location;\n }\n\n function isCurrentScript(script: Debugger.ScriptParsedEventDataType & { isNative: boolean }): boolean {\n return !!selectedFrame && getCurrentLocation().scriptId === script.scriptId;\n }\n\n function formatScripts(displayNatives = false): string {\n function isVisible(script: Debugger.ScriptParsedEventDataType & { isNative: boolean }): boolean {\n if (displayNatives) {\n return true;\n }\n return !script.isNative || isCurrentScript(script);\n }\n\n return Object.keys(knownScripts)\n .map(scriptId => knownScripts[scriptId])\n .filter(isVisible)\n .map(script => {\n const isCurrent = isCurrentScript(script);\n const { isNative, url } = script;\n const name = `${getRelativePath(url)}${isNative ? ' ' : ''}`;\n return `${isCurrent ? '*' : ' '} ${script.scriptId}: ${name}`;\n })\n .join('\\n');\n }\n function listScripts(displayNatives = false): void {\n print(formatScripts(displayNatives));\n }\n // @ts-expect-error no idea what this is\n listScripts[inspectUtil.custom] = function listWithoutInternal(): string {\n return formatScripts();\n };\n /*\n const profiles = [];\n class Profile {\n constructor(data) {\n this.data = data;\n }\n\n static createAndRegister({ profile }) {\n const p = new Profile(profile);\n profiles.push(p);\n return p;\n }\n\n [util.inspect.custom](depth, { stylize }) {\n const { startTime, endTime } = this.data;\n return stylize(`[Profile ${endTime - startTime}μs]`, 'special');\n }\n\n save(filename = 'node.cpuprofile') {\n const absoluteFile = Path.resolve(filename);\n const json = JSON.stringify(this.data);\n FS.writeFileSync(absoluteFile, json);\n print(`Saved profile to ${absoluteFile}`);\n }\n }\n*/\n class SourceSnippet {\n scriptSource: string;\n /**\n * Script identifier as reported in the Debugger.scriptParsed.\n */\n scriptId: Runtime.ScriptId;\n /**\n * Line number in the script (0-based).\n */\n lineNumber: number;\n /**\n * Column number in the script (0-based).\n */\n columnNumber: number;\n delta: number;\n constructor(location: Debugger.Location, delta: number, scriptSource: string) {\n this.lineNumber = location.lineNumber;\n this.columnNumber = location.columnNumber || 0;\n this.scriptId = location.scriptId;\n this.scriptSource = scriptSource;\n this.delta = delta;\n Object.assign(this, location);\n }\n\n [inspectUtil.custom](_depth: number, options: InspectOptions): string {\n const { /* scriptId, */ lineNumber, columnNumber, delta, scriptSource } = this;\n const start = Math.max(1, lineNumber - delta + 1);\n const end = lineNumber + delta + 1;\n\n const lines = scriptSource.split('\\n');\n return lines\n .slice(start - 1, end)\n .map((lineText, offset) => {\n const i = start + offset;\n const isCurrent = i === lineNumber + 1;\n\n const markedLine = isCurrent ? markSourceColumn(lineText, columnNumber, options.colors) : lineText;\n\n /*\n let isBreakpoint = false;\n knownBreakpoints.forEach(({ location }) => {\n if (!location) return;\n if (scriptId === location.scriptId &&\n i === (location.lineNumber + 1)) {\n isBreakpoint = true;\n }\n });\n */\n\n let prefixChar = ' ';\n if (isCurrent) {\n prefixChar = '>';\n } /*else if (isBreakpoint) {\n prefixChar = '*';\n }*/\n return `${leftPad(i, prefixChar, end)} ${markedLine}`;\n })\n .join('\\n');\n }\n }\n\n function getSourceSnippet(location: Debugger.Location, delta: number = 5): SourceSnippet {\n const { scriptId } = location;\n return Debugger.getScriptSource({ scriptId }).then(\n ({ scriptSource }: Debugger.GetScriptSourceReturnType) => new SourceSnippet(location, delta, scriptSource),\n );\n }\n\n class CallFrame implements Debugger.CallFrame {\n /**\n * Call frame identifier. This identifier is only valid while the virtual machine is paused.\n */\n callFrameId: Debugger.CallFrameId;\n /**\n * Name of the JavaScript function called on this call frame.\n */\n functionName: string;\n /**\n * Location in the source code.\n */\n functionLocation?: Debugger.Location | undefined;\n /**\n * Location in the source code.\n */\n location: Debugger.Location;\n /**\n * JavaScript script name or url.\n */\n url: string;\n /**\n * Scope chain for this call frame.\n */\n scopeChain: Debugger.Scope[];\n /**\n * this object for this call frame.\n */\n this: Runtime.RemoteObject;\n /**\n * The value being returned if the function is at return point.\n */\n returnValue?: Runtime.RemoteObject | undefined;\n\n constructor(callFrame: Debugger.CallFrame) {\n this.functionName = callFrame.functionName;\n this.url = callFrame.url;\n this.scopeChain = callFrame.scopeChain;\n this.this = callFrame.this;\n this.returnValue = callFrame.returnValue;\n this.location = callFrame.location;\n this.callFrameId = callFrame.callFrameId;\n\n Object.assign(this, callFrame);\n }\n\n loadScopes(): Promise {\n return Promise.all(\n this.scopeChain\n .filter(scope => scope.type !== 'global')\n .map(scope => {\n const { objectId } = scope.object;\n return Runtime.getProperties({\n objectId,\n generatePreview: true,\n }).then(({ result }: Runtime.GetPropertiesReturnType) => {\n return new ScopeSnapshot(scope, result);\n });\n }),\n );\n }\n\n list(delta: number = 5): SourceSnippet {\n return getSourceSnippet(this.location, delta);\n }\n }\n\n class Backtrace extends Array {\n [inspectUtil.custom](): string {\n return this.map((callFrame, idx) => {\n const {\n location: { scriptId, lineNumber, columnNumber },\n functionName,\n } = callFrame;\n const name = functionName || '(anonymous)';\n\n const script = knownScripts[scriptId];\n const relativeUrl = (script && getRelativePath(script.url)) || '';\n const frameLocation = `${relativeUrl}:${lineNumber + 1}:${columnNumber}`;\n\n return `#${idx} ${name} ${frameLocation}`;\n }).join('\\n');\n }\n\n static from(callFrames: CallFrame[]): CallFrame[] {\n return super.from(\n Array.from(callFrames).map(callFrame => {\n if (callFrame instanceof CallFrame) {\n return callFrame;\n }\n return new CallFrame(callFrame);\n }),\n );\n }\n }\n\n function prepareControlCode(input: string): string {\n if (input === '\\n') {\n return lastCommand;\n }\n // exec process.title => exec(\"process.title\");\n const match = input.match(/^\\s*exec\\s+([^\\n]*)/);\n if (match) {\n lastCommand = `exec(${JSON.stringify(match[1])})`;\n } else {\n lastCommand = input;\n }\n return lastCommand;\n }\n\n // function evalInCurrentContext(code) {\n // // Repl asked for scope variables\n // if (code === '.scope') {\n // if (!selectedFrame) {\n // return Promise.reject(new Error('Requires execution to be paused'));\n // }\n // return selectedFrame.loadScopes().then((scopes) => {\n // return scopes.map((scope) => scope.completionGroup);\n // });\n // }\n //\n // if (selectedFrame) {\n // return Debugger.evaluateOnCallFrame({\n // callFrameId: selectedFrame.callFrameId,\n // expression: code,\n // objectGroup: 'node-inspect',\n // generatePreview: true,\n // }).then(RemoteObject.fromEvalResult);\n // }\n // return Runtime.evaluate({\n // expression: code,\n // objectGroup: 'node-inspect',\n // generatePreview: true,\n // }).then(RemoteObject.fromEvalResult);\n // }\n\n function controlEval(\n input: string,\n context: Context,\n filename: string,\n callback: (error: Error | null, result?: any) => void,\n ): void {\n debuglog('eval:', input);\n function returnToCallback(error: Error | null, result?: any): void {\n debuglog('end-eval:', input, error);\n callback(error, result);\n }\n\n try {\n const code = prepareControlCode(input);\n const result = runInContext(code, context, filename);\n\n if (result && typeof result.then === 'function') {\n toCallback(result, returnToCallback);\n return;\n }\n returnToCallback(null, result);\n } catch (e: any) {\n returnToCallback(e as Error);\n }\n }\n\n // function debugEval(input, context, filename, callback) {\n // debuglog('eval:', input);\n // function returnToCallback(error, result) {\n // debuglog('end-eval:', input, error);\n // callback(error, result);\n // }\n //\n // try {\n // const result = evalInCurrentContext(input);\n //\n // if (result && typeof result.then === 'function') {\n // toCallback(result, returnToCallback);\n // return;\n // }\n // returnToCallback(null, result);\n // } catch (e) {\n // returnToCallback(e);\n // }\n // }\n\n /*function formatWatchers(verbose = false) {\n if (!watchedExpressions.length) {\n return Promise.resolve('');\n }\n\n const inspectValue = (expr) =>\n evalInCurrentContext(expr)\n // .then(formatValue)\n .catch((error) => `<${error.message}>`);\n const lastIndex = watchedExpressions.length - 1;\n\n return Promise.all(watchedExpressions.map(inspectValue))\n .then((values) => {\n const lines = watchedExpressions\n .map((expr, idx) => {\n const prefix = `${leftPad(idx, ' ', lastIndex)}: ${expr} =`;\n const value = inspect(values[idx], { colors: true });\n if (value.indexOf('\\n') === -1) {\n return `${prefix} ${value}`;\n }\n return `${prefix}\\n ${value.split('\\n').join('\\n ')}`;\n });\n return lines.join('\\n');\n })\n .then((valueList) => {\n return verbose ? `Watchers:\\n${valueList}\\n` : valueList;\n });\n }*/\n\n //function watchers(verbose = false) {\n // return formatWatchers(verbose).then(print);\n //}\n\n // List source code\n // function list(delta = 5) {\n // return selectedFrame.list(delta)\n // .then(null, (error) => {\n // print('You can\\'t list source code right now');\n // throw error;\n // });\n // }\n\n //function handleBreakpointResolved({ breakpointId, location }) {\n // const script = knownScripts[location.scriptId];\n // const scriptUrl = script && script.url;\n // if (scriptUrl) {\n // Object.assign(location, { scriptUrl });\n // }\n // const isExisting = knownBreakpoints.some((bp) => {\n // if (bp.breakpointId === breakpointId) {\n // Object.assign(bp, { location });\n // return true;\n // }\n // return false;\n // });\n // if (!isExisting) {\n // knownBreakpoints.push({ breakpointId, location });\n // }\n //}\n\n // function listBreakpoints() {\n // if (!knownBreakpoints.length) {\n // print('No breakpoints yet');\n // return;\n // }\n //\n // function formatLocation(location) {\n // if (!location) return '';\n // const script = knownScripts[location.scriptId];\n // const scriptUrl = script ? script.url : location.scriptUrl;\n // return `${getRelativePath(scriptUrl)}:${location.lineNumber + 1}`;\n // }\n // const breaklist = knownBreakpoints\n // .map((bp, idx) => `#${idx} ${formatLocation(bp.location)}`)\n // .join('\\n');\n // print(breaklist);\n // }\n\n // function setBreakpoint(script, line, condition, silent) {\n // function registerBreakpoint({ breakpointId, actualLocation }) {\n // handleBreakpointResolved({ breakpointId, location: actualLocation });\n // if (actualLocation && actualLocation.scriptId) {\n // if (!silent) return getSourceSnippet(actualLocation, 5);\n // } else {\n // print(`Warning: script '${script}' was not loaded yet.`);\n // }\n // return undefined;\n // }\n //\n // // setBreakpoint(): set breakpoint at current location\n // if (script === undefined) {\n // return Debugger\n // .setBreakpoint({ location: getCurrentLocation(), condition })\n // .then(registerBreakpoint);\n // }\n //\n // // setBreakpoint(line): set breakpoint in current script at specific line\n // if (line === undefined && typeof script === 'number') {\n // const location = {\n // scriptId: getCurrentLocation().scriptId,\n // lineNumber: script - 1,\n // };\n // return Debugger.setBreakpoint({ location, condition })\n // .then(registerBreakpoint);\n // }\n //\n // if (typeof script !== 'string') {\n // throw new TypeError(`setBreakpoint() expects a string, got ${script}`);\n // }\n //\n // // setBreakpoint('fn()'): Break when a function is called\n // if (script.endsWith('()')) {\n // const debugExpr = `debug(${script.slice(0, -2)})`;\n // const debugCall = selectedFrame\n // ? Debugger.evaluateOnCallFrame({\n // callFrameId: selectedFrame.callFrameId,\n // expression: debugExpr,\n // includeCommandLineAPI: true,\n // })\n // : Runtime.evaluate({\n // expression: debugExpr,\n // includeCommandLineAPI: true,\n // });\n // return debugCall.then(({ result, wasThrown }) => {\n // if (wasThrown) return convertResultToError(result);\n // return undefined; // This breakpoint can't be removed the same way\n // });\n // }\n //\n // // setBreakpoint('scriptname')\n // let scriptId = null;\n // let ambiguous = false;\n // if (knownScripts[script]) {\n // scriptId = script;\n // } else {\n // for (const id of Object.keys(knownScripts)) {\n // const scriptUrl = knownScripts[id].url;\n // if (scriptUrl && scriptUrl.indexOf(script) !== -1) {\n // if (scriptId !== null) {\n // ambiguous = true;\n // }\n // scriptId = id;\n // }\n // }\n // }\n //\n // if (ambiguous) {\n // print('Script name is ambiguous');\n // return undefined;\n // }\n // if (line <= 0) {\n // print('Line should be a positive value');\n // return undefined;\n // }\n //\n // if (scriptId !== null) {\n // const location = { scriptId, lineNumber: line - 1 };\n // return Debugger.setBreakpoint({ location, condition })\n // .then(registerBreakpoint);\n // }\n //\n // const escapedPath = script.replace(/([/\\\\.?*()^${}|[\\]])/g, '\\\\$1');\n // const urlRegex = `^(.*[\\\\/\\\\\\\\])?${escapedPath}$`;\n //\n // return Debugger\n // .setBreakpointByUrl({ urlRegex, lineNumber: line - 1, condition })\n // .then((bp) => {\n // // TODO: handle bp.locations in case the regex matches existing files\n // if (!bp.location) { // Fake it for now.\n // Object.assign(bp, {\n // actualLocation: {\n // scriptUrl: `.*/${script}$`,\n // lineNumber: line - 1,\n // },\n // });\n // }\n // return registerBreakpoint(bp);\n // });\n // }\n //\n // function clearBreakpoint(url, line) {\n // const breakpoint = knownBreakpoints.find(({ location }) => {\n // if (!location) return false;\n // const script = knownScripts[location.scriptId];\n // if (!script) return false;\n // return (\n // script.url.indexOf(url) !== -1 && (location.lineNumber + 1) === line\n // );\n // });\n // if (!breakpoint) {\n // print(`Could not find breakpoint at ${url}:${line}`);\n // return Promise.resolve();\n // }\n // return Debugger.removeBreakpoint({ breakpointId: breakpoint.breakpointId })\n // .then(() => {\n // const idx = knownBreakpoints.indexOf(breakpoint);\n // knownBreakpoints.splice(idx, 1);\n // });\n // }\n //\n // function restoreBreakpoints() {\n // const lastBreakpoints = knownBreakpoints.slice();\n // knownBreakpoints.length = 0;\n // const newBreakpoints = lastBreakpoints\n // .filter(({ location }) => !!location.scriptUrl)\n // .map(({ location }) =>\n // setBreakpoint(location.scriptUrl, location.lineNumber + 1));\n // if (!newBreakpoints.length) return Promise.resolve();\n // return Promise.all(newBreakpoints).then((results) => {\n // print(`${results.length} breakpoints restored.`);\n // });\n // }\n\n // function setPauseOnExceptions(state) {\n // return Debugger.setPauseOnExceptions({ state })\n // .then(() => {\n // pauseOnExceptionState = state;\n // });\n // }\n\n Debugger.on('paused', (data: Debugger.PausedEventDataType): void => {\n const callFrames: CallFrame[] = data.callFrames as CallFrame[];\n const reason: string = data.reason;\n\n if (process.env.NODE_INSPECT_RESUME_ON_START === '1' && reason === 'Break on start') {\n debuglog('Paused on start, but NODE_INSPECT_RESUME_ON_START environment variable is set to 1, resuming');\n inspector.client.callMethod('Debugger.resume');\n return;\n }\n\n // Save execution context's data\n currentBacktrace = Backtrace.from(callFrames);\n selectedFrame = currentBacktrace[0];\n // const { scriptId, lineNumber } = selectedFrame.location;\n\n // const breakType = reason === 'other' ? 'break' : reason;\n // const script = knownScripts[scriptId];\n // const scriptUrl = script ? getRelativePath(script.url) : '[unknown]';\n\n // const header = `${breakType} in ${scriptUrl}:${lineNumber + 1}`;\n\n void inspector.suspendReplWhile(() => {\n const context = selectedFrame?.list(3);\n inspect(context);\n });\n });\n\n function handleResumed(): void {\n currentBacktrace = undefined;\n selectedFrame = undefined;\n }\n\n Debugger.on('resumed', handleResumed);\n\n //Debugger.on('breakpointResolved', handleBreakpointResolved);\n\n Debugger.on('scriptParsed', (script: Debugger.ScriptParsedEventDataType) => {\n const { scriptId, url } = script;\n if (url) {\n knownScripts[scriptId] = Object.assign(\n {\n isNative: isNativeUrl(url),\n },\n script,\n );\n }\n });\n\n /*Profiler.on('consoleProfileFinished', ({ profile }) => {\n Profile.createAndRegister({ profile });\n print([\n 'Captured new CPU profile.',\n `Access it with profiles[${profiles.length - 1}]`\n ].join('\\n'));\n });*/\n\n function initializeContext(context: Context): void {\n Object.defineProperty(context, 'Debugger', {\n value: inspector.Debugger,\n enumerable: true,\n configurable: true,\n // @ts-expect-error fix later\n writeable: false,\n });\n Object.defineProperty(context, 'HeapProfiler', {\n value: inspector.HeapProfiler,\n enumerable: true,\n configurable: true,\n // @ts-expect-error fix later\n writeable: false,\n });\n Object.defineProperty(context, 'Profiler', {\n value: inspector.Profiler,\n enumerable: true,\n configurable: true,\n // @ts-expect-error fix later\n writeable: false,\n });\n Object.defineProperty(context, 'Runtime', {\n value: inspector.Runtime,\n enumerable: true,\n configurable: true,\n // @ts-expect-error fix later\n writeable: false,\n });\n\n /*copyOwnProperties(context, {\n get help() {\n print(HELP);\n },\n\n get run() {\n return inspector.run();\n },\n\n get kill() {\n return inspector.killChild();\n },\n\n get restart() {\n return inspector.run();\n },\n\n get cont() {\n handleResumed();\n return Debugger.resume();\n },\n\n get next() {\n handleResumed();\n return Debugger.stepOver();\n },\n\n get step() {\n handleResumed();\n return Debugger.stepInto();\n },\n\n get out() {\n handleResumed();\n return Debugger.stepOut();\n },\n\n get pause() {\n return Debugger.pause();\n },\n\n get backtrace() {\n return currentBacktrace;\n },\n\n get breakpoints() {\n return listBreakpoints();\n },\n\n exec(expr) {\n return evalInCurrentContext(expr);\n },\n\n get profile() {\n return Profiler.start();\n },\n\n get profileEnd() {\n return Profiler.stop()\n .then(Profile.createAndRegister);\n },\n\n get profiles() {\n return profiles;\n },\n\n takeHeapSnapshot(filename = 'node.heapsnapshot') {\n return new Promise((resolve, reject) => {\n const absoluteFile = Path.resolve(filename);\n const writer = FS.createWriteStream(absoluteFile);\n let sizeWritten = 0;\n function onProgress({ done, total, finished }) {\n if (finished) {\n print('Heap snaphost prepared.');\n } else {\n print(`Heap snapshot: ${done}/${total}`, true);\n }\n }\n function onChunk({ chunk }) {\n sizeWritten += chunk.length;\n writer.write(chunk);\n print(`Writing snapshot: ${sizeWritten}`, true);\n }\n function onResolve() {\n writer.end(() => {\n teardown();\n print(`Wrote snapshot: ${absoluteFile}`);\n resolve();\n });\n }\n function onReject(error) {\n teardown();\n reject(error);\n }\n function teardown() {\n HeapProfiler.removeListener(\n 'reportHeapSnapshotProgress', onProgress);\n HeapProfiler.removeListener('addHeapSnapshotChunk', onChunk);\n }\n\n HeapProfiler.on('reportHeapSnapshotProgress', onProgress);\n HeapProfiler.on('addHeapSnapshotChunk', onChunk);\n\n print('Heap snapshot: 0/0', true);\n HeapProfiler.takeHeapSnapshot({ reportProgress: true })\n .then(onResolve, onReject);\n });\n },\n\n get watchers() {\n return watchers();\n },\n\n watch(expr) {\n watchedExpressions.push(expr);\n },\n\n unwatch(expr) {\n const index = watchedExpressions.indexOf(expr);\n\n // Unwatch by expression\n // or\n // Unwatch by watcher number\n watchedExpressions.splice(index !== -1 ? index : +expr, 1);\n },\n\n get repl() {\n // Don't display any default messages\n const listeners = repl.listeners('SIGINT').slice(0);\n repl.removeAllListeners('SIGINT');\n\n const oldContext = repl.context;\n\n exitDebugRepl = () => {\n // Restore all listeners\n process.nextTick(() => {\n listeners.forEach((listener) => {\n repl.on('SIGINT', listener);\n });\n });\n\n // Exit debug repl\n repl.eval = controlEval;\n\n // Swap history\n history.debug = repl.history;\n repl.history = history.control;\n\n repl.context = oldContext;\n repl.setPrompt('debug> ');\n repl.displayPrompt();\n\n repl.removeListener('SIGINT', exitDebugRepl);\n repl.removeListener('exit', exitDebugRepl);\n\n exitDebugRepl = null;\n };\n\n // Exit debug repl on SIGINT\n repl.on('SIGINT', exitDebugRepl);\n\n // Exit debug repl on repl exit\n repl.on('exit', exitDebugRepl);\n\n // Set new\n repl.eval = debugEval;\n repl.context = {};\n\n // Swap history\n history.control = repl.history;\n repl.history = history.debug;\n\n repl.setPrompt('> ');\n\n print('Press Ctrl + C to leave debug repl');\n repl.displayPrompt();\n },\n\n get version() {\n return Runtime.evaluate({\n expression: 'process.versions.v8',\n contextId: 1,\n returnByValue: true,\n }).then(({ result }) => {\n print(result.value);\n });\n },\n\n scripts: listScripts,\n\n //setBreakpoint,\n //clearBreakpoint,\n setPauseOnExceptions,\n get breakOnException() {\n return setPauseOnExceptions('all');\n },\n get breakOnUncaught() {\n return setPauseOnExceptions('uncaught');\n },\n get breakOnNone() {\n return setPauseOnExceptions('none');\n },\n\n list,\n });*/\n //aliasProperties(context, SHORTCUTS);\n }\n\n function initAfterStart(): Promise {\n const setupTasks = [\n Runtime.enable(),\n //Profiler.enable(),\n //Profiler.setSamplingInterval({ interval: 100 }),\n Debugger.enable(),\n Debugger.setPauseOnExceptions({ state: 'none' }),\n Debugger.setAsyncCallStackDepth({ maxDepth: 1 }),\n Debugger.setBlackboxPatterns({ patterns: [] }),\n // Debugger.setPauseOnExceptions({ state: 'all' }),\n //restoreBreakpoints(),\n Runtime.runIfWaitingForDebugger(),\n ];\n return Promise.all(setupTasks);\n }\n\n return function startRepl(): REPLServer {\n inspector.client.on('close', () => resetOnStart());\n inspector.client.on('ready', () => {\n initAfterStart().catch(err => {\n print(`Error starting inspector: ${err.message}`);\n });\n });\n\n const replOptions: ReplOptions = {\n prompt: 'debug> ',\n input: inspector.stdin,\n output: inspector.stdout,\n eval: controlEval,\n useGlobal: false,\n ignoreUndefined: true,\n };\n\n repl = start(replOptions);\n initializeContext(repl.context);\n repl.on('reset', initializeContext);\n\n repl.defineCommand('interrupt', () => {\n // We want this for testing purposes where sending CTRL-C can be tricky.\n repl.emit('SIGINT');\n });\n\n // Init once for the initial connection\n initAfterStart().catch(err => {\n print(`Error starting inspector: ${err.message}`);\n });\n\n return repl;\n };\n}\n"]} \ No newline at end of file diff --git a/build/lib/sandbox.js b/build/lib/sandbox.js index cc8c3777..40b2f780 100644 --- a/build/lib/sandbox.js +++ b/build/lib/sandbox.js @@ -465,7 +465,7 @@ function sandBox(script, name, verbose, debug, context, logCollector) { actualCommonType = getCommonTypeOf(stateNotNull.val); } } - else if (stateNotNull !== null && stateNotNull !== undefined) { + else if (stateNotNull !== undefined) { actualCommonType = getCommonTypeOf(stateNotNull); } // If this is not the expected one, issue a warning diff --git a/build/lib/sandbox.js.map b/build/lib/sandbox.js.map index dad632d7..0351b6bf 100644 --- a/build/lib/sandbox.js.map +++ b/build/lib/sandbox.js.map @@ -1 +1 @@ -{"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/lib/sandbox.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ChildProcess, ExecOptions } from 'node:child_process';\nimport * as jsonataMod from 'jsonata';\nimport type { SendMailOptions } from 'nodemailer';\nimport type { AxiosError, AxiosHeaderValue, AxiosResponse, ResponseType } from 'axios';\n\nimport { isObject, isArray, promisify, getHttpRequestConfig } from './tools';\nimport type {\n JavaScriptAdapterConfig,\n AstroRule,\n ChangeType,\n CommonAlias,\n FileSubscriptionResult,\n IobSchedule,\n JavascriptContext,\n JsScript,\n Pattern,\n PushoverOptions,\n SandboxType,\n Selector,\n SubscribeObject,\n SubscriptionResult,\n TimeRule,\n} from '../types';\nimport * as constsMod from './consts';\nimport * as wordsMod from './words';\nimport * as eventObjMod from './eventObj';\nimport {\n patternCompareFunctions as patternCompareFunctionsMod,\n type PatternEventCompareFunction,\n} from './patternCompareFunctions';\nimport type { ScheduleName, SchedulerRule } from './scheduler';\nimport type { EventObj } from './eventObj';\nimport type { AstroEvent } from './consts';\n\nconst SCRIPT_CODE_MARKER = 'script.js.';\n\n// Pre-compiled RegExp constants for formatTimeDiff – avoids recompiling on every call\nconst FTD_TEST_D = /(?();\n\n/** Monotonically increasing handler-ID counter – avoids Date.now()+random collisions */\nlet _handlerIdCounter = 1;\n\n/** All characters that may not appear in an object ID. */\nexport const FORBIDDEN_CHARS = /[^._\\-/ :!#$%&()+=@^{}|~\\p{Ll}\\p{Lu}\\p{Nd}]+/gu;\n\n/**\n * Checks if a pattern is valid\n *\n * @param pattern The pattern to check for validity\n */\nexport function isValidPattern(pattern: string): boolean {\n pattern = pattern.replace(/\\*/g, '');\n\n return !FORBIDDEN_CHARS.test(pattern);\n}\n/**\n * Converts ioB pattern into regex.\n *\n * This funtion was copied from js-controller, as for the tests it is required, that function must be defined here.\n * Else the adapter-core tries to find js-controller and it is not installed.\n *\n * @param pattern - Regex string to use it in new RegExp(pattern)\n */\nexport function pattern2RegEx(pattern: string): string {\n pattern = (pattern || '').toString();\n\n if (!isValidPattern(pattern)) {\n throw new Error(`The pattern \"${pattern}\" is not a valid ID pattern`);\n }\n\n const startsWithWildcard = pattern[0] === '*';\n const endsWithWildcard = pattern[pattern.length - 1] === '*';\n\n pattern = pattern.replace(/[-/\\\\^$+?.()|[\\]{}]/g, '\\\\$&').replace(/\\*/g, '.*');\n\n return (startsWithWildcard ? '' : '^') + pattern + (endsWithWildcard ? '' : '$');\n}\n\n/** Returns true when patId is a plain exact state-ID (no wildcards, no RegExp notation). */\nexport function isExactId(patId: unknown): patId is string {\n return (\n !!patId && typeof patId === 'string' && !patId.includes('*') && !patId.includes('?') && !patId.startsWith('/')\n );\n}\n\n/**\n * Removes a subscription from the O(1) dispatch index (subscriptionsMap / subscriptionsWildcard).\n * Must use the same exact-id classification as the subscribe side (isExactId),\n * otherwise entries leak in the structure that was not searched.\n */\nexport function removeFromDispatchIndex(ctx: JavascriptContext, sub: SubscriptionResult): void {\n const patId = sub.pattern?.id;\n if (isExactId(patId)) {\n const bucket = ctx.subscriptionsMap.get(patId);\n if (bucket) {\n const pos = bucket.indexOf(sub);\n if (pos !== -1) {\n bucket.splice(pos, 1);\n }\n if (bucket.length === 0) {\n ctx.subscriptionsMap.delete(patId);\n }\n }\n } else {\n const wPos = ctx.subscriptionsWildcard.indexOf(sub);\n if (wPos !== -1) {\n ctx.subscriptionsWildcard.splice(wPos, 1);\n }\n }\n}\n\nexport function sandBox(\n script: JsScript,\n name: string,\n verbose: boolean | undefined,\n debug: boolean | undefined,\n context: JavascriptContext,\n logCollector?: ((severity: ioBroker.LogLevel, message: string) => void) | null,\n): SandboxType {\n const consts = constsMod;\n const words = wordsMod;\n const eventObj = eventObjMod;\n const patternCompareFunctions = patternCompareFunctionsMod;\n const jsonata = jsonataMod.default;\n\n const adapter: ioBroker.Adapter = context.adapter;\n const mods = context.mods;\n const states = context.states;\n const objects = context.objects;\n const timers = context.timers;\n const enums = context.enums;\n const debugMode = context.debugMode;\n\n // eslint-disable-next-line prefer-const\n let sandbox: SandboxType;\n\n function errorInCallback(e: Error): void {\n void adapter.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'errorInCallback',\n });\n context.logError(name, 'Error in callback:', e);\n context.debugMode && console.log(`error$$${name}$$Exception in callback: ${e}`, Date.now());\n }\n\n function subscribePattern(script: JsScript, pattern: string): void {\n if ((adapter.config as JavaScriptAdapterConfig).subscribe) {\n if (!script.subscribes[pattern]) {\n script.subscribes[pattern] = 1;\n } else {\n script.subscribes[pattern]++;\n }\n\n if (!context.subscribedPatterns[pattern]) {\n context.subscribedPatterns[pattern] = 1;\n\n if (sandbox.verbose) {\n sandbox.log(`subscribePattern(pattern=${pattern})`, 'info');\n }\n adapter.subscribeForeignStates(pattern);\n\n // request current value to deliver old value on change.\n if (typeof pattern === 'string' && !pattern.includes('*')) {\n void adapter.getForeignState(pattern, (_err, state) => {\n if (state) {\n states[pattern] = state;\n }\n });\n } else {\n // IO-3: Object.assign instead of Object.keys().forEach() – no temporary keys array\n adapter.getForeignStates(pattern, (_err, _states) => _states && Object.assign(states, _states));\n }\n } else {\n context.subscribedPatterns[pattern]++;\n }\n }\n }\n\n function unsubscribePattern(script: JsScript, pattern: string): void {\n if ((adapter.config as JavaScriptAdapterConfig).subscribe) {\n if (script.subscribes[pattern]) {\n script.subscribes[pattern]--;\n if (!script.subscribes[pattern]) {\n delete script.subscribes[pattern];\n }\n }\n\n if (context.subscribedPatterns[pattern]) {\n context.subscribedPatterns[pattern]--;\n if (!context.subscribedPatterns[pattern]) {\n adapter.unsubscribeForeignStates(pattern);\n delete context.subscribedPatterns[pattern];\n\n // if the pattern was regex or with * some states will stay in RAM, but it is OK.\n if (states[pattern]) {\n delete states[pattern];\n }\n }\n }\n }\n }\n\n function subscribeFile(script: JsScript, id: string, fileNamePattern: string): void {\n const key = `${id}$%$${fileNamePattern}`;\n if (!script.subscribesFile[key]) {\n script.subscribesFile[key] = 1;\n } else {\n script.subscribesFile[key]++;\n }\n\n if (!context.subscribedPatternsFile[key]) {\n context.subscribedPatternsFile[key] = 1;\n void adapter.subscribeForeignFiles(id, fileNamePattern);\n } else {\n context.subscribedPatternsFile[key]++;\n }\n }\n\n function unsubscribeFile(script: JsScript, id: string, fileNamePattern: string): void {\n const key = `${id}$%$${fileNamePattern}`;\n if (script.subscribesFile[key]) {\n script.subscribesFile[key]--;\n if (!script.subscribesFile[key]) {\n delete script.subscribesFile[key];\n }\n }\n\n if (context.subscribedPatternsFile[key]) {\n context.subscribedPatternsFile[key]--;\n if (!context.subscribedPatternsFile[key]) {\n void adapter.unsubscribeForeignFiles(id, fileNamePattern);\n delete context.subscribedPatternsFile[key];\n }\n }\n }\n\n function getPatternCompareFunctions(pattern: Pattern): PatternEventCompareFunction[] & { logic?: 'and' | 'or' } {\n let func: PatternEventCompareFunction;\n const functions: PatternEventCompareFunction[] & { logic?: 'and' | 'or' } = [];\n functions.logic = pattern.logic || 'and';\n\n for (const key in pattern) {\n if (!Object.prototype.hasOwnProperty.call(pattern, key)) {\n continue;\n }\n if (key === 'logic') {\n continue;\n }\n if (key === 'change' && pattern.change === 'any') {\n continue;\n }\n const _func: (pattern: Pattern) => PatternEventCompareFunction = (\n patternCompareFunctions as unknown as Record PatternEventCompareFunction>\n )[key];\n if (!_func) {\n continue;\n }\n func = _func(pattern);\n if (typeof func !== 'function') {\n continue;\n }\n functions.push(func);\n }\n return functions;\n }\n\n /**\n * Splits a selector string into attribute and value\n *\n * @param selector The selector string to split\n */\n function splitSelectorString(selector: string): Selector {\n const parts = selector.split('=', 2);\n if (parts[1] && parts[1][0] === '\"') {\n parts[1] = parts[1].substring(1);\n const len = parts[1].length;\n if (parts[1] && parts[1][len - 1] === '\"') {\n parts[1] = parts[1].substring(0, len - 1);\n }\n }\n if (parts[1] && parts[1][0] === \"'\") {\n parts[1] = parts[1].substring(1);\n const len = parts[1].length;\n if (parts[1] && parts[1][len - 1] === \"'\") {\n parts[1] = parts[1].substring(0, len - 1);\n }\n }\n\n if (parts[1]) {\n parts[1] = parts[1].trim();\n }\n parts[0] = parts[0].trim();\n\n return { attr: parts[0], value: parts[1] };\n }\n\n /**\n * Transforms a selector string with wildcards into a regular expression\n *\n * @param str The selector string to transform into a regular expression\n */\n function selectorStringToRegExp(str: string): RegExp {\n const cached = _selectorRegExpCache.get(str);\n if (cached) {\n return cached;\n }\n const startsWithWildcard = str[0] === '*';\n const endsWithWildcard = str[str.length - 1] === '*';\n // eslint-disable-next-line no-useless-escape\n const escaped = str.replace(/[-\\/\\\\^$+?.()|[\\]{}]/g, '\\\\$&').replace(/\\*/g, '.*');\n const re = new RegExp((startsWithWildcard ? '' : '^') + escaped + (endsWithWildcard ? '' : '$'));\n\n // FIFO eviction: drop the oldest entry once the cache exceeds its limit\n if (_selectorRegExpCache.size >= _SELECTOR_REGEXP_CACHE_MAX) {\n const oldestKey = _selectorRegExpCache.keys().next().value;\n if (oldestKey !== undefined) {\n _selectorRegExpCache.delete(oldestKey);\n }\n }\n\n _selectorRegExpCache.set(str, re);\n return re;\n }\n\n /**\n * Adds a regular expression for selectors targeting the state ID\n *\n * @param selector The selector to apply the transform to\n */\n function addRegExpToIdAttrSelectors(selector: Selector): Selector {\n if ((selector.attr === 'id' || selector.attr === 'state.id') && !selector.idRegExp && selector.value) {\n return {\n attr: selector.attr,\n value: selector.value,\n idRegExp: selectorStringToRegExp(selector.value),\n };\n }\n return selector;\n }\n\n /**\n * Tests if a value loosely equals (==) the reference string.\n * In contrast to the equality operator, this treats true == \"true\" as well\n * so we can test common and native attributes for boolean values\n *\n * @param value The value to compare with the reference\n * @param reference The reference to compare the value to\n */\n function looselyEqualsString(value: string | number | boolean | undefined, reference: string): boolean {\n // For booleans, compare the string representation\n // For other types do a loose comparison\n return typeof value === 'boolean'\n ? (value && reference === 'true') || (!value && reference === 'false')\n : value == reference;\n }\n\n /**\n * Returns the `common.type` for a given variable\n */\n function getCommonTypeOf(value: any): ioBroker.CommonType {\n return isArray(value) ? 'array' : isObject(value) ? 'object' : (typeof value as ioBroker.CommonType);\n }\n\n /**\n * Returns if an id is in an allowed namespace for automatic object creations\n *\n * @param id id to check\n */\n function validIdForAutomaticFolderCreation(id: string): boolean {\n return id.startsWith('javascript.') || id.startsWith('0_userdata.0.') || id.startsWith('alias.0.');\n }\n\n /**\n * Iterate through object structure to create missing folder objects\n */\n async function ensureObjectStructure(id: string): Promise {\n if (!validIdForAutomaticFolderCreation(id)) {\n return;\n }\n if (context.folderCreationVerifiedObjects[id] === true) {\n return;\n }\n const idArr = id.split('.');\n idArr.pop(); // the last is created as an object in any way\n if (idArr.length < 3) {\n return; // Nothing to do\n }\n // We just create sublevel projects\n let idToCheck = idArr.splice(0, 2).join('.');\n\n context.folderCreationVerifiedObjects[id] = true;\n for (const part of idArr) {\n idToCheck += `.${part}`;\n if (context.folderCreationVerifiedObjects[idToCheck] === true || objects[idToCheck]) {\n continue;\n }\n context.folderCreationVerifiedObjects[idToCheck] = true;\n let obj: ioBroker.Object | null | undefined;\n try {\n obj = await adapter.getForeignObjectAsync(idToCheck);\n } catch {\n // ignore\n }\n if (!obj?.common) {\n sandbox.log(`Create folder object for ${idToCheck}`, 'debug');\n try {\n await adapter.setForeignObjectAsync(idToCheck, {\n _id: idToCheck,\n type: 'folder',\n common: {\n name: part,\n },\n native: {\n autocreated: 'by automatic ensure logic',\n },\n });\n } catch (err: any) {\n sandbox.log(`Could not automatically create folder object ${idToCheck}: ${err.message}`, 'info');\n }\n } else {\n //sandbox.log(` already existing \"${idToCheck}\": ${JSON.stringify(obj)}`, 'debug');\n }\n }\n }\n\n function setStateHelper(\n sandbox: SandboxType,\n isCreate: boolean,\n isChanged: boolean,\n id: string,\n state: null | ioBroker.SettableState | ioBroker.StateValue,\n isAck: boolean | 'true' | 'false' | undefined | ((error?: Error | null) => void),\n callback?: (error?: Error | null) => void,\n ): void {\n if (typeof isAck === 'function') {\n callback = isAck;\n isAck = undefined;\n }\n\n let stateNotNull: ioBroker.SettableState | ioBroker.StateValue;\n\n if (isAck === true || isAck === false || isAck === 'true' || isAck === 'false') {\n if (state && typeof state === 'object' && state.val !== undefined) {\n stateNotNull = state;\n // we assume that we were given a state object if\n // state is an object that contains a `val` property\n if (!Object.prototype.hasOwnProperty.call(state, 'ack')) {\n stateNotNull.ack = isAck === true || isAck === 'true';\n }\n } else if (state === null) {\n stateNotNull = { val: null, ack: isAck === true || isAck === 'true' };\n } else {\n // otherwise, assume that the given state is the value to be set\n stateNotNull = { val: state as ioBroker.StateValue, ack: isAck === true || isAck === 'true' };\n }\n } else if (state === null) {\n stateNotNull = { val: null };\n } else {\n stateNotNull = state;\n }\n\n // Check a type of state\n if (!objects[id] && objects[`${adapter.namespace}.${id}`]) {\n id = `${adapter.namespace}.${id}`;\n }\n\n if (isCreate) {\n if (id.match(/^javascript\\.\\d+\\.scriptEnabled/)) {\n sandbox.log(\n `Own states (${id}) should not be used in javascript.X.scriptEnabled.*! Please move the states to 0_userdata.0.*`,\n 'info',\n );\n } else if (id.match(/^javascript\\.\\d+\\.scriptProblem/)) {\n sandbox.log(\n `Own states (${id}) should not be used in javascript.X.scriptProblem.*! Please move the states to 0_userdata.0.*`,\n 'info',\n );\n }\n }\n\n const common = objects[id] ? objects[id].common : null;\n if (common?.type && common.type !== 'mixed' && common.type !== 'json') {\n // Find out which type the value has\n let actualCommonType: ioBroker.CommonType | undefined;\n if (typeof stateNotNull === 'object') {\n if (stateNotNull && stateNotNull.val !== undefined && stateNotNull.val !== null) {\n actualCommonType = getCommonTypeOf(stateNotNull.val);\n }\n } else if (stateNotNull !== null && stateNotNull !== undefined) {\n actualCommonType = getCommonTypeOf(stateNotNull);\n }\n // If this is not the expected one, issue a warning\n if (actualCommonType && actualCommonType !== common.type) {\n context.logWithLineInfo(\n `You are assigning a ${actualCommonType} to the state \"${id}\" which expects a ${common.type}. ` +\n `Please fix your code to use a ${common.type} or change the state type to ${actualCommonType}. ` +\n `This warning might become an error in future versions.`,\n );\n }\n\n if (actualCommonType === 'array' || actualCommonType === 'object') {\n try {\n if (typeof stateNotNull === 'object' && typeof stateNotNull.val !== 'undefined') {\n stateNotNull.val = JSON.stringify(stateNotNull.val);\n } else {\n stateNotNull = JSON.stringify(stateNotNull);\n }\n } catch (err: any) {\n context.logWithLineInfo(\n `Could not stringify value for type ${actualCommonType} and id ${id}: ${err.message}`,\n );\n if (typeof callback === 'function') {\n try {\n callback.call(\n sandbox,\n new Error(\n `Could not stringify value for type ${actualCommonType} and id ${id}: ${err.message}`,\n ),\n );\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n }\n }\n }\n // Check min and max of value\n if (typeof stateNotNull === 'object') {\n if (common && typeof stateNotNull.val === 'number') {\n const num: number = stateNotNull.val;\n if (common.min !== undefined && num < common.min) {\n stateNotNull.val = common.min;\n } else if (common.max !== undefined && num > common.max) {\n stateNotNull.val = common.max;\n }\n }\n } else if (common && typeof stateNotNull === 'number') {\n const num: number = stateNotNull;\n if (common.min !== undefined && num < common.min) {\n stateNotNull = common.min;\n }\n if (common.max !== undefined && num > common.max) {\n stateNotNull = common.max;\n }\n }\n\n let stateAsObject: ioBroker.State;\n // modify state here, to make it available in callback\n if (stateNotNull === null || typeof stateNotNull !== 'object' || stateNotNull.val === undefined) {\n stateAsObject = context.prepareStateObject(id, {\n val: stateNotNull as ioBroker.StateValue,\n ack: isAck === true || isAck === 'true',\n });\n } else {\n stateAsObject = context.prepareStateObject(id, stateNotNull);\n }\n\n // set as comment: from which script this state was set.\n stateAsObject.c = sandbox.scriptName;\n\n if (objects[id]) {\n script.setStatePerMinuteCounter++;\n if (sandbox.verbose) {\n sandbox.log(`setForeignState(id=${id}, state=${JSON.stringify(stateAsObject)})`, 'info');\n }\n\n if (debug) {\n sandbox.log(\n `setForeignState(id=${id}, state=${JSON.stringify(stateAsObject)}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n\n if (typeof callback === 'function') {\n setImmediate(() => {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n });\n }\n } else {\n if (!(adapter.config as JavaScriptAdapterConfig).subscribe) {\n // store actual state to make possible to process value in callback\n // risk that there will be an error on setState is very low,\n // but we will not store new state if the setStateChanged is called\n if (!isChanged) {\n context.interimStateValues[id] = stateAsObject;\n }\n }\n const errHandler = (err: Error | null | undefined, funcId: string): void => {\n err && sandbox.log(`${funcId}: ${err}`, 'error');\n // If adapter holds all states\n if (err && !(adapter.config as JavaScriptAdapterConfig).subscribe) {\n delete context.interimStateValues[id];\n }\n\n if (typeof callback === 'function') {\n setImmediate(() => {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n });\n }\n };\n if (isChanged) {\n if (!(adapter.config as JavaScriptAdapterConfig).subscribe && context.interimStateValues[id]) {\n // if the state is changed, we will compare it with interimStateValues\n const oldState = context.interimStateValues[id];\n // IO-1: for…in instead of Object.keys().filter().every() – no temporary array per call\n let stateHasChanged = false;\n for (const attr in stateAsObject) {\n if (attr === 'ts') {\n continue;\n }\n if ((stateAsObject as Record)[attr] === undefined) {\n continue;\n }\n if (\n (stateAsObject as Record)[attr] !== (oldState as Record)[attr]\n ) {\n stateHasChanged = true;\n break;\n }\n }\n if (stateHasChanged) {\n // state is changed for sure, and we will call setForeignState\n // and store new state to interimStateValues\n context.interimStateValues[id] = stateAsObject;\n adapter.setForeignState(id, stateAsObject, err => errHandler(err, 'setForeignState'));\n } else {\n // otherwise - do nothing as we have cached state, except callback\n errHandler(null, 'setForeignStateCached');\n }\n } else {\n // adapter doesn't hold all states, or it has not cached then we will simply call setForeignStateChanged\n adapter.setForeignStateChanged(id, { ...stateAsObject, ts: undefined }, err =>\n errHandler(err, 'setForeignStateChanged'),\n );\n }\n } else {\n adapter.setForeignState(id, stateAsObject, err => errHandler(err, 'setForeignState'));\n }\n }\n } else {\n context.logWithLineInfo(`State \"${id}\" not found`);\n if (typeof callback === 'function') {\n setImmediate(() => {\n try {\n callback.call(sandbox, new Error(`State \"${id}\" not found`));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n });\n }\n }\n }\n\n sandbox = {\n mods,\n _id: script._id,\n // @deprecated use scriptName\n name,\n scriptName: name,\n instance: adapter.instance || 0,\n defaultDataDir: context.getAbsoluteDefaultDataDir(),\n verbose,\n exports: {}, // Polyfill for the export object in TypeScript modules\n require: function (md: string): any {\n if (typeof md === 'string' && md.startsWith('node:')) {\n md = md.replace(/^node:/, '');\n }\n\n if (md === 'request') {\n if (!sandbox.__engine.__deprecatedWarnings.includes(md)) {\n sandbox.log(\n `request package is deprecated - please use httpGet (or a stable lib like axios) instead!`,\n 'warn',\n );\n sandbox.__engine.__deprecatedWarnings.push(md);\n }\n }\n\n if (mods[md]) {\n return mods[md];\n }\n\n let error: Error | undefined;\n\n try {\n mods[md] = require(\n adapter.getAdapterScopedPackageIdentifier ? adapter.getAdapterScopedPackageIdentifier(md) : md,\n );\n return mods[md];\n } catch (e: any) {\n error = e as Error;\n }\n\n try {\n // the user requires a module which is not specified in the additional node modules\n // for backward compatibility we check if the module can simply be required directly before we fail (e.g., direct dependencies of JavaScript adapter)\n adapter.log.debug(`Try direct require of \"${md}\" as not specified in the additional dependencies`);\n mods[md] = require(md);\n\n return mods[md];\n } catch (e: any) {\n context.logError(name, `Error by loading module \"${md}\":`, error || e, 6);\n\n void adapter.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'require',\n });\n }\n },\n Buffer: Buffer,\n __engine: {\n __deprecatedWarnings: [],\n __subscriptionsObject: 0,\n __subscriptions: 0,\n __subscriptionsMessage: 0,\n __subscriptionsFile: 0,\n __subscriptionsLog: 0,\n __schedules: 0,\n },\n\n $: function (selector: string): iobJS.QueryResult {\n // following is supported\n // 'type[commonAttr=something]', 'id[commonAttr=something]', id(enumName=\"something\")', id{nativeName=\"something\"}\n // Type can be state, channel or device\n // Attr can be any of the common attributes and can have wildcards *\n // E.g. \"state[id='hm-rpc.0.*]\" or \"hm-rpc.0.*\" returns all states of adapter instance hm-rpc.0\n // channel(room=\"Living room\") => all states in room \"Living room\"\n // channel{TYPE=BLIND}[state.id=*.LEVEL]\n // Switch all states with .STATE of channels with role \"switch\" in \"Wohnzimmer\" to false\n // $('channel[role=switch][state.id=*.STATE](rooms=Wohnzimmer)').setState(false);\n //\n // Following functions are possible, setValue, getValue (only from first), on, each\n\n // Todo CACHE!!!\n\n const result: iobJS.QueryResult = {} as iobJS.QueryResult;\n\n let name = '';\n const commonStrings: string[] = [];\n const enumStrings: string[] = [];\n const nativeStrings: string[] = [];\n let isInsideName = true;\n let isInsideCommonString = false;\n let isInsideEnumString = false;\n let isInsideNativeString = false;\n let currentCommonString = '';\n let currentNativeString = '';\n let currentEnumString = '';\n\n // parse string\n let selectorHasInvalidType = false;\n if (typeof selector === 'string') {\n for (let i = 0; i < selector.length; i++) {\n if (selector[i] === '{') {\n isInsideName = false;\n if (isInsideCommonString || isInsideEnumString || isInsideNativeString) {\n // Error\n break;\n }\n isInsideNativeString = true;\n } else if (selector[i] === '}') {\n isInsideNativeString = false;\n nativeStrings.push(currentNativeString);\n currentNativeString = '';\n } else if (selector[i] === '[') {\n isInsideName = false;\n if (isInsideCommonString || isInsideEnumString || isInsideNativeString) {\n // Error\n break;\n }\n isInsideCommonString = true;\n } else if (selector[i] === ']') {\n isInsideCommonString = false;\n commonStrings.push(currentCommonString);\n currentCommonString = '';\n } else if (selector[i] === '(') {\n isInsideName = false;\n if (isInsideCommonString || isInsideEnumString || isInsideNativeString) {\n // Error\n break;\n }\n isInsideEnumString = true;\n } else if (selector[i] === ')') {\n isInsideEnumString = false;\n enumStrings.push(currentEnumString);\n currentEnumString = '';\n } else if (isInsideName) {\n name += selector[i];\n } else if (isInsideCommonString) {\n currentCommonString += selector[i];\n } else if (isInsideEnumString) {\n currentEnumString += selector[i];\n } else if (isInsideNativeString) {\n currentNativeString += selector[i];\n } //else {\n // some error\n //}\n }\n } else {\n selectorHasInvalidType = true;\n }\n\n // If some error in the selector\n if (selectorHasInvalidType || isInsideEnumString || isInsideCommonString || isInsideNativeString) {\n result.length = 0;\n result.toArray = function () {\n return [];\n };\n result.each = function () {\n return this;\n };\n result.getState = function () {\n return null;\n };\n result.setState = function () {\n return this;\n };\n result.on = function () {\n return this;\n };\n }\n\n if (isInsideEnumString) {\n sandbox.log(`Invalid selector: enum close bracket \")\" cannot be found in \"${selector}\"`, 'warn');\n result.error = 'Invalid selector: enum close bracket \")\" cannot be found';\n return result;\n } else if (isInsideCommonString) {\n sandbox.log(`Invalid selector: common close bracket \"]\" cannot be found in \"${selector}\"`, 'warn');\n result.error = 'Invalid selector: common close bracket \"]\" cannot be found';\n return result;\n } else if (isInsideNativeString) {\n sandbox.log(`Invalid selector: native close bracket \"}\" cannot be found in \"${selector}\"`, 'warn');\n result.error = 'Invalid selector: native close bracket \"}\" cannot be found';\n return result;\n } else if (selectorHasInvalidType) {\n const message = `Invalid selector: selector must be a string but is of type ${typeof selector}`;\n sandbox.log(message, 'warn');\n result.error = message;\n return result;\n }\n\n let commonSelectors: Selector[] = commonStrings.map(selector => splitSelectorString(selector));\n let nativeSelectors: Selector[] = nativeStrings.map(selector => splitSelectorString(selector));\n const enumSelectorObjects: Selector[] = enumStrings.map(_enum => splitSelectorString(_enum));\n const allSelectors: Selector[] = commonSelectors.concat(nativeSelectors, enumSelectorObjects);\n\n // These selectors match the state or object ID and don't belong in the common/native selectors\n // Also use RegExp for the ID matching\n const stateIdSelectors: Selector[] = allSelectors\n .filter(selector => selector.attr === 'state.id')\n .map(selector => addRegExpToIdAttrSelectors(selector));\n const objectIdSelectors: Selector[] = allSelectors\n .filter(selector => selector.attr === 'id')\n .map(selector => addRegExpToIdAttrSelectors(selector));\n commonSelectors = commonSelectors.filter(\n selector => selector.attr !== 'state.id' && selector.attr !== 'id',\n );\n nativeSelectors = nativeSelectors.filter(\n selector => selector.attr !== 'state.id' && selector.attr !== 'id',\n );\n const enumSelectors: string[] = enumSelectorObjects\n .filter(selector => selector.attr !== 'state.id' && selector.attr !== 'id')\n // enums are filtered by their enum id, so transform the selector into that\n .map(selector => `enum.${selector.attr}.${selector.value}`);\n\n name = name.trim();\n\n if (name === 'channel' || name === 'device') {\n // Fill the channels and devices objects with the IDs of all their states,\n // so we can loop over them afterward\n if (!context.channels || !context.devices) {\n context.channels = {};\n context.devices = {};\n for (const _id of Object.keys(objects)) {\n if (objects[_id].type === 'state') {\n const parts = _id.split('.');\n parts.pop();\n const chn = parts.join('.');\n\n parts.pop();\n const dev = parts.join('.');\n\n context.devices[dev] = context.devices[dev] || new Set();\n context.devices[dev].add(_id);\n\n context.channels[chn] = context.channels[chn] || new Set();\n context.channels[chn].add(_id);\n }\n }\n }\n }\n\n if (name === 'schedule') {\n if (!context.schedules) {\n context.schedules = [];\n for (const _id of Object.keys(objects)) {\n if (objects[_id].type === 'schedule') {\n context.schedules.push(_id);\n }\n }\n }\n }\n\n /**\n * applies all selectors targeting an object or state ID\n */\n function applyIDSelectors(objId: string, selectors: Selector[]): boolean {\n // Only keep the ID if it matches every ID selector\n return selectors.every(selector => !selector.idRegExp || selector.idRegExp.test(objId));\n }\n\n /**\n * Applies all selectors targeting the Object common properties\n *\n * @param objId - The ID of the object in question\n */\n function applyCommonSelectors(objId: string): boolean {\n const obj = objects[objId];\n if (!obj?.common) {\n return false;\n }\n const objCommon = obj.common;\n\n // make sure this object satisfies all selectors\n return commonSelectors.every(\n selector =>\n // ensure a property exists\n (selector.value === undefined && objCommon[selector.attr] !== undefined) ||\n // or match exact values\n looselyEqualsString(objCommon[selector.attr], selector.value),\n );\n }\n\n /**\n * Applies all selectors targeting the Object native properties\n *\n * @param objId - The ID of the object in question\n */\n function applyNativeSelectors(objId: string): boolean {\n const obj = objects[objId];\n if (!obj || !obj.native) {\n return false;\n }\n const objNative = obj.native;\n // make sure this object satisfies all selectors\n return nativeSelectors.every(\n selector =>\n // ensure a property exists\n (selector.value === undefined && objNative[selector.attr] !== undefined) ||\n // or match exact values\n looselyEqualsString(objNative[selector.attr], selector.value),\n );\n }\n\n /**\n * Applies all selectors targeting the Objects enums\n *\n * @param objId - The ID of the object in question\n */\n function applyEnumSelectors(objId: string): boolean {\n const enumIds: string[] = [];\n eventObj.getObjectEnumsSync(context, objId, enumIds);\n // make sure this object satisfies all selectors\n return enumSelectors.every(_enum => enumIds.includes(_enum));\n }\n\n let res: string[];\n\n if (name === 'schedule') {\n res = context.schedules || [];\n if (objectIdSelectors.length) {\n res = res.filter(channelId => applyIDSelectors(channelId, objectIdSelectors));\n }\n\n // filter out those that don't match every common selector\n if (commonSelectors.length) {\n res = res.filter(id => applyCommonSelectors(id));\n }\n\n // filter out those that don't match every native selector\n if (nativeSelectors.length) {\n res = res.filter(id => applyNativeSelectors(id));\n }\n\n // filter out those that don't match every enum selector\n if (enumSelectors.length) {\n res = res.filter(channelId => applyEnumSelectors(channelId));\n }\n } else if (name === 'channel') {\n if (!context.channels) {\n // TODO: fill the channels and maintain them on all places where context.stateIds will be changed\n }\n const channels = context.channels || {};\n\n // go through all channels\n res = Object.keys(channels);\n // filter out those that don't match every ID selector for the channel ID\n if (objectIdSelectors.length) {\n res = res.filter(channelId => applyIDSelectors(channelId, objectIdSelectors));\n }\n // filter out those that don't match every common selector\n if (commonSelectors.length) {\n res = res.filter(channelId => applyCommonSelectors(channelId));\n }\n // filter out those that don't match every native selector\n if (nativeSelectors.length) {\n res = res.filter(channelId => applyNativeSelectors(channelId));\n }\n // filter out those that don't match every enum selector\n if (enumSelectors.length) {\n res = res.filter(channelId => applyEnumSelectors(channelId));\n }\n\n // retrieve the state ID collection for all remaining channels\n res = res\n .map(id => [...(channels[id] || [])])\n // and flatten the array to get only the state IDs\n .reduce((acc, next) => acc.concat(next), []);\n\n // now filter out those that don't match every ID selector for the state ID\n if (stateIdSelectors.length) {\n res = res.filter(stateId => applyIDSelectors(stateId, stateIdSelectors));\n }\n } else if (name === 'device') {\n if (!context.devices) {\n // TODO: fill the devices and maintain them on all places where context.stateIds will be changed\n }\n\n const devices = context.devices || {};\n\n // go through all devices\n res = Object.keys(devices);\n // filter out those that don't match every ID selector for the channel ID\n if (objectIdSelectors.length) {\n res = res.filter(deviceId => applyIDSelectors(deviceId, objectIdSelectors));\n }\n\n // filter out those that don't match every common selector\n if (commonSelectors.length) {\n res = res.filter(deviceId => applyCommonSelectors(deviceId));\n }\n\n // filter out those that don't match every native selector\n if (nativeSelectors.length) {\n res = res.filter(deviceId => applyNativeSelectors(deviceId));\n }\n\n // filter out those that don't match every enum selector\n if (enumSelectors.length) {\n res = res.filter(deviceId => applyEnumSelectors(deviceId));\n }\n\n // retrieve the state ID collection for all remaining devices\n res = res\n .map(id => [...(devices[id] || [])])\n // and flatten the array to get only the state IDs\n .reduce((acc, next) => acc.concat(next), []);\n\n // now filter out those that don't match every ID selector for the state ID\n if (stateIdSelectors.length) {\n res = res.filter(stateId => applyIDSelectors(stateId, stateIdSelectors));\n }\n } else {\n // go through all states\n res = context.stateIds;\n // if the \"name\" is not state, then we filter for the ID as well\n if (name && name !== 'state') {\n const r = new RegExp(`^${name.replace(/\\./g, '\\\\.').replace(/\\*/g, '.*')}$`);\n res = res.filter(id => r.test(id));\n }\n\n // filter out those that don't match every ID selector for the object ID or the state ID\n if (objectIdSelectors.length) {\n res = res.filter(id => applyIDSelectors(id, objectIdSelectors));\n }\n\n // filter out those that don't match every ID selector for the state ID\n if (stateIdSelectors.length) {\n res = res.filter(id => applyIDSelectors(id, stateIdSelectors));\n }\n\n // filter out those that don't match every common selector\n if (commonSelectors.length) {\n res = res.filter(id => applyCommonSelectors(id));\n }\n\n // filter out those that don't match every native selector\n if (nativeSelectors.length) {\n res = res.filter(id => applyNativeSelectors(id));\n }\n\n // filter out those that don't match every enum selector\n if (enumSelectors.length) {\n res = res.filter(id => applyEnumSelectors(id));\n }\n }\n\n // IO-2: O(1) deduplication via Set instead of O(n²) resUnique.includes()\n const resUnique: string[] = [...new Set(res)];\n\n for (let i = 0; i < resUnique.length; i++) {\n result[i] = resUnique[i];\n }\n result.length = resUnique.length;\n\n // Implementing the Symbol.iterator contract makes the query result iterable\n result[Symbol.iterator] = function* () {\n for (let i = 0; i < result.length; i++) {\n yield result[i];\n }\n };\n result.toArray = function (): string[] {\n return [...resUnique];\n };\n result.each = function (callback: (id: string, index: number) => void | false): iobJS.QueryResult {\n if (typeof callback === 'function') {\n let r: boolean | void;\n for (let i = 0; i < this.length; i++) {\n r = callback(result[i], i);\n if (r === false) {\n break;\n }\n }\n }\n return this;\n };\n // @ts-expect-error fix later\n result.getState = function (\n callback?: iobJS.GetStateCallback,\n ): void | null | undefined | iobJS.TypedState | iobJS.AbsentState {\n if ((adapter.config as JavaScriptAdapterConfig).subscribe) {\n if (typeof callback !== 'function') {\n sandbox.log('You cannot use this function synchronous', 'error');\n } else {\n void adapter.getForeignState(\n this[0],\n (err: Error | null | undefined, state?: ioBroker.State | null): void => {\n void callback(\n err,\n context.convertBackStringifiedValues(this[0], state) as\n iobJS.TypedState | iobJS.AbsentState,\n );\n },\n );\n }\n } else {\n if (!this[0]) {\n return null;\n }\n if (context.interimStateValues[this[0]] !== undefined) {\n return context.convertBackStringifiedValues(this[0], context.interimStateValues[this[0]]) as\n iobJS.TypedState | iobJS.AbsentState;\n }\n return context.convertBackStringifiedValues(this[0], states[this[0]]) as\n iobJS.TypedState | iobJS.AbsentState;\n }\n };\n result.getStateAsync = async function (): Promise<\n iobJS.TypedState | iobJS.AbsentState | null | undefined\n > {\n if ((adapter.config as JavaScriptAdapterConfig).subscribe) {\n const state = await adapter.getForeignStateAsync(this[0]);\n return context.convertBackStringifiedValues(this[0], state) as\n iobJS.TypedState | iobJS.AbsentState | null;\n }\n if (!this[0]) {\n return null;\n }\n if (context.interimStateValues[this[0]] !== undefined) {\n return context.convertBackStringifiedValues(this[0], context.interimStateValues[this[0]]) as\n iobJS.TypedState | iobJS.AbsentState | null;\n }\n return context.convertBackStringifiedValues(this[0], states[this[0]]) as\n iobJS.TypedState | iobJS.AbsentState | null;\n };\n result.setState = function (\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean | 'false' | 'true' | null | iobJS.SetStateCallback,\n callback?: iobJS.SetStateCallback,\n ) {\n if (typeof isAck === 'function') {\n callback = isAck;\n isAck = undefined;\n }\n void result\n .setStateAsync(state, isAck as boolean | 'false' | 'true')\n .then(() => typeof callback === 'function' && callback());\n return this;\n };\n result.setStateAsync = async function (\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean,\n ): Promise {\n for (let i = 0; i < this.length; i++) {\n await sandbox.setStateAsync(this[i], state, isAck);\n }\n };\n result.setStateChanged = function (\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean,\n callback?: () => void,\n ) {\n if (typeof isAck === 'function') {\n callback = isAck;\n isAck = undefined;\n }\n void result.setStateChangedAsync(state, isAck).then(() => typeof callback === 'function' && callback());\n return this;\n };\n result.setStateChangedAsync = async function (\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean,\n ): Promise {\n for (let i = 0; i < this.length; i++) {\n await sandbox.setStateChangedAsync(this[i], state, isAck);\n }\n };\n result.setStateDelayed = function (\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck: boolean | number | undefined,\n delay?: number | boolean,\n clearRunning?: boolean | (() => void),\n callback?: () => void,\n ) {\n if (typeof isAck !== 'boolean') {\n callback = clearRunning as () => void;\n clearRunning = delay as boolean;\n delay = isAck;\n isAck = undefined;\n }\n if (typeof delay !== 'number') {\n callback = clearRunning as () => void;\n clearRunning = delay;\n delay = 0;\n }\n if (typeof clearRunning !== 'boolean') {\n callback = clearRunning;\n clearRunning = true;\n }\n let count = this.length;\n for (let i = 0; i < this.length; i++) {\n sandbox.setStateDelayed(this[i], state, isAck, delay, clearRunning, () => {\n if (!--count && typeof callback === 'function') {\n callback();\n }\n });\n }\n return this;\n };\n result.on = function (callbackOrId: string | ((data: any) => void), value?: any) {\n for (let i = 0; i < this.length; i++) {\n sandbox.subscribe(this[i], callbackOrId, value);\n }\n return this;\n };\n return result;\n },\n log: function (msg: string, severity?: ioBroker.LogLevel): void {\n severity ||= 'info';\n\n // disable log in log handler (prevent endless loops)\n if (sandbox.logHandler && (sandbox.logHandler === severity || sandbox.logHandler === '*')) {\n return;\n }\n\n if (!adapter.log[severity]) {\n msg = `Unknown severity level \"${severity}\" by log of [${msg}]`;\n severity = 'warn';\n }\n\n if (msg && typeof msg !== 'string') {\n msg = mods.util.format(msg);\n }\n\n if (logCollector) {\n logCollector(severity, msg);\n } else if (debugMode) {\n console.log(`${severity}$$${name}$$${msg}`, Date.now());\n } else {\n adapter.log[severity](`${name}: ${msg}`);\n }\n },\n onLog: function (severity: ioBroker.LogLevel, callback: (info: ioBroker.LogMessage) => void): number {\n if (!['info', 'error', 'debug', 'silly', 'warn', '*'].includes(severity)) {\n sandbox.log(`Unknown severity \"${severity}\"`, 'warn');\n return 0;\n }\n if (typeof callback !== 'function') {\n sandbox.log(`Invalid callback for onLog`, 'warn');\n return 0;\n }\n\n const handler = { id: _handlerIdCounter++, cb: callback, sandbox, severity };\n context.logSubscriptions[sandbox.scriptName] = context.logSubscriptions[sandbox.scriptName] || [];\n context.logSubscriptions[sandbox.scriptName].push(handler);\n context.updateLogSubscriptions();\n\n sandbox.__engine.__subscriptionsLog += 1;\n\n if (sandbox.verbose) {\n sandbox.log(\n `onLog(severity=${severity}, id=${handler.id}) - logSubscriptions=${sandbox.__engine.__subscriptionsLog}`,\n 'info',\n );\n }\n\n if (\n sandbox.__engine.__subscriptionsLog %\n (adapter.config as JavaScriptAdapterConfig).maxTriggersPerScript ===\n 0\n ) {\n sandbox.log(\n `More than ${sandbox.__engine.__subscriptionsLog} log subscriptions registered. Check your script!`,\n 'warn',\n );\n }\n\n return handler.id;\n },\n onLogUnregister: function (\n idOrCallbackOrSeverity: number | ioBroker.LogLevel | ((info: ioBroker.LogMessage) => void),\n ): boolean {\n let found = false;\n\n if (context.logSubscriptions?.[sandbox.scriptName]) {\n if (sandbox.verbose) {\n sandbox.log(\n `onLogUnregister(idOrCallbackOrSeverity=${JSON.stringify(idOrCallbackOrSeverity)}) - logSubscriptions=${sandbox.__engine.__subscriptionsLog}`,\n 'info',\n );\n }\n\n for (let i = 0; i < context.logSubscriptions[sandbox.scriptName].length; i++) {\n if (\n context.logSubscriptions[sandbox.scriptName][i].cb === idOrCallbackOrSeverity ||\n context.logSubscriptions[sandbox.scriptName][i].id === idOrCallbackOrSeverity ||\n context.logSubscriptions[sandbox.scriptName][i].severity === idOrCallbackOrSeverity\n ) {\n if (sandbox.verbose) {\n sandbox.log(\n `onLogUnregister(idOrCallbackOrSeverity=${JSON.stringify(idOrCallbackOrSeverity)}, removing id=${context.logSubscriptions[sandbox.scriptName][i].id})`,\n 'info',\n );\n }\n\n context.logSubscriptions[sandbox.scriptName].splice(i, 1);\n i--;\n sandbox.__engine.__subscriptionsLog--;\n\n found = true;\n\n // if deletion via ID\n if (typeof idOrCallbackOrSeverity === 'number') {\n break;\n }\n } else if (sandbox.verbose) {\n sandbox.log(\n `onLogUnregister(idOrCallbackOrSeverity=${JSON.stringify(idOrCallbackOrSeverity)}) NOT = ${JSON.stringify(context.logSubscriptions[sandbox.scriptName][i])}`,\n 'info',\n );\n }\n }\n }\n\n context.updateLogSubscriptions();\n\n return found;\n },\n exec: function (\n cmd: string,\n options?: ExecOptions | ((error: Error | null | string, stdout?: string, stderr?: string) => void),\n callback?: (error: Error | null | string, stdout?: string, stderr?: string) => void,\n ): undefined | ChildProcess {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (!(adapter.config as JavaScriptAdapterConfig).enableExec) {\n const error = 'exec is not available. Please enable \"Enable Exec\" option in instance settings';\n sandbox.log(error, 'error');\n\n if (typeof callback === 'function') {\n setImmediate(callback, error, undefined, undefined);\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log(`exec(cmd=${cmd})`, 'info');\n }\n\n if (debug) {\n sandbox.log(words._('Command %s was not executed, while debug mode is active', cmd), 'warn');\n if (typeof callback === 'function') {\n setImmediate(function () {\n callback(null, '', '');\n });\n }\n } else {\n return mods.child_process.exec(\n cmd,\n options,\n (error: Error | null, stdout: string, stderr: string): void => {\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, error, stdout, stderr);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n },\n );\n }\n }\n },\n email: function (msg: string | SendMailOptions): void {\n if (sandbox.verbose) {\n sandbox.log(`email(msg=${JSON.stringify(msg)})`, 'info');\n }\n sandbox.log(`email(msg=${JSON.stringify(msg)}) is deprecated. Please use sendTo instead!`, 'warn');\n adapter.sendTo('email', msg);\n },\n pushover: function (msg: string | PushoverOptions): void {\n if (sandbox.verbose) {\n sandbox.log(`pushover(msg=${JSON.stringify(msg)})`, 'info');\n }\n sandbox.log(`pushover(msg=${JSON.stringify(msg)}) is deprecated. Please use sendTo instead!`, 'warn');\n adapter.sendTo('pushover', msg);\n },\n httpGet: function (\n url: string,\n options:\n | {\n timeout?: number;\n responseType?: ResponseType;\n headers?: Record;\n basicAuth?: { user: string; password: string } | null;\n bearerAuth?: string;\n validateCertificate?: boolean;\n }\n | ((\n error: Error | null,\n result: {\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n },\n ) => void),\n callback?: (\n error: Error | null,\n result: {\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n },\n ) => void,\n ): void {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n const config = {\n ...getHttpRequestConfig(url, options, context.allowSelfSignedCerts),\n method: 'get',\n };\n\n if (sandbox.verbose) {\n sandbox.log(`httpGet(config=${JSON.stringify(config)})`, 'info');\n }\n\n const startTime = Date.now();\n\n mods.axios\n .default(config)\n .then((response: AxiosResponse) => {\n const responseTime = Date.now() - startTime;\n\n if (sandbox.verbose) {\n sandbox.log(`httpGet(url=${url}, responseTime=${responseTime}ms)`, 'info');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, null, {\n statusCode: response.status,\n data: response.data,\n headers: response.headers as Record,\n responseTime,\n });\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n })\n .catch((error: any) => {\n const responseTime = Date.now() - startTime;\n\n sandbox.log(`httpGet(url=${url}, error=${error.message})`, 'error');\n\n if (typeof callback === 'function') {\n let result: {\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n } = {\n statusCode: null,\n data: null,\n headers: {},\n responseTime,\n };\n\n if (error.response) {\n result = {\n statusCode: error.response.status,\n data: error.response.data,\n headers: error.response.headers,\n responseTime,\n };\n }\n\n try {\n callback.call(sandbox, error.message, result);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n });\n },\n httpPost: function (\n url: string,\n data: any,\n options:\n | {\n timeout?: number;\n responseType?: ResponseType;\n headers?: Record;\n basicAuth?: { user: string; password: string } | null;\n bearerAuth?: string;\n validateCertificate?: boolean;\n }\n | ((\n error: Error | null,\n result: {\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n },\n ) => void),\n callback?: (\n error: Error | null,\n result: {\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n },\n ) => void,\n ): void {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n const config = {\n ...getHttpRequestConfig(url, options, context.allowSelfSignedCerts),\n method: 'post',\n data,\n };\n\n if (sandbox.verbose) {\n sandbox.log(`httpPost(config=${JSON.stringify(config)}, data=${data})`, 'info');\n }\n\n const startTime = Date.now();\n\n mods.axios\n .default(config)\n .then((response: AxiosResponse) => {\n const responseTime = Date.now() - startTime;\n\n if (sandbox.verbose) {\n sandbox.log(`httpPost(url=${url}, responseTime=${responseTime}ms)`, 'info');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, null, {\n statusCode: response.status,\n data: response.data,\n headers: response.headers,\n responseTime,\n });\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n })\n .catch((error: unknown) => {\n const responseTime = Date.now() - startTime;\n\n sandbox.log(`httpPost(url=${url}, error=${(error as Error).message})`, 'error');\n\n if (typeof callback === 'function') {\n let result: {\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n } = {\n statusCode: null,\n data: null,\n headers: {},\n responseTime,\n };\n const response: AxiosResponse | undefined = (error as AxiosError).response;\n\n if (response) {\n result = {\n statusCode: response.status,\n data: response.data,\n headers: response.headers,\n responseTime,\n };\n }\n\n try {\n callback.call(sandbox, new Error((error as AxiosError).message), result);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n });\n },\n createTempFile: function (fileName: string, data: Buffer | string): undefined | string {\n const os = mods.os;\n const path = mods.path;\n const fs = mods.fs;\n\n let tempDirPath = context.tempDirectories?.[sandbox.scriptName];\n\n if (!tempDirPath) {\n // create temp directory\n tempDirPath = fs.mkdtempSync(\n path.join(os.tmpdir(), `${sandbox.scriptName.substring(SCRIPT_CODE_MARKER.length)}-`),\n );\n context.tempDirectories[sandbox.scriptName] = tempDirPath;\n\n if (sandbox.verbose) {\n sandbox.log(\n `createTempFile(fileName=${fileName}, tempDirPath=${tempDirPath}) created temp directory in ${os.tmpdir()}`,\n 'info',\n );\n }\n }\n\n const filePath = path.join(tempDirPath, fileName);\n\n // is sub dir?\n const fileDir = path.dirname(filePath);\n if (!fs.existsSync(fileDir)) {\n fs.mkdirSync(fileDir, { recursive: true });\n }\n\n if (typeof data === 'undefined') {\n sandbox.log(\n `createTempFile(fileName=${fileName}, fileDir=${fileDir}, filePath=${filePath}) data is undefined, file not created!`,\n 'error',\n );\n\n return undefined;\n }\n\n fs.writeFileSync(filePath, data);\n if (sandbox.verbose) {\n sandbox.log(`createTempFile(fileName=${fileName}, fileDir=${fileDir}, filePath=${filePath})`, 'info');\n }\n\n return filePath;\n },\n subscribe: function (\n pattern:\n | TimeRule\n | AstroRule\n | Pattern\n | SchedulerRule\n | string\n | (TimeRule | AstroRule | Pattern | SchedulerRule | string)[],\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n callbackOrChangeTypeOrId: string | ChangeType | ((event?: EventObj) => void),\n value?: any,\n ):\n | SubscriptionResult\n | IobSchedule\n | string\n | null\n | undefined\n | (SubscriptionResult | IobSchedule | string | null | undefined)[] {\n // If a schedule object is given\n if (\n (typeof pattern === 'string' && pattern[0] === '{') ||\n (typeof pattern === 'object' && (pattern as SchedulerRule).period)\n ) {\n return sandbox.schedule(pattern as SchedulerRule, callbackOrChangeTypeOrId as () => void);\n }\n // If an array of schedules is given\n if (pattern && Array.isArray(pattern)) {\n const result: (IobSchedule | string | null | undefined)[] = [];\n for (const p of pattern) {\n result.push(\n sandbox.subscribe(p, callbackOrChangeTypeOrId, value) as\n IobSchedule | string | null | undefined,\n );\n }\n return result;\n }\n\n // detect subscribe('id', 'any', (obj) => {})\n let oPattern: Pattern;\n if (\n (typeof pattern === 'string' || pattern instanceof RegExp) &&\n typeof callbackOrChangeTypeOrId === 'string' &&\n typeof value === 'function'\n ) {\n oPattern = { id: pattern, change: callbackOrChangeTypeOrId as ChangeType };\n callbackOrChangeTypeOrId = value;\n value = undefined;\n } else {\n oPattern = pattern as Pattern;\n }\n\n if (oPattern?.id && Array.isArray(oPattern.id)) {\n const result: (IobSchedule | string | null | undefined)[] = [];\n for (let t = 0; t < oPattern.id.length; t++) {\n // IO-4: Spread instead of JSON.parse(JSON.stringify()) – no deep clone needed (only primitive fields)\n const pa: Pattern = { ...oPattern, id: oPattern.id[t] };\n result.push(\n sandbox.subscribe(pa, callbackOrChangeTypeOrId, value) as\n IobSchedule | string | null | undefined,\n );\n }\n return result;\n }\n\n // try to detect astro or cron (by spaces)\n if (isObject(pattern) || (typeof pattern === 'string' && pattern.match(/[,/\\d*]+\\s[,/\\d*]+\\s[,/\\d*]+/))) {\n if ((pattern as AstroRule).astro) {\n return sandbox.schedule(pattern as AstroRule, callbackOrChangeTypeOrId as () => void);\n } else if ((pattern as TimeRule).time) {\n return sandbox.schedule(\n (pattern as TimeRule).time as string,\n callbackOrChangeTypeOrId as () => void,\n );\n }\n }\n\n let callback: undefined | ((obj: EventObj) => void);\n\n // source is set by regexp if defined as /regexp/\n if (!isObject(pattern) || pattern instanceof RegExp || (pattern as RegExp).source) {\n oPattern = { id: pattern as string | RegExp, change: 'ne' };\n }\n\n if (oPattern.id !== undefined && !oPattern.id) {\n sandbox.log(`Error by subscription (trigger): empty ID defined. All states matched.`, 'error');\n return;\n } else if (typeof oPattern.id === 'boolean' || typeof oPattern.id === 'number') {\n sandbox.log(`Error by subscription (trigger): Wrong ID of type boolean or number.`, 'error');\n return;\n }\n\n sandbox.__engine.__subscriptions += 1;\n\n if (\n sandbox.__engine.__subscriptions % (adapter.config as JavaScriptAdapterConfig).maxTriggersPerScript ===\n 0\n ) {\n sandbox.log(\n `More than ${sandbox.__engine.__subscriptions} subscriptions registered. Check your script!`,\n 'warn',\n );\n }\n\n if (oPattern.q === undefined) {\n oPattern.q = 0;\n }\n\n // add adapter namespace if nothing given\n if (oPattern.id && typeof oPattern.id === 'string' && !oPattern.id.includes('.')) {\n oPattern.id = `${adapter.namespace}.${oPattern.id}`;\n }\n\n if (typeof callbackOrChangeTypeOrId === 'function') {\n callback = callbackOrChangeTypeOrId;\n } else {\n if (typeof value === 'undefined') {\n callback = function (obj: EventObj) {\n sandbox.setState(callbackOrChangeTypeOrId, obj.newState.val);\n };\n } else {\n callback = function (/* obj */) {\n sandbox.setState(callbackOrChangeTypeOrId, value);\n };\n }\n }\n\n const subs: SubscriptionResult = {\n pattern: oPattern,\n callback: (obj: EventObj) => {\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, obj);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n },\n name,\n };\n\n // try to extract adapter\n if (oPattern.id && typeof oPattern.id === 'string') {\n const parts = oPattern.id.split('.');\n const a = `${parts[0]}.${parts[1]}`;\n const _adapter = `system.adapter.${a}`;\n\n if (objects[_adapter] && objects[_adapter].common && objects[_adapter].common.subscribable) {\n const alive = `system.adapter.${a}.alive`;\n context.adapterSubs[alive] = context.adapterSubs[alive] || new Set();\n\n // Set.has() is O(1) and automatically prevents duplicates\n const subExists = context.adapterSubs[alive].has(oPattern.id);\n\n if (!subExists) {\n context.adapterSubs[alive].add(oPattern.id);\n adapter.sendTo(a, 'subscribe', oPattern.id);\n }\n }\n }\n if (sandbox.verbose) {\n sandbox.log(`subscribe: ${JSON.stringify(subs)}`, 'info');\n }\n\n subscribePattern(script, oPattern.id as string);\n\n subs.patternCompareFunctions = getPatternCompareFunctions(oPattern);\n context.subscriptions.push(subs);\n\n // O(1) dispatch index: exact string IDs go into the map, everything else into the wildcard array\n if (isExactId(oPattern.id)) {\n if (!context.subscriptionsMap.has(oPattern.id)) {\n context.subscriptionsMap.set(oPattern.id, []);\n }\n context.subscriptionsMap.get(oPattern.id)!.push(subs);\n } else {\n context.subscriptionsWildcard.push(subs);\n }\n\n if (oPattern.enumName || oPattern.enumId) {\n context.isEnums = true;\n }\n return subs;\n },\n getSubscriptions: function (): Record {\n const result: Record = {};\n // Iterate over the O(1) dispatch index instead of the flat array\n for (const [id, bucket] of context.subscriptionsMap) {\n result[id] = bucket.map(s => ({ name: s.name, pattern: s.pattern }));\n }\n for (const s of context.subscriptionsWildcard) {\n const key = s.pattern.id as string;\n (result[key] ??= []).push({ name: s.name, pattern: s.pattern });\n }\n if (sandbox.verbose) {\n sandbox.log(`getSubscriptions() => ${JSON.stringify(result)}`, 'info');\n }\n return result;\n },\n getFileSubscriptions: function (): Record {\n const result: Record = {};\n for (let s = 0; s < context.subscriptionsFile.length; s++) {\n const key = `${context.subscriptionsFile[s].id}$%$${context.subscriptionsFile[s].fileNamePattern}`;\n result[key] = result[key] || [];\n result[key].push({\n name: context.subscriptionsFile[s].name,\n id: context.subscriptionsFile[s].id,\n fileNamePattern: context.subscriptionsFile[s].fileNamePattern,\n });\n }\n if (sandbox.verbose) {\n sandbox.log(`getFileSubscriptions() => ${JSON.stringify(result)}`, 'info');\n }\n return result;\n },\n adapterSubscribe: function (id: string): void {\n if (typeof id !== 'string') {\n sandbox.log(`adapterSubscribe: invalid type of id ${typeof id}`, 'error');\n return;\n }\n const parts = id.split('.');\n const _adapter = `system.adapter.${parts[0]}.${parts[1]}`;\n if (objects[_adapter]?.common?.subscribable) {\n const a = `${parts[0]}.${parts[1]}`;\n const alive = `system.adapter.${a}.alive`;\n context.adapterSubs[alive] = context.adapterSubs[alive] || new Set();\n context.adapterSubs[alive].add(id);\n if (sandbox.verbose) {\n sandbox.log(`adapterSubscribe: ${a} - ${id}`, 'info');\n }\n adapter.sendTo(a, 'subscribe', id);\n }\n },\n adapterUnsubscribe: function (\n idOrObject: string | SubscriptionResult | (string | SubscriptionResult)[],\n ): boolean | boolean[] {\n // todo: BF - it could be an error\n return sandbox.unsubscribe(idOrObject);\n },\n unsubscribe: function (\n idOrObject: string | SubscriptionResult | (string | SubscriptionResult)[],\n ): boolean | boolean[] {\n if (idOrObject && Array.isArray(idOrObject)) {\n const result: boolean[] = [];\n for (let t = 0; t < idOrObject.length; t++) {\n result.push(sandbox.unsubscribe(idOrObject[t]) as boolean);\n }\n return result;\n }\n\n if (sandbox.verbose) {\n sandbox.log(`adapterUnsubscribe(id=${JSON.stringify(idOrObject)})`, 'info');\n }\n\n if (isObject(idOrObject)) {\n for (let i = context.subscriptions.length - 1; i >= 0; i--) {\n if (context.subscriptions[i] === idOrObject) {\n const sub = context.subscriptions[i];\n unsubscribePattern(script, sub.pattern.id as string);\n context.subscriptions.splice(i, 1);\n // Remove from O(1) dispatch structures\n removeFromDispatchIndex(context, sub);\n sandbox.__engine.__subscriptions--;\n return true;\n }\n }\n return false;\n }\n let deleted = 0;\n for (let i = context.subscriptions.length - 1; i >= 0; i--) {\n if (context.subscriptions[i].name === name && context.subscriptions[i].pattern.id === idOrObject) {\n deleted++;\n const sub = context.subscriptions[i];\n unsubscribePattern(script, sub.pattern.id as string);\n context.subscriptions.splice(i, 1);\n // Remove from O(1) dispatch structures\n removeFromDispatchIndex(context, sub);\n sandbox.__engine.__subscriptions--;\n }\n }\n return !!deleted;\n },\n on: function (\n pattern:\n | TimeRule\n | AstroRule\n | Pattern\n | SchedulerRule\n | string\n | (TimeRule | AstroRule | Pattern | SchedulerRule | string)[],\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n callbackOrChangeTypeOrId: string | ChangeType | ((event?: EventObj) => void),\n value?: any,\n ):\n | SubscriptionResult\n | IobSchedule\n | string\n | null\n | undefined\n | (SubscriptionResult | IobSchedule | string | null | undefined)[] {\n return sandbox.subscribe(pattern, callbackOrChangeTypeOrId, value);\n },\n onEnumMembers: function (enumId: string, callback: (event?: EventObj) => void): void {\n if (enums.has(enumId)) {\n const subscriptions: Record = {};\n\n const init = (): void => {\n const obj: ioBroker.EnumObject = objects[enumId] as ioBroker.EnumObject;\n const common: ioBroker.EnumCommon = obj?.common ?? {};\n const members: string[] = common?.members ?? [];\n\n // Remove old subscriptions\n for (const [objId, subscription] of Object.entries(subscriptions)) {\n if (!members.includes(objId)) {\n sandbox.unsubscribe(subscription);\n delete subscriptions[objId];\n }\n }\n\n // Subscribe to all members of enum\n for (const objId of members) {\n // IO-6: `in` operator instead of Object.keys().includes() – O(1) instead of O(n)\n if (!(objId in subscriptions)) {\n if (objects?.[objId]?.type === 'state') {\n // Just subscribe to states\n subscriptions[objId] = sandbox.subscribe(objId, callback) as\n string | SubscriptionResult; // TODO: more features\n }\n }\n }\n\n if (sandbox.verbose) {\n sandbox.log(\n `onEnumMembers(id=${enumId}, members=${JSON.stringify(Object.keys(subscriptions))})`,\n 'info',\n );\n }\n };\n\n init();\n\n sandbox.subscribeObject(enumId, obj => obj && init());\n } else {\n sandbox.log(`onEnumMembers: enum with id \"${enumId}\" doesn't exists`, 'error');\n }\n },\n onFile: function (\n id: string,\n fileNamePattern: string | string[],\n withFileOrCallback:\n | boolean\n | ((id: string, fileName: string, size: number, file?: string | Buffer, mimeType?: string) => void),\n callback?: (\n id: string,\n fileName: string,\n size: number | null,\n file?: string | Buffer,\n mimeType?: string,\n ) => void,\n ): undefined | FileSubscriptionResult | (undefined | FileSubscriptionResult)[] {\n if (typeof withFileOrCallback === 'function') {\n callback = withFileOrCallback as (\n id: string,\n fileName: string,\n size: number | null,\n file?: string | Buffer,\n mimeType?: string,\n ) => void;\n withFileOrCallback = false;\n }\n\n if (!adapter.subscribeForeignFiles) {\n sandbox.log(\n 'onFile: your js-controller does not support yet onFile subscribes. Please update to js-controller@4.1.x or newer',\n 'warn',\n );\n return;\n }\n if (!id || !fileNamePattern) {\n sandbox.log(\n 'onFile: invalid parameters. Usage: onFile(\"vis.0\", \"main/*\", true, (id, fileName, size, file, mimeType) => {});',\n 'error',\n );\n return;\n }\n if (typeof callback !== 'function') {\n sandbox.offFile(id, fileNamePattern);\n return;\n }\n\n if (Array.isArray(fileNamePattern)) {\n return fileNamePattern.map(\n filePattern =>\n sandbox.onFile(id, filePattern, withFileOrCallback, callback) as\n undefined | FileSubscriptionResult,\n );\n }\n\n sandbox.__engine.__subscriptionsFile += 1;\n\n if (sandbox.verbose) {\n sandbox.log(\n `onFile(id=${id}, fileNamePattern=${fileNamePattern}) - fileSubscriptions=${sandbox.__engine.__subscriptionsFile}`,\n 'info',\n );\n }\n\n if (\n sandbox.__engine.__subscriptionsFile %\n (adapter.config as JavaScriptAdapterConfig).maxTriggersPerScript ===\n 0\n ) {\n sandbox.log(\n `More than ${sandbox.__engine.__subscriptionsFile} file subscriptions registered. Check your script!`,\n 'warn',\n );\n }\n\n let idRegEx: RegExp | undefined;\n let fileRegEx: RegExp | undefined;\n if (id.includes('*')) {\n idRegEx = new RegExp(pattern2RegEx(id));\n }\n if (fileNamePattern.includes('*')) {\n fileRegEx = new RegExp(pattern2RegEx(fileNamePattern));\n }\n\n const subs: FileSubscriptionResult = {\n id,\n fileNamePattern,\n withFile: withFileOrCallback,\n idRegEx,\n fileRegEx,\n callback: (id: string, fileName: string, size: number | null, withFile: boolean): void => {\n try {\n if (sandbox.verbose) {\n sandbox.log(`onFile changed(id=${id}, fileName=${fileName}, size=${size})`, 'info');\n }\n\n if (withFile && (size || 0) > 0) {\n adapter\n .readFileAsync(id, fileName)\n .then(data => {\n try {\n callback.call(sandbox, id, fileName, size, data.file, data.mimeType);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n })\n .catch(error => errorInCallback(error));\n } else {\n callback.call(sandbox, id, fileName, size);\n }\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n },\n name,\n };\n\n context.subscriptionsFile.push(subs);\n subscribeFile(script, id, fileNamePattern);\n return subs;\n },\n offFile: function (\n idOrObject: FileSubscriptionResult | string | (FileSubscriptionResult | string)[],\n fileNamePattern?: string | string[],\n ): boolean | boolean[] {\n if (!adapter.unsubscribeForeignFiles) {\n sandbox.log(\n 'offFile: your js-controller does not support yet file unsubscribes. Please update to js-controller@4.1.x or newer',\n 'warn',\n );\n return false;\n }\n\n if (sandbox.verbose) {\n sandbox.log(\n `offFile(idOrObject=${JSON.stringify(idOrObject)}, fileNamePattern=${JSON.stringify(fileNamePattern)}) - fileSubscriptions=${sandbox.__engine.__subscriptionsFile}`,\n 'info',\n );\n }\n\n if (idOrObject && typeof idOrObject === 'object') {\n if (Array.isArray(idOrObject)) {\n const result: boolean[] = [];\n for (let t = 0; t < idOrObject.length; t++) {\n result.push(sandbox.offFile(idOrObject[t]) as boolean);\n }\n return result;\n }\n for (let i = context.subscriptionsFile.length - 1; i >= 0; i--) {\n if (context.subscriptionsFile[i] === idOrObject) {\n unsubscribeFile(\n script,\n context.subscriptionsFile[i].id,\n context.subscriptionsFile[i].fileNamePattern,\n );\n\n if (sandbox.verbose) {\n sandbox.log(\n `offFile(type=object, fileNamePattern=${JSON.stringify(fileNamePattern)}, removing id=${context.subscriptionsFile[i].id})`,\n 'info',\n );\n }\n\n context.subscriptionsFile.splice(i, 1);\n sandbox.__engine.__subscriptionsFile--;\n return true;\n }\n }\n return false;\n }\n\n if (fileNamePattern && Array.isArray(fileNamePattern)) {\n const result: boolean[] = [];\n for (let t = 0; t < fileNamePattern.length; t++) {\n result.push(sandbox.offFile(idOrObject, fileNamePattern[t]) as boolean);\n }\n return result;\n }\n\n let deleted = 0;\n for (let i = context.subscriptionsFile.length - 1; i >= 0; i--) {\n if (\n context.subscriptionsFile[i].id === idOrObject &&\n context.subscriptionsFile[i].fileNamePattern === fileNamePattern\n ) {\n deleted++;\n unsubscribeFile(\n script,\n context.subscriptionsFile[i].id,\n context.subscriptionsFile[i].fileNamePattern,\n );\n\n if (sandbox.verbose) {\n sandbox.log(\n `offFile(type=string, fileNamePattern=${fileNamePattern}, removing id=${context.subscriptionsFile[i].id})`,\n 'info',\n );\n }\n\n context.subscriptionsFile.splice(i, 1);\n sandbox.__engine.__subscriptionsFile--;\n }\n }\n return !!deleted;\n },\n /** Registers a one-time subscription which automatically unsubscribes after the first invocation */\n once: function (\n pattern:\n | TimeRule\n | AstroRule\n | Pattern\n | SchedulerRule\n | string\n | (TimeRule | AstroRule | Pattern | SchedulerRule | string)[],\n callback?: (event?: EventObj) => void,\n ): string | SubscriptionResult | Promise {\n function _once(cb: (obj?: EventObj) => void): string | SubscriptionResult {\n // eslint-disable-next-line prefer-const\n let subscription: string | SubscriptionResult;\n const handler = (obj?: EventObj): void => {\n subscription && sandbox.unsubscribe(subscription);\n typeof cb === 'function' && cb(obj);\n };\n subscription = sandbox.subscribe(pattern, handler) as string | SubscriptionResult;\n return subscription;\n }\n\n if (typeof callback === 'function') {\n // Callback-style: once(\"id\", (obj) => { ... })\n return _once(callback);\n }\n\n // Promise-style: once(\"id\").then(obj => { ... })\n return new Promise(resolve => _once(resolve));\n },\n schedule: function (\n pattern: SchedulerRule | AstroRule | Date | string,\n callback: () => void,\n ): IobSchedule | string | null | undefined {\n if (typeof callback !== 'function') {\n sandbox.log(`schedule callback missing`, 'error');\n return null;\n }\n\n if (\n (typeof pattern === 'string' && pattern[0] === '{') ||\n (typeof pattern === 'object' && (pattern as SchedulerRule).period)\n ) {\n if (sandbox.verbose) {\n sandbox.log(\n `schedule(wizard=${typeof pattern === 'object' ? JSON.stringify(pattern) : pattern})`,\n 'info',\n );\n }\n\n if (!context.scheduler) {\n sandbox.log(\n `Cannot schedule \"${typeof pattern === 'object' ? JSON.stringify(pattern) : pattern}\" because scheduler is not available`,\n 'error',\n );\n return null;\n }\n\n const schedule: string | null = context.scheduler.add(\n pattern as SchedulerRule | string,\n sandbox.scriptName,\n callback,\n );\n if (schedule) {\n script.wizards.push(schedule);\n sandbox.__engine.__schedules += 1;\n\n if (\n sandbox.__engine.__schedules %\n (adapter.config as JavaScriptAdapterConfig).maxTriggersPerScript ===\n 0\n ) {\n sandbox.log(\n `More than ${sandbox.__engine.__schedules} schedules registered. Check your script!`,\n 'warn',\n );\n }\n }\n\n return schedule;\n }\n\n const adapterConfig: JavaScriptAdapterConfig = adapter.config as JavaScriptAdapterConfig;\n\n if (typeof pattern === 'object' && (pattern as AstroRule).astro) {\n const astroPattern = pattern as AstroRule;\n const nowDate = new Date();\n\n if (\n adapterConfig.latitude === undefined ||\n adapterConfig.longitude === undefined ||\n adapterConfig.latitude === null ||\n adapterConfig.longitude === null\n ) {\n sandbox.log('Longitude or latitude does not set. Cannot use astro.', 'error');\n return null;\n }\n\n // ensure events are calculated independent of current time\n // TODO: use getAstroStartOfDay of adapter?\n const todayNoon = new Date(nowDate);\n todayNoon.setHours(12, 0, 0, 0);\n let ts = mods.suncalc.getTimes(todayNoon, adapterConfig.latitude, adapterConfig.longitude)[\n astroPattern.astro\n ];\n\n // event on the next day, correct or force recalculation at midnight\n if (todayNoon.getDate() !== ts.getDate()) {\n todayNoon.setDate(todayNoon.getDate() - 1);\n ts = mods.suncalc.getTimes(todayNoon, adapterConfig.latitude, adapterConfig.longitude)[\n astroPattern.astro\n ];\n }\n\n if (ts.getTime().toString() === 'NaN') {\n sandbox.log(\n `Cannot calculate \"${astroPattern.astro}\" for ${adapterConfig.latitude}, ${adapterConfig.longitude}`,\n 'warn',\n );\n ts = new Date(nowDate.getTime());\n\n if (\n astroPattern.astro === 'sunriseEnd' ||\n astroPattern.astro === 'goldenHourEnd' ||\n astroPattern.astro === 'sunset' ||\n astroPattern.astro === 'nightEnd' ||\n astroPattern.astro === 'nauticalDusk'\n ) {\n ts.setHours(23);\n ts.setMinutes(59);\n ts.setSeconds(59);\n } else {\n ts.setHours(23);\n ts.setMinutes(59);\n ts.setSeconds(58);\n }\n }\n\n if (ts && astroPattern.shift) {\n ts = new Date(ts.getTime() + astroPattern.shift * 60000);\n }\n\n if (!ts || ts < nowDate) {\n const date = new Date(nowDate);\n // Event doesn't occur today - try again tomorrow\n // Calculate time till 24:00 (local, NOT UTC) and set timeout\n date.setDate(date.getDate() + 1);\n date.setMinutes(0); // Sometimes timer fires at 23:59:59\n date.setHours(0);\n date.setSeconds(1);\n date.setMilliseconds(0);\n\n sandbox.__engine.__schedules += 1;\n\n if (sandbox.__engine.__schedules % adapterConfig.maxTriggersPerScript === 0) {\n sandbox.log(\n `More than ${sandbox.__engine.__schedules} schedules registered. Check your script!`,\n 'warn',\n );\n }\n\n if (sandbox.verbose) {\n sandbox.log(\n `schedule(astro=${astroPattern.astro}, offset=${astroPattern.shift}) is tomorrow, waiting until ${date.toISOString()}`,\n 'info',\n );\n }\n\n // Calculate new schedule in the next day\n sandbox.setTimeout(() => {\n if (sandbox.__engine.__schedules > 0) {\n sandbox.__engine.__schedules--;\n }\n sandbox.schedule(astroPattern, callback);\n }, date.getTime() - Date.now());\n\n return;\n }\n\n sandbox.__engine.__schedules += 1;\n\n if (sandbox.__engine.__schedules % adapterConfig.maxTriggersPerScript === 0) {\n sandbox.log(\n `More than ${sandbox.__engine.__schedules} schedules registered. Check your script!`,\n 'warn',\n );\n }\n\n sandbox.setTimeout(() => {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n // Reschedule in 2 seconds\n sandbox.setTimeout(() => {\n if (sandbox.__engine.__schedules > 0) {\n sandbox.__engine.__schedules--;\n }\n sandbox.schedule(astroPattern, callback);\n }, 2000);\n }, ts.getTime() - Date.now());\n\n if (sandbox.verbose) {\n sandbox.log(\n `schedule(astro=${astroPattern.astro}, offset=${astroPattern.shift}) is today, waiting until ${ts.toISOString()}`,\n 'info',\n );\n }\n } else {\n // fix a problem with sunday and 7\n if (typeof pattern === 'string') {\n // this could be a CRON\n const parts = pattern.replace(/\\s+/g, ' ').split(' ');\n if (parts.length >= 5 && parseInt(parts[5], 10) >= 7) {\n parts[5] = '0';\n }\n pattern = parts.join(' ');\n }\n // created in VM the date object: pattern instanceof Date => false\n // so fix it\n if (typeof pattern === 'object' && (pattern as Date).getDate) {\n pattern = new Date(pattern as Date);\n }\n\n const schedule: IobSchedule = mods.nodeSchedule.scheduleJob(pattern, (): void => {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n });\n if (schedule) {\n sandbox.__engine.__schedules += 1;\n\n if (\n sandbox.__engine.__schedules %\n (adapter.config as JavaScriptAdapterConfig).maxTriggersPerScript ===\n 0\n ) {\n sandbox.log(\n `More than ${sandbox.__engine.__schedules} schedules registered. Check your script!`,\n 'warn',\n );\n }\n\n schedule._ioBroker = {\n type: 'cron',\n pattern: pattern as string | Date,\n scriptName: sandbox.scriptName,\n id: `cron_${Date.now()}_${Math.round(Math.random() * 100000)}`,\n };\n\n script.schedules.push(schedule);\n } else {\n sandbox.log(`schedule(cron=${JSON.stringify(pattern)}): cannot create schedule`, 'error');\n }\n\n if (sandbox.verbose) {\n sandbox.log(`schedule(cron=${JSON.stringify(pattern)})`, 'info');\n }\n\n return schedule;\n }\n },\n scheduleById: function (id: string, ack: boolean | (() => void) | undefined, callback?: () => void): void {\n let scheduleId: IobSchedule | string | null | undefined = null;\n let currentExp: string | null = null; // current cron expression\n\n if (typeof ack === 'function') {\n callback = ack;\n ack = undefined;\n }\n\n const rhms = /^(2[0-3]|[01]?[0-9]):([0-5]?[0-9]):([0-5]?[0-9])$/; // hh:mm:ss\n const rhm = /^(2[0-3]|[01]?[0-9]):([0-5]?[0-9])$/; // hh:mm\n\n const init = (time: string): void => {\n if (typeof time === 'string') {\n let h: number | undefined = undefined;\n let m: number | undefined = undefined;\n let s: number | undefined = undefined;\n\n let isValid = false;\n\n let result = time.match(rhms);\n if (result) {\n [, h, m, s] = result.map(v => parseInt(v));\n isValid = true;\n } else {\n result = time.match(rhm);\n if (result) {\n [, h, m] = result.map(v => parseInt(v));\n isValid = true;\n }\n }\n\n if (isValid) {\n const cronExp = `${s ?? '0'} ${m ?? '0'} ${h ?? '0'} * * *`;\n\n if (cronExp !== currentExp) {\n if (sandbox.verbose) {\n sandbox.log(\n `scheduleById(id=${id}): Init with expression ${cronExp} from ${time}`,\n 'info',\n );\n }\n currentExp = cronExp;\n\n if (scheduleId) {\n sandbox.clearSchedule(scheduleId);\n scheduleId = null;\n }\n\n scheduleId = sandbox.schedule(cronExp, () => {\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n });\n }\n } else {\n sandbox.log(\n `scheduleById(id=${id},time=${time}): cannot create schedule - invalid format (HH:MM:SS or H:M:S required)`,\n 'error',\n );\n }\n } else {\n sandbox.log(\n `scheduleById(id=${id}): cannot create schedule - invalid var type (no string)`,\n 'error',\n );\n }\n };\n\n sandbox.getState(id, (err, state) => {\n if (!err && state?.val) {\n if (sandbox.verbose) {\n sandbox.log(`scheduleById(id=${id}): Init with value ${state.val}`, 'info');\n }\n init(state.val.toString());\n }\n });\n\n const triggerDef: Pattern = { id, change: 'any' };\n if (ack !== undefined) {\n triggerDef.ack = ack;\n }\n\n sandbox.on(triggerDef, obj => {\n if (obj?.state?.val) {\n if (sandbox.verbose) {\n sandbox.log(`scheduleById(id=${id}): Update with value ${obj.state.val}`, 'info');\n }\n init(obj.state.val.toString());\n }\n });\n },\n getAstroDate: function (pattern: AstroEvent, date?: Date | number, offsetMinutes?: number): Date | undefined {\n if (date === undefined) {\n date = new Date();\n }\n if (typeof date === 'number') {\n date = new Date(date);\n } else {\n date = new Date(date.getTime());\n }\n\n if (!consts.astroList.includes(pattern)) {\n const pos = consts.astroListLow.indexOf(pattern.toLowerCase());\n if (pos !== -1) {\n pattern = consts.astroList[pos];\n }\n }\n\n if (\n (!(adapter.config as JavaScriptAdapterConfig).latitude &&\n (adapter.config as JavaScriptAdapterConfig).latitude !== 0) ||\n (!(adapter.config as JavaScriptAdapterConfig).longitude &&\n (adapter.config as JavaScriptAdapterConfig).longitude !== 0)\n ) {\n sandbox.log('Longitude or latitude does not set. Cannot use astro.', 'error');\n return;\n }\n\n // ensure events are calculated independent of current time\n date.setHours(12, 0, 0, 0);\n let ts = mods.suncalc.getTimes(\n date,\n (adapter.config as JavaScriptAdapterConfig).latitude,\n (adapter.config as JavaScriptAdapterConfig).longitude,\n )[pattern];\n\n if (ts === undefined || ts.getTime().toString() === 'NaN') {\n sandbox.log(\n `Cannot calculate astro date \"${pattern}\" for ${(adapter.config as JavaScriptAdapterConfig).latitude}, ${(adapter.config as JavaScriptAdapterConfig).longitude}`,\n 'warn',\n );\n }\n\n if (sandbox.verbose) {\n sandbox.log(`getAstroDate(pattern=${pattern}, date=${date.toString()}) => ${ts}`, 'info');\n }\n\n if (offsetMinutes !== undefined) {\n ts = new Date(ts.getTime() + offsetMinutes * 60000);\n }\n return ts;\n },\n isAstroDay: function (): boolean | undefined {\n const nowDate = new Date();\n const dayBegin = sandbox.getAstroDate('sunrise');\n const dayEnd = sandbox.getAstroDate('sunset');\n\n if (dayBegin === undefined || dayEnd === undefined) {\n return;\n }\n\n if (sandbox.verbose) {\n sandbox.log(`isAstroDay() => ${nowDate >= dayBegin && nowDate <= dayEnd}`, 'info');\n }\n\n return nowDate >= dayBegin && nowDate <= dayEnd;\n },\n clearSchedule: function (schedule: IobSchedule | ScheduleName | string): boolean {\n if (context.scheduler?.get(schedule as string | ScheduleName)) {\n if (sandbox.verbose) {\n sandbox.log('clearSchedule() => wizard cleared', 'info');\n }\n const pos = script.wizards.indexOf(schedule as string);\n if (pos !== -1) {\n script.wizards.splice(pos, 1);\n if (sandbox.__engine.__schedules > 0) {\n sandbox.__engine.__schedules--;\n }\n }\n context.scheduler.remove(schedule as string | ScheduleName);\n return true;\n }\n for (let i = 0; i < script.schedules.length; i++) {\n // Support both full IobSchedule objects (with nested _ioBroker) and\n // bare _ioBroker metadata objects as returned by getSchedules()\n const ioBrokerMeta =\n schedule && typeof schedule === 'object'\n ? (schedule as IobSchedule)._ioBroker || (schedule as { type?: string; id?: string })\n : undefined;\n if (ioBrokerMeta?.type === 'cron') {\n if (script.schedules[i]._ioBroker.id === ioBrokerMeta.id) {\n if (!mods.nodeSchedule.cancelJob(script.schedules[i])) {\n sandbox.log('Error by canceling scheduled job', 'error');\n }\n script.schedules.splice(i, 1);\n if (sandbox.__engine.__schedules > 0) {\n sandbox.__engine.__schedules--;\n }\n\n if (sandbox.verbose) {\n sandbox.log('clearSchedule() => cleared', 'info');\n }\n return true;\n }\n } else if (script.schedules[i] === schedule) {\n if (!mods.nodeSchedule.cancelJob(script.schedules[i])) {\n sandbox.log('Error by canceling scheduled job', 'error');\n }\n script.schedules.splice(i, 1);\n if (sandbox.__engine.__schedules > 0) {\n sandbox.__engine.__schedules--;\n }\n\n if (sandbox.verbose) {\n sandbox.log('clearSchedule() => cleared', 'info');\n }\n return true;\n }\n }\n\n if (sandbox.verbose) {\n sandbox.log('clearSchedule() => invalid handler', 'warn');\n }\n return false;\n },\n getSchedules: function (allScripts?: boolean): ScheduleName[] {\n const schedules = context.scheduler?.getList() || [];\n if (allScripts) {\n Object.keys(context.scripts).forEach(\n name =>\n context.scripts[name].schedules &&\n // IO-8: Spread instead of JSON.parse(JSON.stringify()) – _ioBroker has only primitive fields\n context.scripts[name].schedules.forEach(s =>\n schedules.push({ ...s._ioBroker } as unknown as ScheduleName),\n ),\n );\n } else {\n script.schedules &&\n // IO-8: Spread instead of JSON.parse(JSON.stringify())\n script.schedules.forEach(s => schedules.push({ ...s._ioBroker } as unknown as ScheduleName));\n }\n return schedules;\n },\n setState: function (\n id: string,\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean | 'true' | 'false' | ((err?: Error | null) => void),\n callback?: (err?: Error | null) => void,\n ): void {\n return setStateHelper(sandbox, false, false, id, state, isAck, callback);\n },\n setStateChanged: function (\n id: string,\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean | ((err?: Error | null) => void),\n callback?: (err?: Error | null) => void,\n ): void {\n return setStateHelper(sandbox, false, true, id, state, isAck, callback);\n },\n setStateDelayed: function (\n id: string,\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck: boolean | number | undefined,\n delay?: number | boolean,\n clearRunning?: boolean | ((err?: Error | null) => void),\n callback?: (err?: Error | null) => void,\n ): number | null {\n // find arguments\n if (typeof isAck !== 'boolean') {\n callback = clearRunning as (err?: Error | null) => void;\n clearRunning = delay as boolean;\n delay = isAck;\n isAck = undefined;\n }\n if (typeof delay !== 'number') {\n callback = clearRunning as (err?: Error | null) => void;\n clearRunning = delay;\n delay = 0;\n }\n if (typeof clearRunning !== 'boolean') {\n callback = clearRunning;\n clearRunning = true;\n }\n\n // Check a type of state\n if (!objects[id] && objects[`${adapter.namespace}.${id}`]) {\n id = `${adapter.namespace}.${id}`;\n }\n\n if (sandbox.verbose) {\n sandbox.log(\n `setStateDelayed(id=${id}, state=${JSON.stringify(state)}, isAck=${isAck}, delay=${delay}, clearRunning=${clearRunning})`,\n 'info',\n );\n }\n\n if (clearRunning) {\n if (timers[id]) {\n if (sandbox.verbose) {\n sandbox.log(`setStateDelayed: clear ${timers[id].length} running timers`, 'info');\n }\n\n // collect affected scriptNames before deleting\n const affectedScripts = new Set(timers[id].map(e => e.scriptName));\n for (let i = 0; i < timers[id].length; i++) {\n clearTimeout(timers[id][i].t);\n }\n delete timers[id];\n // update timersByScript reverse-index for all affected scripts\n for (const scriptName of affectedScripts) {\n const scriptSet = context.timersByScript.get(scriptName);\n if (scriptSet) {\n scriptSet.delete(id);\n if (!scriptSet.size) {\n context.timersByScript.delete(scriptName);\n }\n }\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log('setStateDelayed: no running timers', 'info');\n }\n }\n }\n // If no delay => starts immediately\n if (!delay) {\n sandbox.setState(id, state, isAck, callback);\n return null;\n }\n // If delay\n timers[id] = timers[id] || [];\n\n // calculate timerId\n context.timerId++;\n if (context.timerId > 0xfffffffe) {\n context.timerId = 0;\n }\n\n // Start timeout\n const timer = setTimeout(\n function (_timerId, _id, _state, _isAck) {\n sandbox.setState(_id, _state, _isAck, callback);\n // delete timer handler\n if (timers[_id]) {\n // optimisation\n if (timers[_id].length === 1) {\n const scriptName = timers[_id][0].scriptName;\n delete timers[_id];\n // update timersByScript reverse-index\n const scriptSet = context.timersByScript.get(scriptName);\n if (scriptSet) {\n scriptSet.delete(_id);\n if (!scriptSet.size) {\n context.timersByScript.delete(scriptName);\n }\n }\n } else {\n for (let t = 0; t < timers[_id].length; t++) {\n if (timers[_id][t].id === _timerId) {\n const scriptName = timers[_id][t].scriptName;\n timers[_id].splice(t, 1);\n if (!timers[_id].length) {\n delete timers[_id];\n // update timersByScript reverse-index\n const scriptSet = context.timersByScript.get(scriptName);\n if (scriptSet) {\n scriptSet.delete(_id);\n if (!scriptSet.size) {\n context.timersByScript.delete(scriptName);\n }\n }\n }\n break;\n }\n }\n }\n }\n },\n delay,\n context.timerId,\n id,\n state,\n isAck,\n );\n\n // add timer handler\n timers[id].push({\n t: timer,\n id: context.timerId,\n ts: Date.now(),\n delay: delay,\n val:\n isObject(state) && (state as ioBroker.SettableState).val !== undefined\n ? ((state as ioBroker.SettableState).val as ioBroker.StateValue)\n : (state as ioBroker.StateValue),\n ack:\n isObject(state) &&\n (state as ioBroker.SettableState).val !== undefined &&\n (state as ioBroker.SettableState).ack !== undefined\n ? (state as ioBroker.SettableState).ack\n : isAck,\n scriptName: name,\n });\n // Keep reverse-index in sync for O(1) cleanup in stopScript\n if (!context.timersByScript.has(name)) {\n context.timersByScript.set(name, new Set());\n }\n context.timersByScript.get(name)!.add(id);\n\n return context.timerId;\n },\n clearStateDelayed: function (id: string, timerId: number): boolean {\n // Check a type of state\n if (!objects[id] && objects[`${adapter.namespace}.${id}`]) {\n id = `${adapter.namespace}.${id}`;\n }\n\n if (sandbox.verbose) {\n sandbox.log(`clearStateDelayed(id=${id}, timerId=${timerId})`, 'info');\n }\n\n if (timers[id]) {\n // collect scriptNames of entries that will be removed\n const removedScripts = new Set();\n for (let i = timers[id].length - 1; i >= 0; i--) {\n if (timerId === undefined || timers[id][i].id === timerId) {\n const clearedTimerId = timers[id][i].id;\n removedScripts.add(timers[id][i].scriptName);\n clearTimeout(timers[id][i].t);\n if (timerId !== undefined) {\n timers[id].splice(i, 1);\n }\n if (sandbox.verbose) {\n sandbox.log(`clearStateDelayed: clear timer ${clearedTimerId}`, 'info');\n }\n }\n }\n if (timerId === undefined) {\n delete timers[id];\n } else {\n if (!timers[id].length) {\n delete timers[id];\n }\n }\n // IO-7: keep the timersByScript reverse-index in sync. For every script whose\n // timer(s) we just removed, drop `id` from its set – unless that script still has\n // another timer for this state (other scripts' timers may keep timers[id] alive).\n if (removedScripts.size) {\n const remaining = timers[id]; // undefined if the whole entry was deleted\n for (const scriptName of removedScripts) {\n const stateIds = context.timersByScript.get(scriptName);\n if (!stateIds) {\n continue;\n }\n if (remaining?.some(e => e.scriptName === scriptName)) {\n continue;\n }\n stateIds.delete(id);\n if (!stateIds.size) {\n context.timersByScript.delete(scriptName);\n }\n }\n }\n return true;\n }\n return false;\n },\n getStateDelayed: function (\n id: string | number,\n ):\n | null\n | { timerId: number; left: number; delay: number; val: ioBroker.StateValue; ack?: boolean }\n | { timerId: number; left: number; delay: number; val: ioBroker.StateValue; ack?: boolean }[]\n | Record<\n string,\n { timerId: number; left: number; delay: number; val: ioBroker.StateValue; ack?: boolean }[]\n > {\n const now = Date.now();\n if (id) {\n // Check a type of state\n if (!objects[id] && objects[`${adapter.namespace}.${id}`]) {\n id = `${adapter.namespace}.${id}`;\n }\n // If timerId given\n if (typeof id === 'number') {\n for (const _id_ in timers) {\n if (Object.prototype.hasOwnProperty.call(timers, _id_)) {\n for (let ttt = 0; ttt < timers[_id_].length; ttt++) {\n if (timers[_id_][ttt].id === id) {\n return {\n timerId: id,\n left: timers[_id_][ttt].delay - (now - timers[_id_][ttt].ts),\n delay: timers[_id_][ttt].delay,\n val: timers[_id_][ttt].val,\n ack: timers[_id_][ttt].ack,\n };\n }\n }\n }\n }\n return null;\n }\n\n const result: {\n timerId: number;\n left: number;\n delay: number;\n val: ioBroker.StateValue;\n ack?: boolean;\n }[] = [];\n if (Object.prototype.hasOwnProperty.call(timers, id) && timers[id] && timers[id].length) {\n for (let tt = 0; tt < timers[id].length; tt++) {\n result.push({\n timerId: timers[id][tt].id,\n left: timers[id][tt].delay - (now - timers[id][tt].ts),\n delay: timers[id][tt].delay,\n val: timers[id][tt].val,\n ack: timers[id][tt].ack,\n });\n }\n }\n return result;\n }\n const result: Record<\n string,\n { timerId: number; left: number; delay: number; val: ioBroker.StateValue; ack?: boolean }[]\n > = {};\n for (const _id in timers) {\n if (Object.prototype.hasOwnProperty.call(timers, _id) && timers[_id] && timers[_id].length) {\n result[_id] = [];\n for (let t = 0; t < timers[_id].length; t++) {\n result[_id].push({\n timerId: timers[_id][t].id,\n left: timers[_id][t].delay - (now - timers[_id][t].ts),\n delay: timers[_id][t].delay,\n val: timers[_id][t].val,\n ack: timers[_id][t].ack,\n });\n }\n }\n }\n return result;\n },\n getStateAsync: async function (id: string): Promise {\n let state: ioBroker.State | null | undefined;\n if (id.includes('.')) {\n state = await adapter.getForeignStateAsync(id);\n } else {\n state = await adapter.getStateAsync(id);\n }\n return context.convertBackStringifiedValues(id, state);\n },\n setStateAsync: function (\n id: string,\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean,\n ): Promise {\n return new Promise((resolve, reject) =>\n setStateHelper(sandbox, false, false, id, state, isAck, err => (err ? reject(err) : resolve())),\n );\n },\n setStateChangedAsync: function (\n id: string,\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean,\n ): Promise {\n return new Promise((resolve, reject) =>\n setStateHelper(sandbox, false, true, id, state, isAck, err => (err ? reject(err) : resolve())),\n );\n },\n getState: function (\n id: string,\n callback?: (err: Error | null | undefined, state?: ioBroker.State | null) => void,\n ): undefined | void | (ioBroker.State & { notExist?: true }) | null {\n if (typeof id !== 'string') {\n sandbox.log(`getState has been called with id of type \"${typeof id}\" but expects a string`, 'error');\n return undefined;\n }\n\n if (typeof callback === 'function') {\n if (!id.includes('.')) {\n adapter.getState(id, (err, state) =>\n callback(err, context.convertBackStringifiedValues(id, state)),\n );\n } else {\n void adapter.getForeignState(id, (err, state) =>\n callback(err, context.convertBackStringifiedValues(id, state)),\n );\n }\n } else {\n if ((adapter.config as JavaScriptAdapterConfig).subscribe) {\n sandbox.log(\n 'The \"getState\" method cannot be used synchronously, because the adapter setting \"Do not subscribe to all states on start\" is enabled.',\n 'error',\n );\n sandbox.log(\n `Please disable that setting or use \"getState\" with a callback, e.g.: getState('${id}', (err, state) => { ... });`,\n 'error',\n );\n } else {\n if (states[id]) {\n if (sandbox.verbose) {\n sandbox.log(\n `getState(id=${id}, timerId=${JSON.stringify(timers[id])}) => ${JSON.stringify(states[id])}`,\n 'info',\n );\n }\n if (context.interimStateValues[id] !== undefined) {\n return context.convertBackStringifiedValues(id, context.interimStateValues[id]);\n }\n return context.convertBackStringifiedValues(id, states[id]);\n } else if (states[`${adapter.namespace}.${id}`]) {\n if (sandbox.verbose) {\n sandbox.log(\n `getState(id=${id}, timerId=${JSON.stringify(timers[id])}) => ${JSON.stringify(states[`${adapter.namespace}.${id}`])}`,\n 'info',\n );\n }\n if (context.interimStateValues[`${adapter.namespace}.${id}`] !== undefined) {\n return context.convertBackStringifiedValues(\n id,\n context.interimStateValues[`${adapter.namespace}.${id}`],\n );\n }\n return context.convertBackStringifiedValues(id, states[`${adapter.namespace}.${id}`]);\n }\n\n if (sandbox.verbose) {\n sandbox.log(`getState(id=${id}, timerId=${JSON.stringify(timers[id])}) => not found`, 'info');\n }\n\n context.logWithLineInfo(\n `getState \"${id}\" not found (3)${states[id] !== undefined ? ` states[id]=${JSON.stringify(states[id])}` : ''}`,\n ); ///xxx\n return { val: null, notExist: true } as ioBroker.State & { notExist?: true };\n }\n }\n },\n existsState: function (\n id: string,\n callback?: (err: Error | null | undefined, stateExists?: boolean) => void,\n ): void | boolean {\n if (typeof id !== 'string') {\n sandbox.log(`existsState has been called with id of type \"${typeof id}\" but expects a string`, 'error');\n return false;\n }\n\n if (typeof callback === 'function') {\n void adapter.getForeignObject(id, (err, obj) => {\n if (!obj || obj.type !== 'state') {\n callback(err, false);\n return;\n }\n\n if ((adapter.config as JavaScriptAdapterConfig).subscribe) {\n void adapter.getForeignState(id, (err, state) => {\n callback(err, !!state);\n });\n } else {\n callback(err, !!states[id]);\n }\n });\n } else {\n if ((adapter.config as JavaScriptAdapterConfig).subscribe) {\n sandbox.log(\n 'The \"existsState\" method cannot be used synchronously, because the adapter setting \"Do not subscribe to all states on start\" is enabled.',\n 'error',\n );\n sandbox.log(\n `Please disable that setting or use \"existsState\" with a callback, e.g.: existsState('${id}', (err, stateExists) => { ... });`,\n 'error',\n );\n } else {\n return !!states[id];\n }\n }\n },\n existsObject: function (\n id: string,\n callback?: (err: Error | null | undefined, objectExists?: boolean) => void,\n ): void | boolean {\n if (typeof id !== 'string') {\n sandbox.log(\n `existsObject has been called with id of type \"${typeof id}\" but expects a string`,\n 'error',\n );\n return false;\n }\n\n if (typeof callback === 'function') {\n void adapter.getForeignObject(id, (err, obj) => callback(err, !!obj));\n } else {\n return !!objects[id];\n }\n },\n getIdByName: function (name: string, alwaysArray?: boolean): string | string[] | null {\n if (sandbox.verbose) {\n sandbox.log(\n `getIdByName(name=${name}, alwaysArray=${alwaysArray}) => ${JSON.stringify(context.names[name])}`,\n 'info',\n );\n }\n if (Object.prototype.hasOwnProperty.call(context.names, name)) {\n if (alwaysArray) {\n return !Array.isArray(context.names[name]) ? [context.names[name]] : context.names[name];\n }\n return context.names[name];\n }\n if (alwaysArray) {\n return [];\n }\n return null;\n },\n getObject: function (\n id: string,\n enumName: null | string | ((err: Error | null | undefined, obj?: ioBroker.Object | null) => void),\n cb?: (err: Error | null | undefined, obj?: ioBroker.Object | null) => void,\n ): void | ioBroker.Object | null {\n if (typeof id !== 'string') {\n sandbox.log(`getObject has been called with id of type \"${typeof id}\" but expects a string`, 'error');\n return null;\n }\n\n if (typeof enumName === 'function') {\n cb = enumName;\n enumName = null;\n }\n // with callback\n if (typeof cb === 'function') {\n void adapter.getForeignObject(id, (err, obj) => {\n if (obj) {\n objects[id] = obj;\n } else if (objects[id]) {\n delete objects[id];\n }\n let result: ioBroker.Object | null | undefined;\n try {\n result = objects[id] ? structuredClone(objects[id]) : undefined;\n } catch (err: unknown) {\n void adapter.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'getObject',\n });\n sandbox.log(`Object \"${id}\" can't be copied: ${JSON.stringify(err)}`, 'error');\n return cb(null, null);\n }\n if (sandbox.verbose) {\n sandbox.log(`getObject(id=${id}, enumName=${enumName}) => ${JSON.stringify(result)}`, 'info');\n }\n cb(err, result);\n });\n } else {\n if (!objects[id]) {\n if (sandbox.verbose) {\n sandbox.log(`getObject(id=${id}, enumName=${enumName}) => does not exist`, 'info');\n }\n sandbox.log(`Object \"${id}\" does not exist`, 'warn');\n return null;\n }\n if (enumName) {\n const e = eventObj.getObjectEnumsSync(context, id);\n const obj = structuredClone(objects[id]) as ioBroker.Object & {\n enumIds: string[];\n enumNames: string[];\n };\n obj.enumIds = structuredClone(e.enumIds);\n obj.enumNames = structuredClone(e.enumNames);\n if (typeof enumName === 'string') {\n const r = new RegExp(`^enum\\\\.${enumName}\\\\.`);\n for (let i = obj.enumIds.length - 1; i >= 0; i--) {\n if (!r.test(obj.enumIds[i])) {\n obj.enumIds.splice(i, 1);\n obj.enumNames.splice(i, 1);\n }\n }\n }\n if (sandbox.verbose) {\n sandbox.log(`getObject(id=${id}, enumName=${enumName}) => ${JSON.stringify(obj)}`, 'info');\n }\n\n return obj;\n }\n let result: ioBroker.Object | null | undefined;\n try {\n result = structuredClone(objects[id]);\n } catch (err: unknown) {\n void adapter.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'getObject',\n });\n sandbox.log(`Object \"${id}\" can't be copied: ${JSON.stringify(err)}`, 'error');\n return null;\n }\n if (sandbox.verbose) {\n sandbox.log(`getObject(id=${id}, enumName=${enumName}) => ${JSON.stringify(result)}`, 'info');\n }\n return result;\n }\n },\n // This function will be overloaded later if the modification of objects is allowed\n setObject: function (\n _id: string,\n _obj: ioBroker.Object,\n callback?: (err?: Error | null, res?: { id: string }) => void,\n ): void {\n sandbox.log('Function \"setObject\" is not allowed. Use adapter settings to allow it.', 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(\n sandbox,\n new Error('Function \"setObject\" is not allowed. Use adapter settings to allow it.'),\n );\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n },\n // This function will be overloaded later if the modification of objects is allowed\n extendObject: function (\n _id: string,\n _obj: Partial,\n callback?: (err?: Error | null, res?: { id: string }) => void,\n ): void {\n sandbox.log('Function \"extendObject\" is not allowed. Use adapter settings to allow it.', 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(\n sandbox,\n new Error('Function \"extendObject\" is not allowed. Use adapter settings to allow it.'),\n );\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n },\n // This function will be overloaded later if the modification of objects is allowed\n deleteObject: function (\n _id: string,\n _isRecursive?: boolean | ioBroker.ErrorCallback,\n callback?: ioBroker.ErrorCallback,\n ): void {\n if (typeof _isRecursive === 'function') {\n callback = _isRecursive;\n }\n sandbox.log('Function \"deleteObject\" is not allowed. Use adapter settings to allow it.', 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(\n sandbox,\n new Error('Function \"deleteObject\" is not allowed. Use adapter settings to allow it.'),\n );\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n },\n getEnums: function (enumName?: string): { id: string; members: string[]; name: ioBroker.StringOrTranslated }[] {\n const result: { id: string; members: string[]; name: ioBroker.StringOrTranslated }[] = [];\n const r = enumName ? new RegExp(`^enum\\\\.${enumName}\\\\.`) : false;\n for (const enumId of enums) {\n if (!r || r.test(enumId)) {\n const common: ioBroker.EnumCommon =\n (objects[enumId] as ioBroker.EnumObject).common || ({} as ioBroker.EnumCommon);\n result.push({\n id: enumId,\n members: common.members || [],\n name: common.name || '',\n });\n }\n }\n if (sandbox.verbose) {\n sandbox.log(`getEnums(enumName=${enumName}) => ${JSON.stringify(result)}`, 'info');\n }\n return structuredClone(result);\n },\n createAlias: function (\n name: string,\n alias: string | CommonAlias,\n forceCreation: boolean | Partial | ((err: Error | null) => void) | undefined,\n common?: Partial | Record | ((err: Error | null) => void),\n native?: Record | ((err: Error | null) => void),\n callback?: (err: Error | null) => void,\n ) {\n if (typeof native === 'function') {\n callback = native as (err: Error | null) => void;\n native = {};\n }\n if (typeof common === 'function') {\n callback = common as (err: Error | null) => void;\n common = undefined;\n }\n if (typeof forceCreation === 'function') {\n callback = forceCreation;\n forceCreation = undefined;\n }\n if (isObject(forceCreation)) {\n native = common;\n common = forceCreation as Partial;\n forceCreation = undefined;\n }\n\n if (typeof name !== 'string') {\n const err = `Wrong type of name \"${typeof name}\". Expected \"string\".`;\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n\n if (!name) {\n const err = 'Empty ID is not allowed.';\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n\n if (!name.startsWith('alias.0.')) {\n name = `alias.0.${name}`;\n }\n\n const _common: Partial = (common as Partial) || {};\n if (isObject(_common.alias)) {\n // alias already in common, use this\n } else if (\n isObject(alias) &&\n (typeof (alias as CommonAlias).id === 'string' || isObject((alias as CommonAlias).id))\n ) {\n _common.alias = alias as CommonAlias;\n } else if (typeof alias === 'string') {\n _common.alias = { id: alias };\n } else {\n const err = 'Source ID needs to be provided as string or object with id property.';\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n\n let aliasSourceId = '';\n if (_common.alias) {\n aliasSourceId = isObject(_common.alias.id)\n ? (_common.alias.id as { read: string; write: string }).read\n : (_common.alias.id as string);\n if (!objects[aliasSourceId] && objects[`${adapter.namespace}.${aliasSourceId}`]) {\n aliasSourceId = `${adapter.namespace}.${aliasSourceId}`;\n if (isObject(_common.alias.id)) {\n (_common.alias.id as { read: string; write: string }).read = aliasSourceId;\n } else {\n _common.alias.id = aliasSourceId;\n }\n }\n if (\n isObject(_common.alias.id) &&\n (_common.alias.id as { read: string; write: string }).write &&\n !objects[(_common.alias.id as { read: string; write: string }).write] &&\n objects[`${adapter.namespace}.${(_common.alias.id as { read: string; write: string }).write}`]\n ) {\n (_common.alias.id as { read: string; write: string }).write =\n `${adapter.namespace}.${(_common.alias.id as { read: string; write: string }).write}`;\n }\n }\n const obj = objects[aliasSourceId];\n if (!obj) {\n const err = `Alias source object \"${aliasSourceId}\" does not exist.`;\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n if (obj.type !== 'state') {\n const err = `Alias source object \"${aliasSourceId}\" must be a state object.`;\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n if (_common.name === undefined) {\n _common.name = obj.common.name || name;\n }\n if (_common.type === undefined && obj.common.type !== undefined) {\n _common.type = obj.common.type;\n }\n if (_common.role === undefined && obj.common.role !== undefined) {\n _common.role = obj.common.role;\n }\n if (_common.min === undefined && obj.common.min !== undefined) {\n _common.min = obj.common.min;\n }\n if (_common.max === undefined && obj.common.max !== undefined) {\n _common.max = obj.common.max;\n }\n if (_common.step === undefined && obj.common.step !== undefined) {\n _common.step = obj.common.step;\n }\n if (_common.unit === undefined && obj.common.unit !== undefined) {\n _common.unit = obj.common.unit;\n }\n if (_common.desc === undefined && obj.common.desc !== undefined) {\n _common.desc = obj.common.desc;\n }\n\n return sandbox.createState(\n name,\n undefined,\n forceCreation as boolean,\n _common,\n native,\n callback as (err?: Error | null) => void,\n );\n },\n createState: async function (\n name: string,\n initValue: undefined | ioBroker.StateValue | ioBroker.State,\n forceCreation:\n | boolean\n | undefined\n | Record\n | Partial\n | ((err: Error | null) => void),\n common?: Partial | ((err: Error | null) => void),\n native?: Record | ((err: Error | null) => void),\n callback?: (error: Error | null | undefined, id?: string) => void,\n ) {\n if (typeof native === 'function') {\n callback = native as (err?: Error | null) => void;\n native = {};\n }\n if (typeof common === 'function') {\n callback = common as (err?: Error | null) => void;\n common = undefined;\n }\n if (typeof initValue === 'function') {\n callback = initValue;\n initValue = undefined;\n }\n if (typeof forceCreation === 'function') {\n callback = forceCreation as (err?: Error | null) => void;\n forceCreation = undefined;\n }\n if (isObject(initValue)) {\n common = initValue as Partial;\n native = forceCreation as Record;\n forceCreation = undefined;\n initValue = undefined;\n }\n if (isObject(forceCreation)) {\n native = common as Record;\n common = forceCreation as Partial;\n forceCreation = undefined;\n }\n\n if (typeof name !== 'string') {\n const err = `Wrong type of name \"${typeof name}\". Expected \"string\".`;\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n\n if (!name) {\n const err = 'Empty ID is not allowed.';\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n\n const isAlias = name.startsWith('alias.0.');\n\n const _common: ioBroker.StateCommon = (common || {}) as ioBroker.StateCommon;\n _common.name = _common.name || name;\n _common.role = _common.role || 'state';\n _common.type = _common.type || 'mixed';\n if (!isAlias && initValue === undefined) {\n initValue = _common.def;\n }\n\n native = native || {};\n\n // Check min, max and def values for number\n if (_common.type !== undefined && _common.type === 'number') {\n let min = 0;\n let max = 0;\n let def = 0;\n let err: string | undefined;\n if (_common.min !== undefined) {\n min = _common.min;\n if (typeof min !== 'number') {\n min = parseFloat(min);\n if (isNaN(min)) {\n err = `Wrong type of ${name}.common.min`;\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n _common.min = min;\n }\n }\n if (_common.max !== undefined) {\n max = _common.max;\n if (typeof max !== 'number') {\n max = parseFloat(max);\n if (isNaN(max)) {\n err = `Wrong type of ${name}.common.max`;\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n _common.max = max;\n }\n }\n\n if (_common.def !== undefined) {\n if (isAlias) {\n delete _common.def;\n } else {\n def = _common.def;\n if (typeof def !== 'number') {\n def = parseFloat(def);\n if (isNaN(def)) {\n err = `Wrong type of ${name}.common.def`;\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n _common.def = def;\n }\n }\n }\n\n if (_common.min !== undefined && _common.max !== undefined && min > max) {\n _common.max = min;\n _common.min = max;\n }\n if (_common.def !== undefined && _common.min !== undefined && def < min) {\n _common.def = min;\n }\n if (_common.def !== undefined && _common.max !== undefined && def > max) {\n _common.def = max;\n }\n }\n\n if (sandbox.verbose) {\n sandbox.log(\n `createState(name=${name}, initValue=${JSON.stringify(initValue)}, forceCreation=${JSON.stringify(forceCreation)}, common=${JSON.stringify(common)}, native=${JSON.stringify(native)}, isAlias=${isAlias})`,\n 'debug',\n );\n }\n\n let id = `${adapter.namespace}.${name}`;\n if (name.match(/^javascript\\.\\d+\\./) || name.startsWith('0_userdata.0.') || isAlias) {\n id = name;\n }\n if (id.match(/^javascript\\.\\d+\\.scriptEnabled/)) {\n sandbox.log(\n `Own states (${id}) should not be created in javascript.X.scriptEnabled.*! Please move the states to 0_userdata.0.*`,\n 'info',\n );\n } else if (id.match(/^javascript\\.\\d+\\.scriptProblem/)) {\n sandbox.log(\n `Own states (${id}) should not be created in javascript.X.scriptProblem.*! Please move the states to 0_userdata.0.*`,\n 'info',\n );\n }\n\n // User can create aliases by two ways:\n // - id is starting with \"alias.0.\" and common.alias.id is set, so the state defined in common.alias.id will be created automatically if not exists\n // - id is not starting with \"alias.0.\", but common.alias is set, so the state defined in common.alias will be created automatically if not exists\n if (!isAlias && _common.alias) {\n // check and create if not exists the alias\n let alias: CommonAlias;\n if (typeof _common.alias === 'string') {\n alias = {\n id: _common.alias,\n };\n } else if (typeof _common.alias === 'boolean') {\n const parts = id.split('.');\n parts[0] = 'alias';\n parts[1] = '0';\n\n alias = {\n id: parts.join('.'),\n };\n } else {\n alias = _common.alias;\n }\n delete _common.alias;\n\n if (!(alias.id as string).startsWith('alias.0.')) {\n alias.id = `alias.0.${alias.id as string}`;\n }\n\n let aObj: ioBroker.StateObject | null | undefined;\n try {\n aObj = (await adapter.getForeignObjectAsync(alias.id as string)) as\n ioBroker.StateObject | null | undefined;\n } catch {\n // ignore\n }\n if (!aObj) {\n try {\n const _obj: ioBroker.StateObject = {\n _id: alias.id as string,\n type: 'state',\n common: {\n name: `Alias to ${id}`,\n role: 'state',\n type: _common.type,\n read: _common.read,\n write: _common.write,\n unit: _common.unit,\n alias: {\n id,\n read: alias.read,\n write: alias.write,\n },\n },\n native: {},\n };\n\n await adapter.setForeignObjectAsync(alias.id as string, _obj);\n } catch (err: unknown) {\n sandbox.log(`Cannot create alias \"${alias.id as string}\": ${err as Error}`, 'error');\n }\n }\n } else if (isAlias && _common.alias) {\n if (typeof _common.alias === 'string') {\n _common.alias = {\n id: _common.alias,\n };\n }\n const readId = typeof _common.alias.id === 'string' ? _common.alias.id : _common.alias.id.read;\n let writeId: string | undefined =\n typeof _common.alias.id === 'string' ? _common.alias.id : _common.alias.id.write;\n if (writeId === readId) {\n writeId = undefined;\n }\n // try to create the linked states\n let aObj: ioBroker.StateObject | null | undefined;\n try {\n aObj = (await adapter.getForeignObjectAsync(readId)) as ioBroker.StateObject | null | undefined;\n } catch {\n // ignore\n }\n if (!aObj) {\n try {\n await adapter.setForeignObjectAsync(readId, {\n type: 'state',\n common: {\n name: `State for ${id}`,\n role: 'state',\n type: _common.type,\n read: _common.read,\n write: _common.write,\n unit: _common.unit,\n },\n native: {},\n });\n } catch (err: unknown) {\n sandbox.log(`Cannot create alias \"${readId}\": ${err as Error}`, 'error');\n }\n }\n if (writeId && _common.write !== false) {\n try {\n aObj = (await adapter.getForeignObjectAsync(writeId)) as\n ioBroker.StateObject | null | undefined;\n } catch {\n // ignore\n }\n if (!aObj) {\n try {\n await adapter.setForeignObjectAsync(writeId, {\n type: 'state',\n common: {\n name: `Write state for ${id}`,\n role: 'state',\n type: _common.type,\n read: _common.read,\n write: _common.write,\n unit: _common.unit,\n },\n native: {},\n });\n } catch (err: unknown) {\n sandbox.log(`Cannot create alias \"${writeId}\": ${err as Error}`, 'error');\n }\n }\n }\n }\n\n let obj: ioBroker.Object | null | undefined;\n try {\n obj = await adapter.getForeignObjectAsync(id);\n } catch {\n // ignore\n }\n\n if (\n obj?._id &&\n validIdForAutomaticFolderCreation(obj._id) &&\n obj.type === 'folder' &&\n obj.native &&\n obj.native.autocreated === 'by automatic ensure logic'\n ) {\n // ignore a default created object because we now have a better defined one\n obj = null;\n }\n\n if (!obj || forceCreation) {\n // create new one\n const newObj: ioBroker.StateObject = {\n _id: id,\n common: _common,\n native,\n type: 'state',\n };\n try {\n await adapter.setForeignObjectAsync(id, newObj);\n } catch (err: unknown) {\n sandbox.log(`Cannot set object \"${id}\": ${err as Error}`, 'warn');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, err as Error);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n\n // Update meta objects\n context.updateObjectContext(id, newObj);\n\n if (!isAlias && initValue !== undefined) {\n if (isObject(initValue) && (initValue as ioBroker.State).ack !== undefined) {\n setStateHelper(sandbox, true, false, id, initValue, callback);\n } else {\n setStateHelper(sandbox, true, false, id, initValue, true, callback);\n }\n } else if (!isAlias && !forceCreation) {\n setStateHelper(sandbox, true, false, id, null, callback);\n } else if (isAlias) {\n try {\n const state = await adapter.getForeignStateAsync(id);\n if (state) {\n states[id] = state;\n }\n } catch {\n // ignore\n }\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, null, id);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n } else if (typeof callback === 'function') {\n try {\n callback.call(sandbox, null, id);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n await ensureObjectStructure(id);\n } else {\n // state yet exists\n if (\n !(adapter.config as JavaScriptAdapterConfig).subscribe &&\n !states[id] &&\n states[`${adapter.namespace}.${id}`] === undefined\n ) {\n states[id] = {\n val: null,\n ack: true,\n lc: Date.now(),\n ts: Date.now(),\n q: 0,\n from: `system.adapter.${adapter.namespace}`,\n };\n }\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, null, id);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n\n await ensureObjectStructure(id);\n }\n },\n deleteState: function (id: string, callback?: (err: Error | null | undefined, found?: boolean) => void): void {\n // todo: check rights\n // todo: also remove from \"names\"\n\n if (sandbox.verbose) {\n sandbox.log(`deleteState(id=${id})`, 'debug');\n }\n\n let found = false;\n if ((id.startsWith('0_userdata.0.') || id.startsWith(adapter.namespace)) && objects[id]) {\n found = true;\n delete objects[id];\n if (states[id]) {\n delete states[id];\n }\n\n adapter.delForeignObject(id, function (err) {\n err && sandbox.log(`Object for state \"${id}\" does not exist: ${err}`, 'warn');\n\n adapter.delForeignState(id, function (err) {\n err && sandbox.log(`Cannot delete state \"${id}\": ${err}`, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, err, found);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n });\n });\n } else if (objects[`${adapter.namespace}.${id}`]) {\n delete objects[`${adapter.namespace}.${id}`];\n found = true;\n if (states[`${adapter.namespace}.${id}`]) {\n delete states[`${adapter.namespace}.${id}`];\n }\n\n adapter.delObject(id, function (err) {\n err && sandbox.log(`Object for state \"${id}\" does not exist: ${err}`, 'warn');\n\n adapter.delState(id, function (err) {\n err && sandbox.log(`Cannot delete state \"${id}\": ${err}`, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, err, found);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n });\n });\n } else {\n const err = 'Not found';\n sandbox.log(`Cannot delete state \"${id}\": ${err}`, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err), found);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n }\n },\n sendTo: function (\n _adapter: string,\n cmd: string,\n msg?: any,\n options?: Record | ((result: any, options: Record, _adapter: string) => void),\n callback?: (result: any, options: Record, _adapter: string) => void,\n ): void {\n const defaultTimeout = 20000;\n\n if (typeof options === 'function') {\n callback = options as (result: any, options: Record, _adapter: string) => void;\n options = { timeout: defaultTimeout };\n }\n\n let timeout: NodeJS.Timeout | null = null;\n if (typeof callback === 'function') {\n const timeoutDuration = parseInt(options?.timeout, 10) || defaultTimeout;\n\n timeout = setTimeout(() => {\n timeout = null;\n\n if (sandbox.verbose) {\n sandbox.log(`sendTo => timeout: ${timeoutDuration}`, 'debug');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, { error: 'timeout' }, options as Record, _adapter);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n callback = undefined;\n }\n }, timeoutDuration);\n }\n\n let cbFunc: undefined | ((result: any) => void);\n if (timeout) {\n cbFunc = function (result: any): void {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n\n if (sandbox.verbose && result) {\n sandbox.log(`sendTo => ${JSON.stringify(result)}`, 'debug');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, result, options as Record, _adapter);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n callback = undefined;\n }\n };\n }\n\n // If specific instance\n if (_adapter.match(/\\.[0-9]+$/)) {\n if (sandbox.verbose) {\n sandbox.log(\n `sendTo(instance=${_adapter}, cmd=${cmd}, msg=${JSON.stringify(msg)}, hasCallback=${typeof callback === 'function'})`,\n 'info',\n );\n }\n\n adapter.sendTo(_adapter, cmd, msg, cbFunc, options);\n } else {\n // IO-9: Cache sendTo broadcast instance list – avoid repeated getObjectView DB calls\n const cached = context.sendToInstanceCache.get(_adapter);\n if (cached) {\n cached.forEach(instance => {\n if (sandbox.verbose) {\n sandbox.log(\n `sendTo(instance=${instance}, cmd=${cmd}, msg=${JSON.stringify(msg)}, hasCallback=${typeof callback === 'function'}) [cached]`,\n 'info',\n );\n }\n adapter.sendTo(instance, cmd, msg, cbFunc, options);\n });\n } else {\n // Send it to all instances\n context.adapter.getObjectView(\n 'system',\n 'instance',\n { startkey: `system.adapter.${_adapter}.`, endkey: `system.adapter.${_adapter}.\\u9999` },\n options,\n (err, res) => {\n if (err || !res) {\n sandbox.log(`sendTo failed: ${err?.message}`, 'error');\n return;\n }\n\n const instances = res.rows.map(item => item.id.substring('system.adapter.'.length));\n // Store in cache for subsequent calls (invalidated on system.adapter.* object change).\n // LRU eviction: keep the map bounded to avoid unbounded memory growth.\n if (context.sendToInstanceCache.size >= 200) {\n const firstKey = context.sendToInstanceCache.keys().next().value;\n if (firstKey !== undefined) {\n context.sendToInstanceCache.delete(firstKey);\n }\n }\n context.sendToInstanceCache.set(_adapter, instances);\n\n instances.forEach(instance => {\n if (sandbox.verbose) {\n sandbox.log(\n `sendTo(instance=${instance}, cmd=${cmd}, msg=${JSON.stringify(msg)}, hasCallback=${typeof callback === 'function'})`,\n 'info',\n );\n }\n adapter.sendTo(instance, cmd, msg, cbFunc, options);\n });\n },\n );\n }\n }\n },\n sendto: function (\n _adapter: string,\n cmd: string,\n msg: any,\n callback?: (result: any, options: Record, _adapter: string) => void,\n ): void {\n return sandbox.sendTo(_adapter, cmd, msg, callback);\n },\n sendToAsync: function (_adapter: string, cmd: string, msg?: any, options?: Record): Promise {\n return new Promise((resolve, reject) => {\n sandbox.sendTo(_adapter, cmd, msg, options, res => {\n if (!res || res.error) {\n reject(res ? new Error(res.error) : new Error('Unknown error'));\n } else {\n resolve(res);\n }\n });\n });\n },\n sendToHost: function (host: string, cmd: string, msg?: any, callback?: (result: any) => void): void {\n if (!(adapter.config as JavaScriptAdapterConfig).enableSendToHost) {\n const error =\n 'sendToHost is not available. Please enable \"Enable SendToHost\" option in instance settings';\n sandbox.log(error, 'error');\n\n if (typeof callback === 'function') {\n // leave it as a normal function and not as a lambda, to hide the \"this\" object\n setImmediate(function () {\n callback(error);\n });\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log(`sendToHost(adapter=${host}, cmd=${cmd}, msg=${JSON.stringify(msg)})`, 'info');\n }\n adapter.sendToHost(host, cmd, msg, callback);\n }\n },\n sendToHostAsync: function (host: string, cmd: string, msg?: any): Promise {\n return new Promise((resolve, reject) => {\n sandbox.sendToHost(host, cmd, msg, res => {\n if (!res || res.error) {\n reject(res ? new Error(res.error) : new Error('Unknown error'));\n } else {\n resolve(res);\n }\n });\n });\n },\n registerNotification: function (msg: string, isAlert?: boolean): void {\n const category = !isAlert ? 'scriptMessage' : 'scriptAlert';\n\n if (sandbox.verbose) {\n sandbox.log(`registerNotification(msg=${msg}, category=${category})`, 'info');\n }\n\n void adapter.registerNotification('javascript', category, msg);\n },\n setInterval: function (callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timeout | null {\n if (typeof callback === 'function') {\n const int: NodeJS.Timeout = setInterval(() => {\n try {\n callback.call(sandbox, ...args);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }, ms);\n // IO-10: Set.add() – O(1) instead of Array.push()\n script.intervals.add(int);\n\n if (sandbox.verbose) {\n sandbox.log(`setInterval(ms=${ms})`, 'info');\n }\n return int;\n }\n sandbox.log(`Invalid callback for setInterval! - ${typeof callback}`, 'error');\n return null;\n },\n clearInterval: function (id: NodeJS.Timeout): void {\n // IO-10: Set.has/delete – O(1) instead of Array.indexOf+splice O(n)\n if (script.intervals.has(id)) {\n if (sandbox.verbose) {\n sandbox.log('clearInterval() => cleared', 'info');\n }\n clearInterval(id);\n script.intervals.delete(id);\n } else {\n if (sandbox.verbose) {\n sandbox.log('clearInterval() => not found', 'warn');\n }\n }\n },\n setTimeout: function (callback: (args?: any[]) => void, ms: number, ...args: any[]): NodeJS.Timeout | null {\n if (typeof callback === 'function') {\n const to = setTimeout(() => {\n // IO-10: Set.delete – O(1) instead of Array.indexOf+splice O(n)\n script.timeouts.delete(to);\n\n try {\n callback.call(sandbox, ...args);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }, ms);\n if (sandbox.verbose) {\n sandbox.log(`setTimeout(ms=${ms})`, 'info');\n }\n // IO-10: Set.add – O(1) instead of Array.push\n script.timeouts.add(to);\n return to;\n }\n sandbox.log(`Invalid callback for setTimeout! - ${typeof callback}`, 'error');\n return null;\n },\n clearTimeout: function (id: NodeJS.Timeout): void {\n // IO-10: Set.has/delete – O(1) instead of Array.indexOf+splice O(n)\n if (script.timeouts.has(id)) {\n if (sandbox.verbose) {\n sandbox.log('clearTimeout() => cleared', 'info');\n }\n clearTimeout(id);\n script.timeouts.delete(id);\n } else {\n if (sandbox.verbose) {\n sandbox.log('clearTimeout() => not found', 'warn');\n }\n }\n },\n setImmediate: function (callback: (..._args: any[]) => void, ...args: any[]): void {\n if (typeof callback === 'function') {\n setImmediate(() => {\n try {\n callback.apply(sandbox, args);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n });\n if (sandbox.verbose) {\n sandbox.log('setImmediate()', 'info');\n }\n } else {\n sandbox.log(`Invalid callback for setImmediate! - ${typeof callback}`, 'error');\n }\n },\n cb: function (callback: (..._args: any[]) => void): (...args: any[]) => void {\n return function (args: any[]) {\n if (context.scripts[name]?._id === sandbox._id) {\n if (typeof callback === 'function') {\n try {\n callback.apply(sandbox, args);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n } else {\n sandbox.log(`Callback for old version of script: ${name}`, 'warn');\n }\n };\n },\n compareTime: function (\n startTime: iobJS.AstroDate | string | Date | number,\n endTime: iobJS.AstroDate | string | Date | number | null,\n operation: 'between' | 'not between' | '<' | '<=' | '>' | '>=' | '==' | '<>' | '!=',\n time?: iobJS.AstroDate | string | Date | number,\n ): boolean {\n if (startTime && typeof startTime === 'string') {\n const pos = consts.astroListLow.indexOf(startTime.toLowerCase());\n if (pos !== -1) {\n const aTime = sandbox.getAstroDate(consts.astroList[pos]);\n if (aTime) {\n startTime = aTime.toLocaleTimeString([], {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n });\n } else {\n startTime = 0;\n }\n }\n } else if (startTime && isObject(startTime) && (startTime as iobJS.AstroDate).astro) {\n const aTime = sandbox.getAstroDate(\n (startTime as iobJS.AstroDate).astro,\n (startTime as iobJS.AstroDate).date || new Date(),\n (startTime as iobJS.AstroDate).offset || 0,\n );\n if (aTime) {\n startTime = aTime.toLocaleTimeString([], {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n });\n } else {\n startTime = 0;\n }\n }\n\n if (endTime && typeof endTime === 'string') {\n const pos = consts.astroListLow.indexOf(endTime.toLowerCase());\n if (pos !== -1) {\n const aTime = sandbox.getAstroDate(consts.astroList[pos]);\n endTime =\n aTime?.toLocaleTimeString([], {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n }) || 0;\n }\n } else if (endTime && isObject(endTime) && (endTime as iobJS.AstroDate).astro) {\n const aTime = sandbox.getAstroDate(\n (endTime as iobJS.AstroDate).astro,\n (endTime as iobJS.AstroDate).date || new Date(),\n (endTime as iobJS.AstroDate).offset || 0,\n );\n endTime =\n aTime?.toLocaleTimeString([], {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n }) || 0;\n }\n\n // --- Convert \"time\" to number\n let nTime: number | undefined;\n // maybe it is astro date like 'sunrise' or 'sunset'\n if (time && typeof time === 'string') {\n const pos = consts.astroListLow.indexOf(time.toLowerCase());\n if (pos !== -1) {\n nTime = sandbox.getAstroDate(consts.astroList[pos])?.getTime() || 0;\n }\n } else if (time && isObject(time) && (time as iobJS.AstroDate).astro) {\n nTime =\n sandbox\n .getAstroDate(\n (time as iobJS.AstroDate).astro,\n (time as iobJS.AstroDate).date || new Date(),\n (time as iobJS.AstroDate).offset || 0,\n )\n ?.getTime() || 0;\n }\n\n let daily = true;\n if (time) {\n daily = false;\n }\n // if not astro date\n if (!nTime) {\n if (time && !isObject(time)) {\n if (typeof time === 'string' && !time.includes(' ') && !time.includes('T')) {\n const parts = time.split(':');\n const oTime = new Date();\n oTime.setHours(parseInt(parts[0], 10));\n oTime.setMinutes(parseInt(parts[1], 10));\n oTime.setMilliseconds(0);\n\n if (parts.length === 3) {\n oTime.setSeconds(parseInt(parts[2], 10));\n } else {\n oTime.setSeconds(0);\n }\n nTime = oTime.getTime();\n } else {\n nTime = new Date(time as string | number).getTime();\n }\n } else if (!time) {\n const oTime = new Date();\n oTime.setMilliseconds(0);\n nTime = oTime.getTime();\n } else {\n // If Date\n nTime = (time as Date).getTime();\n }\n }\n // --- End of conversion \"time\" to number\n if (typeof startTime === 'string') {\n if (!startTime.includes(' ') && !startTime.includes('T')) {\n const parts = startTime.split(':');\n startTime = new Date();\n startTime.setHours(parseInt(parts[0], 10));\n startTime.setMinutes(parseInt(parts[1], 10));\n startTime.setMilliseconds(0);\n\n if (parts.length === 3) {\n startTime.setSeconds(parseInt(parts[2], 10));\n } else {\n startTime.setSeconds(0);\n }\n } else {\n daily = false;\n startTime = new Date(startTime);\n }\n } else {\n daily = false;\n startTime = new Date(startTime as number | Date);\n }\n const nStartTime = startTime.getTime();\n\n let nEndTime: number | null;\n if (endTime && typeof endTime === 'string') {\n if (!endTime.includes(' ') && !endTime.includes('T')) {\n const parts = endTime.split(':');\n endTime = new Date();\n endTime.setHours(parseInt(parts[0], 10));\n endTime.setMinutes(parseInt(parts[1], 10));\n endTime.setMilliseconds(0);\n\n if (parts.length === 3) {\n endTime.setSeconds(parseInt(parts[2], 10));\n } else {\n endTime.setSeconds(0);\n }\n } else {\n daily = false;\n endTime = new Date(endTime);\n }\n } else if (endTime) {\n daily = false;\n endTime = new Date(endTime as number | Date);\n } else {\n endTime = null;\n }\n\n if (endTime) {\n nEndTime = endTime.getTime();\n } else {\n nEndTime = null;\n }\n\n if (operation === 'between') {\n if (nEndTime) {\n if (nStartTime > nEndTime && daily) {\n return !(nTime >= nEndTime && nTime < nStartTime);\n }\n return nTime >= nStartTime && nTime < nEndTime;\n }\n sandbox.log(`missing or unrecognized endTime expression: ${JSON.stringify(endTime)}`, 'warn');\n return false;\n }\n\n if (operation === 'not between') {\n if (nEndTime) {\n if (nStartTime > nEndTime && daily) {\n return nTime >= nEndTime && nTime < nStartTime;\n }\n return !(nTime >= nStartTime && nTime < nEndTime);\n }\n sandbox.log(`missing or unrecognized endTime expression: ${JSON.stringify(endTime)}`, 'warn');\n return false;\n }\n\n if (operation === '>') {\n return nTime > nStartTime;\n }\n if (operation === '>=') {\n return nTime >= nStartTime;\n }\n if (operation === '<') {\n return nTime < nStartTime;\n }\n if (operation === '<=') {\n return nTime <= nStartTime;\n }\n if (operation === '==') {\n return nTime === nStartTime;\n }\n if (operation === '<>' || operation === '!=') {\n return nTime !== nStartTime;\n }\n sandbox.log(`Invalid operator: ${operation as string}`, 'warn');\n return false;\n },\n onStop: function (cb: () => void, timeout?: number): void {\n if (sandbox.verbose) {\n sandbox.log(`onStop(timeout=${timeout})`, 'info');\n }\n\n script.onStopCb = cb;\n script.onStopTimeout = timeout || 1000;\n },\n formatValue: function (value: number | string, decimals: number | string, format?: string): string {\n if (typeof decimals === 'string') {\n format = decimals;\n decimals = 0;\n }\n if (!format) {\n if (adapter.isFloatComma !== undefined) {\n format = adapter.isFloatComma ? '.,' : ',.';\n } else if (objects['system.config'] && objects['system.config'].common) {\n format = objects['system.config'].common.isFloatComma ? '.,' : ',.';\n }\n }\n return adapter.formatValue(value, decimals, format);\n },\n formatDate: function (\n date: Date | string | number | iobJS.AstroDate,\n format?: string,\n language?: ioBroker.Languages,\n ): string {\n if (!format) {\n if (adapter.dateFormat) {\n format = adapter.dateFormat;\n } else {\n format =\n objects['system.config'] && objects['system.config'].common\n ? objects['system.config'].common.dateFormat || 'DD.MM.YYYY'\n : 'DD.MM.YYYY';\n }\n format = format || 'DD.MM.YYYY';\n }\n // maybe it is astro date like 'sunrise' or 'sunset'\n if (date && typeof date === 'string') {\n const pos = consts.astroListLow.indexOf(date.toLowerCase());\n if (pos !== -1) {\n date = sandbox.getAstroDate(consts.astroList[pos])?.getTime() || 0;\n }\n } else if (date && isObject(date) && (date as iobJS.AstroDate).astro) {\n date =\n sandbox\n .getAstroDate(\n (date as iobJS.AstroDate).astro,\n (date as iobJS.AstroDate).date || new Date(),\n (date as iobJS.AstroDate).offset || 0,\n )\n ?.getTime() || 0;\n }\n\n if (format.match(/[WНOО]+/)) {\n let text: string = adapter.formatDate(date as Date | string | number, format);\n if (!language || !consts.dayOfWeeksFull[language]) {\n language =\n adapter.language ||\n (objects['system.config'] &&\n objects['system.config'].common &&\n objects['system.config'].common.language) ||\n 'en';\n if (!consts.dayOfWeeksFull[language as ioBroker.Languages]) {\n language = 'en';\n }\n }\n if (typeof date === 'number' || typeof date === 'string') {\n date = new Date(date);\n } else if (typeof (date as Date).getMonth !== 'function') {\n sandbox.log(`Invalid date object provided: ${JSON.stringify(date)}`, 'error');\n return 'Invalid date';\n }\n const d: number = (date as Date).getDay();\n text = text.replace('НН', consts.dayOfWeeksFull[language as ioBroker.Languages][d]);\n let initialText = text;\n text = text.replace('WW', consts.dayOfWeeksFull[language as ioBroker.Languages][d]);\n\n if (initialText === text) {\n text = text.replace('W', consts.dayOfWeeksShort[language as ioBroker.Languages][d]);\n }\n\n text = text.replace('Н', consts.dayOfWeeksShort[language as ioBroker.Languages][d]);\n text = text.replace('Н', consts.dayOfWeeksShort[language as ioBroker.Languages][d]);\n const m: number = (date as Date).getMonth();\n initialText = text;\n text = text.replace('OOO', consts.monthFullGen[language as ioBroker.Languages][m]);\n text = text.replace('ООО', consts.monthFullGen[language as ioBroker.Languages][m]);\n text = text.replace('OO', consts.monthFull[language as ioBroker.Languages][m]);\n text = text.replace('ОО', consts.monthFull[language as ioBroker.Languages][m]);\n\n if (initialText === text) {\n text = text.replace('O', consts.monthShort[language as ioBroker.Languages][m]);\n }\n return text;\n }\n return adapter.formatDate(date as string | number | Date, format);\n },\n formatTimeDiff: function (diff: number, format?: string): string {\n if (!format) {\n format = 'hh:mm:ss';\n }\n\n let text = format;\n\n if (sandbox.verbose) {\n sandbox.log(`formatTimeDiff(format=${format}, diff=${diff})`, 'debug');\n }\n\n const second = 1000;\n const minute = 60 * second;\n const hour = 60 * minute;\n const day = 24 * hour;\n const neg = diff < 0;\n diff = Math.abs(diff);\n\n if (FTD_TEST_D.test(text)) {\n const days = Math.floor(diff / day);\n\n text = text.replace(FTD_REPL_DD, days.toString().padStart(2, '0')).replace(FTD_REPL_D, days.toString());\n\n if (sandbox.verbose) {\n sandbox.log(`formatTimeDiff(format=${format}, text=${text}, days=${days})`, 'debug');\n }\n\n diff -= days * day;\n }\n\n if (FTD_TEST_H.test(text)) {\n const hours = Math.floor(diff / hour);\n\n text = text\n .replace(FTD_REPL_HH, hours.toString().padStart(2, '0'))\n .replace(FTD_REPL_H, hours.toString());\n\n if (sandbox.verbose) {\n sandbox.log(`formatTimeDiff(format=${format}, text=${text}, hours=${hours})`, 'debug');\n }\n\n diff -= hours * hour;\n }\n\n if (FTD_TEST_M.test(text)) {\n const minutes = Math.floor(diff / minute);\n\n text = text\n .replace(FTD_REPL_MM, minutes.toString().padStart(2, '0'))\n .replace(FTD_REPL_M, minutes.toString());\n\n if (sandbox.verbose) {\n sandbox.log(`formatTimeDiff(format=${format}, text=${text}, minutes=${minutes})`, 'debug');\n }\n\n diff -= minutes * minute;\n }\n\n if (FTD_TEST_S.test(text)) {\n const seconds = Math.floor(diff / second);\n\n text = text\n .replace(FTD_REPL_SS, seconds.toString().padStart(2, '0'))\n .replace(FTD_REPL_S, seconds.toString());\n\n if (sandbox.verbose) {\n sandbox.log(`formatTimeDiff(format=${format}, text=${text}, seconds=${seconds})`, 'debug');\n }\n }\n\n for (const [pattern, replacement] of FTD_UNESCAPE) {\n text = text.replace(pattern, replacement);\n }\n\n if (sandbox.verbose) {\n sandbox.log(`formatTimeDiff(format=${format}, text=${text})`, 'debug');\n }\n\n return neg ? `-${text}` : text;\n },\n getDateObject: function (date: Date | number | string): Date {\n if (isObject(date)) {\n return date as Date;\n }\n if (typeof date === 'undefined') {\n return new Date();\n }\n if (typeof date !== 'string') {\n return new Date(date);\n }\n\n // If only hours: 20, 2\n if (date.match(/^\\d?\\d$/)) {\n const _now = new Date();\n date = `${_now.getFullYear()}-${_now.getMonth() + 1}-${_now.getDate()} ${date}:00`;\n } else if (date.match(/^\\d?\\d:\\d\\d(:\\d\\d)?$/)) {\n // 20:00, 2:00, 20:00:00, 2:00:00\n const now = new Date();\n date = `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()} ${date}`;\n }\n\n return new Date(date);\n },\n writeFile: function (\n _adapter: string,\n fileName: string,\n data: string | Buffer | ((err: Error) => void),\n callback?: (err?: Error | null) => void,\n ): void {\n if (typeof data === 'function' || !data) {\n callback = data as (err?: Error | null) => void;\n data = fileName;\n fileName = _adapter;\n _adapter = '0_userdata.0';\n }\n _adapter = _adapter || '0_userdata.0';\n\n if (debug) {\n sandbox.log(\n `writeFile(adapter=${_adapter}, fileName=${fileName}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n if (typeof callback === 'function') {\n setTimeout(function (): void {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }, 0);\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log(`writeFile(adapter=${_adapter}, fileName=${fileName})`, 'info');\n }\n if (callback) {\n adapter.writeFile(_adapter, fileName, data, callback);\n } else {\n // @ts-expect-error should be fixed in js-controller\n adapter.writeFile(_adapter, fileName, data);\n }\n }\n },\n readFile: function (\n _adapter: string,\n fileName: string | ((err: Error | null | undefined, data?: Buffer | string, mimeType?: string) => void),\n callback?: (err: Error | null | undefined, data?: Buffer | string, mimeType?: string) => void,\n ): void {\n if (typeof fileName === 'function') {\n callback = fileName;\n fileName = _adapter;\n _adapter = '0_userdata.0';\n }\n if (typeof callback !== 'function') {\n sandbox.log(`readFile(adapter=${_adapter}, fileName=${fileName}): no callback`, 'error');\n return;\n }\n _adapter = _adapter || '0_userdata.0';\n if (sandbox.verbose) {\n sandbox.log(`readFile(adapter=${_adapter}, fileName=${fileName})`, 'info');\n }\n\n adapter.fileExists(_adapter, fileName, (error: Error | null | undefined, result?: boolean): void => {\n if (error) {\n callback(error);\n } else if (!result) {\n callback(new Error('Not exists'));\n } else {\n adapter.readFile(_adapter, fileName, callback);\n }\n });\n },\n unlink: function (\n _adapter: string,\n fileName: string | ((err?: Error | null) => void),\n callback?: (err?: Error | null) => void,\n ): void {\n if (typeof fileName === 'function') {\n callback = fileName;\n fileName = _adapter;\n _adapter = '0_userdata.0';\n }\n _adapter = _adapter || '0_userdata.0';\n\n if (debug) {\n sandbox.log(\n `unlink(adapter=${_adapter}, fileName=${fileName}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n if (typeof callback === 'function') {\n setTimeout(function (): void {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }, 0);\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log(`unlink(adapter=${_adapter}, fileName=${fileName})`, 'info');\n }\n if (callback) {\n adapter.unlink(_adapter, fileName, callback);\n } else {\n // @ts-expect-error should be fixed in js-controller\n adapter.unlink(_adapter, fileName);\n }\n }\n },\n delFile: function (\n _adapter: string,\n fileName: string | ((err?: Error | null) => void),\n callback?: (err?: Error | null) => void,\n ): void {\n return sandbox.unlink(_adapter, fileName as string, callback);\n },\n rename: function (\n _adapter: string,\n oldName: string,\n newName: string,\n callback?: (err?: Error | null) => void,\n ): void {\n _adapter = _adapter || '0_userdata.0';\n\n if (debug) {\n sandbox.log(\n `rename(adapter=${_adapter}, oldName=${oldName}, newName=${newName}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n if (typeof callback === 'function') {\n setTimeout(function () {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }, 0);\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log(`rename(adapter=${_adapter}, oldName=${oldName}, newName=${newName})`, 'info');\n }\n if (callback) {\n adapter.rename(_adapter, oldName, newName, callback);\n } else {\n // @ts-expect-error should be fixed in js-controller\n adapter.rename(_adapter, oldName, newName);\n }\n }\n },\n renameFile: function (\n _adapter: string,\n oldName: string,\n newName: string,\n callback?: (err?: Error | null) => void,\n ): void {\n return sandbox.rename(_adapter, oldName, newName, callback);\n },\n getHistory: function (\n instance: string | (ioBroker.GetHistoryOptions & { id: string; timeout?: number | string }),\n options:\n | (ioBroker.GetHistoryOptions & { id?: string; timeout?: number | string })\n | ((\n error: Error | null,\n result?: ioBroker.GetHistoryResult | null,\n options?: ioBroker.GetHistoryOptions & { id: string; timeout?: number | string },\n instance?: string,\n ) => void),\n callback?: (\n error: Error | null,\n result?: ioBroker.GetHistoryResult | null,\n options?: ioBroker.GetHistoryOptions & { id: string; timeout?: number | string },\n instance?: string,\n ) => void,\n ): void {\n if (isObject(instance)) {\n callback = options as (\n error: Error | null,\n result?: ioBroker.GetHistoryResult | null,\n options?: ioBroker.GetHistoryOptions & { id: string; timeout?: number | string },\n instance?: string,\n ) => void;\n options = instance as ioBroker.GetHistoryOptions & { id?: string; timeout?: number | string };\n instance = '';\n }\n\n if (typeof callback !== 'function') {\n return sandbox.log('No callback found!', 'error');\n }\n if (!isObject(options)) {\n return sandbox.log('No options found!', 'error');\n }\n if (!(options as ioBroker.GetHistoryOptions & { id?: string; timeout?: number | string }).id) {\n return sandbox.log('No ID found!', 'error');\n }\n const timeoutMs =\n parseInt(\n (options as ioBroker.GetHistoryOptions & { id?: string; timeout?: number })\n ?.timeout as unknown as string,\n 10,\n ) || 20000;\n\n if (!instance) {\n // @ts-expect-error defaultHistory is private attribute of adapter. Fix later\n if (adapter.defaultHistory) {\n // @ts-expect-error defaultHistory is private attribute of adapter. Fix later\n instance = adapter.defaultHistory;\n } else {\n instance = objects['system.config']?.common?.defaultHistory || null;\n }\n }\n\n if (sandbox.verbose) {\n sandbox.log(`getHistory(instance=${instance as string}, options=${JSON.stringify(options)})`, 'info');\n }\n\n if (!instance) {\n sandbox.log('No default history instance found!', 'error');\n try {\n callback.call(sandbox, new Error('No default history instance found!'));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n return;\n }\n if ((instance as string).startsWith('system.adapter.')) {\n instance = (instance as string).substring('system.adapter.'.length);\n }\n\n if (!objects[`system.adapter.${instance as string}`]) {\n sandbox.log(`Instance \"${instance as string}\" not found!`, 'error');\n try {\n callback.call(sandbox, new Error(`Instance \"${instance as string}\" not found!`));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n return;\n }\n\n let _timeout: NodeJS.Timeout | null = setTimeout(() => {\n _timeout = null;\n if (sandbox.verbose) {\n sandbox.log('getHistory => timeout', 'debug');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(\n sandbox,\n new Error('Timeout'),\n null,\n options as ioBroker.GetHistoryOptions & { id: string; timeout?: number | string },\n instance as string,\n );\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n callback = undefined;\n }\n }, timeoutMs);\n\n adapter.sendTo(\n instance as string,\n 'getHistory',\n {\n id: (options as ioBroker.GetHistoryOptions & { id: string; timeout?: number | string }).id,\n options,\n },\n (res: any): void => {\n if (_timeout) {\n clearTimeout(_timeout);\n _timeout = null;\n }\n const result: {\n error?: string;\n result?: ioBroker.GetHistoryResult;\n step?: number;\n sessionId?: string;\n } = res;\n\n if (sandbox.verbose && result?.error) {\n sandbox.log(`getHistory => ${result.error}`, 'error');\n }\n if (sandbox.verbose && result?.result) {\n sandbox.log(`getHistory => ${result.result.length} items`, 'debug');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(\n sandbox,\n result.error ? new Error(result.error) : null,\n result.result,\n options as ioBroker.GetHistoryOptions & { id: string; timeout?: number | string },\n instance as string,\n );\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n callback = undefined;\n }\n },\n );\n },\n runScript: function (scriptName: string, callback?: (err?: Error | null) => void): boolean {\n scriptName = scriptName || name;\n if (!scriptName.match(/^script\\.js\\./)) {\n scriptName = `script.js.${scriptName}`;\n }\n // start another script\n if (!objects[scriptName] || !objects[scriptName].common) {\n sandbox.log(`Cannot start \"${scriptName}\", because not found`, 'error');\n return false;\n }\n if (debug) {\n sandbox.log(\n `runScript(scriptName=${scriptName}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n typeof callback === 'function' && callback();\n return true;\n }\n if (objects[scriptName].common.enabled) {\n objects[scriptName].common.enabled = false;\n adapter.extendForeignObject(scriptName, { common: { enabled: false } }, (/* err, obj */) => {\n adapter.extendForeignObject(\n scriptName,\n { common: { enabled: true } },\n err => typeof callback === 'function' && callback(err),\n );\n });\n return true;\n }\n adapter.extendForeignObject(\n scriptName,\n { common: { enabled: true } },\n err => typeof callback === 'function' && callback(err),\n );\n return true;\n },\n runScriptAsync: function (scriptName: string): Promise {\n let done = false;\n return new Promise((resolve, reject) => {\n const result = sandbox.runScript(scriptName, err => {\n if (err) {\n reject(err);\n done = true;\n } else {\n resolve();\n }\n });\n if (result === false && !done) {\n reject(new Error(`Script ${scriptName} was not found!`));\n }\n });\n },\n startScript: function (\n scriptName: string,\n ignoreIfStarted?: boolean | ((err: Error | null | undefined, started: boolean) => void),\n callback?: (err: Error | null | undefined, started: boolean) => void,\n ): boolean {\n if (typeof ignoreIfStarted === 'function') {\n callback = ignoreIfStarted;\n ignoreIfStarted = false;\n }\n scriptName ||= name;\n if (!scriptName.match(/^script\\.js\\./)) {\n scriptName = `script.js.${scriptName}`;\n }\n // start another script\n if (!objects[scriptName] || !objects[scriptName].common) {\n sandbox.log(`Cannot start \"${scriptName}\", because not found`, 'error');\n return false;\n }\n if (debug) {\n sandbox.log(\n `startScript(scriptName=${scriptName}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n typeof callback === 'function' && callback(null, false);\n return true;\n }\n if (objects[scriptName].common.enabled) {\n if (!ignoreIfStarted) {\n adapter.extendForeignObject(scriptName, { common: { enabled: false } }, () => {\n adapter.extendForeignObject(\n scriptName,\n { common: { enabled: true } },\n err => typeof callback === 'function' && callback(err, true),\n );\n });\n } else if (typeof callback === 'function') {\n callback(null, false);\n }\n return true;\n }\n adapter.extendForeignObject(scriptName, { common: { enabled: true } }, err => {\n typeof callback === 'function' && callback(err, true);\n });\n return true;\n },\n startScriptAsync: function (scriptName: string, ignoreIfStarted?: boolean): Promise {\n return new Promise((resolve, reject) => {\n const result = sandbox.startScript(\n scriptName,\n !!ignoreIfStarted,\n (err: Error | null | undefined, started: boolean): void => {\n if (err) {\n reject(err);\n } else {\n resolve(started);\n }\n },\n );\n if (result === false) {\n reject(new Error(`Script ${scriptName} was not found!`));\n }\n });\n },\n stopScript: function (\n scriptName: string,\n callback?: (err: Error | null | undefined, stopped: boolean) => void,\n ): boolean {\n scriptName = scriptName || name;\n\n if (!scriptName.match(/^script\\.js\\./)) {\n scriptName = `script.js.${scriptName}`;\n }\n\n // stop another script\n if (!objects[scriptName] || !objects[scriptName].common) {\n sandbox.log(`Cannot stop \"${scriptName}\", because not found`, 'error');\n return false;\n }\n if (debug) {\n sandbox.log(\n `stopScript(scriptName=${scriptName}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n if (typeof callback === 'function') {\n callback(null, false);\n }\n return true;\n }\n if (objects[scriptName].common.enabled) {\n objects[scriptName].common.enabled = false;\n adapter.extendForeignObject(scriptName, { common: { enabled: false } }, err => {\n if (typeof callback === 'function') {\n callback(err, true);\n }\n });\n } else if (typeof callback === 'function') {\n callback(null, false);\n }\n return true;\n },\n stopScriptAsync: function (scriptName: string): Promise {\n return new Promise((resolve, reject) => {\n const result = sandbox.stopScript(\n scriptName,\n (err: Error | null | undefined, stopped: boolean): void => {\n if (err) {\n reject(err);\n } else {\n resolve(stopped);\n }\n },\n );\n if (result === false) {\n reject(new Error(`Script ${scriptName} was not found!`));\n }\n });\n },\n isScriptActive: function (scriptName: string): boolean {\n if (!scriptName.match(/^script\\.js\\./)) {\n scriptName = `script.js.${scriptName}`;\n }\n if (!objects[scriptName] || !objects[scriptName].common) {\n sandbox.log('Script does not exist', 'error');\n return false;\n }\n return objects[scriptName].common.enabled;\n },\n startInstanceAsync: async function (instanceName: string): Promise {\n const objInstanceId = `system.adapter.${instanceName}`;\n const exists = await adapter.foreignObjectExists(objInstanceId);\n\n if (exists) {\n const instanceObj = await adapter.getForeignObjectAsync(objInstanceId);\n\n if (instanceObj?.type === 'instance' && !instanceObj.common.enabled) {\n await adapter.extendForeignObjectAsync(objInstanceId, { common: { enabled: true } });\n\n if (sandbox.verbose) {\n sandbox.log(`startInstanceAsync (instanceName=${instanceName})`, 'info');\n }\n\n return true;\n }\n sandbox.log(`Cannot start instance \"${instanceName}\", because already running`, 'warn');\n } else {\n sandbox.log(`Cannot start instance \"${instanceName}\", because not found`, 'error');\n }\n\n return false;\n },\n restartInstanceAsync: async function (instanceName: string): Promise {\n const objInstanceId = `system.adapter.${instanceName}`;\n const exists = await adapter.foreignObjectExists(objInstanceId);\n\n if (exists) {\n const instanceObj = await adapter.getForeignObjectAsync(objInstanceId);\n\n if (instanceObj?.type === 'instance' && instanceObj.common.enabled) {\n await adapter.extendForeignObjectAsync(objInstanceId, {});\n\n if (sandbox.verbose) {\n sandbox.log(`restartInstanceAsync (instanceName=${instanceName})`, 'info');\n }\n\n return true;\n }\n sandbox.log(`Cannot restart instance \"${instanceName}\", because not running`, 'warn');\n } else {\n sandbox.log(`Cannot restart instance \"${instanceName}\", because not found`, 'error');\n }\n\n return false;\n },\n stopInstanceAsync: async function (instanceName: string): Promise {\n const objInstanceId = `system.adapter.${instanceName}`;\n const exists = await adapter.foreignObjectExists(objInstanceId);\n\n if (exists) {\n const instanceObj = await adapter.getForeignObjectAsync(objInstanceId);\n\n if (instanceObj?.type === 'instance' && instanceObj.common.enabled) {\n await adapter.extendForeignObjectAsync(objInstanceId, { common: { enabled: false } });\n\n if (sandbox.verbose) {\n sandbox.log(`stopInstanceAsync (instanceName=${instanceName})`, 'info');\n }\n\n return true;\n }\n sandbox.log(`Cannot stop instance \"${instanceName}\", because not running`, 'warn');\n } else {\n sandbox.log(`Cannot stop instance \"${instanceName}\", because not found`, 'error');\n }\n\n return false;\n },\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n toInt: function (val: boolean | string | number | 'true' | 'false'): number {\n if (val === true || val === 'true') {\n val = 1;\n }\n if (val === false || val === 'false') {\n val = 0;\n }\n val = parseInt(val as unknown as string) || 0;\n return val;\n },\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n toFloat: function (val: boolean | string | number | 'true' | 'false'): number {\n if (val === true || val === 'true') {\n val = 1;\n }\n if (val === false || val === 'false') {\n val = 0;\n }\n val = parseFloat(val as unknown as string) || 0;\n return val;\n },\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n toBoolean: function (val: boolean | string | number | 'true' | 'false'): boolean {\n if (val === '1' || val === 'true') {\n val = true;\n }\n if (val === '0' || val === 'false') {\n val = false;\n }\n return !!val;\n },\n getAttr: function (obj: string | Record, path: string | string[]): any {\n if (typeof path === 'string') {\n path = path.split('.');\n }\n if (typeof obj === 'string') {\n try {\n obj = JSON.parse(obj);\n } catch (err: unknown) {\n void adapter.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'getAttr',\n });\n sandbox.log(`Cannot parse \"${obj.substring(0, 30)}\": ${err as Error}`, 'error');\n\n return null;\n }\n }\n\n const attr: string = path.shift() || '';\n try {\n obj = (obj as Record)[attr];\n } catch (err: unknown) {\n void adapter.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'getAttr',\n });\n sandbox.log(`Cannot get ${attr} of \"${JSON.stringify(obj)}\": ${err as Error}`, 'error');\n\n return null;\n }\n\n if (!path.length) {\n return obj;\n }\n const type = typeof obj;\n if (obj === null || obj === undefined || type === 'boolean' || type === 'number') {\n return null;\n }\n return sandbox.getAttr(obj, path);\n },\n messageTo: function (\n target: string | { instance: string | null | number; script: string | null; message: string },\n data: any,\n options: { timeout?: number | string } | ((result: any, options: { timeout?: number | string }) => void),\n callback?: (result: any, options: { timeout?: number | string }, instance: string | number | null) => void,\n ) {\n const defaultTimeout = 5000;\n\n if (typeof target !== 'object') {\n target = { instance: null, script: null, message: target };\n }\n if (typeof options === 'function') {\n callback = options;\n options = { timeout: defaultTimeout };\n }\n\n let timeout: NodeJS.Timeout | null = null;\n if (typeof callback === 'function') {\n const timeoutDuration = parseInt(options?.timeout as unknown as string, 10) || defaultTimeout;\n\n timeout = setTimeout(() => {\n timeout = null;\n\n if (sandbox.verbose) {\n sandbox.log(`messageTo => timeout: ${timeoutDuration}`, 'debug');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, { error: 'timeout' }, options, target.instance);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n callback = undefined;\n }\n }, timeoutDuration);\n }\n let cbFunc: undefined | ((result: any) => void);\n if (timeout) {\n cbFunc = function (res: any) {\n timeout && clearTimeout(timeout);\n const result: { result?: any; error?: string | null } = res;\n\n if (sandbox.verbose && result?.result) {\n sandbox.log(`messageTo => ${JSON.stringify(result)}`, 'debug');\n }\n if (sandbox.verbose && result?.error) {\n sandbox.log(`messageTo => ${result.error}`, 'error');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, result, options, target.instance);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n callback = undefined;\n }\n };\n }\n\n if (target.instance || target.instance === 0) {\n if (\n typeof target.instance === 'string' &&\n target.instance &&\n target.instance.startsWith('system.adapter.')\n ) {\n target.instance = target.instance.substring('system.adapter.'.length);\n } else if (typeof target.instance === 'number') {\n target.instance = `javascript.${target.instance}`;\n }\n\n adapter.sendTo(\n target.instance,\n 'jsMessageBus',\n { message: target.message, script: target.script, data },\n cbFunc,\n );\n } else {\n // Send it to all instances\n context.adapter.getObjectView(\n 'system',\n 'instance',\n { startkey: 'system.adapter.javascript.', endkey: 'system.adapter.javascript.\\u9999' },\n options,\n (err: Error | null | undefined, res): void => {\n if (err || !res) {\n sandbox.log(`messageTo failed: ${err?.message}`, 'error');\n return;\n }\n const len = 'system.adapter.'.length;\n const instances = res.rows.map(item => item.id.substring(len));\n\n instances.forEach(instance => {\n adapter.sendTo(\n instance,\n 'jsMessageBus',\n { message: target.message, script: target.script, data },\n cbFunc,\n );\n });\n },\n );\n }\n },\n messageToAsync: function (\n target: string | { instance: string | null | number; script: string | null; message: string },\n data: any,\n options?: { timeout?: number | string },\n ): Promise {\n return new Promise((resolve, reject) => {\n sandbox.messageTo(target, data, options, (res: any): void => {\n const result: { error?: string } = res;\n if (sandbox.verbose) {\n sandbox.log(`messageTo result => ${JSON.stringify(res)}`, 'debug');\n }\n if (!res || result.error) {\n reject(result ? new Error(result.error) : new Error('Unknown error'));\n } else {\n resolve(result);\n }\n });\n });\n },\n onMessage: function (\n messageName: string,\n callback: (data: any, cb: (result: any) => void) => void,\n ): null | number {\n if (typeof callback !== 'function') {\n sandbox.log('onMessage callback is not a function', 'error');\n\n return null;\n }\n context.messageBusHandlers[sandbox.scriptName] = context.messageBusHandlers[sandbox.scriptName] || {};\n context.messageBusHandlers[sandbox.scriptName][messageName] =\n context.messageBusHandlers[sandbox.scriptName][messageName] || [];\n\n const handler = { id: _handlerIdCounter++, cb: callback, sandbox };\n context.messageBusHandlers[sandbox.scriptName][messageName].push(handler);\n\n sandbox.__engine.__subscriptionsMessage += 1;\n\n if (\n sandbox.__engine.__subscriptionsMessage %\n (adapter.config as JavaScriptAdapterConfig).maxTriggersPerScript ===\n 0\n ) {\n sandbox.log(\n `More than ${sandbox.__engine.__subscriptionsMessage} message subscriptions registered. Check your script!`,\n 'warn',\n );\n }\n\n return handler.id;\n },\n onMessageUnregister: function (idOrName: number | string): boolean {\n const ctx = context.messageBusHandlers[sandbox.scriptName];\n let found = false;\n if (ctx) {\n if (typeof idOrName === 'number') {\n outer: for (const messageName of Object.keys(ctx)) {\n for (let i = 0; i < ctx[messageName].length; i++) {\n if (ctx[messageName][i].id === idOrName) {\n ctx[messageName].splice(i, 1);\n if (!ctx[messageName].length) {\n delete ctx[messageName];\n sandbox.__engine.__subscriptionsMessage--;\n }\n found = true;\n break outer;\n }\n }\n }\n } else if (idOrName && ctx[idOrName]) {\n delete ctx[idOrName];\n sandbox.__engine.__subscriptionsMessage--;\n found = true;\n }\n }\n return found;\n },\n console: {\n log: function (msg: string): void {\n sandbox.log(msg, 'info');\n },\n error: function (msg: string): void {\n sandbox.log(msg, 'error');\n },\n warn: function (msg: string): void {\n sandbox.log(msg, 'warn');\n },\n info: function (msg: string): void {\n sandbox.log(msg, 'info');\n },\n debug: function (msg: string): void {\n sandbox.log(msg, 'debug');\n },\n },\n jsonataExpression: function (data: any, expression: string): Promise {\n return jsonata(expression).evaluate(data);\n },\n wait: function (ms: number): Promise {\n return new Promise((resolve: () => void): void => {\n sandbox.setTimeout(resolve, ms);\n });\n },\n sleep: function (ms: number): Promise {\n return sandbox.wait(ms);\n },\n onObject: function (\n pattern: string | string[],\n callback: (id: string, obj?: ioBroker.Object | null) => void,\n ): SubscribeObject | SubscribeObject[] | null {\n return sandbox.subscribeObject(pattern, callback);\n },\n subscribeObject: function (\n pattern: string | string[],\n callback: (id: string, obj?: ioBroker.Object | null) => void,\n ): SubscribeObject | SubscribeObject[] | null {\n if (Array.isArray(pattern)) {\n const result: {\n name: string;\n pattern: string;\n callback: (id: string, obj?: ioBroker.Object | null) => void;\n }[] = [];\n for (let p = 0; p < pattern.length; p++) {\n result.push(\n sandbox.subscribeObject(pattern[p], callback) as {\n name: string;\n pattern: string;\n callback: (id: string, obj?: ioBroker.Object | null) => void;\n },\n );\n }\n return result;\n }\n\n sandbox.__engine.__subscriptionsObject += 1;\n\n if (\n sandbox.__engine.__subscriptionsObject %\n (adapter.config as JavaScriptAdapterConfig).maxTriggersPerScript ===\n 0\n ) {\n sandbox.log(\n `More than ${sandbox.__engine.__subscriptionsObject} object subscriptions registered. Check your script!`,\n 'warn',\n );\n }\n\n // source is set by regexp if defined as /regexp/\n if (!pattern || typeof pattern !== 'string') {\n sandbox.log('Error by subscribeObject: pattern can be only string or array of strings.', 'error');\n return null;\n }\n\n if (typeof callback !== 'function') {\n sandbox.log('Error by subscribeObject: callback is not a function', 'error');\n return null;\n }\n\n const subs: SubscribeObject = { pattern, callback, name };\n if (sandbox.verbose) {\n sandbox.log(`subscribeObject: ${JSON.stringify(subs)}`, 'info');\n }\n\n adapter.subscribeForeignObjects(pattern);\n\n context.subscriptionsObject.push(subs);\n // Keep O(1) dispatch map in sync\n if (!context.subscriptionsObjectMap.has(pattern)) {\n context.subscriptionsObjectMap.set(pattern, []);\n }\n context.subscriptionsObjectMap.get(pattern)!.push(subs);\n\n return subs;\n },\n unsubscribeObject: function (subObject: SubscribeObject | SubscribeObject[]): boolean | boolean[] {\n if (subObject && Array.isArray(subObject)) {\n const result: boolean[] = [];\n for (let t = 0; t < subObject.length; t++) {\n result.push(sandbox.unsubscribeObject(subObject[t]) as boolean);\n }\n return result;\n }\n\n if (sandbox.verbose) {\n sandbox.log(`adapterUnsubscribeObject(id=${JSON.stringify(subObject)})`, 'info');\n }\n\n for (let i = context.subscriptionsObject.length - 1; i >= 0; i--) {\n if (context.subscriptionsObject[i] === subObject) {\n adapter.unsubscribeForeignObjects(subObject.pattern);\n context.subscriptionsObject.splice(i, 1);\n // Keep O(1) dispatch map in sync\n const mapSubs = context.subscriptionsObjectMap.get(subObject.pattern);\n if (mapSubs) {\n const pos = mapSubs.indexOf(subObject);\n if (pos !== -1) {\n mapSubs.splice(pos, 1);\n }\n if (!mapSubs.length) {\n context.subscriptionsObjectMap.delete(subObject.pattern);\n }\n }\n sandbox.__engine.__subscriptionsObject--;\n return true;\n }\n }\n let deleted = 0;\n for (let i = context.subscriptionsObject.length - 1; i >= 0; i--) {\n if (\n context.subscriptionsObject[i].name &&\n context.subscriptionsObject[i].pattern === subObject.pattern\n ) {\n deleted++;\n adapter.unsubscribeForeignObjects(subObject.pattern);\n // Keep O(1) dispatch map in sync\n const mapSubsP = context.subscriptionsObjectMap.get(subObject.pattern);\n if (mapSubsP) {\n const pos = mapSubsP.indexOf(context.subscriptionsObject[i]);\n if (pos !== -1) {\n mapSubsP.splice(pos, 1);\n }\n if (!mapSubsP.length) {\n context.subscriptionsObjectMap.delete(subObject.pattern);\n }\n }\n context.subscriptionsObject.splice(i, 1);\n sandbox.__engine.__subscriptionsObject--;\n }\n }\n return !!deleted;\n },\n // internal function to send the block debugging info to the front-end\n _sendToFrontEnd: function (blockId: string, data: any): void {\n if (context.rulesOpened === sandbox.scriptName) {\n void adapter.setState(\n 'debug.rules',\n JSON.stringify({ ruleId: sandbox.scriptName, blockId, data, ts: Date.now() }),\n true,\n );\n }\n },\n existsStateAsync: function (_id: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n existsObjectAsync: function (_id: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n getObjectAsync: function (_id: string, _enumName: null | string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n setObjectAsync: function (_id: string, _obj: ioBroker.Object): Promise<{ id: string }> {\n return Promise.reject(new Error('Not implemented'));\n },\n extendObjectAsync: function (_id: string, _obj: Partial): Promise<{ id: string }> {\n return Promise.reject(new Error('Not implemented'));\n },\n deleteObjectAsync: function (_id: string, _isRecursive?: boolean): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n createStateAsync: function (\n _name: string,\n _initValue: undefined | ioBroker.StateValue | ioBroker.State,\n _forceCreation:\n | boolean\n | undefined\n | Record\n | Partial\n | ((err: Error | null) => void),\n _common?: Partial | ((err: Error | null) => void),\n _native?: Record | ((err: Error | null) => void),\n ): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n createAliasAsync: function (\n _name: string,\n _alias: string | CommonAlias,\n _forceCreation: boolean | Partial | undefined,\n _common?: Partial | Record,\n _native?: Record,\n ): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n deleteStateAsync: function (_id: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n writeFileAsync: function (\n _adapter: string,\n _fileName: string | Buffer,\n _data?: string | Buffer,\n ): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n readFileAsync: function (_adapter: string, _fileName?: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n unlinkAsync: function (_adapter: string, _fileName?: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n delFileAsync: function (_adapter: string, _fileName?: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n renameAsync: function (_adapter: string, _oldName: string, _newName?: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n renameFileAsync: function (_adapter: string, _oldName: string, _newName?: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n getHistoryAsync: function (\n _instance: string | (ioBroker.GetHistoryOptions & { id: string; timeout?: number | string }),\n _options?: ioBroker.GetHistoryOptions & { id?: string; timeout?: number | string },\n ): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n httpGetAsync: function (\n _url: string,\n _options?: {\n timeout?: number;\n responseType?: ResponseType;\n headers?: Record;\n basicAuth?: { user: string; password: string } | null;\n bearerAuth?: string;\n validateCertificate?: boolean;\n },\n ): Promise<{\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n }> {\n return Promise.reject(new Error('Not implemented'));\n },\n httpPostAsync: function (\n _url: string,\n _data: any,\n _options: {\n timeout?: number;\n responseType?: ResponseType;\n headers?: Record;\n basicAuth?: { user: string; password: string } | null;\n bearerAuth?: string;\n validateCertificate?: boolean;\n },\n ): Promise<{\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n }> {\n return Promise.reject(new Error('Not implemented'));\n },\n };\n\n // Create advanced functions that can modify objects\n if ((adapter.config as JavaScriptAdapterConfig).enableSetObject) {\n sandbox.setObject = function (\n id: string,\n obj: ioBroker.Object,\n callback?: (err?: Error | null, res?: { id: string }) => void,\n ): void {\n if (id && typeof id === 'string' && id.startsWith('system.adapter.')) {\n sandbox.log(\n `Using setObject on system object ${id} can be dangerous (protected instance attributes may be lost)`,\n 'info',\n );\n }\n if (debug) {\n sandbox.log(\n `setObject(id=${id}, obj=${JSON.stringify(obj)}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n if (typeof callback === 'function') {\n setImmediate(function () {\n try {\n callback.call(sandbox, null, { id });\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n });\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log(`setObject(id=${id}, obj=${JSON.stringify(obj)})`, 'info');\n }\n adapter.setForeignObject(id, obj, (err, res) => {\n if (!err) {\n // Update meta object data\n context.updateObjectContext(id, obj);\n }\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, err, res);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n });\n }\n };\n sandbox.extendObject = function (\n id: string,\n obj: Partial,\n callback?: (err?: Error | null, obj?: { id: string }) => void,\n ): void {\n if (debug) {\n sandbox.log(\n `extendObject(id=${id}, obj=${JSON.stringify(obj)}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n if (typeof callback === 'function') {\n setTimeout(function () {\n try {\n callback.call(sandbox, null, { id });\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }, 0);\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log(`extendObject(id=${id}, obj=${JSON.stringify(obj)})`, 'info');\n }\n let objClone: Partial;\n try {\n objClone = structuredClone(obj);\n } catch (err: unknown) {\n // e.g. DataCloneError when the object contains functions\n void adapter.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'extendObject',\n });\n sandbox.log(`Object \"${id}\" can't be copied: ${JSON.stringify(err)}`, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(`Object \"${id}\" can't be copied`));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n if (callback) {\n adapter.extendForeignObject(id, objClone, callback);\n } else {\n void adapter.extendForeignObject(id, objClone);\n }\n }\n };\n sandbox.deleteObject = function (id: string, isRecursive?: boolean, callback?: ioBroker.ErrorCallback): void {\n if (typeof isRecursive === 'function') {\n callback = isRecursive;\n isRecursive = false;\n }\n if (debug) {\n sandbox.log(\n `deleteObject(id=${id}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n if (typeof callback === 'function') {\n setTimeout(function () {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }, 0);\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log(`deleteObject(id=${id})`, 'info');\n }\n adapter.delForeignObject(id, { recursive: isRecursive }, callback);\n }\n };\n }\n\n // promisify methods on the sandbox\n sandbox.existsStateAsync = promisify(sandbox.existsState);\n sandbox.existsObjectAsync = promisify(sandbox.existsObject);\n sandbox.getObjectAsync = promisify(sandbox.getObject);\n sandbox.setObjectAsync = promisify(sandbox.setObject);\n sandbox.extendObjectAsync = promisify(sandbox.extendObject);\n sandbox.deleteObjectAsync = promisify(sandbox.deleteObject);\n sandbox.createStateAsync = promisify(sandbox.createState);\n sandbox.createAliasAsync = promisify(sandbox.createAlias);\n sandbox.deleteStateAsync = promisify(sandbox.deleteState);\n sandbox.writeFileAsync = promisify(sandbox.writeFile);\n sandbox.readFileAsync = promisify(sandbox.readFile);\n sandbox.unlinkAsync = promisify(sandbox.unlink);\n sandbox.delFileAsync = promisify(sandbox.delFile);\n sandbox.renameAsync = promisify(sandbox.rename);\n sandbox.renameFileAsync = promisify(sandbox.renameFile);\n sandbox.getHistoryAsync = promisify(sandbox.getHistory);\n sandbox.httpGetAsync = promisify(sandbox.httpGet);\n sandbox.httpPostAsync = promisify(sandbox.httpPost);\n\n // Make all predefined properties and methods readonly so scripts cannot overwrite them\n for (const prop of Object.keys(sandbox)) {\n Object.defineProperty(sandbox, prop, {\n configurable: false,\n writable: false,\n });\n }\n\n // Shallow-freeze the console object exposed to scripts to prevent its methods from being overwritten\n // Note: __engine must NOT be frozen because its counter properties are mutated at runtime\n if (sandbox.console && typeof sandbox.console === 'object') {\n Object.freeze(sandbox.console);\n }\n\n return sandbox;\n}\n"]} \ No newline at end of file +{"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/lib/sandbox.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ChildProcess, ExecOptions } from 'node:child_process';\nimport * as jsonataMod from 'jsonata';\nimport type { SendMailOptions } from 'nodemailer';\nimport type { AxiosError, AxiosHeaderValue, AxiosResponse, ResponseType } from 'axios';\n\nimport { isObject, isArray, promisify, getHttpRequestConfig } from './tools';\nimport type {\n JavaScriptAdapterConfig,\n AstroRule,\n ChangeType,\n CommonAlias,\n FileSubscriptionResult,\n IobSchedule,\n JavascriptContext,\n JsScript,\n Pattern,\n PushoverOptions,\n SandboxType,\n Selector,\n SubscribeObject,\n SubscriptionResult,\n TimeRule,\n} from '../types';\nimport * as constsMod from './consts';\nimport * as wordsMod from './words';\nimport * as eventObjMod from './eventObj';\nimport {\n patternCompareFunctions as patternCompareFunctionsMod,\n type PatternEventCompareFunction,\n} from './patternCompareFunctions';\nimport type { ScheduleName, SchedulerRule } from './scheduler';\nimport type { EventObj } from './eventObj';\nimport type { AstroEvent } from './consts';\n\nconst SCRIPT_CODE_MARKER = 'script.js.';\n\n// Pre-compiled RegExp constants for formatTimeDiff – avoids recompiling on every call\nconst FTD_TEST_D = /(?();\n\n/** Monotonically increasing handler-ID counter – avoids Date.now()+random collisions */\nlet _handlerIdCounter = 1;\n\n/** All characters that may not appear in an object ID. */\nexport const FORBIDDEN_CHARS = /[^._\\-/ :!#$%&()+=@^{}|~\\p{Ll}\\p{Lu}\\p{Nd}]+/gu;\n\n/**\n * Checks if a pattern is valid\n *\n * @param pattern The pattern to check for validity\n */\nexport function isValidPattern(pattern: string): boolean {\n pattern = pattern.replace(/\\*/g, '');\n\n return !FORBIDDEN_CHARS.test(pattern);\n}\n/**\n * Converts ioB pattern into regex.\n *\n * This funtion was copied from js-controller, as for the tests it is required, that function must be defined here.\n * Else the adapter-core tries to find js-controller and it is not installed.\n *\n * @param pattern - Regex string to use it in new RegExp(pattern)\n */\nexport function pattern2RegEx(pattern: string): string {\n pattern = (pattern || '').toString();\n\n if (!isValidPattern(pattern)) {\n throw new Error(`The pattern \"${pattern}\" is not a valid ID pattern`);\n }\n\n const startsWithWildcard = pattern[0] === '*';\n const endsWithWildcard = pattern[pattern.length - 1] === '*';\n\n pattern = pattern.replace(/[-/\\\\^$+?.()|[\\]{}]/g, '\\\\$&').replace(/\\*/g, '.*');\n\n return (startsWithWildcard ? '' : '^') + pattern + (endsWithWildcard ? '' : '$');\n}\n\n/** Returns true when patId is a plain exact state-ID (no wildcards, no RegExp notation). */\nexport function isExactId(patId: unknown): patId is string {\n return (\n !!patId && typeof patId === 'string' && !patId.includes('*') && !patId.includes('?') && !patId.startsWith('/')\n );\n}\n\n/**\n * Removes a subscription from the O(1) dispatch index (subscriptionsMap / subscriptionsWildcard).\n * Must use the same exact-id classification as the subscribe side (isExactId),\n * otherwise entries leak in the structure that was not searched.\n */\nexport function removeFromDispatchIndex(ctx: JavascriptContext, sub: SubscriptionResult): void {\n const patId = sub.pattern?.id;\n if (isExactId(patId)) {\n const bucket = ctx.subscriptionsMap.get(patId);\n if (bucket) {\n const pos = bucket.indexOf(sub);\n if (pos !== -1) {\n bucket.splice(pos, 1);\n }\n if (bucket.length === 0) {\n ctx.subscriptionsMap.delete(patId);\n }\n }\n } else {\n const wPos = ctx.subscriptionsWildcard.indexOf(sub);\n if (wPos !== -1) {\n ctx.subscriptionsWildcard.splice(wPos, 1);\n }\n }\n}\n\nexport function sandBox(\n script: JsScript,\n name: string,\n verbose: boolean | undefined,\n debug: boolean | undefined,\n context: JavascriptContext,\n logCollector?: ((severity: ioBroker.LogLevel, message: string) => void) | null,\n): SandboxType {\n const consts = constsMod;\n const words = wordsMod;\n const eventObj = eventObjMod;\n const patternCompareFunctions = patternCompareFunctionsMod;\n const jsonata = jsonataMod.default;\n\n const adapter: ioBroker.Adapter = context.adapter;\n const mods = context.mods;\n const states = context.states;\n const objects = context.objects;\n const timers = context.timers;\n const enums = context.enums;\n const debugMode = context.debugMode;\n\n // eslint-disable-next-line prefer-const\n let sandbox: SandboxType;\n\n function errorInCallback(e: Error): void {\n void adapter.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'errorInCallback',\n });\n context.logError(name, 'Error in callback:', e);\n context.debugMode && console.log(`error$$${name}$$Exception in callback: ${e}`, Date.now());\n }\n\n function subscribePattern(script: JsScript, pattern: string): void {\n if ((adapter.config as JavaScriptAdapterConfig).subscribe) {\n if (!script.subscribes[pattern]) {\n script.subscribes[pattern] = 1;\n } else {\n script.subscribes[pattern]++;\n }\n\n if (!context.subscribedPatterns[pattern]) {\n context.subscribedPatterns[pattern] = 1;\n\n if (sandbox.verbose) {\n sandbox.log(`subscribePattern(pattern=${pattern})`, 'info');\n }\n adapter.subscribeForeignStates(pattern);\n\n // request current value to deliver old value on change.\n if (typeof pattern === 'string' && !pattern.includes('*')) {\n void adapter.getForeignState(pattern, (_err, state) => {\n if (state) {\n states[pattern] = state;\n }\n });\n } else {\n // IO-3: Object.assign instead of Object.keys().forEach() – no temporary keys array\n adapter.getForeignStates(pattern, (_err, _states) => _states && Object.assign(states, _states));\n }\n } else {\n context.subscribedPatterns[pattern]++;\n }\n }\n }\n\n function unsubscribePattern(script: JsScript, pattern: string): void {\n if ((adapter.config as JavaScriptAdapterConfig).subscribe) {\n if (script.subscribes[pattern]) {\n script.subscribes[pattern]--;\n if (!script.subscribes[pattern]) {\n delete script.subscribes[pattern];\n }\n }\n\n if (context.subscribedPatterns[pattern]) {\n context.subscribedPatterns[pattern]--;\n if (!context.subscribedPatterns[pattern]) {\n adapter.unsubscribeForeignStates(pattern);\n delete context.subscribedPatterns[pattern];\n\n // if the pattern was regex or with * some states will stay in RAM, but it is OK.\n if (states[pattern]) {\n delete states[pattern];\n }\n }\n }\n }\n }\n\n function subscribeFile(script: JsScript, id: string, fileNamePattern: string): void {\n const key = `${id}$%$${fileNamePattern}`;\n if (!script.subscribesFile[key]) {\n script.subscribesFile[key] = 1;\n } else {\n script.subscribesFile[key]++;\n }\n\n if (!context.subscribedPatternsFile[key]) {\n context.subscribedPatternsFile[key] = 1;\n void adapter.subscribeForeignFiles(id, fileNamePattern);\n } else {\n context.subscribedPatternsFile[key]++;\n }\n }\n\n function unsubscribeFile(script: JsScript, id: string, fileNamePattern: string): void {\n const key = `${id}$%$${fileNamePattern}`;\n if (script.subscribesFile[key]) {\n script.subscribesFile[key]--;\n if (!script.subscribesFile[key]) {\n delete script.subscribesFile[key];\n }\n }\n\n if (context.subscribedPatternsFile[key]) {\n context.subscribedPatternsFile[key]--;\n if (!context.subscribedPatternsFile[key]) {\n void adapter.unsubscribeForeignFiles(id, fileNamePattern);\n delete context.subscribedPatternsFile[key];\n }\n }\n }\n\n function getPatternCompareFunctions(pattern: Pattern): PatternEventCompareFunction[] & { logic?: 'and' | 'or' } {\n let func: PatternEventCompareFunction;\n const functions: PatternEventCompareFunction[] & { logic?: 'and' | 'or' } = [];\n functions.logic = pattern.logic || 'and';\n\n for (const key in pattern) {\n if (!Object.prototype.hasOwnProperty.call(pattern, key)) {\n continue;\n }\n if (key === 'logic') {\n continue;\n }\n if (key === 'change' && pattern.change === 'any') {\n continue;\n }\n const _func: (pattern: Pattern) => PatternEventCompareFunction = (\n patternCompareFunctions as unknown as Record PatternEventCompareFunction>\n )[key];\n if (!_func) {\n continue;\n }\n func = _func(pattern);\n if (typeof func !== 'function') {\n continue;\n }\n functions.push(func);\n }\n return functions;\n }\n\n /**\n * Splits a selector string into attribute and value\n *\n * @param selector The selector string to split\n */\n function splitSelectorString(selector: string): Selector {\n const parts = selector.split('=', 2);\n if (parts[1] && parts[1][0] === '\"') {\n parts[1] = parts[1].substring(1);\n const len = parts[1].length;\n if (parts[1] && parts[1][len - 1] === '\"') {\n parts[1] = parts[1].substring(0, len - 1);\n }\n }\n if (parts[1] && parts[1][0] === \"'\") {\n parts[1] = parts[1].substring(1);\n const len = parts[1].length;\n if (parts[1] && parts[1][len - 1] === \"'\") {\n parts[1] = parts[1].substring(0, len - 1);\n }\n }\n\n if (parts[1]) {\n parts[1] = parts[1].trim();\n }\n parts[0] = parts[0].trim();\n\n return { attr: parts[0], value: parts[1] };\n }\n\n /**\n * Transforms a selector string with wildcards into a regular expression\n *\n * @param str The selector string to transform into a regular expression\n */\n function selectorStringToRegExp(str: string): RegExp {\n const cached = _selectorRegExpCache.get(str);\n if (cached) {\n return cached;\n }\n const startsWithWildcard = str[0] === '*';\n const endsWithWildcard = str[str.length - 1] === '*';\n // eslint-disable-next-line no-useless-escape\n const escaped = str.replace(/[-\\/\\\\^$+?.()|[\\]{}]/g, '\\\\$&').replace(/\\*/g, '.*');\n const re = new RegExp((startsWithWildcard ? '' : '^') + escaped + (endsWithWildcard ? '' : '$'));\n\n // FIFO eviction: drop the oldest entry once the cache exceeds its limit\n if (_selectorRegExpCache.size >= _SELECTOR_REGEXP_CACHE_MAX) {\n const oldestKey = _selectorRegExpCache.keys().next().value;\n if (oldestKey !== undefined) {\n _selectorRegExpCache.delete(oldestKey);\n }\n }\n\n _selectorRegExpCache.set(str, re);\n return re;\n }\n\n /**\n * Adds a regular expression for selectors targeting the state ID\n *\n * @param selector The selector to apply the transform to\n */\n function addRegExpToIdAttrSelectors(selector: Selector): Selector {\n if ((selector.attr === 'id' || selector.attr === 'state.id') && !selector.idRegExp && selector.value) {\n return {\n attr: selector.attr,\n value: selector.value,\n idRegExp: selectorStringToRegExp(selector.value),\n };\n }\n return selector;\n }\n\n /**\n * Tests if a value loosely equals (==) the reference string.\n * In contrast to the equality operator, this treats true == \"true\" as well\n * so we can test common and native attributes for boolean values\n *\n * @param value The value to compare with the reference\n * @param reference The reference to compare the value to\n */\n function looselyEqualsString(value: string | number | boolean | undefined, reference: string): boolean {\n // For booleans, compare the string representation\n // For other types do a loose comparison\n return typeof value === 'boolean'\n ? (value && reference === 'true') || (!value && reference === 'false')\n : value == reference;\n }\n\n /**\n * Returns the `common.type` for a given variable\n */\n function getCommonTypeOf(value: any): ioBroker.CommonType {\n return isArray(value) ? 'array' : isObject(value) ? 'object' : (typeof value as ioBroker.CommonType);\n }\n\n /**\n * Returns if an id is in an allowed namespace for automatic object creations\n *\n * @param id id to check\n */\n function validIdForAutomaticFolderCreation(id: string): boolean {\n return id.startsWith('javascript.') || id.startsWith('0_userdata.0.') || id.startsWith('alias.0.');\n }\n\n /**\n * Iterate through object structure to create missing folder objects\n */\n async function ensureObjectStructure(id: string): Promise {\n if (!validIdForAutomaticFolderCreation(id)) {\n return;\n }\n if (context.folderCreationVerifiedObjects[id] === true) {\n return;\n }\n const idArr = id.split('.');\n idArr.pop(); // the last is created as an object in any way\n if (idArr.length < 3) {\n return; // Nothing to do\n }\n // We just create sublevel projects\n let idToCheck = idArr.splice(0, 2).join('.');\n\n context.folderCreationVerifiedObjects[id] = true;\n for (const part of idArr) {\n idToCheck += `.${part}`;\n if (context.folderCreationVerifiedObjects[idToCheck] === true || objects[idToCheck]) {\n continue;\n }\n context.folderCreationVerifiedObjects[idToCheck] = true;\n let obj: ioBroker.Object | null | undefined;\n try {\n obj = await adapter.getForeignObjectAsync(idToCheck);\n } catch {\n // ignore\n }\n if (!obj?.common) {\n sandbox.log(`Create folder object for ${idToCheck}`, 'debug');\n try {\n await adapter.setForeignObjectAsync(idToCheck, {\n _id: idToCheck,\n type: 'folder',\n common: {\n name: part,\n },\n native: {\n autocreated: 'by automatic ensure logic',\n },\n });\n } catch (err: any) {\n sandbox.log(`Could not automatically create folder object ${idToCheck}: ${err.message}`, 'info');\n }\n } else {\n //sandbox.log(` already existing \"${idToCheck}\": ${JSON.stringify(obj)}`, 'debug');\n }\n }\n }\n\n function setStateHelper(\n sandbox: SandboxType,\n isCreate: boolean,\n isChanged: boolean,\n id: string,\n state: null | ioBroker.SettableState | ioBroker.StateValue,\n isAck: boolean | 'true' | 'false' | undefined | ((error?: Error | null) => void),\n callback?: (error?: Error | null) => void,\n ): void {\n if (typeof isAck === 'function') {\n callback = isAck;\n isAck = undefined;\n }\n\n let stateNotNull: ioBroker.SettableState | ioBroker.StateValue;\n\n if (isAck === true || isAck === false || isAck === 'true' || isAck === 'false') {\n if (state && typeof state === 'object' && state.val !== undefined) {\n stateNotNull = state;\n // we assume that we were given a state object if\n // state is an object that contains a `val` property\n if (!Object.prototype.hasOwnProperty.call(state, 'ack')) {\n stateNotNull.ack = isAck === true || isAck === 'true';\n }\n } else if (state === null) {\n stateNotNull = { val: null, ack: isAck === true || isAck === 'true' };\n } else {\n // otherwise, assume that the given state is the value to be set\n stateNotNull = { val: state as ioBroker.StateValue, ack: isAck === true || isAck === 'true' };\n }\n } else if (state === null) {\n stateNotNull = { val: null };\n } else {\n stateNotNull = state;\n }\n\n // Check a type of state\n if (!objects[id] && objects[`${adapter.namespace}.${id}`]) {\n id = `${adapter.namespace}.${id}`;\n }\n\n if (isCreate) {\n if (id.match(/^javascript\\.\\d+\\.scriptEnabled/)) {\n sandbox.log(\n `Own states (${id}) should not be used in javascript.X.scriptEnabled.*! Please move the states to 0_userdata.0.*`,\n 'info',\n );\n } else if (id.match(/^javascript\\.\\d+\\.scriptProblem/)) {\n sandbox.log(\n `Own states (${id}) should not be used in javascript.X.scriptProblem.*! Please move the states to 0_userdata.0.*`,\n 'info',\n );\n }\n }\n\n const common = objects[id] ? objects[id].common : null;\n if (common?.type && common.type !== 'mixed' && common.type !== 'json') {\n // Find out which type the value has\n let actualCommonType: ioBroker.CommonType | undefined;\n if (typeof stateNotNull === 'object') {\n if (stateNotNull && stateNotNull.val !== undefined && stateNotNull.val !== null) {\n actualCommonType = getCommonTypeOf(stateNotNull.val);\n }\n } else if (stateNotNull !== undefined) {\n actualCommonType = getCommonTypeOf(stateNotNull);\n }\n // If this is not the expected one, issue a warning\n if (actualCommonType && actualCommonType !== common.type) {\n context.logWithLineInfo(\n `You are assigning a ${actualCommonType} to the state \"${id}\" which expects a ${common.type}. ` +\n `Please fix your code to use a ${common.type} or change the state type to ${actualCommonType}. ` +\n `This warning might become an error in future versions.`,\n );\n }\n\n if (actualCommonType === 'array' || actualCommonType === 'object') {\n try {\n if (typeof stateNotNull === 'object' && typeof stateNotNull.val !== 'undefined') {\n stateNotNull.val = JSON.stringify(stateNotNull.val);\n } else {\n stateNotNull = JSON.stringify(stateNotNull);\n }\n } catch (err: any) {\n context.logWithLineInfo(\n `Could not stringify value for type ${actualCommonType} and id ${id}: ${err.message}`,\n );\n if (typeof callback === 'function') {\n try {\n callback.call(\n sandbox,\n new Error(\n `Could not stringify value for type ${actualCommonType} and id ${id}: ${err.message}`,\n ),\n );\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n }\n }\n }\n // Check min and max of value\n if (typeof stateNotNull === 'object') {\n if (common && typeof stateNotNull.val === 'number') {\n const num: number = stateNotNull.val;\n if (common.min !== undefined && num < common.min) {\n stateNotNull.val = common.min;\n } else if (common.max !== undefined && num > common.max) {\n stateNotNull.val = common.max;\n }\n }\n } else if (common && typeof stateNotNull === 'number') {\n const num: number = stateNotNull;\n if (common.min !== undefined && num < common.min) {\n stateNotNull = common.min;\n }\n if (common.max !== undefined && num > common.max) {\n stateNotNull = common.max;\n }\n }\n\n let stateAsObject: ioBroker.State;\n // modify state here, to make it available in callback\n if (stateNotNull === null || typeof stateNotNull !== 'object' || stateNotNull.val === undefined) {\n stateAsObject = context.prepareStateObject(id, {\n val: stateNotNull as ioBroker.StateValue,\n ack: isAck === true || isAck === 'true',\n });\n } else {\n stateAsObject = context.prepareStateObject(id, stateNotNull);\n }\n\n // set as comment: from which script this state was set.\n stateAsObject.c = sandbox.scriptName;\n\n if (objects[id]) {\n script.setStatePerMinuteCounter++;\n if (sandbox.verbose) {\n sandbox.log(`setForeignState(id=${id}, state=${JSON.stringify(stateAsObject)})`, 'info');\n }\n\n if (debug) {\n sandbox.log(\n `setForeignState(id=${id}, state=${JSON.stringify(stateAsObject)}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n\n if (typeof callback === 'function') {\n setImmediate(() => {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n });\n }\n } else {\n if (!(adapter.config as JavaScriptAdapterConfig).subscribe) {\n // store actual state to make possible to process value in callback\n // risk that there will be an error on setState is very low,\n // but we will not store new state if the setStateChanged is called\n if (!isChanged) {\n context.interimStateValues[id] = stateAsObject;\n }\n }\n const errHandler = (err: Error | null | undefined, funcId: string): void => {\n err && sandbox.log(`${funcId}: ${err}`, 'error');\n // If adapter holds all states\n if (err && !(adapter.config as JavaScriptAdapterConfig).subscribe) {\n delete context.interimStateValues[id];\n }\n\n if (typeof callback === 'function') {\n setImmediate(() => {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n });\n }\n };\n if (isChanged) {\n if (!(adapter.config as JavaScriptAdapterConfig).subscribe && context.interimStateValues[id]) {\n // if the state is changed, we will compare it with interimStateValues\n const oldState = context.interimStateValues[id];\n // IO-1: for…in instead of Object.keys().filter().every() – no temporary array per call\n let stateHasChanged = false;\n for (const attr in stateAsObject) {\n if (attr === 'ts') {\n continue;\n }\n if ((stateAsObject as Record)[attr] === undefined) {\n continue;\n }\n if (\n (stateAsObject as Record)[attr] !== (oldState as Record)[attr]\n ) {\n stateHasChanged = true;\n break;\n }\n }\n if (stateHasChanged) {\n // state is changed for sure, and we will call setForeignState\n // and store new state to interimStateValues\n context.interimStateValues[id] = stateAsObject;\n adapter.setForeignState(id, stateAsObject, err => errHandler(err, 'setForeignState'));\n } else {\n // otherwise - do nothing as we have cached state, except callback\n errHandler(null, 'setForeignStateCached');\n }\n } else {\n // adapter doesn't hold all states, or it has not cached then we will simply call setForeignStateChanged\n adapter.setForeignStateChanged(id, { ...stateAsObject, ts: undefined }, err =>\n errHandler(err, 'setForeignStateChanged'),\n );\n }\n } else {\n adapter.setForeignState(id, stateAsObject, err => errHandler(err, 'setForeignState'));\n }\n }\n } else {\n context.logWithLineInfo(`State \"${id}\" not found`);\n if (typeof callback === 'function') {\n setImmediate(() => {\n try {\n callback.call(sandbox, new Error(`State \"${id}\" not found`));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n });\n }\n }\n }\n\n sandbox = {\n mods,\n _id: script._id,\n // @deprecated use scriptName\n name,\n scriptName: name,\n instance: adapter.instance || 0,\n defaultDataDir: context.getAbsoluteDefaultDataDir(),\n verbose,\n exports: {}, // Polyfill for the export object in TypeScript modules\n require: function (md: string): any {\n if (typeof md === 'string' && md.startsWith('node:')) {\n md = md.replace(/^node:/, '');\n }\n\n if (md === 'request') {\n if (!sandbox.__engine.__deprecatedWarnings.includes(md)) {\n sandbox.log(\n `request package is deprecated - please use httpGet (or a stable lib like axios) instead!`,\n 'warn',\n );\n sandbox.__engine.__deprecatedWarnings.push(md);\n }\n }\n\n if (mods[md]) {\n return mods[md];\n }\n\n let error: Error | undefined;\n\n try {\n mods[md] = require(\n adapter.getAdapterScopedPackageIdentifier ? adapter.getAdapterScopedPackageIdentifier(md) : md,\n );\n return mods[md];\n } catch (e: any) {\n error = e as Error;\n }\n\n try {\n // the user requires a module which is not specified in the additional node modules\n // for backward compatibility we check if the module can simply be required directly before we fail (e.g., direct dependencies of JavaScript adapter)\n adapter.log.debug(`Try direct require of \"${md}\" as not specified in the additional dependencies`);\n mods[md] = require(md);\n\n return mods[md];\n } catch (e: any) {\n context.logError(name, `Error by loading module \"${md}\":`, error || e, 6);\n\n void adapter.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'require',\n });\n }\n },\n Buffer: Buffer,\n __engine: {\n __deprecatedWarnings: [],\n __subscriptionsObject: 0,\n __subscriptions: 0,\n __subscriptionsMessage: 0,\n __subscriptionsFile: 0,\n __subscriptionsLog: 0,\n __schedules: 0,\n },\n\n $: function (selector: string): iobJS.QueryResult {\n // following is supported\n // 'type[commonAttr=something]', 'id[commonAttr=something]', id(enumName=\"something\")', id{nativeName=\"something\"}\n // Type can be state, channel or device\n // Attr can be any of the common attributes and can have wildcards *\n // E.g. \"state[id='hm-rpc.0.*]\" or \"hm-rpc.0.*\" returns all states of adapter instance hm-rpc.0\n // channel(room=\"Living room\") => all states in room \"Living room\"\n // channel{TYPE=BLIND}[state.id=*.LEVEL]\n // Switch all states with .STATE of channels with role \"switch\" in \"Wohnzimmer\" to false\n // $('channel[role=switch][state.id=*.STATE](rooms=Wohnzimmer)').setState(false);\n //\n // Following functions are possible, setValue, getValue (only from first), on, each\n\n // Todo CACHE!!!\n\n const result: iobJS.QueryResult = {} as iobJS.QueryResult;\n\n let name = '';\n const commonStrings: string[] = [];\n const enumStrings: string[] = [];\n const nativeStrings: string[] = [];\n let isInsideName = true;\n let isInsideCommonString = false;\n let isInsideEnumString = false;\n let isInsideNativeString = false;\n let currentCommonString = '';\n let currentNativeString = '';\n let currentEnumString = '';\n\n // parse string\n let selectorHasInvalidType = false;\n if (typeof selector === 'string') {\n for (let i = 0; i < selector.length; i++) {\n if (selector[i] === '{') {\n isInsideName = false;\n if (isInsideCommonString || isInsideEnumString || isInsideNativeString) {\n // Error\n break;\n }\n isInsideNativeString = true;\n } else if (selector[i] === '}') {\n isInsideNativeString = false;\n nativeStrings.push(currentNativeString);\n currentNativeString = '';\n } else if (selector[i] === '[') {\n isInsideName = false;\n if (isInsideCommonString || isInsideEnumString || isInsideNativeString) {\n // Error\n break;\n }\n isInsideCommonString = true;\n } else if (selector[i] === ']') {\n isInsideCommonString = false;\n commonStrings.push(currentCommonString);\n currentCommonString = '';\n } else if (selector[i] === '(') {\n isInsideName = false;\n if (isInsideCommonString || isInsideEnumString || isInsideNativeString) {\n // Error\n break;\n }\n isInsideEnumString = true;\n } else if (selector[i] === ')') {\n isInsideEnumString = false;\n enumStrings.push(currentEnumString);\n currentEnumString = '';\n } else if (isInsideName) {\n name += selector[i];\n } else if (isInsideCommonString) {\n currentCommonString += selector[i];\n } else if (isInsideEnumString) {\n currentEnumString += selector[i];\n } else if (isInsideNativeString) {\n currentNativeString += selector[i];\n } //else {\n // some error\n //}\n }\n } else {\n selectorHasInvalidType = true;\n }\n\n // If some error in the selector\n if (selectorHasInvalidType || isInsideEnumString || isInsideCommonString || isInsideNativeString) {\n result.length = 0;\n result.toArray = function () {\n return [];\n };\n result.each = function () {\n return this;\n };\n result.getState = function () {\n return null;\n };\n result.setState = function () {\n return this;\n };\n result.on = function () {\n return this;\n };\n }\n\n if (isInsideEnumString) {\n sandbox.log(`Invalid selector: enum close bracket \")\" cannot be found in \"${selector}\"`, 'warn');\n result.error = 'Invalid selector: enum close bracket \")\" cannot be found';\n return result;\n } else if (isInsideCommonString) {\n sandbox.log(`Invalid selector: common close bracket \"]\" cannot be found in \"${selector}\"`, 'warn');\n result.error = 'Invalid selector: common close bracket \"]\" cannot be found';\n return result;\n } else if (isInsideNativeString) {\n sandbox.log(`Invalid selector: native close bracket \"}\" cannot be found in \"${selector}\"`, 'warn');\n result.error = 'Invalid selector: native close bracket \"}\" cannot be found';\n return result;\n } else if (selectorHasInvalidType) {\n const message = `Invalid selector: selector must be a string but is of type ${typeof selector}`;\n sandbox.log(message, 'warn');\n result.error = message;\n return result;\n }\n\n let commonSelectors: Selector[] = commonStrings.map(selector => splitSelectorString(selector));\n let nativeSelectors: Selector[] = nativeStrings.map(selector => splitSelectorString(selector));\n const enumSelectorObjects: Selector[] = enumStrings.map(_enum => splitSelectorString(_enum));\n const allSelectors: Selector[] = commonSelectors.concat(nativeSelectors, enumSelectorObjects);\n\n // These selectors match the state or object ID and don't belong in the common/native selectors\n // Also use RegExp for the ID matching\n const stateIdSelectors: Selector[] = allSelectors\n .filter(selector => selector.attr === 'state.id')\n .map(selector => addRegExpToIdAttrSelectors(selector));\n const objectIdSelectors: Selector[] = allSelectors\n .filter(selector => selector.attr === 'id')\n .map(selector => addRegExpToIdAttrSelectors(selector));\n commonSelectors = commonSelectors.filter(\n selector => selector.attr !== 'state.id' && selector.attr !== 'id',\n );\n nativeSelectors = nativeSelectors.filter(\n selector => selector.attr !== 'state.id' && selector.attr !== 'id',\n );\n const enumSelectors: string[] = enumSelectorObjects\n .filter(selector => selector.attr !== 'state.id' && selector.attr !== 'id')\n // enums are filtered by their enum id, so transform the selector into that\n .map(selector => `enum.${selector.attr}.${selector.value}`);\n\n name = name.trim();\n\n if (name === 'channel' || name === 'device') {\n // Fill the channels and devices objects with the IDs of all their states,\n // so we can loop over them afterward\n if (!context.channels || !context.devices) {\n context.channels = {};\n context.devices = {};\n for (const _id of Object.keys(objects)) {\n if (objects[_id].type === 'state') {\n const parts = _id.split('.');\n parts.pop();\n const chn = parts.join('.');\n\n parts.pop();\n const dev = parts.join('.');\n\n context.devices[dev] = context.devices[dev] || new Set();\n context.devices[dev].add(_id);\n\n context.channels[chn] = context.channels[chn] || new Set();\n context.channels[chn].add(_id);\n }\n }\n }\n }\n\n if (name === 'schedule') {\n if (!context.schedules) {\n context.schedules = [];\n for (const _id of Object.keys(objects)) {\n if (objects[_id].type === 'schedule') {\n context.schedules.push(_id);\n }\n }\n }\n }\n\n /**\n * applies all selectors targeting an object or state ID\n */\n function applyIDSelectors(objId: string, selectors: Selector[]): boolean {\n // Only keep the ID if it matches every ID selector\n return selectors.every(selector => !selector.idRegExp || selector.idRegExp.test(objId));\n }\n\n /**\n * Applies all selectors targeting the Object common properties\n *\n * @param objId - The ID of the object in question\n */\n function applyCommonSelectors(objId: string): boolean {\n const obj = objects[objId];\n if (!obj?.common) {\n return false;\n }\n const objCommon = obj.common;\n\n // make sure this object satisfies all selectors\n return commonSelectors.every(\n selector =>\n // ensure a property exists\n (selector.value === undefined && objCommon[selector.attr] !== undefined) ||\n // or match exact values\n looselyEqualsString(objCommon[selector.attr], selector.value),\n );\n }\n\n /**\n * Applies all selectors targeting the Object native properties\n *\n * @param objId - The ID of the object in question\n */\n function applyNativeSelectors(objId: string): boolean {\n const obj = objects[objId];\n if (!obj || !obj.native) {\n return false;\n }\n const objNative = obj.native;\n // make sure this object satisfies all selectors\n return nativeSelectors.every(\n selector =>\n // ensure a property exists\n (selector.value === undefined && objNative[selector.attr] !== undefined) ||\n // or match exact values\n looselyEqualsString(objNative[selector.attr], selector.value),\n );\n }\n\n /**\n * Applies all selectors targeting the Objects enums\n *\n * @param objId - The ID of the object in question\n */\n function applyEnumSelectors(objId: string): boolean {\n const enumIds: string[] = [];\n eventObj.getObjectEnumsSync(context, objId, enumIds);\n // make sure this object satisfies all selectors\n return enumSelectors.every(_enum => enumIds.includes(_enum));\n }\n\n let res: string[];\n\n if (name === 'schedule') {\n res = context.schedules || [];\n if (objectIdSelectors.length) {\n res = res.filter(channelId => applyIDSelectors(channelId, objectIdSelectors));\n }\n\n // filter out those that don't match every common selector\n if (commonSelectors.length) {\n res = res.filter(id => applyCommonSelectors(id));\n }\n\n // filter out those that don't match every native selector\n if (nativeSelectors.length) {\n res = res.filter(id => applyNativeSelectors(id));\n }\n\n // filter out those that don't match every enum selector\n if (enumSelectors.length) {\n res = res.filter(channelId => applyEnumSelectors(channelId));\n }\n } else if (name === 'channel') {\n if (!context.channels) {\n // TODO: fill the channels and maintain them on all places where context.stateIds will be changed\n }\n const channels = context.channels || {};\n\n // go through all channels\n res = Object.keys(channels);\n // filter out those that don't match every ID selector for the channel ID\n if (objectIdSelectors.length) {\n res = res.filter(channelId => applyIDSelectors(channelId, objectIdSelectors));\n }\n // filter out those that don't match every common selector\n if (commonSelectors.length) {\n res = res.filter(channelId => applyCommonSelectors(channelId));\n }\n // filter out those that don't match every native selector\n if (nativeSelectors.length) {\n res = res.filter(channelId => applyNativeSelectors(channelId));\n }\n // filter out those that don't match every enum selector\n if (enumSelectors.length) {\n res = res.filter(channelId => applyEnumSelectors(channelId));\n }\n\n // retrieve the state ID collection for all remaining channels\n res = res\n .map(id => [...(channels[id] || [])])\n // and flatten the array to get only the state IDs\n .reduce((acc, next) => acc.concat(next), []);\n\n // now filter out those that don't match every ID selector for the state ID\n if (stateIdSelectors.length) {\n res = res.filter(stateId => applyIDSelectors(stateId, stateIdSelectors));\n }\n } else if (name === 'device') {\n if (!context.devices) {\n // TODO: fill the devices and maintain them on all places where context.stateIds will be changed\n }\n\n const devices = context.devices || {};\n\n // go through all devices\n res = Object.keys(devices);\n // filter out those that don't match every ID selector for the channel ID\n if (objectIdSelectors.length) {\n res = res.filter(deviceId => applyIDSelectors(deviceId, objectIdSelectors));\n }\n\n // filter out those that don't match every common selector\n if (commonSelectors.length) {\n res = res.filter(deviceId => applyCommonSelectors(deviceId));\n }\n\n // filter out those that don't match every native selector\n if (nativeSelectors.length) {\n res = res.filter(deviceId => applyNativeSelectors(deviceId));\n }\n\n // filter out those that don't match every enum selector\n if (enumSelectors.length) {\n res = res.filter(deviceId => applyEnumSelectors(deviceId));\n }\n\n // retrieve the state ID collection for all remaining devices\n res = res\n .map(id => [...(devices[id] || [])])\n // and flatten the array to get only the state IDs\n .reduce((acc, next) => acc.concat(next), []);\n\n // now filter out those that don't match every ID selector for the state ID\n if (stateIdSelectors.length) {\n res = res.filter(stateId => applyIDSelectors(stateId, stateIdSelectors));\n }\n } else {\n // go through all states\n res = context.stateIds;\n // if the \"name\" is not state, then we filter for the ID as well\n if (name && name !== 'state') {\n const r = new RegExp(`^${name.replace(/\\./g, '\\\\.').replace(/\\*/g, '.*')}$`);\n res = res.filter(id => r.test(id));\n }\n\n // filter out those that don't match every ID selector for the object ID or the state ID\n if (objectIdSelectors.length) {\n res = res.filter(id => applyIDSelectors(id, objectIdSelectors));\n }\n\n // filter out those that don't match every ID selector for the state ID\n if (stateIdSelectors.length) {\n res = res.filter(id => applyIDSelectors(id, stateIdSelectors));\n }\n\n // filter out those that don't match every common selector\n if (commonSelectors.length) {\n res = res.filter(id => applyCommonSelectors(id));\n }\n\n // filter out those that don't match every native selector\n if (nativeSelectors.length) {\n res = res.filter(id => applyNativeSelectors(id));\n }\n\n // filter out those that don't match every enum selector\n if (enumSelectors.length) {\n res = res.filter(id => applyEnumSelectors(id));\n }\n }\n\n // IO-2: O(1) deduplication via Set instead of O(n²) resUnique.includes()\n const resUnique: string[] = [...new Set(res)];\n\n for (let i = 0; i < resUnique.length; i++) {\n result[i] = resUnique[i];\n }\n result.length = resUnique.length;\n\n // Implementing the Symbol.iterator contract makes the query result iterable\n result[Symbol.iterator] = function* () {\n for (let i = 0; i < result.length; i++) {\n yield result[i];\n }\n };\n result.toArray = function (): string[] {\n return [...resUnique];\n };\n result.each = function (callback: (id: string, index: number) => void | false): iobJS.QueryResult {\n if (typeof callback === 'function') {\n let r: boolean | void;\n for (let i = 0; i < this.length; i++) {\n r = callback(result[i], i);\n if (r === false) {\n break;\n }\n }\n }\n return this;\n };\n // @ts-expect-error fix later\n result.getState = function (\n callback?: iobJS.GetStateCallback,\n ): void | null | undefined | iobJS.TypedState | iobJS.AbsentState {\n if ((adapter.config as JavaScriptAdapterConfig).subscribe) {\n if (typeof callback !== 'function') {\n sandbox.log('You cannot use this function synchronous', 'error');\n } else {\n void adapter.getForeignState(\n this[0],\n (err: Error | null | undefined, state?: ioBroker.State | null): void => {\n void callback(\n err,\n context.convertBackStringifiedValues(this[0], state) as\n iobJS.TypedState | iobJS.AbsentState,\n );\n },\n );\n }\n } else {\n if (!this[0]) {\n return null;\n }\n if (context.interimStateValues[this[0]] !== undefined) {\n return context.convertBackStringifiedValues(this[0], context.interimStateValues[this[0]]) as\n iobJS.TypedState | iobJS.AbsentState;\n }\n return context.convertBackStringifiedValues(this[0], states[this[0]]) as\n iobJS.TypedState | iobJS.AbsentState;\n }\n };\n result.getStateAsync = async function (): Promise<\n iobJS.TypedState | iobJS.AbsentState | null | undefined\n > {\n if ((adapter.config as JavaScriptAdapterConfig).subscribe) {\n const state = await adapter.getForeignStateAsync(this[0]);\n return context.convertBackStringifiedValues(this[0], state) as\n iobJS.TypedState | iobJS.AbsentState | null;\n }\n if (!this[0]) {\n return null;\n }\n if (context.interimStateValues[this[0]] !== undefined) {\n return context.convertBackStringifiedValues(this[0], context.interimStateValues[this[0]]) as\n iobJS.TypedState | iobJS.AbsentState | null;\n }\n return context.convertBackStringifiedValues(this[0], states[this[0]]) as\n iobJS.TypedState | iobJS.AbsentState | null;\n };\n result.setState = function (\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean | 'false' | 'true' | null | iobJS.SetStateCallback,\n callback?: iobJS.SetStateCallback,\n ) {\n if (typeof isAck === 'function') {\n callback = isAck;\n isAck = undefined;\n }\n void result\n .setStateAsync(state, isAck as boolean | 'false' | 'true')\n .then(() => typeof callback === 'function' && callback());\n return this;\n };\n result.setStateAsync = async function (\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean,\n ): Promise {\n for (let i = 0; i < this.length; i++) {\n await sandbox.setStateAsync(this[i], state, isAck);\n }\n };\n result.setStateChanged = function (\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean,\n callback?: () => void,\n ) {\n if (typeof isAck === 'function') {\n callback = isAck;\n isAck = undefined;\n }\n void result.setStateChangedAsync(state, isAck).then(() => typeof callback === 'function' && callback());\n return this;\n };\n result.setStateChangedAsync = async function (\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean,\n ): Promise {\n for (let i = 0; i < this.length; i++) {\n await sandbox.setStateChangedAsync(this[i], state, isAck);\n }\n };\n result.setStateDelayed = function (\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck: boolean | number | undefined,\n delay?: number | boolean,\n clearRunning?: boolean | (() => void),\n callback?: () => void,\n ) {\n if (typeof isAck !== 'boolean') {\n callback = clearRunning as () => void;\n clearRunning = delay as boolean;\n delay = isAck;\n isAck = undefined;\n }\n if (typeof delay !== 'number') {\n callback = clearRunning as () => void;\n clearRunning = delay;\n delay = 0;\n }\n if (typeof clearRunning !== 'boolean') {\n callback = clearRunning;\n clearRunning = true;\n }\n let count = this.length;\n for (let i = 0; i < this.length; i++) {\n sandbox.setStateDelayed(this[i], state, isAck, delay, clearRunning, () => {\n if (!--count && typeof callback === 'function') {\n callback();\n }\n });\n }\n return this;\n };\n result.on = function (callbackOrId: string | ((data: any) => void), value?: any) {\n for (let i = 0; i < this.length; i++) {\n sandbox.subscribe(this[i], callbackOrId, value);\n }\n return this;\n };\n return result;\n },\n log: function (msg: string, severity?: ioBroker.LogLevel): void {\n severity ||= 'info';\n\n // disable log in log handler (prevent endless loops)\n if (sandbox.logHandler && (sandbox.logHandler === severity || sandbox.logHandler === '*')) {\n return;\n }\n\n if (!adapter.log[severity]) {\n msg = `Unknown severity level \"${severity}\" by log of [${msg}]`;\n severity = 'warn';\n }\n\n if (msg && typeof msg !== 'string') {\n msg = mods.util.format(msg);\n }\n\n if (logCollector) {\n logCollector(severity, msg);\n } else if (debugMode) {\n console.log(`${severity}$$${name}$$${msg}`, Date.now());\n } else {\n adapter.log[severity](`${name}: ${msg}`);\n }\n },\n onLog: function (severity: ioBroker.LogLevel, callback: (info: ioBroker.LogMessage) => void): number {\n if (!['info', 'error', 'debug', 'silly', 'warn', '*'].includes(severity)) {\n sandbox.log(`Unknown severity \"${severity}\"`, 'warn');\n return 0;\n }\n if (typeof callback !== 'function') {\n sandbox.log(`Invalid callback for onLog`, 'warn');\n return 0;\n }\n\n const handler = { id: _handlerIdCounter++, cb: callback, sandbox, severity };\n context.logSubscriptions[sandbox.scriptName] = context.logSubscriptions[sandbox.scriptName] || [];\n context.logSubscriptions[sandbox.scriptName].push(handler);\n context.updateLogSubscriptions();\n\n sandbox.__engine.__subscriptionsLog += 1;\n\n if (sandbox.verbose) {\n sandbox.log(\n `onLog(severity=${severity}, id=${handler.id}) - logSubscriptions=${sandbox.__engine.__subscriptionsLog}`,\n 'info',\n );\n }\n\n if (\n sandbox.__engine.__subscriptionsLog %\n (adapter.config as JavaScriptAdapterConfig).maxTriggersPerScript ===\n 0\n ) {\n sandbox.log(\n `More than ${sandbox.__engine.__subscriptionsLog} log subscriptions registered. Check your script!`,\n 'warn',\n );\n }\n\n return handler.id;\n },\n onLogUnregister: function (\n idOrCallbackOrSeverity: number | ioBroker.LogLevel | ((info: ioBroker.LogMessage) => void),\n ): boolean {\n let found = false;\n\n if (context.logSubscriptions?.[sandbox.scriptName]) {\n if (sandbox.verbose) {\n sandbox.log(\n `onLogUnregister(idOrCallbackOrSeverity=${JSON.stringify(idOrCallbackOrSeverity)}) - logSubscriptions=${sandbox.__engine.__subscriptionsLog}`,\n 'info',\n );\n }\n\n for (let i = 0; i < context.logSubscriptions[sandbox.scriptName].length; i++) {\n if (\n context.logSubscriptions[sandbox.scriptName][i].cb === idOrCallbackOrSeverity ||\n context.logSubscriptions[sandbox.scriptName][i].id === idOrCallbackOrSeverity ||\n context.logSubscriptions[sandbox.scriptName][i].severity === idOrCallbackOrSeverity\n ) {\n if (sandbox.verbose) {\n sandbox.log(\n `onLogUnregister(idOrCallbackOrSeverity=${JSON.stringify(idOrCallbackOrSeverity)}, removing id=${context.logSubscriptions[sandbox.scriptName][i].id})`,\n 'info',\n );\n }\n\n context.logSubscriptions[sandbox.scriptName].splice(i, 1);\n i--;\n sandbox.__engine.__subscriptionsLog--;\n\n found = true;\n\n // if deletion via ID\n if (typeof idOrCallbackOrSeverity === 'number') {\n break;\n }\n } else if (sandbox.verbose) {\n sandbox.log(\n `onLogUnregister(idOrCallbackOrSeverity=${JSON.stringify(idOrCallbackOrSeverity)}) NOT = ${JSON.stringify(context.logSubscriptions[sandbox.scriptName][i])}`,\n 'info',\n );\n }\n }\n }\n\n context.updateLogSubscriptions();\n\n return found;\n },\n exec: function (\n cmd: string,\n options?: ExecOptions | ((error: Error | null | string, stdout?: string, stderr?: string) => void),\n callback?: (error: Error | null | string, stdout?: string, stderr?: string) => void,\n ): undefined | ChildProcess {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (!(adapter.config as JavaScriptAdapterConfig).enableExec) {\n const error = 'exec is not available. Please enable \"Enable Exec\" option in instance settings';\n sandbox.log(error, 'error');\n\n if (typeof callback === 'function') {\n setImmediate(callback, error, undefined, undefined);\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log(`exec(cmd=${cmd})`, 'info');\n }\n\n if (debug) {\n sandbox.log(words._('Command %s was not executed, while debug mode is active', cmd), 'warn');\n if (typeof callback === 'function') {\n setImmediate(function () {\n callback(null, '', '');\n });\n }\n } else {\n return mods.child_process.exec(\n cmd,\n options,\n (error: Error | null, stdout: string, stderr: string): void => {\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, error, stdout, stderr);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n },\n );\n }\n }\n },\n email: function (msg: string | SendMailOptions): void {\n if (sandbox.verbose) {\n sandbox.log(`email(msg=${JSON.stringify(msg)})`, 'info');\n }\n sandbox.log(`email(msg=${JSON.stringify(msg)}) is deprecated. Please use sendTo instead!`, 'warn');\n adapter.sendTo('email', msg);\n },\n pushover: function (msg: string | PushoverOptions): void {\n if (sandbox.verbose) {\n sandbox.log(`pushover(msg=${JSON.stringify(msg)})`, 'info');\n }\n sandbox.log(`pushover(msg=${JSON.stringify(msg)}) is deprecated. Please use sendTo instead!`, 'warn');\n adapter.sendTo('pushover', msg);\n },\n httpGet: function (\n url: string,\n options:\n | {\n timeout?: number;\n responseType?: ResponseType;\n headers?: Record;\n basicAuth?: { user: string; password: string } | null;\n bearerAuth?: string;\n validateCertificate?: boolean;\n }\n | ((\n error: Error | null,\n result: {\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n },\n ) => void),\n callback?: (\n error: Error | null,\n result: {\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n },\n ) => void,\n ): void {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n const config = {\n ...getHttpRequestConfig(url, options, context.allowSelfSignedCerts),\n method: 'get',\n };\n\n if (sandbox.verbose) {\n sandbox.log(`httpGet(config=${JSON.stringify(config)})`, 'info');\n }\n\n const startTime = Date.now();\n\n mods.axios\n .default(config)\n .then((response: AxiosResponse) => {\n const responseTime = Date.now() - startTime;\n\n if (sandbox.verbose) {\n sandbox.log(`httpGet(url=${url}, responseTime=${responseTime}ms)`, 'info');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, null, {\n statusCode: response.status,\n data: response.data,\n headers: response.headers as Record,\n responseTime,\n });\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n })\n .catch((error: any) => {\n const responseTime = Date.now() - startTime;\n\n sandbox.log(`httpGet(url=${url}, error=${error.message})`, 'error');\n\n if (typeof callback === 'function') {\n let result: {\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n } = {\n statusCode: null,\n data: null,\n headers: {},\n responseTime,\n };\n\n if (error.response) {\n result = {\n statusCode: error.response.status,\n data: error.response.data,\n headers: error.response.headers,\n responseTime,\n };\n }\n\n try {\n callback.call(sandbox, error.message, result);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n });\n },\n httpPost: function (\n url: string,\n data: any,\n options:\n | {\n timeout?: number;\n responseType?: ResponseType;\n headers?: Record;\n basicAuth?: { user: string; password: string } | null;\n bearerAuth?: string;\n validateCertificate?: boolean;\n }\n | ((\n error: Error | null,\n result: {\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n },\n ) => void),\n callback?: (\n error: Error | null,\n result: {\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n },\n ) => void,\n ): void {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n const config = {\n ...getHttpRequestConfig(url, options, context.allowSelfSignedCerts),\n method: 'post',\n data,\n };\n\n if (sandbox.verbose) {\n sandbox.log(`httpPost(config=${JSON.stringify(config)}, data=${data})`, 'info');\n }\n\n const startTime = Date.now();\n\n mods.axios\n .default(config)\n .then((response: AxiosResponse) => {\n const responseTime = Date.now() - startTime;\n\n if (sandbox.verbose) {\n sandbox.log(`httpPost(url=${url}, responseTime=${responseTime}ms)`, 'info');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, null, {\n statusCode: response.status,\n data: response.data,\n headers: response.headers,\n responseTime,\n });\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n })\n .catch((error: unknown) => {\n const responseTime = Date.now() - startTime;\n\n sandbox.log(`httpPost(url=${url}, error=${(error as Error).message})`, 'error');\n\n if (typeof callback === 'function') {\n let result: {\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n } = {\n statusCode: null,\n data: null,\n headers: {},\n responseTime,\n };\n const response: AxiosResponse | undefined = (error as AxiosError).response;\n\n if (response) {\n result = {\n statusCode: response.status,\n data: response.data,\n headers: response.headers,\n responseTime,\n };\n }\n\n try {\n callback.call(sandbox, new Error((error as AxiosError).message), result);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n });\n },\n createTempFile: function (fileName: string, data: Buffer | string): undefined | string {\n const os = mods.os;\n const path = mods.path;\n const fs = mods.fs;\n\n let tempDirPath = context.tempDirectories?.[sandbox.scriptName];\n\n if (!tempDirPath) {\n // create temp directory\n tempDirPath = fs.mkdtempSync(\n path.join(os.tmpdir(), `${sandbox.scriptName.substring(SCRIPT_CODE_MARKER.length)}-`),\n );\n context.tempDirectories[sandbox.scriptName] = tempDirPath;\n\n if (sandbox.verbose) {\n sandbox.log(\n `createTempFile(fileName=${fileName}, tempDirPath=${tempDirPath}) created temp directory in ${os.tmpdir()}`,\n 'info',\n );\n }\n }\n\n const filePath = path.join(tempDirPath, fileName);\n\n // is sub dir?\n const fileDir = path.dirname(filePath);\n if (!fs.existsSync(fileDir)) {\n fs.mkdirSync(fileDir, { recursive: true });\n }\n\n if (typeof data === 'undefined') {\n sandbox.log(\n `createTempFile(fileName=${fileName}, fileDir=${fileDir}, filePath=${filePath}) data is undefined, file not created!`,\n 'error',\n );\n\n return undefined;\n }\n\n fs.writeFileSync(filePath, data);\n if (sandbox.verbose) {\n sandbox.log(`createTempFile(fileName=${fileName}, fileDir=${fileDir}, filePath=${filePath})`, 'info');\n }\n\n return filePath;\n },\n subscribe: function (\n pattern:\n | TimeRule\n | AstroRule\n | Pattern\n | SchedulerRule\n | string\n | (TimeRule | AstroRule | Pattern | SchedulerRule | string)[],\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n callbackOrChangeTypeOrId: string | ChangeType | ((event?: EventObj) => void),\n value?: any,\n ):\n | SubscriptionResult\n | IobSchedule\n | string\n | null\n | undefined\n | (SubscriptionResult | IobSchedule | string | null | undefined)[] {\n // If a schedule object is given\n if (\n (typeof pattern === 'string' && pattern[0] === '{') ||\n (typeof pattern === 'object' && (pattern as SchedulerRule).period)\n ) {\n return sandbox.schedule(pattern as SchedulerRule, callbackOrChangeTypeOrId as () => void);\n }\n // If an array of schedules is given\n if (pattern && Array.isArray(pattern)) {\n const result: (IobSchedule | string | null | undefined)[] = [];\n for (const p of pattern) {\n result.push(\n sandbox.subscribe(p, callbackOrChangeTypeOrId, value) as\n IobSchedule | string | null | undefined,\n );\n }\n return result;\n }\n\n // detect subscribe('id', 'any', (obj) => {})\n let oPattern: Pattern;\n if (\n (typeof pattern === 'string' || pattern instanceof RegExp) &&\n typeof callbackOrChangeTypeOrId === 'string' &&\n typeof value === 'function'\n ) {\n oPattern = { id: pattern, change: callbackOrChangeTypeOrId as ChangeType };\n callbackOrChangeTypeOrId = value;\n value = undefined;\n } else {\n oPattern = pattern as Pattern;\n }\n\n if (oPattern?.id && Array.isArray(oPattern.id)) {\n const result: (IobSchedule | string | null | undefined)[] = [];\n for (let t = 0; t < oPattern.id.length; t++) {\n // IO-4: Spread instead of JSON.parse(JSON.stringify()) – no deep clone needed (only primitive fields)\n const pa: Pattern = { ...oPattern, id: oPattern.id[t] };\n result.push(\n sandbox.subscribe(pa, callbackOrChangeTypeOrId, value) as\n IobSchedule | string | null | undefined,\n );\n }\n return result;\n }\n\n // try to detect astro or cron (by spaces)\n if (isObject(pattern) || (typeof pattern === 'string' && pattern.match(/[,/\\d*]+\\s[,/\\d*]+\\s[,/\\d*]+/))) {\n if ((pattern as AstroRule).astro) {\n return sandbox.schedule(pattern as AstroRule, callbackOrChangeTypeOrId as () => void);\n } else if ((pattern as TimeRule).time) {\n return sandbox.schedule(\n (pattern as TimeRule).time as string,\n callbackOrChangeTypeOrId as () => void,\n );\n }\n }\n\n let callback: undefined | ((obj: EventObj) => void);\n\n // source is set by regexp if defined as /regexp/\n if (!isObject(pattern) || pattern instanceof RegExp || (pattern as RegExp).source) {\n oPattern = { id: pattern as string | RegExp, change: 'ne' };\n }\n\n if (oPattern.id !== undefined && !oPattern.id) {\n sandbox.log(`Error by subscription (trigger): empty ID defined. All states matched.`, 'error');\n return;\n } else if (typeof oPattern.id === 'boolean' || typeof oPattern.id === 'number') {\n sandbox.log(`Error by subscription (trigger): Wrong ID of type boolean or number.`, 'error');\n return;\n }\n\n sandbox.__engine.__subscriptions += 1;\n\n if (\n sandbox.__engine.__subscriptions % (adapter.config as JavaScriptAdapterConfig).maxTriggersPerScript ===\n 0\n ) {\n sandbox.log(\n `More than ${sandbox.__engine.__subscriptions} subscriptions registered. Check your script!`,\n 'warn',\n );\n }\n\n if (oPattern.q === undefined) {\n oPattern.q = 0;\n }\n\n // add adapter namespace if nothing given\n if (oPattern.id && typeof oPattern.id === 'string' && !oPattern.id.includes('.')) {\n oPattern.id = `${adapter.namespace}.${oPattern.id}`;\n }\n\n if (typeof callbackOrChangeTypeOrId === 'function') {\n callback = callbackOrChangeTypeOrId;\n } else {\n if (typeof value === 'undefined') {\n callback = function (obj: EventObj) {\n sandbox.setState(callbackOrChangeTypeOrId, obj.newState.val);\n };\n } else {\n callback = function (/* obj */) {\n sandbox.setState(callbackOrChangeTypeOrId, value);\n };\n }\n }\n\n const subs: SubscriptionResult = {\n pattern: oPattern,\n callback: (obj: EventObj) => {\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, obj);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n },\n name,\n };\n\n // try to extract adapter\n if (oPattern.id && typeof oPattern.id === 'string') {\n const parts = oPattern.id.split('.');\n const a = `${parts[0]}.${parts[1]}`;\n const _adapter = `system.adapter.${a}`;\n\n if (objects[_adapter] && objects[_adapter].common && objects[_adapter].common.subscribable) {\n const alive = `system.adapter.${a}.alive`;\n context.adapterSubs[alive] = context.adapterSubs[alive] || new Set();\n\n // Set.has() is O(1) and automatically prevents duplicates\n const subExists = context.adapterSubs[alive].has(oPattern.id);\n\n if (!subExists) {\n context.adapterSubs[alive].add(oPattern.id);\n adapter.sendTo(a, 'subscribe', oPattern.id);\n }\n }\n }\n if (sandbox.verbose) {\n sandbox.log(`subscribe: ${JSON.stringify(subs)}`, 'info');\n }\n\n subscribePattern(script, oPattern.id as string);\n\n subs.patternCompareFunctions = getPatternCompareFunctions(oPattern);\n context.subscriptions.push(subs);\n\n // O(1) dispatch index: exact string IDs go into the map, everything else into the wildcard array\n if (isExactId(oPattern.id)) {\n if (!context.subscriptionsMap.has(oPattern.id)) {\n context.subscriptionsMap.set(oPattern.id, []);\n }\n context.subscriptionsMap.get(oPattern.id)!.push(subs);\n } else {\n context.subscriptionsWildcard.push(subs);\n }\n\n if (oPattern.enumName || oPattern.enumId) {\n context.isEnums = true;\n }\n return subs;\n },\n getSubscriptions: function (): Record {\n const result: Record = {};\n // Iterate over the O(1) dispatch index instead of the flat array\n for (const [id, bucket] of context.subscriptionsMap) {\n result[id] = bucket.map(s => ({ name: s.name, pattern: s.pattern }));\n }\n for (const s of context.subscriptionsWildcard) {\n const key = s.pattern.id as string;\n (result[key] ??= []).push({ name: s.name, pattern: s.pattern });\n }\n if (sandbox.verbose) {\n sandbox.log(`getSubscriptions() => ${JSON.stringify(result)}`, 'info');\n }\n return result;\n },\n getFileSubscriptions: function (): Record {\n const result: Record = {};\n for (let s = 0; s < context.subscriptionsFile.length; s++) {\n const key = `${context.subscriptionsFile[s].id}$%$${context.subscriptionsFile[s].fileNamePattern}`;\n result[key] = result[key] || [];\n result[key].push({\n name: context.subscriptionsFile[s].name,\n id: context.subscriptionsFile[s].id,\n fileNamePattern: context.subscriptionsFile[s].fileNamePattern,\n });\n }\n if (sandbox.verbose) {\n sandbox.log(`getFileSubscriptions() => ${JSON.stringify(result)}`, 'info');\n }\n return result;\n },\n adapterSubscribe: function (id: string): void {\n if (typeof id !== 'string') {\n sandbox.log(`adapterSubscribe: invalid type of id ${typeof id}`, 'error');\n return;\n }\n const parts = id.split('.');\n const _adapter = `system.adapter.${parts[0]}.${parts[1]}`;\n if (objects[_adapter]?.common?.subscribable) {\n const a = `${parts[0]}.${parts[1]}`;\n const alive = `system.adapter.${a}.alive`;\n context.adapterSubs[alive] = context.adapterSubs[alive] || new Set();\n context.adapterSubs[alive].add(id);\n if (sandbox.verbose) {\n sandbox.log(`adapterSubscribe: ${a} - ${id}`, 'info');\n }\n adapter.sendTo(a, 'subscribe', id);\n }\n },\n adapterUnsubscribe: function (\n idOrObject: string | SubscriptionResult | (string | SubscriptionResult)[],\n ): boolean | boolean[] {\n // todo: BF - it could be an error\n return sandbox.unsubscribe(idOrObject);\n },\n unsubscribe: function (\n idOrObject: string | SubscriptionResult | (string | SubscriptionResult)[],\n ): boolean | boolean[] {\n if (idOrObject && Array.isArray(idOrObject)) {\n const result: boolean[] = [];\n for (let t = 0; t < idOrObject.length; t++) {\n result.push(sandbox.unsubscribe(idOrObject[t]) as boolean);\n }\n return result;\n }\n\n if (sandbox.verbose) {\n sandbox.log(`adapterUnsubscribe(id=${JSON.stringify(idOrObject)})`, 'info');\n }\n\n if (isObject(idOrObject)) {\n for (let i = context.subscriptions.length - 1; i >= 0; i--) {\n if (context.subscriptions[i] === idOrObject) {\n const sub = context.subscriptions[i];\n unsubscribePattern(script, sub.pattern.id as string);\n context.subscriptions.splice(i, 1);\n // Remove from O(1) dispatch structures\n removeFromDispatchIndex(context, sub);\n sandbox.__engine.__subscriptions--;\n return true;\n }\n }\n return false;\n }\n let deleted = 0;\n for (let i = context.subscriptions.length - 1; i >= 0; i--) {\n if (context.subscriptions[i].name === name && context.subscriptions[i].pattern.id === idOrObject) {\n deleted++;\n const sub = context.subscriptions[i];\n unsubscribePattern(script, sub.pattern.id as string);\n context.subscriptions.splice(i, 1);\n // Remove from O(1) dispatch structures\n removeFromDispatchIndex(context, sub);\n sandbox.__engine.__subscriptions--;\n }\n }\n return !!deleted;\n },\n on: function (\n pattern:\n | TimeRule\n | AstroRule\n | Pattern\n | SchedulerRule\n | string\n | (TimeRule | AstroRule | Pattern | SchedulerRule | string)[],\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n callbackOrChangeTypeOrId: string | ChangeType | ((event?: EventObj) => void),\n value?: any,\n ):\n | SubscriptionResult\n | IobSchedule\n | string\n | null\n | undefined\n | (SubscriptionResult | IobSchedule | string | null | undefined)[] {\n return sandbox.subscribe(pattern, callbackOrChangeTypeOrId, value);\n },\n onEnumMembers: function (enumId: string, callback: (event?: EventObj) => void): void {\n if (enums.has(enumId)) {\n const subscriptions: Record = {};\n\n const init = (): void => {\n const obj: ioBroker.EnumObject = objects[enumId] as ioBroker.EnumObject;\n const common: ioBroker.EnumCommon = obj?.common ?? {};\n const members: string[] = common?.members ?? [];\n\n // Remove old subscriptions\n for (const [objId, subscription] of Object.entries(subscriptions)) {\n if (!members.includes(objId)) {\n sandbox.unsubscribe(subscription);\n delete subscriptions[objId];\n }\n }\n\n // Subscribe to all members of enum\n for (const objId of members) {\n // IO-6: `in` operator instead of Object.keys().includes() – O(1) instead of O(n)\n if (!(objId in subscriptions)) {\n if (objects?.[objId]?.type === 'state') {\n // Just subscribe to states\n subscriptions[objId] = sandbox.subscribe(objId, callback) as\n string | SubscriptionResult; // TODO: more features\n }\n }\n }\n\n if (sandbox.verbose) {\n sandbox.log(\n `onEnumMembers(id=${enumId}, members=${JSON.stringify(Object.keys(subscriptions))})`,\n 'info',\n );\n }\n };\n\n init();\n\n sandbox.subscribeObject(enumId, obj => obj && init());\n } else {\n sandbox.log(`onEnumMembers: enum with id \"${enumId}\" doesn't exists`, 'error');\n }\n },\n onFile: function (\n id: string,\n fileNamePattern: string | string[],\n withFileOrCallback:\n | boolean\n | ((id: string, fileName: string, size: number, file?: string | Buffer, mimeType?: string) => void),\n callback?: (\n id: string,\n fileName: string,\n size: number | null,\n file?: string | Buffer,\n mimeType?: string,\n ) => void,\n ): undefined | FileSubscriptionResult | (undefined | FileSubscriptionResult)[] {\n if (typeof withFileOrCallback === 'function') {\n callback = withFileOrCallback as (\n id: string,\n fileName: string,\n size: number | null,\n file?: string | Buffer,\n mimeType?: string,\n ) => void;\n withFileOrCallback = false;\n }\n\n if (!adapter.subscribeForeignFiles) {\n sandbox.log(\n 'onFile: your js-controller does not support yet onFile subscribes. Please update to js-controller@4.1.x or newer',\n 'warn',\n );\n return;\n }\n if (!id || !fileNamePattern) {\n sandbox.log(\n 'onFile: invalid parameters. Usage: onFile(\"vis.0\", \"main/*\", true, (id, fileName, size, file, mimeType) => {});',\n 'error',\n );\n return;\n }\n if (typeof callback !== 'function') {\n sandbox.offFile(id, fileNamePattern);\n return;\n }\n\n if (Array.isArray(fileNamePattern)) {\n return fileNamePattern.map(\n filePattern =>\n sandbox.onFile(id, filePattern, withFileOrCallback, callback) as\n undefined | FileSubscriptionResult,\n );\n }\n\n sandbox.__engine.__subscriptionsFile += 1;\n\n if (sandbox.verbose) {\n sandbox.log(\n `onFile(id=${id}, fileNamePattern=${fileNamePattern}) - fileSubscriptions=${sandbox.__engine.__subscriptionsFile}`,\n 'info',\n );\n }\n\n if (\n sandbox.__engine.__subscriptionsFile %\n (adapter.config as JavaScriptAdapterConfig).maxTriggersPerScript ===\n 0\n ) {\n sandbox.log(\n `More than ${sandbox.__engine.__subscriptionsFile} file subscriptions registered. Check your script!`,\n 'warn',\n );\n }\n\n let idRegEx: RegExp | undefined;\n let fileRegEx: RegExp | undefined;\n if (id.includes('*')) {\n idRegEx = new RegExp(pattern2RegEx(id));\n }\n if (fileNamePattern.includes('*')) {\n fileRegEx = new RegExp(pattern2RegEx(fileNamePattern));\n }\n\n const subs: FileSubscriptionResult = {\n id,\n fileNamePattern,\n withFile: withFileOrCallback,\n idRegEx,\n fileRegEx,\n callback: (id: string, fileName: string, size: number | null, withFile: boolean): void => {\n try {\n if (sandbox.verbose) {\n sandbox.log(`onFile changed(id=${id}, fileName=${fileName}, size=${size})`, 'info');\n }\n\n if (withFile && (size || 0) > 0) {\n adapter\n .readFileAsync(id, fileName)\n .then(data => {\n try {\n callback.call(sandbox, id, fileName, size, data.file, data.mimeType);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n })\n .catch(error => errorInCallback(error));\n } else {\n callback.call(sandbox, id, fileName, size);\n }\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n },\n name,\n };\n\n context.subscriptionsFile.push(subs);\n subscribeFile(script, id, fileNamePattern);\n return subs;\n },\n offFile: function (\n idOrObject: FileSubscriptionResult | string | (FileSubscriptionResult | string)[],\n fileNamePattern?: string | string[],\n ): boolean | boolean[] {\n if (!adapter.unsubscribeForeignFiles) {\n sandbox.log(\n 'offFile: your js-controller does not support yet file unsubscribes. Please update to js-controller@4.1.x or newer',\n 'warn',\n );\n return false;\n }\n\n if (sandbox.verbose) {\n sandbox.log(\n `offFile(idOrObject=${JSON.stringify(idOrObject)}, fileNamePattern=${JSON.stringify(fileNamePattern)}) - fileSubscriptions=${sandbox.__engine.__subscriptionsFile}`,\n 'info',\n );\n }\n\n if (idOrObject && typeof idOrObject === 'object') {\n if (Array.isArray(idOrObject)) {\n const result: boolean[] = [];\n for (let t = 0; t < idOrObject.length; t++) {\n result.push(sandbox.offFile(idOrObject[t]) as boolean);\n }\n return result;\n }\n for (let i = context.subscriptionsFile.length - 1; i >= 0; i--) {\n if (context.subscriptionsFile[i] === idOrObject) {\n unsubscribeFile(\n script,\n context.subscriptionsFile[i].id,\n context.subscriptionsFile[i].fileNamePattern,\n );\n\n if (sandbox.verbose) {\n sandbox.log(\n `offFile(type=object, fileNamePattern=${JSON.stringify(fileNamePattern)}, removing id=${context.subscriptionsFile[i].id})`,\n 'info',\n );\n }\n\n context.subscriptionsFile.splice(i, 1);\n sandbox.__engine.__subscriptionsFile--;\n return true;\n }\n }\n return false;\n }\n\n if (fileNamePattern && Array.isArray(fileNamePattern)) {\n const result: boolean[] = [];\n for (let t = 0; t < fileNamePattern.length; t++) {\n result.push(sandbox.offFile(idOrObject, fileNamePattern[t]) as boolean);\n }\n return result;\n }\n\n let deleted = 0;\n for (let i = context.subscriptionsFile.length - 1; i >= 0; i--) {\n if (\n context.subscriptionsFile[i].id === idOrObject &&\n context.subscriptionsFile[i].fileNamePattern === fileNamePattern\n ) {\n deleted++;\n unsubscribeFile(\n script,\n context.subscriptionsFile[i].id,\n context.subscriptionsFile[i].fileNamePattern,\n );\n\n if (sandbox.verbose) {\n sandbox.log(\n `offFile(type=string, fileNamePattern=${fileNamePattern}, removing id=${context.subscriptionsFile[i].id})`,\n 'info',\n );\n }\n\n context.subscriptionsFile.splice(i, 1);\n sandbox.__engine.__subscriptionsFile--;\n }\n }\n return !!deleted;\n },\n /** Registers a one-time subscription which automatically unsubscribes after the first invocation */\n once: function (\n pattern:\n | TimeRule\n | AstroRule\n | Pattern\n | SchedulerRule\n | string\n | (TimeRule | AstroRule | Pattern | SchedulerRule | string)[],\n callback?: (event?: EventObj) => void,\n ): string | SubscriptionResult | Promise {\n function _once(cb: (obj?: EventObj) => void): string | SubscriptionResult {\n // eslint-disable-next-line prefer-const\n let subscription: string | SubscriptionResult;\n const handler = (obj?: EventObj): void => {\n subscription && sandbox.unsubscribe(subscription);\n typeof cb === 'function' && cb(obj);\n };\n subscription = sandbox.subscribe(pattern, handler) as string | SubscriptionResult;\n return subscription;\n }\n\n if (typeof callback === 'function') {\n // Callback-style: once(\"id\", (obj) => { ... })\n return _once(callback);\n }\n\n // Promise-style: once(\"id\").then(obj => { ... })\n return new Promise(resolve => _once(resolve));\n },\n schedule: function (\n pattern: SchedulerRule | AstroRule | Date | string,\n callback: () => void,\n ): IobSchedule | string | null | undefined {\n if (typeof callback !== 'function') {\n sandbox.log(`schedule callback missing`, 'error');\n return null;\n }\n\n if (\n (typeof pattern === 'string' && pattern[0] === '{') ||\n (typeof pattern === 'object' && (pattern as SchedulerRule).period)\n ) {\n if (sandbox.verbose) {\n sandbox.log(\n `schedule(wizard=${typeof pattern === 'object' ? JSON.stringify(pattern) : pattern})`,\n 'info',\n );\n }\n\n if (!context.scheduler) {\n sandbox.log(\n `Cannot schedule \"${typeof pattern === 'object' ? JSON.stringify(pattern) : pattern}\" because scheduler is not available`,\n 'error',\n );\n return null;\n }\n\n const schedule: string | null = context.scheduler.add(\n pattern as SchedulerRule | string,\n sandbox.scriptName,\n callback,\n );\n if (schedule) {\n script.wizards.push(schedule);\n sandbox.__engine.__schedules += 1;\n\n if (\n sandbox.__engine.__schedules %\n (adapter.config as JavaScriptAdapterConfig).maxTriggersPerScript ===\n 0\n ) {\n sandbox.log(\n `More than ${sandbox.__engine.__schedules} schedules registered. Check your script!`,\n 'warn',\n );\n }\n }\n\n return schedule;\n }\n\n const adapterConfig: JavaScriptAdapterConfig = adapter.config as JavaScriptAdapterConfig;\n\n if (typeof pattern === 'object' && (pattern as AstroRule).astro) {\n const astroPattern = pattern as AstroRule;\n const nowDate = new Date();\n\n if (\n adapterConfig.latitude === undefined ||\n adapterConfig.longitude === undefined ||\n adapterConfig.latitude === null ||\n adapterConfig.longitude === null\n ) {\n sandbox.log('Longitude or latitude does not set. Cannot use astro.', 'error');\n return null;\n }\n\n // ensure events are calculated independent of current time\n // TODO: use getAstroStartOfDay of adapter?\n const todayNoon = new Date(nowDate);\n todayNoon.setHours(12, 0, 0, 0);\n let ts = mods.suncalc.getTimes(todayNoon, adapterConfig.latitude, adapterConfig.longitude)[\n astroPattern.astro\n ];\n\n // event on the next day, correct or force recalculation at midnight\n if (todayNoon.getDate() !== ts.getDate()) {\n todayNoon.setDate(todayNoon.getDate() - 1);\n ts = mods.suncalc.getTimes(todayNoon, adapterConfig.latitude, adapterConfig.longitude)[\n astroPattern.astro\n ];\n }\n\n if (ts.getTime().toString() === 'NaN') {\n sandbox.log(\n `Cannot calculate \"${astroPattern.astro}\" for ${adapterConfig.latitude}, ${adapterConfig.longitude}`,\n 'warn',\n );\n ts = new Date(nowDate.getTime());\n\n if (\n astroPattern.astro === 'sunriseEnd' ||\n astroPattern.astro === 'goldenHourEnd' ||\n astroPattern.astro === 'sunset' ||\n astroPattern.astro === 'nightEnd' ||\n astroPattern.astro === 'nauticalDusk'\n ) {\n ts.setHours(23);\n ts.setMinutes(59);\n ts.setSeconds(59);\n } else {\n ts.setHours(23);\n ts.setMinutes(59);\n ts.setSeconds(58);\n }\n }\n\n if (ts && astroPattern.shift) {\n ts = new Date(ts.getTime() + astroPattern.shift * 60000);\n }\n\n if (!ts || ts < nowDate) {\n const date = new Date(nowDate);\n // Event doesn't occur today - try again tomorrow\n // Calculate time till 24:00 (local, NOT UTC) and set timeout\n date.setDate(date.getDate() + 1);\n date.setMinutes(0); // Sometimes timer fires at 23:59:59\n date.setHours(0);\n date.setSeconds(1);\n date.setMilliseconds(0);\n\n sandbox.__engine.__schedules += 1;\n\n if (sandbox.__engine.__schedules % adapterConfig.maxTriggersPerScript === 0) {\n sandbox.log(\n `More than ${sandbox.__engine.__schedules} schedules registered. Check your script!`,\n 'warn',\n );\n }\n\n if (sandbox.verbose) {\n sandbox.log(\n `schedule(astro=${astroPattern.astro}, offset=${astroPattern.shift}) is tomorrow, waiting until ${date.toISOString()}`,\n 'info',\n );\n }\n\n // Calculate new schedule in the next day\n sandbox.setTimeout(() => {\n if (sandbox.__engine.__schedules > 0) {\n sandbox.__engine.__schedules--;\n }\n sandbox.schedule(astroPattern, callback);\n }, date.getTime() - Date.now());\n\n return;\n }\n\n sandbox.__engine.__schedules += 1;\n\n if (sandbox.__engine.__schedules % adapterConfig.maxTriggersPerScript === 0) {\n sandbox.log(\n `More than ${sandbox.__engine.__schedules} schedules registered. Check your script!`,\n 'warn',\n );\n }\n\n sandbox.setTimeout(() => {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n // Reschedule in 2 seconds\n sandbox.setTimeout(() => {\n if (sandbox.__engine.__schedules > 0) {\n sandbox.__engine.__schedules--;\n }\n sandbox.schedule(astroPattern, callback);\n }, 2000);\n }, ts.getTime() - Date.now());\n\n if (sandbox.verbose) {\n sandbox.log(\n `schedule(astro=${astroPattern.astro}, offset=${astroPattern.shift}) is today, waiting until ${ts.toISOString()}`,\n 'info',\n );\n }\n } else {\n // fix a problem with sunday and 7\n if (typeof pattern === 'string') {\n // this could be a CRON\n const parts = pattern.replace(/\\s+/g, ' ').split(' ');\n if (parts.length >= 5 && parseInt(parts[5], 10) >= 7) {\n parts[5] = '0';\n }\n pattern = parts.join(' ');\n }\n // created in VM the date object: pattern instanceof Date => false\n // so fix it\n if (typeof pattern === 'object' && (pattern as Date).getDate) {\n pattern = new Date(pattern as Date);\n }\n\n const schedule: IobSchedule = mods.nodeSchedule.scheduleJob(pattern, (): void => {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n });\n if (schedule) {\n sandbox.__engine.__schedules += 1;\n\n if (\n sandbox.__engine.__schedules %\n (adapter.config as JavaScriptAdapterConfig).maxTriggersPerScript ===\n 0\n ) {\n sandbox.log(\n `More than ${sandbox.__engine.__schedules} schedules registered. Check your script!`,\n 'warn',\n );\n }\n\n schedule._ioBroker = {\n type: 'cron',\n pattern: pattern as string | Date,\n scriptName: sandbox.scriptName,\n id: `cron_${Date.now()}_${Math.round(Math.random() * 100000)}`,\n };\n\n script.schedules.push(schedule);\n } else {\n sandbox.log(`schedule(cron=${JSON.stringify(pattern)}): cannot create schedule`, 'error');\n }\n\n if (sandbox.verbose) {\n sandbox.log(`schedule(cron=${JSON.stringify(pattern)})`, 'info');\n }\n\n return schedule;\n }\n },\n scheduleById: function (id: string, ack: boolean | (() => void) | undefined, callback?: () => void): void {\n let scheduleId: IobSchedule | string | null | undefined = null;\n let currentExp: string | null = null; // current cron expression\n\n if (typeof ack === 'function') {\n callback = ack;\n ack = undefined;\n }\n\n const rhms = /^(2[0-3]|[01]?[0-9]):([0-5]?[0-9]):([0-5]?[0-9])$/; // hh:mm:ss\n const rhm = /^(2[0-3]|[01]?[0-9]):([0-5]?[0-9])$/; // hh:mm\n\n const init = (time: string): void => {\n if (typeof time === 'string') {\n let h: number | undefined = undefined;\n let m: number | undefined = undefined;\n let s: number | undefined = undefined;\n\n let isValid = false;\n\n let result = time.match(rhms);\n if (result) {\n [, h, m, s] = result.map(v => parseInt(v));\n isValid = true;\n } else {\n result = time.match(rhm);\n if (result) {\n [, h, m] = result.map(v => parseInt(v));\n isValid = true;\n }\n }\n\n if (isValid) {\n const cronExp = `${s ?? '0'} ${m ?? '0'} ${h ?? '0'} * * *`;\n\n if (cronExp !== currentExp) {\n if (sandbox.verbose) {\n sandbox.log(\n `scheduleById(id=${id}): Init with expression ${cronExp} from ${time}`,\n 'info',\n );\n }\n currentExp = cronExp;\n\n if (scheduleId) {\n sandbox.clearSchedule(scheduleId);\n scheduleId = null;\n }\n\n scheduleId = sandbox.schedule(cronExp, () => {\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n });\n }\n } else {\n sandbox.log(\n `scheduleById(id=${id},time=${time}): cannot create schedule - invalid format (HH:MM:SS or H:M:S required)`,\n 'error',\n );\n }\n } else {\n sandbox.log(\n `scheduleById(id=${id}): cannot create schedule - invalid var type (no string)`,\n 'error',\n );\n }\n };\n\n sandbox.getState(id, (err, state) => {\n if (!err && state?.val) {\n if (sandbox.verbose) {\n sandbox.log(`scheduleById(id=${id}): Init with value ${state.val}`, 'info');\n }\n init(state.val.toString());\n }\n });\n\n const triggerDef: Pattern = { id, change: 'any' };\n if (ack !== undefined) {\n triggerDef.ack = ack;\n }\n\n sandbox.on(triggerDef, obj => {\n if (obj?.state?.val) {\n if (sandbox.verbose) {\n sandbox.log(`scheduleById(id=${id}): Update with value ${obj.state.val}`, 'info');\n }\n init(obj.state.val.toString());\n }\n });\n },\n getAstroDate: function (pattern: AstroEvent, date?: Date | number, offsetMinutes?: number): Date | undefined {\n if (date === undefined) {\n date = new Date();\n }\n if (typeof date === 'number') {\n date = new Date(date);\n } else {\n date = new Date(date.getTime());\n }\n\n if (!consts.astroList.includes(pattern)) {\n const pos = consts.astroListLow.indexOf(pattern.toLowerCase());\n if (pos !== -1) {\n pattern = consts.astroList[pos];\n }\n }\n\n if (\n (!(adapter.config as JavaScriptAdapterConfig).latitude &&\n (adapter.config as JavaScriptAdapterConfig).latitude !== 0) ||\n (!(adapter.config as JavaScriptAdapterConfig).longitude &&\n (adapter.config as JavaScriptAdapterConfig).longitude !== 0)\n ) {\n sandbox.log('Longitude or latitude does not set. Cannot use astro.', 'error');\n return;\n }\n\n // ensure events are calculated independent of current time\n date.setHours(12, 0, 0, 0);\n let ts = mods.suncalc.getTimes(\n date,\n (adapter.config as JavaScriptAdapterConfig).latitude,\n (adapter.config as JavaScriptAdapterConfig).longitude,\n )[pattern];\n\n if (ts === undefined || ts.getTime().toString() === 'NaN') {\n sandbox.log(\n `Cannot calculate astro date \"${pattern}\" for ${(adapter.config as JavaScriptAdapterConfig).latitude}, ${(adapter.config as JavaScriptAdapterConfig).longitude}`,\n 'warn',\n );\n }\n\n if (sandbox.verbose) {\n sandbox.log(`getAstroDate(pattern=${pattern}, date=${date.toString()}) => ${ts}`, 'info');\n }\n\n if (offsetMinutes !== undefined) {\n ts = new Date(ts.getTime() + offsetMinutes * 60000);\n }\n return ts;\n },\n isAstroDay: function (): boolean | undefined {\n const nowDate = new Date();\n const dayBegin = sandbox.getAstroDate('sunrise');\n const dayEnd = sandbox.getAstroDate('sunset');\n\n if (dayBegin === undefined || dayEnd === undefined) {\n return;\n }\n\n if (sandbox.verbose) {\n sandbox.log(`isAstroDay() => ${nowDate >= dayBegin && nowDate <= dayEnd}`, 'info');\n }\n\n return nowDate >= dayBegin && nowDate <= dayEnd;\n },\n clearSchedule: function (schedule: IobSchedule | ScheduleName | string): boolean {\n if (context.scheduler?.get(schedule as string | ScheduleName)) {\n if (sandbox.verbose) {\n sandbox.log('clearSchedule() => wizard cleared', 'info');\n }\n const pos = script.wizards.indexOf(schedule as string);\n if (pos !== -1) {\n script.wizards.splice(pos, 1);\n if (sandbox.__engine.__schedules > 0) {\n sandbox.__engine.__schedules--;\n }\n }\n context.scheduler.remove(schedule as string | ScheduleName);\n return true;\n }\n for (let i = 0; i < script.schedules.length; i++) {\n // Support both full IobSchedule objects (with nested _ioBroker) and\n // bare _ioBroker metadata objects as returned by getSchedules()\n const ioBrokerMeta =\n schedule && typeof schedule === 'object'\n ? (schedule as IobSchedule)._ioBroker || (schedule as { type?: string; id?: string })\n : undefined;\n if (ioBrokerMeta?.type === 'cron') {\n if (script.schedules[i]._ioBroker.id === ioBrokerMeta.id) {\n if (!mods.nodeSchedule.cancelJob(script.schedules[i])) {\n sandbox.log('Error by canceling scheduled job', 'error');\n }\n script.schedules.splice(i, 1);\n if (sandbox.__engine.__schedules > 0) {\n sandbox.__engine.__schedules--;\n }\n\n if (sandbox.verbose) {\n sandbox.log('clearSchedule() => cleared', 'info');\n }\n return true;\n }\n } else if (script.schedules[i] === schedule) {\n if (!mods.nodeSchedule.cancelJob(script.schedules[i])) {\n sandbox.log('Error by canceling scheduled job', 'error');\n }\n script.schedules.splice(i, 1);\n if (sandbox.__engine.__schedules > 0) {\n sandbox.__engine.__schedules--;\n }\n\n if (sandbox.verbose) {\n sandbox.log('clearSchedule() => cleared', 'info');\n }\n return true;\n }\n }\n\n if (sandbox.verbose) {\n sandbox.log('clearSchedule() => invalid handler', 'warn');\n }\n return false;\n },\n getSchedules: function (allScripts?: boolean): ScheduleName[] {\n const schedules = context.scheduler?.getList() || [];\n if (allScripts) {\n Object.keys(context.scripts).forEach(\n name =>\n context.scripts[name].schedules &&\n // IO-8: Spread instead of JSON.parse(JSON.stringify()) – _ioBroker has only primitive fields\n context.scripts[name].schedules.forEach(s =>\n schedules.push({ ...s._ioBroker } as unknown as ScheduleName),\n ),\n );\n } else {\n script.schedules &&\n // IO-8: Spread instead of JSON.parse(JSON.stringify())\n script.schedules.forEach(s => schedules.push({ ...s._ioBroker } as unknown as ScheduleName));\n }\n return schedules;\n },\n setState: function (\n id: string,\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean | 'true' | 'false' | ((err?: Error | null) => void),\n callback?: (err?: Error | null) => void,\n ): void {\n return setStateHelper(sandbox, false, false, id, state, isAck, callback);\n },\n setStateChanged: function (\n id: string,\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean | ((err?: Error | null) => void),\n callback?: (err?: Error | null) => void,\n ): void {\n return setStateHelper(sandbox, false, true, id, state, isAck, callback);\n },\n setStateDelayed: function (\n id: string,\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck: boolean | number | undefined,\n delay?: number | boolean,\n clearRunning?: boolean | ((err?: Error | null) => void),\n callback?: (err?: Error | null) => void,\n ): number | null {\n // find arguments\n if (typeof isAck !== 'boolean') {\n callback = clearRunning as (err?: Error | null) => void;\n clearRunning = delay as boolean;\n delay = isAck;\n isAck = undefined;\n }\n if (typeof delay !== 'number') {\n callback = clearRunning as (err?: Error | null) => void;\n clearRunning = delay;\n delay = 0;\n }\n if (typeof clearRunning !== 'boolean') {\n callback = clearRunning;\n clearRunning = true;\n }\n\n // Check a type of state\n if (!objects[id] && objects[`${adapter.namespace}.${id}`]) {\n id = `${adapter.namespace}.${id}`;\n }\n\n if (sandbox.verbose) {\n sandbox.log(\n `setStateDelayed(id=${id}, state=${JSON.stringify(state)}, isAck=${isAck}, delay=${delay}, clearRunning=${clearRunning})`,\n 'info',\n );\n }\n\n if (clearRunning) {\n if (timers[id]) {\n if (sandbox.verbose) {\n sandbox.log(`setStateDelayed: clear ${timers[id].length} running timers`, 'info');\n }\n\n // collect affected scriptNames before deleting\n const affectedScripts = new Set(timers[id].map(e => e.scriptName));\n for (let i = 0; i < timers[id].length; i++) {\n clearTimeout(timers[id][i].t);\n }\n delete timers[id];\n // update timersByScript reverse-index for all affected scripts\n for (const scriptName of affectedScripts) {\n const scriptSet = context.timersByScript.get(scriptName);\n if (scriptSet) {\n scriptSet.delete(id);\n if (!scriptSet.size) {\n context.timersByScript.delete(scriptName);\n }\n }\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log('setStateDelayed: no running timers', 'info');\n }\n }\n }\n // If no delay => starts immediately\n if (!delay) {\n sandbox.setState(id, state, isAck, callback);\n return null;\n }\n // If delay\n timers[id] = timers[id] || [];\n\n // calculate timerId\n context.timerId++;\n if (context.timerId > 0xfffffffe) {\n context.timerId = 0;\n }\n\n // Start timeout\n const timer = setTimeout(\n function (_timerId, _id, _state, _isAck) {\n sandbox.setState(_id, _state, _isAck, callback);\n // delete timer handler\n if (timers[_id]) {\n // optimisation\n if (timers[_id].length === 1) {\n const scriptName = timers[_id][0].scriptName;\n delete timers[_id];\n // update timersByScript reverse-index\n const scriptSet = context.timersByScript.get(scriptName);\n if (scriptSet) {\n scriptSet.delete(_id);\n if (!scriptSet.size) {\n context.timersByScript.delete(scriptName);\n }\n }\n } else {\n for (let t = 0; t < timers[_id].length; t++) {\n if (timers[_id][t].id === _timerId) {\n const scriptName = timers[_id][t].scriptName;\n timers[_id].splice(t, 1);\n if (!timers[_id].length) {\n delete timers[_id];\n // update timersByScript reverse-index\n const scriptSet = context.timersByScript.get(scriptName);\n if (scriptSet) {\n scriptSet.delete(_id);\n if (!scriptSet.size) {\n context.timersByScript.delete(scriptName);\n }\n }\n }\n break;\n }\n }\n }\n }\n },\n delay,\n context.timerId,\n id,\n state,\n isAck,\n );\n\n // add timer handler\n timers[id].push({\n t: timer,\n id: context.timerId,\n ts: Date.now(),\n delay: delay,\n val:\n isObject(state) && (state as ioBroker.SettableState).val !== undefined\n ? ((state as ioBroker.SettableState).val as ioBroker.StateValue)\n : (state as ioBroker.StateValue),\n ack:\n isObject(state) &&\n (state as ioBroker.SettableState).val !== undefined &&\n (state as ioBroker.SettableState).ack !== undefined\n ? (state as ioBroker.SettableState).ack\n : isAck,\n scriptName: name,\n });\n // Keep reverse-index in sync for O(1) cleanup in stopScript\n if (!context.timersByScript.has(name)) {\n context.timersByScript.set(name, new Set());\n }\n context.timersByScript.get(name)!.add(id);\n\n return context.timerId;\n },\n clearStateDelayed: function (id: string, timerId: number): boolean {\n // Check a type of state\n if (!objects[id] && objects[`${adapter.namespace}.${id}`]) {\n id = `${adapter.namespace}.${id}`;\n }\n\n if (sandbox.verbose) {\n sandbox.log(`clearStateDelayed(id=${id}, timerId=${timerId})`, 'info');\n }\n\n if (timers[id]) {\n // collect scriptNames of entries that will be removed\n const removedScripts = new Set();\n for (let i = timers[id].length - 1; i >= 0; i--) {\n if (timerId === undefined || timers[id][i].id === timerId) {\n const clearedTimerId = timers[id][i].id;\n removedScripts.add(timers[id][i].scriptName);\n clearTimeout(timers[id][i].t);\n if (timerId !== undefined) {\n timers[id].splice(i, 1);\n }\n if (sandbox.verbose) {\n sandbox.log(`clearStateDelayed: clear timer ${clearedTimerId}`, 'info');\n }\n }\n }\n if (timerId === undefined) {\n delete timers[id];\n } else {\n if (!timers[id].length) {\n delete timers[id];\n }\n }\n // IO-7: keep the timersByScript reverse-index in sync. For every script whose\n // timer(s) we just removed, drop `id` from its set – unless that script still has\n // another timer for this state (other scripts' timers may keep timers[id] alive).\n if (removedScripts.size) {\n const remaining = timers[id]; // undefined if the whole entry was deleted\n for (const scriptName of removedScripts) {\n const stateIds = context.timersByScript.get(scriptName);\n if (!stateIds) {\n continue;\n }\n if (remaining?.some(e => e.scriptName === scriptName)) {\n continue;\n }\n stateIds.delete(id);\n if (!stateIds.size) {\n context.timersByScript.delete(scriptName);\n }\n }\n }\n return true;\n }\n return false;\n },\n getStateDelayed: function (\n id: string | number,\n ):\n | null\n | { timerId: number; left: number; delay: number; val: ioBroker.StateValue; ack?: boolean }\n | { timerId: number; left: number; delay: number; val: ioBroker.StateValue; ack?: boolean }[]\n | Record<\n string,\n { timerId: number; left: number; delay: number; val: ioBroker.StateValue; ack?: boolean }[]\n > {\n const now = Date.now();\n if (id) {\n // Check a type of state\n if (!objects[id] && objects[`${adapter.namespace}.${id}`]) {\n id = `${adapter.namespace}.${id}`;\n }\n // If timerId given\n if (typeof id === 'number') {\n for (const _id_ in timers) {\n if (Object.prototype.hasOwnProperty.call(timers, _id_)) {\n for (let ttt = 0; ttt < timers[_id_].length; ttt++) {\n if (timers[_id_][ttt].id === id) {\n return {\n timerId: id,\n left: timers[_id_][ttt].delay - (now - timers[_id_][ttt].ts),\n delay: timers[_id_][ttt].delay,\n val: timers[_id_][ttt].val,\n ack: timers[_id_][ttt].ack,\n };\n }\n }\n }\n }\n return null;\n }\n\n const result: {\n timerId: number;\n left: number;\n delay: number;\n val: ioBroker.StateValue;\n ack?: boolean;\n }[] = [];\n if (Object.prototype.hasOwnProperty.call(timers, id) && timers[id] && timers[id].length) {\n for (let tt = 0; tt < timers[id].length; tt++) {\n result.push({\n timerId: timers[id][tt].id,\n left: timers[id][tt].delay - (now - timers[id][tt].ts),\n delay: timers[id][tt].delay,\n val: timers[id][tt].val,\n ack: timers[id][tt].ack,\n });\n }\n }\n return result;\n }\n const result: Record<\n string,\n { timerId: number; left: number; delay: number; val: ioBroker.StateValue; ack?: boolean }[]\n > = {};\n for (const _id in timers) {\n if (Object.prototype.hasOwnProperty.call(timers, _id) && timers[_id] && timers[_id].length) {\n result[_id] = [];\n for (let t = 0; t < timers[_id].length; t++) {\n result[_id].push({\n timerId: timers[_id][t].id,\n left: timers[_id][t].delay - (now - timers[_id][t].ts),\n delay: timers[_id][t].delay,\n val: timers[_id][t].val,\n ack: timers[_id][t].ack,\n });\n }\n }\n }\n return result;\n },\n getStateAsync: async function (id: string): Promise {\n let state: ioBroker.State | null | undefined;\n if (id.includes('.')) {\n state = await adapter.getForeignStateAsync(id);\n } else {\n state = await adapter.getStateAsync(id);\n }\n return context.convertBackStringifiedValues(id, state);\n },\n setStateAsync: function (\n id: string,\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean,\n ): Promise {\n return new Promise((resolve, reject) =>\n setStateHelper(sandbox, false, false, id, state, isAck, err => (err ? reject(err) : resolve())),\n );\n },\n setStateChangedAsync: function (\n id: string,\n state: ioBroker.SettableState | ioBroker.StateValue,\n isAck?: boolean,\n ): Promise {\n return new Promise((resolve, reject) =>\n setStateHelper(sandbox, false, true, id, state, isAck, err => (err ? reject(err) : resolve())),\n );\n },\n getState: function (\n id: string,\n callback?: (err: Error | null | undefined, state?: ioBroker.State | null) => void,\n ): undefined | void | (ioBroker.State & { notExist?: true }) | null {\n if (typeof id !== 'string') {\n sandbox.log(`getState has been called with id of type \"${typeof id}\" but expects a string`, 'error');\n return undefined;\n }\n\n if (typeof callback === 'function') {\n if (!id.includes('.')) {\n adapter.getState(id, (err, state) =>\n callback(err, context.convertBackStringifiedValues(id, state)),\n );\n } else {\n void adapter.getForeignState(id, (err, state) =>\n callback(err, context.convertBackStringifiedValues(id, state)),\n );\n }\n } else {\n if ((adapter.config as JavaScriptAdapterConfig).subscribe) {\n sandbox.log(\n 'The \"getState\" method cannot be used synchronously, because the adapter setting \"Do not subscribe to all states on start\" is enabled.',\n 'error',\n );\n sandbox.log(\n `Please disable that setting or use \"getState\" with a callback, e.g.: getState('${id}', (err, state) => { ... });`,\n 'error',\n );\n } else {\n if (states[id]) {\n if (sandbox.verbose) {\n sandbox.log(\n `getState(id=${id}, timerId=${JSON.stringify(timers[id])}) => ${JSON.stringify(states[id])}`,\n 'info',\n );\n }\n if (context.interimStateValues[id] !== undefined) {\n return context.convertBackStringifiedValues(id, context.interimStateValues[id]);\n }\n return context.convertBackStringifiedValues(id, states[id]);\n } else if (states[`${adapter.namespace}.${id}`]) {\n if (sandbox.verbose) {\n sandbox.log(\n `getState(id=${id}, timerId=${JSON.stringify(timers[id])}) => ${JSON.stringify(states[`${adapter.namespace}.${id}`])}`,\n 'info',\n );\n }\n if (context.interimStateValues[`${adapter.namespace}.${id}`] !== undefined) {\n return context.convertBackStringifiedValues(\n id,\n context.interimStateValues[`${adapter.namespace}.${id}`],\n );\n }\n return context.convertBackStringifiedValues(id, states[`${adapter.namespace}.${id}`]);\n }\n\n if (sandbox.verbose) {\n sandbox.log(`getState(id=${id}, timerId=${JSON.stringify(timers[id])}) => not found`, 'info');\n }\n\n context.logWithLineInfo(\n `getState \"${id}\" not found (3)${states[id] !== undefined ? ` states[id]=${JSON.stringify(states[id])}` : ''}`,\n ); ///xxx\n return { val: null, notExist: true } as ioBroker.State & { notExist?: true };\n }\n }\n },\n existsState: function (\n id: string,\n callback?: (err: Error | null | undefined, stateExists?: boolean) => void,\n ): void | boolean {\n if (typeof id !== 'string') {\n sandbox.log(`existsState has been called with id of type \"${typeof id}\" but expects a string`, 'error');\n return false;\n }\n\n if (typeof callback === 'function') {\n void adapter.getForeignObject(id, (err, obj) => {\n if (!obj || obj.type !== 'state') {\n callback(err, false);\n return;\n }\n\n if ((adapter.config as JavaScriptAdapterConfig).subscribe) {\n void adapter.getForeignState(id, (err, state) => {\n callback(err, !!state);\n });\n } else {\n callback(err, !!states[id]);\n }\n });\n } else {\n if ((adapter.config as JavaScriptAdapterConfig).subscribe) {\n sandbox.log(\n 'The \"existsState\" method cannot be used synchronously, because the adapter setting \"Do not subscribe to all states on start\" is enabled.',\n 'error',\n );\n sandbox.log(\n `Please disable that setting or use \"existsState\" with a callback, e.g.: existsState('${id}', (err, stateExists) => { ... });`,\n 'error',\n );\n } else {\n return !!states[id];\n }\n }\n },\n existsObject: function (\n id: string,\n callback?: (err: Error | null | undefined, objectExists?: boolean) => void,\n ): void | boolean {\n if (typeof id !== 'string') {\n sandbox.log(\n `existsObject has been called with id of type \"${typeof id}\" but expects a string`,\n 'error',\n );\n return false;\n }\n\n if (typeof callback === 'function') {\n void adapter.getForeignObject(id, (err, obj) => callback(err, !!obj));\n } else {\n return !!objects[id];\n }\n },\n getIdByName: function (name: string, alwaysArray?: boolean): string | string[] | null {\n if (sandbox.verbose) {\n sandbox.log(\n `getIdByName(name=${name}, alwaysArray=${alwaysArray}) => ${JSON.stringify(context.names[name])}`,\n 'info',\n );\n }\n if (Object.prototype.hasOwnProperty.call(context.names, name)) {\n if (alwaysArray) {\n return !Array.isArray(context.names[name]) ? [context.names[name]] : context.names[name];\n }\n return context.names[name];\n }\n if (alwaysArray) {\n return [];\n }\n return null;\n },\n getObject: function (\n id: string,\n enumName: null | string | ((err: Error | null | undefined, obj?: ioBroker.Object | null) => void),\n cb?: (err: Error | null | undefined, obj?: ioBroker.Object | null) => void,\n ): void | ioBroker.Object | null {\n if (typeof id !== 'string') {\n sandbox.log(`getObject has been called with id of type \"${typeof id}\" but expects a string`, 'error');\n return null;\n }\n\n if (typeof enumName === 'function') {\n cb = enumName;\n enumName = null;\n }\n // with callback\n if (typeof cb === 'function') {\n void adapter.getForeignObject(id, (err, obj) => {\n if (obj) {\n objects[id] = obj;\n } else if (objects[id]) {\n delete objects[id];\n }\n let result: ioBroker.Object | null | undefined;\n try {\n result = objects[id] ? structuredClone(objects[id]) : undefined;\n } catch (err: unknown) {\n void adapter.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'getObject',\n });\n sandbox.log(`Object \"${id}\" can't be copied: ${JSON.stringify(err)}`, 'error');\n return cb(null, null);\n }\n if (sandbox.verbose) {\n sandbox.log(`getObject(id=${id}, enumName=${enumName}) => ${JSON.stringify(result)}`, 'info');\n }\n cb(err, result);\n });\n } else {\n if (!objects[id]) {\n if (sandbox.verbose) {\n sandbox.log(`getObject(id=${id}, enumName=${enumName}) => does not exist`, 'info');\n }\n sandbox.log(`Object \"${id}\" does not exist`, 'warn');\n return null;\n }\n if (enumName) {\n const e = eventObj.getObjectEnumsSync(context, id);\n const obj = structuredClone(objects[id]) as ioBroker.Object & {\n enumIds: string[];\n enumNames: string[];\n };\n obj.enumIds = structuredClone(e.enumIds);\n obj.enumNames = structuredClone(e.enumNames);\n if (typeof enumName === 'string') {\n const r = new RegExp(`^enum\\\\.${enumName}\\\\.`);\n for (let i = obj.enumIds.length - 1; i >= 0; i--) {\n if (!r.test(obj.enumIds[i])) {\n obj.enumIds.splice(i, 1);\n obj.enumNames.splice(i, 1);\n }\n }\n }\n if (sandbox.verbose) {\n sandbox.log(`getObject(id=${id}, enumName=${enumName}) => ${JSON.stringify(obj)}`, 'info');\n }\n\n return obj;\n }\n let result: ioBroker.Object | null | undefined;\n try {\n result = structuredClone(objects[id]);\n } catch (err: unknown) {\n void adapter.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'getObject',\n });\n sandbox.log(`Object \"${id}\" can't be copied: ${JSON.stringify(err)}`, 'error');\n return null;\n }\n if (sandbox.verbose) {\n sandbox.log(`getObject(id=${id}, enumName=${enumName}) => ${JSON.stringify(result)}`, 'info');\n }\n return result;\n }\n },\n // This function will be overloaded later if the modification of objects is allowed\n setObject: function (\n _id: string,\n _obj: ioBroker.Object,\n callback?: (err?: Error | null, res?: { id: string }) => void,\n ): void {\n sandbox.log('Function \"setObject\" is not allowed. Use adapter settings to allow it.', 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(\n sandbox,\n new Error('Function \"setObject\" is not allowed. Use adapter settings to allow it.'),\n );\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n },\n // This function will be overloaded later if the modification of objects is allowed\n extendObject: function (\n _id: string,\n _obj: Partial,\n callback?: (err?: Error | null, res?: { id: string }) => void,\n ): void {\n sandbox.log('Function \"extendObject\" is not allowed. Use adapter settings to allow it.', 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(\n sandbox,\n new Error('Function \"extendObject\" is not allowed. Use adapter settings to allow it.'),\n );\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n },\n // This function will be overloaded later if the modification of objects is allowed\n deleteObject: function (\n _id: string,\n _isRecursive?: boolean | ioBroker.ErrorCallback,\n callback?: ioBroker.ErrorCallback,\n ): void {\n if (typeof _isRecursive === 'function') {\n callback = _isRecursive;\n }\n sandbox.log('Function \"deleteObject\" is not allowed. Use adapter settings to allow it.', 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(\n sandbox,\n new Error('Function \"deleteObject\" is not allowed. Use adapter settings to allow it.'),\n );\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n },\n getEnums: function (enumName?: string): { id: string; members: string[]; name: ioBroker.StringOrTranslated }[] {\n const result: { id: string; members: string[]; name: ioBroker.StringOrTranslated }[] = [];\n const r = enumName ? new RegExp(`^enum\\\\.${enumName}\\\\.`) : false;\n for (const enumId of enums) {\n if (!r || r.test(enumId)) {\n const common: ioBroker.EnumCommon =\n (objects[enumId] as ioBroker.EnumObject).common || ({} as ioBroker.EnumCommon);\n result.push({\n id: enumId,\n members: common.members || [],\n name: common.name || '',\n });\n }\n }\n if (sandbox.verbose) {\n sandbox.log(`getEnums(enumName=${enumName}) => ${JSON.stringify(result)}`, 'info');\n }\n return structuredClone(result);\n },\n createAlias: function (\n name: string,\n alias: string | CommonAlias,\n forceCreation: boolean | Partial | ((err: Error | null) => void) | undefined,\n common?: Partial | Record | ((err: Error | null) => void),\n native?: Record | ((err: Error | null) => void),\n callback?: (err: Error | null) => void,\n ) {\n if (typeof native === 'function') {\n callback = native as (err: Error | null) => void;\n native = {};\n }\n if (typeof common === 'function') {\n callback = common as (err: Error | null) => void;\n common = undefined;\n }\n if (typeof forceCreation === 'function') {\n callback = forceCreation;\n forceCreation = undefined;\n }\n if (isObject(forceCreation)) {\n native = common;\n common = forceCreation as Partial;\n forceCreation = undefined;\n }\n\n if (typeof name !== 'string') {\n const err = `Wrong type of name \"${typeof name}\". Expected \"string\".`;\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n\n if (!name) {\n const err = 'Empty ID is not allowed.';\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n\n if (!name.startsWith('alias.0.')) {\n name = `alias.0.${name}`;\n }\n\n const _common: Partial = (common as Partial) || {};\n if (isObject(_common.alias)) {\n // alias already in common, use this\n } else if (\n isObject(alias) &&\n (typeof (alias as CommonAlias).id === 'string' || isObject((alias as CommonAlias).id))\n ) {\n _common.alias = alias as CommonAlias;\n } else if (typeof alias === 'string') {\n _common.alias = { id: alias };\n } else {\n const err = 'Source ID needs to be provided as string or object with id property.';\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n\n let aliasSourceId = '';\n if (_common.alias) {\n aliasSourceId = isObject(_common.alias.id)\n ? (_common.alias.id as { read: string; write: string }).read\n : (_common.alias.id as string);\n if (!objects[aliasSourceId] && objects[`${adapter.namespace}.${aliasSourceId}`]) {\n aliasSourceId = `${adapter.namespace}.${aliasSourceId}`;\n if (isObject(_common.alias.id)) {\n (_common.alias.id as { read: string; write: string }).read = aliasSourceId;\n } else {\n _common.alias.id = aliasSourceId;\n }\n }\n if (\n isObject(_common.alias.id) &&\n (_common.alias.id as { read: string; write: string }).write &&\n !objects[(_common.alias.id as { read: string; write: string }).write] &&\n objects[`${adapter.namespace}.${(_common.alias.id as { read: string; write: string }).write}`]\n ) {\n (_common.alias.id as { read: string; write: string }).write =\n `${adapter.namespace}.${(_common.alias.id as { read: string; write: string }).write}`;\n }\n }\n const obj = objects[aliasSourceId];\n if (!obj) {\n const err = `Alias source object \"${aliasSourceId}\" does not exist.`;\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n if (obj.type !== 'state') {\n const err = `Alias source object \"${aliasSourceId}\" must be a state object.`;\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n if (_common.name === undefined) {\n _common.name = obj.common.name || name;\n }\n if (_common.type === undefined && obj.common.type !== undefined) {\n _common.type = obj.common.type;\n }\n if (_common.role === undefined && obj.common.role !== undefined) {\n _common.role = obj.common.role;\n }\n if (_common.min === undefined && obj.common.min !== undefined) {\n _common.min = obj.common.min;\n }\n if (_common.max === undefined && obj.common.max !== undefined) {\n _common.max = obj.common.max;\n }\n if (_common.step === undefined && obj.common.step !== undefined) {\n _common.step = obj.common.step;\n }\n if (_common.unit === undefined && obj.common.unit !== undefined) {\n _common.unit = obj.common.unit;\n }\n if (_common.desc === undefined && obj.common.desc !== undefined) {\n _common.desc = obj.common.desc;\n }\n\n return sandbox.createState(\n name,\n undefined,\n forceCreation as boolean,\n _common,\n native,\n callback as (err?: Error | null) => void,\n );\n },\n createState: async function (\n name: string,\n initValue: undefined | ioBroker.StateValue | ioBroker.State,\n forceCreation:\n | boolean\n | undefined\n | Record\n | Partial\n | ((err: Error | null) => void),\n common?: Partial | ((err: Error | null) => void),\n native?: Record | ((err: Error | null) => void),\n callback?: (error: Error | null | undefined, id?: string) => void,\n ) {\n if (typeof native === 'function') {\n callback = native as (err?: Error | null) => void;\n native = {};\n }\n if (typeof common === 'function') {\n callback = common as (err?: Error | null) => void;\n common = undefined;\n }\n if (typeof initValue === 'function') {\n callback = initValue;\n initValue = undefined;\n }\n if (typeof forceCreation === 'function') {\n callback = forceCreation as (err?: Error | null) => void;\n forceCreation = undefined;\n }\n if (isObject(initValue)) {\n common = initValue as Partial;\n native = forceCreation as Record;\n forceCreation = undefined;\n initValue = undefined;\n }\n if (isObject(forceCreation)) {\n native = common as Record;\n common = forceCreation as Partial;\n forceCreation = undefined;\n }\n\n if (typeof name !== 'string') {\n const err = `Wrong type of name \"${typeof name}\". Expected \"string\".`;\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n\n if (!name) {\n const err = 'Empty ID is not allowed.';\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n\n const isAlias = name.startsWith('alias.0.');\n\n const _common: ioBroker.StateCommon = (common || {}) as ioBroker.StateCommon;\n _common.name = _common.name || name;\n _common.role = _common.role || 'state';\n _common.type = _common.type || 'mixed';\n if (!isAlias && initValue === undefined) {\n initValue = _common.def;\n }\n\n native = native || {};\n\n // Check min, max and def values for number\n if (_common.type !== undefined && _common.type === 'number') {\n let min = 0;\n let max = 0;\n let def = 0;\n let err: string | undefined;\n if (_common.min !== undefined) {\n min = _common.min;\n if (typeof min !== 'number') {\n min = parseFloat(min);\n if (isNaN(min)) {\n err = `Wrong type of ${name}.common.min`;\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n _common.min = min;\n }\n }\n if (_common.max !== undefined) {\n max = _common.max;\n if (typeof max !== 'number') {\n max = parseFloat(max);\n if (isNaN(max)) {\n err = `Wrong type of ${name}.common.max`;\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n _common.max = max;\n }\n }\n\n if (_common.def !== undefined) {\n if (isAlias) {\n delete _common.def;\n } else {\n def = _common.def;\n if (typeof def !== 'number') {\n def = parseFloat(def);\n if (isNaN(def)) {\n err = `Wrong type of ${name}.common.def`;\n sandbox.log(err, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n _common.def = def;\n }\n }\n }\n\n if (_common.min !== undefined && _common.max !== undefined && min > max) {\n _common.max = min;\n _common.min = max;\n }\n if (_common.def !== undefined && _common.min !== undefined && def < min) {\n _common.def = min;\n }\n if (_common.def !== undefined && _common.max !== undefined && def > max) {\n _common.def = max;\n }\n }\n\n if (sandbox.verbose) {\n sandbox.log(\n `createState(name=${name}, initValue=${JSON.stringify(initValue)}, forceCreation=${JSON.stringify(forceCreation)}, common=${JSON.stringify(common)}, native=${JSON.stringify(native)}, isAlias=${isAlias})`,\n 'debug',\n );\n }\n\n let id = `${adapter.namespace}.${name}`;\n if (name.match(/^javascript\\.\\d+\\./) || name.startsWith('0_userdata.0.') || isAlias) {\n id = name;\n }\n if (id.match(/^javascript\\.\\d+\\.scriptEnabled/)) {\n sandbox.log(\n `Own states (${id}) should not be created in javascript.X.scriptEnabled.*! Please move the states to 0_userdata.0.*`,\n 'info',\n );\n } else if (id.match(/^javascript\\.\\d+\\.scriptProblem/)) {\n sandbox.log(\n `Own states (${id}) should not be created in javascript.X.scriptProblem.*! Please move the states to 0_userdata.0.*`,\n 'info',\n );\n }\n\n // User can create aliases by two ways:\n // - id is starting with \"alias.0.\" and common.alias.id is set, so the state defined in common.alias.id will be created automatically if not exists\n // - id is not starting with \"alias.0.\", but common.alias is set, so the state defined in common.alias will be created automatically if not exists\n if (!isAlias && _common.alias) {\n // check and create if not exists the alias\n let alias: CommonAlias;\n if (typeof _common.alias === 'string') {\n alias = {\n id: _common.alias,\n };\n } else if (typeof _common.alias === 'boolean') {\n const parts = id.split('.');\n parts[0] = 'alias';\n parts[1] = '0';\n\n alias = {\n id: parts.join('.'),\n };\n } else {\n alias = _common.alias;\n }\n delete _common.alias;\n\n if (!(alias.id as string).startsWith('alias.0.')) {\n alias.id = `alias.0.${alias.id as string}`;\n }\n\n let aObj: ioBroker.StateObject | null | undefined;\n try {\n aObj = (await adapter.getForeignObjectAsync(alias.id as string)) as\n ioBroker.StateObject | null | undefined;\n } catch {\n // ignore\n }\n if (!aObj) {\n try {\n const _obj: ioBroker.StateObject = {\n _id: alias.id as string,\n type: 'state',\n common: {\n name: `Alias to ${id}`,\n role: 'state',\n type: _common.type,\n read: _common.read,\n write: _common.write,\n unit: _common.unit,\n alias: {\n id,\n read: alias.read,\n write: alias.write,\n },\n },\n native: {},\n };\n\n await adapter.setForeignObjectAsync(alias.id as string, _obj);\n } catch (err: unknown) {\n sandbox.log(`Cannot create alias \"${alias.id as string}\": ${err as Error}`, 'error');\n }\n }\n } else if (isAlias && _common.alias) {\n if (typeof _common.alias === 'string') {\n _common.alias = {\n id: _common.alias,\n };\n }\n const readId = typeof _common.alias.id === 'string' ? _common.alias.id : _common.alias.id.read;\n let writeId: string | undefined =\n typeof _common.alias.id === 'string' ? _common.alias.id : _common.alias.id.write;\n if (writeId === readId) {\n writeId = undefined;\n }\n // try to create the linked states\n let aObj: ioBroker.StateObject | null | undefined;\n try {\n aObj = (await adapter.getForeignObjectAsync(readId)) as ioBroker.StateObject | null | undefined;\n } catch {\n // ignore\n }\n if (!aObj) {\n try {\n await adapter.setForeignObjectAsync(readId, {\n type: 'state',\n common: {\n name: `State for ${id}`,\n role: 'state',\n type: _common.type,\n read: _common.read,\n write: _common.write,\n unit: _common.unit,\n },\n native: {},\n });\n } catch (err: unknown) {\n sandbox.log(`Cannot create alias \"${readId}\": ${err as Error}`, 'error');\n }\n }\n if (writeId && _common.write !== false) {\n try {\n aObj = (await adapter.getForeignObjectAsync(writeId)) as\n ioBroker.StateObject | null | undefined;\n } catch {\n // ignore\n }\n if (!aObj) {\n try {\n await adapter.setForeignObjectAsync(writeId, {\n type: 'state',\n common: {\n name: `Write state for ${id}`,\n role: 'state',\n type: _common.type,\n read: _common.read,\n write: _common.write,\n unit: _common.unit,\n },\n native: {},\n });\n } catch (err: unknown) {\n sandbox.log(`Cannot create alias \"${writeId}\": ${err as Error}`, 'error');\n }\n }\n }\n }\n\n let obj: ioBroker.Object | null | undefined;\n try {\n obj = await adapter.getForeignObjectAsync(id);\n } catch {\n // ignore\n }\n\n if (\n obj?._id &&\n validIdForAutomaticFolderCreation(obj._id) &&\n obj.type === 'folder' &&\n obj.native &&\n obj.native.autocreated === 'by automatic ensure logic'\n ) {\n // ignore a default created object because we now have a better defined one\n obj = null;\n }\n\n if (!obj || forceCreation) {\n // create new one\n const newObj: ioBroker.StateObject = {\n _id: id,\n common: _common,\n native,\n type: 'state',\n };\n try {\n await adapter.setForeignObjectAsync(id, newObj);\n } catch (err: unknown) {\n sandbox.log(`Cannot set object \"${id}\": ${err as Error}`, 'warn');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, err as Error);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n\n // Update meta objects\n context.updateObjectContext(id, newObj);\n\n if (!isAlias && initValue !== undefined) {\n if (isObject(initValue) && (initValue as ioBroker.State).ack !== undefined) {\n setStateHelper(sandbox, true, false, id, initValue, callback);\n } else {\n setStateHelper(sandbox, true, false, id, initValue, true, callback);\n }\n } else if (!isAlias && !forceCreation) {\n setStateHelper(sandbox, true, false, id, null, callback);\n } else if (isAlias) {\n try {\n const state = await adapter.getForeignStateAsync(id);\n if (state) {\n states[id] = state;\n }\n } catch {\n // ignore\n }\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, null, id);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n } else if (typeof callback === 'function') {\n try {\n callback.call(sandbox, null, id);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n await ensureObjectStructure(id);\n } else {\n // state yet exists\n if (\n !(adapter.config as JavaScriptAdapterConfig).subscribe &&\n !states[id] &&\n states[`${adapter.namespace}.${id}`] === undefined\n ) {\n states[id] = {\n val: null,\n ack: true,\n lc: Date.now(),\n ts: Date.now(),\n q: 0,\n from: `system.adapter.${adapter.namespace}`,\n };\n }\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, null, id);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n\n await ensureObjectStructure(id);\n }\n },\n deleteState: function (id: string, callback?: (err: Error | null | undefined, found?: boolean) => void): void {\n // todo: check rights\n // todo: also remove from \"names\"\n\n if (sandbox.verbose) {\n sandbox.log(`deleteState(id=${id})`, 'debug');\n }\n\n let found = false;\n if ((id.startsWith('0_userdata.0.') || id.startsWith(adapter.namespace)) && objects[id]) {\n found = true;\n delete objects[id];\n if (states[id]) {\n delete states[id];\n }\n\n adapter.delForeignObject(id, function (err) {\n err && sandbox.log(`Object for state \"${id}\" does not exist: ${err}`, 'warn');\n\n adapter.delForeignState(id, function (err) {\n err && sandbox.log(`Cannot delete state \"${id}\": ${err}`, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, err, found);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n });\n });\n } else if (objects[`${adapter.namespace}.${id}`]) {\n delete objects[`${adapter.namespace}.${id}`];\n found = true;\n if (states[`${adapter.namespace}.${id}`]) {\n delete states[`${adapter.namespace}.${id}`];\n }\n\n adapter.delObject(id, function (err) {\n err && sandbox.log(`Object for state \"${id}\" does not exist: ${err}`, 'warn');\n\n adapter.delState(id, function (err) {\n err && sandbox.log(`Cannot delete state \"${id}\": ${err}`, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, err, found);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n });\n });\n } else {\n const err = 'Not found';\n sandbox.log(`Cannot delete state \"${id}\": ${err}`, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(err), found);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n }\n },\n sendTo: function (\n _adapter: string,\n cmd: string,\n msg?: any,\n options?: Record | ((result: any, options: Record, _adapter: string) => void),\n callback?: (result: any, options: Record, _adapter: string) => void,\n ): void {\n const defaultTimeout = 20000;\n\n if (typeof options === 'function') {\n callback = options as (result: any, options: Record, _adapter: string) => void;\n options = { timeout: defaultTimeout };\n }\n\n let timeout: NodeJS.Timeout | null = null;\n if (typeof callback === 'function') {\n const timeoutDuration = parseInt(options?.timeout, 10) || defaultTimeout;\n\n timeout = setTimeout(() => {\n timeout = null;\n\n if (sandbox.verbose) {\n sandbox.log(`sendTo => timeout: ${timeoutDuration}`, 'debug');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, { error: 'timeout' }, options as Record, _adapter);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n callback = undefined;\n }\n }, timeoutDuration);\n }\n\n let cbFunc: undefined | ((result: any) => void);\n if (timeout) {\n cbFunc = function (result: any): void {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n\n if (sandbox.verbose && result) {\n sandbox.log(`sendTo => ${JSON.stringify(result)}`, 'debug');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, result, options as Record, _adapter);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n callback = undefined;\n }\n };\n }\n\n // If specific instance\n if (_adapter.match(/\\.[0-9]+$/)) {\n if (sandbox.verbose) {\n sandbox.log(\n `sendTo(instance=${_adapter}, cmd=${cmd}, msg=${JSON.stringify(msg)}, hasCallback=${typeof callback === 'function'})`,\n 'info',\n );\n }\n\n adapter.sendTo(_adapter, cmd, msg, cbFunc, options);\n } else {\n // IO-9: Cache sendTo broadcast instance list – avoid repeated getObjectView DB calls\n const cached = context.sendToInstanceCache.get(_adapter);\n if (cached) {\n cached.forEach(instance => {\n if (sandbox.verbose) {\n sandbox.log(\n `sendTo(instance=${instance}, cmd=${cmd}, msg=${JSON.stringify(msg)}, hasCallback=${typeof callback === 'function'}) [cached]`,\n 'info',\n );\n }\n adapter.sendTo(instance, cmd, msg, cbFunc, options);\n });\n } else {\n // Send it to all instances\n context.adapter.getObjectView(\n 'system',\n 'instance',\n { startkey: `system.adapter.${_adapter}.`, endkey: `system.adapter.${_adapter}.\\u9999` },\n options,\n (err, res) => {\n if (err || !res) {\n sandbox.log(`sendTo failed: ${err?.message}`, 'error');\n return;\n }\n\n const instances = res.rows.map(item => item.id.substring('system.adapter.'.length));\n // Store in cache for subsequent calls (invalidated on system.adapter.* object change).\n // LRU eviction: keep the map bounded to avoid unbounded memory growth.\n if (context.sendToInstanceCache.size >= 200) {\n const firstKey = context.sendToInstanceCache.keys().next().value;\n if (firstKey !== undefined) {\n context.sendToInstanceCache.delete(firstKey);\n }\n }\n context.sendToInstanceCache.set(_adapter, instances);\n\n instances.forEach(instance => {\n if (sandbox.verbose) {\n sandbox.log(\n `sendTo(instance=${instance}, cmd=${cmd}, msg=${JSON.stringify(msg)}, hasCallback=${typeof callback === 'function'})`,\n 'info',\n );\n }\n adapter.sendTo(instance, cmd, msg, cbFunc, options);\n });\n },\n );\n }\n }\n },\n sendto: function (\n _adapter: string,\n cmd: string,\n msg: any,\n callback?: (result: any, options: Record, _adapter: string) => void,\n ): void {\n return sandbox.sendTo(_adapter, cmd, msg, callback);\n },\n sendToAsync: function (_adapter: string, cmd: string, msg?: any, options?: Record): Promise {\n return new Promise((resolve, reject) => {\n sandbox.sendTo(_adapter, cmd, msg, options, res => {\n if (!res || res.error) {\n reject(res ? new Error(res.error) : new Error('Unknown error'));\n } else {\n resolve(res);\n }\n });\n });\n },\n sendToHost: function (host: string, cmd: string, msg?: any, callback?: (result: any) => void): void {\n if (!(adapter.config as JavaScriptAdapterConfig).enableSendToHost) {\n const error =\n 'sendToHost is not available. Please enable \"Enable SendToHost\" option in instance settings';\n sandbox.log(error, 'error');\n\n if (typeof callback === 'function') {\n // leave it as a normal function and not as a lambda, to hide the \"this\" object\n setImmediate(function () {\n callback(error);\n });\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log(`sendToHost(adapter=${host}, cmd=${cmd}, msg=${JSON.stringify(msg)})`, 'info');\n }\n adapter.sendToHost(host, cmd, msg, callback);\n }\n },\n sendToHostAsync: function (host: string, cmd: string, msg?: any): Promise {\n return new Promise((resolve, reject) => {\n sandbox.sendToHost(host, cmd, msg, res => {\n if (!res || res.error) {\n reject(res ? new Error(res.error) : new Error('Unknown error'));\n } else {\n resolve(res);\n }\n });\n });\n },\n registerNotification: function (msg: string, isAlert?: boolean): void {\n const category = !isAlert ? 'scriptMessage' : 'scriptAlert';\n\n if (sandbox.verbose) {\n sandbox.log(`registerNotification(msg=${msg}, category=${category})`, 'info');\n }\n\n void adapter.registerNotification('javascript', category, msg);\n },\n setInterval: function (callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timeout | null {\n if (typeof callback === 'function') {\n const int: NodeJS.Timeout = setInterval(() => {\n try {\n callback.call(sandbox, ...args);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }, ms);\n // IO-10: Set.add() – O(1) instead of Array.push()\n script.intervals.add(int);\n\n if (sandbox.verbose) {\n sandbox.log(`setInterval(ms=${ms})`, 'info');\n }\n return int;\n }\n sandbox.log(`Invalid callback for setInterval! - ${typeof callback}`, 'error');\n return null;\n },\n clearInterval: function (id: NodeJS.Timeout): void {\n // IO-10: Set.has/delete – O(1) instead of Array.indexOf+splice O(n)\n if (script.intervals.has(id)) {\n if (sandbox.verbose) {\n sandbox.log('clearInterval() => cleared', 'info');\n }\n clearInterval(id);\n script.intervals.delete(id);\n } else {\n if (sandbox.verbose) {\n sandbox.log('clearInterval() => not found', 'warn');\n }\n }\n },\n setTimeout: function (callback: (args?: any[]) => void, ms: number, ...args: any[]): NodeJS.Timeout | null {\n if (typeof callback === 'function') {\n const to = setTimeout(() => {\n // IO-10: Set.delete – O(1) instead of Array.indexOf+splice O(n)\n script.timeouts.delete(to);\n\n try {\n callback.call(sandbox, ...args);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }, ms);\n if (sandbox.verbose) {\n sandbox.log(`setTimeout(ms=${ms})`, 'info');\n }\n // IO-10: Set.add – O(1) instead of Array.push\n script.timeouts.add(to);\n return to;\n }\n sandbox.log(`Invalid callback for setTimeout! - ${typeof callback}`, 'error');\n return null;\n },\n clearTimeout: function (id: NodeJS.Timeout): void {\n // IO-10: Set.has/delete – O(1) instead of Array.indexOf+splice O(n)\n if (script.timeouts.has(id)) {\n if (sandbox.verbose) {\n sandbox.log('clearTimeout() => cleared', 'info');\n }\n clearTimeout(id);\n script.timeouts.delete(id);\n } else {\n if (sandbox.verbose) {\n sandbox.log('clearTimeout() => not found', 'warn');\n }\n }\n },\n setImmediate: function (callback: (..._args: any[]) => void, ...args: any[]): void {\n if (typeof callback === 'function') {\n setImmediate(() => {\n try {\n callback.apply(sandbox, args);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n });\n if (sandbox.verbose) {\n sandbox.log('setImmediate()', 'info');\n }\n } else {\n sandbox.log(`Invalid callback for setImmediate! - ${typeof callback}`, 'error');\n }\n },\n cb: function (callback: (..._args: any[]) => void): (...args: any[]) => void {\n return function (args: any[]) {\n if (context.scripts[name]?._id === sandbox._id) {\n if (typeof callback === 'function') {\n try {\n callback.apply(sandbox, args);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n } else {\n sandbox.log(`Callback for old version of script: ${name}`, 'warn');\n }\n };\n },\n compareTime: function (\n startTime: iobJS.AstroDate | string | Date | number,\n endTime: iobJS.AstroDate | string | Date | number | null,\n operation: 'between' | 'not between' | '<' | '<=' | '>' | '>=' | '==' | '<>' | '!=',\n time?: iobJS.AstroDate | string | Date | number,\n ): boolean {\n if (startTime && typeof startTime === 'string') {\n const pos = consts.astroListLow.indexOf(startTime.toLowerCase());\n if (pos !== -1) {\n const aTime = sandbox.getAstroDate(consts.astroList[pos]);\n if (aTime) {\n startTime = aTime.toLocaleTimeString([], {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n });\n } else {\n startTime = 0;\n }\n }\n } else if (startTime && isObject(startTime) && (startTime as iobJS.AstroDate).astro) {\n const aTime = sandbox.getAstroDate(\n (startTime as iobJS.AstroDate).astro,\n (startTime as iobJS.AstroDate).date || new Date(),\n (startTime as iobJS.AstroDate).offset || 0,\n );\n if (aTime) {\n startTime = aTime.toLocaleTimeString([], {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n });\n } else {\n startTime = 0;\n }\n }\n\n if (endTime && typeof endTime === 'string') {\n const pos = consts.astroListLow.indexOf(endTime.toLowerCase());\n if (pos !== -1) {\n const aTime = sandbox.getAstroDate(consts.astroList[pos]);\n endTime =\n aTime?.toLocaleTimeString([], {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n }) || 0;\n }\n } else if (endTime && isObject(endTime) && (endTime as iobJS.AstroDate).astro) {\n const aTime = sandbox.getAstroDate(\n (endTime as iobJS.AstroDate).astro,\n (endTime as iobJS.AstroDate).date || new Date(),\n (endTime as iobJS.AstroDate).offset || 0,\n );\n endTime =\n aTime?.toLocaleTimeString([], {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n }) || 0;\n }\n\n // --- Convert \"time\" to number\n let nTime: number | undefined;\n // maybe it is astro date like 'sunrise' or 'sunset'\n if (time && typeof time === 'string') {\n const pos = consts.astroListLow.indexOf(time.toLowerCase());\n if (pos !== -1) {\n nTime = sandbox.getAstroDate(consts.astroList[pos])?.getTime() || 0;\n }\n } else if (time && isObject(time) && (time as iobJS.AstroDate).astro) {\n nTime =\n sandbox\n .getAstroDate(\n (time as iobJS.AstroDate).astro,\n (time as iobJS.AstroDate).date || new Date(),\n (time as iobJS.AstroDate).offset || 0,\n )\n ?.getTime() || 0;\n }\n\n let daily = true;\n if (time) {\n daily = false;\n }\n // if not astro date\n if (!nTime) {\n if (time && !isObject(time)) {\n if (typeof time === 'string' && !time.includes(' ') && !time.includes('T')) {\n const parts = time.split(':');\n const oTime = new Date();\n oTime.setHours(parseInt(parts[0], 10));\n oTime.setMinutes(parseInt(parts[1], 10));\n oTime.setMilliseconds(0);\n\n if (parts.length === 3) {\n oTime.setSeconds(parseInt(parts[2], 10));\n } else {\n oTime.setSeconds(0);\n }\n nTime = oTime.getTime();\n } else {\n nTime = new Date(time as string | number).getTime();\n }\n } else if (!time) {\n const oTime = new Date();\n oTime.setMilliseconds(0);\n nTime = oTime.getTime();\n } else {\n // If Date\n nTime = (time as Date).getTime();\n }\n }\n // --- End of conversion \"time\" to number\n if (typeof startTime === 'string') {\n if (!startTime.includes(' ') && !startTime.includes('T')) {\n const parts = startTime.split(':');\n startTime = new Date();\n startTime.setHours(parseInt(parts[0], 10));\n startTime.setMinutes(parseInt(parts[1], 10));\n startTime.setMilliseconds(0);\n\n if (parts.length === 3) {\n startTime.setSeconds(parseInt(parts[2], 10));\n } else {\n startTime.setSeconds(0);\n }\n } else {\n daily = false;\n startTime = new Date(startTime);\n }\n } else {\n daily = false;\n startTime = new Date(startTime as number | Date);\n }\n const nStartTime = startTime.getTime();\n\n let nEndTime: number | null;\n if (endTime && typeof endTime === 'string') {\n if (!endTime.includes(' ') && !endTime.includes('T')) {\n const parts = endTime.split(':');\n endTime = new Date();\n endTime.setHours(parseInt(parts[0], 10));\n endTime.setMinutes(parseInt(parts[1], 10));\n endTime.setMilliseconds(0);\n\n if (parts.length === 3) {\n endTime.setSeconds(parseInt(parts[2], 10));\n } else {\n endTime.setSeconds(0);\n }\n } else {\n daily = false;\n endTime = new Date(endTime);\n }\n } else if (endTime) {\n daily = false;\n endTime = new Date(endTime as number | Date);\n } else {\n endTime = null;\n }\n\n if (endTime) {\n nEndTime = endTime.getTime();\n } else {\n nEndTime = null;\n }\n\n if (operation === 'between') {\n if (nEndTime) {\n if (nStartTime > nEndTime && daily) {\n return !(nTime >= nEndTime && nTime < nStartTime);\n }\n return nTime >= nStartTime && nTime < nEndTime;\n }\n sandbox.log(`missing or unrecognized endTime expression: ${JSON.stringify(endTime)}`, 'warn');\n return false;\n }\n\n if (operation === 'not between') {\n if (nEndTime) {\n if (nStartTime > nEndTime && daily) {\n return nTime >= nEndTime && nTime < nStartTime;\n }\n return !(nTime >= nStartTime && nTime < nEndTime);\n }\n sandbox.log(`missing or unrecognized endTime expression: ${JSON.stringify(endTime)}`, 'warn');\n return false;\n }\n\n if (operation === '>') {\n return nTime > nStartTime;\n }\n if (operation === '>=') {\n return nTime >= nStartTime;\n }\n if (operation === '<') {\n return nTime < nStartTime;\n }\n if (operation === '<=') {\n return nTime <= nStartTime;\n }\n if (operation === '==') {\n return nTime === nStartTime;\n }\n if (operation === '<>' || operation === '!=') {\n return nTime !== nStartTime;\n }\n sandbox.log(`Invalid operator: ${operation as string}`, 'warn');\n return false;\n },\n onStop: function (cb: () => void, timeout?: number): void {\n if (sandbox.verbose) {\n sandbox.log(`onStop(timeout=${timeout})`, 'info');\n }\n\n script.onStopCb = cb;\n script.onStopTimeout = timeout || 1000;\n },\n formatValue: function (value: number | string, decimals: number | string, format?: string): string {\n if (typeof decimals === 'string') {\n format = decimals;\n decimals = 0;\n }\n if (!format) {\n if (adapter.isFloatComma !== undefined) {\n format = adapter.isFloatComma ? '.,' : ',.';\n } else if (objects['system.config'] && objects['system.config'].common) {\n format = objects['system.config'].common.isFloatComma ? '.,' : ',.';\n }\n }\n return adapter.formatValue(value, decimals, format);\n },\n formatDate: function (\n date: Date | string | number | iobJS.AstroDate,\n format?: string,\n language?: ioBroker.Languages,\n ): string {\n if (!format) {\n if (adapter.dateFormat) {\n format = adapter.dateFormat;\n } else {\n format =\n objects['system.config'] && objects['system.config'].common\n ? objects['system.config'].common.dateFormat || 'DD.MM.YYYY'\n : 'DD.MM.YYYY';\n }\n format = format || 'DD.MM.YYYY';\n }\n // maybe it is astro date like 'sunrise' or 'sunset'\n if (date && typeof date === 'string') {\n const pos = consts.astroListLow.indexOf(date.toLowerCase());\n if (pos !== -1) {\n date = sandbox.getAstroDate(consts.astroList[pos])?.getTime() || 0;\n }\n } else if (date && isObject(date) && (date as iobJS.AstroDate).astro) {\n date =\n sandbox\n .getAstroDate(\n (date as iobJS.AstroDate).astro,\n (date as iobJS.AstroDate).date || new Date(),\n (date as iobJS.AstroDate).offset || 0,\n )\n ?.getTime() || 0;\n }\n\n if (format.match(/[WНOО]+/)) {\n let text: string = adapter.formatDate(date as Date | string | number, format);\n if (!language || !consts.dayOfWeeksFull[language]) {\n language =\n adapter.language ||\n (objects['system.config'] &&\n objects['system.config'].common &&\n objects['system.config'].common.language) ||\n 'en';\n if (!consts.dayOfWeeksFull[language as ioBroker.Languages]) {\n language = 'en';\n }\n }\n if (typeof date === 'number' || typeof date === 'string') {\n date = new Date(date);\n } else if (typeof (date as Date).getMonth !== 'function') {\n sandbox.log(`Invalid date object provided: ${JSON.stringify(date)}`, 'error');\n return 'Invalid date';\n }\n const d: number = (date as Date).getDay();\n text = text.replace('НН', consts.dayOfWeeksFull[language as ioBroker.Languages][d]);\n let initialText = text;\n text = text.replace('WW', consts.dayOfWeeksFull[language as ioBroker.Languages][d]);\n\n if (initialText === text) {\n text = text.replace('W', consts.dayOfWeeksShort[language as ioBroker.Languages][d]);\n }\n\n text = text.replace('Н', consts.dayOfWeeksShort[language as ioBroker.Languages][d]);\n text = text.replace('Н', consts.dayOfWeeksShort[language as ioBroker.Languages][d]);\n const m: number = (date as Date).getMonth();\n initialText = text;\n text = text.replace('OOO', consts.monthFullGen[language as ioBroker.Languages][m]);\n text = text.replace('ООО', consts.monthFullGen[language as ioBroker.Languages][m]);\n text = text.replace('OO', consts.monthFull[language as ioBroker.Languages][m]);\n text = text.replace('ОО', consts.monthFull[language as ioBroker.Languages][m]);\n\n if (initialText === text) {\n text = text.replace('O', consts.monthShort[language as ioBroker.Languages][m]);\n }\n return text;\n }\n return adapter.formatDate(date as string | number | Date, format);\n },\n formatTimeDiff: function (diff: number, format?: string): string {\n if (!format) {\n format = 'hh:mm:ss';\n }\n\n let text = format;\n\n if (sandbox.verbose) {\n sandbox.log(`formatTimeDiff(format=${format}, diff=${diff})`, 'debug');\n }\n\n const second = 1000;\n const minute = 60 * second;\n const hour = 60 * minute;\n const day = 24 * hour;\n const neg = diff < 0;\n diff = Math.abs(diff);\n\n if (FTD_TEST_D.test(text)) {\n const days = Math.floor(diff / day);\n\n text = text.replace(FTD_REPL_DD, days.toString().padStart(2, '0')).replace(FTD_REPL_D, days.toString());\n\n if (sandbox.verbose) {\n sandbox.log(`formatTimeDiff(format=${format}, text=${text}, days=${days})`, 'debug');\n }\n\n diff -= days * day;\n }\n\n if (FTD_TEST_H.test(text)) {\n const hours = Math.floor(diff / hour);\n\n text = text\n .replace(FTD_REPL_HH, hours.toString().padStart(2, '0'))\n .replace(FTD_REPL_H, hours.toString());\n\n if (sandbox.verbose) {\n sandbox.log(`formatTimeDiff(format=${format}, text=${text}, hours=${hours})`, 'debug');\n }\n\n diff -= hours * hour;\n }\n\n if (FTD_TEST_M.test(text)) {\n const minutes = Math.floor(diff / minute);\n\n text = text\n .replace(FTD_REPL_MM, minutes.toString().padStart(2, '0'))\n .replace(FTD_REPL_M, minutes.toString());\n\n if (sandbox.verbose) {\n sandbox.log(`formatTimeDiff(format=${format}, text=${text}, minutes=${minutes})`, 'debug');\n }\n\n diff -= minutes * minute;\n }\n\n if (FTD_TEST_S.test(text)) {\n const seconds = Math.floor(diff / second);\n\n text = text\n .replace(FTD_REPL_SS, seconds.toString().padStart(2, '0'))\n .replace(FTD_REPL_S, seconds.toString());\n\n if (sandbox.verbose) {\n sandbox.log(`formatTimeDiff(format=${format}, text=${text}, seconds=${seconds})`, 'debug');\n }\n }\n\n for (const [pattern, replacement] of FTD_UNESCAPE) {\n text = text.replace(pattern, replacement);\n }\n\n if (sandbox.verbose) {\n sandbox.log(`formatTimeDiff(format=${format}, text=${text})`, 'debug');\n }\n\n return neg ? `-${text}` : text;\n },\n getDateObject: function (date: Date | number | string): Date {\n if (isObject(date)) {\n return date as Date;\n }\n if (typeof date === 'undefined') {\n return new Date();\n }\n if (typeof date !== 'string') {\n return new Date(date);\n }\n\n // If only hours: 20, 2\n if (date.match(/^\\d?\\d$/)) {\n const _now = new Date();\n date = `${_now.getFullYear()}-${_now.getMonth() + 1}-${_now.getDate()} ${date}:00`;\n } else if (date.match(/^\\d?\\d:\\d\\d(:\\d\\d)?$/)) {\n // 20:00, 2:00, 20:00:00, 2:00:00\n const now = new Date();\n date = `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()} ${date}`;\n }\n\n return new Date(date);\n },\n writeFile: function (\n _adapter: string,\n fileName: string,\n data: string | Buffer | ((err: Error) => void),\n callback?: (err?: Error | null) => void,\n ): void {\n if (typeof data === 'function' || !data) {\n callback = data as (err?: Error | null) => void;\n data = fileName;\n fileName = _adapter;\n _adapter = '0_userdata.0';\n }\n _adapter = _adapter || '0_userdata.0';\n\n if (debug) {\n sandbox.log(\n `writeFile(adapter=${_adapter}, fileName=${fileName}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n if (typeof callback === 'function') {\n setTimeout(function (): void {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }, 0);\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log(`writeFile(adapter=${_adapter}, fileName=${fileName})`, 'info');\n }\n if (callback) {\n adapter.writeFile(_adapter, fileName, data, callback);\n } else {\n // @ts-expect-error should be fixed in js-controller\n adapter.writeFile(_adapter, fileName, data);\n }\n }\n },\n readFile: function (\n _adapter: string,\n fileName: string | ((err: Error | null | undefined, data?: Buffer | string, mimeType?: string) => void),\n callback?: (err: Error | null | undefined, data?: Buffer | string, mimeType?: string) => void,\n ): void {\n if (typeof fileName === 'function') {\n callback = fileName;\n fileName = _adapter;\n _adapter = '0_userdata.0';\n }\n if (typeof callback !== 'function') {\n sandbox.log(`readFile(adapter=${_adapter}, fileName=${fileName}): no callback`, 'error');\n return;\n }\n _adapter = _adapter || '0_userdata.0';\n if (sandbox.verbose) {\n sandbox.log(`readFile(adapter=${_adapter}, fileName=${fileName})`, 'info');\n }\n\n adapter.fileExists(_adapter, fileName, (error: Error | null | undefined, result?: boolean): void => {\n if (error) {\n callback(error);\n } else if (!result) {\n callback(new Error('Not exists'));\n } else {\n adapter.readFile(_adapter, fileName, callback);\n }\n });\n },\n unlink: function (\n _adapter: string,\n fileName: string | ((err?: Error | null) => void),\n callback?: (err?: Error | null) => void,\n ): void {\n if (typeof fileName === 'function') {\n callback = fileName;\n fileName = _adapter;\n _adapter = '0_userdata.0';\n }\n _adapter = _adapter || '0_userdata.0';\n\n if (debug) {\n sandbox.log(\n `unlink(adapter=${_adapter}, fileName=${fileName}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n if (typeof callback === 'function') {\n setTimeout(function (): void {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }, 0);\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log(`unlink(adapter=${_adapter}, fileName=${fileName})`, 'info');\n }\n if (callback) {\n adapter.unlink(_adapter, fileName, callback);\n } else {\n // @ts-expect-error should be fixed in js-controller\n adapter.unlink(_adapter, fileName);\n }\n }\n },\n delFile: function (\n _adapter: string,\n fileName: string | ((err?: Error | null) => void),\n callback?: (err?: Error | null) => void,\n ): void {\n return sandbox.unlink(_adapter, fileName as string, callback);\n },\n rename: function (\n _adapter: string,\n oldName: string,\n newName: string,\n callback?: (err?: Error | null) => void,\n ): void {\n _adapter = _adapter || '0_userdata.0';\n\n if (debug) {\n sandbox.log(\n `rename(adapter=${_adapter}, oldName=${oldName}, newName=${newName}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n if (typeof callback === 'function') {\n setTimeout(function () {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }, 0);\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log(`rename(adapter=${_adapter}, oldName=${oldName}, newName=${newName})`, 'info');\n }\n if (callback) {\n adapter.rename(_adapter, oldName, newName, callback);\n } else {\n // @ts-expect-error should be fixed in js-controller\n adapter.rename(_adapter, oldName, newName);\n }\n }\n },\n renameFile: function (\n _adapter: string,\n oldName: string,\n newName: string,\n callback?: (err?: Error | null) => void,\n ): void {\n return sandbox.rename(_adapter, oldName, newName, callback);\n },\n getHistory: function (\n instance: string | (ioBroker.GetHistoryOptions & { id: string; timeout?: number | string }),\n options:\n | (ioBroker.GetHistoryOptions & { id?: string; timeout?: number | string })\n | ((\n error: Error | null,\n result?: ioBroker.GetHistoryResult | null,\n options?: ioBroker.GetHistoryOptions & { id: string; timeout?: number | string },\n instance?: string,\n ) => void),\n callback?: (\n error: Error | null,\n result?: ioBroker.GetHistoryResult | null,\n options?: ioBroker.GetHistoryOptions & { id: string; timeout?: number | string },\n instance?: string,\n ) => void,\n ): void {\n if (isObject(instance)) {\n callback = options as (\n error: Error | null,\n result?: ioBroker.GetHistoryResult | null,\n options?: ioBroker.GetHistoryOptions & { id: string; timeout?: number | string },\n instance?: string,\n ) => void;\n options = instance as ioBroker.GetHistoryOptions & { id?: string; timeout?: number | string };\n instance = '';\n }\n\n if (typeof callback !== 'function') {\n return sandbox.log('No callback found!', 'error');\n }\n if (!isObject(options)) {\n return sandbox.log('No options found!', 'error');\n }\n if (!(options as ioBroker.GetHistoryOptions & { id?: string; timeout?: number | string }).id) {\n return sandbox.log('No ID found!', 'error');\n }\n const timeoutMs =\n parseInt(\n (options as ioBroker.GetHistoryOptions & { id?: string; timeout?: number })\n ?.timeout as unknown as string,\n 10,\n ) || 20000;\n\n if (!instance) {\n // @ts-expect-error defaultHistory is private attribute of adapter. Fix later\n if (adapter.defaultHistory) {\n // @ts-expect-error defaultHistory is private attribute of adapter. Fix later\n instance = adapter.defaultHistory;\n } else {\n instance = objects['system.config']?.common?.defaultHistory || null;\n }\n }\n\n if (sandbox.verbose) {\n sandbox.log(`getHistory(instance=${instance as string}, options=${JSON.stringify(options)})`, 'info');\n }\n\n if (!instance) {\n sandbox.log('No default history instance found!', 'error');\n try {\n callback.call(sandbox, new Error('No default history instance found!'));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n return;\n }\n if ((instance as string).startsWith('system.adapter.')) {\n instance = (instance as string).substring('system.adapter.'.length);\n }\n\n if (!objects[`system.adapter.${instance as string}`]) {\n sandbox.log(`Instance \"${instance as string}\" not found!`, 'error');\n try {\n callback.call(sandbox, new Error(`Instance \"${instance as string}\" not found!`));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n return;\n }\n\n let _timeout: NodeJS.Timeout | null = setTimeout(() => {\n _timeout = null;\n if (sandbox.verbose) {\n sandbox.log('getHistory => timeout', 'debug');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(\n sandbox,\n new Error('Timeout'),\n null,\n options as ioBroker.GetHistoryOptions & { id: string; timeout?: number | string },\n instance as string,\n );\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n callback = undefined;\n }\n }, timeoutMs);\n\n adapter.sendTo(\n instance as string,\n 'getHistory',\n {\n id: (options as ioBroker.GetHistoryOptions & { id: string; timeout?: number | string }).id,\n options,\n },\n (res: any): void => {\n if (_timeout) {\n clearTimeout(_timeout);\n _timeout = null;\n }\n const result: {\n error?: string;\n result?: ioBroker.GetHistoryResult;\n step?: number;\n sessionId?: string;\n } = res;\n\n if (sandbox.verbose && result?.error) {\n sandbox.log(`getHistory => ${result.error}`, 'error');\n }\n if (sandbox.verbose && result?.result) {\n sandbox.log(`getHistory => ${result.result.length} items`, 'debug');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(\n sandbox,\n result.error ? new Error(result.error) : null,\n result.result,\n options as ioBroker.GetHistoryOptions & { id: string; timeout?: number | string },\n instance as string,\n );\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n callback = undefined;\n }\n },\n );\n },\n runScript: function (scriptName: string, callback?: (err?: Error | null) => void): boolean {\n scriptName = scriptName || name;\n if (!scriptName.match(/^script\\.js\\./)) {\n scriptName = `script.js.${scriptName}`;\n }\n // start another script\n if (!objects[scriptName] || !objects[scriptName].common) {\n sandbox.log(`Cannot start \"${scriptName}\", because not found`, 'error');\n return false;\n }\n if (debug) {\n sandbox.log(\n `runScript(scriptName=${scriptName}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n typeof callback === 'function' && callback();\n return true;\n }\n if (objects[scriptName].common.enabled) {\n objects[scriptName].common.enabled = false;\n adapter.extendForeignObject(scriptName, { common: { enabled: false } }, (/* err, obj */) => {\n adapter.extendForeignObject(\n scriptName,\n { common: { enabled: true } },\n err => typeof callback === 'function' && callback(err),\n );\n });\n return true;\n }\n adapter.extendForeignObject(\n scriptName,\n { common: { enabled: true } },\n err => typeof callback === 'function' && callback(err),\n );\n return true;\n },\n runScriptAsync: function (scriptName: string): Promise {\n let done = false;\n return new Promise((resolve, reject) => {\n const result = sandbox.runScript(scriptName, err => {\n if (err) {\n reject(err);\n done = true;\n } else {\n resolve();\n }\n });\n if (result === false && !done) {\n reject(new Error(`Script ${scriptName} was not found!`));\n }\n });\n },\n startScript: function (\n scriptName: string,\n ignoreIfStarted?: boolean | ((err: Error | null | undefined, started: boolean) => void),\n callback?: (err: Error | null | undefined, started: boolean) => void,\n ): boolean {\n if (typeof ignoreIfStarted === 'function') {\n callback = ignoreIfStarted;\n ignoreIfStarted = false;\n }\n scriptName ||= name;\n if (!scriptName.match(/^script\\.js\\./)) {\n scriptName = `script.js.${scriptName}`;\n }\n // start another script\n if (!objects[scriptName] || !objects[scriptName].common) {\n sandbox.log(`Cannot start \"${scriptName}\", because not found`, 'error');\n return false;\n }\n if (debug) {\n sandbox.log(\n `startScript(scriptName=${scriptName}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n typeof callback === 'function' && callback(null, false);\n return true;\n }\n if (objects[scriptName].common.enabled) {\n if (!ignoreIfStarted) {\n adapter.extendForeignObject(scriptName, { common: { enabled: false } }, () => {\n adapter.extendForeignObject(\n scriptName,\n { common: { enabled: true } },\n err => typeof callback === 'function' && callback(err, true),\n );\n });\n } else if (typeof callback === 'function') {\n callback(null, false);\n }\n return true;\n }\n adapter.extendForeignObject(scriptName, { common: { enabled: true } }, err => {\n typeof callback === 'function' && callback(err, true);\n });\n return true;\n },\n startScriptAsync: function (scriptName: string, ignoreIfStarted?: boolean): Promise {\n return new Promise((resolve, reject) => {\n const result = sandbox.startScript(\n scriptName,\n !!ignoreIfStarted,\n (err: Error | null | undefined, started: boolean): void => {\n if (err) {\n reject(err);\n } else {\n resolve(started);\n }\n },\n );\n if (result === false) {\n reject(new Error(`Script ${scriptName} was not found!`));\n }\n });\n },\n stopScript: function (\n scriptName: string,\n callback?: (err: Error | null | undefined, stopped: boolean) => void,\n ): boolean {\n scriptName = scriptName || name;\n\n if (!scriptName.match(/^script\\.js\\./)) {\n scriptName = `script.js.${scriptName}`;\n }\n\n // stop another script\n if (!objects[scriptName] || !objects[scriptName].common) {\n sandbox.log(`Cannot stop \"${scriptName}\", because not found`, 'error');\n return false;\n }\n if (debug) {\n sandbox.log(\n `stopScript(scriptName=${scriptName}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n if (typeof callback === 'function') {\n callback(null, false);\n }\n return true;\n }\n if (objects[scriptName].common.enabled) {\n objects[scriptName].common.enabled = false;\n adapter.extendForeignObject(scriptName, { common: { enabled: false } }, err => {\n if (typeof callback === 'function') {\n callback(err, true);\n }\n });\n } else if (typeof callback === 'function') {\n callback(null, false);\n }\n return true;\n },\n stopScriptAsync: function (scriptName: string): Promise {\n return new Promise((resolve, reject) => {\n const result = sandbox.stopScript(\n scriptName,\n (err: Error | null | undefined, stopped: boolean): void => {\n if (err) {\n reject(err);\n } else {\n resolve(stopped);\n }\n },\n );\n if (result === false) {\n reject(new Error(`Script ${scriptName} was not found!`));\n }\n });\n },\n isScriptActive: function (scriptName: string): boolean {\n if (!scriptName.match(/^script\\.js\\./)) {\n scriptName = `script.js.${scriptName}`;\n }\n if (!objects[scriptName] || !objects[scriptName].common) {\n sandbox.log('Script does not exist', 'error');\n return false;\n }\n return objects[scriptName].common.enabled;\n },\n startInstanceAsync: async function (instanceName: string): Promise {\n const objInstanceId = `system.adapter.${instanceName}`;\n const exists = await adapter.foreignObjectExists(objInstanceId);\n\n if (exists) {\n const instanceObj = await adapter.getForeignObjectAsync(objInstanceId);\n\n if (instanceObj?.type === 'instance' && !instanceObj.common.enabled) {\n await adapter.extendForeignObjectAsync(objInstanceId, { common: { enabled: true } });\n\n if (sandbox.verbose) {\n sandbox.log(`startInstanceAsync (instanceName=${instanceName})`, 'info');\n }\n\n return true;\n }\n sandbox.log(`Cannot start instance \"${instanceName}\", because already running`, 'warn');\n } else {\n sandbox.log(`Cannot start instance \"${instanceName}\", because not found`, 'error');\n }\n\n return false;\n },\n restartInstanceAsync: async function (instanceName: string): Promise {\n const objInstanceId = `system.adapter.${instanceName}`;\n const exists = await adapter.foreignObjectExists(objInstanceId);\n\n if (exists) {\n const instanceObj = await adapter.getForeignObjectAsync(objInstanceId);\n\n if (instanceObj?.type === 'instance' && instanceObj.common.enabled) {\n await adapter.extendForeignObjectAsync(objInstanceId, {});\n\n if (sandbox.verbose) {\n sandbox.log(`restartInstanceAsync (instanceName=${instanceName})`, 'info');\n }\n\n return true;\n }\n sandbox.log(`Cannot restart instance \"${instanceName}\", because not running`, 'warn');\n } else {\n sandbox.log(`Cannot restart instance \"${instanceName}\", because not found`, 'error');\n }\n\n return false;\n },\n stopInstanceAsync: async function (instanceName: string): Promise {\n const objInstanceId = `system.adapter.${instanceName}`;\n const exists = await adapter.foreignObjectExists(objInstanceId);\n\n if (exists) {\n const instanceObj = await adapter.getForeignObjectAsync(objInstanceId);\n\n if (instanceObj?.type === 'instance' && instanceObj.common.enabled) {\n await adapter.extendForeignObjectAsync(objInstanceId, { common: { enabled: false } });\n\n if (sandbox.verbose) {\n sandbox.log(`stopInstanceAsync (instanceName=${instanceName})`, 'info');\n }\n\n return true;\n }\n sandbox.log(`Cannot stop instance \"${instanceName}\", because not running`, 'warn');\n } else {\n sandbox.log(`Cannot stop instance \"${instanceName}\", because not found`, 'error');\n }\n\n return false;\n },\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n toInt: function (val: boolean | string | number | 'true' | 'false'): number {\n if (val === true || val === 'true') {\n val = 1;\n }\n if (val === false || val === 'false') {\n val = 0;\n }\n val = parseInt(val as unknown as string) || 0;\n return val;\n },\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n toFloat: function (val: boolean | string | number | 'true' | 'false'): number {\n if (val === true || val === 'true') {\n val = 1;\n }\n if (val === false || val === 'false') {\n val = 0;\n }\n val = parseFloat(val as unknown as string) || 0;\n return val;\n },\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n toBoolean: function (val: boolean | string | number | 'true' | 'false'): boolean {\n if (val === '1' || val === 'true') {\n val = true;\n }\n if (val === '0' || val === 'false') {\n val = false;\n }\n return !!val;\n },\n getAttr: function (obj: string | Record, path: string | string[]): any {\n if (typeof path === 'string') {\n path = path.split('.');\n }\n if (typeof obj === 'string') {\n try {\n obj = JSON.parse(obj);\n } catch (err: unknown) {\n void adapter.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'getAttr',\n });\n sandbox.log(`Cannot parse \"${obj.substring(0, 30)}\": ${err as Error}`, 'error');\n\n return null;\n }\n }\n\n const attr: string = path.shift() || '';\n try {\n obj = (obj as Record)[attr];\n } catch (err: unknown) {\n void adapter.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'getAttr',\n });\n sandbox.log(`Cannot get ${attr} of \"${JSON.stringify(obj)}\": ${err as Error}`, 'error');\n\n return null;\n }\n\n if (!path.length) {\n return obj;\n }\n const type = typeof obj;\n if (obj === null || obj === undefined || type === 'boolean' || type === 'number') {\n return null;\n }\n return sandbox.getAttr(obj, path);\n },\n messageTo: function (\n target: string | { instance: string | null | number; script: string | null; message: string },\n data: any,\n options: { timeout?: number | string } | ((result: any, options: { timeout?: number | string }) => void),\n callback?: (result: any, options: { timeout?: number | string }, instance: string | number | null) => void,\n ) {\n const defaultTimeout = 5000;\n\n if (typeof target !== 'object') {\n target = { instance: null, script: null, message: target };\n }\n if (typeof options === 'function') {\n callback = options;\n options = { timeout: defaultTimeout };\n }\n\n let timeout: NodeJS.Timeout | null = null;\n if (typeof callback === 'function') {\n const timeoutDuration = parseInt(options?.timeout as unknown as string, 10) || defaultTimeout;\n\n timeout = setTimeout(() => {\n timeout = null;\n\n if (sandbox.verbose) {\n sandbox.log(`messageTo => timeout: ${timeoutDuration}`, 'debug');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, { error: 'timeout' }, options, target.instance);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n callback = undefined;\n }\n }, timeoutDuration);\n }\n let cbFunc: undefined | ((result: any) => void);\n if (timeout) {\n cbFunc = function (res: any) {\n timeout && clearTimeout(timeout);\n const result: { result?: any; error?: string | null } = res;\n\n if (sandbox.verbose && result?.result) {\n sandbox.log(`messageTo => ${JSON.stringify(result)}`, 'debug');\n }\n if (sandbox.verbose && result?.error) {\n sandbox.log(`messageTo => ${result.error}`, 'error');\n }\n\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, result, options, target.instance);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n callback = undefined;\n }\n };\n }\n\n if (target.instance || target.instance === 0) {\n if (\n typeof target.instance === 'string' &&\n target.instance &&\n target.instance.startsWith('system.adapter.')\n ) {\n target.instance = target.instance.substring('system.adapter.'.length);\n } else if (typeof target.instance === 'number') {\n target.instance = `javascript.${target.instance}`;\n }\n\n adapter.sendTo(\n target.instance,\n 'jsMessageBus',\n { message: target.message, script: target.script, data },\n cbFunc,\n );\n } else {\n // Send it to all instances\n context.adapter.getObjectView(\n 'system',\n 'instance',\n { startkey: 'system.adapter.javascript.', endkey: 'system.adapter.javascript.\\u9999' },\n options,\n (err: Error | null | undefined, res): void => {\n if (err || !res) {\n sandbox.log(`messageTo failed: ${err?.message}`, 'error');\n return;\n }\n const len = 'system.adapter.'.length;\n const instances = res.rows.map(item => item.id.substring(len));\n\n instances.forEach(instance => {\n adapter.sendTo(\n instance,\n 'jsMessageBus',\n { message: target.message, script: target.script, data },\n cbFunc,\n );\n });\n },\n );\n }\n },\n messageToAsync: function (\n target: string | { instance: string | null | number; script: string | null; message: string },\n data: any,\n options?: { timeout?: number | string },\n ): Promise {\n return new Promise((resolve, reject) => {\n sandbox.messageTo(target, data, options, (res: any): void => {\n const result: { error?: string } = res;\n if (sandbox.verbose) {\n sandbox.log(`messageTo result => ${JSON.stringify(res)}`, 'debug');\n }\n if (!res || result.error) {\n reject(result ? new Error(result.error) : new Error('Unknown error'));\n } else {\n resolve(result);\n }\n });\n });\n },\n onMessage: function (\n messageName: string,\n callback: (data: any, cb: (result: any) => void) => void,\n ): null | number {\n if (typeof callback !== 'function') {\n sandbox.log('onMessage callback is not a function', 'error');\n\n return null;\n }\n context.messageBusHandlers[sandbox.scriptName] = context.messageBusHandlers[sandbox.scriptName] || {};\n context.messageBusHandlers[sandbox.scriptName][messageName] =\n context.messageBusHandlers[sandbox.scriptName][messageName] || [];\n\n const handler = { id: _handlerIdCounter++, cb: callback, sandbox };\n context.messageBusHandlers[sandbox.scriptName][messageName].push(handler);\n\n sandbox.__engine.__subscriptionsMessage += 1;\n\n if (\n sandbox.__engine.__subscriptionsMessage %\n (adapter.config as JavaScriptAdapterConfig).maxTriggersPerScript ===\n 0\n ) {\n sandbox.log(\n `More than ${sandbox.__engine.__subscriptionsMessage} message subscriptions registered. Check your script!`,\n 'warn',\n );\n }\n\n return handler.id;\n },\n onMessageUnregister: function (idOrName: number | string): boolean {\n const ctx = context.messageBusHandlers[sandbox.scriptName];\n let found = false;\n if (ctx) {\n if (typeof idOrName === 'number') {\n outer: for (const messageName of Object.keys(ctx)) {\n for (let i = 0; i < ctx[messageName].length; i++) {\n if (ctx[messageName][i].id === idOrName) {\n ctx[messageName].splice(i, 1);\n if (!ctx[messageName].length) {\n delete ctx[messageName];\n sandbox.__engine.__subscriptionsMessage--;\n }\n found = true;\n break outer;\n }\n }\n }\n } else if (idOrName && ctx[idOrName]) {\n delete ctx[idOrName];\n sandbox.__engine.__subscriptionsMessage--;\n found = true;\n }\n }\n return found;\n },\n console: {\n log: function (msg: string): void {\n sandbox.log(msg, 'info');\n },\n error: function (msg: string): void {\n sandbox.log(msg, 'error');\n },\n warn: function (msg: string): void {\n sandbox.log(msg, 'warn');\n },\n info: function (msg: string): void {\n sandbox.log(msg, 'info');\n },\n debug: function (msg: string): void {\n sandbox.log(msg, 'debug');\n },\n },\n jsonataExpression: function (data: any, expression: string): Promise {\n return jsonata(expression).evaluate(data);\n },\n wait: function (ms: number): Promise {\n return new Promise((resolve: () => void): void => {\n sandbox.setTimeout(resolve, ms);\n });\n },\n sleep: function (ms: number): Promise {\n return sandbox.wait(ms);\n },\n onObject: function (\n pattern: string | string[],\n callback: (id: string, obj?: ioBroker.Object | null) => void,\n ): SubscribeObject | SubscribeObject[] | null {\n return sandbox.subscribeObject(pattern, callback);\n },\n subscribeObject: function (\n pattern: string | string[],\n callback: (id: string, obj?: ioBroker.Object | null) => void,\n ): SubscribeObject | SubscribeObject[] | null {\n if (Array.isArray(pattern)) {\n const result: {\n name: string;\n pattern: string;\n callback: (id: string, obj?: ioBroker.Object | null) => void;\n }[] = [];\n for (let p = 0; p < pattern.length; p++) {\n result.push(\n sandbox.subscribeObject(pattern[p], callback) as {\n name: string;\n pattern: string;\n callback: (id: string, obj?: ioBroker.Object | null) => void;\n },\n );\n }\n return result;\n }\n\n sandbox.__engine.__subscriptionsObject += 1;\n\n if (\n sandbox.__engine.__subscriptionsObject %\n (adapter.config as JavaScriptAdapterConfig).maxTriggersPerScript ===\n 0\n ) {\n sandbox.log(\n `More than ${sandbox.__engine.__subscriptionsObject} object subscriptions registered. Check your script!`,\n 'warn',\n );\n }\n\n // source is set by regexp if defined as /regexp/\n if (!pattern || typeof pattern !== 'string') {\n sandbox.log('Error by subscribeObject: pattern can be only string or array of strings.', 'error');\n return null;\n }\n\n if (typeof callback !== 'function') {\n sandbox.log('Error by subscribeObject: callback is not a function', 'error');\n return null;\n }\n\n const subs: SubscribeObject = { pattern, callback, name };\n if (sandbox.verbose) {\n sandbox.log(`subscribeObject: ${JSON.stringify(subs)}`, 'info');\n }\n\n adapter.subscribeForeignObjects(pattern);\n\n context.subscriptionsObject.push(subs);\n // Keep O(1) dispatch map in sync\n if (!context.subscriptionsObjectMap.has(pattern)) {\n context.subscriptionsObjectMap.set(pattern, []);\n }\n context.subscriptionsObjectMap.get(pattern)!.push(subs);\n\n return subs;\n },\n unsubscribeObject: function (subObject: SubscribeObject | SubscribeObject[]): boolean | boolean[] {\n if (subObject && Array.isArray(subObject)) {\n const result: boolean[] = [];\n for (let t = 0; t < subObject.length; t++) {\n result.push(sandbox.unsubscribeObject(subObject[t]) as boolean);\n }\n return result;\n }\n\n if (sandbox.verbose) {\n sandbox.log(`adapterUnsubscribeObject(id=${JSON.stringify(subObject)})`, 'info');\n }\n\n for (let i = context.subscriptionsObject.length - 1; i >= 0; i--) {\n if (context.subscriptionsObject[i] === subObject) {\n adapter.unsubscribeForeignObjects(subObject.pattern);\n context.subscriptionsObject.splice(i, 1);\n // Keep O(1) dispatch map in sync\n const mapSubs = context.subscriptionsObjectMap.get(subObject.pattern);\n if (mapSubs) {\n const pos = mapSubs.indexOf(subObject);\n if (pos !== -1) {\n mapSubs.splice(pos, 1);\n }\n if (!mapSubs.length) {\n context.subscriptionsObjectMap.delete(subObject.pattern);\n }\n }\n sandbox.__engine.__subscriptionsObject--;\n return true;\n }\n }\n let deleted = 0;\n for (let i = context.subscriptionsObject.length - 1; i >= 0; i--) {\n if (\n context.subscriptionsObject[i].name &&\n context.subscriptionsObject[i].pattern === subObject.pattern\n ) {\n deleted++;\n adapter.unsubscribeForeignObjects(subObject.pattern);\n // Keep O(1) dispatch map in sync\n const mapSubsP = context.subscriptionsObjectMap.get(subObject.pattern);\n if (mapSubsP) {\n const pos = mapSubsP.indexOf(context.subscriptionsObject[i]);\n if (pos !== -1) {\n mapSubsP.splice(pos, 1);\n }\n if (!mapSubsP.length) {\n context.subscriptionsObjectMap.delete(subObject.pattern);\n }\n }\n context.subscriptionsObject.splice(i, 1);\n sandbox.__engine.__subscriptionsObject--;\n }\n }\n return !!deleted;\n },\n // internal function to send the block debugging info to the front-end\n _sendToFrontEnd: function (blockId: string, data: any): void {\n if (context.rulesOpened === sandbox.scriptName) {\n void adapter.setState(\n 'debug.rules',\n JSON.stringify({ ruleId: sandbox.scriptName, blockId, data, ts: Date.now() }),\n true,\n );\n }\n },\n existsStateAsync: function (_id: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n existsObjectAsync: function (_id: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n getObjectAsync: function (_id: string, _enumName: null | string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n setObjectAsync: function (_id: string, _obj: ioBroker.Object): Promise<{ id: string }> {\n return Promise.reject(new Error('Not implemented'));\n },\n extendObjectAsync: function (_id: string, _obj: Partial): Promise<{ id: string }> {\n return Promise.reject(new Error('Not implemented'));\n },\n deleteObjectAsync: function (_id: string, _isRecursive?: boolean): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n createStateAsync: function (\n _name: string,\n _initValue: undefined | ioBroker.StateValue | ioBroker.State,\n _forceCreation:\n | boolean\n | undefined\n | Record\n | Partial\n | ((err: Error | null) => void),\n _common?: Partial | ((err: Error | null) => void),\n _native?: Record | ((err: Error | null) => void),\n ): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n createAliasAsync: function (\n _name: string,\n _alias: string | CommonAlias,\n _forceCreation: boolean | Partial | undefined,\n _common?: Partial | Record,\n _native?: Record,\n ): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n deleteStateAsync: function (_id: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n writeFileAsync: function (\n _adapter: string,\n _fileName: string | Buffer,\n _data?: string | Buffer,\n ): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n readFileAsync: function (_adapter: string, _fileName?: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n unlinkAsync: function (_adapter: string, _fileName?: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n delFileAsync: function (_adapter: string, _fileName?: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n renameAsync: function (_adapter: string, _oldName: string, _newName?: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n renameFileAsync: function (_adapter: string, _oldName: string, _newName?: string): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n getHistoryAsync: function (\n _instance: string | (ioBroker.GetHistoryOptions & { id: string; timeout?: number | string }),\n _options?: ioBroker.GetHistoryOptions & { id?: string; timeout?: number | string },\n ): Promise {\n return Promise.reject(new Error('Not implemented'));\n },\n httpGetAsync: function (\n _url: string,\n _options?: {\n timeout?: number;\n responseType?: ResponseType;\n headers?: Record;\n basicAuth?: { user: string; password: string } | null;\n bearerAuth?: string;\n validateCertificate?: boolean;\n },\n ): Promise<{\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n }> {\n return Promise.reject(new Error('Not implemented'));\n },\n httpPostAsync: function (\n _url: string,\n _data: any,\n _options: {\n timeout?: number;\n responseType?: ResponseType;\n headers?: Record;\n basicAuth?: { user: string; password: string } | null;\n bearerAuth?: string;\n validateCertificate?: boolean;\n },\n ): Promise<{\n statusCode: number | null;\n data: any;\n headers: Record;\n responseTime: number;\n }> {\n return Promise.reject(new Error('Not implemented'));\n },\n };\n\n // Create advanced functions that can modify objects\n if ((adapter.config as JavaScriptAdapterConfig).enableSetObject) {\n sandbox.setObject = function (\n id: string,\n obj: ioBroker.Object,\n callback?: (err?: Error | null, res?: { id: string }) => void,\n ): void {\n if (id && typeof id === 'string' && id.startsWith('system.adapter.')) {\n sandbox.log(\n `Using setObject on system object ${id} can be dangerous (protected instance attributes may be lost)`,\n 'info',\n );\n }\n if (debug) {\n sandbox.log(\n `setObject(id=${id}, obj=${JSON.stringify(obj)}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n if (typeof callback === 'function') {\n setImmediate(function () {\n try {\n callback.call(sandbox, null, { id });\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n });\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log(`setObject(id=${id}, obj=${JSON.stringify(obj)})`, 'info');\n }\n adapter.setForeignObject(id, obj, (err, res) => {\n if (!err) {\n // Update meta object data\n context.updateObjectContext(id, obj);\n }\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, err, res);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n });\n }\n };\n sandbox.extendObject = function (\n id: string,\n obj: Partial,\n callback?: (err?: Error | null, obj?: { id: string }) => void,\n ): void {\n if (debug) {\n sandbox.log(\n `extendObject(id=${id}, obj=${JSON.stringify(obj)}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n if (typeof callback === 'function') {\n setTimeout(function () {\n try {\n callback.call(sandbox, null, { id });\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }, 0);\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log(`extendObject(id=${id}, obj=${JSON.stringify(obj)})`, 'info');\n }\n let objClone: Partial;\n try {\n objClone = structuredClone(obj);\n } catch (err: unknown) {\n // e.g. DataCloneError when the object contains functions\n void adapter.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'extendObject',\n });\n sandbox.log(`Object \"${id}\" can't be copied: ${JSON.stringify(err)}`, 'error');\n if (typeof callback === 'function') {\n try {\n callback.call(sandbox, new Error(`Object \"${id}\" can't be copied`));\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }\n return;\n }\n if (callback) {\n adapter.extendForeignObject(id, objClone, callback);\n } else {\n void adapter.extendForeignObject(id, objClone);\n }\n }\n };\n sandbox.deleteObject = function (id: string, isRecursive?: boolean, callback?: ioBroker.ErrorCallback): void {\n if (typeof isRecursive === 'function') {\n callback = isRecursive;\n isRecursive = false;\n }\n if (debug) {\n sandbox.log(\n `deleteObject(id=${id}) - ${words._('was not executed, while debug mode is active')}`,\n 'warn',\n );\n if (typeof callback === 'function') {\n setTimeout(function () {\n try {\n callback.call(sandbox);\n } catch (err: unknown) {\n errorInCallback(err as Error);\n }\n }, 0);\n }\n } else {\n if (sandbox.verbose) {\n sandbox.log(`deleteObject(id=${id})`, 'info');\n }\n adapter.delForeignObject(id, { recursive: isRecursive }, callback);\n }\n };\n }\n\n // promisify methods on the sandbox\n sandbox.existsStateAsync = promisify(sandbox.existsState);\n sandbox.existsObjectAsync = promisify(sandbox.existsObject);\n sandbox.getObjectAsync = promisify(sandbox.getObject);\n sandbox.setObjectAsync = promisify(sandbox.setObject);\n sandbox.extendObjectAsync = promisify(sandbox.extendObject);\n sandbox.deleteObjectAsync = promisify(sandbox.deleteObject);\n sandbox.createStateAsync = promisify(sandbox.createState);\n sandbox.createAliasAsync = promisify(sandbox.createAlias);\n sandbox.deleteStateAsync = promisify(sandbox.deleteState);\n sandbox.writeFileAsync = promisify(sandbox.writeFile);\n sandbox.readFileAsync = promisify(sandbox.readFile);\n sandbox.unlinkAsync = promisify(sandbox.unlink);\n sandbox.delFileAsync = promisify(sandbox.delFile);\n sandbox.renameAsync = promisify(sandbox.rename);\n sandbox.renameFileAsync = promisify(sandbox.renameFile);\n sandbox.getHistoryAsync = promisify(sandbox.getHistory);\n sandbox.httpGetAsync = promisify(sandbox.httpGet);\n sandbox.httpPostAsync = promisify(sandbox.httpPost);\n\n // Make all predefined properties and methods readonly so scripts cannot overwrite them\n for (const prop of Object.keys(sandbox)) {\n Object.defineProperty(sandbox, prop, {\n configurable: false,\n writable: false,\n });\n }\n\n // Shallow-freeze the console object exposed to scripts to prevent its methods from being overwritten\n // Note: __engine must NOT be frozen because its counter properties are mutated at runtime\n if (sandbox.console && typeof sandbox.console === 'object') {\n Object.freeze(sandbox.console);\n }\n\n return sandbox;\n}\n"]} \ No newline at end of file diff --git a/build/main.js b/build/main.js index d4d6e265..ce726029 100644 --- a/build/main.js +++ b/build/main.js @@ -3120,7 +3120,7 @@ class JavaScript extends adapter_core_1.Adapter { } async sunTimeSchedules() { if (this.config.createAstroStates) { - if (!isNaN(this.config.longitude) && !isNaN(this.config.longitude)) { + if (!isNaN(this.config.longitude) && !isNaN(this.config.latitude)) { const calcDate = getAstroStartOfDay(); const times = this.mods.suncalc.getTimes(calcDate, this.config.latitude, this.config.longitude); this.log.debug(`[sunTimeSchedules] Times: ${JSON.stringify(times)}`); diff --git a/build/main.js.map b/build/main.js.map index 5cd32fca..ca8259b2 100644 --- a/build/main.js.map +++ b/build/main.js.map @@ -1 +1 @@ -{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Javascript adapter\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2014-2024 bluefox ,\n *\n * Copyright (c) 2014 hobbyquaker\n */\n\nimport { Script, type ScriptOptions } from 'node:vm';\nimport { readFileSync, existsSync, statSync, writeFileSync, type Stats } from 'node:fs';\nimport { join, sep, normalize } from 'node:path';\nimport { fork, type ForkOptions } from 'node:child_process';\nimport { setTypeScriptResolveOptions, Server } from 'virtual-tsc';\nimport { isDeepStrictEqual } from 'node:util';\nimport prettier from 'prettier';\n\nimport * as dgram from 'node:dgram';\nimport * as crypto from 'node:crypto';\nimport * as dns from 'node:dns';\nimport * as events from 'node:events';\nimport * as http from 'node:http';\nimport * as https from 'node:https';\nimport * as http2 from 'node:http2';\nimport * as net from 'node:net';\nimport * as os from 'node:os';\nimport * as path from 'node:path';\nimport * as util from 'node:util';\nimport * as child_process from 'node:child_process';\nimport * as stream from 'node:stream';\nimport * as zlib from 'node:zlib';\n\n// @ts-expect-error no types available\nimport * as suncalc from 'suncalc2';\nimport * as axios from 'axios';\n// @ts-expect-error no types available\nimport * as wake_on_lan from 'wake_on_lan';\nimport * as nodeSchedule from 'node-schedule';\n\nimport {\n getAbsoluteDefaultDataDir,\n Adapter,\n Credentials,\n EXIT_CODES,\n type AdapterOptions,\n} from '@iobroker/adapter-core';\nimport type SentryPlugin from '@iobroker/plugin-sentry';\nimport type { GetTimesResult } from 'suncalc';\nimport type { CompileResult } from 'virtual-tsc/build/util';\n\nimport { Mirror } from './lib/mirror';\nimport ProtectFs from './lib/protectFs';\nimport { setLanguage, getLanguage } from './lib/words';\nimport { sandBox, removeFromDispatchIndex } from './lib/sandbox';\nimport { requestModuleNameByUrl } from './lib/nodeModulesManagement';\nimport {\n resolveProviderCredentials,\n resolveTestCredentials,\n listAvailableProviders,\n getProviderCredentialId,\n} from './lib/aiProviderResolver';\nimport {\n translateToolsToAnthropic,\n translateMessagesToAnthropic,\n translateAnthropicResponseToOpenAI,\n} from './lib/anthropicAdapter';\nimport { createEventObject, type EventObj } from './lib/eventObj';\nimport { type AstroEventName, Scheduler } from './lib/scheduler';\nimport { targetTsLib, tsCompilerOptions, jsDeclarationCompilerOptions } from './lib/typescriptSettings';\nimport { hashSource } from './lib/tools';\nimport {\n resolveTypescriptLibs,\n resolveTypings,\n scriptIdToTSFilename,\n transformScriptBeforeCompilation,\n transformGlobalDeclarations,\n} from './lib/typescriptTools';\nimport type {\n FileSubscriptionResult,\n JavascriptContext,\n JavaScriptAdapterConfig,\n JsScript,\n ScriptType,\n SubscriptionResult,\n SubscribeObject,\n JavascriptTimer,\n SandboxType,\n DebugState,\n} from './types';\nimport type { PatternEventCompareFunction } from './lib/patternCompareFunctions';\nimport { decryptText } from './lib/crypto';\n\ntype MODULES = {\n fs: ProtectFs;\n 'fs/promises': ProtectFs['promises'];\n dgram: typeof dgram;\n crypto: typeof crypto;\n dns: typeof dns;\n events: typeof events;\n http: typeof http;\n https: typeof https;\n http2: typeof http2;\n net: typeof net;\n os: typeof os;\n path: typeof path;\n util: typeof util;\n child_process: typeof child_process;\n stream: typeof stream;\n zlib: typeof zlib;\n suncalc: typeof suncalc;\n axios: typeof axios;\n wake_on_lan: typeof wake_on_lan;\n nodeSchedule: typeof nodeSchedule;\n};\n\n/**\n * List of forbidden Locations for a mirror directory\n * relative to the default data directory\n * ATTENTION: the same list is also located in index_m.html!!\n */\nconst forbiddenMirrorLocations: string[] = [\n 'backup-objects',\n 'files',\n 'backitup',\n '../backups',\n '../node_modules',\n '../log',\n];\n\nconst packageJson: Record = JSON.parse(readFileSync(`${__dirname}/../package.json`).toString());\nconst SCRIPT_CODE_MARKER = 'script.js.';\n\nlet webstormDebug: string | undefined;\n\nconst isCI = !!process.env.CI;\n\n// ambient declarations for typescript\nlet tsAmbient: Record;\n\n// TypeScript's scripts are only recompiled if their source hash changes.\n// If an adapter update fixes the compilation bugs, a user won't notice until the changes and re-save the script.\n// To avoid that, we also include the\n// adapter version and TypeScript version in the hash\nconst tsSourceHashBase = `versions:adapter=${packageJson.version},typescript=${packageJson.dependencies.typescript}`;\n\n// taken from here: https://stackoverflow.com/questions/11887934/how-to-check-if-dst-daylight-saving-time-is-in-effect-and-if-so-the-offset\nfunction dstOffsetAtDate(dateInput: Date): number {\n const fullYear: number = dateInput.getFullYear() | 0;\n // \"Leap Years are any year that can be exactly divided by 4 (2012, 2016, etc.)\n // except if it can be exactly divided by 100, then it isn't (2100, 2200, etc.)\n // except if it can be exactly divided by 400, then it is (2000, 2400)\"\n // (https://www.mathsisfun.com/leap-years.html).\n const isLeapYear: 1 | 0 = ((fullYear & 3) | ((fullYear / 100) & 3)) === 0 ? 1 : 0;\n // (fullYear & 3) = (fullYear % 4), but faster\n //Alternative:var isLeapYear=(new Date(currentYear,1,29,12)).getDate()===29?1:0\n const fullMonth: number = dateInput.getMonth() | 0;\n return (\n // 1. We know what the time since the Epoch really is\n +dateInput - // same as the dateInput.getTime() method\n // 2. We know what the time since the Epoch at the start of the year is\n +new Date(fullYear, 0) - // day defaults to 1 if not explicitly zeroed\n // 3. Now, subtract what we would expect the time to be if daylight savings\n // did not exist. This yields the time-offset due to daylight savings.\n // Calculate the day of the year in the Gregorian calendar\n // The code below works based upon the facts of signed right shifts\n // • (x) >> n: shifts n and fills in the n highest bits with 0s\n // • (-x) >> n: shifts n and fills in the n highest bits with 1s\n // (This assumes that x is a positive integer)\n ((((-1 + // the first day in the year is day 1\n (31 & (-fullMonth >> 4)) + // January // (-11)>>4 = -1\n ((28 + isLeapYear) & ((1 - fullMonth) >> 4)) + // February\n (31 & ((2 - fullMonth) >> 4)) + // March\n (30 & ((3 - fullMonth) >> 4)) + // April\n (31 & ((4 - fullMonth) >> 4)) + // May\n (30 & ((5 - fullMonth) >> 4)) + // June\n (31 & ((6 - fullMonth) >> 4)) + // July\n (31 & ((7 - fullMonth) >> 4)) + // August\n (30 & ((8 - fullMonth) >> 4)) + // September\n (31 & ((9 - fullMonth) >> 4)) + // October\n (30 & ((10 - fullMonth) >> 4)) + // November\n // There are no months past December: the year rolls into the next.\n // Thus, \"fullMonth\" is 0-based, so it will never be 12 in JavaScript\n\n (dateInput.getDate() | 0)) & // get day of the month\n 0xffff) *\n 24 *\n 60 + // 24 hours in a day, 60 minutes in an hour\n (dateInput.getHours() & 0xff) * 60 + // 60 minutes in an hour\n (dateInput.getMinutes() & 0xff)) |\n 0) *\n 60 *\n 1000 - // 60 seconds in a minute * 1000 milliseconds in a second\n (dateInput.getSeconds() & 0xff) * 1000 - // 1000 milliseconds in a second\n dateInput.getMilliseconds()\n );\n}\n\nconst regExGlobalOld = /_global$/;\nconst regExGlobalNew = /script\\.js\\.global\\./;\n\nfunction checkIsGlobal(obj: ioBroker.ScriptObject): boolean {\n return obj?.common && (regExGlobalOld.test(obj.common.name) || regExGlobalNew.test(obj._id));\n}\n\nfunction fileMatching(sub: FileSubscriptionResult, id: string, fileName: string): boolean {\n if (sub.idRegEx) {\n if (!sub.idRegEx.test(id)) {\n return false;\n }\n } else {\n if (sub.id !== id) {\n return false;\n }\n }\n if (sub.fileRegEx) {\n if (!sub.fileRegEx.test(fileName)) {\n return false;\n }\n } else {\n if (sub.fileNamePattern !== fileName) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction getNextTimeEvent(time: string, useNextDay?: boolean): Date {\n const now: Date = getAstroStartOfDay();\n const [timeHours, timeMinutes] = time.split(':');\n const nTimeHours = parseInt(timeHours, 10);\n const nTimeMinutes = parseInt(timeMinutes, 10);\n if (\n useNextDay &&\n (now.getHours() > nTimeHours || (now.getHours() === nTimeHours && now.getMinutes() > nTimeMinutes))\n ) {\n now.setDate(now.getDate() + 1);\n }\n\n now.setHours(nTimeHours);\n now.setMinutes(nTimeMinutes);\n\n return now;\n}\n\nfunction getAstroStartOfDay(): Date {\n const d = new Date();\n d.setMinutes(0);\n d.setSeconds(0);\n d.setMilliseconds(0);\n d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1000);\n d.setUTCHours(0);\n\n return d;\n}\n\nfunction formatHoursMinutesSeconds(date: Date): string {\n const h = String(date.getHours());\n const m = String(date.getMinutes());\n const s = String(date.getSeconds());\n\n return `${h.padStart(2, '0')}:${m.padStart(2, '0')}:${s.padStart(2, '0')}`;\n}\n\n// Due to a npm bug, virtual-tsc may be hoisted to the top level node_modules, but\n// TypeScript may still be in the adapter level (https://npm.community/t/packages-with-peerdependencies-are-incorrectly-hoisted/4794),\n// so we need to tell virtual-tsc where TypeScript is\nsetTypeScriptResolveOptions({\n paths: [require.resolve('typescript')],\n});\n\n// compiler instance for global JS declarations\nconst jsDeclarationServer: Server = new Server(jsDeclarationCompilerOptions, isCI ? false : undefined);\n/**\n * Stores the IDs of script objects whose change should be ignored because\n * the compiled source was just updated\n */\n\nconst HTTP_STATUS_TEXTS: Record = {\n 400: 'Bad Request',\n 401: 'Unauthorized',\n 403: 'Forbidden',\n 404: 'Not Found',\n 429: 'Too Many Requests / Rate Limit',\n 500: 'Internal Server Error',\n 502: 'Bad Gateway',\n 503: 'Service Unavailable',\n};\n\nfunction httpStatusText(code: number): string {\n return HTTP_STATUS_TEXTS[code] ?? `Error ${code}`;\n}\n\n/**\n * Resolves the correct http/https module based on the URL string.\n * Returns null if the URL is invalid.\n */\nfunction resolveRequestModule(url: string): { module: typeof https | typeof http; isHttps: boolean } | null {\n try {\n const { protocol } = new URL(url);\n const isHttps = protocol === 'https:';\n return { module: isHttps ? https : http, isHttps };\n } catch {\n return null;\n }\n}\n\nclass JavaScript extends Adapter {\n declare public config: JavaScriptAdapterConfig;\n\n private readonly context: JavascriptContext;\n\n private errorLogFunction: {\n error: (msg: string) => void;\n warn: (msg: string) => void;\n info: (msg: string) => void;\n debug: (msg: string) => void;\n silly: (msg: string) => void;\n } = {\n error: (msg: string) => console.error(msg),\n warn: (msg: string) => console.warn(msg),\n info: (msg: string) => console.log(msg),\n debug: (msg: string) => console.debug(msg),\n silly: (msg: string) => console.debug(msg),\n };\n\n private readonly mods: MODULES;\n\n private objectsInitDone = false;\n private statesInitDone = false;\n\n private objects: Record = {};\n private states: Record = {};\n private readonly interimStateValues: Record = {};\n private readonly stateIds: string[] = [];\n /** Fast O(1) lookup set – always kept in sync with stateIds */\n private readonly stateIdSet: Set = new Set();\n\n private readonly subscriptions: SubscriptionResult[] = [];\n /**\n * O(1) dispatch map for subscriptions with exact (non-wildcard) string IDs.\n * Always kept in sync with `subscriptions`.\n */\n private readonly subscriptionsMap: Map = new Map();\n /**\n * Subscriptions whose pattern.id is a RegExp, contains wildcards (*,?), or is undefined.\n * These must still be checked linearly on every state change.\n */\n private readonly subscriptionsWildcard: SubscriptionResult[] = [];\n private readonly subscriptionsFile: FileSubscriptionResult[] = [];\n private readonly subscriptionsObject: SubscribeObject[] = [];\n /** O(1) dispatch map for subscriptionsObject – pattern → subscribers */\n private readonly subscriptionsObjectMap: Map = new Map();\n /** IO-9: Cache for sendTo broadcast – adapterName → instance list, invalidated on object change */\n private readonly sendToInstanceCache: Map = new Map();\n private readonly subscribedPatterns: Record = {};\n private readonly subscribedPatternsFile: Record = {};\n private readonly adapterSubs: Record> = {};\n private readonly timers: { [scriptName: string]: JavascriptTimer[] } = {};\n /** Reverse-index: scriptName → Set of stateIds that have timers for this script – O(1) cleanup */\n private readonly timersByScript: Map> = new Map();\n /** O(1) Set for enum-id lookups – replaces sorted string[] array */\n private readonly _enums: Set = new Set();\n private readonly names: { [name: string]: string | string[] } = {}; // name: id\n /** Reverse map: id → name for O(1) getName() lookups */\n private readonly nameById: Map = new Map();\n private readonly scripts: Record = {};\n private password: string = '';\n private readonly messageBusHandlers: Record<\n string,\n Record void }[]>\n > = {};\n private readonly logSubscriptions: Record<\n string,\n {\n sandbox: SandboxType;\n cb: (info: ioBroker.LogMessage) => void;\n id: number;\n severity: ioBroker.LogLevel | '*';\n }[]\n > = {};\n private readonly tempDirectories: { [scriptName: string]: string } = {}; // name: path\n private readonly folderCreationVerifiedObjects: Record = {};\n\n /** if logs are subscribed or not */\n private logSubscribed = false;\n\n private timeSettings: {\n format12: boolean;\n leadingZeros: boolean;\n } = { format12: false, leadingZeros: true };\n\n private dayScheduleTimer: NodeJS.Timeout | null = null; // schedule for astrological day\n private sunScheduleTimer: NodeJS.Timeout | null = null; // schedule for sun moment times\n private timeScheduleTimer: NodeJS.Timeout | null = null; // schedule for astrological day\n\n private activeStr = ''; // enabled state prefix\n\n private mirror: Mirror | undefined;\n\n private stopCounters: Record = {};\n\n private setStateCountCheckInterval: NodeJS.Timeout | null = null;\n\n /**\n * Decrypted AI API keys cached from the central credential store (manager mode),\n * keyed by credential ID (e.g. `system.credentials.anthropic`). Kept fresh by the\n * subscriptions set up in `subscribeAiCredentials`.\n */\n private readonly aiCredentialCache: Map = new Map();\n /** Unsubscribe callbacks for the AI credential subscriptions (manager mode). */\n private aiCredentialUnsubscribers: (() => Promise)[] = [];\n\n private globalScript = '';\n /** Generated declarations for global TypeScripts */\n private globalDeclarations = '';\n // Remember which definitions the global scripts\n // have access to, because it depends on the compilation order\n private knownGlobalDeclarationsByScript: Record = {};\n private globalScriptLines = 0;\n /** Running counter to build unique names for ad-hoc scripts started via the \"execute\" message */\n private executeCounter = 0;\n // compiler instance for typescript\n private tsServer: Server;\n\n private logCollectors: { name: string; collector: (severity: ioBroker.LogLevel, msg: string) => void }[] = [];\n\n private readonly ignoreObjectChange: Set = new Set();\n\n private debugState: DebugState = {\n scriptName: '',\n child: null,\n promiseOnEnd: null,\n paused: false,\n started: 0,\n running: false,\n };\n\n constructor(options: Partial = {}) {\n options = {\n ...options,\n name: 'javascript', // adapter name\n useFormatDate: true,\n /**\n * If the JS-Controller catches an unhandled error, this will be called,\n * so we have a chance to handle it ourselves.\n */\n error: (err: Error): boolean => {\n // Identify unhandled errors originating from callbacks in scripts\n // These are not caught by wrapping the execution code in try-catch\n if (err && typeof err.stack === 'string') {\n const scriptCodeMarkerIndex = err.stack.indexOf(SCRIPT_CODE_MARKER);\n if (scriptCodeMarkerIndex > -1) {\n // This is a script error\n let scriptName = err.stack.substring(scriptCodeMarkerIndex);\n scriptName = scriptName.substring(0, scriptName.indexOf(':'));\n this.logError(scriptName, 'Error:', err);\n\n // Leave the script running for now\n // signal to the JS-Controller that we handled the error ourselves\n return true;\n }\n // check if a path contains adaptername but not own node_module\n // this regex matched \"iobroker.javascript/\" if NOT followed by \"node_modules\"\n if (!err.stack.match(/iobroker\\.javascript[/\\\\](?!.*node_modules).*/g)) {\n // This is an error without any info on origin (mostly async errors like connection errors)\n // also consider it as being from a script\n this.log.error(\n 'An error happened which is most likely from one of your scripts, but the originating script could not be detected.',\n );\n this.log.error(`Error: ${err.message}`);\n this.log.error(err.stack);\n\n // signal to the JS-Controller that we handled the error ourselves\n return true;\n }\n }\n\n return false;\n },\n };\n\n super(options as AdapterOptions);\n\n this.on('objectChange', this.onObjectChange.bind(this));\n this.on('stateChange', this.onStateChange.bind(this));\n this.on('ready', this.onReady.bind(this));\n this.on('message', this.onMessage.bind(this));\n this.on('unload', this.onUnload.bind(this));\n this.on('fileChange', this.onFileChange.bind(this));\n this.on('log', this.onLog.bind(this));\n\n this.mods = {\n fs: {} as ProtectFs,\n 'fs/promises': {} as ProtectFs['promises'],\n dgram,\n crypto,\n dns,\n events,\n http,\n https,\n http2,\n net,\n os,\n path,\n util,\n child_process,\n stream,\n zlib,\n\n suncalc,\n axios,\n wake_on_lan,\n nodeSchedule,\n };\n\n // check the webstorm debug and just debug modes\n let debugMode: string | undefined;\n if (process.argv) {\n for (let a = 1; a < process.argv.length; a++) {\n if (process.argv[a].startsWith('--webstorm')) {\n webstormDebug = process.argv[a].replace(/^(.*?=\\s*)/, '');\n }\n if (process.argv[a] === '--debugScript') {\n if (!process.argv[a + 1]) {\n console.log('No script name provided');\n process.exit(300);\n } else {\n debugMode = process.argv[a + 1];\n }\n }\n }\n }\n\n this.context = {\n mods: this.mods,\n objects: this.objects,\n states: this.states,\n interimStateValues: this.interimStateValues,\n stateIds: this.stateIds,\n errorLogFunction: this.errorLogFunction,\n subscriptions: this.subscriptions,\n subscriptionsMap: this.subscriptionsMap,\n subscriptionsWildcard: this.subscriptionsWildcard,\n subscriptionsFile: this.subscriptionsFile,\n subscriptionsObject: this.subscriptionsObject,\n subscriptionsObjectMap: this.subscriptionsObjectMap,\n sendToInstanceCache: this.sendToInstanceCache,\n subscribedPatterns: this.subscribedPatterns,\n subscribedPatternsFile: this.subscribedPatternsFile,\n adapterSubs: this.adapterSubs,\n cacheObjectEnums: {},\n timers: this.timers,\n timersByScript: this.timersByScript,\n enums: this._enums,\n names: this.names,\n scripts: this.scripts,\n messageBusHandlers: this.messageBusHandlers,\n logSubscriptions: this.logSubscriptions,\n tempDirectories: this.tempDirectories,\n folderCreationVerifiedObjects: this.folderCreationVerifiedObjects,\n\n isEnums: false, // If some subscription wants enum\n channels: null,\n devices: null,\n logWithLineInfo: this.logWithLineInfo.bind(this),\n scheduler: null,\n timerId: 0,\n rulesOpened: null, // opened rules\n language: this.language || 'en',\n\n updateLogSubscriptions: this.updateLogSubscriptions.bind(this),\n convertBackStringifiedValues: this.convertBackStringifiedValues.bind(this),\n updateObjectContext: this.updateObjectContext.bind(this),\n prepareStateObject: this.prepareStateObject.bind(this),\n debugMode,\n getAbsoluteDefaultDataDir,\n adapter: this,\n logError: this.logError.bind(this),\n allowSelfSignedCerts: false,\n };\n\n this.tsServer = new Server(tsCompilerOptions, this.tsLog);\n }\n\n async onObjectChange(id: string, obj?: ioBroker.Object | null): Promise {\n // Check if we should ignore this change (once!) because we just updated the compiled sources\n if (this.ignoreObjectChange.has(id)) {\n // Update the cached script object and do nothing more\n this.objects[id] = obj as ioBroker.Object;\n this.ignoreObjectChange.delete(id);\n return;\n }\n\n // When still in initializing: already remember current values,\n // but data structures are initialized elsewhere\n if (!this.objectsInitDone) {\n if (obj) {\n this.objects[id] = obj;\n }\n return;\n }\n\n if (id.startsWith('enum.')) {\n // clear cache\n this.context.cacheObjectEnums = {};\n\n // update this._enums Set\n if (obj) {\n this._enums.add(id);\n } else {\n this._enums.delete(id);\n }\n }\n\n // IO-9: Invalidate sendTo instance-cache when adapter instances change\n if (id.startsWith('system.adapter.')) {\n const parts = id.split('.');\n if (parts.length >= 3) {\n const adapterName = parts[2]; // e.g. \"zigbee\" from \"system.adapter.zigbee.0\"\n this.sendToInstanceCache.delete(adapterName);\n }\n }\n\n if (id === 'system.config' && obj?.common?.language) {\n // set language for debug messages\n setLanguage(obj.common.language);\n this.language = obj.common.language;\n this.context.language = this.language as ioBroker.Languages;\n }\n\n // update stored time format for variables.dayTime\n if (id === `${this.namespace}.variables.dayTime` && obj?.native) {\n this.timeSettings.format12 = obj.native.format12 || false;\n this.timeSettings.leadingZeros = obj.native.leadingZeros === undefined ? true : obj.native.leadingZeros;\n }\n\n // send changes to the disk mirror\n this.mirror?.onObjectChange(id, obj as ioBroker.ScriptObject | null);\n\n const formerObj = this.objects[id];\n\n this.updateObjectContext(id, obj); // Update all Meta object data\n\n // for the alias object changes on the state objects, we need to manually update the\n // state cache value, because the new value is only published on the next change\n if (obj?.type === 'state' && id.startsWith('alias.0.')) {\n // execute async for speed\n this.getForeignStateAsync(id)\n .then(state => {\n if (state) {\n this.states[id] = state;\n } else if (this.states[id] !== undefined) {\n delete this.states[id];\n }\n })\n .catch(() => {\n /* ignore */\n });\n }\n\n // O(1) dispatch via pattern map instead of O(n) forEach\n const objSubs = this.subscriptionsObjectMap.get(id);\n if (objSubs) {\n for (const sub of objSubs) {\n try {\n sub.callback(id, obj);\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n\n // handle Script object updates\n if (!obj && formerObj?.type === 'script') {\n // Object Deleted just now\n if (checkIsGlobal(formerObj)) {\n // it was a global Script, and it was enabled and is now deleted => restart adapter\n if (formerObj.common.enabled) {\n this.log.info(`Active global Script ${id} deleted. Restart instance.`);\n this.restart();\n }\n } else if (formerObj.common?.engine === `system.adapter.${this.namespace}`) {\n // It was a non-global Script and deleted => stop and remove it\n await this.stopScript(id);\n\n // delete scriptEnabled.blabla variable\n const idActive = `scriptEnabled.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n await this.delStateAsync(idActive);\n await this.delObjectAsync(idActive);\n\n // delete scriptProblem.blabla variable\n const idProblem = `scriptProblem.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n await this.delStateAsync(idProblem);\n await this.delObjectAsync(idProblem);\n }\n } else if (!formerObj && obj?.type === 'script') {\n // New script that does not exist before\n if (checkIsGlobal(obj)) {\n // new global script added => restart adapter\n if (obj.common.enabled) {\n this.log.info(`Active global Script ${id} created. Restart instance.`);\n this.restart();\n }\n } else if (obj.common?.engine === `system.adapter.${this.namespace}`) {\n // new non-global script - create states for scripts\n await this.createActiveObject(id, !!obj.common.enabled);\n await this.createProblemObject(id);\n if (obj.common.enabled) {\n // if enabled => Start a script\n await this.loadScriptById(id);\n }\n }\n } else if (obj?.type === 'script' && formerObj?.common) {\n // Script changed ...\n if (checkIsGlobal(obj)) {\n if (obj.common.enabled || formerObj.common.enabled) {\n this.log.info(`Global Script ${id} updated. Restart instance.`);\n this.restart();\n }\n } else {\n // No global script\n if (obj.common?.engine === `system.adapter.${this.namespace}`) {\n // create states for scripts\n await this.createActiveObject(id, !!obj.common.enabled);\n await this.createProblemObject(id);\n }\n\n if (\n (formerObj.common.enabled && !obj.common.enabled) ||\n (formerObj.common.engine === `system.adapter.${this.namespace}` &&\n obj.common.engine !== `system.adapter.${this.namespace}`)\n ) {\n // Script disabled\n if (formerObj.common.enabled && formerObj.common.engine === `system.adapter.${this.namespace}`) {\n // Remove it from executing\n await this.stopScript(id);\n }\n } else if (\n (!formerObj.common.enabled && obj.common.enabled) ||\n (formerObj.common.engine !== `system.adapter.${this.namespace}` &&\n obj.common.engine === `system.adapter.${this.namespace}`)\n ) {\n // Script enabled\n\n if (obj.common.enabled && obj.common.engine === `system.adapter.${this.namespace}`) {\n // Start script\n await this.loadScriptById(id);\n }\n } else if (\n obj.common.engine === `system.adapter.${this.namespace}` ||\n formerObj.common.engine === `system.adapter.${this.namespace}`\n ) {\n // Source changed => restart the script (only on the relevant instance)\n this.stopCounters[id] = this.stopCounters[id] ? this.stopCounters[id] + 1 : 1;\n void this.stopScript(id).then(() => {\n // only start again after stop when \"last\" object change to prevent problems on\n // multiple changes in fast frequency\n if (!--this.stopCounters[id]) {\n void this.loadScriptById(id);\n }\n });\n }\n }\n }\n }\n\n onStateChange(id: string, state?: ioBroker.State | null): void {\n if (this.interimStateValues[id] !== undefined) {\n // any update invalidates the remembered interim value\n delete this.interimStateValues[id];\n }\n if (!id || id.startsWith('messagebox.') || id.startsWith('log.')) {\n return;\n }\n\n if (id === `${this.namespace}.debug.to` && state && !state.ack) {\n if (!this.context.debugMode) {\n this.debugSendToInspector(state.val);\n }\n return;\n }\n\n // When still in initializing: already remember current values,\n // but data structures are initialized elsewhere\n if (!this.statesInitDone) {\n if (state) {\n this.states[id] = state;\n }\n return;\n }\n\n const oldState: ioBroker.State | null | undefined = this.states[id];\n if (state) {\n if (oldState) {\n // enable or disable script\n if (!state.ack && id.startsWith(this.activeStr) && this.objects[id]?.native?.script) {\n void this.extendForeignObject(this.objects[id].native.script, {\n common: { enabled: state.val },\n });\n }\n\n // monitor if the adapter is alive and send all subscriptions once more, after the adapter goes online\n if (/*oldState && */ oldState.val === false && state.val && id.endsWith('.alive')) {\n if (this.adapterSubs[id]) {\n const parts = id.split('.');\n const a = `${parts[2]}.${parts[3]}`;\n for (const sub of this.adapterSubs[id]) {\n this.log.info(`Detected coming adapter \"${a}\". Send subscribe: ${sub}`);\n this.sendTo(a, 'subscribe', sub);\n }\n }\n }\n } else if (/*!oldState && */ !this.stateIdSet.has(id)) {\n this.sortedInsert(id);\n this.stateIdSet.add(id);\n }\n this.states[id] = state;\n } else {\n if (oldState) {\n delete this.states[id];\n }\n state = {} as ioBroker.State;\n const pos = this.binaryIndexOf(this.stateIds, id);\n if (pos !== -1) {\n this.stateIds.splice(pos, 1);\n this.stateIdSet.delete(id);\n }\n }\n\n // Collect matching subscriptions:\n // 1. O(1) exact-id map lookup – only buckets for this specific state id\n // 2. Linear scan over wildcard/regex subscriptions (unavoidable)\n // EventObj is created lazily – only when at least one subscription must be dispatched.\n const exactSubs = this.subscriptionsMap.get(id);\n const wildcardSubs = this.subscriptionsWildcard;\n const hasWork = (exactSubs && exactSubs.length > 0) || wildcardSubs.length > 0;\n\n if (!hasWork) {\n return;\n }\n\n let _eventObj: EventObj | null = null;\n const getEvent = (): EventObj => {\n if (!_eventObj) {\n _eventObj = createEventObject(\n this.context,\n id,\n this.convertBackStringifiedValues(id, state),\n this.convertBackStringifiedValues(id, oldState),\n );\n }\n return _eventObj;\n };\n\n if (exactSubs) {\n for (let i = 0, l = exactSubs.length; i < l; i++) {\n const sub = exactSubs[i];\n if (sub?.patternCompareFunctions && patternMatching(getEvent(), sub.patternCompareFunctions)) {\n try {\n sub.callback(getEvent());\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n }\n\n // if this state matches any subscriptions\n for (let i = 0, l = wildcardSubs.length; i < l; i++) {\n const sub = wildcardSubs[i];\n if (sub?.patternCompareFunctions && patternMatching(getEvent(), sub.patternCompareFunctions)) {\n try {\n sub.callback(getEvent());\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n }\n\n onFileChange(id: string, fileName: string, size: number | null): void {\n // if this file matches any subscriptions\n for (let i = 0, l = this.subscriptionsFile.length; i < l; i++) {\n const sub = this.subscriptionsFile[i];\n if (sub && fileMatching(sub, id, fileName)) {\n try {\n sub.callback(id, fileName, size, sub.withFile);\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n }\n\n async onUnload(callback: () => void): Promise {\n try {\n await this.debugStop();\n this.stopTimeSchedules();\n if (this.setStateCountCheckInterval) {\n clearInterval(this.setStateCountCheckInterval);\n this.setStateCountCheckInterval = null;\n }\n await this.unsubscribeAiCredentials();\n await this.stopAllScripts();\n } catch (err: unknown) {\n this.log.error(`Error during unload: ${(err as Error).message}`);\n } finally {\n if (typeof callback === 'function') {\n callback();\n }\n }\n }\n\n async onReady(): Promise {\n this.errorLogFunction = this.log;\n this.context.errorLogFunction = this.log;\n this.config.maxSetStatePerMinute = parseInt(this.config.maxSetStatePerMinute as unknown as string, 10) || 1000;\n this.config.maxTriggersPerScript = parseInt(this.config.maxTriggersPerScript as unknown as string, 10) || 100;\n\n if (this.supportsFeature?.('PLUGINS')) {\n const sentryInstance: InstanceType = this.getPluginInstance('sentry') as InstanceType<\n typeof SentryPlugin\n >;\n if (sentryInstance) {\n const Sentry = sentryInstance.getSentryObject();\n Sentry?.withScope(scope => {\n scope.addEventProcessor((event, _hint) => {\n if (event.exception?.values?.[0]) {\n const eventData = event.exception.values[0];\n if (\n eventData.stacktrace?.frames &&\n Array.isArray(eventData.stacktrace.frames) &&\n eventData.stacktrace.frames.length\n ) {\n // Exclude event if script Marker is included\n if (\n eventData.stacktrace.frames.find(frame =>\n frame.filename?.includes(SCRIPT_CODE_MARKER),\n )\n ) {\n return null;\n }\n // Exclude event if own directory is included but not inside own node_modules\n const ownNodeModulesDir = join(__dirname, 'node_modules');\n if (\n !eventData.stacktrace.frames.find(\n frame =>\n frame.filename?.includes(__dirname) &&\n !frame.filename.includes(ownNodeModulesDir),\n )\n ) {\n return null;\n }\n // We have exception data and did not sort it out, so report it\n return event;\n }\n }\n\n // No exception in it ... do not report\n return null;\n });\n });\n }\n }\n\n await this.main();\n }\n\n /** Read and decrypt a single AI credential's key from the central store; returns '' (and logs) on error. */\n private async readAiCredentialKey(id: string): Promise {\n if (!Credentials?.getCredentials) {\n this.log.warn(\n `Cannot read AI credential \"${id}\": Credentials API is only with 7.2 js-controller available`,\n );\n return '';\n }\n try {\n const cred = await Credentials.getCredentials(this, id);\n return (cred?.values?.key || '').trim();\n } catch (e) {\n this.log.warn(`Cannot read AI credential \"${id}\": ${e instanceof Error ? e.message : String(e)}`);\n return '';\n }\n }\n\n /**\n * Resolve the API key (and base URL) for an AI provider.\n *\n * In `manual` mode the key comes from the encryptedNative adapter config.\n * In `manager` mode the config only stores the ID of a credential in the central\n * ioBroker credential store (`system.credentials.*`); the actual key is taken from the\n * `aiCredentialCache` (kept fresh by `subscribeAiCredentials`) or, for credentials we are\n * not subscribed to (e.g. a not-yet-saved selection in the settings dialog), read directly.\n *\n * The settings-dialog Test button may pass form values that are not saved yet\n * (`messageApiKey` / `messageCredentialId` / `credentialType`); those win over the stored config.\n */\n private async resolveAiCredentials(\n provider: string,\n opts: {\n messageBaseUrl?: string;\n messageApiKey?: string;\n messageCredentialId?: string;\n credentialType?: 'manual' | 'manager';\n } = {},\n ): Promise<{ apiKey: string; baseUrl: string }> {\n const mode = opts.credentialType || this.config.credentialType || 'manual';\n if (mode === 'manager') {\n // The base URL is not a secret and is resolved the same way in both modes.\n const { baseUrl } = resolveProviderCredentials(this.config, provider, opts.messageBaseUrl);\n const id = (opts.messageCredentialId || getProviderCredentialId(this.config, provider)).trim();\n if (!id) {\n return { apiKey: '', baseUrl };\n }\n // Prefer the cached value kept fresh by the credential subscription.\n const cached = this.aiCredentialCache.get(id);\n const apiKey = cached !== undefined ? cached : await this.readAiCredentialKey(id);\n return { apiKey, baseUrl };\n }\n // Manual mode. The Test button sends the current form key (maybe empty) — let it win.\n if (opts.messageApiKey !== undefined) {\n return resolveTestCredentials(this.config, provider, opts.messageApiKey, opts.messageBaseUrl);\n }\n return resolveProviderCredentials(this.config, provider, opts.messageBaseUrl);\n }\n\n /**\n * In `manager` mode, subscribe to all configured AI credentials so that edits made in the\n * admin credential manager (Settings → Credentials) are picked up live, without restarting\n * the adapter (the `system.credentials.*` objects are global, not part of the instance config).\n * The decrypted keys are cached and kept fresh by the subscription handlers.\n */\n private async subscribeAiCredentials(): Promise {\n // Always start from a clean state (idempotent — also used to re-subscribe).\n await this.unsubscribeAiCredentials();\n if (this.config.credentialType !== 'manager') {\n return;\n }\n if (!Credentials?.subscribeCredentials) {\n this.log.warn(`Cannot subscribe AI credential: Credentials API is only with 7.2 js-controller available`);\n return;\n }\n // Collect the distinct credential IDs configured across all AI providers.\n const ids = new Set();\n for (const provider of ['openai', 'anthropic', 'gemini', 'deepseek', 'custom'] as const) {\n const id = getProviderCredentialId(this.config, provider);\n if (id) {\n ids.add(id);\n }\n }\n for (const id of ids) {\n try {\n const unsubscribe = await Credentials.subscribeCredentials(\n this,\n id,\n (changedId, cred) => {\n if (cred) {\n this.aiCredentialCache.set(changedId, (cred.values?.key || '').trim());\n this.log.debug(`AI credential \"${changedId}\" updated`);\n } else {\n // The credential was deleted\n this.aiCredentialCache.delete(changedId);\n this.log.debug(`AI credential \"${changedId}\" was deleted`);\n }\n },\n );\n this.aiCredentialUnsubscribers.push(unsubscribe);\n // Prime the cache with the current value (the handler may only fire on later changes).\n this.aiCredentialCache.set(id, await this.readAiCredentialKey(id));\n } catch (e) {\n this.log.warn(\n `Cannot subscribe to AI credential \"${id}\": ${e instanceof Error ? e.message : String(e)}`,\n );\n }\n }\n if (this.aiCredentialUnsubscribers.length) {\n this.log.debug(`Subscribed to ${this.aiCredentialUnsubscribers.length} AI credential(s)`);\n }\n }\n\n /** Tear down all AI credential subscriptions and clear the cache. */\n private async unsubscribeAiCredentials(): Promise {\n const unsubscribers = this.aiCredentialUnsubscribers;\n this.aiCredentialUnsubscribers = [];\n this.aiCredentialCache.clear();\n for (const unsubscribe of unsubscribers) {\n try {\n await unsubscribe();\n } catch (e) {\n this.log.warn(`Cannot unsubscribe from AI credential: ${e instanceof Error ? e.message : String(e)}`);\n }\n }\n }\n\n onMessage(obj: ioBroker.Message): void {\n switch (obj?.command) {\n // process messageTo commands\n case 'toScript':\n case 'jsMessageBus':\n if (\n obj.message &&\n (obj.message.instance === null ||\n obj.message.instance === undefined ||\n `javascript.${obj.message.instance}` === this.namespace ||\n obj.message.instance === this.namespace)\n ) {\n Object.keys(this.messageBusHandlers).forEach(name => {\n // the script name could be script.js.xxx or only xxx\n if (\n (!obj.message.script || obj.message.script === name) &&\n this.messageBusHandlers[name][obj.message.message]\n ) {\n this.messageBusHandlers[name][obj.message.message].forEach(handler => {\n const sandbox = handler.sandbox;\n\n if (sandbox.verbose) {\n sandbox.log(`onMessage: ${JSON.stringify(obj.message)}`, 'info');\n }\n\n try {\n if (obj.callback) {\n handler.cb.call(sandbox, obj.message.data, (result: any) => {\n if (sandbox.verbose) {\n sandbox.log(`onMessage result: ${JSON.stringify(result)}`, 'info');\n }\n\n this.sendTo(obj.from, obj.command, result, obj.callback);\n });\n } else {\n handler.cb.call(sandbox, obj.message.data, (result: any) => {\n if (sandbox.verbose) {\n sandbox.log(`onMessage result: ${JSON.stringify(result)}`, 'info');\n }\n });\n }\n } catch (err: unknown) {\n void this.setState(\n `scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`,\n true,\n true,\n );\n this.logError(name, 'Error in callback:', err as Error);\n }\n });\n }\n });\n }\n break;\n\n case 'loadTypings': {\n // Load typings for the editor\n const typings: Record = {};\n\n // try to load TypeScript lib files from disk\n try {\n const typescriptLibs = resolveTypescriptLibs(targetTsLib);\n Object.assign(typings, typescriptLibs);\n } catch {\n /* ok, no lib then */\n }\n\n // provide the already-loaded ioBroker typings and global script declarations\n Object.assign(typings, tsAmbient);\n\n // also provide the known global declarations for each global script\n for (const globalScriptPaths of Object.keys(this.knownGlobalDeclarationsByScript)) {\n typings[`${globalScriptPaths}.d.ts`] = this.knownGlobalDeclarationsByScript[globalScriptPaths];\n }\n\n if (obj.callback) {\n this.sendTo(obj.from, obj.command, { typings }, obj.callback);\n }\n break;\n }\n\n case 'calcAstroAll': {\n if (obj.message) {\n const sunriseOffset =\n parseInt(\n obj.message.sunriseOffset === undefined\n ? this.config.sunriseOffset\n : obj.message.sunriseOffset,\n 10,\n ) || 0;\n const sunsetOffset =\n parseInt(\n obj.message.sunsetOffset === undefined\n ? this.config.sunsetOffset\n : obj.message.sunsetOffset,\n 10,\n ) || 0;\n const longitude =\n parseFloat(\n obj.message.longitude === undefined ? this.config.longitude : obj.message.longitude,\n ) || 0;\n const latitude =\n parseFloat(obj.message.latitude === undefined ? this.config.latitude : obj.message.latitude) ||\n 0;\n const today = getAstroStartOfDay();\n let astroEvents: GetTimesResult & { nextSunrise: Date; nextSunset: Date } = {} as GetTimesResult & {\n nextSunrise: Date;\n nextSunset: Date;\n };\n try {\n astroEvents = this.mods.suncalc.getTimes(today, latitude, longitude);\n } catch (err: unknown) {\n this.log.error(`Cannot calculate astro data: ${err as Error}`);\n }\n if (astroEvents) {\n try {\n astroEvents.nextSunrise = this.getAstroEvent(\n today,\n obj.message.sunriseEvent || this.config.sunriseEvent,\n obj.message.sunriseLimitStart || this.config.sunriseLimitStart,\n obj.message.sunriseLimitEnd || this.config.sunriseLimitEnd,\n sunriseOffset,\n false,\n latitude,\n longitude,\n true,\n );\n astroEvents.nextSunset = this.getAstroEvent(\n today,\n obj.message.sunsetEvent || this.config.sunsetEvent,\n obj.message.sunsetLimitStart || this.config.sunsetLimitStart,\n obj.message.sunsetLimitEnd || this.config.sunsetLimitEnd,\n sunsetOffset,\n true,\n latitude,\n longitude,\n true,\n );\n } catch (err: unknown) {\n this.log.error(`Cannot calculate astro data: ${err as Error}`);\n }\n }\n\n const result: Record = {};\n const keys = Object.keys(astroEvents).sort(\n (a, b) =>\n (astroEvents as unknown as Record)[a] -\n (astroEvents as unknown as Record)[b],\n );\n keys.forEach(key => {\n const validDate =\n (astroEvents as unknown as Record)[key] !== null &&\n !isNaN((astroEvents as unknown as Record)[key].getTime());\n\n result[key] = {\n isValidDate: validDate,\n serverTime: validDate\n ? formatHoursMinutesSeconds((astroEvents as unknown as Record)[key])\n : 'n/a',\n date: validDate\n ? (astroEvents as unknown as Record)[key].toISOString()\n : 'n/a',\n };\n });\n\n if (obj.callback) {\n this.sendTo(obj.from, obj.command, result, obj.callback);\n }\n }\n break;\n }\n\n case 'calcAstro': {\n if (obj.message) {\n const longitude =\n parseFloat(\n obj.message.longitude === undefined ? this.config.longitude : obj.message.longitude,\n ) || 0;\n const latitude =\n parseFloat(obj.message.latitude === undefined ? this.config.latitude : obj.message.latitude) ||\n 0;\n const today = getAstroStartOfDay();\n\n const sunriseEvent = obj.message?.sunriseEvent || this.config.sunriseEvent;\n const sunriseLimitStart = obj.message?.sunriseLimitStart || this.config.sunriseLimitStart;\n const sunriseLimitEnd = obj.message?.sunriseLimitEnd || this.config.sunriseLimitEnd;\n const sunriseOffset =\n parseInt(\n obj.message.sunriseOffset === undefined\n ? this.config.sunriseOffset\n : obj.message.sunriseOffset,\n 10,\n ) || 0;\n const nextSunrise = this.getAstroEvent(\n today,\n sunriseEvent,\n sunriseLimitStart,\n sunriseLimitEnd,\n sunriseOffset,\n false,\n latitude,\n longitude,\n true,\n );\n\n const sunsetEvent = obj.message?.sunsetEvent || this.config.sunsetEvent;\n const sunsetLimitStart = obj.message?.sunsetLimitStart || this.config.sunsetLimitStart;\n const sunsetLimitEnd = obj.message?.sunsetLimitEnd || this.config.sunsetLimitEnd;\n const sunsetOffset =\n parseInt(\n obj.message.sunsetOffset === undefined\n ? this.config.sunsetOffset\n : obj.message.sunsetOffset,\n 10,\n ) || 0;\n const nextSunset = this.getAstroEvent(\n today,\n sunsetEvent,\n sunsetLimitStart,\n sunsetLimitEnd,\n sunsetOffset,\n true,\n latitude,\n longitude,\n true,\n );\n\n const validDateSunrise = nextSunrise !== null && !isNaN(nextSunrise.getTime());\n const validDateSunset = nextSunset !== null && !isNaN(nextSunset.getTime());\n\n this.log.debug(\n `calcAstro sunrise: ${sunriseEvent} -> start ${sunriseLimitStart}, end: ${sunriseLimitEnd}, offset: ${sunriseOffset} - ${validDateSunrise ? nextSunrise.toISOString() : 'n/a'}`,\n );\n this.log.debug(\n `calcAstro sunset: ${sunsetEvent} -> start ${sunsetLimitStart}, end: ${sunsetLimitEnd}, offset: ${sunsetOffset} - ${validDateSunset ? nextSunset.toISOString() : 'n/a'}`,\n );\n\n if (obj.callback) {\n this.sendTo(\n obj.from,\n obj.command,\n {\n nextSunrise: {\n isValidDate: validDateSunrise,\n serverTime: validDateSunrise ? formatHoursMinutesSeconds(nextSunrise) : 'n/a',\n date: nextSunrise.toISOString(),\n },\n nextSunset: {\n isValidDate: validDateSunset,\n serverTime: validDateSunset ? formatHoursMinutesSeconds(nextSunset) : 'n/a',\n date: nextSunset.toISOString(),\n },\n },\n obj.callback,\n );\n }\n }\n break;\n }\n\n case 'debug': {\n if (!this.context.debugMode) {\n this.debugStart(obj.message);\n }\n break;\n }\n\n case 'debugStop': {\n if (!this.context.debugMode) {\n void this.debugStop().then(() => console.log('stopped'));\n }\n break;\n }\n\n case 'rulesOn': {\n this.context.rulesOpened = obj.message;\n console.log(`Enable messaging for ${this.context.rulesOpened}`);\n break;\n }\n\n case 'rulesOff': {\n // maybe if (context.rulesOpened === obj.message)\n console.log(`Disable messaging for ${this.context.rulesOpened}`);\n this.context.rulesOpened = null;\n break;\n }\n\n case 'getIoBrokerDataDir': {\n if (obj.callback) {\n this.sendTo(\n obj.from,\n obj.command,\n {\n dataDir: getAbsoluteDefaultDataDir(),\n sep,\n },\n obj.callback,\n );\n }\n break;\n }\n\n case 'chatCompletion': {\n // Proxy chat completion requests to an OpenAI-compatible API endpoint.\n // API keys are resolved server-side from the encryptedNative config or the central\n // credentials manager — they never leave the adapter (frontend only sends `provider`).\n void (async () => {\n if (!obj.callback) {\n return;\n }\n const chatModel = (obj.message?.model || '').trim();\n const messages = obj.message?.messages;\n const tools = obj.message?.tools;\n const provider = (obj.message?.provider || 'openai').trim();\n const { apiKey, baseUrl } = await this.resolveAiCredentials(provider, {\n messageBaseUrl: obj.message?.baseUrl,\n });\n // Anthropic, Gemini, and DeepSeek always require an API key; OpenAI-compatible allows empty key with custom base URL\n if (\n !apiKey &&\n (provider === 'anthropic' || provider === 'gemini' || provider === 'deepseek' || !baseUrl)\n ) {\n this.sendTo(obj.from, obj.command, { error: 'No API key provided' }, obj.callback);\n return;\n }\n if (!chatModel || !messages) {\n this.sendTo(obj.from, obj.command, { error: 'Model and messages are required' }, obj.callback);\n return;\n }\n\n let url: string;\n const chatHeaders: Record = {\n 'Content-Type': 'application/json',\n };\n let bodyObj: Record;\n\n if (provider === 'anthropic') {\n url = 'https://api.anthropic.com/v1/messages';\n chatHeaders['x-api-key'] = apiKey;\n chatHeaders['anthropic-version'] = '2023-06-01';\n // Translate OpenAI-format messages/tools into Anthropic's content-block format.\n const { system: systemText, messages: anthropicMessages } =\n translateMessagesToAnthropic(messages);\n const anthropicTools = tools?.length ? translateToolsToAnthropic(tools) : [];\n bodyObj = {\n model: chatModel,\n max_tokens: 8192,\n stream: false,\n ...(systemText ? { system: systemText } : {}),\n messages: anthropicMessages,\n ...(anthropicTools.length ? { tools: anthropicTools } : {}),\n };\n } else if (provider === 'gemini') {\n url = 'https://generativelanguage.googleapis.com/v1beta/openai/chat/completions';\n if (apiKey) {\n chatHeaders.Authorization = `Bearer ${apiKey}`;\n }\n bodyObj = { model: chatModel, messages, stream: false, ...(tools?.length ? { tools } : {}) };\n } else if (provider === 'deepseek') {\n url = 'https://api.deepseek.com/chat/completions';\n chatHeaders.Authorization = `Bearer ${apiKey}`;\n bodyObj = { model: chatModel, messages, stream: false, ...(tools?.length ? { tools } : {}) };\n } else {\n url = `${baseUrl || 'https://api.openai.com/v1'}/chat/completions`;\n if (apiKey) {\n chatHeaders.Authorization = `Bearer ${apiKey}`;\n }\n bodyObj = {\n model: chatModel,\n messages,\n stream: false,\n ...(tools?.length ? { tools } : {}),\n // Disable thinking/reasoning for local models to save context and speed\n ...(baseUrl ? { reasoning_effort: 'none' } : {}),\n };\n }\n\n const body = JSON.stringify(bodyObj);\n const bodyBuffer = Buffer.from(body, 'utf8');\n chatHeaders['Content-Length'] = bodyBuffer.length;\n\n const resolved = resolveRequestModule(url);\n if (!resolved) {\n this.sendTo(obj.from, obj.command, { error: `Invalid API URL: ${url}` }, obj.callback);\n return;\n }\n const { module: requestModule, isHttps } = resolved;\n\n try {\n const req = requestModule.request(\n url,\n {\n method: 'POST',\n headers: chatHeaders,\n timeout: 600000,\n ...(isHttps && this.config.allowSelfSignedCerts ? { rejectUnauthorized: false } : {}),\n },\n res => {\n let data = '';\n res.on('data', (chunk: Buffer) => {\n data += chunk.toString();\n });\n res.on('end', () => {\n if (res.statusCode === 200) {\n try {\n const parsed = JSON.parse(data);\n let content: string;\n let tool_calls: unknown;\n if (provider === 'anthropic') {\n const translated = translateAnthropicResponseToOpenAI(parsed);\n content = translated.content;\n tool_calls = translated.tool_calls;\n } else {\n const message = parsed.choices?.[0]?.message;\n content = message?.content || '';\n tool_calls = message?.tool_calls;\n }\n if (!content && !(tool_calls as unknown[] | undefined)?.length) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Empty response from API' },\n obj.callback,\n );\n } else {\n this.sendTo(\n obj.from,\n obj.command,\n {\n success: true,\n content,\n ...(tool_calls ? { tool_calls } : {}),\n },\n obj.callback,\n );\n }\n } catch {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Invalid JSON response from API' },\n obj.callback,\n );\n }\n } else {\n let detail = '';\n try {\n const errParsed = JSON.parse(data);\n detail = errParsed.error?.message || data.substring(0, 200);\n } catch {\n detail = data.substring(0, 200);\n }\n this.sendTo(\n obj.from,\n obj.command,\n {\n error: `${detail || httpStatusText(res.statusCode || 0)} (${res.statusCode})`,\n },\n obj.callback,\n );\n }\n });\n },\n );\n\n req.on('error', (err: Error) => {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${err.message}` },\n obj.callback,\n );\n });\n\n req.on('timeout', () => {\n req.destroy();\n this.sendTo(obj.from, obj.command, { error: 'Connection timeout (600s)' }, obj.callback);\n });\n\n req.write(bodyBuffer);\n req.end();\n } catch (error) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${(error as Error).toString()}` },\n obj.callback,\n );\n }\n })();\n break;\n }\n\n case 'testApiConnection': {\n // Test connection to an OpenAI-compatible API endpoint.\n // The settings-dialog Test button sends the current form value as `apiKey`\n // (so users can test before saving); otherwise we fall back to the stored key.\n void (async () => {\n if (!obj.callback) {\n return;\n }\n const provider = (obj.message?.provider || 'openai').trim();\n const { apiKey, baseUrl } = await this.resolveAiCredentials(provider, {\n messageApiKey: obj.message?.apiKey,\n messageBaseUrl: obj.message?.baseUrl,\n messageCredentialId: obj.message?.credentialId,\n credentialType: obj.message?.credentialType,\n });\n // Anthropic, Gemini, and DeepSeek always require an API key; OpenAI-compatible allows empty key with custom base URL\n if (\n !apiKey &&\n (provider === 'anthropic' || provider === 'gemini' || provider === 'deepseek' || !baseUrl)\n ) {\n this.sendTo(obj.from, obj.command, { error: 'No API key provided' }, obj.callback);\n return;\n }\n\n let url: string;\n const testHeaders: Record = {\n 'Content-Type': 'application/json',\n };\n\n if (provider === 'anthropic') {\n url = 'https://api.anthropic.com/v1/models';\n testHeaders['x-api-key'] = apiKey;\n testHeaders['anthropic-version'] = '2023-06-01';\n } else if (provider === 'gemini') {\n url = 'https://generativelanguage.googleapis.com/v1beta/openai/models';\n if (apiKey) {\n testHeaders.Authorization = `Bearer ${apiKey}`;\n }\n } else if (provider === 'deepseek') {\n url = 'https://api.deepseek.com/models';\n testHeaders.Authorization = `Bearer ${apiKey}`;\n } else {\n url = `${baseUrl || 'https://api.openai.com/v1'}/models`;\n if (apiKey) {\n testHeaders.Authorization = `Bearer ${apiKey}`;\n }\n }\n\n const resolved = resolveRequestModule(url);\n if (!resolved) {\n this.sendTo(obj.from, obj.command, { error: `Invalid API URL: ${url}` }, obj.callback);\n return;\n }\n const { module: requestModule, isHttps } = resolved;\n\n try {\n const req = requestModule.request(\n url,\n {\n method: 'GET',\n headers: testHeaders,\n timeout: 10000,\n ...(isHttps && this.config.allowSelfSignedCerts ? { rejectUnauthorized: false } : {}),\n },\n res => {\n let data = '';\n res.on('data', (chunk: Buffer) => {\n data += chunk.toString();\n });\n res.on('end', () => {\n if (res.statusCode === 200) {\n try {\n const parsed = JSON.parse(data);\n const models: string[] = (parsed.data || [])\n .map((m: { id: string }) =>\n m.id.startsWith('models/') ? m.id.substring(7) : m.id,\n )\n .sort();\n this.sendTo(\n obj.from,\n obj.command,\n { success: true, models, count: models.length },\n obj.callback,\n );\n } catch {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Invalid JSON response from API' },\n obj.callback,\n );\n }\n } else if (res.statusCode === 401) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Invalid API key (401)' },\n obj.callback,\n );\n } else if (res.statusCode === 403) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Access denied (403)' },\n obj.callback,\n );\n } else {\n // Include response body for debugging\n let detail = '';\n try {\n const errParsed = JSON.parse(data);\n detail = errParsed.error?.message || data.substring(0, 200);\n } catch {\n detail = data.substring(0, 200);\n }\n this.sendTo(\n obj.from,\n obj.command,\n {\n error: `${detail || httpStatusText(res.statusCode || 0)} (${res.statusCode})`,\n },\n obj.callback,\n );\n }\n });\n },\n );\n\n req.on('error', (err: Error) => {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${err.message}` },\n obj.callback,\n );\n });\n\n req.on('timeout', () => {\n req.destroy();\n this.sendTo(obj.from, obj.command, { error: 'Connection timeout (10s)' }, obj.callback);\n });\n\n req.end();\n } catch (error) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${(error as Error).toString()}` },\n obj.callback,\n );\n }\n })();\n break;\n }\n\n case 'getAvailableAiProviders': {\n // Reports which AI providers have stored credentials (keys never leave the backend).\n if (obj.callback) {\n const providers = listAvailableProviders(this.config);\n this.sendTo(obj.from, obj.command, { providers }, obj.callback);\n }\n break;\n }\n\n case 'prettier': {\n // Format the code with Prettier\n if (obj.message && typeof obj.message.code === 'string') {\n try {\n prettier\n .format(obj.message.code, {\n parser: obj.message.type === 'typescript' ? 'babel-ts' : 'babel',\n printWidth: 120,\n semi: true,\n tabWidth: 4,\n useTabs: false,\n trailingComma: 'all',\n singleQuote: true,\n singleAttributePerLine: true,\n endOfLine: 'lf',\n bracketSpacing: true,\n arrowParens: 'avoid',\n quoteProps: 'as-needed',\n })\n .then(formattedCode => {\n if (obj.callback) {\n this.sendTo(obj.from, obj.command, { code: formattedCode }, obj.callback);\n } else {\n this.logWithLineInfo(`Formatted code:\\n${formattedCode}`);\n }\n })\n .catch(e => {\n this.logError('Prettier', 'Error formatting code:', e as Error);\n this.sendTo(obj.from, obj.command, { error: (e as Error).toString() }, obj.callback);\n });\n } catch (e) {\n this.logError('Prettier', 'Error formatting code:', e as Error);\n this.sendTo(obj.from, obj.command, { error: (e as Error).toString() }, obj.callback);\n }\n } else {\n this.sendTo(obj.from, obj.command, { error: 'No code provided' }, obj.callback);\n }\n break;\n }\n\n case 'execute': {\n if (obj.callback) {\n void this.executeScript(obj.message)\n .then(result => this.sendTo(obj.from, obj.command, result, obj.callback))\n .catch(err =>\n this.sendTo(\n obj.from,\n obj.command,\n {\n ok: false,\n error: `Internal error: ${err as Error}`,\n logs: [],\n output: '',\n },\n obj.callback,\n ),\n );\n }\n break;\n }\n }\n }\n\n onLog(msg: ioBroker.LogMessage): void {\n for (const name of Object.keys(this.logSubscriptions)) {\n for (const handler of this.logSubscriptions[name]) {\n if (\n typeof handler.cb === 'function' &&\n (handler.severity === '*' || handler.severity === msg.severity)\n ) {\n handler.sandbox.logHandler = handler.severity || '*';\n handler.cb.call(handler.sandbox, msg);\n handler.sandbox.logHandler = undefined;\n }\n }\n }\n\n // Special case if some script is executed now with \"execute\" command, and we see \"script.js.__execute_X:\" at the beginning\n if (this.logCollectors.length) {\n for (const logCollector of this.logCollectors) {\n if (msg.message.includes(`${logCollector.name}:`)) {\n logCollector.collector(msg.severity as ioBroker.LogLevel, msg.message);\n }\n }\n }\n }\n\n logError(scriptName: string, msg: string, e: Error, offs?: number): void {\n const stack = e.stack ? e.stack.toString().split('\\n') : e ? e.toString() : '';\n if (!msg.includes('\\n')) {\n msg = msg.replace(/[: ]*$/, ': ');\n }\n if (!msg.endsWith(' ')) {\n msg += ':';\n }\n if (!scriptName.startsWith(SCRIPT_CODE_MARKER)) {\n scriptName = SCRIPT_CODE_MARKER + scriptName;\n }\n\n this.errorLogFunction.error(`${scriptName}: ${msg}${this.fixLineNo(stack[0])}`);\n for (let i = offs || 1; i < stack.length; i++) {\n if (!stack[i]) {\n continue;\n }\n if (stack[i].match(/runInNewContext|javascript\\.js:/)) {\n break;\n }\n this.errorLogFunction.error(`${scriptName}: ${this.fixLineNo(stack[i])}`);\n }\n }\n\n logWithLineInfo(msg: string): void {\n this.errorLogFunction.warn(msg);\n\n // get current error stack\n const stack = new Error().stack?.split('\\n');\n\n if (stack) {\n for (let i = 3; i < stack.length; i++) {\n if (!stack[i]) {\n continue;\n }\n if (stack[i].match(/runInContext|runInNewContext|javascript\\.js:/)) {\n break;\n }\n this.errorLogFunction.warn(this.fixLineNo(stack[i]));\n }\n }\n }\n\n async main(): Promise {\n // Patch the font as it sometimes is wrong\n if (!this.context.debugMode) {\n if (await this.patchFont()) {\n this.log.debug('Font patched');\n }\n }\n\n this.log.debug(`config.subscribe (Do not subscribe all states on start): ${this.config.subscribe}`);\n\n // correct jsonConfig for admin\n const instObj: ioBroker.InstanceObject | null | undefined = await this.getForeignObjectAsync(\n `system.adapter.${this.namespace}`,\n );\n if (instObj?.common) {\n if (instObj.common.adminUI?.config !== 'json') {\n if (instObj.common.adminUI) {\n instObj.common.adminUI.config = 'json';\n } else {\n instObj.common.adminUI = { config: 'json' };\n }\n void this.setForeignObject(instObj._id, instObj);\n }\n }\n\n if (webstormDebug) {\n this.errorLogFunction = {\n error: console.error,\n warn: console.warn,\n info: console.info,\n debug: console.log,\n silly: console.log,\n };\n this.context.errorLogFunction = this.errorLogFunction;\n }\n this.activeStr = `${this.namespace}.scriptEnabled.`;\n\n this.mods.fs = new ProtectFs(this.log, getAbsoluteDefaultDataDir());\n this.mods['fs/promises'] = this.mods.fs.promises; // to avoid require('fs/promises');\n\n // try to read TS declarations\n try {\n tsAmbient = {\n 'javascript.d.ts': readFileSync(this.mods.path.join(__dirname, 'lib/javascript.d.ts'), 'utf8'),\n };\n this.tsServer.provideAmbientDeclarations(tsAmbient);\n jsDeclarationServer.provideAmbientDeclarations(tsAmbient);\n } catch (err: unknown) {\n this.log.warn(`Could not read TypeScript ambient declarations: ${err as Error}`);\n // This should not happen, so send an error report to Sentry\n if (this.supportsFeature && this.supportsFeature('PLUGINS')) {\n const sentryInstance = this.getPluginInstance('sentry');\n if (sentryInstance) {\n const sentryObject = sentryInstance.getSentryObject();\n sentryObject?.captureException(err);\n }\n }\n // Keep the adapter from crashing when the included typings cannot be read\n tsAmbient = {};\n }\n\n await this.installLibraries();\n // Load the TS declarations for Node.js and all 3rd party modules\n this.loadTypeScriptDeclarations();\n\n await this.getData();\n this.context.scheduler = new Scheduler(\n this.log,\n Date,\n this.mods.suncalc,\n this.config.latitude,\n this.config.longitude,\n );\n await this.dayTimeSchedules();\n await this.sunTimeSchedules();\n await this.timeSchedule();\n\n // Store allowSelfSignedCerts on the context, so sandbox HTTP functions can use it\n // without setting the global process.env.NODE_TLS_REJECT_UNAUTHORIZED (which affects all adapters in compact mode)\n this.context.allowSelfSignedCerts = this.config.allowSelfSignedCerts;\n\n // In `manager` credential mode, subscribe to the configured AI credentials so changes in the\n // central credential store are picked up live (the keys are cached for the AI sendTo handlers).\n await this.subscribeAiCredentials();\n\n const doc = await this.getObjectViewAsync('script', 'javascript', {});\n if (doc?.rows?.length) {\n // sort global scripts if configured\n if (this.config.sortGlobalScriptsAlphabetically) {\n doc.rows.sort((a, b) => a.value._id.localeCompare(b.value._id));\n }\n // assemble global script\n for (let g = 0; g < doc.rows.length; g++) {\n const obj = doc.rows[g].value;\n if (checkIsGlobal(obj)) {\n if (obj && obj.common) {\n const engineType = (obj.common.engineType || '').toLowerCase();\n\n if (obj.common.enabled) {\n if (engineType.startsWith('typescript')) {\n // TypeScript\n this.log.info(`${obj._id}: compiling TypeScript source...`);\n // In order to compile global TypeScript, we need to do some transformations\n // 1. For top-level-await, some statements must be wrapped in an immediately-invoked async function\n // 2. If any global script uses `import`, the declarations are no longer visible if they are not exported with `declare global`\n const transformedSource = transformScriptBeforeCompilation(obj.common.source, true);\n // The source code must be transformed in order to support top level await\n // Global scripts must not be treated as a module, otherwise their methods\n // cannot be found by the normal scripts\n // We need to hash both global declarations that are known until now\n // AND the script source, because changing either can change the compilation output\n const sourceHash: string = hashSource(\n tsSourceHashBase + this.globalDeclarations + transformedSource,\n );\n\n let compiled: string | undefined;\n let declarations: string | undefined;\n // If we already stored the compiled source code and the original source hash,\n // use the hash to check whether we can rely on the compiled source code or\n // if we need to compile it again\n if (\n typeof obj.common.compiled === 'string' &&\n typeof obj.common.sourceHash === 'string' &&\n sourceHash === obj.common.sourceHash\n ) {\n // We can reuse the stored source\n compiled = obj.common.compiled;\n declarations = obj.common.declarations;\n this.log.info(\n `${obj._id}: source code did not change, using cached compilation result...`,\n );\n } else {\n // We don't have a hashed source code, or the original source changed, compile it\n const filename = scriptIdToTSFilename(obj._id);\n let tsCompiled: CompileResult;\n try {\n tsCompiled = this.tsServer.compile(filename, transformedSource);\n } catch (err: unknown) {\n this.log.error(`${obj._id}: TypeScript compilation failed:\\n${err as Error}`);\n continue;\n }\n\n const errors = tsCompiled.diagnostics\n .map(diag => `${diag.annotatedSource}\\n`)\n .join('\\n');\n\n if (tsCompiled.success) {\n if (errors.length > 0) {\n this.log.warn(\n `${obj._id}: TypeScript compilation completed with errors:\\n${errors}`,\n );\n } else {\n this.log.info(`${obj._id}: TypeScript compilation successful`);\n }\n compiled = tsCompiled.result;\n // Global scripts that have been transformed to support `import` need to have their declarations transformed aswell\n declarations = transformGlobalDeclarations(tsCompiled.declarations || '');\n\n const newCommon: {\n compiled: string | undefined;\n declarations?: string;\n sourceHash: string;\n } = {\n sourceHash,\n compiled,\n };\n if (declarations) {\n newCommon.declarations = declarations;\n }\n\n // Store the compiled source and the original source hash, so we don't need to do the work again next time\n this.ignoreObjectChange.add(obj._id); // ignore the next change and don't restart scripts\n void this.extendForeignObject(obj._id, {\n common: newCommon,\n });\n } else {\n this.log.error(`${obj._id}: TypeScript compilation failed:\\n${errors}`);\n continue;\n }\n }\n this.globalScript += `${compiled}\\n`;\n // if declarations were generated, remember them\n if (declarations != null) {\n this.provideDeclarationsForGlobalScript(obj._id, declarations);\n }\n } else {\n // javascript\n const sourceCode = obj.common.source;\n this.globalScript += `${sourceCode}\\n`;\n\n // try to compile the declarations so TypeScripts can use\n // functions defined in global JavaScripts\n const filename = scriptIdToTSFilename(obj._id);\n let tsCompiled: CompileResult;\n try {\n tsCompiled = jsDeclarationServer.compile(filename, sourceCode);\n } catch (err: unknown) {\n this.log.warn(\n `${obj._id}: Error while generating type declarations, skipping:\\n${err as Error}`,\n );\n continue;\n }\n // if declarations were generated, remember them\n if (tsCompiled.success && tsCompiled.declarations != null) {\n this.provideDeclarationsForGlobalScript(obj._id, tsCompiled.declarations);\n }\n }\n }\n }\n }\n }\n }\n\n this.globalScript = this.globalScript.replace(/\\r\\n/g, '\\n');\n this.globalScriptLines = this.globalScript.split(/\\n/g).length - 1;\n\n if (doc?.rows?.length) {\n // load all scripts\n for (let i = 0; i < doc.rows.length; i++) {\n if (!checkIsGlobal(doc.rows[i].value)) {\n void this.loadScript(doc.rows[i].value);\n }\n }\n }\n\n if (this.config.mirrorPath?.trim()) {\n this.config.mirrorInstance = parseInt(this.config.mirrorInstance as unknown as string, 10) || 0;\n if (this.instance === this.config.mirrorInstance) {\n const ioBDataDir = getAbsoluteDefaultDataDir() + sep;\n this.config.mirrorPath = normalize(this.config.mirrorPath);\n let mirrorForbidden = false;\n for (let dir of forbiddenMirrorLocations) {\n dir = join(ioBDataDir, dir) + sep;\n if (dir.includes(this.config.mirrorPath) || this.config.mirrorPath.startsWith(dir)) {\n this.log.error(`The Mirror directory is not allowed to be a central ioBroker directory!`);\n this.log.error(`Directory ${this.config.mirrorPath} is not allowed to mirror files!`);\n mirrorForbidden = true;\n break;\n }\n }\n if (!mirrorForbidden) {\n this.mirror = new Mirror({\n adapter: this,\n log: this.log,\n diskRoot: this.config.mirrorPath,\n });\n }\n }\n }\n\n // Check setState counter per minute and stop a script if too high\n this.setStateCountCheckInterval = setInterval(() => {\n for (const id of Object.keys(this.scripts)) {\n if (!this.scripts[id]) {\n continue;\n }\n const currentSetStatePerMinuteCounter = this.scripts[id].setStatePerMinuteCounter;\n this.scripts[id].setStatePerMinuteCounter = 0;\n if (currentSetStatePerMinuteCounter > this.config.maxSetStatePerMinute) {\n this.scripts[id].setStatePerMinuteProblemCounter++;\n this.log.debug(\n `${id}: Script has reached the maximum of ${this.config.maxSetStatePerMinute} setState calls per minute in ${this.scripts[id].setStatePerMinuteProblemCounter} consecutive minutes`,\n );\n // Allow \"too high counters\" for 1 minute for script starts or such and only\n // stop the script when lasts longer\n if (this.scripts[id].setStatePerMinuteProblemCounter > 1) {\n this.log.error(\n `${id}: Script is calling setState more than ${this.config.maxSetStatePerMinute} times per minute! Stopping Script now! Please check your script!`,\n );\n void this.stopScript(id);\n }\n } else if (this.scripts[id].setStatePerMinuteProblemCounter > 0) {\n this.scripts[id].setStatePerMinuteProblemCounter--;\n this.log.debug(\n `Script ${id} has NOT reached the maximum of ${this.config.maxSetStatePerMinute} setState calls per minute. Decrease problem counter to ${this.scripts[id].setStatePerMinuteProblemCounter}`,\n );\n }\n }\n }, 60_000).unref();\n }\n\n private loadTypeScriptDeclarations(): void {\n // try to load the typings on disk for all 3rd party modules\n const packages = [\n 'node', // this provides auto-completion for most builtins\n '@iobroker/types', // this provides auto-completion for most builtins\n ];\n // Also include user-selected libraries (but only those that are also installed)\n if (typeof this.config?.libraries === 'string' && typeof this.config.libraryTypings === 'string') {\n const installedLibs = this.config.libraries\n .split(/[,;\\s]+/)\n .map(s => s.trim().split('@')[0])\n .filter(s => !!s);\n\n const wantsTypings = this.config.libraryTypings\n .split(/[,;\\s]+/)\n .map(s => s.trim())\n .filter(s => !!s);\n\n // O(1) lookups – avoids O(n²) Array.includes inside loops\n const installedSet = new Set(installedLibs);\n const wantsSet = new Set(wantsTypings);\n const packagesSet = new Set(packages);\n\n // Add all installed libraries the user has requested typings for to the list of packages\n for (const lib of installedLibs) {\n if (wantsSet.has(lib) && !packagesSet.has(lib)) {\n packages.push(lib);\n packagesSet.add(lib);\n }\n }\n // Some packages have submodules (e.g., rxjs/operators) that are not exposed through the main entry point\n // If typings are requested for them, also add them if the base module is installed\n for (const lib of wantsTypings) {\n // Extract the package name and check if we need to add it\n if (!lib.includes('/')) {\n continue;\n }\n const pkgName = lib.substring(0, lib.indexOf('/'));\n\n if (installedSet.has(pkgName) && !packagesSet.has(lib)) {\n packages.push(lib);\n packagesSet.add(lib);\n }\n }\n }\n for (const pkg of packages) {\n let pkgTypings = resolveTypings(\n pkg,\n this.getAdapterScopedPackageIdentifier ? this.getAdapterScopedPackageIdentifier(pkg) : pkg,\n // node needs ambient typings, so we don't wrap it in declare module\n pkg !== 'node',\n );\n if (!pkgTypings) {\n // Create the empty dummy declarations so users don't get the \"not found\" error\n // for installed packages\n if (pkg.includes('/')) {\n pkgTypings = {\n [`node_modules/${pkg}/index.d.ts`]: `declare module \"${pkg}\";`,\n };\n } else {\n pkgTypings = {\n [`node_modules/@types/${pkg}/index.d.ts`]: `declare module \"${pkg}\";`,\n };\n }\n }\n this.log.debug(`Loaded TypeScript definitions for \"${pkg}\": ${JSON.stringify(Object.keys(pkgTypings))}`);\n // remember the declarations for the editor\n Object.assign(tsAmbient, pkgTypings);\n // and give the language servers access to them\n this.tsServer.provideAmbientDeclarations(pkgTypings);\n jsDeclarationServer.provideAmbientDeclarations(pkgTypings);\n }\n }\n\n updateObjectContext(id: string, obj: ioBroker.Object | null | undefined): void {\n if (obj) {\n // add state to state ID's list\n if (obj.type === 'state') {\n if (!this.stateIdSet.has(id)) {\n this.sortedInsert(id);\n this.stateIdSet.add(id);\n }\n if (this.context.devices && this.context.channels) {\n const parts = id.split('.');\n parts.pop();\n const chn = parts.join('.');\n this.context.channels[chn] ||= new Set();\n this.context.channels[chn].add(id);\n\n parts.pop();\n const dev = parts.join('.');\n this.context.devices[dev] ||= new Set();\n this.context.devices[dev].add(id);\n }\n }\n } else {\n // delete object from state ID's list\n const pos = this.binaryIndexOf(this.stateIds, id);\n if (pos !== -1) {\n this.stateIds.splice(pos, 1);\n this.stateIdSet.delete(id);\n }\n if (this.context.devices && this.context.channels) {\n const parts = id.split('.');\n parts.pop();\n const chn = parts.join('.');\n this.context.channels[chn]?.delete(id);\n\n parts.pop();\n const dev = parts.join('.');\n this.context.devices[dev]?.delete(id);\n }\n\n delete this.folderCreationVerifiedObjects[id];\n }\n\n if (!obj && this.objects[id]) {\n // objects were deleted\n this.removeFromNames(id);\n delete this.objects[id];\n } else if (obj && !this.objects[id]) {\n // object was added\n this.objects[id] = obj;\n this.addToNames(obj);\n } else if (obj && this.objects[id].common) {\n // Object just changed\n this.objects[id] = obj;\n\n const n = this.getName(id);\n let nn = this.objects[id].common ? this.objects[id].common.name : '';\n\n if (nn && typeof nn === 'object') {\n nn = nn[getLanguage()] || nn.en;\n }\n\n if (n !== nn) {\n if (n) {\n this.removeFromNames(id);\n }\n if (nn) {\n this.addToNames(obj);\n }\n }\n }\n }\n\n async stopAllScripts(): Promise {\n const scripts = Object.keys(this.scripts);\n const promises: Promise[] = [];\n for (let i = 0; i < scripts.length; i++) {\n promises.push(this.stopScript(scripts[i]));\n }\n return Promise.all(promises).then(() => {});\n }\n\n convertBackStringifiedValues(\n id: string,\n state: ioBroker.State | null | undefined,\n ): ioBroker.State | null | undefined {\n if (\n state &&\n typeof state.val === 'string' &&\n this.objects[id]?.common &&\n (this.objects[id].common.type === 'array' || this.objects[id].common.type === 'object')\n ) {\n try {\n state.val = JSON.parse(state.val);\n } catch (err: any) {\n if (id.startsWith('javascript.') || id.startsWith('0_userdata.0')) {\n this.log.info(\n `Could not parse value for id \"${id}\" into ${this.objects[id].common.type}: ${err.toString()}`,\n );\n } else {\n this.log.debug(\n `Could not parse value for id \"${id}\" into ${this.objects[id].common.type}: ${err.toString()}`,\n );\n }\n }\n }\n return state;\n }\n\n prepareStateObjectSimple(id: string, state: ioBroker.StateValue, isAck: boolean): ioBroker.State {\n // otherwise, assume that the given state is the value to be set\n const oState: ioBroker.State = { val: state, ack: isAck } as ioBroker.State;\n\n return this.prepareStateObject(id, oState);\n }\n\n prepareStateObject(id: string, state: ioBroker.SettableState | null): ioBroker.State {\n let oState: ioBroker.State;\n\n if (state && typeof state === 'object') {\n oState = state as ioBroker.State;\n } else {\n oState = { val: null } as ioBroker.State;\n }\n\n if (this.config.subscribe) {\n return oState;\n }\n // set other values to have a full state object\n // mirrors logic from statesInRedis\n if (oState.ts === undefined) {\n oState.ts = Date.now();\n }\n\n if (oState.q === undefined) {\n oState.q = 0;\n }\n\n oState.from =\n typeof oState.from === 'string' && oState.from !== '' ? oState.from : `system.adapter.${this.namespace}`;\n\n if (oState.lc === undefined) {\n const formerStateValue = this.interimStateValues[id] || this.states[id];\n if (!formerStateValue) {\n oState.lc = oState.ts;\n } else {\n // isDeepStrictEqual works on objects and primitive values\n const hasChanged = !isDeepStrictEqual(formerStateValue.val, oState.val);\n if (!formerStateValue.lc || hasChanged) {\n oState.lc = oState.ts;\n } else {\n oState.lc = formerStateValue.lc;\n }\n }\n }\n\n return oState;\n }\n\n async getData(): Promise {\n await this.subscribeForeignObjectsAsync('*');\n\n if (!this.config.subscribe) {\n await this.subscribeForeignStatesAsync('*');\n } else {\n await this.subscribeStatesAsync('debug.to');\n await this.subscribeStatesAsync('scriptEnabled.*');\n }\n\n this.log.info('requesting all states');\n\n const statesPromise = this.getForeignStatesAsync('*')\n .then(res => {\n if (!res) {\n this.log.error(`Could not initialize states: no result`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n return;\n }\n if (!this.config.subscribe) {\n this.states = Object.assign(res, this.states);\n this.context.states = this.states;\n\n this.addGetProperty(this.states);\n }\n\n // remember all IDs – sort once to guarantee the sorted invariant\n // required by binaryIndexOf() / sortedInsert() used later\n const keys = Object.keys(res).sort();\n for (const id of keys) {\n this.stateIds.push(id);\n this.stateIdSet.add(id);\n }\n this.statesInitDone = true;\n this.log.info('received all states');\n })\n .catch((err: any) => {\n this.log.error(`Could not initialize states: ${err?.message || 'no result'}`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n });\n\n this.log.info('requesting all objects');\n\n const objectsPromise = this.getObjectListAsync({ include_docs: true })\n .then(res => {\n if (!res?.rows) {\n this.log.error(`Could not initialize objects: no result`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n return;\n }\n this.objects = {};\n this.context.objects = this.objects;\n for (let i = 0; i < res.rows.length; i++) {\n const doc = res.rows[i]?.doc;\n if (!doc) {\n this.log.debug(`Got empty object for index ${i} (${res.rows[i].id})`);\n continue;\n }\n if (this.objects[doc._id] === undefined) {\n // If was already there, ignore\n this.objects[doc._id] = doc;\n }\n doc.type === 'enum' && this._enums.add(doc._id);\n\n // Collect all names\n this.addToNames(this.objects[doc._id]);\n }\n this.addGetProperty(this.objects);\n\n const systemConfig = this.objects['system.config'];\n this.password = systemConfig?.native?.javascriptPassword\n ? this.decrypt(systemConfig?.native.javascriptPassword)\n : '';\n\n // set language for debug messages\n if (systemConfig?.common?.language) {\n setLanguage(systemConfig.common.language);\n this.language = systemConfig.common.language;\n this.context.language = this.language as ioBroker.Languages;\n } else if (this.language) {\n setLanguage(this.language);\n this.context.language = this.language;\n }\n\n // try to use system coordinates\n if (this.config.useSystemGPS) {\n if (systemConfig?.common?.latitude || systemConfig?.common?.longitude) {\n this.config.latitude = systemConfig.common.latitude;\n this.config.longitude = systemConfig.common.longitude;\n } else if (this.latitude && this.longitude) {\n this.config.latitude = this.latitude;\n this.config.longitude = this.longitude;\n }\n }\n this.config.latitude = parseFloat(this.config.latitude as unknown as string);\n this.config.longitude = parseFloat(this.config.longitude as unknown as string);\n\n if (isNaN(this.config.latitude)) {\n this.log.warn(`Configured latitude is not a number - check (instance/system) configuration`);\n } else if (this.config.latitude < -90 || this.config.latitude > 90) {\n this.log.warn(\n `Configured latitude \"${this.config.latitude}\" is invalid - check (instance/system) configuration`,\n );\n }\n\n if (isNaN(this.config.longitude)) {\n this.log.warn(`Configured longitude is not a number - check (instance/system) configuration`);\n } else if (this.config.longitude < -180 || this.config.longitude > 180) {\n this.log.warn(\n `Configured longitude \"${this.config.longitude}\" is invalid - check (instance/system) configuration`,\n );\n }\n\n this.config.sunriseEvent ||= 'nightEnd';\n this.config.sunriseOffset ||= 0;\n this.config.sunriseLimitStart ||= '06:00';\n this.config.sunriseLimitEnd ||= '12:00';\n\n this.config.sunsetEvent ||= 'dusk';\n this.config.sunsetOffset ||= 0;\n this.config.sunsetLimitStart ||= '18:00';\n this.config.sunsetLimitEnd ||= '23:00';\n\n this.objectsInitDone = true;\n this.log.info('received all objects');\n })\n .catch((err: any) => {\n this.log.error(`Could not initialize objects: ${err?.message || 'no result'}`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n });\n\n return Promise.all([statesPromise, objectsPromise]).then(() => {});\n }\n\n async createActiveObject(id: string, enabled: boolean): Promise {\n const idActive = `${this.namespace}.scriptEnabled.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n\n if (!this.objects[idActive]) {\n this.objects[idActive] = {\n _id: idActive,\n common: {\n name: `scriptEnabled.${id.substring(SCRIPT_CODE_MARKER.length)}`,\n desc: 'controls script activity',\n type: 'boolean',\n write: true,\n read: true,\n role: 'switch.active',\n },\n native: {\n script: id,\n },\n type: 'state',\n };\n try {\n await this.setForeignObjectAsync(idActive, this.objects[idActive]);\n const intermediateStateValue = this.prepareStateObjectSimple(idActive, enabled, true);\n await this.setForeignStateAsync(idActive, enabled, true);\n if (enabled && !this.config.subscribe) {\n this.interimStateValues[idActive] = intermediateStateValue;\n }\n } catch {\n // ignore\n }\n } else {\n const state = await this.getForeignStateAsync(idActive);\n if (state && state.val !== enabled) {\n const intermediateStateValue = this.prepareStateObjectSimple(idActive, enabled, true);\n await this.setForeignStateAsync(idActive, enabled, true);\n if (enabled && !this.config.subscribe) {\n this.interimStateValues[idActive] = intermediateStateValue;\n }\n }\n }\n }\n\n async createProblemObject(id: string): Promise {\n const idProblem = `${this.namespace}.scriptProblem.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n\n if (!this.objects[idProblem]) {\n this.objects[idProblem] = {\n _id: idProblem,\n common: {\n name: `scriptProblem.${id.substring(SCRIPT_CODE_MARKER.length)}`,\n desc: 'Script has a problem',\n type: 'boolean',\n expert: true,\n write: false,\n read: true,\n role: 'indicator.error',\n },\n native: {\n script: id,\n },\n type: 'state',\n };\n try {\n await this.setForeignObjectAsync(idProblem, this.objects[idProblem]);\n await this.setForeignStateAsync(idProblem, false, true);\n } catch {\n // ignore\n }\n } else {\n const state = await this.getForeignStateAsync(idProblem);\n if (state && state.val !== false) {\n await this.setForeignStateAsync(idProblem, false, true);\n }\n }\n }\n\n addToNames(obj: ioBroker.Object): void {\n const id = obj._id;\n\n if (obj.common?.name) {\n let name = obj.common.name;\n if (name && typeof name === 'object') {\n name = name[getLanguage()] || name.en;\n }\n if (!name || typeof name !== 'string') {\n // TODO, take name in current language\n return;\n }\n\n if (!this.names[name]) {\n this.names[name] = id;\n } else {\n // convert to array\n if (!Array.isArray(this.names[name])) {\n this.names[name] = [this.names[name] as string];\n }\n\n (this.names[name] as string[]).push(id);\n }\n\n // keep reverse-map up to date for O(1) getName()\n this.nameById.set(id, name);\n }\n }\n\n removeFromNames(id: string): void {\n const n = this.getName(id);\n\n if (n) {\n if (Array.isArray(this.names[n])) {\n const arr = this.names[n];\n const pos = arr.indexOf(id);\n if (pos > -1) {\n arr.splice(pos, 1);\n if (arr.length === 1) {\n this.names[n] = arr[0];\n }\n }\n } else {\n delete this.names[n];\n }\n\n // keep reverse-map up to date for O(1) getName()\n this.nameById.delete(id);\n }\n }\n\n getName(id: string): string | null {\n return this.nameById.get(id) ?? null;\n }\n\n async installNpm(npmLib: string): Promise {\n return new Promise((resolve, reject) => {\n const path = __dirname;\n\n // Also, set the working directory (cwd) of the process instead of using --prefix\n // because that has ugly bugs on Windows\n const cmd = `npm install ${npmLib} --omit=dev`;\n this.log.info(`Installing ${npmLib} into ${__dirname} - cmd: ${cmd}`);\n\n // System call used for update of js-controller itself,\n // because during the installation the npm packet will be deleted too, but some files must be loaded even during the installation process.\n const child = this.mods.child_process.exec(cmd, {\n windowsHide: true,\n cwd: path,\n timeout: 120_000, // 2 minutes max – prevents infinite blocking\n });\n\n child.stdout?.on('data', buf => this.log.info(buf.toString('utf8')));\n\n child.stderr?.on('data', buf => this.log.error(buf.toString('utf8')));\n\n child.on('err', err => {\n this.log.error(`Cannot install ${npmLib}: ${err}`);\n reject(new Error(`Cannot install ${npmLib}: ${err}`));\n });\n child.on('error', err => {\n this.log.error(`Cannot install ${npmLib}: ${err}`);\n reject(new Error(`Cannot install ${npmLib}: ${err}`));\n });\n\n child.on('exit', (code: number /* , signal */) => {\n if (code) {\n this.log.error(`Cannot install ${npmLib}: ${code}`);\n reject(new Error(`Cannot install ${npmLib}: ${code}`));\n }\n // command succeeded\n resolve(code);\n });\n });\n }\n\n async installLibraries(): Promise {\n if (typeof this.config?.libraries !== 'string') {\n this.config.libraries = '';\n }\n\n const libraries: string[] = this.config.libraries\n .split(/[,;\\s]+/)\n .map(d => d.trim())\n .filter(d => d);\n\n this.log.debug(`Custom libraries in config: \"${this.config.libraries}\": ${JSON.stringify(libraries)}`);\n\n let installedNodeModules: string[] = [];\n const keepModules: string[] = [];\n\n // js-controller >= 6.x\n if (typeof this.listInstalledNodeModules === 'function') {\n installedNodeModules = await this.listInstalledNodeModules();\n\n this.log.debug(`Found installed libraries: ${JSON.stringify(installedNodeModules)}`);\n }\n\n for (const lib of libraries) {\n let depName = lib;\n let version = 'latest';\n\n if (depName.includes('@') && depName.lastIndexOf('@') > 0) {\n const parts = depName.split('@');\n version = parts.pop() ?? 'latest';\n depName = parts.join('@');\n }\n\n /** The real module name, because the dependency can be a URL too */\n let moduleName = depName;\n\n if (URL.canParse(depName)) {\n moduleName = await requestModuleNameByUrl(depName);\n\n this.log.debug(`Found custom library in config: \"${moduleName}@${version}\" (from ${depName})`);\n } else {\n this.log.debug(`Found custom library in config: \"${moduleName}@${version}\"`);\n }\n\n keepModules.push(moduleName);\n\n // js-controller >= 6.x\n if (typeof this.installNodeModule === 'function') {\n try {\n const result = await this.installNodeModule(depName, { version });\n if (result.success) {\n this.log.debug(`Installed custom library: \"${moduleName}@${version}\"`);\n\n const importedModule: any = await this.importNodeModule(moduleName);\n (this.mods as Record)[moduleName] = importedModule.default ?? importedModule;\n } else {\n this.log.warn(`Cannot install custom npm package \"${moduleName}@${version}\"`);\n }\n } catch (err: unknown) {\n this.log.warn(`Cannot install custom npm package \"${moduleName}@${version}\": ${err as Error}`);\n }\n } else if (!existsSync(`${__dirname}/node_modules/${depName}/package.json`)) {\n // js-controller < 6.x\n this.log.info(`Installing custom library (legacy mode): \"${lib}\"`);\n\n try {\n await this.installNpm(lib);\n this.log.info(`Installed custom npm package (legacy mode): \"${lib}\"`);\n } catch (err: any) {\n this.log.warn(`Cannot install custom npm package \"${lib}\" (legacy mode): ${err.toString()}`);\n }\n }\n }\n\n // js-controller >= 6.x\n if (typeof this.uninstallNodeModule === 'function') {\n for (const installedNodeModule of installedNodeModules) {\n if (!keepModules.includes(installedNodeModule)) {\n try {\n await this.uninstallNodeModule(installedNodeModule);\n\n this.log.info(`Removed custom npm package: \"${installedNodeModule}\"`);\n } catch (err: any) {\n this.log.warn(`Cannot remove custom npm package ${installedNodeModule}: ${err.toString()}`);\n }\n }\n }\n }\n }\n\n createVM(source: string, name: string, wrapAsync: boolean): false | JsScript {\n if (this.context.debugMode && name !== this.context.debugMode) {\n return false;\n }\n\n if (!this.context.debugMode) {\n const logSubscriptionsText =\n \"\\n;\\nlog(`registered ${__engine.__subscriptions} subscription${__engine.__subscriptions === 1 ? '' : 's'},\" +\n \" ${__engine.__schedules} schedule${__engine.__schedules === 1 ? '' : 's'},\" +\n \" ${__engine.__subscriptionsMessage} message${__engine.__subscriptionsMessage === 1 ? '' : 's'},\" +\n \" ${__engine.__subscriptionsLog} log${__engine.__subscriptionsLog === 1 ? '' : 's'}\" +\n \" and ${__engine.__subscriptionsFile} file subscription${__engine.__subscriptionsFile === 1 ? '' : 's'}`);\\n\";\n\n if (wrapAsync) {\n source = `(async () => {\\n${source}\\n${logSubscriptionsText}\\n})();`;\n } else {\n if (source.endsWith('export {};\\n')) {\n // If the source ends with \"export {};\" place the log subscriptions before it\n source = source.slice(0, -11); // remove \"export {};\\n\"\n source = `${source}\\n${logSubscriptionsText}\\nexport {};\\n`;\n } else {\n source = `${source}\\n${logSubscriptionsText}`;\n }\n }\n } else {\n if (wrapAsync) {\n source = `(async () => {debugger;\\n${source}\\n})();`;\n } else {\n source = `debugger;${source}`;\n }\n }\n\n try {\n const options: ScriptOptions = {\n filename: name,\n // displayErrors: true,\n // lineOffset: this.globalScriptLines\n };\n return {\n script: new Script(source, options),\n } as JsScript;\n } catch (err: unknown) {\n this.logError(name, `compile failed at`, err as Error);\n return false;\n }\n }\n\n execute(\n script: JsScript,\n name: string,\n engineType: ScriptType,\n verbose: boolean,\n debug: boolean,\n /**\n * Optional sink for the \"execute\" message API. When provided, the script runs in an\n * ephemeral diagnostic mode: every log line (the script's own `log()`/`console.*` output\n * AND all verbose internal operations) is forwarded to this collector instead of the\n * adapter log, and no `scriptProblem` state is written.\n */\n logCollector?: ((severity: ioBroker.LogLevel, message: string) => void) | null,\n ): void {\n script.intervals = new Set();\n script.timeouts = new Set();\n script.schedules = [];\n script.wizards = [];\n script.name = name;\n script.engineType = engineType;\n script._id = Math.floor(Math.random() * 0xffffffff);\n script.subscribes = {};\n script.subscribesFile = {};\n script.setStatePerMinuteCounter = 0;\n script.setStatePerMinuteProblemCounter = 0;\n if (!logCollector) {\n void this.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: false,\n ack: true,\n expire: 1000,\n });\n }\n\n const sandbox = sandBox(script, name, verbose, debug, this.context, logCollector);\n\n try {\n script.script.runInNewContext(sandbox, {\n filename: name,\n displayErrors: true,\n // lineOffset: this.globalScriptLines\n });\n } catch (err: unknown) {\n if (logCollector) {\n const e = err as Error;\n const stack = (e?.stack ? e.stack.toString() : String(err))\n .split('\\n')\n .map(line => this.fixLineNo(line))\n .join('\\n');\n logCollector('error', `Error by run: ${stack}`);\n } else {\n void this.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'execute',\n });\n this.logError(name, 'Error by run:', err as Error);\n }\n }\n }\n\n /**\n * Run an ad-hoc script sent via the `execute` message and return everything it logged.\n *\n * The script is compiled (JavaScript or TypeScript), executed with the same sandbox API as a\n * regular script (verbose by default, so internal operations like setState/subscribe are logged\n * too), left running for `timeout` ms to collect asynchronous output, and afterwards stopped and\n * fully cleaned up (timers, subscriptions, schedules). It is ephemeral: no script object or\n * states are created.\n *\n * Expected `message`:\n * - `source` / `code` (string, required) – the script source\n * - `engineType` (string, optional) – `TypeScript/ts` to compile as TypeScript, otherwise JavaScript\n * - `verbose` (boolean, optional, default `true`) – log internal sandbox operations\n * - `logLevel` (silly|debug|info|warn|error, optional, default `silly`) – minimum severity to return\n * - `timeout` (number ms, optional, default 5000, clamped to 0…60000) – collection window\n * - `maxLogs` (number, optional, default 5000) – cap on returned log lines\n */\n async executeScript(message: {\n source: string;\n engineType?: 'Javascript/js' | 'TypeScript/ts';\n timeout?: number | string;\n verbose?: boolean;\n logLevel?: ioBroker.LogLevel;\n maxLogs?: number | string;\n }): Promise<{\n ok: boolean;\n error?: string;\n engineType: 'Javascript/js' | 'TypeScript/ts';\n runtime: number;\n truncated: boolean;\n logs: { ts: number; severity: ioBroker.LogLevel; message: string }[];\n output: string;\n }> {\n const LEVELS: ioBroker.LogLevel[] = ['silly', 'debug', 'info', 'warn', 'error'];\n\n const source: unknown = message?.source ?? (message as any)?.code;\n const engineTypeStr = (message?.engineType || '').toString().toLowerCase();\n const isTypeScript = engineTypeStr.startsWith('typescript') || engineTypeStr === 'ts';\n const engineType: 'Javascript/js' | 'TypeScript/ts' = isTypeScript ? 'TypeScript/ts' : 'Javascript/js';\n\n const empty = (\n error: string,\n ): {\n ok: boolean;\n error: string;\n engineType: 'Javascript/js' | 'TypeScript/ts';\n runtime: number;\n truncated: boolean;\n logs: { ts: number; severity: ioBroker.LogLevel; message: string }[];\n output: string;\n } => ({ ok: false, error, engineType, runtime: 0, truncated: false, logs: [], output: '' });\n\n if (typeof source !== 'string' || !source.trim()) {\n return empty('No source code provided');\n }\n\n if (this.context.debugMode) {\n return empty('Cannot execute a script while a debug session is active');\n }\n\n let timeout = parseInt(message?.timeout as string, 10);\n if (isNaN(timeout)) {\n timeout = 5000;\n }\n timeout = Math.max(0, Math.min(timeout, 60000));\n\n const verbose = message?.verbose !== false;\n const minLevel: ioBroker.LogLevel = message?.logLevel\n ? LEVELS.includes(message?.logLevel)\n ? message.logLevel\n : 'silly'\n : 'silly';\n let maxLogs = parseInt(message?.maxLogs as string, 10);\n if (isNaN(maxLogs) || maxLogs <= 0) {\n maxLogs = 5000;\n }\n\n const name = `${SCRIPT_CODE_MARKER}__execute_${++this.executeCounter}`;\n\n // Compile the source the same way regular scripts are compiled\n let createdScript: JsScript | false;\n if (isTypeScript) {\n const transformedSource = transformScriptBeforeCompilation(source, false);\n const filename = scriptIdToTSFilename(name);\n let tsCompiled: CompileResult;\n try {\n tsCompiled = this.tsServer.compile(filename, transformedSource);\n } catch (err: unknown) {\n return empty(`TypeScript compilation failed: ${err as Error}`);\n }\n if (!tsCompiled.success) {\n const errors = tsCompiled.diagnostics.map(diag => diag.annotatedSource).join('\\n');\n return empty(`TypeScript compilation failed:\\n${errors}`);\n }\n createdScript = this.createVM(`${this.globalScript}\\n${tsCompiled.result || ''}`, name, false);\n } else {\n createdScript = this.createVM(`${this.globalScript}\\n${source}`, name, true);\n }\n\n if (!createdScript) {\n return empty('Compilation failed');\n }\n\n const logs: { ts: number; severity: ioBroker.LogLevel; message: string }[] = [];\n let truncated = false;\n const collector = (severity: ioBroker.LogLevel, msg: string): void => {\n if (logs.length >= maxLogs) {\n truncated = true;\n return;\n }\n logs.push({ ts: Date.now(), severity, message: msg });\n };\n this.logCollectors.push({ name, collector });\n this.updateLogSubscriptions();\n\n this.scripts[name] = createdScript;\n this.execute(createdScript, name, engineType, verbose, false, collector);\n\n // Let asynchronous output (timeouts, awaited code, triggered subscriptions) accumulate\n if (timeout) {\n await new Promise(resolve => setTimeout(resolve, timeout));\n }\n\n // Stop and clean up the ephemeral script (timers, subscriptions, schedules, …)\n await this.stopScript(name, true);\n\n const pos = this.logCollectors.findIndex(it => it.name === name);\n if (pos !== -1) {\n this.logCollectors.splice(pos, 1);\n }\n this.updateLogSubscriptions();\n\n const minIdx = LEVELS.indexOf(minLevel);\n const filtered = logs.filter(entry => {\n const idx = LEVELS.indexOf(entry.severity);\n return idx < 0 || idx >= minIdx;\n });\n\n return {\n ok: true,\n engineType,\n runtime: timeout,\n truncated,\n logs: filtered,\n output: filtered.map(entry => `[${entry.severity}] ${entry.message}`).join('\\n'),\n };\n }\n\n /**\n * Finds the index of `id` in a sorted array using binary search – O(log n).\n * Returns -1 if not found. Used instead of Array.indexOf on stateIds.\n */\n private binaryIndexOf(arr: string[], id: string): number {\n let lo = 0;\n let hi = arr.length - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n if (arr[mid] === id) {\n return mid;\n } else if (arr[mid] < id) {\n lo = mid + 1;\n } else {\n hi = mid - 1;\n }\n }\n return -1;\n }\n\n /**\n * Inserts `id` into the sorted `stateIds` array using binary search – O(log n).\n * Much faster than push() + sort() which is O(n log n) on every insertion.\n */\n private sortedInsert(id: string): void {\n let lo = 0;\n let hi = this.stateIds.length;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (this.stateIds[mid] < id) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n if (this.stateIds[lo] !== id) {\n this.stateIds.splice(lo, 0, id);\n }\n }\n\n unsubscribe(id: string | RegExp | string[]): void {\n if (!id) {\n this.log.warn('unsubscribe: empty name');\n return;\n }\n\n if (Array.isArray(id)) {\n id.forEach(sub => this.unsubscribe(sub));\n return;\n }\n\n if (id.constructor && id.constructor.name === 'RegExp') {\n // adapter.log.warn('unsubscribe: todo - process regexp');\n return;\n }\n\n if (typeof id !== 'string') {\n this.log.error(`unsubscribe: invalid type of id - ${typeof id}`);\n return;\n }\n const parts = id.split('.');\n const _adapter = `system.adapter.${parts[0]}.${parts[1]}`;\n if (this.objects[_adapter]?.common?.subscribable) {\n const a = `${parts[0]}.${parts[1]}`;\n const alive = `system.adapter.${a}.alive`;\n if (this.adapterSubs[alive]) {\n this.adapterSubs[alive].delete(id);\n if (!this.adapterSubs[alive].size) {\n delete this.adapterSubs[alive];\n }\n }\n this.sendTo(a, 'unsubscribe', id);\n }\n }\n\n // Analyze if logs are still required or not\n updateLogSubscriptions(): void {\n let found = '';\n\n if (this.logCollectors.length) {\n found = this.logCollectors[0].name;\n } else {\n // go through all scripts and check if some script still requires logs\n Object.keys(this.logSubscriptions).forEach(scriptName => {\n if (!this.logSubscriptions?.[scriptName] || !this.logSubscriptions[scriptName].length) {\n delete this.logSubscriptions[scriptName];\n } else {\n found = scriptName;\n }\n });\n }\n\n if (this.requireLog) {\n if (found && !this.logSubscribed) {\n this.logSubscribed = true;\n void this.requireLog(this.logSubscribed);\n this.log.info(`Subscribed to log messages (at least because of ${found})`);\n } else if (!found && this.logSubscribed) {\n this.logSubscribed = false;\n void this.requireLog(this.logSubscribed);\n this.log.info(`Unsubscribed from log messages (not found any subscribers)`);\n }\n }\n }\n\n async stopScript(name: string, silent?: boolean): Promise {\n if (!this.scripts[name]) {\n return false;\n }\n\n // `silent` is used for ephemeral scripts started via the \"execute\" message – they have no\n // `scriptEnabled` state and should not appear in the adapter log.\n if (!silent) {\n this.log.info(`${name}: Stopping script`);\n\n await this.setState(`scriptEnabled.${name.substring(SCRIPT_CODE_MARKER.length)}`, false, true);\n }\n\n if (this.messageBusHandlers[name]) {\n delete this.messageBusHandlers[name];\n }\n\n if (this.tempDirectories[name]) {\n try {\n this.mods.fs.rmSync(this.tempDirectories[name], { recursive: true });\n\n this.log.debug(`${name}: Removed temp directory: ${this.tempDirectories[name]}`);\n } catch {\n this.log.warn(`${name}: Unable to remove temp directory: ${this.tempDirectories[name]}`);\n }\n\n delete this.tempDirectories[name];\n }\n\n if (this.logSubscriptions[name]) {\n delete this.logSubscriptions[name];\n this.updateLogSubscriptions();\n }\n\n if (this.scripts[name]) {\n // Remove from subscriptions\n this.context.isEnums = false;\n if (this.config.subscribe) {\n // check all subscribed IDs\n Object.keys(this.scripts[name].subscribes).forEach(id => {\n if (this.subscribedPatterns[id]) {\n this.subscribedPatterns[id] -= this.scripts[name].subscribes[id];\n if (this.subscribedPatterns[id] <= 0) {\n this.unsubscribeForeignStates(id);\n delete this.subscribedPatterns[id];\n if (this.states[id]) {\n delete this.states[id];\n }\n }\n }\n });\n }\n\n for (let i = this.subscriptions.length - 1; i >= 0; i--) {\n if (this.subscriptions[i].name === name) {\n const sub = this.subscriptions.splice(i, 1)[0];\n // Also remove from the O(1) dispatch structures – shared helper to keep the\n // exact-id classification identical to the subscribe side in sandbox.ts\n if (sub) {\n removeFromDispatchIndex(this.context, sub);\n }\n if (sub?.pattern.id) {\n this.unsubscribe(sub.pattern.id);\n }\n } else {\n if (\n (!this.context.isEnums && this.subscriptions[i].pattern.enumName) ||\n this.subscriptions[i].pattern.enumId\n ) {\n this.context.isEnums = true;\n }\n }\n }\n\n // check all subscribed files\n Object.keys(this.scripts[name].subscribesFile).forEach(key => {\n if (this.subscribedPatternsFile[key]) {\n this.subscribedPatternsFile[key] -= this.scripts[name].subscribesFile[key];\n if (this.subscribedPatternsFile[key] <= 0) {\n const [id, file] = key.split('$%$');\n void this.unsubscribeForeignFiles(id, file);\n delete this.subscribedPatternsFile[key];\n }\n }\n });\n for (let i = this.subscriptionsFile.length - 1; i >= 0; i--) {\n if (this.subscriptionsFile[i].name === name) {\n this.subscriptionsFile.splice(i, 1);\n }\n }\n\n for (let i = this.subscriptionsObject.length - 1; i >= 0; i--) {\n if (this.subscriptionsObject[i].name === name) {\n const sub = this.subscriptionsObject.splice(i, 1)[0];\n if (sub) {\n // Remove from O(1) dispatch map\n const mapSubs = this.subscriptionsObjectMap.get(sub.pattern);\n if (mapSubs) {\n const pos = mapSubs.indexOf(sub);\n if (pos !== -1) {\n mapSubs.splice(pos, 1);\n }\n if (!mapSubs.length) {\n this.subscriptionsObjectMap.delete(sub.pattern);\n }\n }\n this.unsubscribeForeignObjects(sub.pattern);\n }\n }\n }\n\n // Stop all timeouts\n for (const t of this.scripts[name].timeouts) {\n clearTimeout(t);\n }\n // Stop all intervals\n for (const t of this.scripts[name].intervals) {\n clearInterval(t);\n }\n // Stop all delayed states (setStateDelayed timers) – O(1) via reverse-index\n const scriptStateIds = this.timersByScript.get(name);\n if (scriptStateIds) {\n for (const stateId of scriptStateIds) {\n if (this.timers[stateId]) {\n for (let i = this.timers[stateId].length - 1; i >= 0; i--) {\n if (this.timers[stateId][i].scriptName === name) {\n clearTimeout(this.timers[stateId][i].t);\n this.timers[stateId].splice(i, 1);\n }\n }\n if (!this.timers[stateId].length) {\n delete this.timers[stateId];\n }\n }\n }\n this.timersByScript.delete(name);\n }\n // Stop all scheduled jobs\n for (let i = 0; i < this.scripts[name].schedules.length; i++) {\n if (this.scripts[name].schedules[i]) {\n const _name = this.scripts[name].schedules[i].name;\n if (!this.mods.nodeSchedule.cancelJob(this.scripts[name].schedules[i])) {\n this.log.error(`${name}: Error by canceling scheduled job \"${_name}\"`);\n }\n }\n }\n\n // Stop all time wizards jobs\n if (this.context.scheduler) {\n for (let i = 0; i < this.scripts[name].wizards.length; i++) {\n if (this.scripts[name].wizards[i]) {\n this.context.scheduler.remove(this.scripts[name].wizards[i]);\n }\n }\n }\n\n // if callback for on stop\n if (typeof this.scripts[name].onStopCb === 'function') {\n this.scripts[name].onStopTimeout =\n parseInt(this.scripts[name].onStopTimeout as unknown as string, 10) || 1000;\n\n await new Promise(resolve => {\n let timeout: NodeJS.Timeout | null = setTimeout(() => {\n if (timeout) {\n timeout = null;\n resolve(true);\n }\n }, this.scripts[name].onStopTimeout);\n\n try {\n this.scripts[name].onStopCb(() => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n resolve(true);\n }\n });\n } catch (err: unknown) {\n this.log.error(`${name}: error in onStop callback: ${err as Error}`);\n }\n });\n }\n\n delete this.scripts[name];\n return true;\n }\n return false;\n }\n\n async prepareScript(obj: ioBroker.ScriptObject): Promise {\n if (obj?.common?.enabled && this.debugState.scriptName === obj._id) {\n const id = obj._id;\n await this.debugStop();\n this.log.info(`${id}: Debugging was stopped, because started in normal mode`);\n return this.prepareScript(obj);\n }\n\n if (\n obj?.common?.source &&\n (obj.common.enabled || this.context.debugMode === obj._id) &&\n obj.common.engine === `system.adapter.${this.namespace}`\n ) {\n const name = obj._id;\n\n if (this.password && obj.native?.protected) {\n obj.common.source = decryptText(this.password, obj.common.source);\n }\n\n const nameId = name.substring(SCRIPT_CODE_MARKER.length);\n if (!nameId.length || nameId.endsWith('.')) {\n this.log.error(`${name}: Script name \"${name}\" is invalid!`);\n return false;\n }\n const idActive = `scriptEnabled.${nameId}`;\n if (!this.config.subscribe) {\n this.interimStateValues[idActive] = this.prepareStateObjectSimple(\n `${this.namespace}.${idActive}`,\n true,\n true,\n );\n }\n await this.setState(idActive, true, true);\n obj.common.engineType ||= '' as 'TypeScript/ts' | 'Blockly' | 'Rules' | 'Javascript/js';\n\n if (\n obj.common.engineType.toLowerCase().startsWith('javascript') ||\n obj.common.engineType === 'Blockly' ||\n obj.common.engineType === 'Rules'\n ) {\n // Javascript\n this.log.info(`${name}: start JavaScript (${obj.common.engineType})`);\n\n let sourceFn = name;\n if (webstormDebug) {\n const fn = name.replace(/^script\\.js\\./, '').replace(/\\./g, '/');\n sourceFn = this.mods.path.join(webstormDebug, `${fn}.js`);\n }\n const createdScript = this.createVM(`${this.globalScript}\\n${obj.common.source}`, sourceFn, true);\n if (!createdScript) {\n return false;\n }\n this.scripts[name] = createdScript;\n this.execute(this.scripts[name], sourceFn, obj.common.engineType, obj.common.verbose, obj.common.debug);\n return true;\n }\n\n if (obj.common.engineType.toLowerCase().startsWith('typescript')) {\n // TypeScript\n this.log.info(`${name}: Compiling TypeScript source`);\n // The source code must be transformed in order to support top level await\n // and to force TypeScript to compile the code as a module\n const transformedSource = transformScriptBeforeCompilation(obj.common.source, false);\n // We need to hash both global declarations that are known until now\n // AND the script source, because changing either can change the compilation output\n const sourceHash = hashSource(tsSourceHashBase + this.globalDeclarations + transformedSource);\n\n let compiled: string;\n // If we already stored the compiled source code and the original source hash,\n // use the hash to check whether we can rely on the compiled source code or\n // if we need to compile it again\n if (\n typeof obj.common.compiled === 'string' &&\n typeof obj.common.sourceHash === 'string' &&\n sourceHash === obj.common.sourceHash\n ) {\n // We can reuse the stored source\n compiled = obj.common.compiled;\n this.log.info(`${name}: source code did not change, using cached compilation result...`);\n } else {\n // We don't have a hashed source code, or the original source changed, compile it\n const filename = scriptIdToTSFilename(name);\n let tsCompiled: CompileResult;\n try {\n tsCompiled = this.tsServer.compile(filename, transformedSource);\n } catch (err: unknown) {\n this.log.error(`${obj._id}: TypeScript compilation failed:\\n${err as Error}`);\n return false;\n }\n\n const errors = tsCompiled.diagnostics.map(diag => `${diag.annotatedSource}\\n`).join('\\n');\n\n if (tsCompiled.success) {\n if (errors.length > 0) {\n this.log.warn(`${name}: TypeScript compilation had errors:\\n${errors}`);\n } else {\n this.log.info(`${name}: TypeScript compilation successful`);\n }\n compiled = tsCompiled.result || '';\n\n // Store the compiled source and the original source hash, so we don't need to do the work again next time\n this.ignoreObjectChange.add(name); // ignore the next change and don't restart scripts\n await this.extendForeignObjectAsync(name, {\n common: {\n sourceHash,\n compiled,\n },\n });\n } else {\n this.log.error(`${name}: TypeScript compilation failed:\\n${errors}`);\n return false;\n }\n }\n const createdScript: JsScript | false = this.createVM(`${this.globalScript}\\n${compiled}`, name, false);\n if (!createdScript) {\n return false;\n }\n this.scripts[name] = createdScript;\n this.execute(this.scripts[name], name, obj.common.engineType, obj.common.verbose, obj.common.debug);\n return true;\n }\n\n this.log.warn(`${obj._id}: Unknown engine type: ${obj.common.engineType}`);\n return false;\n }\n\n let _name: string;\n if (obj?._id) {\n _name = obj._id;\n const scriptIdName = _name.substring(SCRIPT_CODE_MARKER.length);\n\n if (!scriptIdName.length || scriptIdName.endsWith('.')) {\n this.log.error(`${obj._id}: Script name \"${_name}\" is invalid!`);\n return false;\n }\n await this.setState(`scriptEnabled.${scriptIdName}`, false, true);\n }\n if (!obj) {\n this.log.error('Invalid script');\n }\n return false;\n }\n\n async loadScriptById(id: string): Promise {\n let obj: ioBroker.ScriptObject | null | undefined;\n try {\n obj = (await this.getForeignObjectAsync(id)) as ioBroker.ScriptObject | null | undefined;\n } catch (err: any) {\n this.log.error(`${id}: Invalid script: ${err}`);\n }\n if (!obj) {\n return false;\n }\n return this.loadScript(obj);\n }\n\n async loadScript(nameOrObject: ioBroker.ScriptObject): Promise {\n // create states for scripts\n await this.createActiveObject(nameOrObject._id, !!nameOrObject?.common?.enabled);\n await this.createProblemObject(nameOrObject._id);\n return this.prepareScript(nameOrObject);\n }\n\n getAstroEvent(\n date: Date,\n astroEvent: AstroEventName,\n start: string,\n end: string,\n offsetMinutes: number | string,\n isDayEnd: boolean,\n latitude: number,\n longitude: number,\n useNextDay?: boolean,\n ): Date {\n let ts: Date = this.mods.suncalc.getTimes(date, latitude, longitude)[astroEvent];\n\n if (!ts || ts.getTime().toString() === 'NaN') {\n ts = isDayEnd ? getNextTimeEvent(end, useNextDay) : getNextTimeEvent(start, useNextDay);\n }\n ts.setMilliseconds(0);\n ts.setMinutes(ts.getMinutes() + (parseInt(offsetMinutes as unknown as string, 10) || 0));\n\n const [timeHoursStart, timeMinutesStart] = start.split(':');\n const nTimeHoursStart = parseInt(timeHoursStart, 10);\n const nTimeMinutesStart = parseInt(timeMinutesStart, 10) || 0;\n\n if (\n ts.getHours() < nTimeHoursStart ||\n (ts.getHours() === nTimeHoursStart && ts.getMinutes() < nTimeMinutesStart)\n ) {\n ts = getNextTimeEvent(start, useNextDay);\n ts.setSeconds(0);\n }\n\n const [timeHoursEnd, timeMinutesEnd] = end.split(':');\n const nTimeHoursEnd = parseInt(timeHoursEnd, 10);\n const nTimeMinutesEnd = parseInt(timeMinutesEnd, 10) || 0;\n\n if (ts.getHours() > nTimeHoursEnd || (ts.getHours() === nTimeHoursEnd && ts.getMinutes() > nTimeMinutesEnd)) {\n ts = getNextTimeEvent(end, useNextDay);\n ts.setSeconds(0);\n }\n\n // if event in the past\n if (date > ts && useNextDay) {\n // take the next day\n ts.setDate(ts.getDate() + 1);\n }\n return ts;\n }\n\n async timeSchedule(): Promise {\n const now = new Date();\n let hours = now.getHours();\n const minutes = now.getMinutes();\n if (this.timeSettings.format12) {\n if (hours > 12) {\n hours -= 12;\n }\n }\n let sHours: string;\n if (this.timeSettings.leadingZeros) {\n sHours = hours.toString().padStart(2, '0');\n } else {\n sHours = hours.toString();\n }\n\n await this.setState('variables.dayTime', {\n val: `${sHours}:${minutes.toString().padStart(2, '0')}`,\n ack: true,\n });\n\n now.setMinutes(now.getMinutes() + 1);\n now.setSeconds(0);\n now.setMilliseconds(0);\n const interval = now.getTime() - Date.now();\n this.timeScheduleTimer = setTimeout(() => this.timeSchedule(), interval);\n }\n\n async dayTimeSchedules(): Promise {\n // Always clear any existing timer to prevent memory leaks on rapid re-scheduling\n if (this.dayScheduleTimer) {\n clearTimeout(this.dayScheduleTimer);\n this.dayScheduleTimer = null;\n }\n\n // get astrological event\n if (\n this.config.latitude === undefined ||\n this.config.longitude === undefined ||\n (this.config.latitude as unknown as string) === '' ||\n (this.config.longitude as unknown as string) === '' ||\n this.config.latitude === null ||\n this.config.longitude === null\n ) {\n this.log.error('Longitude or latitude does not set. Cannot use astro.');\n return;\n }\n\n // Calculate the next event today\n const todayDate = getAstroStartOfDay();\n const nowDate = new Date();\n\n const todaySunrise = this.getAstroEvent(\n todayDate,\n this.config.sunriseEvent,\n this.config.sunriseLimitStart,\n this.config.sunriseLimitEnd,\n this.config.sunriseOffset,\n false,\n this.config.latitude,\n this.config.longitude,\n );\n const todaySunset = this.getAstroEvent(\n todayDate,\n this.config.sunsetEvent,\n this.config.sunsetLimitStart,\n this.config.sunsetLimitEnd,\n this.config.sunsetOffset,\n true,\n this.config.latitude,\n this.config.longitude,\n );\n\n // Sunrise\n let sunriseTimeout = todaySunrise.getTime() - nowDate.getTime();\n if (sunriseTimeout < 0 || sunriseTimeout > 3600000) {\n sunriseTimeout = 3600000;\n }\n\n // Sunset\n let sunsetTimeout = todaySunset.getTime() - nowDate.getTime();\n if (sunsetTimeout < 0 || sunsetTimeout > 3600000) {\n sunsetTimeout = 3600000;\n }\n\n const isDayTime: ioBroker.State | null | undefined = await this.getStateAsync('variables.isDayTime');\n let isDay: boolean;\n if (sunriseTimeout < 5000) {\n isDay = true;\n } else if (sunsetTimeout < 5000) {\n isDay = false;\n } else {\n // check if in between\n isDay = nowDate.getTime() > todaySunrise.getTime() - 60000 && nowDate <= todaySunset;\n }\n\n const valDayTime = isDayTime ? !!isDayTime.val : false;\n if (valDayTime !== isDay || isDayTime === null) {\n await this.setState('variables.isDayTime', isDay, true);\n }\n\n const dayLightSaving: ioBroker.State | null | undefined =\n await this.getStateAsync('variables.isDaylightSaving');\n const isDayLightSaving = dstOffsetAtDate(nowDate) !== 0;\n const val = dayLightSaving ? !!dayLightSaving.val : false;\n\n if (val !== isDayLightSaving || dayLightSaving === null) {\n await this.setState('variables.isDaylightSaving', isDayLightSaving, true);\n }\n\n let nextTimeout = sunriseTimeout;\n if (sunriseTimeout > sunsetTimeout) {\n nextTimeout = sunsetTimeout;\n }\n nextTimeout = nextTimeout - 3000;\n if (nextTimeout < 3000) {\n nextTimeout = 3000;\n }\n\n this.dayScheduleTimer = setTimeout(() => this.dayTimeSchedules(), nextTimeout);\n }\n\n stopTimeSchedules(): void {\n if (this.dayScheduleTimer) {\n clearTimeout(this.dayScheduleTimer);\n this.dayScheduleTimer = null;\n }\n if (this.sunScheduleTimer) {\n clearTimeout(this.sunScheduleTimer);\n this.sunScheduleTimer = null;\n }\n if (this.timeScheduleTimer) {\n clearTimeout(this.timeScheduleTimer);\n this.timeScheduleTimer = null;\n }\n }\n\n async patchFont(): Promise {\n let stat: Stats | undefined;\n let dbFile: Buffer | undefined;\n let fileName = `${__dirname}/../admin/vs/base/browser/ui/codicons/codicon/codicon.ttf`;\n let jsonFileName = `${__dirname}/../admin/vsFont/codicon.json`;\n try {\n if (existsSync(fileName)) {\n stat = statSync(fileName);\n }\n if (!stat) {\n jsonFileName = `${__dirname}/admin/vsFont/codicon.json`;\n fileName = `${__dirname}/admin/vs/base/browser/ui/codicons/codicon/codicon.ttf`;\n if (existsSync(fileName)) {\n stat = statSync(fileName);\n }\n }\n const _dbFile = await this.readFileAsync(\n 'javascript.admin',\n `vs/base/browser/ui/codicons/codicon/codicon.ttf`,\n );\n if (_dbFile?.file) {\n dbFile = _dbFile.file as Buffer;\n }\n } catch {\n // ignore\n }\n\n if (stat?.size !== 73452 || dbFile?.byteLength !== 73452) {\n try {\n const buffer = Buffer.from(JSON.parse(readFileSync(jsonFileName).toString()), 'base64');\n\n const jszip = await import('jszip');\n const zip = await jszip.loadAsync(buffer);\n let data: ArrayBuffer | undefined;\n if (zip) {\n data = await zip.file('codicon.ttf')?.async('arraybuffer');\n if (data?.byteLength !== 73452) {\n this.log.error(`Cannot patch font: invalid font file!`);\n return false;\n }\n } else {\n this.log.error(`Cannot patch font: invalid font file!`);\n return false;\n }\n writeFileSync(fileName, Buffer.from(data));\n // upload this file\n await this.writeFileAsync(\n 'javascript.admin',\n 'vs/base/browser/ui/codicons/codicon/codicon.ttf',\n Buffer.from(data),\n );\n return true;\n } catch (err: unknown) {\n this.log.error(`Cannot patch font: ${err as Error}`);\n return false;\n }\n }\n return false;\n }\n\n async sunTimeSchedules(): Promise {\n if (this.config.createAstroStates) {\n if (!isNaN(this.config.longitude) && !isNaN(this.config.longitude)) {\n const calcDate = getAstroStartOfDay();\n\n const times = this.mods.suncalc.getTimes(calcDate, this.config.latitude, this.config.longitude);\n\n this.log.debug(`[sunTimeSchedules] Times: ${JSON.stringify(times)}`);\n\n for (const t in times) {\n try {\n const objId = `variables.astro.${t}`;\n\n await this.setObjectNotExistsAsync(objId, {\n type: 'state',\n common: {\n name: `Astro ${t}`,\n type: 'string',\n role: 'value',\n read: true,\n write: false,\n },\n native: {},\n });\n\n if (times[t] !== null && !isNaN(times[t].getTime())) {\n const timeFormatted = formatHoursMinutesSeconds(times[t]);\n await this.setState(objId, {\n val: timeFormatted,\n c: times[t].toISOString(),\n ack: true,\n });\n } else {\n await this.setState(objId, { val: null, c: 'n/a', ack: true, q: 0x01 });\n }\n } catch (err: unknown) {\n this.log.error(\n `[sunTimeSchedules] Unable to set state for astro time \"${t}\" (${times[t].getTime()}): ${err as Error}`,\n );\n }\n }\n\n const todayDate = new Date();\n todayDate.setHours(0);\n todayDate.setMinutes(0);\n todayDate.setSeconds(1);\n todayDate.setMilliseconds(0);\n todayDate.setDate(todayDate.getDate() + 1);\n\n this.log.debug(`[sunTimeSchedules] Next: ${todayDate.toISOString()}`);\n this.sunScheduleTimer = setTimeout(() => this.sunTimeSchedules(), todayDate.getTime() - Date.now());\n }\n } else {\n // remove astro states if disabled\n this.delObject('variables.astro', { recursive: true });\n }\n }\n\n /**\n * Redirects the virtual-tsc log output to the ioBroker log\n */\n tsLog = (message: string, severity?: ioBroker.LogLevel): void => {\n // shift the severities around, we don't care about the small details\n if (!severity || severity === 'info') {\n severity = 'debug';\n } else if (severity === 'debug') {\n // Don't spam build logs on Travis\n if (isCI) {\n return;\n }\n severity = 'silly';\n }\n\n if (this?.log) {\n this.log[severity](message);\n } else {\n console.log(`[${severity.toUpperCase()}] ${message}`);\n }\n };\n\n addGetProperty(object: Record): void {\n try {\n Object.defineProperty(object, 'get', {\n value: function (id: string): any {\n return this[id] || this[`${this.namespace}.${id}`];\n },\n enumerable: false,\n });\n } catch {\n console.error('Cannot install get property');\n }\n }\n\n /**\n * Add declarations for global scripts\n *\n * @param scriptID - The current script the declarations were generated from\n * @param declarations - Declarations from a script\n */\n provideDeclarationsForGlobalScript(scriptID: string, declarations: string): void {\n // Remember which declarations this global script had access to;\n // we need this so the editor doesn't show a duplicate identifier error\n if (this.globalDeclarations != null && this.globalDeclarations !== '') {\n this.knownGlobalDeclarationsByScript[scriptID] = this.globalDeclarations;\n }\n // and concatenate the global declarations for the next scripts\n this.globalDeclarations += `${declarations}\\n`;\n // remember all previously generated global declarations,\n // so global scripts can reference each other\n const globalDeclarationPath = 'global.d.ts';\n tsAmbient[globalDeclarationPath] = this.globalDeclarations;\n // make sure the next script compilation has access to the updated declarations\n this.tsServer.provideAmbientDeclarations({\n [globalDeclarationPath]: this.globalDeclarations,\n });\n jsDeclarationServer.provideAmbientDeclarations({\n [globalDeclarationPath]: this.globalDeclarations,\n });\n }\n\n fixLineNo(line: string): string {\n if (line.includes('javascript.js:')) {\n return line;\n }\n if (!/scripts?\\.js[.\\\\/]/.test(line)) {\n return line;\n }\n if (/:(\\d+):/.test(line)) {\n line = line.replace(\n /:(\\d+):/,\n (_$0, $1) => `:${$1 > this.globalScriptLines + 1 ? $1 - this.globalScriptLines - 1 : $1}:`,\n ); // one line for 'async function ()'\n } else {\n line = line.replace(\n /:(\\d+)$/,\n (_$0, $1) => `:${$1 > this.globalScriptLines + 1 ? $1 - this.globalScriptLines - 1 : $1}`,\n ); // one line for 'async function ()'\n }\n return line;\n }\n\n async debugStop(): Promise {\n if (this.debugState.child) {\n this.debugSendToInspector({ cmd: 'end' });\n this.debugState.endTimeout = setTimeout(() => {\n this.debugState.endTimeout = null;\n this.debugState.child?.kill('SIGTERM');\n }, 500);\n this.debugState.promiseOnEnd ||= Promise.resolve(0);\n } else {\n this.debugState.promiseOnEnd = Promise.resolve(0);\n }\n\n await this.debugState.promiseOnEnd;\n\n this.debugState.child = null;\n this.debugState.running = false;\n this.debugState.scriptName = '';\n if (this.debugState.endTimeout) {\n clearTimeout(this.debugState.endTimeout);\n this.debugState.endTimeout = null;\n }\n }\n\n async debugDisableScript(id: string | undefined): Promise {\n if (id) {\n const obj = this.objects[id];\n if (obj?.common?.enabled) {\n await this.extendForeignObjectAsync(obj._id, { common: { enabled: false } });\n }\n }\n }\n\n debugSendToInspector(message: any): void {\n if (this.debugState.child) {\n try {\n this.log.info(`send to debugger: ${message}`);\n this.debugState.child.send(message);\n } catch {\n void this.debugStop().then(() =>\n this.log.info(\n `${this.debugState.scriptName}: Debugging was stopped, because started in normal mode`,\n ),\n );\n }\n } else {\n this.log.error(`${this.debugState.scriptName}: Cannot send command to terminated inspector`);\n void this.setState(\n 'debug.from',\n JSON.stringify({ cmd: 'error', error: `Cannot send command to terminated inspector`, id: 1 }),\n true,\n );\n }\n }\n\n debugStart(data: { breakOnStart?: boolean; scriptName?: string; adapter?: string }): void {\n if (Date.now() - this.debugState.started < 1000) {\n console.log('Start ignored');\n return;\n }\n\n this.debugState.started = Date.now();\n // stop the script if it's running\n void this.debugDisableScript(data.scriptName)\n .then(() => this.debugStop())\n .then(() => {\n if (data.adapter) {\n this.debugState.adapterInstance = data.adapter;\n this.debugState.scriptName = '';\n } else {\n this.debugState.adapterInstance = '';\n this.debugState.scriptName = data.scriptName as string;\n }\n\n this.debugState.breakOnStart = data.breakOnStart;\n\n this.debugState.promiseOnEnd = new Promise(resolve => {\n const options: ForkOptions = {\n stdio: ['ignore', 'inherit', 'inherit', 'ipc'],\n //stdio: ['pipe', 'pipe', 'pipe', 'ipc']\n };\n const args: string[] = [];\n if (this.debugState.adapterInstance) {\n args.push('--breakOnStart');\n }\n\n this.debugState.child = fork(`${__dirname}/lib/inspect.js`, args, options);\n\n /*debugState.child.stdout.setEncoding('utf8');\n debugState.child.stderr.setEncoding('utf8');\n debugState.child.stdout.on('data', childPrint);\n debugState.child.stderr.on('data', childPrint);*/\n\n this.debugState.child?.on(\n 'message',\n (\n message:\n | string\n | {\n cmd: 'ready' | 'watched' | 'paused' | 'resumed' | 'log' | 'readyToDebug';\n severity?: string;\n text?: string;\n scriptId?: string;\n script?: string;\n },\n ) => {\n let oMessage: {\n cmd: 'ready' | 'watched' | 'paused' | 'resumed' | 'log' | 'readyToDebug';\n severity?: string;\n text?: string;\n scriptId?: string;\n script?: string;\n };\n if (typeof message === 'string') {\n try {\n oMessage = JSON.parse(message);\n } catch {\n return this.log.error(`Cannot parse message from inspector: ${message}`);\n }\n } else {\n oMessage = message;\n }\n\n if (oMessage.cmd !== 'ready') {\n void this.setState('debug.from', JSON.stringify(oMessage), true);\n }\n\n switch (oMessage.cmd) {\n case 'ready': {\n this.debugSendToInspector({\n cmd: 'start',\n scriptName: this.debugState.scriptName,\n adapterInstance: this.debugState.adapterInstance,\n instance: this.instance,\n });\n break;\n }\n\n case 'watched': {\n //console.log(`WATCHED: ${JSON.stringify(oMessage)}`);\n break;\n }\n\n case 'paused': {\n this.debugState.paused = true;\n console.log(`host: PAUSED`);\n break;\n }\n\n case 'resumed': {\n this.debugState.paused = false;\n //console.log(`STARTED`);\n break;\n }\n\n case 'log': {\n console.log(`[${oMessage.severity}] ${oMessage.text}`);\n break;\n }\n\n case 'readyToDebug': {\n console.log(\n `host: readyToDebug (set breakpoints): [${oMessage.scriptId}] ${oMessage.script}`,\n );\n break;\n }\n }\n },\n );\n this.debugState.child?.on('error', error => {\n this.log.error(`Cannot start inspector: ${error}`);\n void this.setState('debug.from', JSON.stringify({ cmd: 'error', error }), true);\n });\n\n this.debugState.child?.on('exit', async (code: number): Promise => {\n if (code) {\n await this.setState(\n 'debug.from',\n JSON.stringify({ cmd: 'error', error: `invalid response code: ${code}` }),\n true,\n );\n }\n await this.setState('debug.from', JSON.stringify({ cmd: 'debugStopped', code }), true);\n this.debugState.child = null;\n resolve(code);\n });\n });\n });\n }\n}\n\nfunction patternMatching(\n event: EventObj,\n patternFunctions: PatternEventCompareFunction[] & { logic?: 'and' | 'or' },\n): boolean {\n const logic = patternFunctions.logic ?? 'and';\n for (let i = 0, len = patternFunctions.length; i < len; i++) {\n const result = patternFunctions[i](event);\n if (logic === 'and' && !result) {\n return false; // short-circuit AND – one false is enough\n }\n if (logic === 'or' && result) {\n return true; // short-circuit OR – one true is enough\n }\n }\n // AND: all passed → true; OR: none matched → false\n return logic === 'and';\n}\n\n// If started as allInOne mode => return function to create an instance\nif (require.main !== module) {\n // Export the constructor in compact mode\n module.exports = (options: Partial | undefined) => new JavaScript(options);\n} else {\n // otherwise start the instance directly\n (() => new JavaScript())();\n}\n"]} \ No newline at end of file +{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Javascript adapter\n *\n * The MIT License (MIT)\n *\n * Copyright (c) 2014-2024 bluefox ,\n *\n * Copyright (c) 2014 hobbyquaker\n */\n\nimport { Script, type ScriptOptions } from 'node:vm';\nimport { readFileSync, existsSync, statSync, writeFileSync, type Stats } from 'node:fs';\nimport { join, sep, normalize } from 'node:path';\nimport { fork, type ForkOptions } from 'node:child_process';\nimport { setTypeScriptResolveOptions, Server } from 'virtual-tsc';\nimport { isDeepStrictEqual } from 'node:util';\nimport prettier from 'prettier';\n\nimport * as dgram from 'node:dgram';\nimport * as crypto from 'node:crypto';\nimport * as dns from 'node:dns';\nimport * as events from 'node:events';\nimport * as http from 'node:http';\nimport * as https from 'node:https';\nimport * as http2 from 'node:http2';\nimport * as net from 'node:net';\nimport * as os from 'node:os';\nimport * as path from 'node:path';\nimport * as util from 'node:util';\nimport * as child_process from 'node:child_process';\nimport * as stream from 'node:stream';\nimport * as zlib from 'node:zlib';\n\n// @ts-expect-error no types available\nimport * as suncalc from 'suncalc2';\nimport * as axios from 'axios';\n// @ts-expect-error no types available\nimport * as wake_on_lan from 'wake_on_lan';\nimport * as nodeSchedule from 'node-schedule';\n\nimport {\n getAbsoluteDefaultDataDir,\n Adapter,\n Credentials,\n EXIT_CODES,\n type AdapterOptions,\n} from '@iobroker/adapter-core';\nimport type SentryPlugin from '@iobroker/plugin-sentry';\nimport type { GetTimesResult } from 'suncalc';\nimport type { CompileResult } from 'virtual-tsc/build/util';\n\nimport { Mirror } from './lib/mirror';\nimport ProtectFs from './lib/protectFs';\nimport { setLanguage, getLanguage } from './lib/words';\nimport { sandBox, removeFromDispatchIndex } from './lib/sandbox';\nimport { requestModuleNameByUrl } from './lib/nodeModulesManagement';\nimport {\n resolveProviderCredentials,\n resolveTestCredentials,\n listAvailableProviders,\n getProviderCredentialId,\n} from './lib/aiProviderResolver';\nimport {\n translateToolsToAnthropic,\n translateMessagesToAnthropic,\n translateAnthropicResponseToOpenAI,\n} from './lib/anthropicAdapter';\nimport { createEventObject, type EventObj } from './lib/eventObj';\nimport { type AstroEventName, Scheduler } from './lib/scheduler';\nimport { targetTsLib, tsCompilerOptions, jsDeclarationCompilerOptions } from './lib/typescriptSettings';\nimport { hashSource } from './lib/tools';\nimport {\n resolveTypescriptLibs,\n resolveTypings,\n scriptIdToTSFilename,\n transformScriptBeforeCompilation,\n transformGlobalDeclarations,\n} from './lib/typescriptTools';\nimport type {\n FileSubscriptionResult,\n JavascriptContext,\n JavaScriptAdapterConfig,\n JsScript,\n ScriptType,\n SubscriptionResult,\n SubscribeObject,\n JavascriptTimer,\n SandboxType,\n DebugState,\n} from './types';\nimport type { PatternEventCompareFunction } from './lib/patternCompareFunctions';\nimport { decryptText } from './lib/crypto';\n\ntype MODULES = {\n fs: ProtectFs;\n 'fs/promises': ProtectFs['promises'];\n dgram: typeof dgram;\n crypto: typeof crypto;\n dns: typeof dns;\n events: typeof events;\n http: typeof http;\n https: typeof https;\n http2: typeof http2;\n net: typeof net;\n os: typeof os;\n path: typeof path;\n util: typeof util;\n child_process: typeof child_process;\n stream: typeof stream;\n zlib: typeof zlib;\n suncalc: typeof suncalc;\n axios: typeof axios;\n wake_on_lan: typeof wake_on_lan;\n nodeSchedule: typeof nodeSchedule;\n};\n\n/**\n * List of forbidden Locations for a mirror directory\n * relative to the default data directory\n * ATTENTION: the same list is also located in index_m.html!!\n */\nconst forbiddenMirrorLocations: string[] = [\n 'backup-objects',\n 'files',\n 'backitup',\n '../backups',\n '../node_modules',\n '../log',\n];\n\nconst packageJson: Record = JSON.parse(readFileSync(`${__dirname}/../package.json`).toString());\nconst SCRIPT_CODE_MARKER = 'script.js.';\n\nlet webstormDebug: string | undefined;\n\nconst isCI = !!process.env.CI;\n\n// ambient declarations for typescript\nlet tsAmbient: Record;\n\n// TypeScript's scripts are only recompiled if their source hash changes.\n// If an adapter update fixes the compilation bugs, a user won't notice until the changes and re-save the script.\n// To avoid that, we also include the\n// adapter version and TypeScript version in the hash\nconst tsSourceHashBase = `versions:adapter=${packageJson.version},typescript=${packageJson.dependencies.typescript}`;\n\n// taken from here: https://stackoverflow.com/questions/11887934/how-to-check-if-dst-daylight-saving-time-is-in-effect-and-if-so-the-offset\nfunction dstOffsetAtDate(dateInput: Date): number {\n const fullYear: number = dateInput.getFullYear() | 0;\n // \"Leap Years are any year that can be exactly divided by 4 (2012, 2016, etc.)\n // except if it can be exactly divided by 100, then it isn't (2100, 2200, etc.)\n // except if it can be exactly divided by 400, then it is (2000, 2400)\"\n // (https://www.mathsisfun.com/leap-years.html).\n const isLeapYear: 1 | 0 = ((fullYear & 3) | ((fullYear / 100) & 3)) === 0 ? 1 : 0;\n // (fullYear & 3) = (fullYear % 4), but faster\n //Alternative:var isLeapYear=(new Date(currentYear,1,29,12)).getDate()===29?1:0\n const fullMonth: number = dateInput.getMonth() | 0;\n return (\n // 1. We know what the time since the Epoch really is\n +dateInput - // same as the dateInput.getTime() method\n // 2. We know what the time since the Epoch at the start of the year is\n +new Date(fullYear, 0) - // day defaults to 1 if not explicitly zeroed\n // 3. Now, subtract what we would expect the time to be if daylight savings\n // did not exist. This yields the time-offset due to daylight savings.\n // Calculate the day of the year in the Gregorian calendar\n // The code below works based upon the facts of signed right shifts\n // • (x) >> n: shifts n and fills in the n highest bits with 0s\n // • (-x) >> n: shifts n and fills in the n highest bits with 1s\n // (This assumes that x is a positive integer)\n ((((-1 + // the first day in the year is day 1\n (31 & (-fullMonth >> 4)) + // January // (-11)>>4 = -1\n ((28 + isLeapYear) & ((1 - fullMonth) >> 4)) + // February\n (31 & ((2 - fullMonth) >> 4)) + // March\n (30 & ((3 - fullMonth) >> 4)) + // April\n (31 & ((4 - fullMonth) >> 4)) + // May\n (30 & ((5 - fullMonth) >> 4)) + // June\n (31 & ((6 - fullMonth) >> 4)) + // July\n (31 & ((7 - fullMonth) >> 4)) + // August\n (30 & ((8 - fullMonth) >> 4)) + // September\n (31 & ((9 - fullMonth) >> 4)) + // October\n (30 & ((10 - fullMonth) >> 4)) + // November\n // There are no months past December: the year rolls into the next.\n // Thus, \"fullMonth\" is 0-based, so it will never be 12 in JavaScript\n\n (dateInput.getDate() | 0)) & // get day of the month\n 0xffff) *\n 24 *\n 60 + // 24 hours in a day, 60 minutes in an hour\n (dateInput.getHours() & 0xff) * 60 + // 60 minutes in an hour\n (dateInput.getMinutes() & 0xff)) |\n 0) *\n 60 *\n 1000 - // 60 seconds in a minute * 1000 milliseconds in a second\n (dateInput.getSeconds() & 0xff) * 1000 - // 1000 milliseconds in a second\n dateInput.getMilliseconds()\n );\n}\n\nconst regExGlobalOld = /_global$/;\nconst regExGlobalNew = /script\\.js\\.global\\./;\n\nfunction checkIsGlobal(obj: ioBroker.ScriptObject): boolean {\n return obj?.common && (regExGlobalOld.test(obj.common.name) || regExGlobalNew.test(obj._id));\n}\n\nfunction fileMatching(sub: FileSubscriptionResult, id: string, fileName: string): boolean {\n if (sub.idRegEx) {\n if (!sub.idRegEx.test(id)) {\n return false;\n }\n } else {\n if (sub.id !== id) {\n return false;\n }\n }\n if (sub.fileRegEx) {\n if (!sub.fileRegEx.test(fileName)) {\n return false;\n }\n } else {\n if (sub.fileNamePattern !== fileName) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction getNextTimeEvent(time: string, useNextDay?: boolean): Date {\n const now: Date = getAstroStartOfDay();\n const [timeHours, timeMinutes] = time.split(':');\n const nTimeHours = parseInt(timeHours, 10);\n const nTimeMinutes = parseInt(timeMinutes, 10);\n if (\n useNextDay &&\n (now.getHours() > nTimeHours || (now.getHours() === nTimeHours && now.getMinutes() > nTimeMinutes))\n ) {\n now.setDate(now.getDate() + 1);\n }\n\n now.setHours(nTimeHours);\n now.setMinutes(nTimeMinutes);\n\n return now;\n}\n\nfunction getAstroStartOfDay(): Date {\n const d = new Date();\n d.setMinutes(0);\n d.setSeconds(0);\n d.setMilliseconds(0);\n d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1000);\n d.setUTCHours(0);\n\n return d;\n}\n\nfunction formatHoursMinutesSeconds(date: Date): string {\n const h = String(date.getHours());\n const m = String(date.getMinutes());\n const s = String(date.getSeconds());\n\n return `${h.padStart(2, '0')}:${m.padStart(2, '0')}:${s.padStart(2, '0')}`;\n}\n\n// Due to a npm bug, virtual-tsc may be hoisted to the top level node_modules, but\n// TypeScript may still be in the adapter level (https://npm.community/t/packages-with-peerdependencies-are-incorrectly-hoisted/4794),\n// so we need to tell virtual-tsc where TypeScript is\nsetTypeScriptResolveOptions({\n paths: [require.resolve('typescript')],\n});\n\n// compiler instance for global JS declarations\nconst jsDeclarationServer: Server = new Server(jsDeclarationCompilerOptions, isCI ? false : undefined);\n/**\n * Stores the IDs of script objects whose change should be ignored because\n * the compiled source was just updated\n */\n\nconst HTTP_STATUS_TEXTS: Record = {\n 400: 'Bad Request',\n 401: 'Unauthorized',\n 403: 'Forbidden',\n 404: 'Not Found',\n 429: 'Too Many Requests / Rate Limit',\n 500: 'Internal Server Error',\n 502: 'Bad Gateway',\n 503: 'Service Unavailable',\n};\n\nfunction httpStatusText(code: number): string {\n return HTTP_STATUS_TEXTS[code] ?? `Error ${code}`;\n}\n\n/**\n * Resolves the correct http/https module based on the URL string.\n * Returns null if the URL is invalid.\n */\nfunction resolveRequestModule(url: string): { module: typeof https | typeof http; isHttps: boolean } | null {\n try {\n const { protocol } = new URL(url);\n const isHttps = protocol === 'https:';\n return { module: isHttps ? https : http, isHttps };\n } catch {\n return null;\n }\n}\n\nclass JavaScript extends Adapter {\n declare public config: JavaScriptAdapterConfig;\n\n private readonly context: JavascriptContext;\n\n private errorLogFunction: {\n error: (msg: string) => void;\n warn: (msg: string) => void;\n info: (msg: string) => void;\n debug: (msg: string) => void;\n silly: (msg: string) => void;\n } = {\n error: (msg: string) => console.error(msg),\n warn: (msg: string) => console.warn(msg),\n info: (msg: string) => console.log(msg),\n debug: (msg: string) => console.debug(msg),\n silly: (msg: string) => console.debug(msg),\n };\n\n private readonly mods: MODULES;\n\n private objectsInitDone = false;\n private statesInitDone = false;\n\n private objects: Record = {};\n private states: Record = {};\n private readonly interimStateValues: Record = {};\n private readonly stateIds: string[] = [];\n /** Fast O(1) lookup set – always kept in sync with stateIds */\n private readonly stateIdSet: Set = new Set();\n\n private readonly subscriptions: SubscriptionResult[] = [];\n /**\n * O(1) dispatch map for subscriptions with exact (non-wildcard) string IDs.\n * Always kept in sync with `subscriptions`.\n */\n private readonly subscriptionsMap: Map = new Map();\n /**\n * Subscriptions whose pattern.id is a RegExp, contains wildcards (*,?), or is undefined.\n * These must still be checked linearly on every state change.\n */\n private readonly subscriptionsWildcard: SubscriptionResult[] = [];\n private readonly subscriptionsFile: FileSubscriptionResult[] = [];\n private readonly subscriptionsObject: SubscribeObject[] = [];\n /** O(1) dispatch map for subscriptionsObject – pattern → subscribers */\n private readonly subscriptionsObjectMap: Map = new Map();\n /** IO-9: Cache for sendTo broadcast – adapterName → instance list, invalidated on object change */\n private readonly sendToInstanceCache: Map = new Map();\n private readonly subscribedPatterns: Record = {};\n private readonly subscribedPatternsFile: Record = {};\n private readonly adapterSubs: Record> = {};\n private readonly timers: { [scriptName: string]: JavascriptTimer[] } = {};\n /** Reverse-index: scriptName → Set of stateIds that have timers for this script – O(1) cleanup */\n private readonly timersByScript: Map> = new Map();\n /** O(1) Set for enum-id lookups – replaces sorted string[] array */\n private readonly _enums: Set = new Set();\n private readonly names: { [name: string]: string | string[] } = {}; // name: id\n /** Reverse map: id → name for O(1) getName() lookups */\n private readonly nameById: Map = new Map();\n private readonly scripts: Record = {};\n private password: string = '';\n private readonly messageBusHandlers: Record<\n string,\n Record void }[]>\n > = {};\n private readonly logSubscriptions: Record<\n string,\n {\n sandbox: SandboxType;\n cb: (info: ioBroker.LogMessage) => void;\n id: number;\n severity: ioBroker.LogLevel | '*';\n }[]\n > = {};\n private readonly tempDirectories: { [scriptName: string]: string } = {}; // name: path\n private readonly folderCreationVerifiedObjects: Record = {};\n\n /** if logs are subscribed or not */\n private logSubscribed = false;\n\n private timeSettings: {\n format12: boolean;\n leadingZeros: boolean;\n } = { format12: false, leadingZeros: true };\n\n private dayScheduleTimer: NodeJS.Timeout | null = null; // schedule for astrological day\n private sunScheduleTimer: NodeJS.Timeout | null = null; // schedule for sun moment times\n private timeScheduleTimer: NodeJS.Timeout | null = null; // schedule for astrological day\n\n private activeStr = ''; // enabled state prefix\n\n private mirror: Mirror | undefined;\n\n private stopCounters: Record = {};\n\n private setStateCountCheckInterval: NodeJS.Timeout | null = null;\n\n /**\n * Decrypted AI API keys cached from the central credential store (manager mode),\n * keyed by credential ID (e.g. `system.credentials.anthropic`). Kept fresh by the\n * subscriptions set up in `subscribeAiCredentials`.\n */\n private readonly aiCredentialCache: Map = new Map();\n /** Unsubscribe callbacks for the AI credential subscriptions (manager mode). */\n private aiCredentialUnsubscribers: (() => Promise)[] = [];\n\n private globalScript = '';\n /** Generated declarations for global TypeScripts */\n private globalDeclarations = '';\n // Remember which definitions the global scripts\n // have access to, because it depends on the compilation order\n private knownGlobalDeclarationsByScript: Record = {};\n private globalScriptLines = 0;\n /** Running counter to build unique names for ad-hoc scripts started via the \"execute\" message */\n private executeCounter = 0;\n // compiler instance for typescript\n private tsServer: Server;\n\n private logCollectors: { name: string; collector: (severity: ioBroker.LogLevel, msg: string) => void }[] = [];\n\n private readonly ignoreObjectChange: Set = new Set();\n\n private debugState: DebugState = {\n scriptName: '',\n child: null,\n promiseOnEnd: null,\n paused: false,\n started: 0,\n running: false,\n };\n\n constructor(options: Partial = {}) {\n options = {\n ...options,\n name: 'javascript', // adapter name\n useFormatDate: true,\n /**\n * If the JS-Controller catches an unhandled error, this will be called,\n * so we have a chance to handle it ourselves.\n */\n error: (err: Error): boolean => {\n // Identify unhandled errors originating from callbacks in scripts\n // These are not caught by wrapping the execution code in try-catch\n if (err && typeof err.stack === 'string') {\n const scriptCodeMarkerIndex = err.stack.indexOf(SCRIPT_CODE_MARKER);\n if (scriptCodeMarkerIndex > -1) {\n // This is a script error\n let scriptName = err.stack.substring(scriptCodeMarkerIndex);\n scriptName = scriptName.substring(0, scriptName.indexOf(':'));\n this.logError(scriptName, 'Error:', err);\n\n // Leave the script running for now\n // signal to the JS-Controller that we handled the error ourselves\n return true;\n }\n // check if a path contains adaptername but not own node_module\n // this regex matched \"iobroker.javascript/\" if NOT followed by \"node_modules\"\n if (!err.stack.match(/iobroker\\.javascript[/\\\\](?!.*node_modules).*/g)) {\n // This is an error without any info on origin (mostly async errors like connection errors)\n // also consider it as being from a script\n this.log.error(\n 'An error happened which is most likely from one of your scripts, but the originating script could not be detected.',\n );\n this.log.error(`Error: ${err.message}`);\n this.log.error(err.stack);\n\n // signal to the JS-Controller that we handled the error ourselves\n return true;\n }\n }\n\n return false;\n },\n };\n\n super(options as AdapterOptions);\n\n this.on('objectChange', this.onObjectChange.bind(this));\n this.on('stateChange', this.onStateChange.bind(this));\n this.on('ready', this.onReady.bind(this));\n this.on('message', this.onMessage.bind(this));\n this.on('unload', this.onUnload.bind(this));\n this.on('fileChange', this.onFileChange.bind(this));\n this.on('log', this.onLog.bind(this));\n\n this.mods = {\n fs: {} as ProtectFs,\n 'fs/promises': {} as ProtectFs['promises'],\n dgram,\n crypto,\n dns,\n events,\n http,\n https,\n http2,\n net,\n os,\n path,\n util,\n child_process,\n stream,\n zlib,\n\n suncalc,\n axios,\n wake_on_lan,\n nodeSchedule,\n };\n\n // check the webstorm debug and just debug modes\n let debugMode: string | undefined;\n if (process.argv) {\n for (let a = 1; a < process.argv.length; a++) {\n if (process.argv[a].startsWith('--webstorm')) {\n webstormDebug = process.argv[a].replace(/^(.*?=\\s*)/, '');\n }\n if (process.argv[a] === '--debugScript') {\n if (!process.argv[a + 1]) {\n console.log('No script name provided');\n process.exit(300);\n } else {\n debugMode = process.argv[a + 1];\n }\n }\n }\n }\n\n this.context = {\n mods: this.mods,\n objects: this.objects,\n states: this.states,\n interimStateValues: this.interimStateValues,\n stateIds: this.stateIds,\n errorLogFunction: this.errorLogFunction,\n subscriptions: this.subscriptions,\n subscriptionsMap: this.subscriptionsMap,\n subscriptionsWildcard: this.subscriptionsWildcard,\n subscriptionsFile: this.subscriptionsFile,\n subscriptionsObject: this.subscriptionsObject,\n subscriptionsObjectMap: this.subscriptionsObjectMap,\n sendToInstanceCache: this.sendToInstanceCache,\n subscribedPatterns: this.subscribedPatterns,\n subscribedPatternsFile: this.subscribedPatternsFile,\n adapterSubs: this.adapterSubs,\n cacheObjectEnums: {},\n timers: this.timers,\n timersByScript: this.timersByScript,\n enums: this._enums,\n names: this.names,\n scripts: this.scripts,\n messageBusHandlers: this.messageBusHandlers,\n logSubscriptions: this.logSubscriptions,\n tempDirectories: this.tempDirectories,\n folderCreationVerifiedObjects: this.folderCreationVerifiedObjects,\n\n isEnums: false, // If some subscription wants enum\n channels: null,\n devices: null,\n logWithLineInfo: this.logWithLineInfo.bind(this),\n scheduler: null,\n timerId: 0,\n rulesOpened: null, // opened rules\n language: this.language || 'en',\n\n updateLogSubscriptions: this.updateLogSubscriptions.bind(this),\n convertBackStringifiedValues: this.convertBackStringifiedValues.bind(this),\n updateObjectContext: this.updateObjectContext.bind(this),\n prepareStateObject: this.prepareStateObject.bind(this),\n debugMode,\n getAbsoluteDefaultDataDir,\n adapter: this,\n logError: this.logError.bind(this),\n allowSelfSignedCerts: false,\n };\n\n this.tsServer = new Server(tsCompilerOptions, this.tsLog);\n }\n\n async onObjectChange(id: string, obj?: ioBroker.Object | null): Promise {\n // Check if we should ignore this change (once!) because we just updated the compiled sources\n if (this.ignoreObjectChange.has(id)) {\n // Update the cached script object and do nothing more\n this.objects[id] = obj as ioBroker.Object;\n this.ignoreObjectChange.delete(id);\n return;\n }\n\n // When still in initializing: already remember current values,\n // but data structures are initialized elsewhere\n if (!this.objectsInitDone) {\n if (obj) {\n this.objects[id] = obj;\n }\n return;\n }\n\n if (id.startsWith('enum.')) {\n // clear cache\n this.context.cacheObjectEnums = {};\n\n // update this._enums Set\n if (obj) {\n this._enums.add(id);\n } else {\n this._enums.delete(id);\n }\n }\n\n // IO-9: Invalidate sendTo instance-cache when adapter instances change\n if (id.startsWith('system.adapter.')) {\n const parts = id.split('.');\n if (parts.length >= 3) {\n const adapterName = parts[2]; // e.g. \"zigbee\" from \"system.adapter.zigbee.0\"\n this.sendToInstanceCache.delete(adapterName);\n }\n }\n\n if (id === 'system.config' && obj?.common?.language) {\n // set language for debug messages\n setLanguage(obj.common.language);\n this.language = obj.common.language;\n this.context.language = this.language as ioBroker.Languages;\n }\n\n // update stored time format for variables.dayTime\n if (id === `${this.namespace}.variables.dayTime` && obj?.native) {\n this.timeSettings.format12 = obj.native.format12 || false;\n this.timeSettings.leadingZeros = obj.native.leadingZeros === undefined ? true : obj.native.leadingZeros;\n }\n\n // send changes to the disk mirror\n this.mirror?.onObjectChange(id, obj as ioBroker.ScriptObject | null);\n\n const formerObj = this.objects[id];\n\n this.updateObjectContext(id, obj); // Update all Meta object data\n\n // for the alias object changes on the state objects, we need to manually update the\n // state cache value, because the new value is only published on the next change\n if (obj?.type === 'state' && id.startsWith('alias.0.')) {\n // execute async for speed\n this.getForeignStateAsync(id)\n .then(state => {\n if (state) {\n this.states[id] = state;\n } else if (this.states[id] !== undefined) {\n delete this.states[id];\n }\n })\n .catch(() => {\n /* ignore */\n });\n }\n\n // O(1) dispatch via pattern map instead of O(n) forEach\n const objSubs = this.subscriptionsObjectMap.get(id);\n if (objSubs) {\n for (const sub of objSubs) {\n try {\n sub.callback(id, obj);\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n\n // handle Script object updates\n if (!obj && formerObj?.type === 'script') {\n // Object Deleted just now\n if (checkIsGlobal(formerObj)) {\n // it was a global Script, and it was enabled and is now deleted => restart adapter\n if (formerObj.common.enabled) {\n this.log.info(`Active global Script ${id} deleted. Restart instance.`);\n this.restart();\n }\n } else if (formerObj.common?.engine === `system.adapter.${this.namespace}`) {\n // It was a non-global Script and deleted => stop and remove it\n await this.stopScript(id);\n\n // delete scriptEnabled.blabla variable\n const idActive = `scriptEnabled.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n await this.delStateAsync(idActive);\n await this.delObjectAsync(idActive);\n\n // delete scriptProblem.blabla variable\n const idProblem = `scriptProblem.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n await this.delStateAsync(idProblem);\n await this.delObjectAsync(idProblem);\n }\n } else if (!formerObj && obj?.type === 'script') {\n // New script that does not exist before\n if (checkIsGlobal(obj)) {\n // new global script added => restart adapter\n if (obj.common.enabled) {\n this.log.info(`Active global Script ${id} created. Restart instance.`);\n this.restart();\n }\n } else if (obj.common?.engine === `system.adapter.${this.namespace}`) {\n // new non-global script - create states for scripts\n await this.createActiveObject(id, !!obj.common.enabled);\n await this.createProblemObject(id);\n if (obj.common.enabled) {\n // if enabled => Start a script\n await this.loadScriptById(id);\n }\n }\n } else if (obj?.type === 'script' && formerObj?.common) {\n // Script changed ...\n if (checkIsGlobal(obj)) {\n if (obj.common.enabled || formerObj.common.enabled) {\n this.log.info(`Global Script ${id} updated. Restart instance.`);\n this.restart();\n }\n } else {\n // No global script\n if (obj.common?.engine === `system.adapter.${this.namespace}`) {\n // create states for scripts\n await this.createActiveObject(id, !!obj.common.enabled);\n await this.createProblemObject(id);\n }\n\n if (\n (formerObj.common.enabled && !obj.common.enabled) ||\n (formerObj.common.engine === `system.adapter.${this.namespace}` &&\n obj.common.engine !== `system.adapter.${this.namespace}`)\n ) {\n // Script disabled\n if (formerObj.common.enabled && formerObj.common.engine === `system.adapter.${this.namespace}`) {\n // Remove it from executing\n await this.stopScript(id);\n }\n } else if (\n (!formerObj.common.enabled && obj.common.enabled) ||\n (formerObj.common.engine !== `system.adapter.${this.namespace}` &&\n obj.common.engine === `system.adapter.${this.namespace}`)\n ) {\n // Script enabled\n\n if (obj.common.enabled && obj.common.engine === `system.adapter.${this.namespace}`) {\n // Start script\n await this.loadScriptById(id);\n }\n } else if (\n obj.common.engine === `system.adapter.${this.namespace}` ||\n formerObj.common.engine === `system.adapter.${this.namespace}`\n ) {\n // Source changed => restart the script (only on the relevant instance)\n this.stopCounters[id] = this.stopCounters[id] ? this.stopCounters[id] + 1 : 1;\n void this.stopScript(id).then(() => {\n // only start again after stop when \"last\" object change to prevent problems on\n // multiple changes in fast frequency\n if (!--this.stopCounters[id]) {\n void this.loadScriptById(id);\n }\n });\n }\n }\n }\n }\n\n onStateChange(id: string, state?: ioBroker.State | null): void {\n if (this.interimStateValues[id] !== undefined) {\n // any update invalidates the remembered interim value\n delete this.interimStateValues[id];\n }\n if (!id || id.startsWith('messagebox.') || id.startsWith('log.')) {\n return;\n }\n\n if (id === `${this.namespace}.debug.to` && state && !state.ack) {\n if (!this.context.debugMode) {\n this.debugSendToInspector(state.val);\n }\n return;\n }\n\n // When still in initializing: already remember current values,\n // but data structures are initialized elsewhere\n if (!this.statesInitDone) {\n if (state) {\n this.states[id] = state;\n }\n return;\n }\n\n const oldState: ioBroker.State | null | undefined = this.states[id];\n if (state) {\n if (oldState) {\n // enable or disable script\n if (!state.ack && id.startsWith(this.activeStr) && this.objects[id]?.native?.script) {\n void this.extendForeignObject(this.objects[id].native.script, {\n common: { enabled: state.val },\n });\n }\n\n // monitor if the adapter is alive and send all subscriptions once more, after the adapter goes online\n if (/*oldState && */ oldState.val === false && state.val && id.endsWith('.alive')) {\n if (this.adapterSubs[id]) {\n const parts = id.split('.');\n const a = `${parts[2]}.${parts[3]}`;\n for (const sub of this.adapterSubs[id]) {\n this.log.info(`Detected coming adapter \"${a}\". Send subscribe: ${sub}`);\n this.sendTo(a, 'subscribe', sub);\n }\n }\n }\n } else if (/*!oldState && */ !this.stateIdSet.has(id)) {\n this.sortedInsert(id);\n this.stateIdSet.add(id);\n }\n this.states[id] = state;\n } else {\n if (oldState) {\n delete this.states[id];\n }\n state = {} as ioBroker.State;\n const pos = this.binaryIndexOf(this.stateIds, id);\n if (pos !== -1) {\n this.stateIds.splice(pos, 1);\n this.stateIdSet.delete(id);\n }\n }\n\n // Collect matching subscriptions:\n // 1. O(1) exact-id map lookup – only buckets for this specific state id\n // 2. Linear scan over wildcard/regex subscriptions (unavoidable)\n // EventObj is created lazily – only when at least one subscription must be dispatched.\n const exactSubs = this.subscriptionsMap.get(id);\n const wildcardSubs = this.subscriptionsWildcard;\n const hasWork = (exactSubs && exactSubs.length > 0) || wildcardSubs.length > 0;\n\n if (!hasWork) {\n return;\n }\n\n let _eventObj: EventObj | null = null;\n const getEvent = (): EventObj => {\n if (!_eventObj) {\n _eventObj = createEventObject(\n this.context,\n id,\n this.convertBackStringifiedValues(id, state),\n this.convertBackStringifiedValues(id, oldState),\n );\n }\n return _eventObj;\n };\n\n if (exactSubs) {\n for (let i = 0, l = exactSubs.length; i < l; i++) {\n const sub = exactSubs[i];\n if (sub?.patternCompareFunctions && patternMatching(getEvent(), sub.patternCompareFunctions)) {\n try {\n sub.callback(getEvent());\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n }\n\n // if this state matches any subscriptions\n for (let i = 0, l = wildcardSubs.length; i < l; i++) {\n const sub = wildcardSubs[i];\n if (sub?.patternCompareFunctions && patternMatching(getEvent(), sub.patternCompareFunctions)) {\n try {\n sub.callback(getEvent());\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n }\n\n onFileChange(id: string, fileName: string, size: number | null): void {\n // if this file matches any subscriptions\n for (let i = 0, l = this.subscriptionsFile.length; i < l; i++) {\n const sub = this.subscriptionsFile[i];\n if (sub && fileMatching(sub, id, fileName)) {\n try {\n sub.callback(id, fileName, size, sub.withFile);\n } catch (err: any) {\n this.log.error(`Error in callback: ${err.toString()}`);\n }\n }\n }\n }\n\n async onUnload(callback: () => void): Promise {\n try {\n await this.debugStop();\n this.stopTimeSchedules();\n if (this.setStateCountCheckInterval) {\n clearInterval(this.setStateCountCheckInterval);\n this.setStateCountCheckInterval = null;\n }\n await this.unsubscribeAiCredentials();\n await this.stopAllScripts();\n } catch (err: unknown) {\n this.log.error(`Error during unload: ${(err as Error).message}`);\n } finally {\n if (typeof callback === 'function') {\n callback();\n }\n }\n }\n\n async onReady(): Promise {\n this.errorLogFunction = this.log;\n this.context.errorLogFunction = this.log;\n this.config.maxSetStatePerMinute = parseInt(this.config.maxSetStatePerMinute as unknown as string, 10) || 1000;\n this.config.maxTriggersPerScript = parseInt(this.config.maxTriggersPerScript as unknown as string, 10) || 100;\n\n if (this.supportsFeature?.('PLUGINS')) {\n const sentryInstance: InstanceType = this.getPluginInstance('sentry') as InstanceType<\n typeof SentryPlugin\n >;\n if (sentryInstance) {\n const Sentry = sentryInstance.getSentryObject();\n Sentry?.withScope(scope => {\n scope.addEventProcessor((event, _hint) => {\n if (event.exception?.values?.[0]) {\n const eventData = event.exception.values[0];\n if (\n eventData.stacktrace?.frames &&\n Array.isArray(eventData.stacktrace.frames) &&\n eventData.stacktrace.frames.length\n ) {\n // Exclude event if script Marker is included\n if (\n eventData.stacktrace.frames.find(frame =>\n frame.filename?.includes(SCRIPT_CODE_MARKER),\n )\n ) {\n return null;\n }\n // Exclude event if own directory is included but not inside own node_modules\n const ownNodeModulesDir = join(__dirname, 'node_modules');\n if (\n !eventData.stacktrace.frames.find(\n frame =>\n frame.filename?.includes(__dirname) &&\n !frame.filename.includes(ownNodeModulesDir),\n )\n ) {\n return null;\n }\n // We have exception data and did not sort it out, so report it\n return event;\n }\n }\n\n // No exception in it ... do not report\n return null;\n });\n });\n }\n }\n\n await this.main();\n }\n\n /** Read and decrypt a single AI credential's key from the central store; returns '' (and logs) on error. */\n private async readAiCredentialKey(id: string): Promise {\n if (!Credentials?.getCredentials) {\n this.log.warn(\n `Cannot read AI credential \"${id}\": Credentials API is only with 7.2 js-controller available`,\n );\n return '';\n }\n try {\n const cred = await Credentials.getCredentials(this, id);\n return (cred?.values?.key || '').trim();\n } catch (e) {\n this.log.warn(`Cannot read AI credential \"${id}\": ${e instanceof Error ? e.message : String(e)}`);\n return '';\n }\n }\n\n /**\n * Resolve the API key (and base URL) for an AI provider.\n *\n * In `manual` mode the key comes from the encryptedNative adapter config.\n * In `manager` mode the config only stores the ID of a credential in the central\n * ioBroker credential store (`system.credentials.*`); the actual key is taken from the\n * `aiCredentialCache` (kept fresh by `subscribeAiCredentials`) or, for credentials we are\n * not subscribed to (e.g. a not-yet-saved selection in the settings dialog), read directly.\n *\n * The settings-dialog Test button may pass form values that are not saved yet\n * (`messageApiKey` / `messageCredentialId` / `credentialType`); those win over the stored config.\n */\n private async resolveAiCredentials(\n provider: string,\n opts: {\n messageBaseUrl?: string;\n messageApiKey?: string;\n messageCredentialId?: string;\n credentialType?: 'manual' | 'manager';\n } = {},\n ): Promise<{ apiKey: string; baseUrl: string }> {\n const mode = opts.credentialType || this.config.credentialType || 'manual';\n if (mode === 'manager') {\n // The base URL is not a secret and is resolved the same way in both modes.\n const { baseUrl } = resolveProviderCredentials(this.config, provider, opts.messageBaseUrl);\n const id = (opts.messageCredentialId || getProviderCredentialId(this.config, provider)).trim();\n if (!id) {\n return { apiKey: '', baseUrl };\n }\n // Prefer the cached value kept fresh by the credential subscription.\n const cached = this.aiCredentialCache.get(id);\n const apiKey = cached !== undefined ? cached : await this.readAiCredentialKey(id);\n return { apiKey, baseUrl };\n }\n // Manual mode. The Test button sends the current form key (maybe empty) — let it win.\n if (opts.messageApiKey !== undefined) {\n return resolveTestCredentials(this.config, provider, opts.messageApiKey, opts.messageBaseUrl);\n }\n return resolveProviderCredentials(this.config, provider, opts.messageBaseUrl);\n }\n\n /**\n * In `manager` mode, subscribe to all configured AI credentials so that edits made in the\n * admin credential manager (Settings → Credentials) are picked up live, without restarting\n * the adapter (the `system.credentials.*` objects are global, not part of the instance config).\n * The decrypted keys are cached and kept fresh by the subscription handlers.\n */\n private async subscribeAiCredentials(): Promise {\n // Always start from a clean state (idempotent — also used to re-subscribe).\n await this.unsubscribeAiCredentials();\n if (this.config.credentialType !== 'manager') {\n return;\n }\n if (!Credentials?.subscribeCredentials) {\n this.log.warn(`Cannot subscribe AI credential: Credentials API is only with 7.2 js-controller available`);\n return;\n }\n // Collect the distinct credential IDs configured across all AI providers.\n const ids = new Set();\n for (const provider of ['openai', 'anthropic', 'gemini', 'deepseek', 'custom'] as const) {\n const id = getProviderCredentialId(this.config, provider);\n if (id) {\n ids.add(id);\n }\n }\n for (const id of ids) {\n try {\n const unsubscribe = await Credentials.subscribeCredentials(\n this,\n id,\n (changedId, cred) => {\n if (cred) {\n this.aiCredentialCache.set(changedId, (cred.values?.key || '').trim());\n this.log.debug(`AI credential \"${changedId}\" updated`);\n } else {\n // The credential was deleted\n this.aiCredentialCache.delete(changedId);\n this.log.debug(`AI credential \"${changedId}\" was deleted`);\n }\n },\n );\n this.aiCredentialUnsubscribers.push(unsubscribe);\n // Prime the cache with the current value (the handler may only fire on later changes).\n this.aiCredentialCache.set(id, await this.readAiCredentialKey(id));\n } catch (e) {\n this.log.warn(\n `Cannot subscribe to AI credential \"${id}\": ${e instanceof Error ? e.message : String(e)}`,\n );\n }\n }\n if (this.aiCredentialUnsubscribers.length) {\n this.log.debug(`Subscribed to ${this.aiCredentialUnsubscribers.length} AI credential(s)`);\n }\n }\n\n /** Tear down all AI credential subscriptions and clear the cache. */\n private async unsubscribeAiCredentials(): Promise {\n const unsubscribers = this.aiCredentialUnsubscribers;\n this.aiCredentialUnsubscribers = [];\n this.aiCredentialCache.clear();\n for (const unsubscribe of unsubscribers) {\n try {\n await unsubscribe();\n } catch (e) {\n this.log.warn(`Cannot unsubscribe from AI credential: ${e instanceof Error ? e.message : String(e)}`);\n }\n }\n }\n\n onMessage(obj: ioBroker.Message): void {\n switch (obj?.command) {\n // process messageTo commands\n case 'toScript':\n case 'jsMessageBus':\n if (\n obj.message &&\n (obj.message.instance === null ||\n obj.message.instance === undefined ||\n `javascript.${obj.message.instance}` === this.namespace ||\n obj.message.instance === this.namespace)\n ) {\n Object.keys(this.messageBusHandlers).forEach(name => {\n // the script name could be script.js.xxx or only xxx\n if (\n (!obj.message.script || obj.message.script === name) &&\n this.messageBusHandlers[name][obj.message.message]\n ) {\n this.messageBusHandlers[name][obj.message.message].forEach(handler => {\n const sandbox = handler.sandbox;\n\n if (sandbox.verbose) {\n sandbox.log(`onMessage: ${JSON.stringify(obj.message)}`, 'info');\n }\n\n try {\n if (obj.callback) {\n handler.cb.call(sandbox, obj.message.data, (result: any) => {\n if (sandbox.verbose) {\n sandbox.log(`onMessage result: ${JSON.stringify(result)}`, 'info');\n }\n\n this.sendTo(obj.from, obj.command, result, obj.callback);\n });\n } else {\n handler.cb.call(sandbox, obj.message.data, (result: any) => {\n if (sandbox.verbose) {\n sandbox.log(`onMessage result: ${JSON.stringify(result)}`, 'info');\n }\n });\n }\n } catch (err: unknown) {\n void this.setState(\n `scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`,\n true,\n true,\n );\n this.logError(name, 'Error in callback:', err as Error);\n }\n });\n }\n });\n }\n break;\n\n case 'loadTypings': {\n // Load typings for the editor\n const typings: Record = {};\n\n // try to load TypeScript lib files from disk\n try {\n const typescriptLibs = resolveTypescriptLibs(targetTsLib);\n Object.assign(typings, typescriptLibs);\n } catch {\n /* ok, no lib then */\n }\n\n // provide the already-loaded ioBroker typings and global script declarations\n Object.assign(typings, tsAmbient);\n\n // also provide the known global declarations for each global script\n for (const globalScriptPaths of Object.keys(this.knownGlobalDeclarationsByScript)) {\n typings[`${globalScriptPaths}.d.ts`] = this.knownGlobalDeclarationsByScript[globalScriptPaths];\n }\n\n if (obj.callback) {\n this.sendTo(obj.from, obj.command, { typings }, obj.callback);\n }\n break;\n }\n\n case 'calcAstroAll': {\n if (obj.message) {\n const sunriseOffset =\n parseInt(\n obj.message.sunriseOffset === undefined\n ? this.config.sunriseOffset\n : obj.message.sunriseOffset,\n 10,\n ) || 0;\n const sunsetOffset =\n parseInt(\n obj.message.sunsetOffset === undefined\n ? this.config.sunsetOffset\n : obj.message.sunsetOffset,\n 10,\n ) || 0;\n const longitude =\n parseFloat(\n obj.message.longitude === undefined ? this.config.longitude : obj.message.longitude,\n ) || 0;\n const latitude =\n parseFloat(obj.message.latitude === undefined ? this.config.latitude : obj.message.latitude) ||\n 0;\n const today = getAstroStartOfDay();\n let astroEvents: GetTimesResult & { nextSunrise: Date; nextSunset: Date } = {} as GetTimesResult & {\n nextSunrise: Date;\n nextSunset: Date;\n };\n try {\n astroEvents = this.mods.suncalc.getTimes(today, latitude, longitude);\n } catch (err: unknown) {\n this.log.error(`Cannot calculate astro data: ${err as Error}`);\n }\n if (astroEvents) {\n try {\n astroEvents.nextSunrise = this.getAstroEvent(\n today,\n obj.message.sunriseEvent || this.config.sunriseEvent,\n obj.message.sunriseLimitStart || this.config.sunriseLimitStart,\n obj.message.sunriseLimitEnd || this.config.sunriseLimitEnd,\n sunriseOffset,\n false,\n latitude,\n longitude,\n true,\n );\n astroEvents.nextSunset = this.getAstroEvent(\n today,\n obj.message.sunsetEvent || this.config.sunsetEvent,\n obj.message.sunsetLimitStart || this.config.sunsetLimitStart,\n obj.message.sunsetLimitEnd || this.config.sunsetLimitEnd,\n sunsetOffset,\n true,\n latitude,\n longitude,\n true,\n );\n } catch (err: unknown) {\n this.log.error(`Cannot calculate astro data: ${err as Error}`);\n }\n }\n\n const result: Record = {};\n const keys = Object.keys(astroEvents).sort(\n (a, b) =>\n (astroEvents as unknown as Record)[a] -\n (astroEvents as unknown as Record)[b],\n );\n keys.forEach(key => {\n const validDate =\n (astroEvents as unknown as Record)[key] !== null &&\n !isNaN((astroEvents as unknown as Record)[key].getTime());\n\n result[key] = {\n isValidDate: validDate,\n serverTime: validDate\n ? formatHoursMinutesSeconds((astroEvents as unknown as Record)[key])\n : 'n/a',\n date: validDate\n ? (astroEvents as unknown as Record)[key].toISOString()\n : 'n/a',\n };\n });\n\n if (obj.callback) {\n this.sendTo(obj.from, obj.command, result, obj.callback);\n }\n }\n break;\n }\n\n case 'calcAstro': {\n if (obj.message) {\n const longitude =\n parseFloat(\n obj.message.longitude === undefined ? this.config.longitude : obj.message.longitude,\n ) || 0;\n const latitude =\n parseFloat(obj.message.latitude === undefined ? this.config.latitude : obj.message.latitude) ||\n 0;\n const today = getAstroStartOfDay();\n\n const sunriseEvent = obj.message?.sunriseEvent || this.config.sunriseEvent;\n const sunriseLimitStart = obj.message?.sunriseLimitStart || this.config.sunriseLimitStart;\n const sunriseLimitEnd = obj.message?.sunriseLimitEnd || this.config.sunriseLimitEnd;\n const sunriseOffset =\n parseInt(\n obj.message.sunriseOffset === undefined\n ? this.config.sunriseOffset\n : obj.message.sunriseOffset,\n 10,\n ) || 0;\n const nextSunrise = this.getAstroEvent(\n today,\n sunriseEvent,\n sunriseLimitStart,\n sunriseLimitEnd,\n sunriseOffset,\n false,\n latitude,\n longitude,\n true,\n );\n\n const sunsetEvent = obj.message?.sunsetEvent || this.config.sunsetEvent;\n const sunsetLimitStart = obj.message?.sunsetLimitStart || this.config.sunsetLimitStart;\n const sunsetLimitEnd = obj.message?.sunsetLimitEnd || this.config.sunsetLimitEnd;\n const sunsetOffset =\n parseInt(\n obj.message.sunsetOffset === undefined\n ? this.config.sunsetOffset\n : obj.message.sunsetOffset,\n 10,\n ) || 0;\n const nextSunset = this.getAstroEvent(\n today,\n sunsetEvent,\n sunsetLimitStart,\n sunsetLimitEnd,\n sunsetOffset,\n true,\n latitude,\n longitude,\n true,\n );\n\n const validDateSunrise = nextSunrise !== null && !isNaN(nextSunrise.getTime());\n const validDateSunset = nextSunset !== null && !isNaN(nextSunset.getTime());\n\n this.log.debug(\n `calcAstro sunrise: ${sunriseEvent} -> start ${sunriseLimitStart}, end: ${sunriseLimitEnd}, offset: ${sunriseOffset} - ${validDateSunrise ? nextSunrise.toISOString() : 'n/a'}`,\n );\n this.log.debug(\n `calcAstro sunset: ${sunsetEvent} -> start ${sunsetLimitStart}, end: ${sunsetLimitEnd}, offset: ${sunsetOffset} - ${validDateSunset ? nextSunset.toISOString() : 'n/a'}`,\n );\n\n if (obj.callback) {\n this.sendTo(\n obj.from,\n obj.command,\n {\n nextSunrise: {\n isValidDate: validDateSunrise,\n serverTime: validDateSunrise ? formatHoursMinutesSeconds(nextSunrise) : 'n/a',\n date: nextSunrise.toISOString(),\n },\n nextSunset: {\n isValidDate: validDateSunset,\n serverTime: validDateSunset ? formatHoursMinutesSeconds(nextSunset) : 'n/a',\n date: nextSunset.toISOString(),\n },\n },\n obj.callback,\n );\n }\n }\n break;\n }\n\n case 'debug': {\n if (!this.context.debugMode) {\n this.debugStart(obj.message);\n }\n break;\n }\n\n case 'debugStop': {\n if (!this.context.debugMode) {\n void this.debugStop().then(() => console.log('stopped'));\n }\n break;\n }\n\n case 'rulesOn': {\n this.context.rulesOpened = obj.message;\n console.log(`Enable messaging for ${this.context.rulesOpened}`);\n break;\n }\n\n case 'rulesOff': {\n // maybe if (context.rulesOpened === obj.message)\n console.log(`Disable messaging for ${this.context.rulesOpened}`);\n this.context.rulesOpened = null;\n break;\n }\n\n case 'getIoBrokerDataDir': {\n if (obj.callback) {\n this.sendTo(\n obj.from,\n obj.command,\n {\n dataDir: getAbsoluteDefaultDataDir(),\n sep,\n },\n obj.callback,\n );\n }\n break;\n }\n\n case 'chatCompletion': {\n // Proxy chat completion requests to an OpenAI-compatible API endpoint.\n // API keys are resolved server-side from the encryptedNative config or the central\n // credentials manager — they never leave the adapter (frontend only sends `provider`).\n void (async () => {\n if (!obj.callback) {\n return;\n }\n const chatModel = (obj.message?.model || '').trim();\n const messages = obj.message?.messages;\n const tools = obj.message?.tools;\n const provider = (obj.message?.provider || 'openai').trim();\n const { apiKey, baseUrl } = await this.resolveAiCredentials(provider, {\n messageBaseUrl: obj.message?.baseUrl,\n });\n // Anthropic, Gemini, and DeepSeek always require an API key; OpenAI-compatible allows empty key with custom base URL\n if (\n !apiKey &&\n (provider === 'anthropic' || provider === 'gemini' || provider === 'deepseek' || !baseUrl)\n ) {\n this.sendTo(obj.from, obj.command, { error: 'No API key provided' }, obj.callback);\n return;\n }\n if (!chatModel || !messages) {\n this.sendTo(obj.from, obj.command, { error: 'Model and messages are required' }, obj.callback);\n return;\n }\n\n let url: string;\n const chatHeaders: Record = {\n 'Content-Type': 'application/json',\n };\n let bodyObj: Record;\n\n if (provider === 'anthropic') {\n url = 'https://api.anthropic.com/v1/messages';\n chatHeaders['x-api-key'] = apiKey;\n chatHeaders['anthropic-version'] = '2023-06-01';\n // Translate OpenAI-format messages/tools into Anthropic's content-block format.\n const { system: systemText, messages: anthropicMessages } =\n translateMessagesToAnthropic(messages);\n const anthropicTools = tools?.length ? translateToolsToAnthropic(tools) : [];\n bodyObj = {\n model: chatModel,\n max_tokens: 8192,\n stream: false,\n ...(systemText ? { system: systemText } : {}),\n messages: anthropicMessages,\n ...(anthropicTools.length ? { tools: anthropicTools } : {}),\n };\n } else if (provider === 'gemini') {\n url = 'https://generativelanguage.googleapis.com/v1beta/openai/chat/completions';\n if (apiKey) {\n chatHeaders.Authorization = `Bearer ${apiKey}`;\n }\n bodyObj = { model: chatModel, messages, stream: false, ...(tools?.length ? { tools } : {}) };\n } else if (provider === 'deepseek') {\n url = 'https://api.deepseek.com/chat/completions';\n chatHeaders.Authorization = `Bearer ${apiKey}`;\n bodyObj = { model: chatModel, messages, stream: false, ...(tools?.length ? { tools } : {}) };\n } else {\n url = `${baseUrl || 'https://api.openai.com/v1'}/chat/completions`;\n if (apiKey) {\n chatHeaders.Authorization = `Bearer ${apiKey}`;\n }\n bodyObj = {\n model: chatModel,\n messages,\n stream: false,\n ...(tools?.length ? { tools } : {}),\n // Disable thinking/reasoning for local models to save context and speed\n ...(baseUrl ? { reasoning_effort: 'none' } : {}),\n };\n }\n\n const body = JSON.stringify(bodyObj);\n const bodyBuffer = Buffer.from(body, 'utf8');\n chatHeaders['Content-Length'] = bodyBuffer.length;\n\n const resolved = resolveRequestModule(url);\n if (!resolved) {\n this.sendTo(obj.from, obj.command, { error: `Invalid API URL: ${url}` }, obj.callback);\n return;\n }\n const { module: requestModule, isHttps } = resolved;\n\n try {\n const req = requestModule.request(\n url,\n {\n method: 'POST',\n headers: chatHeaders,\n timeout: 600000,\n ...(isHttps && this.config.allowSelfSignedCerts ? { rejectUnauthorized: false } : {}),\n },\n res => {\n let data = '';\n res.on('data', (chunk: Buffer) => {\n data += chunk.toString();\n });\n res.on('end', () => {\n if (res.statusCode === 200) {\n try {\n const parsed = JSON.parse(data);\n let content: string;\n let tool_calls: unknown;\n if (provider === 'anthropic') {\n const translated = translateAnthropicResponseToOpenAI(parsed);\n content = translated.content;\n tool_calls = translated.tool_calls;\n } else {\n const message = parsed.choices?.[0]?.message;\n content = message?.content || '';\n tool_calls = message?.tool_calls;\n }\n if (!content && !(tool_calls as unknown[] | undefined)?.length) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Empty response from API' },\n obj.callback,\n );\n } else {\n this.sendTo(\n obj.from,\n obj.command,\n {\n success: true,\n content,\n ...(tool_calls ? { tool_calls } : {}),\n },\n obj.callback,\n );\n }\n } catch {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Invalid JSON response from API' },\n obj.callback,\n );\n }\n } else {\n let detail = '';\n try {\n const errParsed = JSON.parse(data);\n detail = errParsed.error?.message || data.substring(0, 200);\n } catch {\n detail = data.substring(0, 200);\n }\n this.sendTo(\n obj.from,\n obj.command,\n {\n error: `${detail || httpStatusText(res.statusCode || 0)} (${res.statusCode})`,\n },\n obj.callback,\n );\n }\n });\n },\n );\n\n req.on('error', (err: Error) => {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${err.message}` },\n obj.callback,\n );\n });\n\n req.on('timeout', () => {\n req.destroy();\n this.sendTo(obj.from, obj.command, { error: 'Connection timeout (600s)' }, obj.callback);\n });\n\n req.write(bodyBuffer);\n req.end();\n } catch (error) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${(error as Error).toString()}` },\n obj.callback,\n );\n }\n })();\n break;\n }\n\n case 'testApiConnection': {\n // Test connection to an OpenAI-compatible API endpoint.\n // The settings-dialog Test button sends the current form value as `apiKey`\n // (so users can test before saving); otherwise we fall back to the stored key.\n void (async () => {\n if (!obj.callback) {\n return;\n }\n const provider = (obj.message?.provider || 'openai').trim();\n const { apiKey, baseUrl } = await this.resolveAiCredentials(provider, {\n messageApiKey: obj.message?.apiKey,\n messageBaseUrl: obj.message?.baseUrl,\n messageCredentialId: obj.message?.credentialId,\n credentialType: obj.message?.credentialType,\n });\n // Anthropic, Gemini, and DeepSeek always require an API key; OpenAI-compatible allows empty key with custom base URL\n if (\n !apiKey &&\n (provider === 'anthropic' || provider === 'gemini' || provider === 'deepseek' || !baseUrl)\n ) {\n this.sendTo(obj.from, obj.command, { error: 'No API key provided' }, obj.callback);\n return;\n }\n\n let url: string;\n const testHeaders: Record = {\n 'Content-Type': 'application/json',\n };\n\n if (provider === 'anthropic') {\n url = 'https://api.anthropic.com/v1/models';\n testHeaders['x-api-key'] = apiKey;\n testHeaders['anthropic-version'] = '2023-06-01';\n } else if (provider === 'gemini') {\n url = 'https://generativelanguage.googleapis.com/v1beta/openai/models';\n if (apiKey) {\n testHeaders.Authorization = `Bearer ${apiKey}`;\n }\n } else if (provider === 'deepseek') {\n url = 'https://api.deepseek.com/models';\n testHeaders.Authorization = `Bearer ${apiKey}`;\n } else {\n url = `${baseUrl || 'https://api.openai.com/v1'}/models`;\n if (apiKey) {\n testHeaders.Authorization = `Bearer ${apiKey}`;\n }\n }\n\n const resolved = resolveRequestModule(url);\n if (!resolved) {\n this.sendTo(obj.from, obj.command, { error: `Invalid API URL: ${url}` }, obj.callback);\n return;\n }\n const { module: requestModule, isHttps } = resolved;\n\n try {\n const req = requestModule.request(\n url,\n {\n method: 'GET',\n headers: testHeaders,\n timeout: 10000,\n ...(isHttps && this.config.allowSelfSignedCerts ? { rejectUnauthorized: false } : {}),\n },\n res => {\n let data = '';\n res.on('data', (chunk: Buffer) => {\n data += chunk.toString();\n });\n res.on('end', () => {\n if (res.statusCode === 200) {\n try {\n const parsed = JSON.parse(data);\n const models: string[] = (parsed.data || [])\n .map((m: { id: string }) =>\n m.id.startsWith('models/') ? m.id.substring(7) : m.id,\n )\n .sort();\n this.sendTo(\n obj.from,\n obj.command,\n { success: true, models, count: models.length },\n obj.callback,\n );\n } catch {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Invalid JSON response from API' },\n obj.callback,\n );\n }\n } else if (res.statusCode === 401) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Invalid API key (401)' },\n obj.callback,\n );\n } else if (res.statusCode === 403) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: 'Access denied (403)' },\n obj.callback,\n );\n } else {\n // Include response body for debugging\n let detail = '';\n try {\n const errParsed = JSON.parse(data);\n detail = errParsed.error?.message || data.substring(0, 200);\n } catch {\n detail = data.substring(0, 200);\n }\n this.sendTo(\n obj.from,\n obj.command,\n {\n error: `${detail || httpStatusText(res.statusCode || 0)} (${res.statusCode})`,\n },\n obj.callback,\n );\n }\n });\n },\n );\n\n req.on('error', (err: Error) => {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${err.message}` },\n obj.callback,\n );\n });\n\n req.on('timeout', () => {\n req.destroy();\n this.sendTo(obj.from, obj.command, { error: 'Connection timeout (10s)' }, obj.callback);\n });\n\n req.end();\n } catch (error) {\n this.sendTo(\n obj.from,\n obj.command,\n { error: `Connection failed: ${(error as Error).toString()}` },\n obj.callback,\n );\n }\n })();\n break;\n }\n\n case 'getAvailableAiProviders': {\n // Reports which AI providers have stored credentials (keys never leave the backend).\n if (obj.callback) {\n const providers = listAvailableProviders(this.config);\n this.sendTo(obj.from, obj.command, { providers }, obj.callback);\n }\n break;\n }\n\n case 'prettier': {\n // Format the code with Prettier\n if (obj.message && typeof obj.message.code === 'string') {\n try {\n prettier\n .format(obj.message.code, {\n parser: obj.message.type === 'typescript' ? 'babel-ts' : 'babel',\n printWidth: 120,\n semi: true,\n tabWidth: 4,\n useTabs: false,\n trailingComma: 'all',\n singleQuote: true,\n singleAttributePerLine: true,\n endOfLine: 'lf',\n bracketSpacing: true,\n arrowParens: 'avoid',\n quoteProps: 'as-needed',\n })\n .then(formattedCode => {\n if (obj.callback) {\n this.sendTo(obj.from, obj.command, { code: formattedCode }, obj.callback);\n } else {\n this.logWithLineInfo(`Formatted code:\\n${formattedCode}`);\n }\n })\n .catch(e => {\n this.logError('Prettier', 'Error formatting code:', e as Error);\n this.sendTo(obj.from, obj.command, { error: (e as Error).toString() }, obj.callback);\n });\n } catch (e) {\n this.logError('Prettier', 'Error formatting code:', e as Error);\n this.sendTo(obj.from, obj.command, { error: (e as Error).toString() }, obj.callback);\n }\n } else {\n this.sendTo(obj.from, obj.command, { error: 'No code provided' }, obj.callback);\n }\n break;\n }\n\n case 'execute': {\n if (obj.callback) {\n void this.executeScript(obj.message)\n .then(result => this.sendTo(obj.from, obj.command, result, obj.callback))\n .catch(err =>\n this.sendTo(\n obj.from,\n obj.command,\n {\n ok: false,\n error: `Internal error: ${err as Error}`,\n logs: [],\n output: '',\n },\n obj.callback,\n ),\n );\n }\n break;\n }\n }\n }\n\n onLog(msg: ioBroker.LogMessage): void {\n for (const name of Object.keys(this.logSubscriptions)) {\n for (const handler of this.logSubscriptions[name]) {\n if (\n typeof handler.cb === 'function' &&\n (handler.severity === '*' || handler.severity === msg.severity)\n ) {\n handler.sandbox.logHandler = handler.severity || '*';\n handler.cb.call(handler.sandbox, msg);\n handler.sandbox.logHandler = undefined;\n }\n }\n }\n\n // Special case if some script is executed now with \"execute\" command, and we see \"script.js.__execute_X:\" at the beginning\n if (this.logCollectors.length) {\n for (const logCollector of this.logCollectors) {\n if (msg.message.includes(`${logCollector.name}:`)) {\n logCollector.collector(msg.severity as ioBroker.LogLevel, msg.message);\n }\n }\n }\n }\n\n logError(scriptName: string, msg: string, e: Error, offs?: number): void {\n const stack = e.stack ? e.stack.toString().split('\\n') : e ? e.toString() : '';\n if (!msg.includes('\\n')) {\n msg = msg.replace(/[: ]*$/, ': ');\n }\n if (!msg.endsWith(' ')) {\n msg += ':';\n }\n if (!scriptName.startsWith(SCRIPT_CODE_MARKER)) {\n scriptName = SCRIPT_CODE_MARKER + scriptName;\n }\n\n this.errorLogFunction.error(`${scriptName}: ${msg}${this.fixLineNo(stack[0])}`);\n for (let i = offs || 1; i < stack.length; i++) {\n if (!stack[i]) {\n continue;\n }\n if (stack[i].match(/runInNewContext|javascript\\.js:/)) {\n break;\n }\n this.errorLogFunction.error(`${scriptName}: ${this.fixLineNo(stack[i])}`);\n }\n }\n\n logWithLineInfo(msg: string): void {\n this.errorLogFunction.warn(msg);\n\n // get current error stack\n const stack = new Error().stack?.split('\\n');\n\n if (stack) {\n for (let i = 3; i < stack.length; i++) {\n if (!stack[i]) {\n continue;\n }\n if (stack[i].match(/runInContext|runInNewContext|javascript\\.js:/)) {\n break;\n }\n this.errorLogFunction.warn(this.fixLineNo(stack[i]));\n }\n }\n }\n\n async main(): Promise {\n // Patch the font as it sometimes is wrong\n if (!this.context.debugMode) {\n if (await this.patchFont()) {\n this.log.debug('Font patched');\n }\n }\n\n this.log.debug(`config.subscribe (Do not subscribe all states on start): ${this.config.subscribe}`);\n\n // correct jsonConfig for admin\n const instObj: ioBroker.InstanceObject | null | undefined = await this.getForeignObjectAsync(\n `system.adapter.${this.namespace}`,\n );\n if (instObj?.common) {\n if (instObj.common.adminUI?.config !== 'json') {\n if (instObj.common.adminUI) {\n instObj.common.adminUI.config = 'json';\n } else {\n instObj.common.adminUI = { config: 'json' };\n }\n void this.setForeignObject(instObj._id, instObj);\n }\n }\n\n if (webstormDebug) {\n this.errorLogFunction = {\n error: console.error,\n warn: console.warn,\n info: console.info,\n debug: console.log,\n silly: console.log,\n };\n this.context.errorLogFunction = this.errorLogFunction;\n }\n this.activeStr = `${this.namespace}.scriptEnabled.`;\n\n this.mods.fs = new ProtectFs(this.log, getAbsoluteDefaultDataDir());\n this.mods['fs/promises'] = this.mods.fs.promises; // to avoid require('fs/promises');\n\n // try to read TS declarations\n try {\n tsAmbient = {\n 'javascript.d.ts': readFileSync(this.mods.path.join(__dirname, 'lib/javascript.d.ts'), 'utf8'),\n };\n this.tsServer.provideAmbientDeclarations(tsAmbient);\n jsDeclarationServer.provideAmbientDeclarations(tsAmbient);\n } catch (err: unknown) {\n this.log.warn(`Could not read TypeScript ambient declarations: ${err as Error}`);\n // This should not happen, so send an error report to Sentry\n if (this.supportsFeature && this.supportsFeature('PLUGINS')) {\n const sentryInstance = this.getPluginInstance('sentry');\n if (sentryInstance) {\n const sentryObject = sentryInstance.getSentryObject();\n sentryObject?.captureException(err);\n }\n }\n // Keep the adapter from crashing when the included typings cannot be read\n tsAmbient = {};\n }\n\n await this.installLibraries();\n // Load the TS declarations for Node.js and all 3rd party modules\n this.loadTypeScriptDeclarations();\n\n await this.getData();\n this.context.scheduler = new Scheduler(\n this.log,\n Date,\n this.mods.suncalc,\n this.config.latitude,\n this.config.longitude,\n );\n await this.dayTimeSchedules();\n await this.sunTimeSchedules();\n await this.timeSchedule();\n\n // Store allowSelfSignedCerts on the context, so sandbox HTTP functions can use it\n // without setting the global process.env.NODE_TLS_REJECT_UNAUTHORIZED (which affects all adapters in compact mode)\n this.context.allowSelfSignedCerts = this.config.allowSelfSignedCerts;\n\n // In `manager` credential mode, subscribe to the configured AI credentials so changes in the\n // central credential store are picked up live (the keys are cached for the AI sendTo handlers).\n await this.subscribeAiCredentials();\n\n const doc = await this.getObjectViewAsync('script', 'javascript', {});\n if (doc?.rows?.length) {\n // sort global scripts if configured\n if (this.config.sortGlobalScriptsAlphabetically) {\n doc.rows.sort((a, b) => a.value._id.localeCompare(b.value._id));\n }\n // assemble global script\n for (let g = 0; g < doc.rows.length; g++) {\n const obj = doc.rows[g].value;\n if (checkIsGlobal(obj)) {\n if (obj && obj.common) {\n const engineType = (obj.common.engineType || '').toLowerCase();\n\n if (obj.common.enabled) {\n if (engineType.startsWith('typescript')) {\n // TypeScript\n this.log.info(`${obj._id}: compiling TypeScript source...`);\n // In order to compile global TypeScript, we need to do some transformations\n // 1. For top-level-await, some statements must be wrapped in an immediately-invoked async function\n // 2. If any global script uses `import`, the declarations are no longer visible if they are not exported with `declare global`\n const transformedSource = transformScriptBeforeCompilation(obj.common.source, true);\n // The source code must be transformed in order to support top level await\n // Global scripts must not be treated as a module, otherwise their methods\n // cannot be found by the normal scripts\n // We need to hash both global declarations that are known until now\n // AND the script source, because changing either can change the compilation output\n const sourceHash: string = hashSource(\n tsSourceHashBase + this.globalDeclarations + transformedSource,\n );\n\n let compiled: string | undefined;\n let declarations: string | undefined;\n // If we already stored the compiled source code and the original source hash,\n // use the hash to check whether we can rely on the compiled source code or\n // if we need to compile it again\n if (\n typeof obj.common.compiled === 'string' &&\n typeof obj.common.sourceHash === 'string' &&\n sourceHash === obj.common.sourceHash\n ) {\n // We can reuse the stored source\n compiled = obj.common.compiled;\n declarations = obj.common.declarations;\n this.log.info(\n `${obj._id}: source code did not change, using cached compilation result...`,\n );\n } else {\n // We don't have a hashed source code, or the original source changed, compile it\n const filename = scriptIdToTSFilename(obj._id);\n let tsCompiled: CompileResult;\n try {\n tsCompiled = this.tsServer.compile(filename, transformedSource);\n } catch (err: unknown) {\n this.log.error(`${obj._id}: TypeScript compilation failed:\\n${err as Error}`);\n continue;\n }\n\n const errors = tsCompiled.diagnostics\n .map(diag => `${diag.annotatedSource}\\n`)\n .join('\\n');\n\n if (tsCompiled.success) {\n if (errors.length > 0) {\n this.log.warn(\n `${obj._id}: TypeScript compilation completed with errors:\\n${errors}`,\n );\n } else {\n this.log.info(`${obj._id}: TypeScript compilation successful`);\n }\n compiled = tsCompiled.result;\n // Global scripts that have been transformed to support `import` need to have their declarations transformed aswell\n declarations = transformGlobalDeclarations(tsCompiled.declarations || '');\n\n const newCommon: {\n compiled: string | undefined;\n declarations?: string;\n sourceHash: string;\n } = {\n sourceHash,\n compiled,\n };\n if (declarations) {\n newCommon.declarations = declarations;\n }\n\n // Store the compiled source and the original source hash, so we don't need to do the work again next time\n this.ignoreObjectChange.add(obj._id); // ignore the next change and don't restart scripts\n void this.extendForeignObject(obj._id, {\n common: newCommon,\n });\n } else {\n this.log.error(`${obj._id}: TypeScript compilation failed:\\n${errors}`);\n continue;\n }\n }\n this.globalScript += `${compiled}\\n`;\n // if declarations were generated, remember them\n if (declarations != null) {\n this.provideDeclarationsForGlobalScript(obj._id, declarations);\n }\n } else {\n // javascript\n const sourceCode = obj.common.source;\n this.globalScript += `${sourceCode}\\n`;\n\n // try to compile the declarations so TypeScripts can use\n // functions defined in global JavaScripts\n const filename = scriptIdToTSFilename(obj._id);\n let tsCompiled: CompileResult;\n try {\n tsCompiled = jsDeclarationServer.compile(filename, sourceCode);\n } catch (err: unknown) {\n this.log.warn(\n `${obj._id}: Error while generating type declarations, skipping:\\n${err as Error}`,\n );\n continue;\n }\n // if declarations were generated, remember them\n if (tsCompiled.success && tsCompiled.declarations != null) {\n this.provideDeclarationsForGlobalScript(obj._id, tsCompiled.declarations);\n }\n }\n }\n }\n }\n }\n }\n\n this.globalScript = this.globalScript.replace(/\\r\\n/g, '\\n');\n this.globalScriptLines = this.globalScript.split(/\\n/g).length - 1;\n\n if (doc?.rows?.length) {\n // load all scripts\n for (let i = 0; i < doc.rows.length; i++) {\n if (!checkIsGlobal(doc.rows[i].value)) {\n void this.loadScript(doc.rows[i].value);\n }\n }\n }\n\n if (this.config.mirrorPath?.trim()) {\n this.config.mirrorInstance = parseInt(this.config.mirrorInstance as unknown as string, 10) || 0;\n if (this.instance === this.config.mirrorInstance) {\n const ioBDataDir = getAbsoluteDefaultDataDir() + sep;\n this.config.mirrorPath = normalize(this.config.mirrorPath);\n let mirrorForbidden = false;\n for (let dir of forbiddenMirrorLocations) {\n dir = join(ioBDataDir, dir) + sep;\n if (dir.includes(this.config.mirrorPath) || this.config.mirrorPath.startsWith(dir)) {\n this.log.error(`The Mirror directory is not allowed to be a central ioBroker directory!`);\n this.log.error(`Directory ${this.config.mirrorPath} is not allowed to mirror files!`);\n mirrorForbidden = true;\n break;\n }\n }\n if (!mirrorForbidden) {\n this.mirror = new Mirror({\n adapter: this,\n log: this.log,\n diskRoot: this.config.mirrorPath,\n });\n }\n }\n }\n\n // Check setState counter per minute and stop a script if too high\n this.setStateCountCheckInterval = setInterval(() => {\n for (const id of Object.keys(this.scripts)) {\n if (!this.scripts[id]) {\n continue;\n }\n const currentSetStatePerMinuteCounter = this.scripts[id].setStatePerMinuteCounter;\n this.scripts[id].setStatePerMinuteCounter = 0;\n if (currentSetStatePerMinuteCounter > this.config.maxSetStatePerMinute) {\n this.scripts[id].setStatePerMinuteProblemCounter++;\n this.log.debug(\n `${id}: Script has reached the maximum of ${this.config.maxSetStatePerMinute} setState calls per minute in ${this.scripts[id].setStatePerMinuteProblemCounter} consecutive minutes`,\n );\n // Allow \"too high counters\" for 1 minute for script starts or such and only\n // stop the script when lasts longer\n if (this.scripts[id].setStatePerMinuteProblemCounter > 1) {\n this.log.error(\n `${id}: Script is calling setState more than ${this.config.maxSetStatePerMinute} times per minute! Stopping Script now! Please check your script!`,\n );\n void this.stopScript(id);\n }\n } else if (this.scripts[id].setStatePerMinuteProblemCounter > 0) {\n this.scripts[id].setStatePerMinuteProblemCounter--;\n this.log.debug(\n `Script ${id} has NOT reached the maximum of ${this.config.maxSetStatePerMinute} setState calls per minute. Decrease problem counter to ${this.scripts[id].setStatePerMinuteProblemCounter}`,\n );\n }\n }\n }, 60_000).unref();\n }\n\n private loadTypeScriptDeclarations(): void {\n // try to load the typings on disk for all 3rd party modules\n const packages = [\n 'node', // this provides auto-completion for most builtins\n '@iobroker/types', // this provides auto-completion for most builtins\n ];\n // Also include user-selected libraries (but only those that are also installed)\n if (typeof this.config?.libraries === 'string' && typeof this.config.libraryTypings === 'string') {\n const installedLibs = this.config.libraries\n .split(/[,;\\s]+/)\n .map(s => s.trim().split('@')[0])\n .filter(s => !!s);\n\n const wantsTypings = this.config.libraryTypings\n .split(/[,;\\s]+/)\n .map(s => s.trim())\n .filter(s => !!s);\n\n // O(1) lookups – avoids O(n²) Array.includes inside loops\n const installedSet = new Set(installedLibs);\n const wantsSet = new Set(wantsTypings);\n const packagesSet = new Set(packages);\n\n // Add all installed libraries the user has requested typings for to the list of packages\n for (const lib of installedLibs) {\n if (wantsSet.has(lib) && !packagesSet.has(lib)) {\n packages.push(lib);\n packagesSet.add(lib);\n }\n }\n // Some packages have submodules (e.g., rxjs/operators) that are not exposed through the main entry point\n // If typings are requested for them, also add them if the base module is installed\n for (const lib of wantsTypings) {\n // Extract the package name and check if we need to add it\n if (!lib.includes('/')) {\n continue;\n }\n const pkgName = lib.substring(0, lib.indexOf('/'));\n\n if (installedSet.has(pkgName) && !packagesSet.has(lib)) {\n packages.push(lib);\n packagesSet.add(lib);\n }\n }\n }\n for (const pkg of packages) {\n let pkgTypings = resolveTypings(\n pkg,\n this.getAdapterScopedPackageIdentifier ? this.getAdapterScopedPackageIdentifier(pkg) : pkg,\n // node needs ambient typings, so we don't wrap it in declare module\n pkg !== 'node',\n );\n if (!pkgTypings) {\n // Create the empty dummy declarations so users don't get the \"not found\" error\n // for installed packages\n if (pkg.includes('/')) {\n pkgTypings = {\n [`node_modules/${pkg}/index.d.ts`]: `declare module \"${pkg}\";`,\n };\n } else {\n pkgTypings = {\n [`node_modules/@types/${pkg}/index.d.ts`]: `declare module \"${pkg}\";`,\n };\n }\n }\n this.log.debug(`Loaded TypeScript definitions for \"${pkg}\": ${JSON.stringify(Object.keys(pkgTypings))}`);\n // remember the declarations for the editor\n Object.assign(tsAmbient, pkgTypings);\n // and give the language servers access to them\n this.tsServer.provideAmbientDeclarations(pkgTypings);\n jsDeclarationServer.provideAmbientDeclarations(pkgTypings);\n }\n }\n\n updateObjectContext(id: string, obj: ioBroker.Object | null | undefined): void {\n if (obj) {\n // add state to state ID's list\n if (obj.type === 'state') {\n if (!this.stateIdSet.has(id)) {\n this.sortedInsert(id);\n this.stateIdSet.add(id);\n }\n if (this.context.devices && this.context.channels) {\n const parts = id.split('.');\n parts.pop();\n const chn = parts.join('.');\n this.context.channels[chn] ||= new Set();\n this.context.channels[chn].add(id);\n\n parts.pop();\n const dev = parts.join('.');\n this.context.devices[dev] ||= new Set();\n this.context.devices[dev].add(id);\n }\n }\n } else {\n // delete object from state ID's list\n const pos = this.binaryIndexOf(this.stateIds, id);\n if (pos !== -1) {\n this.stateIds.splice(pos, 1);\n this.stateIdSet.delete(id);\n }\n if (this.context.devices && this.context.channels) {\n const parts = id.split('.');\n parts.pop();\n const chn = parts.join('.');\n this.context.channels[chn]?.delete(id);\n\n parts.pop();\n const dev = parts.join('.');\n this.context.devices[dev]?.delete(id);\n }\n\n delete this.folderCreationVerifiedObjects[id];\n }\n\n if (!obj && this.objects[id]) {\n // objects were deleted\n this.removeFromNames(id);\n delete this.objects[id];\n } else if (obj && !this.objects[id]) {\n // object was added\n this.objects[id] = obj;\n this.addToNames(obj);\n } else if (obj && this.objects[id].common) {\n // Object just changed\n this.objects[id] = obj;\n\n const n = this.getName(id);\n let nn = this.objects[id].common ? this.objects[id].common.name : '';\n\n if (nn && typeof nn === 'object') {\n nn = nn[getLanguage()] || nn.en;\n }\n\n if (n !== nn) {\n if (n) {\n this.removeFromNames(id);\n }\n if (nn) {\n this.addToNames(obj);\n }\n }\n }\n }\n\n async stopAllScripts(): Promise {\n const scripts = Object.keys(this.scripts);\n const promises: Promise[] = [];\n for (let i = 0; i < scripts.length; i++) {\n promises.push(this.stopScript(scripts[i]));\n }\n return Promise.all(promises).then(() => {});\n }\n\n convertBackStringifiedValues(\n id: string,\n state: ioBroker.State | null | undefined,\n ): ioBroker.State | null | undefined {\n if (\n state &&\n typeof state.val === 'string' &&\n this.objects[id]?.common &&\n (this.objects[id].common.type === 'array' || this.objects[id].common.type === 'object')\n ) {\n try {\n state.val = JSON.parse(state.val);\n } catch (err: any) {\n if (id.startsWith('javascript.') || id.startsWith('0_userdata.0')) {\n this.log.info(\n `Could not parse value for id \"${id}\" into ${this.objects[id].common.type}: ${err.toString()}`,\n );\n } else {\n this.log.debug(\n `Could not parse value for id \"${id}\" into ${this.objects[id].common.type}: ${err.toString()}`,\n );\n }\n }\n }\n return state;\n }\n\n prepareStateObjectSimple(id: string, state: ioBroker.StateValue, isAck: boolean): ioBroker.State {\n // otherwise, assume that the given state is the value to be set\n const oState: ioBroker.State = { val: state, ack: isAck } as ioBroker.State;\n\n return this.prepareStateObject(id, oState);\n }\n\n prepareStateObject(id: string, state: ioBroker.SettableState | null): ioBroker.State {\n let oState: ioBroker.State;\n\n if (state && typeof state === 'object') {\n oState = state as ioBroker.State;\n } else {\n oState = { val: null } as ioBroker.State;\n }\n\n if (this.config.subscribe) {\n return oState;\n }\n // set other values to have a full state object\n // mirrors logic from statesInRedis\n if (oState.ts === undefined) {\n oState.ts = Date.now();\n }\n\n if (oState.q === undefined) {\n oState.q = 0;\n }\n\n oState.from =\n typeof oState.from === 'string' && oState.from !== '' ? oState.from : `system.adapter.${this.namespace}`;\n\n if (oState.lc === undefined) {\n const formerStateValue = this.interimStateValues[id] || this.states[id];\n if (!formerStateValue) {\n oState.lc = oState.ts;\n } else {\n // isDeepStrictEqual works on objects and primitive values\n const hasChanged = !isDeepStrictEqual(formerStateValue.val, oState.val);\n if (!formerStateValue.lc || hasChanged) {\n oState.lc = oState.ts;\n } else {\n oState.lc = formerStateValue.lc;\n }\n }\n }\n\n return oState;\n }\n\n async getData(): Promise {\n await this.subscribeForeignObjectsAsync('*');\n\n if (!this.config.subscribe) {\n await this.subscribeForeignStatesAsync('*');\n } else {\n await this.subscribeStatesAsync('debug.to');\n await this.subscribeStatesAsync('scriptEnabled.*');\n }\n\n this.log.info('requesting all states');\n\n const statesPromise = this.getForeignStatesAsync('*')\n .then(res => {\n if (!res) {\n this.log.error(`Could not initialize states: no result`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n return;\n }\n if (!this.config.subscribe) {\n this.states = Object.assign(res, this.states);\n this.context.states = this.states;\n\n this.addGetProperty(this.states);\n }\n\n // remember all IDs – sort once to guarantee the sorted invariant\n // required by binaryIndexOf() / sortedInsert() used later\n const keys = Object.keys(res).sort();\n for (const id of keys) {\n this.stateIds.push(id);\n this.stateIdSet.add(id);\n }\n this.statesInitDone = true;\n this.log.info('received all states');\n })\n .catch((err: any) => {\n this.log.error(`Could not initialize states: ${err?.message || 'no result'}`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n });\n\n this.log.info('requesting all objects');\n\n const objectsPromise = this.getObjectListAsync({ include_docs: true })\n .then(res => {\n if (!res?.rows) {\n this.log.error(`Could not initialize objects: no result`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n return;\n }\n this.objects = {};\n this.context.objects = this.objects;\n for (let i = 0; i < res.rows.length; i++) {\n const doc = res.rows[i]?.doc;\n if (!doc) {\n this.log.debug(`Got empty object for index ${i} (${res.rows[i].id})`);\n continue;\n }\n if (this.objects[doc._id] === undefined) {\n // If was already there, ignore\n this.objects[doc._id] = doc;\n }\n doc.type === 'enum' && this._enums.add(doc._id);\n\n // Collect all names\n this.addToNames(this.objects[doc._id]);\n }\n this.addGetProperty(this.objects);\n\n const systemConfig = this.objects['system.config'];\n this.password = systemConfig?.native?.javascriptPassword\n ? this.decrypt(systemConfig?.native.javascriptPassword)\n : '';\n\n // set language for debug messages\n if (systemConfig?.common?.language) {\n setLanguage(systemConfig.common.language);\n this.language = systemConfig.common.language;\n this.context.language = this.language as ioBroker.Languages;\n } else if (this.language) {\n setLanguage(this.language);\n this.context.language = this.language;\n }\n\n // try to use system coordinates\n if (this.config.useSystemGPS) {\n if (systemConfig?.common?.latitude || systemConfig?.common?.longitude) {\n this.config.latitude = systemConfig.common.latitude;\n this.config.longitude = systemConfig.common.longitude;\n } else if (this.latitude && this.longitude) {\n this.config.latitude = this.latitude;\n this.config.longitude = this.longitude;\n }\n }\n this.config.latitude = parseFloat(this.config.latitude as unknown as string);\n this.config.longitude = parseFloat(this.config.longitude as unknown as string);\n\n if (isNaN(this.config.latitude)) {\n this.log.warn(`Configured latitude is not a number - check (instance/system) configuration`);\n } else if (this.config.latitude < -90 || this.config.latitude > 90) {\n this.log.warn(\n `Configured latitude \"${this.config.latitude}\" is invalid - check (instance/system) configuration`,\n );\n }\n\n if (isNaN(this.config.longitude)) {\n this.log.warn(`Configured longitude is not a number - check (instance/system) configuration`);\n } else if (this.config.longitude < -180 || this.config.longitude > 180) {\n this.log.warn(\n `Configured longitude \"${this.config.longitude}\" is invalid - check (instance/system) configuration`,\n );\n }\n\n this.config.sunriseEvent ||= 'nightEnd';\n this.config.sunriseOffset ||= 0;\n this.config.sunriseLimitStart ||= '06:00';\n this.config.sunriseLimitEnd ||= '12:00';\n\n this.config.sunsetEvent ||= 'dusk';\n this.config.sunsetOffset ||= 0;\n this.config.sunsetLimitStart ||= '18:00';\n this.config.sunsetLimitEnd ||= '23:00';\n\n this.objectsInitDone = true;\n this.log.info('received all objects');\n })\n .catch((err: any) => {\n this.log.error(`Could not initialize objects: ${err?.message || 'no result'}`);\n this.terminate(EXIT_CODES.START_IMMEDIATELY_AFTER_STOP);\n });\n\n return Promise.all([statesPromise, objectsPromise]).then(() => {});\n }\n\n async createActiveObject(id: string, enabled: boolean): Promise {\n const idActive = `${this.namespace}.scriptEnabled.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n\n if (!this.objects[idActive]) {\n this.objects[idActive] = {\n _id: idActive,\n common: {\n name: `scriptEnabled.${id.substring(SCRIPT_CODE_MARKER.length)}`,\n desc: 'controls script activity',\n type: 'boolean',\n write: true,\n read: true,\n role: 'switch.active',\n },\n native: {\n script: id,\n },\n type: 'state',\n };\n try {\n await this.setForeignObjectAsync(idActive, this.objects[idActive]);\n const intermediateStateValue = this.prepareStateObjectSimple(idActive, enabled, true);\n await this.setForeignStateAsync(idActive, enabled, true);\n if (enabled && !this.config.subscribe) {\n this.interimStateValues[idActive] = intermediateStateValue;\n }\n } catch {\n // ignore\n }\n } else {\n const state = await this.getForeignStateAsync(idActive);\n if (state && state.val !== enabled) {\n const intermediateStateValue = this.prepareStateObjectSimple(idActive, enabled, true);\n await this.setForeignStateAsync(idActive, enabled, true);\n if (enabled && !this.config.subscribe) {\n this.interimStateValues[idActive] = intermediateStateValue;\n }\n }\n }\n }\n\n async createProblemObject(id: string): Promise {\n const idProblem = `${this.namespace}.scriptProblem.${id.substring(SCRIPT_CODE_MARKER.length)}`;\n\n if (!this.objects[idProblem]) {\n this.objects[idProblem] = {\n _id: idProblem,\n common: {\n name: `scriptProblem.${id.substring(SCRIPT_CODE_MARKER.length)}`,\n desc: 'Script has a problem',\n type: 'boolean',\n expert: true,\n write: false,\n read: true,\n role: 'indicator.error',\n },\n native: {\n script: id,\n },\n type: 'state',\n };\n try {\n await this.setForeignObjectAsync(idProblem, this.objects[idProblem]);\n await this.setForeignStateAsync(idProblem, false, true);\n } catch {\n // ignore\n }\n } else {\n const state = await this.getForeignStateAsync(idProblem);\n if (state && state.val !== false) {\n await this.setForeignStateAsync(idProblem, false, true);\n }\n }\n }\n\n addToNames(obj: ioBroker.Object): void {\n const id = obj._id;\n\n if (obj.common?.name) {\n let name = obj.common.name;\n if (name && typeof name === 'object') {\n name = name[getLanguage()] || name.en;\n }\n if (!name || typeof name !== 'string') {\n // TODO, take name in current language\n return;\n }\n\n if (!this.names[name]) {\n this.names[name] = id;\n } else {\n // convert to array\n if (!Array.isArray(this.names[name])) {\n this.names[name] = [this.names[name] as string];\n }\n\n (this.names[name] as string[]).push(id);\n }\n\n // keep reverse-map up to date for O(1) getName()\n this.nameById.set(id, name);\n }\n }\n\n removeFromNames(id: string): void {\n const n = this.getName(id);\n\n if (n) {\n if (Array.isArray(this.names[n])) {\n const arr = this.names[n];\n const pos = arr.indexOf(id);\n if (pos > -1) {\n arr.splice(pos, 1);\n if (arr.length === 1) {\n this.names[n] = arr[0];\n }\n }\n } else {\n delete this.names[n];\n }\n\n // keep reverse-map up to date for O(1) getName()\n this.nameById.delete(id);\n }\n }\n\n getName(id: string): string | null {\n return this.nameById.get(id) ?? null;\n }\n\n async installNpm(npmLib: string): Promise {\n return new Promise((resolve, reject) => {\n const path = __dirname;\n\n // Also, set the working directory (cwd) of the process instead of using --prefix\n // because that has ugly bugs on Windows\n const cmd = `npm install ${npmLib} --omit=dev`;\n this.log.info(`Installing ${npmLib} into ${__dirname} - cmd: ${cmd}`);\n\n // System call used for update of js-controller itself,\n // because during the installation the npm packet will be deleted too, but some files must be loaded even during the installation process.\n const child = this.mods.child_process.exec(cmd, {\n windowsHide: true,\n cwd: path,\n timeout: 120_000, // 2 minutes max – prevents infinite blocking\n });\n\n child.stdout?.on('data', buf => this.log.info(buf.toString('utf8')));\n\n child.stderr?.on('data', buf => this.log.error(buf.toString('utf8')));\n\n child.on('err', err => {\n this.log.error(`Cannot install ${npmLib}: ${err}`);\n reject(new Error(`Cannot install ${npmLib}: ${err}`));\n });\n child.on('error', err => {\n this.log.error(`Cannot install ${npmLib}: ${err}`);\n reject(new Error(`Cannot install ${npmLib}: ${err}`));\n });\n\n child.on('exit', (code: number /* , signal */) => {\n if (code) {\n this.log.error(`Cannot install ${npmLib}: ${code}`);\n reject(new Error(`Cannot install ${npmLib}: ${code}`));\n }\n // command succeeded\n resolve(code);\n });\n });\n }\n\n async installLibraries(): Promise {\n if (typeof this.config?.libraries !== 'string') {\n this.config.libraries = '';\n }\n\n const libraries: string[] = this.config.libraries\n .split(/[,;\\s]+/)\n .map(d => d.trim())\n .filter(d => d);\n\n this.log.debug(`Custom libraries in config: \"${this.config.libraries}\": ${JSON.stringify(libraries)}`);\n\n let installedNodeModules: string[] = [];\n const keepModules: string[] = [];\n\n // js-controller >= 6.x\n if (typeof this.listInstalledNodeModules === 'function') {\n installedNodeModules = await this.listInstalledNodeModules();\n\n this.log.debug(`Found installed libraries: ${JSON.stringify(installedNodeModules)}`);\n }\n\n for (const lib of libraries) {\n let depName = lib;\n let version = 'latest';\n\n if (depName.includes('@') && depName.lastIndexOf('@') > 0) {\n const parts = depName.split('@');\n version = parts.pop() ?? 'latest';\n depName = parts.join('@');\n }\n\n /** The real module name, because the dependency can be a URL too */\n let moduleName = depName;\n\n if (URL.canParse(depName)) {\n moduleName = await requestModuleNameByUrl(depName);\n\n this.log.debug(`Found custom library in config: \"${moduleName}@${version}\" (from ${depName})`);\n } else {\n this.log.debug(`Found custom library in config: \"${moduleName}@${version}\"`);\n }\n\n keepModules.push(moduleName);\n\n // js-controller >= 6.x\n if (typeof this.installNodeModule === 'function') {\n try {\n const result = await this.installNodeModule(depName, { version });\n if (result.success) {\n this.log.debug(`Installed custom library: \"${moduleName}@${version}\"`);\n\n const importedModule: any = await this.importNodeModule(moduleName);\n (this.mods as Record)[moduleName] = importedModule.default ?? importedModule;\n } else {\n this.log.warn(`Cannot install custom npm package \"${moduleName}@${version}\"`);\n }\n } catch (err: unknown) {\n this.log.warn(`Cannot install custom npm package \"${moduleName}@${version}\": ${err as Error}`);\n }\n } else if (!existsSync(`${__dirname}/node_modules/${depName}/package.json`)) {\n // js-controller < 6.x\n this.log.info(`Installing custom library (legacy mode): \"${lib}\"`);\n\n try {\n await this.installNpm(lib);\n this.log.info(`Installed custom npm package (legacy mode): \"${lib}\"`);\n } catch (err: any) {\n this.log.warn(`Cannot install custom npm package \"${lib}\" (legacy mode): ${err.toString()}`);\n }\n }\n }\n\n // js-controller >= 6.x\n if (typeof this.uninstallNodeModule === 'function') {\n for (const installedNodeModule of installedNodeModules) {\n if (!keepModules.includes(installedNodeModule)) {\n try {\n await this.uninstallNodeModule(installedNodeModule);\n\n this.log.info(`Removed custom npm package: \"${installedNodeModule}\"`);\n } catch (err: any) {\n this.log.warn(`Cannot remove custom npm package ${installedNodeModule}: ${err.toString()}`);\n }\n }\n }\n }\n }\n\n createVM(source: string, name: string, wrapAsync: boolean): false | JsScript {\n if (this.context.debugMode && name !== this.context.debugMode) {\n return false;\n }\n\n if (!this.context.debugMode) {\n const logSubscriptionsText =\n \"\\n;\\nlog(`registered ${__engine.__subscriptions} subscription${__engine.__subscriptions === 1 ? '' : 's'},\" +\n \" ${__engine.__schedules} schedule${__engine.__schedules === 1 ? '' : 's'},\" +\n \" ${__engine.__subscriptionsMessage} message${__engine.__subscriptionsMessage === 1 ? '' : 's'},\" +\n \" ${__engine.__subscriptionsLog} log${__engine.__subscriptionsLog === 1 ? '' : 's'}\" +\n \" and ${__engine.__subscriptionsFile} file subscription${__engine.__subscriptionsFile === 1 ? '' : 's'}`);\\n\";\n\n if (wrapAsync) {\n source = `(async () => {\\n${source}\\n${logSubscriptionsText}\\n})();`;\n } else {\n if (source.endsWith('export {};\\n')) {\n // If the source ends with \"export {};\" place the log subscriptions before it\n source = source.slice(0, -11); // remove \"export {};\\n\"\n source = `${source}\\n${logSubscriptionsText}\\nexport {};\\n`;\n } else {\n source = `${source}\\n${logSubscriptionsText}`;\n }\n }\n } else {\n if (wrapAsync) {\n source = `(async () => {debugger;\\n${source}\\n})();`;\n } else {\n source = `debugger;${source}`;\n }\n }\n\n try {\n const options: ScriptOptions = {\n filename: name,\n // displayErrors: true,\n // lineOffset: this.globalScriptLines\n };\n return {\n script: new Script(source, options),\n } as JsScript;\n } catch (err: unknown) {\n this.logError(name, `compile failed at`, err as Error);\n return false;\n }\n }\n\n execute(\n script: JsScript,\n name: string,\n engineType: ScriptType,\n verbose: boolean,\n debug: boolean,\n /**\n * Optional sink for the \"execute\" message API. When provided, the script runs in an\n * ephemeral diagnostic mode: every log line (the script's own `log()`/`console.*` output\n * AND all verbose internal operations) is forwarded to this collector instead of the\n * adapter log, and no `scriptProblem` state is written.\n */\n logCollector?: ((severity: ioBroker.LogLevel, message: string) => void) | null,\n ): void {\n script.intervals = new Set();\n script.timeouts = new Set();\n script.schedules = [];\n script.wizards = [];\n script.name = name;\n script.engineType = engineType;\n script._id = Math.floor(Math.random() * 0xffffffff);\n script.subscribes = {};\n script.subscribesFile = {};\n script.setStatePerMinuteCounter = 0;\n script.setStatePerMinuteProblemCounter = 0;\n if (!logCollector) {\n void this.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: false,\n ack: true,\n expire: 1000,\n });\n }\n\n const sandbox = sandBox(script, name, verbose, debug, this.context, logCollector);\n\n try {\n script.script.runInNewContext(sandbox, {\n filename: name,\n displayErrors: true,\n // lineOffset: this.globalScriptLines\n });\n } catch (err: unknown) {\n if (logCollector) {\n const e = err as Error;\n const stack = (e?.stack ? e.stack.toString() : String(err))\n .split('\\n')\n .map(line => this.fixLineNo(line))\n .join('\\n');\n logCollector('error', `Error by run: ${stack}`);\n } else {\n void this.setState(`scriptProblem.${name.substring(SCRIPT_CODE_MARKER.length)}`, {\n val: true,\n ack: true,\n c: 'execute',\n });\n this.logError(name, 'Error by run:', err as Error);\n }\n }\n }\n\n /**\n * Run an ad-hoc script sent via the `execute` message and return everything it logged.\n *\n * The script is compiled (JavaScript or TypeScript), executed with the same sandbox API as a\n * regular script (verbose by default, so internal operations like setState/subscribe are logged\n * too), left running for `timeout` ms to collect asynchronous output, and afterwards stopped and\n * fully cleaned up (timers, subscriptions, schedules). It is ephemeral: no script object or\n * states are created.\n *\n * Expected `message`:\n * - `source` / `code` (string, required) – the script source\n * - `engineType` (string, optional) – `TypeScript/ts` to compile as TypeScript, otherwise JavaScript\n * - `verbose` (boolean, optional, default `true`) – log internal sandbox operations\n * - `logLevel` (silly|debug|info|warn|error, optional, default `silly`) – minimum severity to return\n * - `timeout` (number ms, optional, default 5000, clamped to 0…60000) – collection window\n * - `maxLogs` (number, optional, default 5000) – cap on returned log lines\n */\n async executeScript(message: {\n source: string;\n engineType?: 'Javascript/js' | 'TypeScript/ts';\n timeout?: number | string;\n verbose?: boolean;\n logLevel?: ioBroker.LogLevel;\n maxLogs?: number | string;\n }): Promise<{\n ok: boolean;\n error?: string;\n engineType: 'Javascript/js' | 'TypeScript/ts';\n runtime: number;\n truncated: boolean;\n logs: { ts: number; severity: ioBroker.LogLevel; message: string }[];\n output: string;\n }> {\n const LEVELS: ioBroker.LogLevel[] = ['silly', 'debug', 'info', 'warn', 'error'];\n\n const source: unknown = message?.source ?? (message as any)?.code;\n const engineTypeStr = (message?.engineType || '').toString().toLowerCase();\n const isTypeScript = engineTypeStr.startsWith('typescript') || engineTypeStr === 'ts';\n const engineType: 'Javascript/js' | 'TypeScript/ts' = isTypeScript ? 'TypeScript/ts' : 'Javascript/js';\n\n const empty = (\n error: string,\n ): {\n ok: boolean;\n error: string;\n engineType: 'Javascript/js' | 'TypeScript/ts';\n runtime: number;\n truncated: boolean;\n logs: { ts: number; severity: ioBroker.LogLevel; message: string }[];\n output: string;\n } => ({ ok: false, error, engineType, runtime: 0, truncated: false, logs: [], output: '' });\n\n if (typeof source !== 'string' || !source.trim()) {\n return empty('No source code provided');\n }\n\n if (this.context.debugMode) {\n return empty('Cannot execute a script while a debug session is active');\n }\n\n let timeout = parseInt(message?.timeout as string, 10);\n if (isNaN(timeout)) {\n timeout = 5000;\n }\n timeout = Math.max(0, Math.min(timeout, 60000));\n\n const verbose = message?.verbose !== false;\n const minLevel: ioBroker.LogLevel = message?.logLevel\n ? LEVELS.includes(message?.logLevel)\n ? message.logLevel\n : 'silly'\n : 'silly';\n let maxLogs = parseInt(message?.maxLogs as string, 10);\n if (isNaN(maxLogs) || maxLogs <= 0) {\n maxLogs = 5000;\n }\n\n const name = `${SCRIPT_CODE_MARKER}__execute_${++this.executeCounter}`;\n\n // Compile the source the same way regular scripts are compiled\n let createdScript: JsScript | false;\n if (isTypeScript) {\n const transformedSource = transformScriptBeforeCompilation(source, false);\n const filename = scriptIdToTSFilename(name);\n let tsCompiled: CompileResult;\n try {\n tsCompiled = this.tsServer.compile(filename, transformedSource);\n } catch (err: unknown) {\n return empty(`TypeScript compilation failed: ${err as Error}`);\n }\n if (!tsCompiled.success) {\n const errors = tsCompiled.diagnostics.map(diag => diag.annotatedSource).join('\\n');\n return empty(`TypeScript compilation failed:\\n${errors}`);\n }\n createdScript = this.createVM(`${this.globalScript}\\n${tsCompiled.result || ''}`, name, false);\n } else {\n createdScript = this.createVM(`${this.globalScript}\\n${source}`, name, true);\n }\n\n if (!createdScript) {\n return empty('Compilation failed');\n }\n\n const logs: { ts: number; severity: ioBroker.LogLevel; message: string }[] = [];\n let truncated = false;\n const collector = (severity: ioBroker.LogLevel, msg: string): void => {\n if (logs.length >= maxLogs) {\n truncated = true;\n return;\n }\n logs.push({ ts: Date.now(), severity, message: msg });\n };\n this.logCollectors.push({ name, collector });\n this.updateLogSubscriptions();\n\n this.scripts[name] = createdScript;\n this.execute(createdScript, name, engineType, verbose, false, collector);\n\n // Let asynchronous output (timeouts, awaited code, triggered subscriptions) accumulate\n if (timeout) {\n await new Promise(resolve => setTimeout(resolve, timeout));\n }\n\n // Stop and clean up the ephemeral script (timers, subscriptions, schedules, …)\n await this.stopScript(name, true);\n\n const pos = this.logCollectors.findIndex(it => it.name === name);\n if (pos !== -1) {\n this.logCollectors.splice(pos, 1);\n }\n this.updateLogSubscriptions();\n\n const minIdx = LEVELS.indexOf(minLevel);\n const filtered = logs.filter(entry => {\n const idx = LEVELS.indexOf(entry.severity);\n return idx < 0 || idx >= minIdx;\n });\n\n return {\n ok: true,\n engineType,\n runtime: timeout,\n truncated,\n logs: filtered,\n output: filtered.map(entry => `[${entry.severity}] ${entry.message}`).join('\\n'),\n };\n }\n\n /**\n * Finds the index of `id` in a sorted array using binary search – O(log n).\n * Returns -1 if not found. Used instead of Array.indexOf on stateIds.\n */\n private binaryIndexOf(arr: string[], id: string): number {\n let lo = 0;\n let hi = arr.length - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n if (arr[mid] === id) {\n return mid;\n } else if (arr[mid] < id) {\n lo = mid + 1;\n } else {\n hi = mid - 1;\n }\n }\n return -1;\n }\n\n /**\n * Inserts `id` into the sorted `stateIds` array using binary search – O(log n).\n * Much faster than push() + sort() which is O(n log n) on every insertion.\n */\n private sortedInsert(id: string): void {\n let lo = 0;\n let hi = this.stateIds.length;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (this.stateIds[mid] < id) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n if (this.stateIds[lo] !== id) {\n this.stateIds.splice(lo, 0, id);\n }\n }\n\n unsubscribe(id: string | RegExp | string[]): void {\n if (!id) {\n this.log.warn('unsubscribe: empty name');\n return;\n }\n\n if (Array.isArray(id)) {\n id.forEach(sub => this.unsubscribe(sub));\n return;\n }\n\n if (id.constructor && id.constructor.name === 'RegExp') {\n // adapter.log.warn('unsubscribe: todo - process regexp');\n return;\n }\n\n if (typeof id !== 'string') {\n this.log.error(`unsubscribe: invalid type of id - ${typeof id}`);\n return;\n }\n const parts = id.split('.');\n const _adapter = `system.adapter.${parts[0]}.${parts[1]}`;\n if (this.objects[_adapter]?.common?.subscribable) {\n const a = `${parts[0]}.${parts[1]}`;\n const alive = `system.adapter.${a}.alive`;\n if (this.adapterSubs[alive]) {\n this.adapterSubs[alive].delete(id);\n if (!this.adapterSubs[alive].size) {\n delete this.adapterSubs[alive];\n }\n }\n this.sendTo(a, 'unsubscribe', id);\n }\n }\n\n // Analyze if logs are still required or not\n updateLogSubscriptions(): void {\n let found = '';\n\n if (this.logCollectors.length) {\n found = this.logCollectors[0].name;\n } else {\n // go through all scripts and check if some script still requires logs\n Object.keys(this.logSubscriptions).forEach(scriptName => {\n if (!this.logSubscriptions?.[scriptName] || !this.logSubscriptions[scriptName].length) {\n delete this.logSubscriptions[scriptName];\n } else {\n found = scriptName;\n }\n });\n }\n\n if (this.requireLog) {\n if (found && !this.logSubscribed) {\n this.logSubscribed = true;\n void this.requireLog(this.logSubscribed);\n this.log.info(`Subscribed to log messages (at least because of ${found})`);\n } else if (!found && this.logSubscribed) {\n this.logSubscribed = false;\n void this.requireLog(this.logSubscribed);\n this.log.info(`Unsubscribed from log messages (not found any subscribers)`);\n }\n }\n }\n\n async stopScript(name: string, silent?: boolean): Promise {\n if (!this.scripts[name]) {\n return false;\n }\n\n // `silent` is used for ephemeral scripts started via the \"execute\" message – they have no\n // `scriptEnabled` state and should not appear in the adapter log.\n if (!silent) {\n this.log.info(`${name}: Stopping script`);\n\n await this.setState(`scriptEnabled.${name.substring(SCRIPT_CODE_MARKER.length)}`, false, true);\n }\n\n if (this.messageBusHandlers[name]) {\n delete this.messageBusHandlers[name];\n }\n\n if (this.tempDirectories[name]) {\n try {\n this.mods.fs.rmSync(this.tempDirectories[name], { recursive: true });\n\n this.log.debug(`${name}: Removed temp directory: ${this.tempDirectories[name]}`);\n } catch {\n this.log.warn(`${name}: Unable to remove temp directory: ${this.tempDirectories[name]}`);\n }\n\n delete this.tempDirectories[name];\n }\n\n if (this.logSubscriptions[name]) {\n delete this.logSubscriptions[name];\n this.updateLogSubscriptions();\n }\n\n if (this.scripts[name]) {\n // Remove from subscriptions\n this.context.isEnums = false;\n if (this.config.subscribe) {\n // check all subscribed IDs\n Object.keys(this.scripts[name].subscribes).forEach(id => {\n if (this.subscribedPatterns[id]) {\n this.subscribedPatterns[id] -= this.scripts[name].subscribes[id];\n if (this.subscribedPatterns[id] <= 0) {\n this.unsubscribeForeignStates(id);\n delete this.subscribedPatterns[id];\n if (this.states[id]) {\n delete this.states[id];\n }\n }\n }\n });\n }\n\n for (let i = this.subscriptions.length - 1; i >= 0; i--) {\n if (this.subscriptions[i].name === name) {\n const sub = this.subscriptions.splice(i, 1)[0];\n // Also remove from the O(1) dispatch structures – shared helper to keep the\n // exact-id classification identical to the subscribe side in sandbox.ts\n if (sub) {\n removeFromDispatchIndex(this.context, sub);\n }\n if (sub?.pattern.id) {\n this.unsubscribe(sub.pattern.id);\n }\n } else {\n if (\n (!this.context.isEnums && this.subscriptions[i].pattern.enumName) ||\n this.subscriptions[i].pattern.enumId\n ) {\n this.context.isEnums = true;\n }\n }\n }\n\n // check all subscribed files\n Object.keys(this.scripts[name].subscribesFile).forEach(key => {\n if (this.subscribedPatternsFile[key]) {\n this.subscribedPatternsFile[key] -= this.scripts[name].subscribesFile[key];\n if (this.subscribedPatternsFile[key] <= 0) {\n const [id, file] = key.split('$%$');\n void this.unsubscribeForeignFiles(id, file);\n delete this.subscribedPatternsFile[key];\n }\n }\n });\n for (let i = this.subscriptionsFile.length - 1; i >= 0; i--) {\n if (this.subscriptionsFile[i].name === name) {\n this.subscriptionsFile.splice(i, 1);\n }\n }\n\n for (let i = this.subscriptionsObject.length - 1; i >= 0; i--) {\n if (this.subscriptionsObject[i].name === name) {\n const sub = this.subscriptionsObject.splice(i, 1)[0];\n if (sub) {\n // Remove from O(1) dispatch map\n const mapSubs = this.subscriptionsObjectMap.get(sub.pattern);\n if (mapSubs) {\n const pos = mapSubs.indexOf(sub);\n if (pos !== -1) {\n mapSubs.splice(pos, 1);\n }\n if (!mapSubs.length) {\n this.subscriptionsObjectMap.delete(sub.pattern);\n }\n }\n this.unsubscribeForeignObjects(sub.pattern);\n }\n }\n }\n\n // Stop all timeouts\n for (const t of this.scripts[name].timeouts) {\n clearTimeout(t);\n }\n // Stop all intervals\n for (const t of this.scripts[name].intervals) {\n clearInterval(t);\n }\n // Stop all delayed states (setStateDelayed timers) – O(1) via reverse-index\n const scriptStateIds = this.timersByScript.get(name);\n if (scriptStateIds) {\n for (const stateId of scriptStateIds) {\n if (this.timers[stateId]) {\n for (let i = this.timers[stateId].length - 1; i >= 0; i--) {\n if (this.timers[stateId][i].scriptName === name) {\n clearTimeout(this.timers[stateId][i].t);\n this.timers[stateId].splice(i, 1);\n }\n }\n if (!this.timers[stateId].length) {\n delete this.timers[stateId];\n }\n }\n }\n this.timersByScript.delete(name);\n }\n // Stop all scheduled jobs\n for (let i = 0; i < this.scripts[name].schedules.length; i++) {\n if (this.scripts[name].schedules[i]) {\n const _name = this.scripts[name].schedules[i].name;\n if (!this.mods.nodeSchedule.cancelJob(this.scripts[name].schedules[i])) {\n this.log.error(`${name}: Error by canceling scheduled job \"${_name}\"`);\n }\n }\n }\n\n // Stop all time wizards jobs\n if (this.context.scheduler) {\n for (let i = 0; i < this.scripts[name].wizards.length; i++) {\n if (this.scripts[name].wizards[i]) {\n this.context.scheduler.remove(this.scripts[name].wizards[i]);\n }\n }\n }\n\n // if callback for on stop\n if (typeof this.scripts[name].onStopCb === 'function') {\n this.scripts[name].onStopTimeout =\n parseInt(this.scripts[name].onStopTimeout as unknown as string, 10) || 1000;\n\n await new Promise(resolve => {\n let timeout: NodeJS.Timeout | null = setTimeout(() => {\n if (timeout) {\n timeout = null;\n resolve(true);\n }\n }, this.scripts[name].onStopTimeout);\n\n try {\n this.scripts[name].onStopCb(() => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n resolve(true);\n }\n });\n } catch (err: unknown) {\n this.log.error(`${name}: error in onStop callback: ${err as Error}`);\n }\n });\n }\n\n delete this.scripts[name];\n return true;\n }\n return false;\n }\n\n async prepareScript(obj: ioBroker.ScriptObject): Promise {\n if (obj?.common?.enabled && this.debugState.scriptName === obj._id) {\n const id = obj._id;\n await this.debugStop();\n this.log.info(`${id}: Debugging was stopped, because started in normal mode`);\n return this.prepareScript(obj);\n }\n\n if (\n obj?.common?.source &&\n (obj.common.enabled || this.context.debugMode === obj._id) &&\n obj.common.engine === `system.adapter.${this.namespace}`\n ) {\n const name = obj._id;\n\n if (this.password && obj.native?.protected) {\n obj.common.source = decryptText(this.password, obj.common.source);\n }\n\n const nameId = name.substring(SCRIPT_CODE_MARKER.length);\n if (!nameId.length || nameId.endsWith('.')) {\n this.log.error(`${name}: Script name \"${name}\" is invalid!`);\n return false;\n }\n const idActive = `scriptEnabled.${nameId}`;\n if (!this.config.subscribe) {\n this.interimStateValues[idActive] = this.prepareStateObjectSimple(\n `${this.namespace}.${idActive}`,\n true,\n true,\n );\n }\n await this.setState(idActive, true, true);\n obj.common.engineType ||= '' as 'TypeScript/ts' | 'Blockly' | 'Rules' | 'Javascript/js';\n\n if (\n obj.common.engineType.toLowerCase().startsWith('javascript') ||\n obj.common.engineType === 'Blockly' ||\n obj.common.engineType === 'Rules'\n ) {\n // Javascript\n this.log.info(`${name}: start JavaScript (${obj.common.engineType})`);\n\n let sourceFn = name;\n if (webstormDebug) {\n const fn = name.replace(/^script\\.js\\./, '').replace(/\\./g, '/');\n sourceFn = this.mods.path.join(webstormDebug, `${fn}.js`);\n }\n const createdScript = this.createVM(`${this.globalScript}\\n${obj.common.source}`, sourceFn, true);\n if (!createdScript) {\n return false;\n }\n this.scripts[name] = createdScript;\n this.execute(this.scripts[name], sourceFn, obj.common.engineType, obj.common.verbose, obj.common.debug);\n return true;\n }\n\n if (obj.common.engineType.toLowerCase().startsWith('typescript')) {\n // TypeScript\n this.log.info(`${name}: Compiling TypeScript source`);\n // The source code must be transformed in order to support top level await\n // and to force TypeScript to compile the code as a module\n const transformedSource = transformScriptBeforeCompilation(obj.common.source, false);\n // We need to hash both global declarations that are known until now\n // AND the script source, because changing either can change the compilation output\n const sourceHash = hashSource(tsSourceHashBase + this.globalDeclarations + transformedSource);\n\n let compiled: string;\n // If we already stored the compiled source code and the original source hash,\n // use the hash to check whether we can rely on the compiled source code or\n // if we need to compile it again\n if (\n typeof obj.common.compiled === 'string' &&\n typeof obj.common.sourceHash === 'string' &&\n sourceHash === obj.common.sourceHash\n ) {\n // We can reuse the stored source\n compiled = obj.common.compiled;\n this.log.info(`${name}: source code did not change, using cached compilation result...`);\n } else {\n // We don't have a hashed source code, or the original source changed, compile it\n const filename = scriptIdToTSFilename(name);\n let tsCompiled: CompileResult;\n try {\n tsCompiled = this.tsServer.compile(filename, transformedSource);\n } catch (err: unknown) {\n this.log.error(`${obj._id}: TypeScript compilation failed:\\n${err as Error}`);\n return false;\n }\n\n const errors = tsCompiled.diagnostics.map(diag => `${diag.annotatedSource}\\n`).join('\\n');\n\n if (tsCompiled.success) {\n if (errors.length > 0) {\n this.log.warn(`${name}: TypeScript compilation had errors:\\n${errors}`);\n } else {\n this.log.info(`${name}: TypeScript compilation successful`);\n }\n compiled = tsCompiled.result || '';\n\n // Store the compiled source and the original source hash, so we don't need to do the work again next time\n this.ignoreObjectChange.add(name); // ignore the next change and don't restart scripts\n await this.extendForeignObjectAsync(name, {\n common: {\n sourceHash,\n compiled,\n },\n });\n } else {\n this.log.error(`${name}: TypeScript compilation failed:\\n${errors}`);\n return false;\n }\n }\n const createdScript: JsScript | false = this.createVM(`${this.globalScript}\\n${compiled}`, name, false);\n if (!createdScript) {\n return false;\n }\n this.scripts[name] = createdScript;\n this.execute(this.scripts[name], name, obj.common.engineType, obj.common.verbose, obj.common.debug);\n return true;\n }\n\n this.log.warn(`${obj._id}: Unknown engine type: ${obj.common.engineType}`);\n return false;\n }\n\n let _name: string;\n if (obj?._id) {\n _name = obj._id;\n const scriptIdName = _name.substring(SCRIPT_CODE_MARKER.length);\n\n if (!scriptIdName.length || scriptIdName.endsWith('.')) {\n this.log.error(`${obj._id}: Script name \"${_name}\" is invalid!`);\n return false;\n }\n await this.setState(`scriptEnabled.${scriptIdName}`, false, true);\n }\n if (!obj) {\n this.log.error('Invalid script');\n }\n return false;\n }\n\n async loadScriptById(id: string): Promise {\n let obj: ioBroker.ScriptObject | null | undefined;\n try {\n obj = (await this.getForeignObjectAsync(id)) as ioBroker.ScriptObject | null | undefined;\n } catch (err: any) {\n this.log.error(`${id}: Invalid script: ${err}`);\n }\n if (!obj) {\n return false;\n }\n return this.loadScript(obj);\n }\n\n async loadScript(nameOrObject: ioBroker.ScriptObject): Promise {\n // create states for scripts\n await this.createActiveObject(nameOrObject._id, !!nameOrObject?.common?.enabled);\n await this.createProblemObject(nameOrObject._id);\n return this.prepareScript(nameOrObject);\n }\n\n getAstroEvent(\n date: Date,\n astroEvent: AstroEventName,\n start: string,\n end: string,\n offsetMinutes: number | string,\n isDayEnd: boolean,\n latitude: number,\n longitude: number,\n useNextDay?: boolean,\n ): Date {\n let ts: Date = this.mods.suncalc.getTimes(date, latitude, longitude)[astroEvent];\n\n if (!ts || ts.getTime().toString() === 'NaN') {\n ts = isDayEnd ? getNextTimeEvent(end, useNextDay) : getNextTimeEvent(start, useNextDay);\n }\n ts.setMilliseconds(0);\n ts.setMinutes(ts.getMinutes() + (parseInt(offsetMinutes as unknown as string, 10) || 0));\n\n const [timeHoursStart, timeMinutesStart] = start.split(':');\n const nTimeHoursStart = parseInt(timeHoursStart, 10);\n const nTimeMinutesStart = parseInt(timeMinutesStart, 10) || 0;\n\n if (\n ts.getHours() < nTimeHoursStart ||\n (ts.getHours() === nTimeHoursStart && ts.getMinutes() < nTimeMinutesStart)\n ) {\n ts = getNextTimeEvent(start, useNextDay);\n ts.setSeconds(0);\n }\n\n const [timeHoursEnd, timeMinutesEnd] = end.split(':');\n const nTimeHoursEnd = parseInt(timeHoursEnd, 10);\n const nTimeMinutesEnd = parseInt(timeMinutesEnd, 10) || 0;\n\n if (ts.getHours() > nTimeHoursEnd || (ts.getHours() === nTimeHoursEnd && ts.getMinutes() > nTimeMinutesEnd)) {\n ts = getNextTimeEvent(end, useNextDay);\n ts.setSeconds(0);\n }\n\n // if event in the past\n if (date > ts && useNextDay) {\n // take the next day\n ts.setDate(ts.getDate() + 1);\n }\n return ts;\n }\n\n async timeSchedule(): Promise {\n const now = new Date();\n let hours = now.getHours();\n const minutes = now.getMinutes();\n if (this.timeSettings.format12) {\n if (hours > 12) {\n hours -= 12;\n }\n }\n let sHours: string;\n if (this.timeSettings.leadingZeros) {\n sHours = hours.toString().padStart(2, '0');\n } else {\n sHours = hours.toString();\n }\n\n await this.setState('variables.dayTime', {\n val: `${sHours}:${minutes.toString().padStart(2, '0')}`,\n ack: true,\n });\n\n now.setMinutes(now.getMinutes() + 1);\n now.setSeconds(0);\n now.setMilliseconds(0);\n const interval = now.getTime() - Date.now();\n this.timeScheduleTimer = setTimeout(() => this.timeSchedule(), interval);\n }\n\n async dayTimeSchedules(): Promise {\n // Always clear any existing timer to prevent memory leaks on rapid re-scheduling\n if (this.dayScheduleTimer) {\n clearTimeout(this.dayScheduleTimer);\n this.dayScheduleTimer = null;\n }\n\n // get astrological event\n if (\n this.config.latitude === undefined ||\n this.config.longitude === undefined ||\n (this.config.latitude as unknown as string) === '' ||\n (this.config.longitude as unknown as string) === '' ||\n this.config.latitude === null ||\n this.config.longitude === null\n ) {\n this.log.error('Longitude or latitude does not set. Cannot use astro.');\n return;\n }\n\n // Calculate the next event today\n const todayDate = getAstroStartOfDay();\n const nowDate = new Date();\n\n const todaySunrise = this.getAstroEvent(\n todayDate,\n this.config.sunriseEvent,\n this.config.sunriseLimitStart,\n this.config.sunriseLimitEnd,\n this.config.sunriseOffset,\n false,\n this.config.latitude,\n this.config.longitude,\n );\n const todaySunset = this.getAstroEvent(\n todayDate,\n this.config.sunsetEvent,\n this.config.sunsetLimitStart,\n this.config.sunsetLimitEnd,\n this.config.sunsetOffset,\n true,\n this.config.latitude,\n this.config.longitude,\n );\n\n // Sunrise\n let sunriseTimeout = todaySunrise.getTime() - nowDate.getTime();\n if (sunriseTimeout < 0 || sunriseTimeout > 3600000) {\n sunriseTimeout = 3600000;\n }\n\n // Sunset\n let sunsetTimeout = todaySunset.getTime() - nowDate.getTime();\n if (sunsetTimeout < 0 || sunsetTimeout > 3600000) {\n sunsetTimeout = 3600000;\n }\n\n const isDayTime: ioBroker.State | null | undefined = await this.getStateAsync('variables.isDayTime');\n let isDay: boolean;\n if (sunriseTimeout < 5000) {\n isDay = true;\n } else if (sunsetTimeout < 5000) {\n isDay = false;\n } else {\n // check if in between\n isDay = nowDate.getTime() > todaySunrise.getTime() - 60000 && nowDate <= todaySunset;\n }\n\n const valDayTime = isDayTime ? !!isDayTime.val : false;\n if (valDayTime !== isDay || isDayTime === null) {\n await this.setState('variables.isDayTime', isDay, true);\n }\n\n const dayLightSaving: ioBroker.State | null | undefined =\n await this.getStateAsync('variables.isDaylightSaving');\n const isDayLightSaving = dstOffsetAtDate(nowDate) !== 0;\n const val = dayLightSaving ? !!dayLightSaving.val : false;\n\n if (val !== isDayLightSaving || dayLightSaving === null) {\n await this.setState('variables.isDaylightSaving', isDayLightSaving, true);\n }\n\n let nextTimeout = sunriseTimeout;\n if (sunriseTimeout > sunsetTimeout) {\n nextTimeout = sunsetTimeout;\n }\n nextTimeout = nextTimeout - 3000;\n if (nextTimeout < 3000) {\n nextTimeout = 3000;\n }\n\n this.dayScheduleTimer = setTimeout(() => this.dayTimeSchedules(), nextTimeout);\n }\n\n stopTimeSchedules(): void {\n if (this.dayScheduleTimer) {\n clearTimeout(this.dayScheduleTimer);\n this.dayScheduleTimer = null;\n }\n if (this.sunScheduleTimer) {\n clearTimeout(this.sunScheduleTimer);\n this.sunScheduleTimer = null;\n }\n if (this.timeScheduleTimer) {\n clearTimeout(this.timeScheduleTimer);\n this.timeScheduleTimer = null;\n }\n }\n\n async patchFont(): Promise {\n let stat: Stats | undefined;\n let dbFile: Buffer | undefined;\n let fileName = `${__dirname}/../admin/vs/base/browser/ui/codicons/codicon/codicon.ttf`;\n let jsonFileName = `${__dirname}/../admin/vsFont/codicon.json`;\n try {\n if (existsSync(fileName)) {\n stat = statSync(fileName);\n }\n if (!stat) {\n jsonFileName = `${__dirname}/admin/vsFont/codicon.json`;\n fileName = `${__dirname}/admin/vs/base/browser/ui/codicons/codicon/codicon.ttf`;\n if (existsSync(fileName)) {\n stat = statSync(fileName);\n }\n }\n const _dbFile = await this.readFileAsync(\n 'javascript.admin',\n `vs/base/browser/ui/codicons/codicon/codicon.ttf`,\n );\n if (_dbFile?.file) {\n dbFile = _dbFile.file as Buffer;\n }\n } catch {\n // ignore\n }\n\n if (stat?.size !== 73452 || dbFile?.byteLength !== 73452) {\n try {\n const buffer = Buffer.from(JSON.parse(readFileSync(jsonFileName).toString()), 'base64');\n\n const jszip = await import('jszip');\n const zip = await jszip.loadAsync(buffer);\n let data: ArrayBuffer | undefined;\n if (zip) {\n data = await zip.file('codicon.ttf')?.async('arraybuffer');\n if (data?.byteLength !== 73452) {\n this.log.error(`Cannot patch font: invalid font file!`);\n return false;\n }\n } else {\n this.log.error(`Cannot patch font: invalid font file!`);\n return false;\n }\n writeFileSync(fileName, Buffer.from(data));\n // upload this file\n await this.writeFileAsync(\n 'javascript.admin',\n 'vs/base/browser/ui/codicons/codicon/codicon.ttf',\n Buffer.from(data),\n );\n return true;\n } catch (err: unknown) {\n this.log.error(`Cannot patch font: ${err as Error}`);\n return false;\n }\n }\n return false;\n }\n\n async sunTimeSchedules(): Promise {\n if (this.config.createAstroStates) {\n if (!isNaN(this.config.longitude) && !isNaN(this.config.latitude)) {\n const calcDate = getAstroStartOfDay();\n\n const times = this.mods.suncalc.getTimes(calcDate, this.config.latitude, this.config.longitude);\n\n this.log.debug(`[sunTimeSchedules] Times: ${JSON.stringify(times)}`);\n\n for (const t in times) {\n try {\n const objId = `variables.astro.${t}`;\n\n await this.setObjectNotExistsAsync(objId, {\n type: 'state',\n common: {\n name: `Astro ${t}`,\n type: 'string',\n role: 'value',\n read: true,\n write: false,\n },\n native: {},\n });\n\n if (times[t] !== null && !isNaN(times[t].getTime())) {\n const timeFormatted = formatHoursMinutesSeconds(times[t]);\n await this.setState(objId, {\n val: timeFormatted,\n c: times[t].toISOString(),\n ack: true,\n });\n } else {\n await this.setState(objId, { val: null, c: 'n/a', ack: true, q: 0x01 });\n }\n } catch (err: unknown) {\n this.log.error(\n `[sunTimeSchedules] Unable to set state for astro time \"${t}\" (${times[t].getTime()}): ${err as Error}`,\n );\n }\n }\n\n const todayDate = new Date();\n todayDate.setHours(0);\n todayDate.setMinutes(0);\n todayDate.setSeconds(1);\n todayDate.setMilliseconds(0);\n todayDate.setDate(todayDate.getDate() + 1);\n\n this.log.debug(`[sunTimeSchedules] Next: ${todayDate.toISOString()}`);\n this.sunScheduleTimer = setTimeout(() => this.sunTimeSchedules(), todayDate.getTime() - Date.now());\n }\n } else {\n // remove astro states if disabled\n this.delObject('variables.astro', { recursive: true });\n }\n }\n\n /**\n * Redirects the virtual-tsc log output to the ioBroker log\n */\n tsLog = (message: string, severity?: ioBroker.LogLevel): void => {\n // shift the severities around, we don't care about the small details\n if (!severity || severity === 'info') {\n severity = 'debug';\n } else if (severity === 'debug') {\n // Don't spam build logs on Travis\n if (isCI) {\n return;\n }\n severity = 'silly';\n }\n\n if (this?.log) {\n this.log[severity](message);\n } else {\n console.log(`[${severity.toUpperCase()}] ${message}`);\n }\n };\n\n addGetProperty(object: Record): void {\n try {\n Object.defineProperty(object, 'get', {\n value: function (id: string): any {\n return this[id] || this[`${this.namespace}.${id}`];\n },\n enumerable: false,\n });\n } catch {\n console.error('Cannot install get property');\n }\n }\n\n /**\n * Add declarations for global scripts\n *\n * @param scriptID - The current script the declarations were generated from\n * @param declarations - Declarations from a script\n */\n provideDeclarationsForGlobalScript(scriptID: string, declarations: string): void {\n // Remember which declarations this global script had access to;\n // we need this so the editor doesn't show a duplicate identifier error\n if (this.globalDeclarations != null && this.globalDeclarations !== '') {\n this.knownGlobalDeclarationsByScript[scriptID] = this.globalDeclarations;\n }\n // and concatenate the global declarations for the next scripts\n this.globalDeclarations += `${declarations}\\n`;\n // remember all previously generated global declarations,\n // so global scripts can reference each other\n const globalDeclarationPath = 'global.d.ts';\n tsAmbient[globalDeclarationPath] = this.globalDeclarations;\n // make sure the next script compilation has access to the updated declarations\n this.tsServer.provideAmbientDeclarations({\n [globalDeclarationPath]: this.globalDeclarations,\n });\n jsDeclarationServer.provideAmbientDeclarations({\n [globalDeclarationPath]: this.globalDeclarations,\n });\n }\n\n fixLineNo(line: string): string {\n if (line.includes('javascript.js:')) {\n return line;\n }\n if (!/scripts?\\.js[.\\\\/]/.test(line)) {\n return line;\n }\n if (/:(\\d+):/.test(line)) {\n line = line.replace(\n /:(\\d+):/,\n (_$0, $1) => `:${$1 > this.globalScriptLines + 1 ? $1 - this.globalScriptLines - 1 : $1}:`,\n ); // one line for 'async function ()'\n } else {\n line = line.replace(\n /:(\\d+)$/,\n (_$0, $1) => `:${$1 > this.globalScriptLines + 1 ? $1 - this.globalScriptLines - 1 : $1}`,\n ); // one line for 'async function ()'\n }\n return line;\n }\n\n async debugStop(): Promise {\n if (this.debugState.child) {\n this.debugSendToInspector({ cmd: 'end' });\n this.debugState.endTimeout = setTimeout(() => {\n this.debugState.endTimeout = null;\n this.debugState.child?.kill('SIGTERM');\n }, 500);\n this.debugState.promiseOnEnd ||= Promise.resolve(0);\n } else {\n this.debugState.promiseOnEnd = Promise.resolve(0);\n }\n\n await this.debugState.promiseOnEnd;\n\n this.debugState.child = null;\n this.debugState.running = false;\n this.debugState.scriptName = '';\n if (this.debugState.endTimeout) {\n clearTimeout(this.debugState.endTimeout);\n this.debugState.endTimeout = null;\n }\n }\n\n async debugDisableScript(id: string | undefined): Promise {\n if (id) {\n const obj = this.objects[id];\n if (obj?.common?.enabled) {\n await this.extendForeignObjectAsync(obj._id, { common: { enabled: false } });\n }\n }\n }\n\n debugSendToInspector(message: any): void {\n if (this.debugState.child) {\n try {\n this.log.info(`send to debugger: ${message}`);\n this.debugState.child.send(message);\n } catch {\n void this.debugStop().then(() =>\n this.log.info(\n `${this.debugState.scriptName}: Debugging was stopped, because started in normal mode`,\n ),\n );\n }\n } else {\n this.log.error(`${this.debugState.scriptName}: Cannot send command to terminated inspector`);\n void this.setState(\n 'debug.from',\n JSON.stringify({ cmd: 'error', error: `Cannot send command to terminated inspector`, id: 1 }),\n true,\n );\n }\n }\n\n debugStart(data: { breakOnStart?: boolean; scriptName?: string; adapter?: string }): void {\n if (Date.now() - this.debugState.started < 1000) {\n console.log('Start ignored');\n return;\n }\n\n this.debugState.started = Date.now();\n // stop the script if it's running\n void this.debugDisableScript(data.scriptName)\n .then(() => this.debugStop())\n .then(() => {\n if (data.adapter) {\n this.debugState.adapterInstance = data.adapter;\n this.debugState.scriptName = '';\n } else {\n this.debugState.adapterInstance = '';\n this.debugState.scriptName = data.scriptName as string;\n }\n\n this.debugState.breakOnStart = data.breakOnStart;\n\n this.debugState.promiseOnEnd = new Promise(resolve => {\n const options: ForkOptions = {\n stdio: ['ignore', 'inherit', 'inherit', 'ipc'],\n //stdio: ['pipe', 'pipe', 'pipe', 'ipc']\n };\n const args: string[] = [];\n if (this.debugState.adapterInstance) {\n args.push('--breakOnStart');\n }\n\n this.debugState.child = fork(`${__dirname}/lib/inspect.js`, args, options);\n\n /*debugState.child.stdout.setEncoding('utf8');\n debugState.child.stderr.setEncoding('utf8');\n debugState.child.stdout.on('data', childPrint);\n debugState.child.stderr.on('data', childPrint);*/\n\n this.debugState.child?.on(\n 'message',\n (\n message:\n | string\n | {\n cmd: 'ready' | 'watched' | 'paused' | 'resumed' | 'log' | 'readyToDebug';\n severity?: string;\n text?: string;\n scriptId?: string;\n script?: string;\n },\n ) => {\n let oMessage: {\n cmd: 'ready' | 'watched' | 'paused' | 'resumed' | 'log' | 'readyToDebug';\n severity?: string;\n text?: string;\n scriptId?: string;\n script?: string;\n };\n if (typeof message === 'string') {\n try {\n oMessage = JSON.parse(message);\n } catch {\n return this.log.error(`Cannot parse message from inspector: ${message}`);\n }\n } else {\n oMessage = message;\n }\n\n if (oMessage.cmd !== 'ready') {\n void this.setState('debug.from', JSON.stringify(oMessage), true);\n }\n\n switch (oMessage.cmd) {\n case 'ready': {\n this.debugSendToInspector({\n cmd: 'start',\n scriptName: this.debugState.scriptName,\n adapterInstance: this.debugState.adapterInstance,\n instance: this.instance,\n });\n break;\n }\n\n case 'watched': {\n //console.log(`WATCHED: ${JSON.stringify(oMessage)}`);\n break;\n }\n\n case 'paused': {\n this.debugState.paused = true;\n console.log(`host: PAUSED`);\n break;\n }\n\n case 'resumed': {\n this.debugState.paused = false;\n //console.log(`STARTED`);\n break;\n }\n\n case 'log': {\n console.log(`[${oMessage.severity}] ${oMessage.text}`);\n break;\n }\n\n case 'readyToDebug': {\n console.log(\n `host: readyToDebug (set breakpoints): [${oMessage.scriptId}] ${oMessage.script}`,\n );\n break;\n }\n }\n },\n );\n this.debugState.child?.on('error', error => {\n this.log.error(`Cannot start inspector: ${error}`);\n void this.setState('debug.from', JSON.stringify({ cmd: 'error', error }), true);\n });\n\n this.debugState.child?.on('exit', async (code: number): Promise => {\n if (code) {\n await this.setState(\n 'debug.from',\n JSON.stringify({ cmd: 'error', error: `invalid response code: ${code}` }),\n true,\n );\n }\n await this.setState('debug.from', JSON.stringify({ cmd: 'debugStopped', code }), true);\n this.debugState.child = null;\n resolve(code);\n });\n });\n });\n }\n}\n\nfunction patternMatching(\n event: EventObj,\n patternFunctions: PatternEventCompareFunction[] & { logic?: 'and' | 'or' },\n): boolean {\n const logic = patternFunctions.logic ?? 'and';\n for (let i = 0, len = patternFunctions.length; i < len; i++) {\n const result = patternFunctions[i](event);\n if (logic === 'and' && !result) {\n return false; // short-circuit AND – one false is enough\n }\n if (logic === 'or' && result) {\n return true; // short-circuit OR – one true is enough\n }\n }\n // AND: all passed → true; OR: none matched → false\n return logic === 'and';\n}\n\n// If started as allInOne mode => return function to create an instance\nif (require.main !== module) {\n // Export the constructor in compact mode\n module.exports = (options: Partial | undefined) => new JavaScript(options);\n} else {\n // otherwise start the instance directly\n (() => new JavaScript())();\n}\n"]} \ No newline at end of file diff --git a/io-package.json b/io-package.json index 6532c4f5..805267ed 100644 --- a/io-package.json +++ b/io-package.json @@ -1,7 +1,7 @@ { "common": { "name": "javascript", - "version": "9.3.1", + "version": "10.0.0", "blockedVersions": [ "8.0.0", "8.0.1" @@ -40,6 +40,19 @@ "Matthias Kleine " ], "news": { + "10.0.0": { + "en": "Typescript 6 support\nGUI was migrated to React 19 and MUI 9\nShowed host name in the instance selection dialog", + "de": "TypeScript 6-Unterstützung\nDie Benutzeroberfläche wurde auf React 19 und MUI 9 migriert.\nDer Hostname wurde im Instanzauswahldialog angezeigt.", + "ru": "Поддержка TypeScript 6\nГрафический интерфейс пользователя был переведён на React 19 и MUI 9.\nВ диалоговом окне выбора экземпляра отобразилось имя хоста.", + "pt": "Suporte para Typescript 6\nA interface gráfica foi migrada para React 19 e MUI 9.\nExibiu o nome do host na caixa de diálogo de seleção de instâncias.", + "nl": "Ondersteuning voor TypeScript 6\nDe GUI is gemigreerd naar React 19 en MUI 9.\nDe hostnaam werd weergegeven in het dialoogvenster voor instantieselectie.", + "fr": "Prise en charge de TypeScript 6\nL'interface graphique a été migrée vers React 19 et MUI 9.\nLe nom de l'hôte s'affichait dans la boîte de dialogue de sélection d'instance.", + "it": "Supporto per Typescript 6\nL'interfaccia grafica è stata migrata a React 19 e MUI 9.\nIl nome host è stato visualizzato nella finestra di dialogo di selezione dell'istanza.", + "es": "Compatibilidad con TypeScript 6\nLa interfaz gráfica de usuario (GUI) se migró a React 19 y MUI 9.\nSe mostró el nombre del host en el cuadro de diálogo de selección de instancia.", + "pl": "Obsługa TypeScript 6\nInterfejs graficzny użytkownika został przeniesiony do React 19 i MUI 9\nWyświetlono nazwę hosta w oknie dialogowym wyboru instancji", + "uk": "Підтримка Typescript 6\nГрафічний інтерфейс перенесено на React 19 та MUI 9\nІм'я хоста відображалося в діалоговому вікні вибору екземпляра", + "zh-cn": "支持 TypeScript 6\nGUI 已迁移至 React 19 和 MUI 9。\n在实例选择对话框中显示主机名" + }, "9.3.1": { "en": "Added the possibility to execute one-way scripts without saving it", "de": "Es wurde die Möglichkeit hinzugefügt, Einwegskripte auszuführen, ohne sie zu speichern.", @@ -117,19 +130,6 @@ "pl": "Zob. poprzednie wpisy dotyczące zmiennych", "uk": "Переглянути попередні записи змін", "zh-cn": "参见上一个更改日志条目" - }, - "9.2.0": { - "en": "AI Chat panel with multi-provider support, tool calling, inline completions, and smart-apply\nFix: prevent duplicate 'Stopping script' log when script is not running\nFix: only restart scripts on the instance that owns them\nAdded OID display mode toggle for Blockly editor: 4 display modes (Name, Name path, State ID, Full ID) with toolbar dropdown, context menu, optional object icons, and translations in 11 languages\nNode 25 compatibility: replaced deprecated rmdirSync with rmSync in build tasks\nAdded support for plain import/export\nCorrecting error in configuration\ndisallow writing into node_modules folder by scripts\nCorrecting start of the script more than one time if restart is triggered\nAll delayed writings are stopped by the script stop\nAdded check if a script has been modified by another user/window\nMake the instance number more prominent", - "de": "AI Chat-Panel mit Multi-Provider-Unterstützung, Werkzeuganruf, Inline-Vervollständigungen und intelligent-apply\nFix: verhindern Sie doppeltes 'Stopping script'-Log, wenn Skript nicht läuft\nFix: nur Skripte auf der Instanz neu starten, die sie besitzt\nOID-Anzeigemodus für Blockly Editor hinzugefügt: 4 Anzeigemodi (Name, Name Pfad, State ID, Full ID) mit Symbolleiste Dropdown, Kontextmenü, optionale Objektsymbole und Übersetzungen in 11 Sprachen\nNode 25 Kompatibilität: ersetzt deprecated rmdirSync mit rmSync in Build Aufgaben\nUnterstützung für den einfachen Import/Export\nFehler in der Konfiguration korrigieren\ndeaktivieren sie das schreiben in node modules ordner durch skripte\nKorrektur des Starts des Skripts mehr als ein Mal, wenn der Neustart ausgelöst wird\nAlle verzögerten Schriften werden durch den Skriptstop gestoppt\nCheck hinzugefügt, wenn ein Skript von einem anderen Benutzer/Fenster geändert wurde\nMachen Sie die Instanz Nummer prominenter", - "ru": "Панель AI Chat с поддержкой нескольких провайдеров, вызовом инструментов, встроенными завершениями и интеллектуальным приложением\nИсправление: предотвращение дублирования журнала «Stopping script», когда сценарий не работает\nИсправление: перезагружайте сценарии только на том экземпляре, которым они принадлежат\nДобавлено переключение режима отображения OID для редактора Blockly: 4 режима отображения (имя, путь имени, идентификатор состояния, полный идентификатор) с выпадением панели инструментов, контекстным меню, дополнительными значками объектов и переводами на 11 языков\nСовместимость Node 25: замена устаревшего rmdirSync на rmSync в задачах сборки\nДобавлена поддержка простого импорта/экспорта\nИсправление ошибок в конфигурации\nзапретить запись в папку node modules по скриптам\nКорректировка начала сценария более одного раза при запуске перезапуска\nВсе задержки в написании остановлены остановкой сценария\nДобавлена проверка, был ли скрипт изменен другим пользователем/окном\nСделайте число экземпляров более заметным", - "pt": "Painel de bate-papo IA com suporte multifornecedor, chamada de ferramentas, completações em linha e aplicação inteligente\nCorrigir: evitar o registo duplicado do 'Script de paragem' quando o programa não estiver em execução\nCorrigir: apenas reiniciar scripts na instância que os possui\nAdicionado modo de exibição OID para o editor Blockly: 4 modos de exibição (nome, localização do nome, ID de estado, ID completo) com dropdown da barra de ferramentas, menu de contexto, ícones de objetos opcionais e traduções em 11 idiomas\nCompatibilidade node 25: substituiu rmdirSync desactualizado com rmSync em tarefas de compilação\nAdicionado apoio à importação/exportação simples\nCorrigindo erro na configuração\nnão permitir a escrita na pasta nó módulo por scripts\nCorrigindo o início do script mais de uma vez se o reinício for acionado\nTodos os escritos atrasados são parados pelo script stop\nAdicionado verificar se um script foi modificado por outro usuário/janela\nTornar o número da instância mais proeminente", - "nl": "AI Chat paneel met multi-provider ondersteuning, tool calling, inline voltooiingen, en slimme toepassing\nFix: voorkomt dupliceren 'Stopping script' log wanneer script niet draait\nFix: herstart alleen scripts op de instantie die ze bezit\nOID-displaymodus toegevoegd aan de Blockly-editor: 4 weergavemodi (Naam, Naam pad, Staat ID, Volledige ID) met werkbalk dropdown, contextmenu, optionele objectpictogrammen, en vertalingen in 11 talen\nNode 25 compatibiliteit: vervangen van verouderde rmdirSync met rmSync in bouwtaken\nToegevoegde steun voor gewone import/export\nFout in configuratie corrigeren\nschrijven in node modules map door scripts niet toestaan\nCorrigeren van de start van het script meer dan één keer als herstart wordt gestart\nAlle vertraagde geschriften worden gestopt door het script stop\nToegevoegd controleren of een script is gewijzigd door een andere gebruiker/venster\nMaak het instantienummer prominenter", - "fr": "Panneau de discussion AI avec support multi-fournisseurs, appels d'outils, finitions en ligne, et application intelligente\nCorrection: empêcher le log 'Stopping script' lorsque le script ne fonctionne pas\nCorrection : redémarrer uniquement les scripts sur l'instance qui les possède\nAjout du mode d'affichage OID pour l'éditeur Blockly : 4 modes d'affichage (nom, chemin de nom, identifiant d'État, identifiant complet) avec la barre d'outils déroulante, le menu contextuel, les icônes d'objets optionnels et les traductions en 11 langues\nCompatibilité Node 25: remplacé rmdirSync déprécié par rmSync dans les tâches de construction\nAjout d'un soutien pour les importations/exportations simples\nCorrection d'une erreur de configuration\ninterdire l'écriture dans le dossier node modules par scripts\nCorrection du début du script plus d'une fois si le redémarrage est déclenché\nToutes les écritures retardées sont arrêtées par le script stop\nVérifiez si un script a été modifié par un autre utilisateur/fenêtre\nRendre le numéro d'instance plus visible", - "it": "Pannello di chat AI con supporto multiprovider, chiamata degli strumenti, completamento in linea e applicazione intelligente\nFix: impedire il registro duplicato 'Stopping script' quando lo script non è in esecuzione\nFix: riavviare solo gli script sull'istanza che li possiede\nAggiunta la modalità di visualizzazione OID per l'editor Blockly: 4 modalità di visualizzazione (nome, percorso del nome, ID di stato, ID completo) con menu della barra degli strumenti, menu di contesto, icone degli oggetti opzionali e traduzioni in 11 lingue\nCompatibilità nodo 25: sostituito rmdirSync deprecato con rmSync in attività di costruzione\nAggiunto supporto per l'importazione/esportazione normale\nCorreggere l'errore nella configurazione\ndisallow la scrittura nella cartella node modules da script\nCorreggere l'inizio dello script più di una volta se il riavvio viene attivato\nTutti gli scritti ritardati sono fermati dalla fermata dello script\nAggiunto verificare se uno script è stato modificato da un altro utente/finestra\nRendere il numero di istanza più prominente", - "es": "Panel de chat AI con soporte multiprovidente, llamada de herramientas, finalizaciones en línea y aplicación inteligente\nFijación: previene el registro duplicado de 'Stopping script' cuando el script no se ejecuta\nFijar: sólo reiniciar scripts en el caso que los posee\nModo de visualización OID añadido para editor Bloquely: 4 modos de visualización (Nombre, Camino de Nombre, ID de Estado, ID completo) con barra de herramientas desplegable, menú contextual, iconos de objetos opcionales, y traducciones en 11 idiomas\nNodo 25 compatibilidad: reemplazado rmdirSync deprecated con rmSync en tareas de construcción\nApoyo añadido a la importación/exportación simples\nError de corrección en la configuración\nnode modules carpeta por scripts\nComienzo correcto del script más de una vez si se activa el reinicio\nTodos los escritos retrasados se detienen por la parada del script\nVerificación agregada si un script ha sido modificado por otro usuario/ventana\nHacer el número de instancia más prominente", - "pl": "Panel AI Chat z obsługą wielu dostawców, wywołaniem narzędzi, zakończeniami inline i smart- aplikacji\nFix: zapobiec duplikatowi 'Stopling script' log, gdy skrypt nie jest uruchomiony\nFix: restart skryptów tylko na instancji, która jest ich właścicielem\nDodano tryb wyświetlania OID dla edytora Blockly: 4 tryby wyświetlania (nazwa, ścieżka nazw, identyfikator państwa, pełny ID) z rozwijanym paskiem narzędzi, menu kontekstowe, opcjonalne ikony obiektów i tłumaczenia w 11 językach\nKompatybilność węzła 25: zastąpiono przestarzały rmdirSync rmSync w zadaniach budowlanych\nDodano wsparcie dla zwykłego importu / eksportu\nKorekta błędu w konfiguracji\nwyłączenie zapisu do folderu node _ modules przez skrypty\nKorekta początku skryptu więcej niż jeden raz, jeśli zostanie uruchomiony restart\nWszystkie opóźnione pisma są zatrzymane przez skrypt stop\nDodano sprawdzenie, czy skrypt został zmodyfikowany przez innego użytkownika / okno\nUwydatnić numer instancji", - "uk": "AI чат панелі з багатопрофільною підтримкою, викликом інструментів, вбудованими завершеннями та смарт-додатком\nВиправлення: запобігання дублікатів журналу \"Стопування\", коли скрипт не працює\nВиправлення: тільки перезавантажити скрипти на екземплярі, які володіють ними\nДодано OID відображення режиму для Blockly Editor: 4 режими відображення (Ім'я, шлях імен, державний ідентифікатор, повний ідентифікатор) з випаданням панелі інструментів, контекстне меню, додаткові іконки об'єкта та переклади на 11 мовах\nNode 25 сумісність: заміщена депресована rmdirSync з rmSync в задачах збирання\nДодано підтримку простого імпорту/експорту\nВиправлення помилки в конфігурації\ndisallow написання в папку node modules за скриптами\nВиправлення запуску скрипта більше одного разу, якщо запускається перезапуск\nВсі затримані письмові записи зупиняються на скрипті зупинки\nДодано перевірку, якщо скрипт був модифікований іншим користувачем/window\nЗробіть номер екземпляра більш видатним", - "zh-cn": "AI Chat 面板,包含多提供者支持,工具调用,内置完成,以及智能应用\n修正: 当脚本未运行时, 防止复制“ 停止脚本” 日志\n修补: 只重新启动拥有脚本的实例\n为 Blockly 编辑器添加了 OID 显示模式切换: 4 个显示模式( Name, Name, Name path, State ID, Full ID) 工具栏下拉, 上下文菜单, 可选对象图标, 以及 11 种语言的翻译\n节点 25 兼容性: 在构建任务中用 rmSync 替换已贬值的 rmdirSync\n添加对纯导入/导出的支持\n正在更正配置错误\n不允许按脚本写入节点模块文件夹\n如果重新启动, 更正脚本的起始时间不止一次\n脚本停止了所有延迟的写作\n添加检查一个脚本是否已被另一个用户/窗口修改\n让实例数字更加突出" } }, "platform": "Javascript/Node.js", diff --git a/package-lock.json b/package-lock.json index ec7d2f36..66a83140 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,9840 +1,10165 @@ { - "name": "iobroker.javascript", - "version": "9.3.1", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "iobroker.javascript", - "version": "9.3.1", - "license": "MIT", - "dependencies": { - "@iobroker/adapter-core": "^3.4.3", - "@iobroker/types": "^7.2.2", - "@types/node": "^22.19.43", - "axios": "^1.19.0", - "jsonata": "^2.2.2", - "jszip": "^3.10.1", - "node-inspect": "^2.0.0", - "node-schedule": "2.1.1", - "nodemailer": "^9.0.3", - "prettier": "^3.9.6", - "promisify-child-process": "^5.0.1", - "semver": "^7.8.5", - "suncalc2": "^1.8.1", - "typescript": "~6.0.3", - "virtual-tsc": "^0.6.2", - "wake_on_lan": "^1.0.0" - }, - "devDependencies": { - "@alcalzone/release-script": "^5.2.1", - "@alcalzone/release-script-plugin-iobroker": "^5.2.0", - "@alcalzone/release-script-plugin-license": "^5.2.2", - "@iobroker/adapter-dev": "^1.5.0", - "@iobroker/build-tools": "^3.0.1", - "@iobroker/eslint-config": "^2.3.4", - "@iobroker/plugin-sentry": "^3.1.2", - "@iobroker/testing": "^5.3.0", - "@types/node-schedule": "^2.1.8", - "@types/nodemailer": "^8.0.1", - "@types/request": "^2.48.13", - "@types/suncalc": "^1.9.2", - "alcalzone-shared": "^5.0.0", - "timekeeper": "^2.3.1" - }, - "engines": { - "node": ">=22" - } - }, - "node_modules/@alcalzone/esbuild-register": { - "version": "2.5.1-1", - "resolved": "https://registry.npmjs.org/@alcalzone/esbuild-register/-/esbuild-register-2.5.1-1.tgz", - "integrity": "sha512-u19/K/ZaiWQhYIQZeF2FImUeJDiMD4i2h7qPdU0HVFCxoQynye59N4oy6EvjxeXaxLnGkppcb5KKeiYD4cT1iQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.11.5", - "jsonc-parser": "^3.0.0" - } - }, - "node_modules/@alcalzone/esbuild-register/node_modules/esbuild": { - "version": "0.11.23", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.11.23.tgz", - "integrity": "sha512-iaiZZ9vUF5wJV8ob1tl+5aJTrwDczlvGP0JoMmnpC2B0ppiMCu8n8gmy5ZTGl5bcG081XBVn+U+jP+mPFm5T5Q==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - } - }, - "node_modules/@alcalzone/pak": { - "version": "0.12.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ky": "^1.14.3", - "nano-spawn": "^2.0.0", - "semver": "^7.7.4", - "tiny-glob": "^0.2.9" - }, - "engines": { - "node": ">= 20" - } - }, - "node_modules/@alcalzone/release-script": { - "version": "5.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@alcalzone/release-script-core": "5.2.0", - "@alcalzone/release-script-plugin-changelog": "5.2.1", - "@alcalzone/release-script-plugin-exec": "5.2.0", - "@alcalzone/release-script-plugin-git": "5.2.0", - "@alcalzone/release-script-plugin-package": "5.2.0", - "@alcalzone/release-script-plugin-version": "5.2.0", - "alcalzone-shared": "^5.0.0", - "enquirer": "^2.3.6", - "picocolors": "1.0.0", - "semver": "^7.7.2", - "source-map-support": "^0.5.21", - "yargs": "^17.4.1" - }, - "bin": { - "release-script": "bin/release.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@alcalzone/release-script-core": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "execa": "^5.1.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@alcalzone/release-script-plugin-changelog": { - "version": "5.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@alcalzone/release-script-core": "5.2.0", - "alcalzone-shared": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@alcalzone/release-script-plugin-exec": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@alcalzone/release-script-core": "5.2.0", - "alcalzone-shared": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@alcalzone/release-script-plugin-git": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@alcalzone/release-script-core": "5.2.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@alcalzone/release-script-plugin-iobroker": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@alcalzone/release-script-core": "5.2.0", - "alcalzone-shared": "^5.0.0", - "ky": "^1.7.5", - "semver": "^7.7.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@alcalzone/release-script-plugin-license": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-license/-/release-script-plugin-license-5.2.2.tgz", - "integrity": "sha512-dFvG/QuZWxZ+hRu1nGcqtPHnwnLiPQgBvfRu/NvkYMug7MzYN7SSFN9JkIKNqbxzW/GWjSgrPrrB2bQ9vFYKwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@alcalzone/release-script-core": "5.2.0", - "tiny-glob": "^0.2.9" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@alcalzone/release-script-plugin-package": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@alcalzone/pak": "^0.12.0", - "@alcalzone/release-script-core": "5.2.0", - "alcalzone-shared": "^5.0.0", - "semver": "^7.7.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@alcalzone/release-script-plugin-version": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@alcalzone/release-script-core": "5.2.0", - "alcalzone-shared": "^5.0.0", - "semver": "^7.7.2", - "tiny-glob": "^0.2.9" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@apm-js-collab/code-transformer": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/@apm-js-collab/code-transformer/-/code-transformer-0.18.1.tgz", - "integrity": "sha512-u1Hb6bHjWtkSpiprwVP6YaHC1DTN4RAU3zYkUDUe7WMnJwdyU1pwTL9dFKiSJB9IiLue/EQovmyx6xhU7FFtAQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/estree": "^1.0.8", - "astring": "^1.9.0", - "esquery": "^1.7.0", - "meriyah": "^6.1.4", - "semifies": "^1.0.0", - "source-map": "^0.6.0" - }, - "bin": { - "code-transformer": "cli.js" - } - }, - "node_modules/@apm-js-collab/code-transformer-bundler-plugins": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/@apm-js-collab/code-transformer-bundler-plugins/-/code-transformer-bundler-plugins-0.7.3.tgz", - "integrity": "sha512-qNbPwuMZ8f5ZuGj/ttPeB7a6C/S1bB6tNYaEL5vNiRKydSAxa4AU0gxCWgaP4fVju+AuwhcumSFjrEcGF9Dv7Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@apm-js-collab/code-transformer": "^0.18.0", - "es-module-lexer": "^2.1.0", - "magic-string": "^0.30.21", - "module-details-from-path": "^1.0.4" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@apm-js-collab/tracing-hooks": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@apm-js-collab/tracing-hooks/-/tracing-hooks-0.13.0.tgz", - "integrity": "sha512-mTvWz9rnQwx1U3h0XPTHaX7bgfkpipLLTQyjlC2cdhQpQEuoLT0AGzoydeoq2NxfEVv6fWOOETcSbb2nptleyw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@apm-js-collab/code-transformer": "^0.18.0", - "debug": "^4.4.1", - "module-details-from-path": "^1.0.4" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", - "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.29.7", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/code-frame/node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/@babel/compat-data": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", - "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", - "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.29.7", - "@babel/generator": "^7.29.7", - "@babel/helper-compilation-targets": "^7.29.7", - "@babel/helper-module-transforms": "^7.29.7", - "@babel/helpers": "^7.29.7", - "@babel/parser": "^7.29.7", - "@babel/template": "^7.29.7", - "@babel/traverse": "^7.29.7", - "@babel/types": "^7.29.7", - "@jridgewell/remapping": "^2.3.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz", - "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.29.7", - "@babel/types": "^7.29.7", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", - "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.29.7", - "@babel/helper-validator-option": "^7.29.7", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-globals": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", - "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", - "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.29.7", - "@babel/types": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", - "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.29.7", - "@babel/helper-validator-identifier": "^7.29.7", - "@babel/traverse": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", - "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", - "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", - "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", - "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.29.7", - "@babel/types": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", - "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.29.7" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz", - "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", - "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.7", - "@babel/parser": "^7.29.7", - "@babel/types": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz", - "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.7", - "@babel/generator": "^7.29.7", - "@babel/helper-globals": "^7.29.7", - "@babel/parser": "^7.29.7", - "@babel/template": "^7.29.7", - "@babel/types": "^7.29.7", - "debug": "^4.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", - "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.29.7", - "@babel/helper-validator-identifier": "^7.29.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@colors/colors": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", - "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", - "license": "MIT", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@dabh/diagnostics": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.8.tgz", - "integrity": "sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==", - "license": "MIT", - "dependencies": { - "@so-ric/colorspace": "^1.1.6", - "enabled": "2.0.x", - "kuler": "^2.0.0" - } - }, - "node_modules/@datalust/winston-seq": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@datalust/winston-seq/-/winston-seq-1.0.2.tgz", - "integrity": "sha512-TxmBkN/26j+8rC/yshm9t29DKSPN69cQuGyvRmufvhPQIU2SnDlQLZmEGsPL3vQYWoBTTgu7+foYs+HmgeOl/g==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "seq-logging": "^1.1.1", - "winston-transport": "^4.4.2" - }, - "peerDependencies": { - "winston": "^3.0.0" - } - }, - "node_modules/@es-joy/jsdoccomment": { - "version": "0.86.0", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.86.0.tgz", - "integrity": "sha512-ukZmRQ81WiTpDWO6D/cTBM7XbrNtutHKvAVnZN/8pldAwLoJArGOvkNyxPTBGsPjsoaQBJxlH+tE2TNA/92Qgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.8", - "@typescript-eslint/types": "^8.58.0", - "comment-parser": "1.4.6", - "esquery": "^1.7.0", - "jsdoc-type-pratt-parser": "~7.2.0" - }, - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - } - }, - "node_modules/@es-joy/resolve.exports": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@es-joy/resolve.exports/-/resolve.exports-1.2.0.tgz", - "integrity": "sha512-Q9hjxWI5xBM+qW2enxfe8wDKdFWMfd0Z29k5ZJnuBqD/CasY5Zryj09aCA6owbGATWz+39p5uIdaHXpopOcG8g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", - "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", - "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", - "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", - "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", - "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", - "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", - "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", - "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", - "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", - "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", - "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", - "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", - "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", - "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", - "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", - "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", - "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", - "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", - "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", - "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", - "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", - "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", - "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", - "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", - "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", - "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.10.1.tgz", - "integrity": "sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", - "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/config-array": { - "version": "0.21.2", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", - "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.7", - "debug": "^4.3.1", - "minimatch": "^3.1.5" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/config-array/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@eslint/config-array/node_modules/brace-expansion": { - "version": "1.1.17", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.17.tgz", - "integrity": "sha512-w+aeW/mkgM4PyRMOJCgi3fOrTm5Q8QY1OSfn2TO2iuDj3ezIHqejmuxbjfPrqUkgqRew1iqkyAn0tr0ZwHD9+w==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/config-array/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/config-helpers": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", - "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.17.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/core": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", - "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.6.tgz", - "integrity": "sha512-l2Ul9PrHsPCKcEY/ac7VgFj9D80C7S68sOKc618SyHDPK36s1XcFebXY0iTzUVn4Yq+YbwvSnDmCz9yxjX+QrA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.14.0", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.3.0", - "minimatch": "^3.1.5", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.17", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.17.tgz", - "integrity": "sha512-w+aeW/mkgM4PyRMOJCgi3fOrTm5Q8QY1OSfn2TO2iuDj3ezIHqejmuxbjfPrqUkgqRew1iqkyAn0tr0ZwHD9+w==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/js": { - "version": "9.39.5", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.5.tgz", - "integrity": "sha512-QywQuszQh77pIXCsq998c8hbhSTI/azTty1Z6N53dmAudKHhy573j3yvRLsX2BSp8YpLtoCEG8E9DJe+8zUh4A==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - } - }, - "node_modules/@eslint/object-schema": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", - "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", - "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.17.0", - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@esm2cjs/execa": { - "version": "6.1.1-cjs.1", - "resolved": "https://registry.npmjs.org/@esm2cjs/execa/-/execa-6.1.1-cjs.1.tgz", - "integrity": "sha512-FHxfnmuDIjY1VS/BLzDkL8EkbcFvi8s6x1nYQ1Nyu0An0n88EJcGhDBcRWLFwt3C3nT7xwI+MwHRH1TZcAFW2w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@esm2cjs/human-signals": "^3.0.1", - "@esm2cjs/is-stream": "^3.0.0", - "@esm2cjs/npm-run-path": "^5.1.1-cjs.0", - "@esm2cjs/onetime": "^6.0.1-cjs.0", - "@esm2cjs/strip-final-newline": "^3.0.1-cjs.0", - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "merge-stream": "^2.0.0", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/AlCalzone" - } - }, - "node_modules/@esm2cjs/human-signals": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@esm2cjs/human-signals/-/human-signals-3.0.1.tgz", - "integrity": "sha512-QZme4eF/PwTpeSbMB4AaWGQ4VSygzE30jI+Oas1NPTtZQAgcHwWVDOQpIW8FUmtzn5Q+2cS7AjnTzbtqtc5P6g==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.20.0" - }, - "funding": { - "url": "https://github.com/sponsors/AlCalzone" - } - }, - "node_modules/@esm2cjs/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@esm2cjs/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-qcBscHlJpZFOD5nnmMHkzOrq2xyvsp9fbVreQLS8x2LOs8N3CrNi3fqvFY0GVJR+YSOHscwhG9T5t4Ck7R7QGw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/AlCalzone" - } - }, - "node_modules/@esm2cjs/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@esm2cjs/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-LIIAjcpjLr4rcbYmRQ+eRu55Upy/MMB78seIlwqbnyiA+cTa1/pxWnJ1NHJQrw6tx2wMQmlYoJj+wf16NjWH6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/AlCalzone" - } - }, - "node_modules/@esm2cjs/npm-run-path": { - "version": "5.1.1-cjs.0", - "resolved": "https://registry.npmjs.org/@esm2cjs/npm-run-path/-/npm-run-path-5.1.1-cjs.0.tgz", - "integrity": "sha512-CWeAIyE8iNSCgP2ItPE8iPgS+lACqgH+MuFRaWOIl2T7hnHqPFfhAJJ/LcLJJ/RMIxNMeenjFMwc91HW7NWr1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@esm2cjs/path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/AlCalzone" - } - }, - "node_modules/@esm2cjs/onetime": { - "version": "6.0.1-cjs.0", - "resolved": "https://registry.npmjs.org/@esm2cjs/onetime/-/onetime-6.0.1-cjs.0.tgz", - "integrity": "sha512-MkZMZSxrSC/6yUuAw6Azc56XOgwHQQIsNDlO/zgFmOcycJBhRwRuc/gdYUUOFNZIh7y+f0JSIxkNdJPFvJ5W0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@esm2cjs/mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/AlCalzone" - } - }, - "node_modules/@esm2cjs/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@esm2cjs/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-fKzZ3uIIP4j+7WfyG0MEkomGHL0hUXWCx1kY2Zct3GTdl4pyY+3k5lCUxjgdDa2Ld1BCjMNorXnRHiBP6jW6CQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/AlCalzone" - } - }, - "node_modules/@esm2cjs/strip-final-newline": { - "version": "3.0.1-cjs.0", - "resolved": "https://registry.npmjs.org/@esm2cjs/strip-final-newline/-/strip-final-newline-3.0.1-cjs.0.tgz", - "integrity": "sha512-o41riCGPiOEStayoikBCAqwa6igbv9L9rP+k5UCfQ24EJD/wGrdDs/KTNwkHG5JzDK3T60D5dMkWkLKEPy8gjA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/AlCalzone" - } - }, - "node_modules/@google-cloud/common": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-6.1.0.tgz", - "integrity": "sha512-Ohjxjvusr65+SiEVBrilpyn1ir9CM8ZqWjcf7bA8ph1GCunxI6bbwtcl7iGl67A7Lr4Nz7WpNzITNETwggc7pw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@google-cloud/projectify": "^4.0.0", - "@google-cloud/promisify": "^4.0.0", - "arrify": "^2.0.0", - "duplexify": "^4.1.3", - "extend": "^3.0.2", - "google-auth-library": "^10.6.2", - "html-entities": "^2.5.2", - "retry-request": "^8.0.0", - "teeny-request": "^10.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@google-cloud/common/node_modules/@google-cloud/promisify": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.1.0.tgz", - "integrity": "sha512-G/FQx5cE/+DqBbOpA5jKsegGwdPniU6PuIEMt+qxWgFxvxuFOzVmp6zYchtYuwAWV5/8Dgs0yAmjvNZv3uXLQg==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/@google-cloud/projectify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz", - "integrity": "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@google-cloud/promisify": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-5.1.0.tgz", - "integrity": "sha512-/j9zzWDxsgKg0hMuFBmLGI8ES9xj4DjXvQnDCKl0w5ed7WE3CGsgHmUoC35rvfBXshSW+5StQGnCUD+RBqITKA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/@google-cloud/translate": { - "version": "9.4.2", - "resolved": "https://registry.npmjs.org/@google-cloud/translate/-/translate-9.4.2.tgz", - "integrity": "sha512-evN00jJr1PfStM0+4OQhZH4LEW8NhIF1VJUMDf3f93KGR0HptNd94a/KVpeqxrVTkCYOdXP39x52wWVcxoHmwQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@google-cloud/common": "^6.0.0", - "@google-cloud/promisify": "^5.0.0", - "arrify": "^2.0.0", - "extend": "^3.0.2", - "google-gax": "^5.0.0", - "is-html": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@grpc/grpc-js": { - "version": "1.14.4", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.14.4.tgz", - "integrity": "sha512-k9Dj3DV/itK9D06Y8f190Qgop7/Ui+D0njFV3LHMPwPT75DpXLQohE9Wmz0QElrJnzsjB7KPWiKJbOl7IPDArQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@grpc/proto-loader": "^0.8.0", - "@js-sdsl/ordered-map": "^4.4.2" - }, - "engines": { - "node": ">=12.10.0" - } - }, - "node_modules/@grpc/proto-loader": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.8.1.tgz", - "integrity": "sha512-wtF6h+DY6M3YaDBPAmvuuA6jV8Sif9MjtOI5euKFWRgCDl5PeDpPsHR9u2l6St5ceY8AZgoNDww5+HvEsXFsGg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "lodash.camelcase": "^4.3.0", - "long": "^5.0.0", - "protobufjs": "^7.5.5", - "yargs": "^17.7.2" - }, - "bin": { - "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@humanfs/core": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz", - "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanfs/types": "^0.15.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node": { - "version": "0.16.8", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz", - "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanfs/core": "^0.19.2", - "@humanfs/types": "^0.15.0", - "@humanwhocodes/retry": "^0.4.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/types": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz", - "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", - "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@iobroker/adapter-core": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/@iobroker/adapter-core/-/adapter-core-3.4.3.tgz", - "integrity": "sha512-6pFFcWsiZY966xmdeORTkhs1MMtuNSfdab6XxmKRWOO3RXWN8vWIh1vvgnFhttrF7+56ykE4iDr4rgjdEWCtog==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@iobroker/js-controller-common-db": ">=7.2.2", - "@iobroker/types": ">=6.0.11" - } - }, - "node_modules/@iobroker/adapter-dev": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@iobroker/adapter-dev/-/adapter-dev-1.5.0.tgz", - "integrity": "sha512-L1FhO7oxaz4hNMobvgbanSGyn2LaCESGKqPPJhXWU00vVEw5Cc166xdnU63Dk+JDnV5zl/HzOcFANGisETAWIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@esm2cjs/execa": "^6.1.1-cjs.1", - "@google-cloud/translate": "^9.2.0", - "ansi-colors": "^4.1.3", - "axios": "^1.11.0", - "deepl-node": "^1.19.0", - "esbuild": "^0.25.9", - "fs-extra": "^11.3.1", - "rimraf": "^5.0.10", - "tiny-glob": "^0.2.9", - "yargs": "^18.0.0" - }, - "bin": { - "build-adapter": "bin/build-adapter.js", - "clean-dir": "bin/clean-dir.js", - "translate-adapter": "bin/translate-adapter.js" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@iobroker/adapter-dev/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@iobroker/adapter-dev/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@iobroker/adapter-dev/node_modules/cliui": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", - "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^7.2.0", - "strip-ansi": "^7.1.0", - "wrap-ansi": "^9.0.0" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@iobroker/adapter-dev/node_modules/cliui/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@iobroker/adapter-dev/node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@iobroker/adapter-dev/node_modules/string-width": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.2.tgz", - "integrity": "sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-east-asian-width": "^1.5.0", - "strip-ansi": "^7.1.2" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@iobroker/adapter-dev/node_modules/strip-ansi": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.2.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@iobroker/adapter-dev/node_modules/wrap-ansi": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", - "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/@iobroker/adapter-dev/node_modules/wrap-ansi/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@iobroker/adapter-dev/node_modules/yargs": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.1.0.tgz", - "integrity": "sha512-2rAgRKu54VsHkqI0/tYkmluGXHD4KW7yZoycuqDQ15QOTnc2VVfy0nN/1eMhnQLO00A+dwtK20xuCnc1YGeUyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^9.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "string-width": "^8.2.1", - "y18n": "^5.0.5", - "yargs-parser": "^22.0.0" - }, - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=23" - } - }, - "node_modules/@iobroker/adapter-dev/node_modules/yargs-parser": { - "version": "22.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", - "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=23" - } - }, - "node_modules/@iobroker/build-tools": { - "version": "3.0.1", - "dev": true, - "dependencies": { - "glob": "^13.0.1" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@iobroker/eslint-config": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/@iobroker/eslint-config/-/eslint-config-2.3.4.tgz", - "integrity": "sha512-TAdXGAT01SupzM1q9nC7RGVZ+8+3kJinOlcbqm1pvn54abTJ9bXUw+RiJT+gu6hqPdoS1mqWNq8ZI8lB8ah2mg==", - "dev": true, - "peerDependencies": { - "@eslint/eslintrc": "^3.3.5", - "@eslint/js": "^9.39.4", - "@typescript-eslint/eslint-plugin": "^8.59.2", - "@typescript-eslint/parser": "^8.59.2", - "eslint": ">=9.38.0", - "eslint-config-prettier": "^10.1.8", - "eslint-plugin-import": "^2.32.0", - "eslint-plugin-jsdoc": "^62.9.0", - "eslint-plugin-prettier": "^5.5.5", - "eslint-plugin-react": "^7.37.5", - "eslint-plugin-react-hooks": "^7.1.1", - "eslint-plugin-unicorn": "^64.0.0", - "globals": "^17.6.0", - "prettier": ">=3.6.2", - "typescript-eslint": "^8.59.2" - } - }, - "node_modules/@iobroker/js-controller-common-db": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@iobroker/js-controller-common-db/-/js-controller-common-db-7.2.2.tgz", - "integrity": "sha512-RDa2jKZ7+uLLMpopN3EELQgOnGYHl//4qR0A+atGdj7k3ocH+4cCnurQ+NIB3Ihv7x7Ul3ewVpUQp90qMZXZog==", - "license": "MIT", - "dependencies": { - "@alcalzone/pak": "^0.11.0", - "axios": "^1.13.6", - "ci-info": "^3.8.0", - "deep-clone": "^3.0.3", - "event-stream": "^4.0.1", - "fs-extra": "^11.3.2", - "jsonwebtoken": "^9.0.0", - "node-forge": "^1.3.2", - "node.extend": "^2.0.2", - "promisify-child-process": "^4.1.2", - "readline": "^1.3.0", - "semver": "^7.5.2", - "triple-beam": "^1.3.0", - "winston": "^3.7.2", - "winston-daily-rotate-file": "^5.0.0", - "winston-transport": "^4.5.0" - }, - "engines": { - "node": ">=18.0.0" - }, - "optionalDependencies": { - "@datalust/winston-seq": "^1.0.0", - "diskusage": "^1.1.3", - "winston-syslog": "^2.6.0" - } - }, - "node_modules/@iobroker/js-controller-common-db/node_modules/@alcalzone/pak": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@alcalzone/pak/-/pak-0.11.0.tgz", - "integrity": "sha512-S6s2Xug8VJ04Xgam7kV+dUydVB2gJmTem+Kr7oxneeXndWddgoQxphQNI9WqgpsifTkonC9wiAbj3qkMFlNeAA==", - "license": "MIT", - "dependencies": { - "axios": "^1.6.2", - "execa": "~5.0.1", - "fs-extra": "^10.1.0", - "semver": "^7.3.7", - "tiny-glob": "^0.2.9" - } - }, - "node_modules/@iobroker/js-controller-common-db/node_modules/@alcalzone/pak/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@iobroker/js-controller-common-db/node_modules/execa": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.1.tgz", - "integrity": "sha512-4hFTjFbFzQa3aCLobpbPJR/U+VoL1wdV5ozOWjeet0AWDeYr9UFGM1eUFWHX+VtOWFq4p0xXUXfW1YxUaP4fpw==", - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/@iobroker/js-controller-common-db/node_modules/promisify-child-process": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/promisify-child-process/-/promisify-child-process-4.1.2.tgz", - "integrity": "sha512-APnkIgmaHNJpkAn7k+CrJSi9WMuff5ctYFbD0CO2XIPkM8yO7d/ShouU2clywbpHV/DUsyc4bpJCsNgddNtx4g==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@iobroker/plugin-base": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@iobroker/plugin-base/-/plugin-base-3.0.3.tgz", - "integrity": "sha512-pUKOz9/ZqIDxPQo9E97UdCF6p8NyO+x9REAQYPQNmwkElWq0bka9tgphx+RTUj8inZoYbUd50o9YnotV5C/Jpg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@iobroker/plugin-sentry": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@iobroker/plugin-sentry/-/plugin-sentry-3.1.2.tgz", - "integrity": "sha512-5zPANxH1V5coj9o6yO68NYmjRlLVSuA976ZZ02RIAW+bRDVQDh3zdiD/lDgz0Xs+Nc+ZEtLzBwRBeG8sPdhBIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@iobroker/plugin-base": "^3.0.3", - "@sentry/integrations": "^7.114.0", - "@sentry/node": "^10.57.0", - "source-map-support": "^0.5.21" - } - }, - "node_modules/@iobroker/testing": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@iobroker/testing/-/testing-5.3.0.tgz", - "integrity": "sha512-0Ux1wo1zqbnbcfJJE6M5f25gKhQTB/H1h20TJTQukKdwJr2rKjawiirwZjB5qxwZbsNU8CR9T4SVkeGTCvhxgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@alcalzone/esbuild-register": "^2.5.1-1", - "@types/chai": "^4.3.20", - "@types/chai-as-promised": "^7.1.8", - "@types/mocha": "^10.0.10", - "@types/sinon": "^22.0.0", - "@types/sinon-chai": "^3.2.12", - "alcalzone-shared": "~5.0.0", - "chai": "^4.5.0", - "chai-as-promised": "^7.1.2", - "debug": "^4.4.3", - "fs-extra": "^11.3.6", - "json5": "^2.2.3", - "mocha": "^11.7.6", - "sinon": "^22.0.0", - "sinon-chai": "^3.7.0" - } - }, - "node_modules/@iobroker/types": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@iobroker/types/-/types-7.2.2.tgz", - "integrity": "sha512-GR+sp+4DUZmuV3EpSJchTlJ6fqjHVEJJ/IQlMDc4j/oRENkSV5UTpRFxcDL5oy+Dj1+urdNUgHJdOzMzbV06Tw==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.2.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@js-sdsl/ordered-map": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", - "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, - "node_modules/@opentelemetry/api": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.1.tgz", - "integrity": "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/api-logs": { - "version": "0.220.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.220.0.tgz", - "integrity": "sha512-CmVa4ImJ+ynfrPMNaAXHET6Bhb44SwzmfyVJFq9ni2jgXJR/l7C6gfVFddNmHP+ZOkP9cf4f9DBe68qVLTHc9w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "^1.3.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/core": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.10.0.tgz", - "integrity": "sha512-/wNZ8twnEQQA4HoHu22+vcsdru6pWPWxW+7w+FlxT6Id7PE/WIbZmVKkte+PF72e0F2dnImFeHD2syyE1Mw6MQ==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/instrumentation": { - "version": "0.220.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.220.0.tgz", - "integrity": "sha512-xQx3E2WxP1mDvKzxLxX+CTCtNLa560YJZ3087qYHerl2YmiKpv7AH+dAy7vmx+eVrZ5BwhfWUAVoKOoxCNHcpw==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@opentelemetry/api-logs": "0.220.0", - "import-in-the-middle": "^3.0.0", - "require-in-the-middle": "^8.0.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/resources": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.10.0.tgz", - "integrity": "sha512-q6MMm2zhggzsHVNbabYwut+a6nbuQQe3URUoxaojM/8K1IBfwwPzvxIjNi2/lI1TFe+fMHMW9MWhrtDLEXEnkA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.10.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-trace": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace/-/sdk-trace-2.10.0.tgz", - "integrity": "sha512-MfQGq3GRmTh5fM/y+OjaO0vj6+luCB1XO2gfXCalKCfgKw0eHL++sm75DNweC6ohlp+aFvACqeE0fYayqdRaoQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "2.10.0", - "@opentelemetry/resources": "2.10.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-trace-base": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.10.0.tgz", - "integrity": "sha512-GuYQQT7QD2EeO8lcZLRQzcbOyhqAzL+6WWTKTU9mSUBYBazkEDl+VrQcXQhbB08OWM9anD1aHleVadzulpOaUQ==", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@opentelemetry/core": "2.10.0", - "@opentelemetry/resources": "2.10.0", - "@opentelemetry/sdk-trace": "2.10.0", - "@opentelemetry/semantic-conventions": "^1.29.0" - }, - "engines": { - "node": "^18.19.0 || >=20.6.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.3.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.43.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.43.0.tgz", - "integrity": "sha512-eSYWTm620tTk45EKSedaUL8MFYI8hW164hIXsgIHyxu3VobUB3fFCu5t0hQby6OoWRPsG1KkKUG2M5UadiLiVg==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=14" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@pkgr/core": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.3.6.tgz", - "integrity": "sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/pkgr" - } - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.5.tgz", - "integrity": "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.1.tgz", - "integrity": "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.1.tgz", - "integrity": "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.2.tgz", - "integrity": "sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@sentry/conventions": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/@sentry/conventions/-/conventions-0.16.0.tgz", - "integrity": "sha512-fO9PLmHdVURcSPUpWCItWAtgKiMwGdJHbovoSEyLplX5sxs2ugvI4CBPTrkkgqhObnZOD0CnWBKDzSVQYBKEyQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/@sentry/core": { - "version": "7.114.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.114.0.tgz", - "integrity": "sha512-YnanVlmulkjgZiVZ9BfY9k6I082n+C+LbZo52MTvx3FY6RE5iyiPMpaOh67oXEZRWcYQEGm+bKruRxLVP6RlbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sentry/types": "7.114.0", - "@sentry/utils": "7.114.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sentry/integrations": { - "version": "7.114.0", - "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.114.0.tgz", - "integrity": "sha512-BJIBWXGKeIH0ifd7goxOS29fBA8BkEgVVCahs6xIOXBjX1IRS6PmX0zYx/GP23nQTfhJiubv2XPzoYOlZZmDxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sentry/core": "7.114.0", - "@sentry/types": "7.114.0", - "@sentry/utils": "7.114.0", - "localforage": "^1.8.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sentry/node": { - "version": "10.69.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-10.69.0.tgz", - "integrity": "sha512-xEXA1YGIiTZbrW6MWV34uS6JGQuQg2ijTI0zed+FsJb9JZKPYel/GZK8Km26vfTVb+yCXFmWZNBesKegNcVdzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@opentelemetry/api": "^1.9.1", - "@opentelemetry/instrumentation": "^0.220.0", - "@opentelemetry/sdk-trace-base": "^2.9.0", - "@sentry/conventions": "^0.16.0", - "@sentry/core": "10.69.0", - "@sentry/node-core": "10.69.0", - "@sentry/opentelemetry": "10.69.0", - "@sentry/server-utils": "10.69.0", - "import-in-the-middle": "^3.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry/node-core": { - "version": "10.69.0", - "resolved": "https://registry.npmjs.org/@sentry/node-core/-/node-core-10.69.0.tgz", - "integrity": "sha512-IgArHczrZJxkgxoffHscj0NxQrG6kCazgmGQnlf3j58J1ec21YaUu8Tu+7G4Lo5tCiW3teQnwlKW1ttMXSqWRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sentry/conventions": "^0.16.0", - "@sentry/core": "10.69.0", - "@sentry/opentelemetry": "10.69.0", - "import-in-the-middle": "^3.0.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.9.0", - "@opentelemetry/core": "^1.30.1 || ^2.1.0", - "@opentelemetry/exporter-trace-otlp-http": ">=0.57.0 <1", - "@opentelemetry/instrumentation": ">=0.57.1 <1", - "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.1.0" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "@opentelemetry/core": { - "optional": true - }, - "@opentelemetry/exporter-trace-otlp-http": { - "optional": true - }, - "@opentelemetry/instrumentation": { - "optional": true - }, - "@opentelemetry/sdk-trace-base": { - "optional": true - } - } - }, - "node_modules/@sentry/node-core/node_modules/@sentry/core": { - "version": "10.69.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.69.0.tgz", - "integrity": "sha512-+uuqVEeiDzYuAKjZLqsROKXvRTbl/QeH0gfGRtpYib1cud4rAFWRIkFmcR7Jb7JGFYwmReyQotiTj/hcDszTZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sentry/conventions": "^0.16.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry/node/node_modules/@sentry/core": { - "version": "10.69.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.69.0.tgz", - "integrity": "sha512-+uuqVEeiDzYuAKjZLqsROKXvRTbl/QeH0gfGRtpYib1cud4rAFWRIkFmcR7Jb7JGFYwmReyQotiTj/hcDszTZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sentry/conventions": "^0.16.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry/opentelemetry": { - "version": "10.69.0", - "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-10.69.0.tgz", - "integrity": "sha512-3FyWV6YcEJuvLrlaKGE1dHXCI+1YO0a62w7PkwlRg8yp6K6YXkmdwu9GjqaYD+Ju4tm7uC7mHIsGFQMm0M7pqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sentry/conventions": "^0.16.0", - "@sentry/core": "10.69.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.9.0", - "@opentelemetry/core": "^1.30.1 || ^2.1.0", - "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.1.0" - } - }, - "node_modules/@sentry/opentelemetry/node_modules/@sentry/core": { - "version": "10.69.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.69.0.tgz", - "integrity": "sha512-+uuqVEeiDzYuAKjZLqsROKXvRTbl/QeH0gfGRtpYib1cud4rAFWRIkFmcR7Jb7JGFYwmReyQotiTj/hcDszTZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sentry/conventions": "^0.16.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry/server-utils": { - "version": "10.69.0", - "resolved": "https://registry.npmjs.org/@sentry/server-utils/-/server-utils-10.69.0.tgz", - "integrity": "sha512-0MwHrA8+nNvMIsqf8m3cXwCBlUjr6AS7N6CZvHJtY1DkqEvQqEbD5VIrhzEyHN/KMZIgQ8XeDCQRhjnXFQGRhg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@apm-js-collab/code-transformer-bundler-plugins": "^0.7.3", - "@apm-js-collab/tracing-hooks": "^0.13.0", - "@sentry/conventions": "^0.16.0", - "@sentry/core": "10.69.0", - "meriyah": "^6.1.4" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry/server-utils/node_modules/@sentry/core": { - "version": "10.69.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.69.0.tgz", - "integrity": "sha512-+uuqVEeiDzYuAKjZLqsROKXvRTbl/QeH0gfGRtpYib1cud4rAFWRIkFmcR7Jb7JGFYwmReyQotiTj/hcDszTZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sentry/conventions": "^0.16.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry/types": { - "version": "7.114.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.114.0.tgz", - "integrity": "sha512-tsqkkyL3eJtptmPtT0m9W/bPLkU7ILY7nvwpi1hahA5jrM7ppoU0IMaQWAgTD+U3rzFH40IdXNBFb8Gnqcva4w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@sentry/utils": { - "version": "7.114.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.114.0.tgz", - "integrity": "sha512-319N90McVpupQ6vws4+tfCy/03AdtsU0MurIE4+W5cubHME08HtiEWlfacvAxX+yuKFhvdsO4K4BB/dj54ideg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sentry/types": "7.114.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@sindresorhus/base62": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/base62/-/base62-1.0.0.tgz", - "integrity": "sha512-TeheYy0ILzBEI/CO55CP6zJCSdSWeRtGnHy8U8dWSUH4I68iqTsy7HkMktR4xakThc9jotkPQUXT4ITdbV7cHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/commons/node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "15.4.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.4.0.tgz", - "integrity": "sha512-DsG+8/LscQIQg68J6Ef3dv10u6nVyetYn923s3/sus5eaGfTo1of5WMZSLf0UJc9KDuKPilPH0UDJCjvNbDNCA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1" - } - }, - "node_modules/@sinonjs/samsam": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-10.0.2.tgz", - "integrity": "sha512-8lVwD1Df1BmzoaOLhMcGGcz/Jyr5QY2KSB75/YK1QgKzoabTeLdIVyhXNZK9ojfSKSdirbXqdbsXXqP9/Ve8+A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1", - "type-detect": "^4.1.0" - } - }, - "node_modules/@so-ric/colorspace": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@so-ric/colorspace/-/colorspace-1.1.6.tgz", - "integrity": "sha512-/KiKkpHNOBgkFJwu9sh48LkHSMYGyuTcSFK/qMBdnOAlrRJzRSXAOFB5qwzaVQuDl8wAvHVMkaASQDReTahxuw==", - "license": "MIT", - "dependencies": { - "color": "^5.0.2", - "text-hex": "1.0.x" - } - }, - "node_modules/@types/caseless": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", - "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/chai": { - "version": "4.3.20", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz", - "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/chai-as-promised": { - "version": "7.1.8", - "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz", - "integrity": "sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/chai": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", - "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/mocha": { - "version": "10.0.10", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", - "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "22.20.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.20.1.tgz", - "integrity": "sha512-EANqOCF9QFyra+4pfxUcX9STKJpCLjMbObVzljIJomAWSnuSIEAvyzEU53GaajbXJEgdh0iEcPL+DGvpUd4k1Q==", - "license": "MIT", - "peer": true, - "dependencies": { - "undici-types": "~6.21.0" - } - }, - "node_modules/@types/node-schedule": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@types/node-schedule/-/node-schedule-2.1.8.tgz", - "integrity": "sha512-k00g6Yj/oUg/CDC+MeLHUzu0+OFxWbIqrFfDiLi6OPKxTujvpv29mHGM8GtKr7B+9Vv92FcK/8mRqi1DK5f3hA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/nodemailer": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-8.0.1.tgz", - "integrity": "sha512-PxpaInm8V1JQDd4j0ds5HfvWQk8JupS1C0Picb96QJsrrRDjBH+DlK7L4ZdNSqNULhiZRQHc40nLVShaGxXAMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/request": { - "version": "2.48.13", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.13.tgz", - "integrity": "sha512-FGJ6udDNUCjd19pp0Q3iTiDkwhYup7J8hpMW9c4k53NrccQFFWKRho6hvtPPEhnXWKvukfwAlB6DbDz4yhH5Gg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.5" - } - }, - "node_modules/@types/sinon": { - "version": "22.0.0", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-22.0.0.tgz", - "integrity": "sha512-TDbVpbccc2HfiqHR09Argj3mHV1KMW7sCCKj52fsl8lbRLkEn7fB1966EWhOKWUBcqfBueZuPoA7/OK1CKiy3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/sinonjs__fake-timers": "*" - } - }, - "node_modules/@types/sinon-chai": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.12.tgz", - "integrity": "sha512-9y0Gflk3b0+NhQZ/oxGtaAJDvRywCa5sIyaVnounqLvmf93yBF4EgIRspePtkMs3Tr844nCclYMlcCNmLCvjuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/chai": "*", - "@types/sinon": "*" - } - }, - "node_modules/@types/sinonjs__fake-timers": { - "version": "15.0.1", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-15.0.1.tgz", - "integrity": "sha512-Ko2tjWJq8oozHzHV+reuvS5KYIRAokHnGbDwGh/J64LntgpbuylF74ipEL24HCyRjf9FOlBiBHWBR1RlVKsI1w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/suncalc": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@types/suncalc/-/suncalc-1.9.2.tgz", - "integrity": "sha512-ATAGBHHfA1TlE2tjfidLyTcysjoT2JHHEAmWRULh73SU9UTn++j5fqHEW16X6Y/2Li87jEQXzgu4R/OOdlDqzw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/triple-beam": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", - "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==", - "license": "MIT" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.65.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.65.0.tgz", - "integrity": "sha512-IEgob78X12rHpUmtcwFsXhZdVGJtwTVP8FiCLZkR6GlYVrl2PcuB+KhCE5BlVC/eQpQnu8WXRtkHZuPar+gCRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.65.0", - "@typescript-eslint/type-utils": "8.65.0", - "@typescript-eslint/utils": "8.65.0", - "@typescript-eslint/visitor-keys": "8.65.0", - "ignore": "^7.0.5", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.65.0", - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.6.tgz", - "integrity": "sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.65.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.65.0.tgz", - "integrity": "sha512-CZ4nMxWwgu1HEEFNkeaCptra9QCtkmKdgf3sWh1rl1trIhmxLilgTV4cwcbQ4wemnT4sWQN8CaKOmdYx+g2gMA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@typescript-eslint/scope-manager": "8.65.0", - "@typescript-eslint/types": "8.65.0", - "@typescript-eslint/typescript-estree": "8.65.0", - "@typescript-eslint/visitor-keys": "8.65.0", - "debug": "^4.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.65.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.65.0.tgz", - "integrity": "sha512-SxnPhbTsGahizDgbu7oqFH/xVtzIqMd/s+WtnSxNxJZJpLbdT5IPdzg8EZxO3+PoKahXmwJLeNQOpKJb3/bi7Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.65.0", - "@typescript-eslint/types": "^8.65.0", - "debug": "^4.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.65.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.65.0.tgz", - "integrity": "sha512-Esbl8OSYiVxBokYgWPf7VVWg/BE798wXhimnn9ML9Pt5qoDf8bfQlgjlKXR/k98+AcNzlLKYrpCcrcuZ9DZLgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.65.0", - "@typescript-eslint/visitor-keys": "8.65.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.65.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.65.0.tgz", - "integrity": "sha512-j6GzGqCiRdA7Qhur2VVmKZAkBLfnHFQfx4TaJGL9RMveZqCo48jSHHO0DTgizEnGhtWnqmbtCUSrqSkdiY/0Hg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.65.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.65.0.tgz", - "integrity": "sha512-YjaZ7PRI5qY7ax2L3PbvX0rRyGtipAReCWs0mhhDBHjH/vl0g0BonaGXrKdKpMbIIsMIwDgbk/xzkBTyAltS5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.65.0", - "@typescript-eslint/typescript-estree": "8.65.0", - "@typescript-eslint/utils": "8.65.0", - "debug": "^4.4.3", - "ts-api-utils": "^2.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.65.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.65.0.tgz", - "integrity": "sha512-JSSwWNy+H0E/01jJEM+hrX6N0OFDzFzeIhHFSAS01tlVaevpG8cFyYRPhS5yjGOvBUx3sqQHVMjCL1CAZZMxBg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.65.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.65.0.tgz", - "integrity": "sha512-JboAE2swaYt4tb1fHhHTABE2K+OLy09XfcTbhnk4Pw96f9dd2e9iYsJ28gBggHlo5z5x1rkyWvcPoTuNTd4oGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.65.0", - "@typescript-eslint/tsconfig-utils": "8.65.0", - "@typescript-eslint/types": "8.65.0", - "@typescript-eslint/visitor-keys": "8.65.0", - "debug": "^4.4.3", - "minimatch": "^10.2.2", - "semver": "^7.7.3", - "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.65.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.65.0.tgz", - "integrity": "sha512-gXiwIHsYreboxeJucHKPvgwl7dXt50mF8s1/c00cP/WoVTyWKFdtfhRWwZiXYFU5H2O8vVoSLNrexFZjYS/SGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.65.0", - "@typescript-eslint/types": "8.65.0", - "@typescript-eslint/typescript-estree": "8.65.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.65.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.65.0.tgz", - "integrity": "sha512-8C71BQkGjiMmXtop7pHVJu1l2NNShFdkCyD6a2ezzs5vU/L3LRtb69EtcteFwz0mYMPzIgOw0n6OV4VBUWZd7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.65.0", - "eslint-visitor-keys": "^5.0.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", - "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/acorn": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz", - "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==", - "dev": true, - "license": "MIT", - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/adm-zip": { - "version": "0.5.18", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.18.tgz", - "integrity": "sha512-ufJnssQGbxzLNS1Ho9bCtX4rQKCCvoVuDLHoJyc3F9dOGDB4BkWs2Ci0kv53lqocAEQ/Cbi+I2XCsNYGqVYqng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/ajv": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", - "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/alcalzone-shared": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/are-docs-informative": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", - "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", - "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-object-atoms": "^1.1.1", - "get-intrinsic": "^1.3.0", - "is-string": "^1.1.1", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/astring": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", - "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", - "dev": true, - "license": "MIT", - "bin": { - "astring": "bin/astring" - } - }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "license": "MIT" - }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT" - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/axios": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.19.0.tgz", - "integrity": "sha512-ht/iuYZXEjFxLH/Hkezgd7m6JKlHHXEUSneaDz8uZe1Gj5QZtCnpyDsckvAiEnT89OEbCLmnte4R4sn7P0EKFw==", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.16.0", - "form-data": "^4.0.6", - "https-proxy-agent": "^5.0.1", - "proxy-from-env": "^2.1.0" - } - }, - "node_modules/axios/node_modules/form-data": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz", - "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.4", - "mime-types": "^2.1.35" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/balanced-match": { - "version": "4.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/baseline-browser-mapping": { - "version": "2.11.7", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.7.tgz", - "integrity": "sha512-APw5YuIQAg6L9w4sHDI6j26DGFJI6RpYOhnkMPdC9lWbkKvsyPHzDsve1yd73lk21yz7Y09Kci8B2Pp9FonzWA==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.cjs" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/bignumber.js": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", - "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/brace-expansion": { - "version": "5.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true, - "license": "ISC" - }, - "node_modules/browserslist": { - "version": "4.28.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.7.tgz", - "integrity": "sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "baseline-browser-mapping": "^2.10.44", - "caniuse-lite": "^1.0.30001806", - "electron-to-chromium": "^1.5.393", - "node-releases": "^2.0.51", - "update-browserslist-db": "^1.2.3" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", - "license": "BSD-3-Clause" - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/builtin-modules": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-5.3.0.tgz", - "integrity": "sha512-hMQUl2bUFG339QygPM97E+mc8OY1IAchORZxm4a/frcYwKzozMzRVDBwHW0NjOqGElLm2O37AVQE8ikxlZHrMQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/call-bind": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", - "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "get-intrinsic": "^1.3.0", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001806", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001806.tgz", - "integrity": "sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chai": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", - "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.3", - "deep-eql": "^4.1.3", - "get-func-name": "^2.0.2", - "loupe": "^2.3.6", - "pathval": "^1.1.1", - "type-detect": "^4.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chai-as-promised": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.2.tgz", - "integrity": "sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==", - "dev": true, - "license": "WTFPL", - "dependencies": { - "check-error": "^1.0.2" - }, - "peerDependencies": { - "chai": ">= 2.1.2 < 6" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/change-case": { - "version": "5.4.4", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz", - "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", - "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/clean-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", - "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/clean-regexp/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/color": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/color/-/color-5.0.3.tgz", - "integrity": "sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==", - "license": "MIT", - "dependencies": { - "color-convert": "^3.1.3", - "color-string": "^2.1.3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/color-string": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-2.1.4.tgz", - "integrity": "sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==", - "license": "MIT", - "dependencies": { - "color-name": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/color-string/node_modules/color-name": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.1.1.tgz", - "integrity": "sha512-p2FdgwVx1a9yWBHP2wI0VgShkDpgN4kZISkxdNipGBJWpa5G6b04OINlVWCyJj0JmfvcPrgqt95E9k8yvaOJFg==", - "license": "MIT", - "engines": { - "node": ">=12.20" - } - }, - "node_modules/color/node_modules/color-convert": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-3.1.3.tgz", - "integrity": "sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==", - "license": "MIT", - "dependencies": { - "color-name": "^2.0.0" - }, - "engines": { - "node": ">=14.6" - } - }, - "node_modules/color/node_modules/color-name": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.1.1.tgz", - "integrity": "sha512-p2FdgwVx1a9yWBHP2wI0VgShkDpgN4kZISkxdNipGBJWpa5G6b04OINlVWCyJj0JmfvcPrgqt95E9k8yvaOJFg==", - "license": "MIT", - "engines": { - "node": ">=12.20" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/comment-parser": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.6.tgz", - "integrity": "sha512-ObxuY6vnbWTN6Od72xfwN9DbzC7Y2vv8u1Soi9ahRKL37gb6y1qk6/dgjs+3JWuXJHWvsg3BXIwzd/rkmAwavg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/core-js-compat": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz", - "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserslist": "^4.28.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "license": "MIT" - }, - "node_modules/cron-parser": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz", - "integrity": "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==", - "license": "MIT", - "dependencies": { - "luxon": "^3.2.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-clone": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/deep-clone/-/deep-clone-3.0.3.tgz", - "integrity": "sha512-6jtXIlCBAwr3GP/7Il52clbIFIKAxg/pnNkL4/sE6+Oqb10MXMtm9LDZV2IAuwdaKV9VBm8hlxAFk9r6pF8XRw==", - "license": "MIT" - }, - "node_modules/deep-eql": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", - "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/deepl-node": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/deepl-node/-/deepl-node-1.27.0.tgz", - "integrity": "sha512-OEiprFdxqr7aS0+gmv8vsZLBLoDarBppG1zkTWUlrAvPoYdwSWKFWjcZgr9XSV3FWlPy8g10WdJjWkxDn9P56w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": ">=12.0", - "adm-zip": "^0.5.16", - "axios": "^1.7.4", - "form-data": "^3.0.4", - "loglevel": ">=1.6.2" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/deepl-node/node_modules/form-data": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.5.tgz", - "integrity": "sha512-j23EibVLnp4zNXGW7LjryXYa2X6U/M96yoOX+ybZxwkYajdxRNEqYY3zhh7y0i6kfISKS2jr+EJq1YTUDEv5+w==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.4", - "mime-types": "^2.1.35" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/diff": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", - "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diskusage": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/diskusage/-/diskusage-1.2.0.tgz", - "integrity": "sha512-2u3OG3xuf5MFyzc4MctNRUKjjwK+UkovRYdD2ed/NZNZPrt0lqHnLKxGhlFVvAb4/oufIgQG3nWgwmeTbHOvXA==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "dependencies": { - "es6-promise": "^4.2.8", - "nan": "^2.18.0" - } - }, - "node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "license": "MIT" - }, - "node_modules/duplexify": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", - "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.2" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, - "license": "MIT" - }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.5.398", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.398.tgz", - "integrity": "sha512-AsvhAxopJGh6museTDMIjn6JpDYOfgu4RLlygomt87MUwBUqTfd/1EiPtx10/LZE8xpTvkP2E9Gafq7lkLtodQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/enabled": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", - "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", - "license": "MIT" - }, - "node_modules/end-of-stream": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enquirer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", - "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-colors": "^4.1.1", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/es-abstract": { - "version": "1.24.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.2.tgz", - "integrity": "sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-abstract-get": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-abstract-get/-/es-abstract-get-1.0.0.tgz", - "integrity": "sha512-6PMWXpdhshVvFp+FoWYs1EvG1Nj0tvk0dZM+XcK0xMEM1czRVcP6ohqPWHy6qPagSpC8j4+p89WXlT+xXJs/fg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.2", - "is-callable": "^1.2.7", - "object-inspect": "^1.13.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-iterator-helpers": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.4.0.tgz", - "integrity": "sha512-c/A0P0oxkACDc+cKWw8evLXK83oBKgn0qPOqCYT4x9uolpCIJAcYvJC9QYKNDRPsTeGyCrQ326jrvgZWdCdK5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.9", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.2", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.1.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.3.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "iterator.prototype": "^1.1.5", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-module-lexer": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.1.tgz", - "integrity": "sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==", - "dev": true, - "license": "MIT" - }, - "node_modules/es-object-atoms": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", - "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.4.tgz", - "integrity": "sha512-yPDz7wqpg1/mmHLmS3tcfTfbw5f1eryXvyghYBffGdERwe+mV7ZcWzTR8LR17Kvqt3qfPurjlonmnq3MKXIOXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-abstract-get": "^1.0.0", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "is-callable": "^1.2.7", - "is-date-object": "^1.1.0", - "is-symbol": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "license": "MIT", - "optional": true - }, - "node_modules/esbuild": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", - "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.12", - "@esbuild/android-arm": "0.25.12", - "@esbuild/android-arm64": "0.25.12", - "@esbuild/android-x64": "0.25.12", - "@esbuild/darwin-arm64": "0.25.12", - "@esbuild/darwin-x64": "0.25.12", - "@esbuild/freebsd-arm64": "0.25.12", - "@esbuild/freebsd-x64": "0.25.12", - "@esbuild/linux-arm": "0.25.12", - "@esbuild/linux-arm64": "0.25.12", - "@esbuild/linux-ia32": "0.25.12", - "@esbuild/linux-loong64": "0.25.12", - "@esbuild/linux-mips64el": "0.25.12", - "@esbuild/linux-ppc64": "0.25.12", - "@esbuild/linux-riscv64": "0.25.12", - "@esbuild/linux-s390x": "0.25.12", - "@esbuild/linux-x64": "0.25.12", - "@esbuild/netbsd-arm64": "0.25.12", - "@esbuild/netbsd-x64": "0.25.12", - "@esbuild/openbsd-arm64": "0.25.12", - "@esbuild/openbsd-x64": "0.25.12", - "@esbuild/openharmony-arm64": "0.25.12", - "@esbuild/sunos-x64": "0.25.12", - "@esbuild/win32-arm64": "0.25.12", - "@esbuild/win32-ia32": "0.25.12", - "@esbuild/win32-x64": "0.25.12" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "9.39.5", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.5.tgz", - "integrity": "sha512-DgZS62aPLXKlnxILS/AYCoRvHaZeXceIzlXPkkGGzJWSow1aEk0lbTlxUSlyjC8jcaKxAdOnTDz+o1JFSBsyjw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.8.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.2", - "@eslint/config-helpers": "^0.4.2", - "@eslint/core": "^0.17.0", - "@eslint/eslintrc": "^3.3.6", - "@eslint/js": "9.39.5", - "@eslint/plugin-kit": "^0.4.1", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "ajv": "^6.14.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.4.0", - "eslint-visitor-keys": "^4.2.1", - "espree": "^10.4.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.5", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "node_modules/eslint-config-prettier": { - "version": "10.1.8", - "dev": true, - "license": "MIT", - "peer": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "funding": { - "url": "https://opencollective.com/eslint-config-prettier" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.10.tgz", - "integrity": "sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.16.1", - "resolve": "^2.0.0-next.6" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.14.0.tgz", - "integrity": "sha512-W2WCRZ9Dqntd+2u8jJcVMV2PKulc6RdLgUUoh/yQr3uB6lo/ZOeGx11sv60/8S4QFFKNslAlWhr9u0Ef7ZW6Ig==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", - "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.9", - "array.prototype.findlastindex": "^1.2.6", - "array.prototype.flat": "^1.3.3", - "array.prototype.flatmap": "^1.3.3", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.1", - "hasown": "^2.0.2", - "is-core-module": "^2.16.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.1", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.9", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" - } - }, - "node_modules/eslint-plugin-import/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint-plugin-import/node_modules/brace-expansion": { - "version": "1.1.17", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.17.tgz", - "integrity": "sha512-w+aeW/mkgM4PyRMOJCgi3fOrTm5Q8QY1OSfn2TO2iuDj3ezIHqejmuxbjfPrqUkgqRew1iqkyAn0tr0ZwHD9+w==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-jsdoc": { - "version": "62.9.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-62.9.0.tgz", - "integrity": "sha512-PY7/X4jrVgoIDncUmITlUqK546Ltmx/Pd4Hdsu4CvSjryQZJI2mEV4vrdMufyTetMiZ5taNSqvK//BTgVUlNkA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@es-joy/jsdoccomment": "~0.86.0", - "@es-joy/resolve.exports": "1.2.0", - "are-docs-informative": "^0.0.2", - "comment-parser": "1.4.6", - "debug": "^4.4.3", - "escape-string-regexp": "^4.0.0", - "espree": "^11.2.0", - "esquery": "^1.7.0", - "html-entities": "^2.6.0", - "object-deep-merge": "^2.0.0", - "parse-imports-exports": "^0.2.4", - "semver": "^7.7.4", - "spdx-expression-parse": "^4.0.0", - "to-valid-identifier": "^1.0.0" - }, - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0" - } - }, - "node_modules/eslint-plugin-jsdoc/node_modules/eslint-visitor-keys": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", - "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-jsdoc/node_modules/espree": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz", - "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.16.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^5.0.1" - }, - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-prettier": { - "version": "5.5.6", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.6.tgz", - "integrity": "sha512-ifetmTcxWfz+4qRW3pH/ujdTq2jQIj59AxJMIN26K5avYgU8dxycUETQonWiW+wPrYXA0j3Try0l1CnwVQtDqQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "prettier-linter-helpers": "^1.0.1", - "synckit": "^0.11.13" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-plugin-prettier" - }, - "peerDependencies": { - "@types/eslint": ">=8.0.0", - "eslint": ">=8.0.0", - "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", - "prettier": ">=3.0.0" - }, - "peerDependenciesMeta": { - "@types/eslint": { - "optional": true - }, - "eslint-config-prettier": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.37.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", - "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.8", - "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.3", - "array.prototype.tosorted": "^1.1.4", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.2.1", - "estraverse": "^5.3.0", - "hasown": "^2.0.2", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.9", - "object.fromentries": "^2.0.8", - "object.values": "^1.2.1", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.12", - "string.prototype.repeat": "^1.0.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" - } - }, - "node_modules/eslint-plugin-react-hooks": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.1.1.tgz", - "integrity": "sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/core": "^7.24.4", - "@babel/parser": "^7.24.4", - "hermes-parser": "^0.25.1", - "zod": "^3.25.0 || ^4.0.0", - "zod-validation-error": "^3.5.0 || ^4.0.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint-plugin-react/node_modules/brace-expansion": { - "version": "1.1.17", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.17.tgz", - "integrity": "sha512-w+aeW/mkgM4PyRMOJCgi3fOrTm5Q8QY1OSfn2TO2iuDj3ezIHqejmuxbjfPrqUkgqRew1iqkyAn0tr0ZwHD9+w==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint-plugin-react/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-unicorn": { - "version": "64.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-64.0.0.tgz", - "integrity": "sha512-rNZwalHh8i0UfPlhNwg5BTUO1CMdKNmjqe+TgzOTZnpKoi8VBgsW7u9qCHIdpxEzZ1uwrJrPF0uRb7l//K38gA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.28.5", - "@eslint-community/eslint-utils": "^4.9.1", - "change-case": "^5.4.4", - "ci-info": "^4.4.0", - "clean-regexp": "^1.0.0", - "core-js-compat": "^3.49.0", - "find-up-simple": "^1.0.1", - "globals": "^17.4.0", - "indent-string": "^5.0.0", - "is-builtin-module": "^5.0.0", - "jsesc": "^3.1.0", - "pluralize": "^8.0.0", - "regexp-tree": "^0.1.27", - "regjsparser": "^0.13.0", - "semver": "^7.7.4", - "strip-indent": "^4.1.1" - }, - "engines": { - "node": "^20.10.0 || >=21.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1" - }, - "peerDependencies": { - "eslint": ">=9.38.0" - } - }, - "node_modules/eslint-plugin-unicorn/node_modules/ci-info": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", - "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint-scope": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.17", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.17.tgz", - "integrity": "sha512-w+aeW/mkgM4PyRMOJCgi3fOrTm5Q8QY1OSfn2TO2iuDj3ezIHqejmuxbjfPrqUkgqRew1iqkyAn0tr0ZwHD9+w==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", - "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/event-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-4.0.1.tgz", - "integrity": "sha512-qACXdu/9VHPBzcyhdOWR5/IahhGMf0roTeZJfzz077GwylcDd90yOHLouhmv7GJ5XzPi6ekaQWd8AvPP2nOvpA==", - "license": "MIT", - "dependencies": { - "duplexer": "^0.1.1", - "from": "^0.1.7", - "map-stream": "0.0.7", - "pause-stream": "^0.0.11", - "split": "^1.0.1", - "stream-combiner": "^0.2.2", - "through": "^2.3.8" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/fecha": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", - "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", - "license": "MIT" - }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "license": "MIT", - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/file-stream-rotator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/file-stream-rotator/-/file-stream-rotator-0.6.1.tgz", - "integrity": "sha512-u+dBid4PvZw17PmDeRcNOtCP9CCK/9lRN2w+r1xIS7yOL9JFrIBKTvrYsxT4P0pGtThYTn++QS5ChHaUov3+zQ==", - "license": "MIT", - "dependencies": { - "moment": "^2.29.1" - } - }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "license": "MIT", - "optional": true - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-up-simple": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz", - "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "license": "BSD-3-Clause", - "bin": { - "flat": "cli.js" - } - }, - "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/flatted": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.4.tgz", - "integrity": "sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==", - "dev": true, - "license": "ISC" - }, - "node_modules/fn.name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", - "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", - "license": "MIT" - }, - "node_modules/follow-redirects": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", - "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/form-data": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.6.tgz", - "integrity": "sha512-Ogz/E85h9tlfJzpI6TuFpGcHZFhLrb9Gw8wq9v40CxSCPnv7ahKr6Xgtkn0KYCDQJ8DNn5VoMO8EXr9V5PadyA==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.4", - "mime-types": "^2.1.35", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/from": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==", - "license": "MIT" - }, - "node_modules/fs-extra": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.4.0.tgz", - "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.2.0.tgz", - "integrity": "sha512-jObKIik1P2QjPHP5nz5BaOtUlfgS0fWo8IUByNXkM+o+02sJOi94em77GwJKQSJ3gfPHdgzLNrHc1uokV4P/ew==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.9", - "call-bound": "^1.0.4", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2", - "hasown": "^2.0.4", - "is-callable": "^1.2.7", - "is-document.all": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gaxios": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-7.3.0.tgz", - "integrity": "sha512-RB5vLV+vvQeoFPCX4QMK6/hjVkbIamPp1QSUD0CiZcnj12qbpiL+pLbYtgD+oZkWl0tl9z+o2Utp+MpM3QRhBA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "extend": "^3.0.2", - "https-proxy-agent": "^7.0.1", - "node-fetch": "^3.3.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/gaxios/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/gaxios/node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/gcp-metadata": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-8.1.2.tgz", - "integrity": "sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "gaxios": "^7.0.0", - "google-logging-utils": "^1.0.0", - "json-bigint": "^1.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/generator-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", - "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-east-asian-width": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz", - "integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "13.0.6", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "minimatch": "^10.2.2", - "minipass": "^7.1.3", - "path-scurry": "^2.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "17.8.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-17.8.0.tgz", - "integrity": "sha512-Zz/LMDZScFmkakeL2cTHzf+PbWKdpU3uclqkZT7TjDG58j5WPt0PpA+n9uPI24fZtlw07q0OtEi84K+umsRzqQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globalyzer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", - "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", - "license": "MIT" - }, - "node_modules/globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", - "license": "MIT" - }, - "node_modules/glossy": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/glossy/-/glossy-0.1.7.tgz", - "integrity": "sha512-mTCC51QFadK75MvAhrL5nPVIP291NjML1guo10Sa7Yj04tJU4V++Vgm780NIddg9etQD9D8FM67hFGqM8EE2HQ==", - "optional": true, - "engines": { - "node": ">= 0.2.5" - } - }, - "node_modules/google-auth-library": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.9.1.tgz", - "integrity": "sha512-i1ydyHrqcIxXkWh/uBmVkzCvIuq5yiK2ATndIe5XxKholrG/MTYP9xGYka4sQhrbIAgGjL2B6NOE7rFaiF3fXw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "base64-js": "^1.3.0", - "ecdsa-sig-formatter": "^1.0.11", - "gaxios": "^7.1.4", - "gcp-metadata": "8.1.2", - "google-logging-utils": "1.1.3", - "jws": "^4.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/google-gax": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-5.0.8.tgz", - "integrity": "sha512-M4vpZcXQIC1gqIVGQ7eaU3jXQA6zecStyTXu514TYfThlgSurYJOxHZo9fzU6hAgwPWvuEynAVHWyaIk80VeEA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@grpc/grpc-js": "^1.12.6", - "@grpc/proto-loader": "^0.8.0", - "duplexify": "^4.1.3", - "google-auth-library": "10.5.0", - "google-logging-utils": "1.1.3", - "node-fetch": "^3.3.2", - "object-hash": "^3.0.0", - "proto3-json-serializer": "3.0.4", - "protobufjs": "^7.5.4", - "retry-request": "^8.0.2", - "rimraf": "^5.0.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/google-gax/node_modules/google-auth-library": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.5.0.tgz", - "integrity": "sha512-7ABviyMOlX5hIVD60YOfHw4/CxOfBhyduaYB+wbFWCWoni4N7SLcV46hrVRktuBbZjFC9ONyqamZITN7q3n32w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "base64-js": "^1.3.0", - "ecdsa-sig-formatter": "^1.0.11", - "gaxios": "^7.0.0", - "gcp-metadata": "^8.0.0", - "google-logging-utils": "^1.0.0", - "gtoken": "^8.0.0", - "jws": "^4.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/google-logging-utils": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-1.1.3.tgz", - "integrity": "sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=14" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC" - }, - "node_modules/gtoken": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-8.0.0.tgz", - "integrity": "sha512-+CqsMbHPiSTdtSO14O51eMNlrp9N79gmeqmXeouJOhfucAedHw9noVe/n5uJk3tbKE6a+6ZCQg3RPhVhHByAIw==", - "dev": true, - "license": "MIT", - "dependencies": { - "gaxios": "^7.0.0", - "jws": "^4.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", - "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "license": "MIT", - "bin": { - "he": "bin/he" - } - }, - "node_modules/hermes-estree": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", - "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", - "dev": true, - "license": "MIT" - }, - "node_modules/hermes-parser": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", - "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "hermes-estree": "0.25.1" - } - }, - "node_modules/html-entities": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", - "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ], - "license": "MIT" - }, - "node_modules/html-tags": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", - "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/http-proxy-agent/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", - "license": "MIT" - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-in-the-middle": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-3.3.2.tgz", - "integrity": "sha512-jTd2FfOgOWOdgjkHuk/1Ms8VKFXkPs15ymYBETw1sAOrO/dY3XeGVRWir9qBbw7pXr0T2eTFwfCZ+N02HmiNGA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "cjs-module-lexer": "^2.2.0", - "es-module-lexer": "^2.2.0", - "module-details-from-path": "^1.0.4" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/is/-/is-3.3.2.tgz", - "integrity": "sha512-a2xr4E3s1PjDS8ORcGgXpWx6V+liNs+O3JRD2mb9aeugD7rtkkZ0zgLdYgw0tWsKhsdiezGYptSiMlVazCBTuQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-builtin-module": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-5.0.0.tgz", - "integrity": "sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "builtin-modules": "^5.0.0" - }, - "engines": { - "node": ">=18.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", - "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-document.all": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-document.all/-/is-document.all-1.0.0.tgz", - "integrity": "sha512-+XSoyS05OdBbhFuELhgTCpFNHkpBOJqtsZfUFFpe5QTw+9Sjbh8zitxhQkYAo6wV7e1Vb8cAPvpCk9jGam/82g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-function": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", - "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.4", - "generator-function": "^2.0.0", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-html": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-html/-/is-html-2.0.0.tgz", - "integrity": "sha512-S+OpgB5i7wzIue/YSE5hg0e5ZYfG3hhpNh9KGl6ayJ38p7ED6wxQLd1TV91xHpcTvw90KMJ9EwN3F/iNflHBVg==", - "dev": true, - "license": "MIT", - "dependencies": { - "html-tags": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "node_modules/iterator.prototype": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", - "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "get-proto": "^1.0.0", - "has-symbols": "^1.1.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz", - "integrity": "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/puzrin" - }, - { - "type": "github", - "url": "https://github.com/sponsors/nodeca" - } - ], - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsdoc-type-pratt-parser": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-7.2.0.tgz", - "integrity": "sha512-dh140MMgjyg3JhJZY/+iEzW+NO5xR2gpbDFKHqotCmexElVntw7GjWjt511+C/Ef02RU5TKYrJo/Xlzk+OLaTw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/jsesc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", - "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, - "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json-bigint": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", - "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "bignumber.js": "^9.0.0" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonata": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/jsonata/-/jsonata-2.2.2.tgz", - "integrity": "sha512-XDFH2PuaAXv0AXJEWwElXbqADmKFGKMLMkFb+qOz0EhjQW2EIJ6pgtordLU+4u3IVERyBfqy6bi6kZKEncvRqA==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/jsonc-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", - "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/jsonfile": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", - "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonwebtoken": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", - "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", - "license": "MIT", - "dependencies": { - "jws": "^4.0.1", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=12", - "npm": ">=6" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/jszip": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "license": "(MIT OR GPL-3.0-or-later)", - "dependencies": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - } - }, - "node_modules/jszip/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT" - }, - "node_modules/jszip/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/jszip/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT" - }, - "node_modules/jszip/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/jwa": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", - "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", - "license": "MIT", - "dependencies": { - "buffer-equal-constant-time": "^1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jws": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", - "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", - "license": "MIT", - "dependencies": { - "jwa": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kuler": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", - "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", - "license": "MIT" - }, - "node_modules/ky": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/ky/-/ky-1.14.3.tgz", - "integrity": "sha512-9zy9lkjac+TR1c2tG+mkNSVlyOpInnWdSMiue4F+kq8TwJSgv6o8jhLRg8Ho6SnZ9wOYUq/yozts9qQCfk7bIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sindresorhus/ky?sponsor=1" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "license": "MIT", - "dependencies": { - "immediate": "~3.0.5" - } - }, - "node_modules/localforage": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", - "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "lie": "3.1.1" - } - }, - "node_modules/localforage/node_modules/lie": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", - "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", - "dev": true, - "license": "MIT", - "dependencies": { - "immediate": "~3.0.5" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", - "license": "MIT" - }, - "node_modules/lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", - "license": "MIT" - }, - "node_modules/lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", - "license": "MIT" - }, - "node_modules/lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", - "license": "MIT" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "license": "MIT" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "license": "MIT" - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/logform": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.7.0.tgz", - "integrity": "sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==", - "license": "MIT", - "dependencies": { - "@colors/colors": "1.6.0", - "@types/triple-beam": "^1.3.2", - "fecha": "^4.2.0", - "ms": "^2.1.1", - "safe-stable-stringify": "^2.3.1", - "triple-beam": "^1.3.0" - }, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/loglevel": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz", - "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" - } - }, - "node_modules/long": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", - "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/long-timeout": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz", - "integrity": "sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==", - "license": "MIT" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/loupe": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.1" - } - }, - "node_modules/lru-cache": { - "version": "11.2.7", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/luxon": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz", - "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==", - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, - "node_modules/map-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", - "integrity": "sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ==", - "license": "MIT" - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "license": "MIT" - }, - "node_modules/meriyah": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/meriyah/-/meriyah-6.1.4.tgz", - "integrity": "sha512-Sz8FzjzI0kN13GK/6MVEsVzMZEPvOhnmmI1lU5+/1cGOiK3QUahntrNNtdVeihrO7t9JpoH75iMNXg6R6uWflQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "10.2.4", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/mocha": { - "version": "11.7.6", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.6.tgz", - "integrity": "sha512-nS9xOGbw2I3cjCpxwZAEJ9xK9lmJ08vEkQvLtz4du9ZrF9UrjRpeJGiIgl2Z+Qs++pmB4ecDe48Fwsh+j+j7xA==", - "dev": true, - "license": "MIT", - "dependencies": { - "browser-stdout": "^1.3.1", - "chokidar": "^4.0.1", - "debug": "^4.3.5", - "diff": "^7.0.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^10.4.5", - "he": "^1.2.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^9.0.5", - "ms": "^2.1.3", - "picocolors": "^1.1.1", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^9.2.0", - "yargs": "^17.7.2", - "yargs-parser": "^21.1.1", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/mocha/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/mocha/node_modules/brace-expansion": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.3.tgz", - "integrity": "sha512-DRdx5neNsG/QXbniLFWi2YmC/68oeOOmKz6zOjVk6ZS1ZLXgLIKqVEc6hWsmkjBbgii0SwaBTcJ5XKj5gzY/4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/mocha/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/mocha/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/mocha/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/mocha/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/mocha/node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/module-details-from-path": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.4.tgz", - "integrity": "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==", - "dev": true, - "license": "MIT" - }, - "node_modules/moment": { - "version": "2.30.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", - "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/nan": { - "version": "2.28.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.28.0.tgz", - "integrity": "sha512-fTsDz99OTq2sVePhGdp4qQhggZFtKr64ZNVyVajRKtMOkJxYekplBh577PiJB12v/D3s2E5cGtOI45LWp6rnLQ==", - "license": "MIT", - "optional": true - }, - "node_modules/nano-spawn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/nano-spawn/-/nano-spawn-2.1.0.tgz", - "integrity": "sha512-yTW+2okrElHiH4fsiz/+/zc0EDo9BDDoC3iKk8dpv1GeRc9nUWzUZHx6TofMWErchhUQR8hY9/Eu1Uja9x1nqA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/nano-spawn?sponsor=1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "deprecated": "Use your platform's native DOMException instead", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "license": "MIT", - "engines": { - "node": ">=10.5.0" - } - }, - "node_modules/node-exports-info": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/node-exports-info/-/node-exports-info-1.6.2.tgz", - "integrity": "sha512-kXs9Go0cah0qHVV2v389IXQLdLCeE1xfFtjOAF+iobu0OIoG1pje8At2vMHyaPMiPMnG/LWP50twML21eMcAag==", - "dev": true, - "license": "MIT", - "dependencies": { - "array.prototype.flatmap": "^1.3.3", - "es-errors": "^1.3.0", - "object.entries": "^1.1.9", - "semver": "^6.3.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/node-exports-info/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, - "node_modules/node-forge": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.0.tgz", - "integrity": "sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==", - "license": "(BSD-3-Clause OR GPL-2.0)", - "engines": { - "node": ">= 6.13.0" - } - }, - "node_modules/node-inspect": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/node-inspect/-/node-inspect-2.0.0.tgz", - "integrity": "sha512-vaDNU6Fa/vt8gv/PV+QoeSIPhcBnHMiNOtInxcojfagspQg5KP9HloUDGJWIacamT8Agiu51eF+fuBjrE25a6w==", - "deprecated": "This module is part of Node.js core and does not need to be installed separately. It is now unmaintained.", - "license": "MIT", - "bin": { - "node-inspect": "cli.js" - } - }, - "node_modules/node-releases": { - "version": "2.0.51", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.51.tgz", - "integrity": "sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/node-schedule": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-2.1.1.tgz", - "integrity": "sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==", - "license": "MIT", - "dependencies": { - "cron-parser": "^4.2.0", - "long-timeout": "0.1.1", - "sorted-array-functions": "^1.3.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/node.extend": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-2.0.3.tgz", - "integrity": "sha512-xwADg/okH48PvBmRZyoX8i8GJaKuJ1CqlqotlZOhUio8egD1P5trJupHKBzcPjSF9ifK2gPcEICRBnkfPqQXZw==", - "license": "(MIT OR GPL-2.0)", - "dependencies": { - "hasown": "^2.0.0", - "is": "^3.3.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/nodemailer": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-9.0.3.tgz", - "integrity": "sha512-n+YP+NKwR5zRWa60k3GiQ6Q3B4KXCoAw40dAKeCtYn020iNN74aWK2liXIC3ZEATeGql7we3tE3t8QwhY0eskw==", - "license": "MIT-0", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-deep-merge": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object-deep-merge/-/object-deep-merge-2.0.1.tgz", - "integrity": "sha512-aKttDKcU3pyZqKcCkDhsMn70WmZFG2JGDQLP9EcLyTSIFQRCPWLAmBZRLJnrVUrhPG1jETEEbfdgbNtJf1LyMg==", - "dev": true, - "license": "MIT" - }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", - "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", - "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/one-time": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", - "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", - "license": "MIT", - "dependencies": { - "fn.name": "1.x.x" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/own-keys": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.2.tgz", - "integrity": "sha512-19YVAg7T+WTrxggPukVq7DjTv6+PJ867TmhCvBsYwmbFCsZd344rq2Ld1p0wo8f8Qrrhgp82c6FJRqdXWtSEhg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.4", - "get-intrinsic": "^1.3.0", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true, - "license": "BlueOak-1.0.0" - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "license": "(MIT AND Zlib)" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-imports-exports": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz", - "integrity": "sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "parse-statements": "1.0.11" - } - }, - "node_modules/parse-statements": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/parse-statements/-/parse-statements-1.0.11.tgz", - "integrity": "sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==", - "dev": true, - "license": "MIT" - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT" - }, - "node_modules/path-scurry": { - "version": "2.0.2", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/pause-stream": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", - "license": [ - "MIT", - "Apache2" - ], - "dependencies": { - "through": "~2.3" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", - "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.9.6", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.9.6.tgz", - "integrity": "sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==", - "license": "MIT", - "peer": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz", - "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-diff": "^1.1.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "license": "MIT" - }, - "node_modules/promisify-child-process": { - "version": "5.0.1", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.26.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/proto3-json-serializer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-3.0.4.tgz", - "integrity": "sha512-E1sbAYg3aEbXrq0n1ojJkRHQJGE1kaE/O6GLA94y8rnJBfgvOPTOd1b9hOceQK1FFZI9qMh1vBERCyO2ifubcw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "protobufjs": "^7.4.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/protobufjs": { - "version": "7.6.5", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.6.5.tgz", - "integrity": "sha512-/FPD0nUc9jH6rfFjji9IBqOz4pcSE3CsT1m7Ep6Mdb0LxSUMj8hgl6GomOvZzpNpAqqGaXA0P3VSrZLFzIhQrw==", - "dev": true, - "hasInstallScript": true, - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.5", - "@protobufjs/eventemitter": "^1.1.1", - "@protobufjs/fetch": "^1.1.1", - "@protobufjs/float": "^1.0.2", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.1", - "@types/node": ">=13.7.0", - "long": "^5.3.2" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/proxy-from-env": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", - "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/readline": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz", - "integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==", - "license": "BSD" - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp-tree": { - "version": "0.1.27", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", - "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", - "dev": true, - "license": "MIT", - "bin": { - "regexp-tree": "bin/regexp-tree" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regjsparser": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.2.tgz", - "integrity": "sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "jsesc": "~3.1.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-in-the-middle": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-8.0.1.tgz", - "integrity": "sha512-QT7FVMXfWOYFbeRBF6nu+I6tr2Tf3u0q8RIEjNob/heKY/nh7drD/k7eeMFmSQgnTtCzLDcCu/XEnpW2wk4xCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.5", - "module-details-from-path": "^1.0.3" - }, - "engines": { - "node": ">=9.3.0 || >=8.10.0 <9.0.0" - } - }, - "node_modules/reserved-identifiers": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/reserved-identifiers/-/reserved-identifiers-1.2.0.tgz", - "integrity": "sha512-yE7KUfFvaBFzGPs5H3Ops1RevfUEsDc5Iz65rOwWg4lE8HJSYtle77uul3+573457oHvBKuHYDl/xqUkKpEEdw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/resolve": { - "version": "2.0.0-next.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.7.tgz", - "integrity": "sha512-tqt+NBWwyaMgw3zDsnygx4CByWjQEJHOPMdslYhppaQSJUtL/D4JO9CcBBlhPoI8lz9oJIDXkwXfhF4aWqP8xQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "is-core-module": "^2.16.2", - "node-exports-info": "^1.6.0", - "object-keys": "^1.1.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/retry-request": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-8.0.4.tgz", - "integrity": "sha512-pI6/7eabUYkZxamkOq0g0uMxKLLGnjzhefY+vL8bVXag5rto4OU2YBTPytWLuHH7aEKD6fn7kJycQfid0Mwnkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "extend": "^3.0.2", - "teeny-request": "^10.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/rimraf": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", - "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/rimraf/node_modules/brace-expansion": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.3.tgz", - "integrity": "sha512-DRdx5neNsG/QXbniLFWi2YmC/68oeOOmKz6zOjVk6ZS1ZLXgLIKqVEc6hWsmkjBbgii0SwaBTcJ5XKj5gzY/4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/rimraf/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/safe-array-concat": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.4.tgz", - "integrity": "sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.9", - "call-bound": "^1.0.4", - "get-intrinsic": "^1.3.0", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-stable-stringify": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", - "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/semifies": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semifies/-/semifies-1.0.0.tgz", - "integrity": "sha512-xXR3KGeoxTNWPD4aBvL5NUpMTT7WMANr3EWnaS190QVkY52lqqcVRD7Q05UVbBhiWDGWMlJEUam9m7uFFGVScw==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/semver": { - "version": "7.8.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", - "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/seq-logging": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/seq-logging/-/seq-logging-1.1.2.tgz", - "integrity": "sha512-9n7bCIHiMdBene104oSEa2917OcNBw+uee2v+we4AQxmjqt/aeQkWy1296IvGsogbj5fK6wuDNhVhm/DYmauVA==", - "license": "Apache-2.0", - "optional": true - }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "license": "MIT" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", - "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.4", - "side-channel-list": "^1.0.1", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", - "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "license": "ISC" - }, - "node_modules/sinon": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-22.1.0.tgz", - "integrity": "sha512-n1ajF2rBWMTtEwbKcw4UdFg4nCnDdq/U6RDoxtOd7oapOlRoJ5ynwFx60owROyhDpA9QhMZi0pCO/xtmwFjG7w==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1", - "@sinonjs/fake-timers": "^15.4.0", - "@sinonjs/samsam": "^10.0.2", - "diff": "^9.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/sinon" - } - }, - "node_modules/sinon-chai": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-3.7.0.tgz", - "integrity": "sha512-mf5NURdUaSdnatJx3uhoBOrY9dtL19fiOtAdT1Azxg3+lNJFiuN0uzaU3xX1LeAfL17kHQhTAJgpsfhbMJMY2g==", - "dev": true, - "license": "(BSD-2-Clause OR WTFPL)", - "peerDependencies": { - "chai": "^4.0.0", - "sinon": ">=4.0.0" - } - }, - "node_modules/sinon/node_modules/diff": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-9.0.0.tgz", - "integrity": "sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/sorted-array-functions": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.3.0.tgz", - "integrity": "sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==", - "license": "MIT" - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true, - "license": "CC-BY-3.0" - }, - "node_modules/spdx-expression-parse": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", - "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.23", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz", - "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "license": "MIT", - "dependencies": { - "through": "2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/stop-iteration-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", - "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "internal-slot": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/stream-combiner": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", - "integrity": "sha512-6yHMqgLYDzQDcAkL+tjJDC5nSNuNIx0vZtRZeiPh7Saef7VHX9H5Ijn9l2VIol2zaNYlYEX6KyuT/237A58qEQ==", - "license": "MIT", - "dependencies": { - "duplexer": "~0.1.1", - "through": "~2.3.4" - } - }, - "node_modules/stream-events": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", - "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", - "dev": true, - "license": "MIT", - "dependencies": { - "stubs": "^3.0.0" - } - }, - "node_modules/stream-shift": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", - "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.matchall": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", - "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.6", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "internal-slot": "^1.1.0", - "regexp.prototype.flags": "^1.5.3", - "set-function-name": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.repeat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", - "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.11.tgz", - "integrity": "sha512-PwvK7BU+CMTJGYQCTZb5RWXIML92lftJLhQz1tBzgKiqGxJaMlBAa48POXaNAC2s4y8jr3EFqrkF9+44neS46w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.9", - "call-bound": "^1.0.4", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.2", - "es-object-atoms": "^1.1.2", - "has-property-descriptors": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.10.tgz", - "integrity": "sha512-2+3aDAOmPTmuFwjDnmJG2ctEkQKVki7vOSqaxkv42Mowj1V6PnvuwFCRrR5lChUux1TBskPjfkeTOhqczDMxTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.9", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-indent": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.1.1.tgz", - "integrity": "sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/stubs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", - "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==", - "dev": true, - "license": "MIT" - }, - "node_modules/suncalc2": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/suncalc2/-/suncalc2-1.8.1.tgz", - "integrity": "sha512-tNoAni1LqWzBzJRX3NRCsD50gVsuejH1jd9Y+XyKO3WkpPIU+QNyWF4Zf2JnUQKW2LKLWIBgVDQCrgsQwqs0tA==" - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/synckit": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.13.tgz", - "integrity": "sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@pkgr/core": "^0.3.6" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/synckit" - } - }, - "node_modules/teeny-request": { - "version": "10.1.4", - "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-10.1.4.tgz", - "integrity": "sha512-R1Cg4Vu0UULeDfHL/kjABLaTW++9yD/B6n2g48y5dJ04hsEaxcfmAqbNDzNsbqAYJyIpZafjklLG9YxRu9uzOg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.1", - "node-fetch": "^3.3.2", - "stream-events": "^1.0.5" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/teeny-request/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/teeny-request/node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/text-hex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", - "license": "MIT" - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "license": "MIT" - }, - "node_modules/timekeeper": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/timekeeper/-/timekeeper-2.3.1.tgz", - "integrity": "sha512-LeQRS7/4JcC0PgdSFnfUiStQEdiuySlCj/5SJ18D+T1n9BoY7PxKFfCwLulpHXoLUFr67HxBddQdEX47lDGx1g==", - "dev": true, - "license": "MIT" - }, - "node_modules/tiny-glob": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", - "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", - "license": "MIT", - "dependencies": { - "globalyzer": "0.1.0", - "globrex": "^0.1.2" - } - }, - "node_modules/tinyglobby": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", - "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/to-valid-identifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-valid-identifier/-/to-valid-identifier-1.0.0.tgz", - "integrity": "sha512-41wJyvKep3yT2tyPqX/4blcfybknGB4D+oETKLs7Q76UiPqRpUJK3hr1nxelyYO0PHKVzJwlu0aCeEAsGI6rpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/base62": "^1.0.0", - "reserved-identifiers": "^1.0.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/triple-beam": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", - "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", - "license": "MIT", - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/ts-api-utils": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", - "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.12" - }, - "peerDependencies": { - "typescript": ">=4.8.4" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", - "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.8.tgz", - "integrity": "sha512-phPGCwqr2+Qo0fwniCE8e4pKnGu/yFb5nD5Y8bf0EEeiI5GklnACYA9GFy/DrAeRrKHXvHn+1SUsOWgJp6RO+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.9", - "for-each": "^0.3.5", - "gopd": "^1.2.0", - "is-typed-array": "^1.1.15", - "possible-typed-array-names": "^1.1.0", - "reflect.getprototypeof": "^1.0.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typescript": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", - "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", - "license": "Apache-2.0", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/typescript-eslint": { - "version": "8.65.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.65.0.tgz", - "integrity": "sha512-/ggrHAwyjENDusvyxbuqxAC2dTnZg/Z8F+fgQtYIz+L6n/9HfSlEZcFGV/NsMNa6CkGk0xUjUAFwC0vHOflvIA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.65.0", - "@typescript-eslint/parser": "8.65.0", - "@typescript-eslint/typescript-estree": "8.65.0", - "@typescript-eslint/utils": "8.65.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "license": "MIT" - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unix-dgram": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/unix-dgram/-/unix-dgram-2.0.6.tgz", - "integrity": "sha512-AURroAsb73BZ6CdAyMrTk/hYKNj3DuYYEuOaB8bYMOHGKupRNScw90Q5C71tWJc3uE7dIeXRyuwN0xLLq3vDTg==", - "hasInstallScript": true, - "license": "ISC", - "optional": true, - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.16.0" - }, - "engines": { - "node": ">=0.10.48" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/update-browserslist-db/node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT" - }, - "node_modules/virtual-tsc": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/virtual-tsc/-/virtual-tsc-0.6.2.tgz", - "integrity": "sha512-NeCuRFla3ASmhn24Da00UzEQX2FoLrOWX7P3K0IK0kK2WX//joUOLbOYkQEQg+FqYf75lw9jBI++iGszvospjg==", - "license": "MIT", - "dependencies": { - "debug": "^4.3.3", - "picocolors": "1.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "typescript": ">=2.0.0" - } - }, - "node_modules/wake_on_lan": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wake_on_lan/-/wake_on_lan-1.0.0.tgz", - "integrity": "sha512-0QSpxny0QmsssshI6kePj6cobQPK+i8r5shfj58ZfQIUH9fUTyAaYPqZO3W/Ai7mN4vQVdTdsSGIr20M81UL6Q==", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "wake": "wake" - } - }, - "node_modules/web-streams-polyfill": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", - "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.22", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.22.tgz", - "integrity": "sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.9", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/winston": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.19.0.tgz", - "integrity": "sha512-LZNJgPzfKR+/J3cHkxcpHKpKKvGfDZVPS4hfJCc4cCG0CgYzvlD6yE/S3CIL/Yt91ak327YCpiF/0MyeZHEHKA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@colors/colors": "^1.6.0", - "@dabh/diagnostics": "^2.0.8", - "async": "^3.2.3", - "is-stream": "^2.0.0", - "logform": "^2.7.0", - "one-time": "^1.0.0", - "readable-stream": "^3.4.0", - "safe-stable-stringify": "^2.3.1", - "stack-trace": "0.0.x", - "triple-beam": "^1.3.0", - "winston-transport": "^4.9.0" - }, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/winston-daily-rotate-file": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-5.0.0.tgz", - "integrity": "sha512-JDjiXXkM5qvwY06733vf09I2wnMXpZEhxEVOSPenZMii+g7pcDcTBt2MRugnoi8BwVSuCT2jfRXBUy+n1Zz/Yw==", - "license": "MIT", - "dependencies": { - "file-stream-rotator": "^0.6.1", - "object-hash": "^3.0.0", - "triple-beam": "^1.4.1", - "winston-transport": "^4.7.0" - }, - "engines": { - "node": ">=8" - }, - "peerDependencies": { - "winston": "^3" - } - }, - "node_modules/winston-syslog": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/winston-syslog/-/winston-syslog-2.7.1.tgz", - "integrity": "sha512-MrU5gSwXgEbHwz5wFhn1rZtSCbRcP1PEB8zU49tgsfjQ63EjIVAkQpXmMocdbTLnTJ2cW3gLW6gmoOOOhyJZgg==", - "license": "MIT", - "optional": true, - "dependencies": { - "glossy": "^0.1.7", - "triple-beam": "^1.3.0", - "winston-transport": "^4.5.0" - }, - "engines": { - "node": ">= 8" - }, - "optionalDependencies": { - "unix-dgram": "2.0.6" - }, - "peerDependencies": { - "winston": "^3.8.2" - } - }, - "node_modules/winston-transport": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.9.0.tgz", - "integrity": "sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==", - "license": "MIT", - "dependencies": { - "logform": "^2.7.0", - "readable-stream": "^3.6.2", - "triple-beam": "^1.3.0" - }, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/workerpool": { - "version": "9.3.4", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.3.4.tgz", - "integrity": "sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" - }, - "node_modules/yargs": { - "version": "17.7.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.3.tgz", - "integrity": "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zod": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", - "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", - "dev": true, - "license": "MIT", - "peer": true, - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, - "node_modules/zod-validation-error": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz", - "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "zod": "^3.25.0 || ^4.0.0" - } + "name": "iobroker.javascript", + "version": "10.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "iobroker.javascript", + "version": "10.0.0", + "license": "MIT", + "dependencies": { + "@iobroker/adapter-core": "^3.4.3", + "@iobroker/types": "^7.2.2", + "@types/node": "^22.19.43", + "axios": "^1.19.0", + "jsonata": "^2.2.2", + "jszip": "^3.10.1", + "node-inspect": "^2.0.0", + "node-schedule": "2.1.1", + "nodemailer": "^9.0.3", + "prettier": "^3.9.6", + "promisify-child-process": "^5.0.1", + "semver": "^7.8.5", + "suncalc2": "^1.8.1", + "typescript": "~6.0.3", + "virtual-tsc": "^0.6.2", + "wake_on_lan": "^1.0.0" + }, + "devDependencies": { + "@alcalzone/release-script": "^5.2.1", + "@alcalzone/release-script-plugin-iobroker": "^5.2.0", + "@alcalzone/release-script-plugin-license": "^5.2.2", + "@iobroker/adapter-dev": "^1.5.0", + "@iobroker/build-tools": "^3.0.1", + "@iobroker/eslint-config": "^2.3.4", + "@iobroker/plugin-sentry": "^3.1.2", + "@iobroker/testing": "^5.3.0", + "@types/node-schedule": "^2.1.8", + "@types/nodemailer": "^8.0.1", + "@types/request": "^2.48.13", + "@types/suncalc": "^1.9.2", + "alcalzone-shared": "^5.0.0", + "timekeeper": "^2.3.1" + }, + "engines": { + "node": ">=22" + } + }, + "node_modules/@alcalzone/esbuild-register": { + "version": "2.5.1-1", + "resolved": "https://registry.npmjs.org/@alcalzone/esbuild-register/-/esbuild-register-2.5.1-1.tgz", + "integrity": "sha512-u19/K/ZaiWQhYIQZeF2FImUeJDiMD4i2h7qPdU0HVFCxoQynye59N4oy6EvjxeXaxLnGkppcb5KKeiYD4cT1iQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.11.5", + "jsonc-parser": "^3.0.0" + } + }, + "node_modules/@alcalzone/esbuild-register/node_modules/esbuild": { + "version": "0.11.23", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.11.23.tgz", + "integrity": "sha512-iaiZZ9vUF5wJV8ob1tl+5aJTrwDczlvGP0JoMmnpC2B0ppiMCu8n8gmy5ZTGl5bcG081XBVn+U+jP+mPFm5T5Q==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + } + }, + "node_modules/@alcalzone/pak": { + "version": "0.12.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ky": "^1.14.3", + "nano-spawn": "^2.0.0", + "semver": "^7.7.4", + "tiny-glob": "^0.2.9" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/@alcalzone/release-script": { + "version": "5.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@alcalzone/release-script-core": "5.2.0", + "@alcalzone/release-script-plugin-changelog": "5.2.1", + "@alcalzone/release-script-plugin-exec": "5.2.0", + "@alcalzone/release-script-plugin-git": "5.2.0", + "@alcalzone/release-script-plugin-package": "5.2.0", + "@alcalzone/release-script-plugin-version": "5.2.0", + "alcalzone-shared": "^5.0.0", + "enquirer": "^2.3.6", + "picocolors": "1.0.0", + "semver": "^7.7.2", + "source-map-support": "^0.5.21", + "yargs": "^17.4.1" + }, + "bin": { + "release-script": "bin/release.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@alcalzone/release-script-core": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^5.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@alcalzone/release-script-plugin-changelog": { + "version": "5.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@alcalzone/release-script-core": "5.2.0", + "alcalzone-shared": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@alcalzone/release-script-plugin-exec": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@alcalzone/release-script-core": "5.2.0", + "alcalzone-shared": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@alcalzone/release-script-plugin-git": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@alcalzone/release-script-core": "5.2.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@alcalzone/release-script-plugin-iobroker": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@alcalzone/release-script-core": "5.2.0", + "alcalzone-shared": "^5.0.0", + "ky": "^1.7.5", + "semver": "^7.7.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@alcalzone/release-script-plugin-license": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@alcalzone/release-script-plugin-license/-/release-script-plugin-license-5.2.2.tgz", + "integrity": "sha512-dFvG/QuZWxZ+hRu1nGcqtPHnwnLiPQgBvfRu/NvkYMug7MzYN7SSFN9JkIKNqbxzW/GWjSgrPrrB2bQ9vFYKwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alcalzone/release-script-core": "5.2.0", + "tiny-glob": "^0.2.9" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@alcalzone/release-script-plugin-package": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@alcalzone/pak": "^0.12.0", + "@alcalzone/release-script-core": "5.2.0", + "alcalzone-shared": "^5.0.0", + "semver": "^7.7.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@alcalzone/release-script-plugin-version": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@alcalzone/release-script-core": "5.2.0", + "alcalzone-shared": "^5.0.0", + "semver": "^7.7.2", + "tiny-glob": "^0.2.9" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@apm-js-collab/code-transformer": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/@apm-js-collab/code-transformer/-/code-transformer-0.18.1.tgz", + "integrity": "sha512-u1Hb6bHjWtkSpiprwVP6YaHC1DTN4RAU3zYkUDUe7WMnJwdyU1pwTL9dFKiSJB9IiLue/EQovmyx6xhU7FFtAQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/estree": "^1.0.8", + "astring": "^1.9.0", + "esquery": "^1.7.0", + "meriyah": "^6.1.4", + "semifies": "^1.0.0", + "source-map": "^0.6.0" + }, + "bin": { + "code-transformer": "cli.js" + } + }, + "node_modules/@apm-js-collab/code-transformer-bundler-plugins": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@apm-js-collab/code-transformer-bundler-plugins/-/code-transformer-bundler-plugins-0.7.3.tgz", + "integrity": "sha512-qNbPwuMZ8f5ZuGj/ttPeB7a6C/S1bB6tNYaEL5vNiRKydSAxa4AU0gxCWgaP4fVju+AuwhcumSFjrEcGF9Dv7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@apm-js-collab/code-transformer": "^0.18.0", + "es-module-lexer": "^2.1.0", + "magic-string": "^0.30.21", + "module-details-from-path": "^1.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@apm-js-collab/tracing-hooks": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@apm-js-collab/tracing-hooks/-/tracing-hooks-0.13.0.tgz", + "integrity": "sha512-mTvWz9rnQwx1U3h0XPTHaX7bgfkpipLLTQyjlC2cdhQpQEuoLT0AGzoydeoq2NxfEVv6fWOOETcSbb2nptleyw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@apm-js-collab/code-transformer": "^0.18.0", + "debug": "^4.4.1", + "module-details-from-path": "^1.0.4" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.29.7", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC", + "peer": true + }, + "node_modules/@babel/compat-data": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz", + "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", + "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/types": "^7.29.7" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz", + "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz", + "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", + "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@dabh/diagnostics": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.8.tgz", + "integrity": "sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==", + "license": "MIT", + "peer": true, + "dependencies": { + "@so-ric/colorspace": "^1.1.6", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, + "node_modules/@datalust/winston-seq": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@datalust/winston-seq/-/winston-seq-1.0.2.tgz", + "integrity": "sha512-TxmBkN/26j+8rC/yshm9t29DKSPN69cQuGyvRmufvhPQIU2SnDlQLZmEGsPL3vQYWoBTTgu7+foYs+HmgeOl/g==", + "license": "Apache-2.0", + "optional": true, + "peer": true, + "dependencies": { + "seq-logging": "^1.1.1", + "winston-transport": "^4.4.2" + }, + "peerDependencies": { + "winston": "^3.0.0" + } + }, + "node_modules/@es-joy/jsdoccomment": { + "version": "0.86.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.86.0.tgz", + "integrity": "sha512-ukZmRQ81WiTpDWO6D/cTBM7XbrNtutHKvAVnZN/8pldAwLoJArGOvkNyxPTBGsPjsoaQBJxlH+tE2TNA/92Qgw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/estree": "^1.0.8", + "@typescript-eslint/types": "^8.58.0", + "comment-parser": "1.4.6", + "esquery": "^1.7.0", + "jsdoc-type-pratt-parser": "~7.2.0" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + } + }, + "node_modules/@es-joy/resolve.exports": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@es-joy/resolve.exports/-/resolve.exports-1.2.0.tgz", + "integrity": "sha512-Q9hjxWI5xBM+qW2enxfe8wDKdFWMfd0Z29k5ZJnuBqD/CasY5Zryj09aCA6owbGATWz+39p5uIdaHXpopOcG8g==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.10.1.tgz", + "integrity": "sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.5" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-array/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.17", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.17.tgz", + "integrity": "sha512-w+aeW/mkgM4PyRMOJCgi3fOrTm5Q8QY1OSfn2TO2iuDj3ezIHqejmuxbjfPrqUkgqRew1iqkyAn0tr0ZwHD9+w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.6.tgz", + "integrity": "sha512-l2Ul9PrHsPCKcEY/ac7VgFj9D80C7S68sOKc618SyHDPK36s1XcFebXY0iTzUVn4Yq+YbwvSnDmCz9yxjX+QrA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ajv": "^6.14.0", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.3.0", + "minimatch": "^3.1.5", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.17", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.17.tgz", + "integrity": "sha512-w+aeW/mkgM4PyRMOJCgi3fOrTm5Q8QY1OSfn2TO2iuDj3ezIHqejmuxbjfPrqUkgqRew1iqkyAn0tr0ZwHD9+w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "9.39.5", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.5.tgz", + "integrity": "sha512-QywQuszQh77pIXCsq998c8hbhSTI/azTty1Z6N53dmAudKHhy573j3yvRLsX2BSp8YpLtoCEG8E9DJe+8zUh4A==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@esm2cjs/execa": { + "version": "6.1.1-cjs.1", + "resolved": "https://registry.npmjs.org/@esm2cjs/execa/-/execa-6.1.1-cjs.1.tgz", + "integrity": "sha512-FHxfnmuDIjY1VS/BLzDkL8EkbcFvi8s6x1nYQ1Nyu0An0n88EJcGhDBcRWLFwt3C3nT7xwI+MwHRH1TZcAFW2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@esm2cjs/human-signals": "^3.0.1", + "@esm2cjs/is-stream": "^3.0.0", + "@esm2cjs/npm-run-path": "^5.1.1-cjs.0", + "@esm2cjs/onetime": "^6.0.1-cjs.0", + "@esm2cjs/strip-final-newline": "^3.0.1-cjs.0", + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "merge-stream": "^2.0.0", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/AlCalzone" + } + }, + "node_modules/@esm2cjs/human-signals": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@esm2cjs/human-signals/-/human-signals-3.0.1.tgz", + "integrity": "sha512-QZme4eF/PwTpeSbMB4AaWGQ4VSygzE30jI+Oas1NPTtZQAgcHwWVDOQpIW8FUmtzn5Q+2cS7AjnTzbtqtc5P6g==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.20.0" + }, + "funding": { + "url": "https://github.com/sponsors/AlCalzone" + } + }, + "node_modules/@esm2cjs/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@esm2cjs/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-qcBscHlJpZFOD5nnmMHkzOrq2xyvsp9fbVreQLS8x2LOs8N3CrNi3fqvFY0GVJR+YSOHscwhG9T5t4Ck7R7QGw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/AlCalzone" + } + }, + "node_modules/@esm2cjs/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@esm2cjs/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-LIIAjcpjLr4rcbYmRQ+eRu55Upy/MMB78seIlwqbnyiA+cTa1/pxWnJ1NHJQrw6tx2wMQmlYoJj+wf16NjWH6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/AlCalzone" + } + }, + "node_modules/@esm2cjs/npm-run-path": { + "version": "5.1.1-cjs.0", + "resolved": "https://registry.npmjs.org/@esm2cjs/npm-run-path/-/npm-run-path-5.1.1-cjs.0.tgz", + "integrity": "sha512-CWeAIyE8iNSCgP2ItPE8iPgS+lACqgH+MuFRaWOIl2T7hnHqPFfhAJJ/LcLJJ/RMIxNMeenjFMwc91HW7NWr1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@esm2cjs/path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/AlCalzone" + } + }, + "node_modules/@esm2cjs/onetime": { + "version": "6.0.1-cjs.0", + "resolved": "https://registry.npmjs.org/@esm2cjs/onetime/-/onetime-6.0.1-cjs.0.tgz", + "integrity": "sha512-MkZMZSxrSC/6yUuAw6Azc56XOgwHQQIsNDlO/zgFmOcycJBhRwRuc/gdYUUOFNZIh7y+f0JSIxkNdJPFvJ5W0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@esm2cjs/mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/AlCalzone" + } + }, + "node_modules/@esm2cjs/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@esm2cjs/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-fKzZ3uIIP4j+7WfyG0MEkomGHL0hUXWCx1kY2Zct3GTdl4pyY+3k5lCUxjgdDa2Ld1BCjMNorXnRHiBP6jW6CQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/AlCalzone" + } + }, + "node_modules/@esm2cjs/strip-final-newline": { + "version": "3.0.1-cjs.0", + "resolved": "https://registry.npmjs.org/@esm2cjs/strip-final-newline/-/strip-final-newline-3.0.1-cjs.0.tgz", + "integrity": "sha512-o41riCGPiOEStayoikBCAqwa6igbv9L9rP+k5UCfQ24EJD/wGrdDs/KTNwkHG5JzDK3T60D5dMkWkLKEPy8gjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/AlCalzone" + } + }, + "node_modules/@google-cloud/common": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-6.1.0.tgz", + "integrity": "sha512-Ohjxjvusr65+SiEVBrilpyn1ir9CM8ZqWjcf7bA8ph1GCunxI6bbwtcl7iGl67A7Lr4Nz7WpNzITNETwggc7pw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@google-cloud/projectify": "^4.0.0", + "@google-cloud/promisify": "^4.0.0", + "arrify": "^2.0.0", + "duplexify": "^4.1.3", + "extend": "^3.0.2", + "google-auth-library": "^10.6.2", + "html-entities": "^2.5.2", + "retry-request": "^8.0.0", + "teeny-request": "^10.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@google-cloud/common/node_modules/@google-cloud/promisify": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-4.1.0.tgz", + "integrity": "sha512-G/FQx5cE/+DqBbOpA5jKsegGwdPniU6PuIEMt+qxWgFxvxuFOzVmp6zYchtYuwAWV5/8Dgs0yAmjvNZv3uXLQg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@google-cloud/projectify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-4.0.0.tgz", + "integrity": "sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@google-cloud/promisify": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-5.1.0.tgz", + "integrity": "sha512-/j9zzWDxsgKg0hMuFBmLGI8ES9xj4DjXvQnDCKl0w5ed7WE3CGsgHmUoC35rvfBXshSW+5StQGnCUD+RBqITKA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@google-cloud/translate": { + "version": "9.4.2", + "resolved": "https://registry.npmjs.org/@google-cloud/translate/-/translate-9.4.2.tgz", + "integrity": "sha512-evN00jJr1PfStM0+4OQhZH4LEW8NhIF1VJUMDf3f93KGR0HptNd94a/KVpeqxrVTkCYOdXP39x52wWVcxoHmwQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@google-cloud/common": "^6.0.0", + "@google-cloud/promisify": "^5.0.0", + "arrify": "^2.0.0", + "extend": "^3.0.2", + "google-gax": "^5.0.0", + "is-html": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@grpc/grpc-js": { + "version": "1.14.4", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.14.4.tgz", + "integrity": "sha512-k9Dj3DV/itK9D06Y8f190Qgop7/Ui+D0njFV3LHMPwPT75DpXLQohE9Wmz0QElrJnzsjB7KPWiKJbOl7IPDArQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@grpc/proto-loader": "^0.8.0", + "@js-sdsl/ordered-map": "^4.4.2" + }, + "engines": { + "node": ">=12.10.0" + } + }, + "node_modules/@grpc/proto-loader": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.8.1.tgz", + "integrity": "sha512-wtF6h+DY6M3YaDBPAmvuuA6jV8Sif9MjtOI5euKFWRgCDl5PeDpPsHR9u2l6St5ceY8AZgoNDww5+HvEsXFsGg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.5.5", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz", + "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@humanfs/types": "^0.15.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz", + "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@humanfs/core": "^0.19.2", + "@humanfs/types": "^0.15.0", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/types": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz", + "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@iobroker/adapter-core": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@iobroker/adapter-core/-/adapter-core-3.4.3.tgz", + "integrity": "sha512-6pFFcWsiZY966xmdeORTkhs1MMtuNSfdab6XxmKRWOO3RXWN8vWIh1vvgnFhttrF7+56ykE4iDr4rgjdEWCtog==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@iobroker/js-controller-common-db": ">=7.2.2", + "@iobroker/types": ">=6.0.11" + } + }, + "node_modules/@iobroker/adapter-dev": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@iobroker/adapter-dev/-/adapter-dev-1.5.0.tgz", + "integrity": "sha512-L1FhO7oxaz4hNMobvgbanSGyn2LaCESGKqPPJhXWU00vVEw5Cc166xdnU63Dk+JDnV5zl/HzOcFANGisETAWIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@esm2cjs/execa": "^6.1.1-cjs.1", + "@google-cloud/translate": "^9.2.0", + "ansi-colors": "^4.1.3", + "axios": "^1.11.0", + "deepl-node": "^1.19.0", + "esbuild": "^0.25.9", + "fs-extra": "^11.3.1", + "rimraf": "^5.0.10", + "tiny-glob": "^0.2.9", + "yargs": "^18.0.0" + }, + "bin": { + "build-adapter": "bin/build-adapter.js", + "clean-dir": "bin/clean-dir.js", + "translate-adapter": "bin/translate-adapter.js" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@iobroker/adapter-dev/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@iobroker/adapter-dev/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@iobroker/adapter-dev/node_modules/cliui": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", + "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@iobroker/adapter-dev/node_modules/cliui/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@iobroker/adapter-dev/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@iobroker/adapter-dev/node_modules/string-width": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.2.tgz", + "integrity": "sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.5.0", + "strip-ansi": "^7.1.2" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@iobroker/adapter-dev/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@iobroker/adapter-dev/node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@iobroker/adapter-dev/node_modules/wrap-ansi/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@iobroker/adapter-dev/node_modules/yargs": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.1.0.tgz", + "integrity": "sha512-2rAgRKu54VsHkqI0/tYkmluGXHD4KW7yZoycuqDQ15QOTnc2VVfy0nN/1eMhnQLO00A+dwtK20xuCnc1YGeUyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^9.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "string-width": "^8.2.1", + "y18n": "^5.0.5", + "yargs-parser": "^22.0.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/@iobroker/adapter-dev/node_modules/yargs-parser": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", + "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/@iobroker/build-tools": { + "version": "3.0.1", + "dev": true, + "dependencies": { + "glob": "^13.0.1" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@iobroker/eslint-config": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@iobroker/eslint-config/-/eslint-config-2.3.4.tgz", + "integrity": "sha512-TAdXGAT01SupzM1q9nC7RGVZ+8+3kJinOlcbqm1pvn54abTJ9bXUw+RiJT+gu6hqPdoS1mqWNq8ZI8lB8ah2mg==", + "dev": true, + "peerDependencies": { + "@eslint/eslintrc": "^3.3.5", + "@eslint/js": "^9.39.4", + "@typescript-eslint/eslint-plugin": "^8.59.2", + "@typescript-eslint/parser": "^8.59.2", + "eslint": ">=9.38.0", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-import": "^2.32.0", + "eslint-plugin-jsdoc": "^62.9.0", + "eslint-plugin-prettier": "^5.5.5", + "eslint-plugin-react": "^7.37.5", + "eslint-plugin-react-hooks": "^7.1.1", + "eslint-plugin-unicorn": "^64.0.0", + "globals": "^17.6.0", + "prettier": ">=3.6.2", + "typescript-eslint": "^8.59.2" + } + }, + "node_modules/@iobroker/js-controller-common-db": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@iobroker/js-controller-common-db/-/js-controller-common-db-7.2.2.tgz", + "integrity": "sha512-RDa2jKZ7+uLLMpopN3EELQgOnGYHl//4qR0A+atGdj7k3ocH+4cCnurQ+NIB3Ihv7x7Ul3ewVpUQp90qMZXZog==", + "license": "MIT", + "peer": true, + "dependencies": { + "@alcalzone/pak": "^0.11.0", + "axios": "^1.13.6", + "ci-info": "^3.8.0", + "deep-clone": "^3.0.3", + "event-stream": "^4.0.1", + "fs-extra": "^11.3.2", + "jsonwebtoken": "^9.0.0", + "node-forge": "^1.3.2", + "node.extend": "^2.0.2", + "promisify-child-process": "^4.1.2", + "readline": "^1.3.0", + "semver": "^7.5.2", + "triple-beam": "^1.3.0", + "winston": "^3.7.2", + "winston-daily-rotate-file": "^5.0.0", + "winston-transport": "^4.5.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "@datalust/winston-seq": "^1.0.0", + "diskusage": "^1.1.3", + "winston-syslog": "^2.6.0" + } + }, + "node_modules/@iobroker/js-controller-common-db/node_modules/@alcalzone/pak": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@alcalzone/pak/-/pak-0.11.0.tgz", + "integrity": "sha512-S6s2Xug8VJ04Xgam7kV+dUydVB2gJmTem+Kr7oxneeXndWddgoQxphQNI9WqgpsifTkonC9wiAbj3qkMFlNeAA==", + "license": "MIT", + "peer": true, + "dependencies": { + "axios": "^1.6.2", + "execa": "~5.0.1", + "fs-extra": "^10.1.0", + "semver": "^7.3.7", + "tiny-glob": "^0.2.9" + } + }, + "node_modules/@iobroker/js-controller-common-db/node_modules/@alcalzone/pak/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@iobroker/js-controller-common-db/node_modules/execa": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.1.tgz", + "integrity": "sha512-4hFTjFbFzQa3aCLobpbPJR/U+VoL1wdV5ozOWjeet0AWDeYr9UFGM1eUFWHX+VtOWFq4p0xXUXfW1YxUaP4fpw==", + "license": "MIT", + "peer": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@iobroker/js-controller-common-db/node_modules/promisify-child-process": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/promisify-child-process/-/promisify-child-process-4.1.2.tgz", + "integrity": "sha512-APnkIgmaHNJpkAn7k+CrJSi9WMuff5ctYFbD0CO2XIPkM8yO7d/ShouU2clywbpHV/DUsyc4bpJCsNgddNtx4g==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@iobroker/plugin-base": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@iobroker/plugin-base/-/plugin-base-3.0.3.tgz", + "integrity": "sha512-pUKOz9/ZqIDxPQo9E97UdCF6p8NyO+x9REAQYPQNmwkElWq0bka9tgphx+RTUj8inZoYbUd50o9YnotV5C/Jpg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@iobroker/plugin-sentry": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@iobroker/plugin-sentry/-/plugin-sentry-3.1.2.tgz", + "integrity": "sha512-5zPANxH1V5coj9o6yO68NYmjRlLVSuA976ZZ02RIAW+bRDVQDh3zdiD/lDgz0Xs+Nc+ZEtLzBwRBeG8sPdhBIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@iobroker/plugin-base": "^3.0.3", + "@sentry/integrations": "^7.114.0", + "@sentry/node": "^10.57.0", + "source-map-support": "^0.5.21" + } + }, + "node_modules/@iobroker/testing": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@iobroker/testing/-/testing-5.3.0.tgz", + "integrity": "sha512-0Ux1wo1zqbnbcfJJE6M5f25gKhQTB/H1h20TJTQukKdwJr2rKjawiirwZjB5qxwZbsNU8CR9T4SVkeGTCvhxgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alcalzone/esbuild-register": "^2.5.1-1", + "@types/chai": "^4.3.20", + "@types/chai-as-promised": "^7.1.8", + "@types/mocha": "^10.0.10", + "@types/sinon": "^22.0.0", + "@types/sinon-chai": "^3.2.12", + "alcalzone-shared": "~5.0.0", + "chai": "^4.5.0", + "chai-as-promised": "^7.1.2", + "debug": "^4.4.3", + "fs-extra": "^11.3.6", + "json5": "^2.2.3", + "mocha": "^11.7.6", + "sinon": "^22.0.0", + "sinon-chai": "^3.7.0" + } + }, + "node_modules/@iobroker/types": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/@iobroker/types/-/types-7.2.2.tgz", + "integrity": "sha512-GR+sp+4DUZmuV3EpSJchTlJ6fqjHVEJJ/IQlMDc4j/oRENkSV5UTpRFxcDL5oy+Dj1+urdNUgHJdOzMzbV06Tw==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.2.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@js-sdsl/ordered-map": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", + "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/@opentelemetry/api": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.1.tgz", + "integrity": "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/api-logs": { + "version": "0.220.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.220.0.tgz", + "integrity": "sha512-CmVa4ImJ+ynfrPMNaAXHET6Bhb44SwzmfyVJFq9ni2jgXJR/l7C6gfVFddNmHP+ZOkP9cf4f9DBe68qVLTHc9w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/core": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.10.0.tgz", + "integrity": "sha512-/wNZ8twnEQQA4HoHu22+vcsdru6pWPWxW+7w+FlxT6Id7PE/WIbZmVKkte+PF72e0F2dnImFeHD2syyE1Mw6MQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/instrumentation": { + "version": "0.220.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.220.0.tgz", + "integrity": "sha512-xQx3E2WxP1mDvKzxLxX+CTCtNLa560YJZ3087qYHerl2YmiKpv7AH+dAy7vmx+eVrZ5BwhfWUAVoKOoxCNHcpw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.220.0", + "import-in-the-middle": "^3.0.0", + "require-in-the-middle": "^8.0.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/resources": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.10.0.tgz", + "integrity": "sha512-q6MMm2zhggzsHVNbabYwut+a6nbuQQe3URUoxaojM/8K1IBfwwPzvxIjNi2/lI1TFe+fMHMW9MWhrtDLEXEnkA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.10.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace/-/sdk-trace-2.10.0.tgz", + "integrity": "sha512-MfQGq3GRmTh5fM/y+OjaO0vj6+luCB1XO2gfXCalKCfgKw0eHL++sm75DNweC6ohlp+aFvACqeE0fYayqdRaoQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.10.0", + "@opentelemetry/resources": "2.10.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.10.0.tgz", + "integrity": "sha512-GuYQQT7QD2EeO8lcZLRQzcbOyhqAzL+6WWTKTU9mSUBYBazkEDl+VrQcXQhbB08OWM9anD1aHleVadzulpOaUQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.10.0", + "@opentelemetry/resources": "2.10.0", + "@opentelemetry/sdk-trace": "2.10.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.43.0.tgz", + "integrity": "sha512-eSYWTm620tTk45EKSedaUL8MFYI8hW164hIXsgIHyxu3VobUB3fFCu5t0hQby6OoWRPsG1KkKUG2M5UadiLiVg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgr/core": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.3.6.tgz", + "integrity": "sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/pkgr" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.5.tgz", + "integrity": "sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.1.tgz", + "integrity": "sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.1.tgz", + "integrity": "sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.2.tgz", + "integrity": "sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@sentry/conventions": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@sentry/conventions/-/conventions-0.16.0.tgz", + "integrity": "sha512-fO9PLmHdVURcSPUpWCItWAtgKiMwGdJHbovoSEyLplX5sxs2ugvI4CBPTrkkgqhObnZOD0CnWBKDzSVQYBKEyQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, + "node_modules/@sentry/core": { + "version": "7.114.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.114.0.tgz", + "integrity": "sha512-YnanVlmulkjgZiVZ9BfY9k6I082n+C+LbZo52MTvx3FY6RE5iyiPMpaOh67oXEZRWcYQEGm+bKruRxLVP6RlbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sentry/types": "7.114.0", + "@sentry/utils": "7.114.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/integrations": { + "version": "7.114.0", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.114.0.tgz", + "integrity": "sha512-BJIBWXGKeIH0ifd7goxOS29fBA8BkEgVVCahs6xIOXBjX1IRS6PmX0zYx/GP23nQTfhJiubv2XPzoYOlZZmDxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sentry/core": "7.114.0", + "@sentry/types": "7.114.0", + "@sentry/utils": "7.114.0", + "localforage": "^1.8.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/node": { + "version": "10.69.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-10.69.0.tgz", + "integrity": "sha512-xEXA1YGIiTZbrW6MWV34uS6JGQuQg2ijTI0zed+FsJb9JZKPYel/GZK8Km26vfTVb+yCXFmWZNBesKegNcVdzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@opentelemetry/api": "^1.9.1", + "@opentelemetry/instrumentation": "^0.220.0", + "@opentelemetry/sdk-trace-base": "^2.9.0", + "@sentry/conventions": "^0.16.0", + "@sentry/core": "10.69.0", + "@sentry/node-core": "10.69.0", + "@sentry/opentelemetry": "10.69.0", + "@sentry/server-utils": "10.69.0", + "import-in-the-middle": "^3.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@sentry/node-core": { + "version": "10.69.0", + "resolved": "https://registry.npmjs.org/@sentry/node-core/-/node-core-10.69.0.tgz", + "integrity": "sha512-IgArHczrZJxkgxoffHscj0NxQrG6kCazgmGQnlf3j58J1ec21YaUu8Tu+7G4Lo5tCiW3teQnwlKW1ttMXSqWRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sentry/conventions": "^0.16.0", + "@sentry/core": "10.69.0", + "@sentry/opentelemetry": "10.69.0", + "import-in-the-middle": "^3.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/core": "^1.30.1 || ^2.1.0", + "@opentelemetry/exporter-trace-otlp-http": ">=0.57.0 <1", + "@opentelemetry/instrumentation": ">=0.57.1 <1", + "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.1.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@opentelemetry/core": { + "optional": true + }, + "@opentelemetry/exporter-trace-otlp-http": { + "optional": true + }, + "@opentelemetry/instrumentation": { + "optional": true + }, + "@opentelemetry/sdk-trace-base": { + "optional": true + } + } + }, + "node_modules/@sentry/node-core/node_modules/@sentry/core": { + "version": "10.69.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.69.0.tgz", + "integrity": "sha512-+uuqVEeiDzYuAKjZLqsROKXvRTbl/QeH0gfGRtpYib1cud4rAFWRIkFmcR7Jb7JGFYwmReyQotiTj/hcDszTZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sentry/conventions": "^0.16.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@sentry/node/node_modules/@sentry/core": { + "version": "10.69.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.69.0.tgz", + "integrity": "sha512-+uuqVEeiDzYuAKjZLqsROKXvRTbl/QeH0gfGRtpYib1cud4rAFWRIkFmcR7Jb7JGFYwmReyQotiTj/hcDszTZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sentry/conventions": "^0.16.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@sentry/opentelemetry": { + "version": "10.69.0", + "resolved": "https://registry.npmjs.org/@sentry/opentelemetry/-/opentelemetry-10.69.0.tgz", + "integrity": "sha512-3FyWV6YcEJuvLrlaKGE1dHXCI+1YO0a62w7PkwlRg8yp6K6YXkmdwu9GjqaYD+Ju4tm7uC7mHIsGFQMm0M7pqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sentry/conventions": "^0.16.0", + "@sentry/core": "10.69.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/core": "^1.30.1 || ^2.1.0", + "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.1.0" + } + }, + "node_modules/@sentry/opentelemetry/node_modules/@sentry/core": { + "version": "10.69.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.69.0.tgz", + "integrity": "sha512-+uuqVEeiDzYuAKjZLqsROKXvRTbl/QeH0gfGRtpYib1cud4rAFWRIkFmcR7Jb7JGFYwmReyQotiTj/hcDszTZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sentry/conventions": "^0.16.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@sentry/server-utils": { + "version": "10.69.0", + "resolved": "https://registry.npmjs.org/@sentry/server-utils/-/server-utils-10.69.0.tgz", + "integrity": "sha512-0MwHrA8+nNvMIsqf8m3cXwCBlUjr6AS7N6CZvHJtY1DkqEvQqEbD5VIrhzEyHN/KMZIgQ8XeDCQRhjnXFQGRhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@apm-js-collab/code-transformer-bundler-plugins": "^0.7.3", + "@apm-js-collab/tracing-hooks": "^0.13.0", + "@sentry/conventions": "^0.16.0", + "@sentry/core": "10.69.0", + "meriyah": "^6.1.4" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@sentry/server-utils/node_modules/@sentry/core": { + "version": "10.69.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.69.0.tgz", + "integrity": "sha512-+uuqVEeiDzYuAKjZLqsROKXvRTbl/QeH0gfGRtpYib1cud4rAFWRIkFmcR7Jb7JGFYwmReyQotiTj/hcDszTZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sentry/conventions": "^0.16.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@sentry/types": { + "version": "7.114.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.114.0.tgz", + "integrity": "sha512-tsqkkyL3eJtptmPtT0m9W/bPLkU7ILY7nvwpi1hahA5jrM7ppoU0IMaQWAgTD+U3rzFH40IdXNBFb8Gnqcva4w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/utils": { + "version": "7.114.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.114.0.tgz", + "integrity": "sha512-319N90McVpupQ6vws4+tfCy/03AdtsU0MurIE4+W5cubHME08HtiEWlfacvAxX+yuKFhvdsO4K4BB/dj54ideg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sentry/types": "7.114.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sindresorhus/base62": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/base62/-/base62-1.0.0.tgz", + "integrity": "sha512-TeheYy0ILzBEI/CO55CP6zJCSdSWeRtGnHy8U8dWSUH4I68iqTsy7HkMktR4xakThc9jotkPQUXT4ITdbV7cHA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/commons/node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "15.4.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.4.0.tgz", + "integrity": "sha512-DsG+8/LscQIQg68J6Ef3dv10u6nVyetYn923s3/sus5eaGfTo1of5WMZSLf0UJc9KDuKPilPH0UDJCjvNbDNCA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/@sinonjs/samsam": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-10.0.2.tgz", + "integrity": "sha512-8lVwD1Df1BmzoaOLhMcGGcz/Jyr5QY2KSB75/YK1QgKzoabTeLdIVyhXNZK9ojfSKSdirbXqdbsXXqP9/Ve8+A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1", + "type-detect": "^4.1.0" + } + }, + "node_modules/@so-ric/colorspace": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@so-ric/colorspace/-/colorspace-1.1.6.tgz", + "integrity": "sha512-/KiKkpHNOBgkFJwu9sh48LkHSMYGyuTcSFK/qMBdnOAlrRJzRSXAOFB5qwzaVQuDl8wAvHVMkaASQDReTahxuw==", + "license": "MIT", + "peer": true, + "dependencies": { + "color": "^5.0.2", + "text-hex": "1.0.x" + } + }, + "node_modules/@types/caseless": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.5.tgz", + "integrity": "sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/chai": { + "version": "4.3.20", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz", + "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/chai-as-promised": { + "version": "7.1.8", + "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz", + "integrity": "sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/mocha": { + "version": "10.0.10", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", + "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.20.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.20.1.tgz", + "integrity": "sha512-EANqOCF9QFyra+4pfxUcX9STKJpCLjMbObVzljIJomAWSnuSIEAvyzEU53GaajbXJEgdh0iEcPL+DGvpUd4k1Q==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/node-schedule": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@types/node-schedule/-/node-schedule-2.1.8.tgz", + "integrity": "sha512-k00g6Yj/oUg/CDC+MeLHUzu0+OFxWbIqrFfDiLi6OPKxTujvpv29mHGM8GtKr7B+9Vv92FcK/8mRqi1DK5f3hA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/nodemailer": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-8.0.1.tgz", + "integrity": "sha512-PxpaInm8V1JQDd4j0ds5HfvWQk8JupS1C0Picb96QJsrrRDjBH+DlK7L4ZdNSqNULhiZRQHc40nLVShaGxXAMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/request": { + "version": "2.48.13", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.13.tgz", + "integrity": "sha512-FGJ6udDNUCjd19pp0Q3iTiDkwhYup7J8hpMW9c4k53NrccQFFWKRho6hvtPPEhnXWKvukfwAlB6DbDz4yhH5Gg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/caseless": "*", + "@types/node": "*", + "@types/tough-cookie": "*", + "form-data": "^2.5.5" + } + }, + "node_modules/@types/sinon": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-22.0.0.tgz", + "integrity": "sha512-TDbVpbccc2HfiqHR09Argj3mHV1KMW7sCCKj52fsl8lbRLkEn7fB1966EWhOKWUBcqfBueZuPoA7/OK1CKiy3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/sinonjs__fake-timers": "*" + } + }, + "node_modules/@types/sinon-chai": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.12.tgz", + "integrity": "sha512-9y0Gflk3b0+NhQZ/oxGtaAJDvRywCa5sIyaVnounqLvmf93yBF4EgIRspePtkMs3Tr844nCclYMlcCNmLCvjuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "*", + "@types/sinon": "*" + } + }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-15.0.1.tgz", + "integrity": "sha512-Ko2tjWJq8oozHzHV+reuvS5KYIRAokHnGbDwGh/J64LntgpbuylF74ipEL24HCyRjf9FOlBiBHWBR1RlVKsI1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/suncalc": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@types/suncalc/-/suncalc-1.9.2.tgz", + "integrity": "sha512-ATAGBHHfA1TlE2tjfidLyTcysjoT2JHHEAmWRULh73SU9UTn++j5fqHEW16X6Y/2Li87jEQXzgu4R/OOdlDqzw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/triple-beam": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", + "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==", + "license": "MIT", + "peer": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.65.0.tgz", + "integrity": "sha512-IEgob78X12rHpUmtcwFsXhZdVGJtwTVP8FiCLZkR6GlYVrl2PcuB+KhCE5BlVC/eQpQnu8WXRtkHZuPar+gCRA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.65.0", + "@typescript-eslint/type-utils": "8.65.0", + "@typescript-eslint/utils": "8.65.0", + "@typescript-eslint/visitor-keys": "8.65.0", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.65.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.6.tgz", + "integrity": "sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.65.0.tgz", + "integrity": "sha512-CZ4nMxWwgu1HEEFNkeaCptra9QCtkmKdgf3sWh1rl1trIhmxLilgTV4cwcbQ4wemnT4sWQN8CaKOmdYx+g2gMA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@typescript-eslint/scope-manager": "8.65.0", + "@typescript-eslint/types": "8.65.0", + "@typescript-eslint/typescript-estree": "8.65.0", + "@typescript-eslint/visitor-keys": "8.65.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.65.0.tgz", + "integrity": "sha512-SxnPhbTsGahizDgbu7oqFH/xVtzIqMd/s+WtnSxNxJZJpLbdT5IPdzg8EZxO3+PoKahXmwJLeNQOpKJb3/bi7Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.65.0", + "@typescript-eslint/types": "^8.65.0", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.65.0.tgz", + "integrity": "sha512-Esbl8OSYiVxBokYgWPf7VVWg/BE798wXhimnn9ML9Pt5qoDf8bfQlgjlKXR/k98+AcNzlLKYrpCcrcuZ9DZLgg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@typescript-eslint/types": "8.65.0", + "@typescript-eslint/visitor-keys": "8.65.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.65.0.tgz", + "integrity": "sha512-j6GzGqCiRdA7Qhur2VVmKZAkBLfnHFQfx4TaJGL9RMveZqCo48jSHHO0DTgizEnGhtWnqmbtCUSrqSkdiY/0Hg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.65.0.tgz", + "integrity": "sha512-YjaZ7PRI5qY7ax2L3PbvX0rRyGtipAReCWs0mhhDBHjH/vl0g0BonaGXrKdKpMbIIsMIwDgbk/xzkBTyAltS5g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@typescript-eslint/types": "8.65.0", + "@typescript-eslint/typescript-estree": "8.65.0", + "@typescript-eslint/utils": "8.65.0", + "debug": "^4.4.3", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.65.0.tgz", + "integrity": "sha512-JSSwWNy+H0E/01jJEM+hrX6N0OFDzFzeIhHFSAS01tlVaevpG8cFyYRPhS5yjGOvBUx3sqQHVMjCL1CAZZMxBg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.65.0.tgz", + "integrity": "sha512-JboAE2swaYt4tb1fHhHTABE2K+OLy09XfcTbhnk4Pw96f9dd2e9iYsJ28gBggHlo5z5x1rkyWvcPoTuNTd4oGg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@typescript-eslint/project-service": "8.65.0", + "@typescript-eslint/tsconfig-utils": "8.65.0", + "@typescript-eslint/types": "8.65.0", + "@typescript-eslint/visitor-keys": "8.65.0", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.5.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.65.0.tgz", + "integrity": "sha512-gXiwIHsYreboxeJucHKPvgwl7dXt50mF8s1/c00cP/WoVTyWKFdtfhRWwZiXYFU5H2O8vVoSLNrexFZjYS/SGA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.65.0", + "@typescript-eslint/types": "8.65.0", + "@typescript-eslint/typescript-estree": "8.65.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.65.0.tgz", + "integrity": "sha512-8C71BQkGjiMmXtop7pHVJu1l2NNShFdkCyD6a2ezzs5vU/L3LRtb69EtcteFwz0mYMPzIgOw0n6OV4VBUWZd7A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@typescript-eslint/types": "8.65.0", + "eslint-visitor-keys": "^5.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/acorn": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz", + "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peer": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/adm-zip": { + "version": "0.5.18", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.18.tgz", + "integrity": "sha512-ufJnssQGbxzLNS1Ho9bCtX4rQKCCvoVuDLHoJyc3F9dOGDB4BkWs2Ci0kv53lqocAEQ/Cbi+I2XCsNYGqVYqng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/alcalzone-shared": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/astring": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", + "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", + "dev": true, + "license": "MIT", + "bin": { + "astring": "bin/astring" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "license": "MIT", + "peer": true + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axios": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.19.0.tgz", + "integrity": "sha512-ht/iuYZXEjFxLH/Hkezgd7m6JKlHHXEUSneaDz8uZe1Gj5QZtCnpyDsckvAiEnT89OEbCLmnte4R4sn7P0EKFw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.16.0", + "form-data": "^4.0.6", + "https-proxy-agent": "^5.0.1", + "proxy-from-env": "^2.1.0" + } + }, + "node_modules/axios/node_modules/form-data": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz", + "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.4", + "mime-types": "^2.1.35" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/balanced-match": { + "version": "4.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.7.tgz", + "integrity": "sha512-APw5YuIQAg6L9w4sHDI6j26DGFJI6RpYOhnkMPdC9lWbkKvsyPHzDsve1yd73lk21yz7Y09Kci8B2Pp9FonzWA==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/bignumber.js": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", + "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/brace-expansion": { + "version": "5.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true, + "license": "ISC" + }, + "node_modules/browserslist": { + "version": "4.28.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.7.tgz", + "integrity": "sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "baseline-browser-mapping": "^2.10.44", + "caniuse-lite": "^1.0.30001806", + "electron-to-chromium": "^1.5.393", + "node-releases": "^2.0.51", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/builtin-modules": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-5.3.0.tgz", + "integrity": "sha512-hMQUl2bUFG339QygPM97E+mc8OY1IAchORZxm4a/frcYwKzozMzRVDBwHW0NjOqGElLm2O37AVQE8ikxlZHrMQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=18.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/call-bind": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz", + "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "get-intrinsic": "^1.3.0", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001806", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001806.tgz", + "integrity": "sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0", + "peer": true + }, + "node_modules/chai": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chai-as-promised": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.2.tgz", + "integrity": "sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==", + "dev": true, + "license": "WTFPL", + "dependencies": { + "check-error": "^1.0.2" + }, + "peerDependencies": { + "chai": ">= 2.1.2 < 6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/change-case": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz", + "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz", + "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/clean-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", + "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/clean-regexp/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/color/-/color-5.0.3.tgz", + "integrity": "sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==", + "license": "MIT", + "peer": true, + "dependencies": { + "color-convert": "^3.1.3", + "color-string": "^2.1.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/color-string": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-2.1.4.tgz", + "integrity": "sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==", + "license": "MIT", + "peer": true, + "dependencies": { + "color-name": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/color-string/node_modules/color-name": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.1.1.tgz", + "integrity": "sha512-p2FdgwVx1a9yWBHP2wI0VgShkDpgN4kZISkxdNipGBJWpa5G6b04OINlVWCyJj0JmfvcPrgqt95E9k8yvaOJFg==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12.20" + } + }, + "node_modules/color/node_modules/color-convert": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-3.1.3.tgz", + "integrity": "sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==", + "license": "MIT", + "peer": true, + "dependencies": { + "color-name": "^2.0.0" + }, + "engines": { + "node": ">=14.6" + } + }, + "node_modules/color/node_modules/color-name": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.1.1.tgz", + "integrity": "sha512-p2FdgwVx1a9yWBHP2wI0VgShkDpgN4kZISkxdNipGBJWpa5G6b04OINlVWCyJj0JmfvcPrgqt95E9k8yvaOJFg==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12.20" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/comment-parser": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.6.tgz", + "integrity": "sha512-ObxuY6vnbWTN6Od72xfwN9DbzC7Y2vv8u1Soi9ahRKL37gb6y1qk6/dgjs+3JWuXJHWvsg3BXIwzd/rkmAwavg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/core-js-compat": { + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz", + "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "browserslist": "^4.28.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/cron-parser": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz", + "integrity": "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==", + "license": "MIT", + "dependencies": { + "luxon": "^3.2.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-clone": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/deep-clone/-/deep-clone-3.0.3.tgz", + "integrity": "sha512-6jtXIlCBAwr3GP/7Il52clbIFIKAxg/pnNkL4/sE6+Oqb10MXMtm9LDZV2IAuwdaKV9VBm8hlxAFk9r6pF8XRw==", + "license": "MIT", + "peer": true + }, + "node_modules/deep-eql": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/deepl-node": { + "version": "1.27.0", + "resolved": "https://registry.npmjs.org/deepl-node/-/deepl-node-1.27.0.tgz", + "integrity": "sha512-OEiprFdxqr7aS0+gmv8vsZLBLoDarBppG1zkTWUlrAvPoYdwSWKFWjcZgr9XSV3FWlPy8g10WdJjWkxDn9P56w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": ">=12.0", + "adm-zip": "^0.5.16", + "axios": "^1.7.4", + "form-data": "^3.0.4", + "loglevel": ">=1.6.2" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/deepl-node/node_modules/form-data": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.5.tgz", + "integrity": "sha512-j23EibVLnp4zNXGW7LjryXYa2X6U/M96yoOX+ybZxwkYajdxRNEqYY3zhh7y0i6kfISKS2jr+EJq1YTUDEv5+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.4", + "mime-types": "^2.1.35" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/diff": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", + "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diskusage": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/diskusage/-/diskusage-1.2.0.tgz", + "integrity": "sha512-2u3OG3xuf5MFyzc4MctNRUKjjwK+UkovRYdD2ed/NZNZPrt0lqHnLKxGhlFVvAb4/oufIgQG3nWgwmeTbHOvXA==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "es6-promise": "^4.2.8", + "nan": "^2.18.0" + } + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "license": "MIT", + "peer": true + }, + "node_modules/duplexify": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", + "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.2" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.398", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.398.tgz", + "integrity": "sha512-AsvhAxopJGh6museTDMIjn6JpDYOfgu4RLlygomt87MUwBUqTfd/1EiPtx10/LZE8xpTvkP2E9Gafq7lkLtodQ==", + "dev": true, + "license": "ISC", + "peer": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", + "license": "MIT", + "peer": true + }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/es-abstract": { + "version": "1.24.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.2.tgz", + "integrity": "sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-abstract-get": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-abstract-get/-/es-abstract-get-1.0.0.tgz", + "integrity": "sha512-6PMWXpdhshVvFp+FoWYs1EvG1Nj0tvk0dZM+XcK0xMEM1czRVcP6ohqPWHy6qPagSpC8j4+p89WXlT+xXJs/fg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.2", + "is-callable": "^1.2.7", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.4.0.tgz", + "integrity": "sha512-c/A0P0oxkACDc+cKWw8evLXK83oBKgn0qPOqCYT4x9uolpCIJAcYvJC9QYKNDRPsTeGyCrQ326jrvgZWdCdK5Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.2", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.1.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.3.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.5", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.1.tgz", + "integrity": "sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.4.tgz", + "integrity": "sha512-yPDz7wqpg1/mmHLmS3tcfTfbw5f1eryXvyghYBffGdERwe+mV7ZcWzTR8LR17Kvqt3qfPurjlonmnq3MKXIOXw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-abstract-get": "^1.0.0", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "is-callable": "^1.2.7", + "is-date-object": "^1.1.0", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.39.5", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.5.tgz", + "integrity": "sha512-DgZS62aPLXKlnxILS/AYCoRvHaZeXceIzlXPkkGGzJWSow1aEk0lbTlxUSlyjC8jcaKxAdOnTDz+o1JFSBsyjw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.2", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.6", + "@eslint/js": "9.39.5", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.5", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "10.1.8", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.10.tgz", + "integrity": "sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.16.1", + "resolve": "^2.0.0-next.6" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.14.0.tgz", + "integrity": "sha512-W2WCRZ9Dqntd+2u8jJcVMV2PKulc6RdLgUUoh/yQr3uB6lo/ZOeGx11sv60/8S4QFFKNslAlWhr9u0Ef7ZW6Ig==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.1", + "hasown": "^2.0.2", + "is-core-module": "^2.16.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.1", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.9", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/eslint-plugin-import/node_modules/brace-expansion": { + "version": "1.1.17", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.17.tgz", + "integrity": "sha512-w+aeW/mkgM4PyRMOJCgi3fOrTm5Q8QY1OSfn2TO2iuDj3ezIHqejmuxbjfPrqUkgqRew1iqkyAn0tr0ZwHD9+w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jsdoc": { + "version": "62.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-62.9.0.tgz", + "integrity": "sha512-PY7/X4jrVgoIDncUmITlUqK546Ltmx/Pd4Hdsu4CvSjryQZJI2mEV4vrdMufyTetMiZ5taNSqvK//BTgVUlNkA==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "@es-joy/jsdoccomment": "~0.86.0", + "@es-joy/resolve.exports": "1.2.0", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.4.6", + "debug": "^4.4.3", + "escape-string-regexp": "^4.0.0", + "espree": "^11.2.0", + "esquery": "^1.7.0", + "html-entities": "^2.6.0", + "object-deep-merge": "^2.0.0", + "parse-imports-exports": "^0.2.4", + "semver": "^7.7.4", + "spdx-expression-parse": "^4.0.0", + "to-valid-identifier": "^1.0.0" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0" + } + }, + "node_modules/eslint-plugin-jsdoc/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-jsdoc/node_modules/espree": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz", + "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "acorn": "^8.16.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^5.0.1" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.5.6", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.6.tgz", + "integrity": "sha512-ifetmTcxWfz+4qRW3pH/ujdTq2jQIj59AxJMIN26K5avYgU8dxycUETQonWiW+wPrYXA0j3Try0l1CnwVQtDqQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.1", + "synckit": "^0.11.13" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.9", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.1.1.tgz", + "integrity": "sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "hermes-parser": "^0.25.1", + "zod": "^3.25.0 || ^4.0.0", + "zod-validation-error": "^3.5.0 || ^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/eslint-plugin-react/node_modules/brace-expansion": { + "version": "1.1.17", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.17.tgz", + "integrity": "sha512-w+aeW/mkgM4PyRMOJCgi3fOrTm5Q8QY1OSfn2TO2iuDj3ezIHqejmuxbjfPrqUkgqRew1iqkyAn0tr0ZwHD9+w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-react/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-unicorn": { + "version": "64.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-64.0.0.tgz", + "integrity": "sha512-rNZwalHh8i0UfPlhNwg5BTUO1CMdKNmjqe+TgzOTZnpKoi8VBgsW7u9qCHIdpxEzZ1uwrJrPF0uRb7l//K38gA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "@eslint-community/eslint-utils": "^4.9.1", + "change-case": "^5.4.4", + "ci-info": "^4.4.0", + "clean-regexp": "^1.0.0", + "core-js-compat": "^3.49.0", + "find-up-simple": "^1.0.1", + "globals": "^17.4.0", + "indent-string": "^5.0.0", + "is-builtin-module": "^5.0.0", + "jsesc": "^3.1.0", + "pluralize": "^8.0.0", + "regexp-tree": "^0.1.27", + "regjsparser": "^0.13.0", + "semver": "^7.7.4", + "strip-indent": "^4.1.1" + }, + "engines": { + "node": "^20.10.0 || >=21.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1" + }, + "peerDependencies": { + "eslint": ">=9.38.0" + } + }, + "node_modules/eslint-plugin-unicorn/node_modules/ci-info": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", + "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.17", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.17.tgz", + "integrity": "sha512-w+aeW/mkgM4PyRMOJCgi3fOrTm5Q8QY1OSfn2TO2iuDj3ezIHqejmuxbjfPrqUkgqRew1iqkyAn0tr0ZwHD9+w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/event-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-4.0.1.tgz", + "integrity": "sha512-qACXdu/9VHPBzcyhdOWR5/IahhGMf0roTeZJfzz077GwylcDd90yOHLouhmv7GJ5XzPi6ekaQWd8AvPP2nOvpA==", + "license": "MIT", + "peer": true, + "dependencies": { + "duplexer": "^0.1.1", + "from": "^0.1.7", + "map-stream": "0.0.7", + "pause-stream": "^0.0.11", + "split": "^1.0.1", + "stream-combiner": "^0.2.2", + "through": "^2.3.8" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0", + "peer": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", + "license": "MIT", + "peer": true + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/file-stream-rotator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/file-stream-rotator/-/file-stream-rotator-0.6.1.tgz", + "integrity": "sha512-u+dBid4PvZw17PmDeRcNOtCP9CCK/9lRN2w+r1xIS7yOL9JFrIBKTvrYsxT4P0pGtThYTn++QS5ChHaUov3+zQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "moment": "^2.29.1" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-up-simple": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz", + "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.4.tgz", + "integrity": "sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==", + "dev": true, + "license": "ISC", + "peer": true + }, + "node_modules/fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", + "license": "MIT", + "peer": true + }, + "node_modules/follow-redirects": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.6.tgz", + "integrity": "sha512-Ogz/E85h9tlfJzpI6TuFpGcHZFhLrb9Gw8wq9v40CxSCPnv7ahKr6Xgtkn0KYCDQJ8DNn5VoMO8EXr9V5PadyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.4", + "mime-types": "^2.1.35", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==", + "license": "MIT", + "peer": true + }, + "node_modules/fs-extra": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.4.0.tgz", + "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.2.0.tgz", + "integrity": "sha512-jObKIik1P2QjPHP5nz5BaOtUlfgS0fWo8IUByNXkM+o+02sJOi94em77GwJKQSJ3gfPHdgzLNrHc1uokV4P/ew==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2", + "hasown": "^2.0.4", + "is-callable": "^1.2.7", + "is-document.all": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gaxios": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-7.3.0.tgz", + "integrity": "sha512-RB5vLV+vvQeoFPCX4QMK6/hjVkbIamPp1QSUD0CiZcnj12qbpiL+pLbYtgD+oZkWl0tl9z+o2Utp+MpM3QRhBA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "node-fetch": "^3.3.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/gaxios/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/gaxios/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/gcp-metadata": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-8.1.2.tgz", + "integrity": "sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "gaxios": "^7.0.0", + "google-logging-utils": "^1.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz", + "integrity": "sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "13.0.6", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "17.8.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.8.0.tgz", + "integrity": "sha512-Zz/LMDZScFmkakeL2cTHzf+PbWKdpU3uclqkZT7TjDG58j5WPt0PpA+n9uPI24fZtlw07q0OtEi84K+umsRzqQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "license": "MIT" + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "license": "MIT" + }, + "node_modules/glossy": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/glossy/-/glossy-0.1.7.tgz", + "integrity": "sha512-mTCC51QFadK75MvAhrL5nPVIP291NjML1guo10Sa7Yj04tJU4V++Vgm780NIddg9etQD9D8FM67hFGqM8EE2HQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">= 0.2.5" + } + }, + "node_modules/google-auth-library": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.9.1.tgz", + "integrity": "sha512-i1ydyHrqcIxXkWh/uBmVkzCvIuq5yiK2ATndIe5XxKholrG/MTYP9xGYka4sQhrbIAgGjL2B6NOE7rFaiF3fXw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^7.1.4", + "gcp-metadata": "8.1.2", + "google-logging-utils": "1.1.3", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/google-gax": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-5.0.8.tgz", + "integrity": "sha512-M4vpZcXQIC1gqIVGQ7eaU3jXQA6zecStyTXu514TYfThlgSurYJOxHZo9fzU6hAgwPWvuEynAVHWyaIk80VeEA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@grpc/grpc-js": "^1.12.6", + "@grpc/proto-loader": "^0.8.0", + "duplexify": "^4.1.3", + "google-auth-library": "10.5.0", + "google-logging-utils": "1.1.3", + "node-fetch": "^3.3.2", + "object-hash": "^3.0.0", + "proto3-json-serializer": "3.0.4", + "protobufjs": "^7.5.4", + "retry-request": "^8.0.2", + "rimraf": "^5.0.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/google-gax/node_modules/google-auth-library": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.5.0.tgz", + "integrity": "sha512-7ABviyMOlX5hIVD60YOfHw4/CxOfBhyduaYB+wbFWCWoni4N7SLcV46hrVRktuBbZjFC9ONyqamZITN7q3n32w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^7.0.0", + "gcp-metadata": "^8.0.0", + "google-logging-utils": "^1.0.0", + "gtoken": "^8.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/google-logging-utils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-1.1.3.tgz", + "integrity": "sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/gtoken": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-8.0.0.tgz", + "integrity": "sha512-+CqsMbHPiSTdtSO14O51eMNlrp9N79gmeqmXeouJOhfucAedHw9noVe/n5uJk3tbKE6a+6ZCQg3RPhVhHByAIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "gaxios": "^7.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "hermes-estree": "0.25.1" + } + }, + "node_modules/html-entities": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-in-the-middle": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-3.3.2.tgz", + "integrity": "sha512-jTd2FfOgOWOdgjkHuk/1Ms8VKFXkPs15ymYBETw1sAOrO/dY3XeGVRWir9qBbw7pXr0T2eTFwfCZ+N02HmiNGA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "cjs-module-lexer": "^2.2.0", + "es-module-lexer": "^2.2.0", + "module-details-from-path": "^1.0.4" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/is/-/is-3.3.2.tgz", + "integrity": "sha512-a2xr4E3s1PjDS8ORcGgXpWx6V+liNs+O3JRD2mb9aeugD7rtkkZ0zgLdYgw0tWsKhsdiezGYptSiMlVazCBTuQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-builtin-module": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-5.0.0.tgz", + "integrity": "sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "builtin-modules": "^5.0.0" + }, + "engines": { + "node": ">=18.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", + "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "hasown": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-document.all": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-document.all/-/is-document.all-1.0.0.tgz", + "integrity": "sha512-+XSoyS05OdBbhFuELhgTCpFNHkpBOJqtsZfUFFpe5QTw+9Sjbh8zitxhQkYAo6wV7e1Vb8cAPvpCk9jGam/82g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-html": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-html/-/is-html-2.0.0.tgz", + "integrity": "sha512-S+OpgB5i7wzIue/YSE5hg0e5ZYfG3hhpNh9KGl6ayJ38p7ED6wxQLd1TV91xHpcTvw90KMJ9EwN3F/iNflHBVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "html-tags": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/iterator.prototype": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/js-yaml": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.0.tgz", + "integrity": "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdoc-type-pratt-parser": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-7.2.0.tgz", + "integrity": "sha512-dh140MMgjyg3JhJZY/+iEzW+NO5xR2gpbDFKHqotCmexElVntw7GjWjt511+C/Ef02RU5TKYrJo/Xlzk+OLaTw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonata": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/jsonata/-/jsonata-2.2.2.tgz", + "integrity": "sha512-XDFH2PuaAXv0AXJEWwElXbqADmKFGKMLMkFb+qOz0EhjQW2EIJ6pgtordLU+4u3IVERyBfqy6bi6kZKEncvRqA==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", + "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", + "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", + "license": "MIT", + "peer": true, + "dependencies": { + "jws": "^4.0.1", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "license": "(MIT OR GPL-3.0-or-later)", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/jszip/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/jszip/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/jszip/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/jszip/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", + "license": "MIT", + "dependencies": { + "jwa": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", + "license": "MIT", + "peer": true + }, + "node_modules/ky": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/ky/-/ky-1.14.3.tgz", + "integrity": "sha512-9zy9lkjac+TR1c2tG+mkNSVlyOpInnWdSMiue4F+kq8TwJSgv6o8jhLRg8Ho6SnZ9wOYUq/yozts9qQCfk7bIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sindresorhus/ky?sponsor=1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/localforage": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", + "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "lie": "3.1.1" + } + }, + "node_modules/localforage/node_modules/lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "license": "MIT", + "peer": true + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "license": "MIT", + "peer": true + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "license": "MIT", + "peer": true + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "license": "MIT", + "peer": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "license": "MIT", + "peer": true + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "license": "MIT", + "peer": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "license": "MIT", + "peer": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/logform": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.7.0.tgz", + "integrity": "sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@colors/colors": "1.6.0", + "@types/triple-beam": "^1.3.2", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/loglevel": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz", + "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" + } + }, + "node_modules/long": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/long-timeout": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz", + "integrity": "sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==", + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/lru-cache": { + "version": "11.2.7", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/luxon": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz", + "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/magic-string": { + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/map-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", + "integrity": "sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ==", + "license": "MIT", + "peer": true + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/meriyah": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/meriyah/-/meriyah-6.1.4.tgz", + "integrity": "sha512-Sz8FzjzI0kN13GK/6MVEsVzMZEPvOhnmmI1lU5+/1cGOiK3QUahntrNNtdVeihrO7t9JpoH75iMNXg6R6uWflQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "10.2.4", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mocha": { + "version": "11.7.6", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.6.tgz", + "integrity": "sha512-nS9xOGbw2I3cjCpxwZAEJ9xK9lmJ08vEkQvLtz4du9ZrF9UrjRpeJGiIgl2Z+Qs++pmB4ecDe48Fwsh+j+j7xA==", + "dev": true, + "license": "MIT", + "dependencies": { + "browser-stdout": "^1.3.1", + "chokidar": "^4.0.1", + "debug": "^4.3.5", + "diff": "^7.0.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^10.4.5", + "he": "^1.2.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^9.0.5", + "ms": "^2.1.3", + "picocolors": "^1.1.1", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^9.2.0", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1", + "yargs-unparser": "^2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/mocha/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.3.tgz", + "integrity": "sha512-DRdx5neNsG/QXbniLFWi2YmC/68oeOOmKz6zOjVk6ZS1ZLXgLIKqVEc6hWsmkjBbgii0SwaBTcJ5XKj5gzY/4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/module-details-from-path": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.4.tgz", + "integrity": "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==", + "dev": true, + "license": "MIT" + }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "license": "MIT", + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nan": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.28.0.tgz", + "integrity": "sha512-fTsDz99OTq2sVePhGdp4qQhggZFtKr64ZNVyVajRKtMOkJxYekplBh577PiJB12v/D3s2E5cGtOI45LWp6rnLQ==", + "license": "MIT", + "optional": true, + "peer": true + }, + "node_modules/nano-spawn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/nano-spawn/-/nano-spawn-2.1.0.tgz", + "integrity": "sha512-yTW+2okrElHiH4fsiz/+/zc0EDo9BDDoC3iKk8dpv1GeRc9nUWzUZHx6TofMWErchhUQR8hY9/Eu1Uja9x1nqA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/nano-spawn?sponsor=1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "deprecated": "Use your platform's native DOMException instead", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-exports-info": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/node-exports-info/-/node-exports-info-1.6.2.tgz", + "integrity": "sha512-kXs9Go0cah0qHVV2v389IXQLdLCeE1xfFtjOAF+iobu0OIoG1pje8At2vMHyaPMiPMnG/LWP50twML21eMcAag==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "array.prototype.flatmap": "^1.3.3", + "es-errors": "^1.3.0", + "object.entries": "^1.1.9", + "semver": "^6.3.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/node-exports-info/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/node-forge": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.0.tgz", + "integrity": "sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==", + "license": "(BSD-3-Clause OR GPL-2.0)", + "peer": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-inspect": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/node-inspect/-/node-inspect-2.0.0.tgz", + "integrity": "sha512-vaDNU6Fa/vt8gv/PV+QoeSIPhcBnHMiNOtInxcojfagspQg5KP9HloUDGJWIacamT8Agiu51eF+fuBjrE25a6w==", + "deprecated": "This module is part of Node.js core and does not need to be installed separately. It is now unmaintained.", + "license": "MIT", + "bin": { + "node-inspect": "cli.js" + } + }, + "node_modules/node-releases": { + "version": "2.0.51", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.51.tgz", + "integrity": "sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/node-schedule": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-2.1.1.tgz", + "integrity": "sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==", + "license": "MIT", + "dependencies": { + "cron-parser": "^4.2.0", + "long-timeout": "0.1.1", + "sorted-array-functions": "^1.3.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/node.extend": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/node.extend/-/node.extend-2.0.3.tgz", + "integrity": "sha512-xwADg/okH48PvBmRZyoX8i8GJaKuJ1CqlqotlZOhUio8egD1P5trJupHKBzcPjSF9ifK2gPcEICRBnkfPqQXZw==", + "license": "(MIT OR GPL-2.0)", + "peer": true, + "dependencies": { + "hasown": "^2.0.0", + "is": "^3.3.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/nodemailer": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-9.0.3.tgz", + "integrity": "sha512-n+YP+NKwR5zRWa60k3GiQ6Q3B4KXCoAw40dAKeCtYn020iNN74aWK2liXIC3ZEATeGql7we3tE3t8QwhY0eskw==", + "license": "MIT-0", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-deep-merge": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object-deep-merge/-/object-deep-merge-2.0.1.tgz", + "integrity": "sha512-aKttDKcU3pyZqKcCkDhsMn70WmZFG2JGDQLP9EcLyTSIFQRCPWLAmBZRLJnrVUrhPG1jETEEbfdgbNtJf1LyMg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "license": "MIT", + "peer": true, + "dependencies": { + "fn.name": "1.x.x" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/own-keys": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.2.tgz", + "integrity": "sha512-19YVAg7T+WTrxggPukVq7DjTv6+PJ867TmhCvBsYwmbFCsZd344rq2Ld1p0wo8f8Qrrhgp82c6FJRqdXWtSEhg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.4", + "get-intrinsic": "^1.3.0", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "license": "(MIT AND Zlib)" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-imports-exports": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz", + "integrity": "sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "parse-statements": "1.0.11" + } + }, + "node_modules/parse-statements": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/parse-statements/-/parse-statements-1.0.11.tgz", + "integrity": "sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/path-scurry": { + "version": "2.0.2", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", + "license": [ + "MIT", + "Apache2" + ], + "peer": true, + "dependencies": { + "through": "~2.3" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.9.6", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.9.6.tgz", + "integrity": "sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==", + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz", + "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/promisify-child-process": { + "version": "5.0.1", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/proto3-json-serializer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/proto3-json-serializer/-/proto3-json-serializer-3.0.4.tgz", + "integrity": "sha512-E1sbAYg3aEbXrq0n1ojJkRHQJGE1kaE/O6GLA94y8rnJBfgvOPTOd1b9hOceQK1FFZI9qMh1vBERCyO2ifubcw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "protobufjs": "^7.4.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/protobufjs": { + "version": "7.6.5", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.6.5.tgz", + "integrity": "sha512-/FPD0nUc9jH6rfFjji9IBqOz4pcSE3CsT1m7Ep6Mdb0LxSUMj8hgl6GomOvZzpNpAqqGaXA0P3VSrZLFzIhQrw==", + "dev": true, + "hasInstallScript": true, + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.5", + "@protobufjs/eventemitter": "^1.1.1", + "@protobufjs/fetch": "^1.1.1", + "@protobufjs/float": "^1.0.2", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.1", + "@types/node": ">=13.7.0", + "long": "^5.3.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/proxy-from-env": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/readline": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz", + "integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==", + "license": "BSD", + "peer": true + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp-tree": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", + "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "regexp-tree": "bin/regexp-tree" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regjsparser": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.2.tgz", + "integrity": "sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-in-the-middle": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-8.0.1.tgz", + "integrity": "sha512-QT7FVMXfWOYFbeRBF6nu+I6tr2Tf3u0q8RIEjNob/heKY/nh7drD/k7eeMFmSQgnTtCzLDcCu/XEnpW2wk4xCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.5", + "module-details-from-path": "^1.0.3" + }, + "engines": { + "node": ">=9.3.0 || >=8.10.0 <9.0.0" + } + }, + "node_modules/reserved-identifiers": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/reserved-identifiers/-/reserved-identifiers-1.2.0.tgz", + "integrity": "sha512-yE7KUfFvaBFzGPs5H3Ops1RevfUEsDc5Iz65rOwWg4lE8HJSYtle77uul3+573457oHvBKuHYDl/xqUkKpEEdw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/resolve": { + "version": "2.0.0-next.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.7.tgz", + "integrity": "sha512-tqt+NBWwyaMgw3zDsnygx4CByWjQEJHOPMdslYhppaQSJUtL/D4JO9CcBBlhPoI8lz9oJIDXkwXfhF4aWqP8xQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-errors": "^1.3.0", + "is-core-module": "^2.16.2", + "node-exports-info": "^1.6.0", + "object-keys": "^1.1.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/retry-request": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-8.0.4.tgz", + "integrity": "sha512-pI6/7eabUYkZxamkOq0g0uMxKLLGnjzhefY+vL8bVXag5rto4OU2YBTPytWLuHH7aEKD6fn7kJycQfid0Mwnkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "extend": "^3.0.2", + "teeny-request": "^10.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/rimraf": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", + "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.3.tgz", + "integrity": "sha512-DRdx5neNsG/QXbniLFWi2YmC/68oeOOmKz6zOjVk6ZS1ZLXgLIKqVEc6hWsmkjBbgii0SwaBTcJ5XKj5gzY/4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.4.tgz", + "integrity": "sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "get-intrinsic": "^1.3.0", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-stable-stringify": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/semifies": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semifies/-/semifies-1.0.0.tgz", + "integrity": "sha512-xXR3KGeoxTNWPD4aBvL5NUpMTT7WMANr3EWnaS190QVkY52lqqcVRD7Q05UVbBhiWDGWMlJEUam9m7uFFGVScw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/seq-logging": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/seq-logging/-/seq-logging-1.1.2.tgz", + "integrity": "sha512-9n7bCIHiMdBene104oSEa2917OcNBw+uee2v+we4AQxmjqt/aeQkWy1296IvGsogbj5fK6wuDNhVhm/DYmauVA==", + "license": "Apache-2.0", + "optional": true, + "peer": true + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", + "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4", + "side-channel-list": "^1.0.1", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/sinon": { + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-22.1.0.tgz", + "integrity": "sha512-n1ajF2rBWMTtEwbKcw4UdFg4nCnDdq/U6RDoxtOd7oapOlRoJ5ynwFx60owROyhDpA9QhMZi0pCO/xtmwFjG7w==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1", + "@sinonjs/fake-timers": "^15.4.0", + "@sinonjs/samsam": "^10.0.2", + "diff": "^9.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" + } + }, + "node_modules/sinon-chai": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-3.7.0.tgz", + "integrity": "sha512-mf5NURdUaSdnatJx3uhoBOrY9dtL19fiOtAdT1Azxg3+lNJFiuN0uzaU3xX1LeAfL17kHQhTAJgpsfhbMJMY2g==", + "dev": true, + "license": "(BSD-2-Clause OR WTFPL)", + "peerDependencies": { + "chai": "^4.0.0", + "sinon": ">=4.0.0" + } + }, + "node_modules/sinon/node_modules/diff": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-9.0.0.tgz", + "integrity": "sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/sorted-array-functions": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.3.0.tgz", + "integrity": "sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==", + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, + "license": "CC-BY-3.0", + "peer": true + }, + "node_modules/spdx-expression-parse": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", + "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz", + "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==", + "dev": true, + "license": "CC0-1.0", + "peer": true + }, + "node_modules/split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "license": "MIT", + "peer": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "license": "MIT", + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/stream-combiner": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", + "integrity": "sha512-6yHMqgLYDzQDcAkL+tjJDC5nSNuNIx0vZtRZeiPh7Saef7VHX9H5Ijn9l2VIol2zaNYlYEX6KyuT/237A58qEQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "duplexer": "~0.1.1", + "through": "~2.3.4" + } + }, + "node_modules/stream-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", + "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", + "dev": true, + "license": "MIT", + "dependencies": { + "stubs": "^3.0.0" + } + }, + "node_modules/stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.11.tgz", + "integrity": "sha512-PwvK7BU+CMTJGYQCTZb5RWXIML92lftJLhQz1tBzgKiqGxJaMlBAa48POXaNAC2s4y8jr3EFqrkF9+44neS46w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.2", + "es-object-atoms": "^1.1.2", + "has-property-descriptors": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.10.tgz", + "integrity": "sha512-2+3aDAOmPTmuFwjDnmJG2ctEkQKVki7vOSqaxkv42Mowj1V6PnvuwFCRrR5lChUux1TBskPjfkeTOhqczDMxTw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-indent": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.1.1.tgz", + "integrity": "sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stubs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", + "integrity": "sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==", + "dev": true, + "license": "MIT" + }, + "node_modules/suncalc2": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/suncalc2/-/suncalc2-1.8.1.tgz", + "integrity": "sha512-tNoAni1LqWzBzJRX3NRCsD50gVsuejH1jd9Y+XyKO3WkpPIU+QNyWF4Zf2JnUQKW2LKLWIBgVDQCrgsQwqs0tA==" + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/synckit": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.13.tgz", + "integrity": "sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@pkgr/core": "^0.3.6" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/synckit" + } + }, + "node_modules/teeny-request": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-10.1.4.tgz", + "integrity": "sha512-R1Cg4Vu0UULeDfHL/kjABLaTW++9yD/B6n2g48y5dJ04hsEaxcfmAqbNDzNsbqAYJyIpZafjklLG9YxRu9uzOg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "node-fetch": "^3.3.2", + "stream-events": "^1.0.5" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/teeny-request/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/teeny-request/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", + "license": "MIT", + "peer": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "license": "MIT", + "peer": true + }, + "node_modules/timekeeper": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/timekeeper/-/timekeeper-2.3.1.tgz", + "integrity": "sha512-LeQRS7/4JcC0PgdSFnfUiStQEdiuySlCj/5SJ18D+T1n9BoY7PxKFfCwLulpHXoLUFr67HxBddQdEX47lDGx1g==", + "dev": true, + "license": "MIT" + }, + "node_modules/tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "license": "MIT", + "dependencies": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/to-valid-identifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-valid-identifier/-/to-valid-identifier-1.0.0.tgz", + "integrity": "sha512-41wJyvKep3yT2tyPqX/4blcfybknGB4D+oETKLs7Q76UiPqRpUJK3hr1nxelyYO0PHKVzJwlu0aCeEAsGI6rpw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@sindresorhus/base62": "^1.0.0", + "reserved-identifiers": "^1.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/triple-beam": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", + "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/ts-api-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.8.tgz", + "integrity": "sha512-phPGCwqr2+Qo0fwniCE8e4pKnGu/yFb5nD5Y8bf0EEeiI5GklnACYA9GFy/DrAeRrKHXvHn+1SUsOWgJp6RO+g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bind": "^1.0.9", + "for-each": "^0.3.5", + "gopd": "^1.2.0", + "is-typed-array": "^1.1.15", + "possible-typed-array-names": "^1.1.0", + "reflect.getprototypeof": "^1.0.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.65.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.65.0.tgz", + "integrity": "sha512-/ggrHAwyjENDusvyxbuqxAC2dTnZg/Z8F+fgQtYIz+L6n/9HfSlEZcFGV/NsMNa6CkGk0xUjUAFwC0vHOflvIA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.65.0", + "@typescript-eslint/parser": "8.65.0", + "@typescript-eslint/typescript-estree": "8.65.0", + "@typescript-eslint/utils": "8.65.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.1.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unix-dgram": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/unix-dgram/-/unix-dgram-2.0.6.tgz", + "integrity": "sha512-AURroAsb73BZ6CdAyMrTk/hYKNj3DuYYEuOaB8bYMOHGKupRNScw90Q5C71tWJc3uE7dIeXRyuwN0xLLq3vDTg==", + "hasInstallScript": true, + "license": "ISC", + "optional": true, + "peer": true, + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.16.0" + }, + "engines": { + "node": ">=0.10.48" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/update-browserslist-db/node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC", + "peer": true + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/virtual-tsc": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/virtual-tsc/-/virtual-tsc-0.6.2.tgz", + "integrity": "sha512-NeCuRFla3ASmhn24Da00UzEQX2FoLrOWX7P3K0IK0kK2WX//joUOLbOYkQEQg+FqYf75lw9jBI++iGszvospjg==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.3", + "picocolors": "1.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "typescript": ">=2.0.0" + } + }, + "node_modules/wake_on_lan": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wake_on_lan/-/wake_on_lan-1.0.0.tgz", + "integrity": "sha512-0QSpxny0QmsssshI6kePj6cobQPK+i8r5shfj58ZfQIUH9fUTyAaYPqZO3W/Ai7mN4vQVdTdsSGIr20M81UL6Q==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "wake": "wake" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.22", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.22.tgz", + "integrity": "sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/winston": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.19.0.tgz", + "integrity": "sha512-LZNJgPzfKR+/J3cHkxcpHKpKKvGfDZVPS4hfJCc4cCG0CgYzvlD6yE/S3CIL/Yt91ak327YCpiF/0MyeZHEHKA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@colors/colors": "^1.6.0", + "@dabh/diagnostics": "^2.0.8", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.7.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.9.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/winston-daily-rotate-file": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/winston-daily-rotate-file/-/winston-daily-rotate-file-5.0.0.tgz", + "integrity": "sha512-JDjiXXkM5qvwY06733vf09I2wnMXpZEhxEVOSPenZMii+g7pcDcTBt2MRugnoi8BwVSuCT2jfRXBUy+n1Zz/Yw==", + "license": "MIT", + "peer": true, + "dependencies": { + "file-stream-rotator": "^0.6.1", + "object-hash": "^3.0.0", + "triple-beam": "^1.4.1", + "winston-transport": "^4.7.0" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "winston": "^3" + } + }, + "node_modules/winston-syslog": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/winston-syslog/-/winston-syslog-2.7.1.tgz", + "integrity": "sha512-MrU5gSwXgEbHwz5wFhn1rZtSCbRcP1PEB8zU49tgsfjQ63EjIVAkQpXmMocdbTLnTJ2cW3gLW6gmoOOOhyJZgg==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "glossy": "^0.1.7", + "triple-beam": "^1.3.0", + "winston-transport": "^4.5.0" + }, + "engines": { + "node": ">= 8" + }, + "optionalDependencies": { + "unix-dgram": "2.0.6" + }, + "peerDependencies": { + "winston": "^3.8.2" + } + }, + "node_modules/winston-transport": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.9.0.tgz", + "integrity": "sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==", + "license": "MIT", + "peer": true, + "dependencies": { + "logform": "^2.7.0", + "readable-stream": "^3.6.2", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workerpool": { + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.3.4.tgz", + "integrity": "sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC", + "peer": true + }, + "node_modules/yargs": { + "version": "17.7.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.3.tgz", + "integrity": "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", + "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-validation-error": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz", + "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.25.0 || ^4.0.0" + } } + } } diff --git a/package.json b/package.json index 03ca58d2..2a53df8d 100644 --- a/package.json +++ b/package.json @@ -1,121 +1,121 @@ { - "name": "iobroker.javascript", - "version": "9.3.1", - "description": "Rules Engine for ioBroker", - "author": "bluefox ", - "contributors": [ - { - "name": "hobbyquaker", - "email": "hq@ccu.io" - }, - { - "name": "Apollon77", - "email": "ingo@fischer-ka.de" - }, - { - "name": "AlCalzone", - "email": "d.griesel@gmx.net" - }, - { - "name": "Matthias Kleine", - "email": "info@haus-automatisierung.com" - } - ], - "homepage": "https://github.com/ioBroker/ioBroker.javascript", - "license": "MIT", - "keywords": [ - "ioBroker", - "javascript", - "script", - "engine", - "home automation" - ], - "repository": { - "type": "git", - "url": "https://github.com/ioBroker/ioBroker.javascript" + "name": "iobroker.javascript", + "version": "10.0.0", + "description": "Rules Engine for ioBroker", + "author": "bluefox ", + "contributors": [ + { + "name": "hobbyquaker", + "email": "hq@ccu.io" }, - "engines": { - "node": ">=22" + { + "name": "Apollon77", + "email": "ingo@fischer-ka.de" }, - "depsComment": { - "@types/node": "should match the lowest MAJOR version of Node.js we support." + { + "name": "AlCalzone", + "email": "d.griesel@gmx.net" }, - "dependencies": { - "@iobroker/adapter-core": "^3.4.3", - "@iobroker/types": "^7.2.2", - "@types/node": "^22.19.43", - "axios": "^1.19.0", - "jsonata": "^2.2.2", - "jszip": "^3.10.1", - "node-inspect": "^2.0.0", - "node-schedule": "2.1.1", - "nodemailer": "^9.0.3", - "prettier": "^3.9.6", - "promisify-child-process": "^5.0.1", - "semver": "^7.8.5", - "suncalc2": "^1.8.1", - "typescript": "~6.0.3", - "virtual-tsc": "^0.6.2", - "wake_on_lan": "^1.0.0" - }, - "devDependencies": { - "@alcalzone/release-script": "^5.2.1", - "@alcalzone/release-script-plugin-iobroker": "^5.2.0", - "@alcalzone/release-script-plugin-license": "^5.2.2", - "@iobroker/adapter-dev": "^1.5.0", - "@iobroker/build-tools": "^3.0.1", - "@iobroker/eslint-config": "^2.3.4", - "@iobroker/plugin-sentry": "^3.1.2", - "@iobroker/testing": "^5.3.0", - "@types/node-schedule": "^2.1.8", - "@types/nodemailer": "^8.0.1", - "@types/request": "^2.48.13", - "@types/suncalc": "^1.9.2", - "alcalzone-shared": "^5.0.0", - "timekeeper": "^2.3.1" - }, - "bugs": { - "url": "https://github.com/ioBroker/ioBroker.javascript/issues" - }, - "main": "build/main.js", - "files": [ - "admin/", - "build/", - "docs/", - "install/", - "io-package.json", - "LICENSE", - "admin/vsFont/codicon.json" - ], - "scripts": { - "test:declarations": "tsc -p test/lib/TS/tsconfig.json && tsc -p test/lib/JS/tsconfig.json", - "test:integration": "mocha --exit", - "test:package": "mocha test/testPackageFiles.js --exit", - "test:scheduler": "mocha test/testScheduler.js --exit", - "test": "npm run test:declarations && npm run test:integration", - "translate": "translate-adapter", - "//postinstall": "node ./install/installTypings.js", - "build": "npm run build-backend && node tasks", - "build-backend": "tsc -p tsconfig.build.json && node tasks --copy-types", - "release": "release-script --noPush -y --all", - "update-packages": "npx -y npm-check-updates --upgrade && cd src-editor && npx -y npm-check-updates --upgrade && cd ../src-admin && npx -y npm-check-updates --upgrade", - "npm": "npm i && cd src-editor && npm i -f && cd ../src-admin && npm i", - "lint": "eslint -c eslint.config.mjs", - "lint-all": "eslint -c eslint.config.mjs && cd src-editor && eslint -c eslint.config.mjs && cd ../src-admin && eslint -c eslint.config.mjs", - "admin-0-clean": "node tasks.js --admin-0-clean", - "admin-1-npm": "node tasks.js --admin-1-npm", - "admin-2-compile": "node tasks.js --admin-2-compile", - "admin-3-copy": "node tasks.js --admin-3-copy", - "admin-build": "node tasks.js --admin-build", - "0-clean": "node tasks.js --0-clean", - "1-npm": "node tasks.js --1-npm", - "2-build": "node tasks.js --2-build", - "3-copy": "node tasks.js --3-copy", - "4-patch": "node tasks.js --4-patch", - "build-editor": "node tasks.js --build", - "blocklyJson2words": "node tasks.js --blocklyJson2words", - "blocklyWords2json": "node tasks.js --blocklyWords2json", - "monaco-update": "node tasks.js --monaco-update", - "monaco-typescript": "node tasks.js --monaco-typescript" + { + "name": "Matthias Kleine", + "email": "info@haus-automatisierung.com" } + ], + "homepage": "https://github.com/ioBroker/ioBroker.javascript", + "license": "MIT", + "keywords": [ + "ioBroker", + "javascript", + "script", + "engine", + "home automation" + ], + "repository": { + "type": "git", + "url": "https://github.com/ioBroker/ioBroker.javascript" + }, + "engines": { + "node": ">=22" + }, + "depsComment": { + "@types/node": "should match the lowest MAJOR version of Node.js we support." + }, + "dependencies": { + "@iobroker/adapter-core": "^3.4.3", + "@iobroker/types": "^7.2.2", + "@types/node": "^22.19.43", + "axios": "^1.19.0", + "jsonata": "^2.2.2", + "jszip": "^3.10.1", + "node-inspect": "^2.0.0", + "node-schedule": "2.1.1", + "nodemailer": "^9.0.3", + "prettier": "^3.9.6", + "promisify-child-process": "^5.0.1", + "semver": "^7.8.5", + "suncalc2": "^1.8.1", + "typescript": "~6.0.3", + "virtual-tsc": "^0.6.2", + "wake_on_lan": "^1.0.0" + }, + "devDependencies": { + "@alcalzone/release-script": "^5.2.1", + "@alcalzone/release-script-plugin-iobroker": "^5.2.0", + "@alcalzone/release-script-plugin-license": "^5.2.2", + "@iobroker/adapter-dev": "^1.5.0", + "@iobroker/build-tools": "^3.0.1", + "@iobroker/eslint-config": "^2.3.4", + "@iobroker/plugin-sentry": "^3.1.2", + "@iobroker/testing": "^5.3.0", + "@types/node-schedule": "^2.1.8", + "@types/nodemailer": "^8.0.1", + "@types/request": "^2.48.13", + "@types/suncalc": "^1.9.2", + "alcalzone-shared": "^5.0.0", + "timekeeper": "^2.3.1" + }, + "bugs": { + "url": "https://github.com/ioBroker/ioBroker.javascript/issues" + }, + "main": "build/main.js", + "files": [ + "admin/", + "build/", + "docs/", + "install/", + "io-package.json", + "LICENSE", + "admin/vsFont/codicon.json" + ], + "scripts": { + "test:declarations": "tsc -p test/lib/TS/tsconfig.json && tsc -p test/lib/JS/tsconfig.json", + "test:integration": "mocha --exit", + "test:package": "mocha test/testPackageFiles.js --exit", + "test:scheduler": "mocha test/testScheduler.js --exit", + "test": "npm run test:declarations && npm run test:integration", + "translate": "translate-adapter", + "//postinstall": "node ./install/installTypings.js", + "build": "npm run build-backend && node tasks", + "build-backend": "tsc -p tsconfig.build.json && node tasks --copy-types", + "release": "release-script --noPush -y --all", + "update-packages": "npx -y npm-check-updates --upgrade && cd src-editor && npx -y npm-check-updates --upgrade && cd ../src-admin && npx -y npm-check-updates --upgrade", + "npm": "npm i && cd src-editor && npm i -f && cd ../src-admin && npm i", + "lint": "eslint -c eslint.config.mjs", + "lint-all": "eslint -c eslint.config.mjs && cd src-editor && eslint -c eslint.config.mjs && cd ../src-admin && eslint -c eslint.config.mjs", + "admin-0-clean": "node tasks.js --admin-0-clean", + "admin-1-npm": "node tasks.js --admin-1-npm", + "admin-2-compile": "node tasks.js --admin-2-compile", + "admin-3-copy": "node tasks.js --admin-3-copy", + "admin-build": "node tasks.js --admin-build", + "0-clean": "node tasks.js --0-clean", + "1-npm": "node tasks.js --1-npm", + "2-build": "node tasks.js --2-build", + "3-copy": "node tasks.js --3-copy", + "4-patch": "node tasks.js --4-patch", + "build-editor": "node tasks.js --build", + "blocklyJson2words": "node tasks.js --blocklyJson2words", + "blocklyWords2json": "node tasks.js --blocklyWords2json", + "monaco-update": "node tasks.js --monaco-update", + "monaco-typescript": "node tasks.js --monaco-typescript" + } } diff --git a/src-admin/package-lock.json b/src-admin/package-lock.json index 515fe217..9d2c3a67 100644 --- a/src-admin/package-lock.json +++ b/src-admin/package-lock.json @@ -919,7 +919,6 @@ "integrity": "sha512-VgBd3z7Qc3vd/thcNSMC03nHRh/U4DzMUd+1dRyJTbm/hGo7+N6N4GDuJZDNHa6LZhhwG6Cu1X3DNvrVv8sNag==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.29.2" }, @@ -947,7 +946,6 @@ "integrity": "sha512-+YTRSgGKGrrRo2XJZXs7JRA6qHoHWvNtxyqxnrRJTBmIuLOUpxxh7m4G9lF4tWberxGFY+EqkkRPgJCl+fSMJg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.29.2", "@mui/core-downloads-tracker": "^9.2.0", @@ -1061,7 +1059,6 @@ "integrity": "sha512-YvUJwKoGVtbnOm2PyPi5TvX2d1rOA6sqSpEWVs4WmXNIaFTuYmNUaVdU2o1NKUEe31URnD3E8ZVUMcsLQXwcYg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.29.2", "@mui/private-theming": "^9.2.0", @@ -1697,7 +1694,6 @@ "integrity": "sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -2111,7 +2107,6 @@ "integrity": "sha512-+1UMbeh68lH1SegH83CGWwpb6OHHbpSgr3+s5Eww5M4CAgswBpoWS0AjTOfEJ33HiYKz1hdj/KTFprzXHmq/6w==", "dev": true, "license": "MIT", - "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/kossnocorp" @@ -3048,8 +3043,7 @@ "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==", "dev": true, - "license": "BSD-2-Clause", - "peer": true + "license": "BSD-2-Clause" }, "node_modules/lie": { "version": "3.3.0", @@ -3784,7 +3778,6 @@ "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -3901,7 +3894,6 @@ "integrity": "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -3972,7 +3964,6 @@ "integrity": "sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "scheduler": "^0.27.0" }, @@ -4638,7 +4629,6 @@ "integrity": "sha512-pn+CFpM0lwDeKwmOq1ZaBK/9sjorZcgqxki6MbY/jPEVd9vichIlmlD4HmQ5wdP5EgqQCFRaACBxMC7uEGc6lQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "lightningcss": "^1.33.0", "picomatch": "^4.0.5", @@ -4758,7 +4748,6 @@ "integrity": "sha512-LZNJgPzfKR+/J3cHkxcpHKpKKvGfDZVPS4hfJCc4cCG0CgYzvlD6yE/S3CIL/Yt91ak327YCpiF/0MyeZHEHKA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@colors/colors": "^1.6.0", "@dabh/diagnostics": "^2.0.8", @@ -4888,7 +4877,6 @@ "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=10.0.0" }, diff --git a/src-editor/package-lock.json b/src-editor/package-lock.json index 59095979..518e717e 100644 --- a/src-editor/package-lock.json +++ b/src-editor/package-lock.json @@ -455,7 +455,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=20.19.0" }, @@ -504,7 +503,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=20.19.0" } @@ -607,7 +605,6 @@ "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz", "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", @@ -651,7 +648,6 @@ "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.1.tgz", "integrity": "sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", @@ -1123,7 +1119,6 @@ "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-9.2.0.tgz", "integrity": "sha512-VgBd3z7Qc3vd/thcNSMC03nHRh/U4DzMUd+1dRyJTbm/hGo7+N6N4GDuJZDNHa6LZhhwG6Cu1X3DNvrVv8sNag==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.29.2" }, @@ -1150,7 +1145,6 @@ "resolved": "https://registry.npmjs.org/@mui/material/-/material-9.2.0.tgz", "integrity": "sha512-+YTRSgGKGrrRo2XJZXs7JRA6qHoHWvNtxyqxnrRJTBmIuLOUpxxh7m4G9lF4tWberxGFY+EqkkRPgJCl+fSMJg==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.29.2", "@mui/core-downloads-tracker": "^9.2.0", @@ -1267,7 +1261,6 @@ "resolved": "https://registry.npmjs.org/@mui/system/-/system-9.2.0.tgz", "integrity": "sha512-YvUJwKoGVtbnOm2PyPi5TvX2d1rOA6sqSpEWVs4WmXNIaFTuYmNUaVdU2o1NKUEe31URnD3E8ZVUMcsLQXwcYg==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.29.2", "@mui/private-theming": "^9.2.0", @@ -2206,7 +2199,6 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.18.tgz", "integrity": "sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==", "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -2532,7 +2524,6 @@ "resolved": "https://registry.npmjs.org/blockly/-/blockly-11.2.2.tgz", "integrity": "sha512-YJW9jMz4qoBXzOOUqxWBOHL35QhOOTAg2a6sVAFJh+/uNTXW0z506JS7qkqZI4PQ9fnUhDqmhF8a0qWSTL1tjg==", "license": "Apache-2.0", - "peer": true, "dependencies": { "jsdom": "25.0.1" }, @@ -3089,7 +3080,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -3112,7 +3102,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=18" } @@ -4771,7 +4760,6 @@ "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.56.0.tgz", "integrity": "sha512-sXboRm3BeBeLm938eaiyLMe0OxzfXIlZvbv4ir/jVgQy1zDhWjgmny0WoN45fuDKhCCQsYMbBJrv/A6jd8aCUg==", "license": "MIT", - "peer": true, "dependencies": { "dompurify": "3.4.8", "marked": "14.0.0" @@ -5108,7 +5096,6 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -5179,7 +5166,6 @@ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -5238,7 +5224,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.2.8.tgz", "integrity": "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -5370,7 +5355,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.8.tgz", "integrity": "sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==", "license": "MIT", - "peer": true, "dependencies": { "scheduler": "^0.27.0" }, @@ -5907,7 +5891,6 @@ "resolved": "https://registry.npmjs.org/sass/-/sass-1.102.0.tgz", "integrity": "sha512-NSOyTnaQF7rTAEOtI2fwb386vL+akyiQLBZu8Na7hXCb+umJy0GAqlcMIaqACZ6Z1VgTBS4K9PG6B3IdjHGJsw==", "license": "MIT", - "peer": true, "dependencies": { "chokidar": "^5.0.0", "immutable": "^5.1.5", @@ -6110,7 +6093,6 @@ "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.4.4.tgz", "integrity": "sha512-tJk5CmKUPMDoTsZQ8m0hHInBk9HFKUPSusqmbBuefDX+yUbMBWea2Ob/wdXFyHW8XZqXkprJscysAdKeGWNqlA==", "license": "MIT", - "peer": true, "dependencies": { "@emotion/is-prop-valid": "1.4.0", "css-to-react-native": "3.2.0", @@ -6326,7 +6308,6 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -6502,7 +6483,6 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-8.2.0.tgz", "integrity": "sha512-pn+CFpM0lwDeKwmOq1ZaBK/9sjorZcgqxki6MbY/jPEVd9vichIlmlD4HmQ5wdP5EgqQCFRaACBxMC7uEGc6lQ==", "license": "MIT", - "peer": true, "dependencies": { "lightningcss": "^1.33.0", "picomatch": "^4.0.5", @@ -6792,7 +6772,6 @@ "resolved": "https://registry.npmjs.org/winston/-/winston-3.19.0.tgz", "integrity": "sha512-LZNJgPzfKR+/J3cHkxcpHKpKKvGfDZVPS4hfJCc4cCG0CgYzvlD6yE/S3CIL/Yt91ak327YCpiF/0MyeZHEHKA==", "license": "MIT", - "peer": true, "dependencies": { "@colors/colors": "^1.6.0", "@dabh/diagnostics": "^2.0.8", @@ -6914,7 +6893,6 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", "license": "MIT", - "peer": true, "engines": { "node": ">=10.0.0" },