diff --git a/dist/chunk-CTAAG5j7.js b/dist/chunk-Bp6m_JJh.js similarity index 90% rename from dist/chunk-CTAAG5j7.js rename to dist/chunk-Bp6m_JJh.js index be39ef9..e3b2e9f 100644 --- a/dist/chunk-CTAAG5j7.js +++ b/dist/chunk-Bp6m_JJh.js @@ -10,4 +10,4 @@ var __export = (all) => { }; //#endregion -export { __export }; \ No newline at end of file +export { __export as t }; \ No newline at end of file diff --git a/dist/index.d.ts b/dist/index.d.ts index 01adf5c..9a7fa3b 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -89,6 +89,9 @@ type SourceDef = { branch?: string; revision?: string; }; +declare namespace inputs_d_exports { + export { Separator, getArrayOfStrings, getArrayOfStringsOrNull, getBool, getBoolOrUndefined, getMultilineStringOrNull, getNumberOrNull, getString, getStringOrNull, getStringOrUndefined, handleString }; +} /** * Get a Boolean input from the Action's configuration by name. */ @@ -131,6 +134,9 @@ declare const getStringOrNull: (name: string) => string | null; * Get a string input from the Action's configuration by name or return `undefined` if not set. */ declare const getStringOrUndefined: (name: string) => string | undefined; +declare namespace platform_d_exports { + export { getArchOs, getNixPlatform }; +} /** * Get the current architecture plus OS. Examples include `X64-Linux` and `ARM64-macOS`. */ diff --git a/dist/index.js b/dist/index.js index 3ee1b7a..c50cca5 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,4 +1,4 @@ -import { __export } from "./chunk-CTAAG5j7.js"; +import { t as __export } from "./chunk-Bp6m_JJh.js"; import * as fs$1 from "node:fs"; import { constants, createWriteStream, readFileSync } from "node:fs"; import * as os$1 from "node:os"; @@ -266,8 +266,7 @@ async function collectBacktracesMacOS(prefixes, programNameDenyList, startTimest const doGzip = promisify(gzip); for (const fileName of fileNames) try { if ((await stat(`${dir}/${fileName}`)).ctimeMs >= startTimestampMs) { - const logText = await readFile(`${dir}/${fileName}`); - const buf = await doGzip(logText); + const buf = await doGzip(await readFile(`${dir}/${fileName}`)); backtraces.set(`backtrace_value_${source}_${fileName}`, buf.toString("base64")); } } catch (innerError) { @@ -567,7 +566,7 @@ function weightedRandom(records) { //#endregion //#region src/inputs.ts -var inputs_exports = __export({ +var inputs_exports = /* @__PURE__ */ __export({ getArrayOfStrings: () => getArrayOfStrings, getArrayOfStringsOrNull: () => getArrayOfStringsOrNull, getBool: () => getBool, @@ -597,8 +596,7 @@ const getBoolOrUndefined = (name) => { * all whitespace is removed from the string before converting to an array. */ const getArrayOfStrings = (name, separator) => { - const original = getString(name); - return handleString(original, separator); + return handleString(getString(name), separator); }; /** * Convert a string input into an array of strings or `null` if no value is set. @@ -655,7 +653,7 @@ const getStringOrUndefined = (name) => { //#endregion //#region src/platform.ts -var platform_exports = __export({ +var platform_exports = /* @__PURE__ */ __export({ getArchOs: () => getArchOs, getNixPlatform: () => getNixPlatform }); @@ -808,14 +806,13 @@ var DetSysAction = class { project: this.actionOptions.name, ids_project: this.actionOptions.idsProjectName }; - const params = [ + for (const [target, env] of [ ["github_action_ref", "GITHUB_ACTION_REF"], ["github_action_repository", "GITHUB_ACTION_REPOSITORY"], ["github_event_name", "GITHUB_EVENT_NAME"], ["$os", "RUNNER_OS"], ["arch", "RUNNER_ARCH"] - ]; - for (const [target, env] of params) { + ]) { const value = process.env[env]; if (value) this.facts[target] = value; } @@ -956,8 +953,7 @@ var DetSysAction = class { const doGzip = promisify(gzip); const exceptionContext = /* @__PURE__ */ new Map(); for (const [attachmentLabel, filePath] of this.exceptionAttachments) try { - const logText = readFileSync(filePath); - const buf = await doGzip(logText); + const buf = await doGzip(readFileSync(filePath)); exceptionContext.set(`staple_value_${attachmentLabel}`, buf.toString("base64")); } catch (innerError) { exceptionContext.set(`staple_failure_${attachmentLabel}`, stringifyError$1(innerError)); diff --git a/dist/index.js.map b/dist/index.js.map index 6e6b0a6..fba984c 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","names":["fs","linuxReleaseInfoOptionsDefaults: LinuxReleaseInfoOptions","searchOsReleaseFileList: string[]","os","lines: string[]","exec","data: object","ret: T","backtraces: Map","exec","sussyArray: unknown","innerError: unknown","coredumps: SystemdCoreDumpInfo[]","ident: AnonymizedCorrelationHashes","currentUrl: URL","newUrl: URL","err: unknown","url: URL | undefined","defaultFallback: Promise","records: SrvRecord[]","reason: unknown","byPriorityWeight: Map","prioritizedRecords: SrvRecord[]","keys: number[]","scratchRecords: SrvRecord[]","result: SrvRecord[]","weights: number[]","os","actionsExec","correlation.identify","platform.getArchOs","platform.getNixPlatform","stringifyError","fsConstants","e: unknown","exceptionContext: Map","innerError: unknown","impactSymbol: Map","summaries: string[]","reportContext: {\n [index: string]: string | number | undefined;\n }","writeStream: WriteStream | undefined","nixLocation: string | undefined","options: actionsExec.ExecOptions","err: unknown","finalOpts: ConfidentActionOptions"],"sources":["../src/linux-release-info.ts","../src/actions-core-platform.ts","../src/errors.ts","../src/backtrace.ts","../src/correlation.ts","../src/ids-host.ts","../src/inputs.ts","../src/platform.ts","../src/sourcedef.ts","../src/index.ts"],"sourcesContent":["/*!\n * linux-release-info\n * Get Linux release info (distribution name, version, arch, release, etc.)\n * from '/etc/os-release' or '/usr/lib/os-release' files and from native os\n * module. On Windows and Darwin platforms it only returns common node os module\n * info (platform, hostname, release, and arch)\n *\n * Licensed under MIT\n * Copyright (c) 2018-2020 [Samuel Carreira]\n */\n// NOTE: we depend on this directly to get around some un-fun issues with mixing CommonJS\n// and ESM in the bundle. We've modified the original logic to improve things like typing\n// and fixing ESLint issues. Originally drawn from:\n// https://github.com/samuelcarreira/linux-release-info/blob/84a91aa5442b47900da03020c590507545d3dc74/src/index.ts\nimport * as fs from \"node:fs\";\nimport * as os from \"node:os\";\nimport { promisify } from \"node:util\";\n\nconst readFileAsync = promisify(fs.readFile);\n\nexport interface LinuxReleaseInfoOptions {\n /**\n * read mode, possible values: 'async' and 'sync'\n *\n * @default 'async'\n */\n mode?: \"async\" | \"sync\";\n /**\n * custom complete file path with os info default null/none\n * if not provided the system will search on the '/etc/os-release'\n * and '/usr/lib/os-release' files\n *\n * @default null\n */\n customFile?: string | null | undefined;\n /**\n * if true, show console debug messages\n *\n * @default false\n */\n debug?: boolean;\n}\n\nconst linuxReleaseInfoOptionsDefaults: LinuxReleaseInfoOptions = {\n mode: \"async\",\n customFile: null,\n debug: false,\n};\n\n/**\n * Get OS release info from 'os-release' file and from native os module\n * on Windows or Darwin it only returns common os module info\n * (uses native fs module)\n * @returns {object} info from the current os\n */\nexport function releaseInfo(infoOptions: LinuxReleaseInfoOptions): object {\n const options = { ...linuxReleaseInfoOptionsDefaults, ...infoOptions };\n\n const searchOsReleaseFileList: string[] = osReleaseFileList(\n options.customFile,\n );\n\n if (os.type() !== \"Linux\") {\n if (options.mode === \"sync\") {\n return getOsInfo();\n } else {\n return Promise.resolve(getOsInfo());\n }\n }\n\n if (options.mode === \"sync\") {\n return readSyncOsreleaseFile(searchOsReleaseFileList, options);\n } else {\n return Promise.resolve(\n readAsyncOsReleaseFile(searchOsReleaseFileList, options),\n );\n }\n}\n\n/**\n * Format file data: convert data to object keys/values\n *\n * @param {object} sourceData Source object to be appended\n * @param {string} srcParseData Input file data to be parsed\n * @returns {object} Formated object\n */\nfunction formatFileData(sourceData: OsInfo, srcParseData: string): OsInfo {\n const lines: string[] = srcParseData.split(\"\\n\");\n\n for (const line of lines) {\n const lineData = line.split(\"=\");\n\n if (lineData.length === 2) {\n lineData[1] = lineData[1].replace(/[\"'\\r]/gi, \"\"); // remove quotes and return character\n\n Object.defineProperty(sourceData, lineData[0].toLowerCase(), {\n value: lineData[1],\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n }\n\n return sourceData;\n}\n\n/**\n * Export a list of os-release files\n *\n * @param {string} customFile optional custom complete filepath\n * @returns {array} list of os-release files\n */\nfunction osReleaseFileList(customFile: string | null | undefined): string[] {\n const DEFAULT_OS_RELEASE_FILES = [\"/etc/os-release\", \"/usr/lib/os-release\"];\n\n if (!customFile) {\n return DEFAULT_OS_RELEASE_FILES;\n } else {\n return Array(customFile);\n }\n}\n\n/**\n * Operating system info.\n */\ntype OsInfo = {\n type: string;\n platform: string;\n hostname: string;\n arch: string;\n release: string;\n};\n\n/**\n * Get OS Basic Info\n * (uses node 'os' native module)\n *\n * @returns {OsInfo} os basic info\n */\nfunction getOsInfo(): OsInfo {\n return {\n type: os.type(),\n platform: os.platform(),\n hostname: os.hostname(),\n arch: os.arch(),\n release: os.release(),\n };\n}\n\n/* Helper functions */\n\nasync function readAsyncOsReleaseFile(\n fileList: string[],\n options: LinuxReleaseInfoOptions,\n): Promise {\n let fileData = null;\n\n for (const osReleaseFile of fileList) {\n try {\n if (options.debug) {\n /* eslint-disable no-console */\n console.log(`Trying to read '${osReleaseFile}'...`);\n }\n\n fileData = await readFileAsync(osReleaseFile, \"binary\");\n\n if (options.debug) {\n console.log(`Read data:\\n${fileData}`);\n }\n\n break;\n } catch (error) {\n if (options.debug) {\n console.error(error);\n }\n }\n }\n\n if (fileData === null) {\n throw new Error(\"Cannot read os-release file!\");\n //return getOsInfo();\n }\n\n return formatFileData(getOsInfo(), fileData);\n}\n\nfunction readSyncOsreleaseFile(\n releaseFileList: string[],\n options: LinuxReleaseInfoOptions,\n): OsInfo {\n let fileData = null;\n\n for (const osReleaseFile of releaseFileList) {\n try {\n if (options.debug) {\n console.log(`Trying to read '${osReleaseFile}'...`);\n }\n\n fileData = fs.readFileSync(osReleaseFile, \"binary\");\n\n if (options.debug) {\n console.log(`Read data:\\n${fileData}`);\n }\n\n break;\n } catch (error) {\n if (options.debug) {\n console.error(error);\n }\n }\n }\n\n if (fileData === null) {\n throw new Error(\"Cannot read os-release file!\");\n //return getOsInfo();\n }\n\n return formatFileData(getOsInfo(), fileData);\n}\n","// MIT, mostly lifted from https://github.com/actions/toolkit/blob/5a736647a123ecf8582376bdaee833fbae5b3847/packages/core/src/platform.ts\n// since it isn't in @actions/core 1.10.1 which is their current release as 2024-04-19.\n// Changes: Replaced the lsb_release call in Linux with `linux-release-info` to parse the os-release file directly.\nimport { releaseInfo } from \"./linux-release-info.js\";\nimport * as actionsCore from \"@actions/core\";\nimport * as exec from \"@actions/exec\";\nimport os from \"os\";\n\n/**\n * The name and version of the Action runner's system.\n */\ntype SystemInfo = {\n name: string;\n version: string;\n};\n\n/**\n * Get the name and version of the current Windows system.\n */\nconst getWindowsInfo = async (): Promise => {\n const { stdout: version } = await exec.getExecOutput(\n 'powershell -command \"(Get-CimInstance -ClassName Win32_OperatingSystem).Version\"',\n undefined,\n {\n silent: true,\n },\n );\n\n const { stdout: name } = await exec.getExecOutput(\n 'powershell -command \"(Get-CimInstance -ClassName Win32_OperatingSystem).Caption\"',\n undefined,\n {\n silent: true,\n },\n );\n\n return {\n name: name.trim(),\n version: version.trim(),\n };\n};\n\n/**\n * Get the name and version of the current macOS system.\n */\nconst getMacOsInfo = async (): Promise => {\n const { stdout } = await exec.getExecOutput(\"sw_vers\", undefined, {\n silent: true,\n });\n\n const version = stdout.match(/ProductVersion:\\s*(.+)/)?.[1] ?? \"\";\n const name = stdout.match(/ProductName:\\s*(.+)/)?.[1] ?? \"\";\n\n return {\n name,\n version,\n };\n};\n\n/**\n * Get the name and version of the current Linux system.\n */\nconst getLinuxInfo = async (): Promise => {\n let data: object = {};\n\n try {\n data = releaseInfo({ mode: \"sync\" });\n actionsCore.debug(`Identified release info: ${JSON.stringify(data)}`);\n } catch (e) {\n actionsCore.debug(`Error collecting release info: ${e}`);\n }\n\n return {\n name: getPropertyViaWithDefault(\n data,\n [\"id\", \"name\", \"pretty_name\", \"id_like\"],\n \"unknown\",\n ),\n version: getPropertyViaWithDefault(\n data,\n [\"version_id\", \"version\", \"version_codename\"],\n \"unknown\",\n ),\n };\n};\n\nfunction getPropertyViaWithDefault(\n data: object,\n names: Property[],\n defaultValue: T,\n): T {\n for (const name of names) {\n const ret: T = getPropertyWithDefault(data, name, defaultValue);\n\n if (ret !== defaultValue) {\n return ret;\n }\n }\n\n return defaultValue;\n}\n\nfunction getPropertyWithDefault(\n data: object,\n name: Property,\n defaultValue: T,\n): T {\n if (!data.hasOwnProperty(name)) {\n return defaultValue;\n }\n\n const value = (data as { [K in Property]: T })[name];\n\n // NB. this check won't work for object instances\n if (typeof value !== typeof defaultValue) {\n return defaultValue;\n }\n\n return value;\n}\n\n/**\n * The Action runner's platform.\n */\nexport const platform = os.platform();\n\n/**\n * The Action runner's architecture.\n */\nexport const arch = os.arch();\n\n/**\n * Whether the Action runner is a Windows system.\n */\nexport const isWindows = platform === \"win32\";\n\n/**\n * Whether the Action runner is a macOS system.\n */\nexport const isMacOS = platform === \"darwin\";\n\n/**\n * Whether the Action runner is a Linux system.\n */\nexport const isLinux = platform === \"linux\";\n\n/**\n * System-level information about the current host (platform, architecture, etc.).\n */\ntype SystemDetails = {\n name: string;\n platform: string;\n arch: string;\n version: string;\n isWindows: boolean;\n isMacOS: boolean;\n isLinux: boolean;\n};\n\n/**\n * Get system-level information about the current host (platform, architecture, etc.).\n */\nexport async function getDetails(): Promise {\n return {\n ...(await (isWindows\n ? getWindowsInfo()\n : isMacOS\n ? getMacOsInfo()\n : getLinuxInfo())),\n platform,\n arch,\n isWindows,\n isMacOS,\n isLinux,\n };\n}\n","/**\n * Coerce a value of type `unknown` into a string.\n */\nexport function stringifyError(e: unknown): string {\n if (e instanceof Error) {\n return e.message;\n } else if (typeof e === \"string\") {\n return e;\n } else {\n return JSON.stringify(e);\n }\n}\n","/**\n * @packageDocumentation\n * Collects backtraces for executables for diagnostics\n */\nimport { isLinux, isMacOS } from \"./actions-core-platform.js\";\nimport { stringifyError } from \"./errors.js\";\nimport * as actionsCore from \"@actions/core\";\nimport * as exec from \"@actions/exec\";\nimport { readFile, readdir, stat } from \"node:fs/promises\";\nimport { promisify } from \"node:util\";\nimport { gzip } from \"node:zlib\";\n\n// Give a few seconds buffer, capturing traces that happened a few seconds earlier.\nconst START_SLOP_SECONDS = 5;\n\nexport async function collectBacktraces(\n prefixes: string[],\n programNameDenyList: string[],\n startTimestampMs: number,\n): Promise> {\n if (isMacOS) {\n return await collectBacktracesMacOS(\n prefixes,\n programNameDenyList,\n startTimestampMs,\n );\n }\n if (isLinux) {\n return await collectBacktracesSystemd(\n prefixes,\n programNameDenyList,\n startTimestampMs,\n );\n }\n\n return new Map();\n}\n\nexport async function collectBacktracesMacOS(\n prefixes: string[],\n programNameDenyList: string[],\n startTimestampMs: number,\n): Promise> {\n const backtraces: Map = new Map();\n\n try {\n const { stdout: logJson } = await exec.getExecOutput(\n \"log\",\n [\n \"show\",\n \"--style\",\n \"json\",\n \"--last\",\n // Note we collect the last 1m only, because it should only take a few seconds to write the crash log.\n // Therefore, any crashes before this 1m should be long done by now.\n \"1m\",\n \"--no-info\",\n \"--predicate\",\n \"sender = 'ReportCrash'\",\n ],\n {\n silent: true,\n },\n );\n\n const sussyArray: unknown = JSON.parse(logJson);\n if (!Array.isArray(sussyArray)) {\n throw new Error(`Log json isn't an array: ${logJson}`);\n }\n\n if (sussyArray.length > 0) {\n actionsCore.info(`Collecting crash data...`);\n const delay = async (ms: number): Promise =>\n new Promise((resolve) => setTimeout(resolve, ms));\n await delay(5000);\n }\n } catch {\n actionsCore.debug(\n \"Failed to check logs for in-progress crash dumps; now proceeding with the assumption that all crash dumps completed.\",\n );\n }\n\n const dirs = [\n [\"system\", \"/Library/Logs/DiagnosticReports/\"],\n [\"user\", `${process.env[\"HOME\"]}/Library/Logs/DiagnosticReports/`],\n ];\n\n for (const [source, dir] of dirs) {\n const fileNames = (await readdir(dir))\n .filter((fileName) => {\n return prefixes.some((prefix) => fileName.startsWith(prefix));\n })\n .filter((fileName) => {\n return !programNameDenyList.some((programName) =>\n fileName.startsWith(programName),\n );\n })\n .filter((fileName) => {\n // macOS creates .diag files periodically, which are called \"microstackshots\".\n // We don't necessarily want those, and they're definitely not crashes.\n // See: https://patents.google.com/patent/US20140237219A1/en\n return !fileName.endsWith(\".diag\");\n });\n\n const doGzip = promisify(gzip);\n for (const fileName of fileNames) {\n try {\n if ((await stat(`${dir}/${fileName}`)).ctimeMs >= startTimestampMs) {\n const logText = await readFile(`${dir}/${fileName}`);\n const buf = await doGzip(logText);\n backtraces.set(\n `backtrace_value_${source}_${fileName}`,\n buf.toString(\"base64\"),\n );\n }\n } catch (innerError: unknown) {\n backtraces.set(\n `backtrace_failure_${source}_${fileName}`,\n stringifyError(innerError),\n );\n }\n }\n }\n\n return backtraces;\n}\n\ntype SystemdCoreDumpInfo = {\n exe: string;\n pid: number;\n};\n\nexport async function collectBacktracesSystemd(\n prefixes: string[],\n programNameDenyList: string[],\n startTimestampMs: number,\n): Promise> {\n const sinceSeconds =\n Math.ceil((Date.now() - startTimestampMs) / 1000) + START_SLOP_SECONDS;\n const backtraces: Map = new Map();\n\n const coredumps: SystemdCoreDumpInfo[] = [];\n\n try {\n const { stdout: coredumpjson } = await exec.getExecOutput(\n \"coredumpctl\",\n [\"--json=pretty\", \"list\", \"--since\", `${sinceSeconds} seconds ago`],\n {\n silent: true,\n },\n );\n\n const sussyArray: unknown = JSON.parse(coredumpjson);\n if (!Array.isArray(sussyArray)) {\n throw new Error(`Coredump isn't an array: ${coredumpjson}`);\n }\n\n for (const sussyObject of sussyArray) {\n const keys = Object.keys(sussyObject);\n\n if (keys.includes(\"exe\") && keys.includes(\"pid\")) {\n if (\n typeof sussyObject.exe == \"string\" &&\n typeof sussyObject.pid == \"number\"\n ) {\n const execParts = sussyObject.exe.split(\"/\");\n const binaryName = execParts[execParts.length - 1];\n\n if (\n prefixes.some((prefix) => binaryName.startsWith(prefix)) &&\n !programNameDenyList.includes(binaryName)\n ) {\n coredumps.push({\n exe: sussyObject.exe,\n pid: sussyObject.pid,\n });\n }\n } else {\n actionsCore.debug(\n `Mysterious coredump entry missing exe string and/or pid number: ${JSON.stringify(sussyObject)}`,\n );\n }\n } else {\n actionsCore.debug(\n `Mysterious coredump entry missing exe value and/or pid value: ${JSON.stringify(sussyObject)}`,\n );\n }\n }\n } catch (innerError: unknown) {\n actionsCore.debug(\n `Cannot collect backtraces: ${stringifyError(innerError)}`,\n );\n\n return backtraces;\n }\n\n const doGzip = promisify(gzip);\n for (const coredump of coredumps) {\n try {\n const { stdout: logText } = await exec.getExecOutput(\n \"coredumpctl\",\n [\"info\", `${coredump.pid}`],\n {\n silent: true,\n },\n );\n\n const buf = await doGzip(logText);\n backtraces.set(`backtrace_value_${coredump.pid}`, buf.toString(\"base64\"));\n } catch (innerError: unknown) {\n backtraces.set(\n `backtrace_failure_${coredump.pid}`,\n stringifyError(innerError),\n );\n }\n }\n\n return backtraces;\n}\n","import * as actionsCore from \"@actions/core\";\nimport { createHash, randomUUID } from \"node:crypto\";\n\nconst OPTIONAL_VARIABLES = [\"INVOCATION_ID\"];\n\n/* eslint-disable camelcase */\n/**\n * JSON sent to server.\n */\nexport type AnonymizedCorrelationHashes = {\n $anon_distinct_id: string;\n $groups: Record;\n $session_id?: string;\n correlation_source: string;\n github_repository_hash?: string;\n github_workflow_hash?: string;\n github_workflow_job_hash?: string;\n github_workflow_run_differentiator_hash?: string;\n github_workflow_run_hash?: string;\n is_ci: boolean;\n};\n\nexport function identify(): AnonymizedCorrelationHashes {\n const repository = hashEnvironmentVariables(\"GHR\", [\n \"GITHUB_SERVER_URL\",\n \"GITHUB_REPOSITORY_OWNER\",\n \"GITHUB_REPOSITORY_OWNER_ID\",\n \"GITHUB_REPOSITORY\",\n \"GITHUB_REPOSITORY_ID\",\n ]);\n\n const run_differentiator = hashEnvironmentVariables(\"GHWJA\", [\n \"GITHUB_SERVER_URL\",\n \"GITHUB_REPOSITORY_OWNER\",\n \"GITHUB_REPOSITORY_OWNER_ID\",\n \"GITHUB_REPOSITORY\",\n \"GITHUB_REPOSITORY_ID\",\n \"GITHUB_WORKFLOW\",\n \"GITHUB_JOB\",\n \"GITHUB_RUN_ID\",\n \"GITHUB_RUN_NUMBER\",\n \"GITHUB_RUN_ATTEMPT\",\n \"INVOCATION_ID\",\n ]);\n\n const ident: AnonymizedCorrelationHashes = {\n $anon_distinct_id: process.env[\"RUNNER_TRACKING_ID\"] || randomUUID(),\n\n correlation_source: \"github-actions\",\n\n github_repository_hash: repository,\n github_workflow_hash: hashEnvironmentVariables(\"GHW\", [\n \"GITHUB_SERVER_URL\",\n \"GITHUB_REPOSITORY_OWNER\",\n \"GITHUB_REPOSITORY_OWNER_ID\",\n \"GITHUB_REPOSITORY\",\n \"GITHUB_REPOSITORY_ID\",\n \"GITHUB_WORKFLOW\",\n ]),\n github_workflow_job_hash: hashEnvironmentVariables(\"GHWJ\", [\n \"GITHUB_SERVER_URL\",\n \"GITHUB_REPOSITORY_OWNER\",\n \"GITHUB_REPOSITORY_OWNER_ID\",\n \"GITHUB_REPOSITORY\",\n \"GITHUB_REPOSITORY_ID\",\n \"GITHUB_WORKFLOW\",\n \"GITHUB_JOB\",\n ]),\n github_workflow_run_hash: hashEnvironmentVariables(\"GHWJR\", [\n \"GITHUB_SERVER_URL\",\n \"GITHUB_REPOSITORY_OWNER\",\n \"GITHUB_REPOSITORY_OWNER_ID\",\n \"GITHUB_REPOSITORY\",\n \"GITHUB_REPOSITORY_ID\",\n \"GITHUB_WORKFLOW\",\n \"GITHUB_JOB\",\n \"GITHUB_RUN_ID\",\n ]),\n github_workflow_run_differentiator_hash: run_differentiator,\n $session_id: run_differentiator,\n $groups: {\n github_repository: repository,\n github_organization: hashEnvironmentVariables(\"GHO\", [\n \"GITHUB_SERVER_URL\",\n \"GITHUB_REPOSITORY_OWNER\",\n \"GITHUB_REPOSITORY_OWNER_ID\",\n ]),\n },\n is_ci: true,\n };\n\n actionsCore.debug(\"Correlation data:\");\n actionsCore.debug(JSON.stringify(ident, null, 2));\n\n return ident;\n}\n\nfunction hashEnvironmentVariables(\n prefix: string,\n variables: string[],\n): undefined | string {\n const hash = createHash(\"sha256\");\n\n for (const varName of variables) {\n let value = process.env[varName];\n\n if (value === undefined) {\n if (OPTIONAL_VARIABLES.includes(varName)) {\n actionsCore.debug(\n `Optional environment variable not set: ${varName} -- substituting with the variable name`,\n );\n value = varName;\n } else {\n actionsCore.debug(\n `Environment variable not set: ${varName} -- can't generate the requested identity`,\n );\n return undefined;\n }\n }\n\n hash.update(value);\n hash.update(\"\\0\");\n }\n\n return `${prefix}-${hash.digest(\"hex\")}`;\n}\n","/**\n * @packageDocumentation\n * Identifies and discovers backend servers for install.determinate.systems\n */\nimport { stringifyError } from \"./errors.js\";\nimport * as actionsCore from \"@actions/core\";\nimport { Got, got } from \"got\";\nimport type { SrvRecord } from \"node:dns\";\nimport { resolveSrv } from \"node:dns/promises\";\n\nconst DEFAULT_LOOKUP = \"_detsys_ids._tcp.install.determinate.systems.\";\nconst ALLOWED_SUFFIXES = [\n \".install.determinate.systems\",\n \".install.detsys.dev\",\n];\n\nconst DEFAULT_IDS_HOST = \"https://install.determinate.systems\";\nconst LOOKUP = process.env[\"IDS_LOOKUP\"] ?? DEFAULT_LOOKUP;\n\nconst DEFAULT_TIMEOUT = 10_000; // 10 seconds in ms\n\n/**\n * Host information for install.determinate.systems.\n */\nexport class IdsHost {\n private idsProjectName: string;\n private diagnosticsSuffix?: string;\n private runtimeDiagnosticsUrl?: string;\n private prioritizedURLs?: URL[];\n private client?: Got;\n\n constructor(\n idsProjectName: string,\n diagnosticsSuffix: string | undefined,\n runtimeDiagnosticsUrl: string | undefined,\n ) {\n this.idsProjectName = idsProjectName;\n this.diagnosticsSuffix = diagnosticsSuffix;\n this.runtimeDiagnosticsUrl = runtimeDiagnosticsUrl;\n this.client = undefined;\n }\n\n async getGot(\n recordFailoverCallback?: (\n incitingError: unknown,\n prevUrl: URL,\n nextUrl: URL,\n ) => void,\n ): Promise {\n if (this.client === undefined) {\n this.client = got.extend({\n timeout: {\n request: DEFAULT_TIMEOUT,\n },\n\n retry: {\n limit: Math.max((await this.getUrlsByPreference()).length, 3),\n methods: [\"GET\", \"HEAD\"],\n },\n\n hooks: {\n beforeRetry: [\n async (error, retryCount) => {\n const prevUrl = await this.getRootUrl();\n this.markCurrentHostBroken();\n const nextUrl = await this.getRootUrl();\n\n if (recordFailoverCallback !== undefined) {\n recordFailoverCallback(error, prevUrl, nextUrl);\n }\n\n actionsCore.info(\n `Retrying after error ${error.code}, retry #: ${retryCount}`,\n );\n },\n ],\n\n beforeRequest: [\n async (options) => {\n // The getter always returns a URL, even though the setter accepts a string\n const currentUrl: URL = options.url as URL;\n\n if (this.isUrlSubjectToDynamicUrls(currentUrl)) {\n const newUrl: URL = new URL(currentUrl);\n\n const url: URL = await this.getRootUrl();\n newUrl.host = url.host;\n\n options.url = newUrl;\n actionsCore.debug(`Transmuted ${currentUrl} into ${newUrl}`);\n } else {\n actionsCore.debug(`No transmutations on ${currentUrl}`);\n }\n },\n ],\n },\n });\n }\n\n return this.client;\n }\n\n markCurrentHostBroken(): void {\n this.prioritizedURLs?.shift();\n }\n\n setPrioritizedUrls(urls: URL[]): void {\n this.prioritizedURLs = urls;\n }\n\n isUrlSubjectToDynamicUrls(url: URL): boolean {\n if (url.origin === DEFAULT_IDS_HOST) {\n return true;\n }\n\n for (const suffix of ALLOWED_SUFFIXES) {\n if (url.host.endsWith(suffix)) {\n return true;\n }\n }\n\n return false;\n }\n\n async getDynamicRootUrl(): Promise {\n const idsHost = process.env[\"IDS_HOST\"];\n if (idsHost !== undefined) {\n try {\n return new URL(idsHost);\n } catch (err: unknown) {\n actionsCore.error(\n `IDS_HOST environment variable is not a valid URL. Ignoring. ${stringifyError(err)}`,\n );\n }\n }\n\n let url: URL | undefined = undefined;\n try {\n const urls = await this.getUrlsByPreference();\n url = urls[0];\n } catch (err: unknown) {\n actionsCore.error(\n `Error collecting IDS URLs by preference: ${stringifyError(err)}`,\n );\n }\n\n if (url === undefined) {\n return undefined;\n } else {\n // This is a load-bearing `new URL(url)` so that callers can't mutate\n // getRootUrl's return value.\n return new URL(url);\n }\n }\n\n async getRootUrl(): Promise {\n const url = await this.getDynamicRootUrl();\n\n if (url === undefined) {\n return new URL(DEFAULT_IDS_HOST);\n }\n\n return url;\n }\n\n async getDiagnosticsUrl(): Promise {\n if (this.runtimeDiagnosticsUrl === \"\") {\n // User specifically set the diagnostics URL to an empty string\n // so disable diagnostics\n return undefined;\n }\n\n if (\n this.runtimeDiagnosticsUrl !== \"-\" &&\n this.runtimeDiagnosticsUrl !== undefined\n ) {\n try {\n // Caller specified a specific diagnostics URL\n return new URL(this.runtimeDiagnosticsUrl);\n } catch (err: unknown) {\n actionsCore.info(\n `User-provided diagnostic endpoint ignored: not a valid URL: ${stringifyError(err)}`,\n );\n }\n }\n\n try {\n const diagnosticUrl = await this.getRootUrl();\n diagnosticUrl.pathname += \"events/batch\";\n return diagnosticUrl;\n } catch (err: unknown) {\n actionsCore.info(\n `Generated diagnostic endpoint ignored, and diagnostics are disabled: not a valid URL: ${stringifyError(err)}`,\n );\n return undefined;\n }\n }\n\n private async getUrlsByPreference(): Promise {\n if (this.prioritizedURLs === undefined) {\n this.prioritizedURLs = orderRecordsByPriorityWeight(\n await discoverServiceRecords(),\n ).flatMap((record) => recordToUrl(record) || []);\n }\n\n return this.prioritizedURLs;\n }\n}\n\nexport function recordToUrl(record: SrvRecord): URL | undefined {\n const urlStr = `https://${record.name}:${record.port}`;\n try {\n return new URL(urlStr);\n } catch (err: unknown) {\n actionsCore.debug(\n `Record ${JSON.stringify(record)} produced an invalid URL: ${urlStr} (${err})`,\n );\n return undefined;\n }\n}\n\nasync function discoverServiceRecords(): Promise {\n return await discoverServicesStub(resolveSrv(LOOKUP), 1_000);\n}\n\nexport async function discoverServicesStub(\n lookup: Promise,\n timeout: number,\n): Promise {\n const defaultFallback: Promise = new Promise(\n (resolve, _reject) => {\n setTimeout(resolve, timeout, []);\n },\n );\n\n let records: SrvRecord[];\n\n try {\n records = await Promise.race([lookup, defaultFallback]);\n } catch (reason: unknown) {\n actionsCore.debug(`Error resolving SRV records: ${stringifyError(reason)}`);\n records = [];\n }\n\n const acceptableRecords = records.filter((record: SrvRecord): boolean => {\n for (const suffix of ALLOWED_SUFFIXES) {\n if (record.name.endsWith(suffix)) {\n return true;\n }\n }\n\n actionsCore.debug(\n `Unacceptable domain due to an invalid suffix: ${record.name}`,\n );\n\n return false;\n });\n\n if (acceptableRecords.length === 0) {\n actionsCore.debug(`No records found for ${LOOKUP}`);\n } else {\n actionsCore.debug(\n `Resolved ${LOOKUP} to ${JSON.stringify(acceptableRecords)}`,\n );\n }\n\n return acceptableRecords;\n}\n\nexport function orderRecordsByPriorityWeight(\n records: SrvRecord[],\n): SrvRecord[] {\n const byPriorityWeight: Map = new Map();\n for (const record of records) {\n const existing = byPriorityWeight.get(record.priority);\n if (existing) {\n existing.push(record);\n } else {\n byPriorityWeight.set(record.priority, [record]);\n }\n }\n\n const prioritizedRecords: SrvRecord[] = [];\n const keys: number[] = Array.from(byPriorityWeight.keys()).sort(\n (a, b) => a - b,\n );\n\n for (const priority of keys) {\n const recordsByPrio = byPriorityWeight.get(priority);\n if (recordsByPrio === undefined) {\n continue;\n }\n\n prioritizedRecords.push(...weightedRandom(recordsByPrio));\n }\n\n return prioritizedRecords;\n}\n\nexport function weightedRandom(records: SrvRecord[]): SrvRecord[] {\n // Duplicate records so we don't accidentally change our caller's data\n const scratchRecords: SrvRecord[] = records.slice();\n const result: SrvRecord[] = [];\n\n while (scratchRecords.length > 0) {\n const weights: number[] = [];\n\n {\n for (let i = 0; i < scratchRecords.length; i++) {\n weights.push(\n scratchRecords[i].weight + (i > 0 ? scratchRecords[i - 1].weight : 0),\n );\n }\n }\n\n const point = Math.random() * weights[weights.length - 1];\n\n for (\n let selectedIndex = 0;\n selectedIndex < weights.length;\n selectedIndex++\n ) {\n if (weights[selectedIndex] > point) {\n // Remove our selected record and add it to the result\n result.push(scratchRecords.splice(selectedIndex, 1)[0]);\n break;\n }\n }\n }\n\n return result;\n}\n","/**\n * @packageDocumentation\n * Helpers for getting values from an Action's configuration.\n */\nimport * as actionsCore from \"@actions/core\";\n\n/**\n * Get a Boolean input from the Action's configuration by name.\n */\nconst getBool = (name: string): boolean => {\n return actionsCore.getBooleanInput(name);\n};\n\n/**\n * Get a Boolean input from the Action's configuration by name, or undefined if it is unset.\n */\nconst getBoolOrUndefined = (name: string): boolean | undefined => {\n if (getStringOrUndefined(name) === undefined) {\n return undefined;\n }\n\n return actionsCore.getBooleanInput(name);\n};\n\n/**\n * The character used to separate values in the input string.\n */\nexport type Separator = \"space\" | \"comma\";\n\n/**\n * Convert a comma-separated string input into an array of strings. If `comma` is selected,\n * all whitespace is removed from the string before converting to an array.\n */\nconst getArrayOfStrings = (name: string, separator: Separator): string[] => {\n const original = getString(name);\n return handleString(original, separator);\n};\n\n/**\n * Convert a string input into an array of strings or `null` if no value is set.\n */\nconst getArrayOfStringsOrNull = (\n name: string,\n separator: Separator,\n): string[] | null => {\n const original = getStringOrNull(name);\n if (original === null) {\n return null;\n } else {\n return handleString(original, separator);\n }\n};\n\n// Split out this function for use in testing\nexport const handleString = (input: string, separator: Separator): string[] => {\n const sepChar = separator === \"comma\" ? \",\" : /\\s+/;\n const trimmed = input.trim(); // Remove whitespace at the beginning and end\n if (trimmed === \"\") {\n return [];\n }\n\n return trimmed.split(sepChar).map((s: string) => s.trim());\n};\n\n/**\n * Get a multi-line string input from the Action's configuration by name or return `null` if not set.\n */\nconst getMultilineStringOrNull = (name: string): string[] | null => {\n const value = actionsCore.getMultilineInput(name);\n if (value.length === 0) {\n return null;\n } else {\n return value;\n }\n};\n\n/**\n * Get a number input from the Action's configuration by name or return `null` if not set.\n */\nconst getNumberOrNull = (name: string): number | null => {\n const value = actionsCore.getInput(name);\n if (value === \"\") {\n return null;\n } else {\n return Number(value);\n }\n};\n\n/**\n * Get a string input from the Action's configuration.\n */\nconst getString = (name: string): string => {\n return actionsCore.getInput(name);\n};\n\n/**\n * Get a string input from the Action's configuration by name or return `null` if not set.\n */\nconst getStringOrNull = (name: string): string | null => {\n const value = actionsCore.getInput(name);\n if (value === \"\") {\n return null;\n } else {\n return value;\n }\n};\n\n/**\n * Get a string input from the Action's configuration by name or return `undefined` if not set.\n */\nconst getStringOrUndefined = (name: string): string | undefined => {\n const value = actionsCore.getInput(name);\n if (value === \"\") {\n return undefined;\n } else {\n return value;\n }\n};\n\nexport {\n getBool,\n getBoolOrUndefined,\n getArrayOfStrings,\n getArrayOfStringsOrNull,\n getMultilineStringOrNull,\n getNumberOrNull,\n getString,\n getStringOrNull,\n getStringOrUndefined,\n};\n","/**\n * @packageDocumentation\n * Helpers for determining system attributes of the current runner.\n */\nimport * as actionsCore from \"@actions/core\";\n\n/**\n * Get the current architecture plus OS. Examples include `X64-Linux` and `ARM64-macOS`.\n */\nexport function getArchOs(): string {\n const envArch = process.env.RUNNER_ARCH;\n const envOs = process.env.RUNNER_OS;\n\n if (envArch && envOs) {\n return `${envArch}-${envOs}`;\n } else {\n actionsCore.error(\n `Can't identify the platform: RUNNER_ARCH or RUNNER_OS undefined (${envArch}-${envOs})`,\n );\n throw new Error(\"RUNNER_ARCH and/or RUNNER_OS is not defined\");\n }\n}\n\n/**\n * Get the current Nix system. Examples include `x86_64-linux` and `aarch64-darwin`.\n */\nexport function getNixPlatform(archOs: string): string {\n const archOsMap: Map = new Map([\n [\"X64-macOS\", \"x86_64-darwin\"],\n [\"ARM64-macOS\", \"aarch64-darwin\"],\n [\"X64-Linux\", \"x86_64-linux\"],\n [\"ARM64-Linux\", \"aarch64-linux\"],\n ]);\n\n const mappedTo = archOsMap.get(archOs);\n if (mappedTo) {\n return mappedTo;\n } else {\n actionsCore.error(\n `ArchOs (${archOs}) doesn't map to a supported Nix platform.`,\n );\n throw new Error(\n `Cannot convert ArchOs (${archOs}) to a supported Nix platform.`,\n );\n }\n}\n","import { getStringOrUndefined } from \"./inputs.js\";\nimport * as actionsCore from \"@actions/core\";\n\nexport type SourceDef = {\n path?: string;\n url?: string;\n tag?: string;\n pr?: string;\n branch?: string;\n revision?: string;\n};\n\nexport function constructSourceParameters(legacyPrefix?: string): SourceDef {\n return {\n path: noisilyGetInput(\"path\", legacyPrefix),\n url: noisilyGetInput(\"url\", legacyPrefix),\n tag: noisilyGetInput(\"tag\", legacyPrefix),\n pr: noisilyGetInput(\"pr\", legacyPrefix),\n branch: noisilyGetInput(\"branch\", legacyPrefix),\n revision: noisilyGetInput(\"revision\", legacyPrefix),\n };\n}\n\nfunction noisilyGetInput(\n suffix: string,\n legacyPrefix: string | undefined,\n): string | undefined {\n const preferredInput = getStringOrUndefined(`source-${suffix}`);\n\n if (!legacyPrefix) {\n return preferredInput;\n }\n\n // Remaining is for handling cases where the legacy prefix\n // should be examined.\n const legacyInput = getStringOrUndefined(`${legacyPrefix}-${suffix}`);\n\n if (preferredInput && legacyInput) {\n actionsCore.warning(\n `The supported option source-${suffix} and the legacy option ${legacyPrefix}-${suffix} are both set. Preferring source-${suffix}. Please stop setting ${legacyPrefix}-${suffix}.`,\n );\n return preferredInput;\n } else if (legacyInput) {\n actionsCore.warning(\n `The legacy option ${legacyPrefix}-${suffix} is set. Please migrate to source-${suffix}.`,\n );\n return legacyInput;\n } else {\n return preferredInput;\n }\n}\n","/**\n * @packageDocumentation\n * Determinate Systems' TypeScript library for creating GitHub Actions logic.\n */\n// import { version as pkgVersion } from \"../package.json\";\nimport * as ghActionsCorePlatform from \"./actions-core-platform.js\";\nimport { collectBacktraces } from \"./backtrace.js\";\nimport type { CheckIn, Feature } from \"./check-in.js\";\nimport * as correlation from \"./correlation.js\";\nimport { IdsHost } from \"./ids-host.js\";\nimport { getBool, getBoolOrUndefined, getStringOrNull } from \"./inputs.js\";\nimport * as platform from \"./platform.js\";\nimport type { SourceDef } from \"./sourcedef.js\";\nimport { constructSourceParameters } from \"./sourcedef.js\";\nimport * as actionsCache from \"@actions/cache\";\nimport * as actionsCore from \"@actions/core\";\nimport * as actionsExec from \"@actions/exec\";\nimport { type Got, type Request, TimeoutError } from \"got\";\nimport { exec } from \"node:child_process\";\nimport type { UUID } from \"node:crypto\";\nimport { randomUUID } from \"node:crypto\";\nimport {\n PathLike,\n WriteStream,\n createWriteStream,\n constants as fsConstants,\n readFileSync,\n} from \"node:fs\";\nimport fs, { chmod, copyFile, mkdir } from \"node:fs/promises\";\nimport * as os from \"node:os\";\nimport { tmpdir } from \"node:os\";\nimport * as path from \"node:path\";\nimport { promisify } from \"node:util\";\nimport { gzip } from \"node:zlib\";\n\nconst pkgVersion = \"1.0\";\n\nconst EVENT_BACKTRACES = \"backtrace\";\nconst EVENT_EXCEPTION = \"exception\";\nconst EVENT_ARTIFACT_CACHE_HIT = \"artifact_cache_hit\";\nconst EVENT_ARTIFACT_CACHE_MISS = \"artifact_cache_miss\";\nconst EVENT_ARTIFACT_CACHE_PERSIST = \"artifact_cache_persist\";\nconst EVENT_PREFLIGHT_REQUIRE_NIX_DENIED = \"preflight-require-nix-denied\";\nconst EVENT_STORE_IDENTITY_FAILED = \"store_identity_failed\";\n\nconst FACT_ARTIFACT_FETCHED_FROM_CACHE = \"artifact_fetched_from_cache\";\nconst FACT_ENDED_WITH_EXCEPTION = \"ended_with_exception\";\nconst FACT_FINAL_EXCEPTION = \"final_exception\";\nconst FACT_OS = \"$os\";\nconst FACT_OS_VERSION = \"$os_version\";\nconst FACT_SOURCE_URL = \"source_url\";\nconst FACT_SOURCE_URL_ETAG = \"source_url_etag\";\nconst FACT_NIX_VERSION = \"nix_version\";\n\nconst FACT_NIX_LOCATION = \"nix_location\";\nconst FACT_NIX_STORE_TRUST = \"nix_store_trusted\";\nconst FACT_NIX_STORE_VERSION = \"nix_store_version\";\nconst FACT_NIX_STORE_CHECK_METHOD = \"nix_store_check_method\";\nconst FACT_NIX_STORE_CHECK_ERROR = \"nix_store_check_error\";\n\nconst STATE_KEY_EXECUTION_PHASE = \"detsys_action_execution_phase\";\nconst STATE_KEY_NIX_NOT_FOUND = \"detsys_action_nix_not_found\";\nconst STATE_NOT_FOUND = \"not-found\";\nconst STATE_KEY_CROSS_PHASE_ID = \"detsys_cross_phase_id\";\nconst STATE_BACKTRACE_START_TIMESTAMP = \"detsys_backtrace_start_timestamp\";\n\nconst DIAGNOSTIC_ENDPOINT_TIMEOUT_MS = 10_000; // 10 seconds in ms\nconst CHECK_IN_ENDPOINT_TIMEOUT_MS = 1_000; // 1 second in ms\nconst PROGRAM_NAME_CRASH_DENY_LIST = [\n \"nix-expr-tests\",\n \"nix-store-tests\",\n \"nix-util-tests\",\n];\n\n/**\n * An enum for describing different \"fetch suffixes\" for i.d.s.\n *\n * - `nix-style` means that system names like `x86_64-linux` and `aarch64-darwin` are used\n * - `gh-env-style` means that names like `X64-Linux` and `ARM64-macOS` are used\n * - `universal` means that the suffix is the static `universal` (for non-system-specific things)\n */\nexport type FetchSuffixStyle = \"nix-style\" | \"gh-env-style\" | \"universal\";\n\n/**\n * GitHub Actions has two possible execution phases: `main` and `post`.\n */\nexport type ExecutionPhase = \"main\" | \"post\";\n\n/**\n * How to handle whether Nix is currently installed on the runner.\n *\n * - `fail` means that the workflow fails if Nix isn't installed\n * - `warn` means that a warning is logged if Nix isn't installed\n * - `ignore` means that Nix will not be checked\n */\nexport type NixRequirementHandling = \"fail\" | \"warn\" | \"ignore\";\n\n/**\n * Whether the Nix store on the runner is trusted.\n *\n * - `trusted` means yes\n * - `untrusted` means no\n * - `unknown` means that the status couldn't be determined\n *\n * This is determined via the output of `nix store info --json`.\n */\nexport type NixStoreTrust = \"trusted\" | \"untrusted\" | \"unknown\";\n\nexport type ActionOptions = {\n // Name of the project generally, and the name of the binary on disk.\n name: string;\n\n // Defaults to `name`, Corresponds to the ProjectHost entry on i.d.s.\n idsProjectName?: string;\n\n // Defaults to `action:`\n eventPrefix?: string;\n\n // The \"architecture\" URL component expected by I.D.S. for the ProjectHost.\n fetchStyle: FetchSuffixStyle;\n\n // IdsToolbox assumes the GitHub Action exposes source overrides, like branch/pr/etc. to be named `source-*`.\n // This prefix adds a fallback name, prefixed by `${legacySourcePrefix}-`.\n // Users who configure legacySourcePrefix will get warnings asking them to change to `source-*`.\n legacySourcePrefix?: string;\n\n // Check if Nix is installed before running this action.\n // If Nix isn't installed, this action will not fail, and will instead do nothing.\n // The action will emit a user-visible warning instructing them to install Nix.\n requireNix: NixRequirementHandling;\n\n // The URL suffix to send diagnostics events to.\n //\n // The final URL is constructed via IDS_HOST/idsProjectName/diagnosticsSuffix.\n //\n // Default: `diagnostics`.\n diagnosticsSuffix?: string;\n\n // Collect backtraces from segfaults and other failures from binaries that start with these names.\n //\n // Default: `[ \"nix\", \"determinate-nixd\", ActionOptions.name ]`.\n binaryNamePrefixes?: string[];\n\n // Do NOT collect backtraces from segfaults and other failures from binaries with exact these names.\n //\n // Default: `[ \"nix-expr-tests\" ]`.\n binaryNamesDenyList?: string[];\n};\n\n/**\n * A confident version of Options, where defaults have been resolved into final values.\n */\nexport type ConfidentActionOptions = {\n name: string;\n idsProjectName: string;\n eventPrefix: string;\n fetchStyle: FetchSuffixStyle;\n legacySourcePrefix?: string;\n requireNix: NixRequirementHandling;\n providedDiagnosticsUrl?: URL;\n binaryNamePrefixes: string[];\n binaryNamesDenyList: string[];\n};\n\n/**\n * An event to send to the diagnostic endpoint of i.d.s.\n */\nexport type DiagnosticEvent = {\n // Note: putting a Map in here won't serialize to json properly.\n // It'll just be {} on serialization.\n name: string;\n distinct_id?: string;\n uuid: UUID;\n timestamp: Date;\n\n properties: Record;\n};\n\nconst determinateStateDir = \"/var/lib/determinate\";\nconst determinateIdentityFile = path.join(determinateStateDir, \"identity.json\");\n\nconst isRoot = os.userInfo().uid === 0;\n\n/** Create the Determinate state directory by escalating via sudo */\nasync function sudoEnsureDeterminateStateDir(): Promise {\n const code = await actionsExec.exec(\"sudo\", [\n \"mkdir\",\n \"-p\",\n determinateStateDir,\n ]);\n\n if (code !== 0) {\n throw new Error(`sudo mkdir -p exit: ${code}`);\n }\n}\n\n/** Ensures the Determinate state directory exists, escalating if necessary */\nasync function ensureDeterminateStateDir(): Promise {\n if (isRoot) {\n await mkdir(determinateStateDir, { recursive: true });\n } else {\n return sudoEnsureDeterminateStateDir();\n }\n}\n\n/** Writes correlation hashes to the Determinate state directory by writing to a `sudo tee` pipe */\nasync function sudoWriteCorrelationHashes(hashes: string): Promise {\n const buffer = Buffer.from(hashes);\n\n const code = await actionsExec.exec(\n \"sudo\",\n [\"tee\", determinateIdentityFile],\n {\n input: buffer,\n\n // Ignore output from tee\n outStream: createWriteStream(\"/dev/null\"),\n },\n );\n\n if (code !== 0) {\n throw new Error(`sudo tee exit: ${code}`);\n }\n}\n\n/** Writes correlation hashes to the Determinate state directory, escalating if necessary */\nasync function writeCorrelationHashes(hashes: string): Promise {\n await ensureDeterminateStateDir();\n\n if (isRoot) {\n await fs.writeFile(determinateIdentityFile, hashes, \"utf-8\");\n } else {\n return sudoWriteCorrelationHashes(hashes);\n }\n}\n\nexport abstract class DetSysAction {\n nixStoreTrust: NixStoreTrust;\n strictMode: boolean;\n\n private actionOptions: ConfidentActionOptions;\n private exceptionAttachments: Map;\n private archOs: string;\n private executionPhase: ExecutionPhase;\n private nixSystem: string;\n private architectureFetchSuffix: string;\n private sourceParameters: SourceDef;\n private facts: Record;\n private events: DiagnosticEvent[];\n private identity: correlation.AnonymizedCorrelationHashes;\n private idsHost: IdsHost;\n private features: { [k: string]: Feature };\n private featureEventMetadata: { [k: string]: string | boolean };\n\n private determineExecutionPhase(): ExecutionPhase {\n const currentPhase = actionsCore.getState(STATE_KEY_EXECUTION_PHASE);\n if (currentPhase === \"\") {\n actionsCore.saveState(STATE_KEY_EXECUTION_PHASE, \"post\");\n return \"main\";\n } else {\n return \"post\";\n }\n }\n\n constructor(actionOptions: ActionOptions) {\n this.actionOptions = makeOptionsConfident(actionOptions);\n this.idsHost = new IdsHost(\n this.actionOptions.idsProjectName,\n actionOptions.diagnosticsSuffix,\n // Note: we don't use actionsCore.getInput('diagnostic-endpoint') on purpose:\n // getInput silently converts absent data to an empty string.\n process.env[\"INPUT_DIAGNOSTIC-ENDPOINT\"],\n );\n this.exceptionAttachments = new Map();\n this.nixStoreTrust = \"unknown\";\n this.strictMode = getBool(\"_internal-strict-mode\");\n\n if (\n getBoolOrUndefined(\n \"_internal-obliterate-actions-id-token-request-variables\",\n ) === true\n ) {\n process.env[\"ACTIONS_ID_TOKEN_REQUEST_URL\"] = undefined;\n process.env[\"ACTIONS_ID_TOKEN_REQUEST_TOKEN\"] = undefined;\n }\n\n this.features = {};\n this.featureEventMetadata = {};\n this.events = [];\n\n this.getCrossPhaseId();\n this.collectBacktraceSetup();\n\n // JSON sent to server\n /* eslint-disable camelcase */\n this.facts = {\n $lib: \"idslib\",\n $lib_version: pkgVersion,\n project: this.actionOptions.name,\n ids_project: this.actionOptions.idsProjectName,\n };\n\n const params = [\n [\"github_action_ref\", \"GITHUB_ACTION_REF\"],\n [\"github_action_repository\", \"GITHUB_ACTION_REPOSITORY\"],\n [\"github_event_name\", \"GITHUB_EVENT_NAME\"],\n [\"$os\", \"RUNNER_OS\"],\n [\"arch\", \"RUNNER_ARCH\"],\n ];\n for (const [target, env] of params) {\n const value = process.env[env];\n if (value) {\n this.facts[target] = value;\n }\n }\n\n this.identity = correlation.identify();\n this.archOs = platform.getArchOs();\n this.nixSystem = platform.getNixPlatform(this.archOs);\n\n this.facts.$app_name = `${this.actionOptions.name}/action`;\n this.facts.arch_os = this.archOs;\n this.facts.nix_system = this.nixSystem;\n\n {\n ghActionsCorePlatform\n .getDetails()\n // eslint-disable-next-line github/no-then\n .then((details) => {\n if (details.name !== \"unknown\") {\n this.addFact(FACT_OS, details.name);\n }\n if (details.version !== \"unknown\") {\n this.addFact(FACT_OS_VERSION, details.version);\n }\n })\n // eslint-disable-next-line github/no-then\n .catch((e: unknown) => {\n actionsCore.debug(\n `Failure getting platform details: ${stringifyError(e)}`,\n );\n });\n }\n\n this.executionPhase = this.determineExecutionPhase();\n this.facts.execution_phase = this.executionPhase;\n\n if (this.actionOptions.fetchStyle === \"gh-env-style\") {\n this.architectureFetchSuffix = this.archOs;\n } else if (this.actionOptions.fetchStyle === \"nix-style\") {\n this.architectureFetchSuffix = this.nixSystem;\n } else if (this.actionOptions.fetchStyle === \"universal\") {\n this.architectureFetchSuffix = \"universal\";\n } else {\n throw new Error(\n `fetchStyle ${this.actionOptions.fetchStyle} is not a valid style`,\n );\n }\n\n this.sourceParameters = constructSourceParameters(\n this.actionOptions.legacySourcePrefix,\n );\n\n this.recordEvent(`begin_${this.executionPhase}`);\n }\n\n /**\n * Attach a file to the diagnostics data in error conditions.\n *\n * The file at `location` doesn't need to exist when stapleFile is called.\n *\n * If the file doesn't exist or is unreadable when trying to staple the attachments, the JS error will be stored in a context value at `staple_failure_{name}`.\n * If the file is readable, the file's contents will be stored in a context value at `staple_value_{name}`.\n */\n stapleFile(name: string, location: string): void {\n this.exceptionAttachments.set(name, location);\n }\n\n /**\n * The main execution phase.\n */\n abstract main(): Promise;\n\n /**\n * The post execution phase.\n */\n abstract post(): Promise;\n\n /**\n * Execute the Action as defined.\n */\n execute(): void {\n // eslint-disable-next-line github/no-then\n this.executeAsync().catch((error: Error) => {\n // eslint-disable-next-line no-console\n console.log(error);\n process.exitCode = 1;\n });\n }\n\n getTemporaryName(): string {\n const tmpDir = process.env[\"RUNNER_TEMP\"] || tmpdir();\n return path.join(tmpDir, `${this.actionOptions.name}-${randomUUID()}`);\n }\n\n addFact(key: string, value: string | boolean | number): void {\n this.facts[key] = value;\n }\n\n async getDiagnosticsUrl(): Promise {\n return await this.idsHost.getDiagnosticsUrl();\n }\n\n getUniqueId(): string {\n return (\n this.identity.github_workflow_run_differentiator_hash ||\n process.env.RUNNER_TRACKING_ID ||\n randomUUID()\n );\n }\n\n // This ID will be saved in the action's state, to be persisted across phase steps\n getCrossPhaseId(): string {\n let crossPhaseId = actionsCore.getState(STATE_KEY_CROSS_PHASE_ID);\n\n if (crossPhaseId === \"\") {\n crossPhaseId = randomUUID();\n actionsCore.saveState(STATE_KEY_CROSS_PHASE_ID, crossPhaseId);\n }\n\n return crossPhaseId;\n }\n\n getCorrelationHashes(): correlation.AnonymizedCorrelationHashes {\n return this.identity;\n }\n\n recordEvent(\n eventName: string,\n context: Record = {},\n ): void {\n const prefixedName =\n eventName === \"$feature_flag_called\"\n ? eventName\n : `${this.actionOptions.eventPrefix}${eventName}`;\n\n this.events.push({\n name: prefixedName,\n\n // Use the anon distinct ID as the distinct ID until we actually have a distinct ID in the future\n distinct_id: this.identity.$anon_distinct_id,\n\n // distinct_id\n uuid: randomUUID(),\n timestamp: new Date(),\n\n properties: {\n ...context,\n ...this.identity,\n ...this.facts,\n ...Object.fromEntries(\n Object.entries(this.featureEventMetadata).map<\n [string, string | boolean]\n >(([name, variant]) => [`$feature/${name}`, variant]),\n ),\n },\n });\n }\n\n /**\n * Unpacks the closure returned by `fetchArtifact()`, imports the\n * contents into the Nix store, and returns the path of the executable at\n * `/nix/store/STORE_PATH/bin/${bin}`.\n */\n async unpackClosure(bin: string): Promise {\n const artifact = await this.fetchArtifact();\n const { stdout } = await promisify(exec)(\n `cat \"${artifact}\" | xz -d | nix-store --import`,\n );\n const paths = stdout.split(os.EOL);\n const lastPath = paths.at(-2);\n return `${lastPath}/bin/${bin}`;\n }\n\n /**\n * Fetches the executable at the URL determined by the `source-*` inputs and\n * other facts, `chmod`s it, and returns the path to the executable on disk.\n */\n async fetchExecutable(): Promise {\n const binaryPath = await this.fetchArtifact();\n await chmod(binaryPath, fsConstants.S_IXUSR | fsConstants.S_IXGRP);\n return binaryPath;\n }\n\n private get isMain(): boolean {\n return this.executionPhase === \"main\";\n }\n\n private get isPost(): boolean {\n return this.executionPhase === \"post\";\n }\n\n private async executeAsync(): Promise {\n try {\n await this.checkIn();\n\n const correlationHashes = JSON.stringify(this.getCorrelationHashes());\n process.env.DETSYS_CORRELATION = correlationHashes;\n try {\n await writeCorrelationHashes(correlationHashes);\n } catch (error) {\n this.recordEvent(EVENT_STORE_IDENTITY_FAILED, { error: String(error) });\n }\n\n if (!(await this.preflightRequireNix())) {\n this.recordEvent(EVENT_PREFLIGHT_REQUIRE_NIX_DENIED);\n return;\n } else {\n await this.preflightNixStoreInfo();\n await this.preflightNixVersion();\n this.addFact(FACT_NIX_STORE_TRUST, this.nixStoreTrust);\n }\n\n if (this.isMain) {\n await this.main();\n\n // Run the preflight of the nix version a second time so our \"shutdown\" events have updated version info.\n await this.preflightNixVersion();\n } else if (this.isPost) {\n await this.post();\n }\n this.addFact(FACT_ENDED_WITH_EXCEPTION, false);\n } catch (e: unknown) {\n this.addFact(FACT_ENDED_WITH_EXCEPTION, true);\n\n const reportable = stringifyError(e);\n\n this.addFact(FACT_FINAL_EXCEPTION, reportable);\n\n if (this.isPost) {\n actionsCore.warning(reportable);\n } else {\n actionsCore.setFailed(reportable);\n }\n\n const doGzip = promisify(gzip);\n\n const exceptionContext: Map = new Map();\n for (const [attachmentLabel, filePath] of this.exceptionAttachments) {\n try {\n const logText = readFileSync(filePath);\n const buf = await doGzip(logText);\n exceptionContext.set(\n `staple_value_${attachmentLabel}`,\n buf.toString(\"base64\"),\n );\n } catch (innerError: unknown) {\n exceptionContext.set(\n `staple_failure_${attachmentLabel}`,\n stringifyError(innerError),\n );\n }\n }\n\n this.recordEvent(EVENT_EXCEPTION, Object.fromEntries(exceptionContext));\n } finally {\n if (this.isPost) {\n await this.collectBacktraces();\n }\n\n await this.complete();\n }\n }\n\n async getClient(): Promise {\n return await this.idsHost.getGot(\n (incitingError: unknown, prevUrl: URL, nextUrl: URL) => {\n this.recordPlausibleTimeout(incitingError);\n\n this.recordEvent(\"ids-failover\", {\n previousUrl: prevUrl.toString(),\n nextUrl: nextUrl.toString(),\n });\n },\n );\n }\n\n private async checkIn(): Promise {\n const checkin = await this.requestCheckIn();\n if (checkin === undefined) {\n return;\n }\n\n this.features = checkin.options;\n for (const [key, feature] of Object.entries(this.features)) {\n this.featureEventMetadata[key] = feature.variant;\n }\n\n const impactSymbol: Map = new Map([\n [\"none\", \"⚪\"],\n [\"maintenance\", \"🛠️\"],\n [\"minor\", \"🟡\"],\n [\"major\", \"🟠\"],\n [\"critical\", \"🔴\"],\n ]);\n const defaultImpactSymbol = \"🔵\";\n\n if (checkin.status !== null) {\n const summaries: string[] = [];\n\n for (const incident of checkin.status.incidents) {\n summaries.push(\n `${impactSymbol.get(incident.impact) || defaultImpactSymbol} ${incident.status.replace(\"_\", \" \")}: ${incident.name} (${incident.shortlink})`,\n );\n }\n\n for (const maintenance of checkin.status.scheduled_maintenances) {\n summaries.push(\n `${impactSymbol.get(maintenance.impact) || defaultImpactSymbol} ${maintenance.status.replace(\"_\", \" \")}: ${maintenance.name} (${maintenance.shortlink})`,\n );\n }\n\n if (summaries.length > 0) {\n actionsCore.info(\n // Bright red, Bold, Underline\n `${\"\\u001b[0;31m\"}${\"\\u001b[1m\"}${\"\\u001b[4m\"}${checkin.status.page.name} Status`,\n );\n for (const notice of summaries) {\n actionsCore.info(notice);\n }\n actionsCore.info(`See: ${checkin.status.page.url}`);\n actionsCore.info(``);\n }\n }\n }\n\n getFeature(name: string): Feature | undefined {\n if (!this.features.hasOwnProperty(name)) {\n return undefined;\n }\n\n const result = this.features[name];\n if (result === undefined) {\n return undefined;\n }\n\n this.recordEvent(\"$feature_flag_called\", {\n $feature_flag: name,\n $feature_flag_response: result.variant,\n });\n\n return result;\n }\n\n /**\n * Check in to install.determinate.systems, to accomplish three things:\n *\n * 1. Preflight the server selected from IdsHost, to increase the chances of success.\n * 2. Fetch any incidents and maintenance events to let users know in case things are weird.\n * 3. Get feature flag data so we can gently roll out new features.\n */\n private async requestCheckIn(): Promise {\n for (\n let attemptsRemaining = 5;\n attemptsRemaining > 0;\n attemptsRemaining--\n ) {\n const checkInUrl = await this.getCheckInUrl();\n if (checkInUrl === undefined) {\n return undefined;\n }\n\n try {\n actionsCore.debug(`Preflighting via ${checkInUrl}`);\n\n const props = {\n // Use a distinct_id when we actually have one\n distinct_id: this.identity.$anon_distinct_id,\n anon_distinct_id: this.identity.$anon_distinct_id,\n groups: this.identity.$groups,\n person_properties: {\n ci: \"github\",\n\n ...this.identity,\n ...this.facts,\n },\n };\n\n return await (\n await this.getClient()\n )\n .post(checkInUrl, {\n json: props,\n timeout: {\n request: CHECK_IN_ENDPOINT_TIMEOUT_MS,\n },\n })\n .json();\n } catch (e: unknown) {\n this.recordPlausibleTimeout(e);\n actionsCore.debug(`Error checking in: ${stringifyError(e)}`);\n this.idsHost.markCurrentHostBroken();\n }\n }\n\n return undefined;\n }\n\n private recordPlausibleTimeout(e: unknown): void {\n // see: https://github.com/sindresorhus/got/blob/895e463fa699d6f2e4b2fc01ceb3b2bb9e157f4c/documentation/8-errors.md\n if (e instanceof TimeoutError && \"timings\" in e && \"request\" in e) {\n const reportContext: {\n [index: string]: string | number | undefined;\n } = {\n url: e.request.requestUrl?.toString(),\n retry_count: e.request.retryCount,\n };\n\n for (const [key, value] of Object.entries(e.timings.phases)) {\n if (Number.isFinite(value)) {\n reportContext[`timing_phase_${key}`] = value;\n }\n }\n\n this.recordEvent(\"timeout\", reportContext);\n }\n }\n\n /**\n * Fetch an artifact, such as a tarball, from the location determined by the\n * `source-*` inputs. If `source-binary` is specified, this will return a path\n * to a binary on disk; otherwise, the artifact will be downloaded from the\n * URL determined by the other `source-*` inputs (`source-url`, `source-pr`,\n * etc.).\n */\n private async fetchArtifact(): Promise {\n const sourceBinary = getStringOrNull(\"source-binary\");\n\n // If source-binary is set, use that. Otherwise fall back to the source-* parameters.\n if (sourceBinary !== null && sourceBinary !== \"\") {\n actionsCore.debug(`Using the provided source binary at ${sourceBinary}`);\n return sourceBinary;\n }\n\n actionsCore.startGroup(\n `Downloading ${this.actionOptions.name} for ${this.architectureFetchSuffix}`,\n );\n\n try {\n actionsCore.info(`Fetching from ${await this.getSourceUrl()}`);\n\n const correlatedUrl = await this.getSourceUrl();\n correlatedUrl.searchParams.set(\"ci\", \"github\");\n correlatedUrl.searchParams.set(\n \"correlation\",\n JSON.stringify(this.identity),\n );\n\n const versionCheckup = await (await this.getClient()).head(correlatedUrl);\n if (versionCheckup.headers.etag) {\n const v = versionCheckup.headers.etag;\n this.addFact(FACT_SOURCE_URL_ETAG, v);\n\n actionsCore.debug(\n `Checking the tool cache for ${await this.getSourceUrl()} at ${v}`,\n );\n const cached = await this.getCachedVersion(v);\n if (cached) {\n this.facts[FACT_ARTIFACT_FETCHED_FROM_CACHE] = true;\n actionsCore.debug(`Tool cache hit.`);\n return cached;\n }\n }\n\n this.facts[FACT_ARTIFACT_FETCHED_FROM_CACHE] = false;\n\n actionsCore.debug(\n `No match from the cache, re-fetching from the redirect: ${versionCheckup.url}`,\n );\n\n const destFile = this.getTemporaryName();\n\n const fetchStream = await this.downloadFile(\n new URL(versionCheckup.url),\n destFile,\n );\n\n if (fetchStream.response?.headers.etag) {\n const v = fetchStream.response.headers.etag;\n\n try {\n await this.saveCachedVersion(v, destFile);\n } catch (e: unknown) {\n actionsCore.debug(`Error caching the artifact: ${stringifyError(e)}`);\n }\n }\n\n return destFile;\n } catch (e: unknown) {\n this.recordPlausibleTimeout(e);\n throw e;\n } finally {\n actionsCore.endGroup();\n }\n }\n\n /**\n * A helper function for failing on error only if strict mode is enabled.\n * This is intended only for CI environments testing Actions themselves.\n */\n failOnError(msg: string): void {\n if (this.strictMode) {\n actionsCore.setFailed(`strict mode failure: ${msg}`);\n }\n }\n\n private async downloadFile(\n url: URL,\n destination: PathLike,\n ): Promise {\n const client = await this.getClient();\n\n return new Promise((resolve, reject) => {\n // Current stream handle\n let writeStream: WriteStream | undefined;\n\n // Sentinel condition in case we want to abort retrying due to FS issues\n let failed = false;\n\n const retry = (stream: Request): void => {\n if (writeStream) {\n writeStream.destroy();\n }\n\n writeStream = createWriteStream(destination, {\n encoding: \"binary\",\n mode: 0o755,\n });\n\n writeStream.once(\"error\", (error) => {\n // Set failed here since promise rejections don't impact control flow\n failed = true;\n reject(error);\n });\n\n writeStream.on(\"finish\", () => {\n if (!failed) {\n resolve(stream);\n }\n });\n\n stream.once(\"retry\", (_count, _error, createRetryStream) => {\n // Optional: check `failed' here in case you want to stop retrying\n retry(createRetryStream());\n });\n\n // Now that all the handlers have been set up we can pipe from the HTTP\n // stream to disk\n stream.pipe(writeStream);\n };\n\n // Begin the retry logic by giving it a fresh got.Request\n retry(client.stream(url));\n });\n }\n\n private async complete(): Promise {\n this.recordEvent(`complete_${this.executionPhase}`);\n await this.submitEvents();\n }\n\n private async getCheckInUrl(): Promise {\n const checkInUrl = await this.idsHost.getDynamicRootUrl();\n\n if (checkInUrl === undefined) {\n return undefined;\n }\n\n checkInUrl.pathname += \"check-in\";\n return checkInUrl;\n }\n\n private async getSourceUrl(): Promise {\n const p = this.sourceParameters;\n\n if (p.url) {\n this.addFact(FACT_SOURCE_URL, p.url);\n return new URL(p.url);\n }\n\n const fetchUrl = await this.idsHost.getRootUrl();\n fetchUrl.pathname += this.actionOptions.idsProjectName;\n\n if (p.tag) {\n fetchUrl.pathname += `/tag/${p.tag}`;\n } else if (p.pr) {\n fetchUrl.pathname += `/pr/${p.pr}`;\n } else if (p.branch) {\n fetchUrl.pathname += `/branch/${p.branch}`;\n } else if (p.revision) {\n fetchUrl.pathname += `/rev/${p.revision}`;\n } else {\n fetchUrl.pathname += `/stable`;\n }\n\n fetchUrl.pathname += `/${this.architectureFetchSuffix}`;\n\n this.addFact(FACT_SOURCE_URL, fetchUrl.toString());\n\n return fetchUrl;\n }\n\n private cacheKey(version: string): string {\n const cleanedVersion = version.replace(/[^a-zA-Z0-9-+.]/g, \"\");\n return `determinatesystem-${this.actionOptions.name}-${this.architectureFetchSuffix}-${cleanedVersion}`;\n }\n\n private async getCachedVersion(version: string): Promise {\n const startCwd = process.cwd();\n\n try {\n const tempDir = this.getTemporaryName();\n await mkdir(tempDir);\n process.chdir(tempDir);\n\n // extremely evil shit right here:\n process.env.GITHUB_WORKSPACE_BACKUP = process.env.GITHUB_WORKSPACE;\n delete process.env.GITHUB_WORKSPACE;\n\n if (\n await actionsCache.restoreCache(\n [this.actionOptions.name],\n this.cacheKey(version),\n [],\n undefined,\n true,\n )\n ) {\n this.recordEvent(EVENT_ARTIFACT_CACHE_HIT);\n return `${tempDir}/${this.actionOptions.name}`;\n }\n\n this.recordEvent(EVENT_ARTIFACT_CACHE_MISS);\n return undefined;\n } finally {\n process.env.GITHUB_WORKSPACE = process.env.GITHUB_WORKSPACE_BACKUP;\n delete process.env.GITHUB_WORKSPACE_BACKUP;\n process.chdir(startCwd);\n }\n }\n\n private async saveCachedVersion(\n version: string,\n toolPath: string,\n ): Promise {\n const startCwd = process.cwd();\n\n try {\n const tempDir = this.getTemporaryName();\n await mkdir(tempDir);\n process.chdir(tempDir);\n await copyFile(toolPath, `${tempDir}/${this.actionOptions.name}`);\n\n // extremely evil shit right here:\n process.env.GITHUB_WORKSPACE_BACKUP = process.env.GITHUB_WORKSPACE;\n delete process.env.GITHUB_WORKSPACE;\n\n await actionsCache.saveCache(\n [this.actionOptions.name],\n this.cacheKey(version),\n undefined,\n true,\n );\n this.recordEvent(EVENT_ARTIFACT_CACHE_PERSIST);\n } finally {\n process.env.GITHUB_WORKSPACE = process.env.GITHUB_WORKSPACE_BACKUP;\n delete process.env.GITHUB_WORKSPACE_BACKUP;\n process.chdir(startCwd);\n }\n }\n\n private collectBacktraceSetup(): void {\n if (!process.env.DETSYS_BACKTRACE_COLLECTOR) {\n actionsCore.exportVariable(\n \"DETSYS_BACKTRACE_COLLECTOR\",\n this.getCrossPhaseId(),\n );\n\n actionsCore.saveState(STATE_BACKTRACE_START_TIMESTAMP, Date.now());\n }\n }\n\n private async collectBacktraces(): Promise {\n try {\n if (process.env.DETSYS_BACKTRACE_COLLECTOR !== this.getCrossPhaseId()) {\n return;\n }\n\n const backtraces = await collectBacktraces(\n this.actionOptions.binaryNamePrefixes,\n this.actionOptions.binaryNamesDenyList,\n parseInt(actionsCore.getState(STATE_BACKTRACE_START_TIMESTAMP)),\n );\n actionsCore.debug(`Backtraces identified: ${backtraces.size}`);\n if (backtraces.size > 0) {\n this.recordEvent(EVENT_BACKTRACES, Object.fromEntries(backtraces));\n }\n } catch (innerError: unknown) {\n actionsCore.debug(\n `Error collecting backtraces: ${stringifyError(innerError)}`,\n );\n }\n }\n\n private async preflightRequireNix(): Promise {\n let nixLocation: string | undefined;\n\n const pathParts = (process.env[\"PATH\"] || \"\").split(\":\");\n for (const location of pathParts) {\n const candidateNix = path.join(location, \"nix\");\n\n try {\n await fs.access(candidateNix, fs.constants.X_OK);\n actionsCore.debug(`Found Nix at ${candidateNix}`);\n nixLocation = candidateNix;\n break;\n } catch {\n actionsCore.debug(`Nix not at ${candidateNix}`);\n }\n }\n this.addFact(FACT_NIX_LOCATION, nixLocation || \"\");\n\n if (this.actionOptions.requireNix === \"ignore\") {\n return true;\n }\n\n const currentNotFoundState = actionsCore.getState(STATE_KEY_NIX_NOT_FOUND);\n if (currentNotFoundState === STATE_NOT_FOUND) {\n // It was previously not found, so don't run subsequent actions\n return false;\n }\n\n if (nixLocation !== undefined) {\n return true;\n }\n actionsCore.saveState(STATE_KEY_NIX_NOT_FOUND, STATE_NOT_FOUND);\n\n switch (this.actionOptions.requireNix) {\n case \"fail\":\n actionsCore.setFailed(\n [\n \"This action can only be used when Nix is installed.\",\n \"Add `- uses: DeterminateSystems/determinate-nix-action@v3` earlier in your workflow.\",\n ].join(\" \"),\n );\n break;\n case \"warn\":\n actionsCore.warning(\n [\n \"This action is in no-op mode because Nix is not installed.\",\n \"Add `- uses: DeterminateSystems/determinate-nix-action@v3` earlier in your workflow.\",\n ].join(\" \"),\n );\n break;\n }\n\n return false;\n }\n\n private async preflightNixStoreInfo(): Promise {\n let output = \"\";\n\n const options: actionsExec.ExecOptions = {};\n options.silent = true;\n options.listeners = {\n stdout: (data) => {\n output += data.toString();\n },\n };\n\n try {\n output = \"\";\n await actionsExec.exec(\"nix\", [\"store\", \"info\", \"--json\"], options);\n this.addFact(FACT_NIX_STORE_CHECK_METHOD, \"info\");\n } catch {\n try {\n // reset output\n output = \"\";\n await actionsExec.exec(\"nix\", [\"store\", \"ping\", \"--json\"], options);\n this.addFact(FACT_NIX_STORE_CHECK_METHOD, \"ping\");\n } catch {\n this.addFact(FACT_NIX_STORE_CHECK_METHOD, \"none\");\n return;\n }\n }\n\n try {\n const parsed = JSON.parse(output);\n if (parsed.trusted === 1) {\n this.nixStoreTrust = \"trusted\";\n } else if (parsed.trusted === 0) {\n this.nixStoreTrust = \"untrusted\";\n } else if (parsed.trusted !== undefined) {\n this.addFact(\n FACT_NIX_STORE_CHECK_ERROR,\n `Mysterious trusted value: ${JSON.stringify(parsed.trusted)}`,\n );\n }\n\n this.addFact(FACT_NIX_STORE_VERSION, JSON.stringify(parsed.version));\n } catch (e: unknown) {\n this.addFact(FACT_NIX_STORE_CHECK_ERROR, stringifyError(e));\n }\n }\n\n private async preflightNixVersion(): Promise {\n let output = \"unknown\";\n\n try {\n ({ stdout: output } = await actionsExec.getExecOutput(\n \"nix\",\n [\"--version\"],\n {\n silent: true,\n },\n ));\n output = output.trim() || \"unknown\";\n } catch {\n // That's fine.\n }\n\n this.addFact(FACT_NIX_VERSION, output);\n }\n\n private async submitEvents(): Promise {\n const diagnosticsUrl = await this.idsHost.getDiagnosticsUrl();\n if (diagnosticsUrl === undefined) {\n actionsCore.debug(\n \"Diagnostics are disabled. Not sending the following events:\",\n );\n actionsCore.debug(JSON.stringify(this.events, undefined, 2));\n return;\n }\n\n const batch = {\n sent_at: new Date(),\n batch: this.events,\n };\n\n try {\n await (\n await this.getClient()\n ).post(diagnosticsUrl, {\n json: batch,\n timeout: {\n request: DIAGNOSTIC_ENDPOINT_TIMEOUT_MS,\n },\n });\n } catch (err: unknown) {\n this.recordPlausibleTimeout(err);\n\n actionsCore.debug(\n `Error submitting diagnostics event to ${diagnosticsUrl}: ${stringifyError(err)}`,\n );\n }\n this.events = [];\n }\n}\n\nfunction stringifyError(error: unknown): string {\n return error instanceof Error || typeof error == \"string\"\n ? error.toString()\n : JSON.stringify(error);\n}\n\nfunction makeOptionsConfident(\n actionOptions: ActionOptions,\n): ConfidentActionOptions {\n const idsProjectName = actionOptions.idsProjectName ?? actionOptions.name;\n\n const finalOpts: ConfidentActionOptions = {\n name: actionOptions.name,\n idsProjectName,\n eventPrefix: actionOptions.eventPrefix || \"action:\",\n fetchStyle: actionOptions.fetchStyle,\n legacySourcePrefix: actionOptions.legacySourcePrefix,\n requireNix: actionOptions.requireNix,\n binaryNamePrefixes: actionOptions.binaryNamePrefixes ?? [\n \"nix\",\n \"determinate-nixd\",\n actionOptions.name,\n ],\n binaryNamesDenyList:\n actionOptions.binaryNamePrefixes ?? PROGRAM_NAME_CRASH_DENY_LIST,\n };\n\n actionsCore.debug(\"idslib options:\");\n actionsCore.debug(JSON.stringify(finalOpts, undefined, 2));\n\n return finalOpts;\n}\n\n// Public exports from other files\nexport type {\n CheckIn,\n Feature,\n Incident,\n Maintenance,\n Page,\n StatusSummary,\n} from \"./check-in.js\";\nexport type { AnonymizedCorrelationHashes } from \"./correlation.js\";\nexport { stringifyError } from \"./errors.js\";\nexport { IdsHost } from \"./ids-host.js\";\nexport type { SourceDef } from \"./sourcedef.js\";\nexport * as inputs from \"./inputs.js\";\nexport * as platform from \"./platform.js\";\n"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","names":["fs","linuxReleaseInfoOptionsDefaults: LinuxReleaseInfoOptions","searchOsReleaseFileList: string[]","os","lines: string[]","exec","data: object","ret: T","backtraces: Map","exec","sussyArray: unknown","innerError: unknown","coredumps: SystemdCoreDumpInfo[]","ident: AnonymizedCorrelationHashes","currentUrl: URL","newUrl: URL","err: unknown","url: URL | undefined","defaultFallback: Promise","records: SrvRecord[]","reason: unknown","byPriorityWeight: Map","prioritizedRecords: SrvRecord[]","keys: number[]","scratchRecords: SrvRecord[]","result: SrvRecord[]","weights: number[]","os","actionsExec","correlation.identify","platform.getArchOs","platform.getNixPlatform","stringifyError","fsConstants","e: unknown","exceptionContext: Map","innerError: unknown","impactSymbol: Map","summaries: string[]","reportContext: {\n [index: string]: string | number | undefined;\n }","writeStream: WriteStream | undefined","nixLocation: string | undefined","options: actionsExec.ExecOptions","err: unknown","finalOpts: ConfidentActionOptions"],"sources":["../src/linux-release-info.ts","../src/actions-core-platform.ts","../src/errors.ts","../src/backtrace.ts","../src/correlation.ts","../src/ids-host.ts","../src/inputs.ts","../src/platform.ts","../src/sourcedef.ts","../src/index.ts"],"sourcesContent":["/*!\n * linux-release-info\n * Get Linux release info (distribution name, version, arch, release, etc.)\n * from '/etc/os-release' or '/usr/lib/os-release' files and from native os\n * module. On Windows and Darwin platforms it only returns common node os module\n * info (platform, hostname, release, and arch)\n *\n * Licensed under MIT\n * Copyright (c) 2018-2020 [Samuel Carreira]\n */\n// NOTE: we depend on this directly to get around some un-fun issues with mixing CommonJS\n// and ESM in the bundle. We've modified the original logic to improve things like typing\n// and fixing ESLint issues. Originally drawn from:\n// https://github.com/samuelcarreira/linux-release-info/blob/84a91aa5442b47900da03020c590507545d3dc74/src/index.ts\nimport * as fs from \"node:fs\";\nimport * as os from \"node:os\";\nimport { promisify } from \"node:util\";\n\nconst readFileAsync = promisify(fs.readFile);\n\nexport interface LinuxReleaseInfoOptions {\n /**\n * read mode, possible values: 'async' and 'sync'\n *\n * @default 'async'\n */\n mode?: \"async\" | \"sync\";\n /**\n * custom complete file path with os info default null/none\n * if not provided the system will search on the '/etc/os-release'\n * and '/usr/lib/os-release' files\n *\n * @default null\n */\n customFile?: string | null | undefined;\n /**\n * if true, show console debug messages\n *\n * @default false\n */\n debug?: boolean;\n}\n\nconst linuxReleaseInfoOptionsDefaults: LinuxReleaseInfoOptions = {\n mode: \"async\",\n customFile: null,\n debug: false,\n};\n\n/**\n * Get OS release info from 'os-release' file and from native os module\n * on Windows or Darwin it only returns common os module info\n * (uses native fs module)\n * @returns {object} info from the current os\n */\nexport function releaseInfo(infoOptions: LinuxReleaseInfoOptions): object {\n const options = { ...linuxReleaseInfoOptionsDefaults, ...infoOptions };\n\n const searchOsReleaseFileList: string[] = osReleaseFileList(\n options.customFile,\n );\n\n if (os.type() !== \"Linux\") {\n if (options.mode === \"sync\") {\n return getOsInfo();\n } else {\n return Promise.resolve(getOsInfo());\n }\n }\n\n if (options.mode === \"sync\") {\n return readSyncOsreleaseFile(searchOsReleaseFileList, options);\n } else {\n return Promise.resolve(\n readAsyncOsReleaseFile(searchOsReleaseFileList, options),\n );\n }\n}\n\n/**\n * Format file data: convert data to object keys/values\n *\n * @param {object} sourceData Source object to be appended\n * @param {string} srcParseData Input file data to be parsed\n * @returns {object} Formated object\n */\nfunction formatFileData(sourceData: OsInfo, srcParseData: string): OsInfo {\n const lines: string[] = srcParseData.split(\"\\n\");\n\n for (const line of lines) {\n const lineData = line.split(\"=\");\n\n if (lineData.length === 2) {\n lineData[1] = lineData[1].replace(/[\"'\\r]/gi, \"\"); // remove quotes and return character\n\n Object.defineProperty(sourceData, lineData[0].toLowerCase(), {\n value: lineData[1],\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n }\n\n return sourceData;\n}\n\n/**\n * Export a list of os-release files\n *\n * @param {string} customFile optional custom complete filepath\n * @returns {array} list of os-release files\n */\nfunction osReleaseFileList(customFile: string | null | undefined): string[] {\n const DEFAULT_OS_RELEASE_FILES = [\"/etc/os-release\", \"/usr/lib/os-release\"];\n\n if (!customFile) {\n return DEFAULT_OS_RELEASE_FILES;\n } else {\n return Array(customFile);\n }\n}\n\n/**\n * Operating system info.\n */\ntype OsInfo = {\n type: string;\n platform: string;\n hostname: string;\n arch: string;\n release: string;\n};\n\n/**\n * Get OS Basic Info\n * (uses node 'os' native module)\n *\n * @returns {OsInfo} os basic info\n */\nfunction getOsInfo(): OsInfo {\n return {\n type: os.type(),\n platform: os.platform(),\n hostname: os.hostname(),\n arch: os.arch(),\n release: os.release(),\n };\n}\n\n/* Helper functions */\n\nasync function readAsyncOsReleaseFile(\n fileList: string[],\n options: LinuxReleaseInfoOptions,\n): Promise {\n let fileData = null;\n\n for (const osReleaseFile of fileList) {\n try {\n if (options.debug) {\n /* eslint-disable no-console */\n console.log(`Trying to read '${osReleaseFile}'...`);\n }\n\n fileData = await readFileAsync(osReleaseFile, \"binary\");\n\n if (options.debug) {\n console.log(`Read data:\\n${fileData}`);\n }\n\n break;\n } catch (error) {\n if (options.debug) {\n console.error(error);\n }\n }\n }\n\n if (fileData === null) {\n throw new Error(\"Cannot read os-release file!\");\n //return getOsInfo();\n }\n\n return formatFileData(getOsInfo(), fileData);\n}\n\nfunction readSyncOsreleaseFile(\n releaseFileList: string[],\n options: LinuxReleaseInfoOptions,\n): OsInfo {\n let fileData = null;\n\n for (const osReleaseFile of releaseFileList) {\n try {\n if (options.debug) {\n console.log(`Trying to read '${osReleaseFile}'...`);\n }\n\n fileData = fs.readFileSync(osReleaseFile, \"binary\");\n\n if (options.debug) {\n console.log(`Read data:\\n${fileData}`);\n }\n\n break;\n } catch (error) {\n if (options.debug) {\n console.error(error);\n }\n }\n }\n\n if (fileData === null) {\n throw new Error(\"Cannot read os-release file!\");\n //return getOsInfo();\n }\n\n return formatFileData(getOsInfo(), fileData);\n}\n","// MIT, mostly lifted from https://github.com/actions/toolkit/blob/5a736647a123ecf8582376bdaee833fbae5b3847/packages/core/src/platform.ts\n// since it isn't in @actions/core 1.10.1 which is their current release as 2024-04-19.\n// Changes: Replaced the lsb_release call in Linux with `linux-release-info` to parse the os-release file directly.\nimport { releaseInfo } from \"./linux-release-info.js\";\nimport * as actionsCore from \"@actions/core\";\nimport * as exec from \"@actions/exec\";\nimport os from \"os\";\n\n/**\n * The name and version of the Action runner's system.\n */\ntype SystemInfo = {\n name: string;\n version: string;\n};\n\n/**\n * Get the name and version of the current Windows system.\n */\nconst getWindowsInfo = async (): Promise => {\n const { stdout: version } = await exec.getExecOutput(\n 'powershell -command \"(Get-CimInstance -ClassName Win32_OperatingSystem).Version\"',\n undefined,\n {\n silent: true,\n },\n );\n\n const { stdout: name } = await exec.getExecOutput(\n 'powershell -command \"(Get-CimInstance -ClassName Win32_OperatingSystem).Caption\"',\n undefined,\n {\n silent: true,\n },\n );\n\n return {\n name: name.trim(),\n version: version.trim(),\n };\n};\n\n/**\n * Get the name and version of the current macOS system.\n */\nconst getMacOsInfo = async (): Promise => {\n const { stdout } = await exec.getExecOutput(\"sw_vers\", undefined, {\n silent: true,\n });\n\n const version = stdout.match(/ProductVersion:\\s*(.+)/)?.[1] ?? \"\";\n const name = stdout.match(/ProductName:\\s*(.+)/)?.[1] ?? \"\";\n\n return {\n name,\n version,\n };\n};\n\n/**\n * Get the name and version of the current Linux system.\n */\nconst getLinuxInfo = async (): Promise => {\n let data: object = {};\n\n try {\n data = releaseInfo({ mode: \"sync\" });\n actionsCore.debug(`Identified release info: ${JSON.stringify(data)}`);\n } catch (e) {\n actionsCore.debug(`Error collecting release info: ${e}`);\n }\n\n return {\n name: getPropertyViaWithDefault(\n data,\n [\"id\", \"name\", \"pretty_name\", \"id_like\"],\n \"unknown\",\n ),\n version: getPropertyViaWithDefault(\n data,\n [\"version_id\", \"version\", \"version_codename\"],\n \"unknown\",\n ),\n };\n};\n\nfunction getPropertyViaWithDefault(\n data: object,\n names: Property[],\n defaultValue: T,\n): T {\n for (const name of names) {\n const ret: T = getPropertyWithDefault(data, name, defaultValue);\n\n if (ret !== defaultValue) {\n return ret;\n }\n }\n\n return defaultValue;\n}\n\nfunction getPropertyWithDefault(\n data: object,\n name: Property,\n defaultValue: T,\n): T {\n if (!data.hasOwnProperty(name)) {\n return defaultValue;\n }\n\n const value = (data as { [K in Property]: T })[name];\n\n // NB. this check won't work for object instances\n if (typeof value !== typeof defaultValue) {\n return defaultValue;\n }\n\n return value;\n}\n\n/**\n * The Action runner's platform.\n */\nexport const platform = os.platform();\n\n/**\n * The Action runner's architecture.\n */\nexport const arch = os.arch();\n\n/**\n * Whether the Action runner is a Windows system.\n */\nexport const isWindows = platform === \"win32\";\n\n/**\n * Whether the Action runner is a macOS system.\n */\nexport const isMacOS = platform === \"darwin\";\n\n/**\n * Whether the Action runner is a Linux system.\n */\nexport const isLinux = platform === \"linux\";\n\n/**\n * System-level information about the current host (platform, architecture, etc.).\n */\ntype SystemDetails = {\n name: string;\n platform: string;\n arch: string;\n version: string;\n isWindows: boolean;\n isMacOS: boolean;\n isLinux: boolean;\n};\n\n/**\n * Get system-level information about the current host (platform, architecture, etc.).\n */\nexport async function getDetails(): Promise {\n return {\n ...(await (isWindows\n ? getWindowsInfo()\n : isMacOS\n ? getMacOsInfo()\n : getLinuxInfo())),\n platform,\n arch,\n isWindows,\n isMacOS,\n isLinux,\n };\n}\n","/**\n * Coerce a value of type `unknown` into a string.\n */\nexport function stringifyError(e: unknown): string {\n if (e instanceof Error) {\n return e.message;\n } else if (typeof e === \"string\") {\n return e;\n } else {\n return JSON.stringify(e);\n }\n}\n","/**\n * @packageDocumentation\n * Collects backtraces for executables for diagnostics\n */\nimport { isLinux, isMacOS } from \"./actions-core-platform.js\";\nimport { stringifyError } from \"./errors.js\";\nimport * as actionsCore from \"@actions/core\";\nimport * as exec from \"@actions/exec\";\nimport { readFile, readdir, stat } from \"node:fs/promises\";\nimport { promisify } from \"node:util\";\nimport { gzip } from \"node:zlib\";\n\n// Give a few seconds buffer, capturing traces that happened a few seconds earlier.\nconst START_SLOP_SECONDS = 5;\n\nexport async function collectBacktraces(\n prefixes: string[],\n programNameDenyList: string[],\n startTimestampMs: number,\n): Promise> {\n if (isMacOS) {\n return await collectBacktracesMacOS(\n prefixes,\n programNameDenyList,\n startTimestampMs,\n );\n }\n if (isLinux) {\n return await collectBacktracesSystemd(\n prefixes,\n programNameDenyList,\n startTimestampMs,\n );\n }\n\n return new Map();\n}\n\nexport async function collectBacktracesMacOS(\n prefixes: string[],\n programNameDenyList: string[],\n startTimestampMs: number,\n): Promise> {\n const backtraces: Map = new Map();\n\n try {\n const { stdout: logJson } = await exec.getExecOutput(\n \"log\",\n [\n \"show\",\n \"--style\",\n \"json\",\n \"--last\",\n // Note we collect the last 1m only, because it should only take a few seconds to write the crash log.\n // Therefore, any crashes before this 1m should be long done by now.\n \"1m\",\n \"--no-info\",\n \"--predicate\",\n \"sender = 'ReportCrash'\",\n ],\n {\n silent: true,\n },\n );\n\n const sussyArray: unknown = JSON.parse(logJson);\n if (!Array.isArray(sussyArray)) {\n throw new Error(`Log json isn't an array: ${logJson}`);\n }\n\n if (sussyArray.length > 0) {\n actionsCore.info(`Collecting crash data...`);\n const delay = async (ms: number): Promise =>\n new Promise((resolve) => setTimeout(resolve, ms));\n await delay(5000);\n }\n } catch {\n actionsCore.debug(\n \"Failed to check logs for in-progress crash dumps; now proceeding with the assumption that all crash dumps completed.\",\n );\n }\n\n const dirs = [\n [\"system\", \"/Library/Logs/DiagnosticReports/\"],\n [\"user\", `${process.env[\"HOME\"]}/Library/Logs/DiagnosticReports/`],\n ];\n\n for (const [source, dir] of dirs) {\n const fileNames = (await readdir(dir))\n .filter((fileName) => {\n return prefixes.some((prefix) => fileName.startsWith(prefix));\n })\n .filter((fileName) => {\n return !programNameDenyList.some((programName) =>\n fileName.startsWith(programName),\n );\n })\n .filter((fileName) => {\n // macOS creates .diag files periodically, which are called \"microstackshots\".\n // We don't necessarily want those, and they're definitely not crashes.\n // See: https://patents.google.com/patent/US20140237219A1/en\n return !fileName.endsWith(\".diag\");\n });\n\n const doGzip = promisify(gzip);\n for (const fileName of fileNames) {\n try {\n if ((await stat(`${dir}/${fileName}`)).ctimeMs >= startTimestampMs) {\n const logText = await readFile(`${dir}/${fileName}`);\n const buf = await doGzip(logText);\n backtraces.set(\n `backtrace_value_${source}_${fileName}`,\n buf.toString(\"base64\"),\n );\n }\n } catch (innerError: unknown) {\n backtraces.set(\n `backtrace_failure_${source}_${fileName}`,\n stringifyError(innerError),\n );\n }\n }\n }\n\n return backtraces;\n}\n\ntype SystemdCoreDumpInfo = {\n exe: string;\n pid: number;\n};\n\nexport async function collectBacktracesSystemd(\n prefixes: string[],\n programNameDenyList: string[],\n startTimestampMs: number,\n): Promise> {\n const sinceSeconds =\n Math.ceil((Date.now() - startTimestampMs) / 1000) + START_SLOP_SECONDS;\n const backtraces: Map = new Map();\n\n const coredumps: SystemdCoreDumpInfo[] = [];\n\n try {\n const { stdout: coredumpjson } = await exec.getExecOutput(\n \"coredumpctl\",\n [\"--json=pretty\", \"list\", \"--since\", `${sinceSeconds} seconds ago`],\n {\n silent: true,\n },\n );\n\n const sussyArray: unknown = JSON.parse(coredumpjson);\n if (!Array.isArray(sussyArray)) {\n throw new Error(`Coredump isn't an array: ${coredumpjson}`);\n }\n\n for (const sussyObject of sussyArray) {\n const keys = Object.keys(sussyObject);\n\n if (keys.includes(\"exe\") && keys.includes(\"pid\")) {\n if (\n typeof sussyObject.exe == \"string\" &&\n typeof sussyObject.pid == \"number\"\n ) {\n const execParts = sussyObject.exe.split(\"/\");\n const binaryName = execParts[execParts.length - 1];\n\n if (\n prefixes.some((prefix) => binaryName.startsWith(prefix)) &&\n !programNameDenyList.includes(binaryName)\n ) {\n coredumps.push({\n exe: sussyObject.exe,\n pid: sussyObject.pid,\n });\n }\n } else {\n actionsCore.debug(\n `Mysterious coredump entry missing exe string and/or pid number: ${JSON.stringify(sussyObject)}`,\n );\n }\n } else {\n actionsCore.debug(\n `Mysterious coredump entry missing exe value and/or pid value: ${JSON.stringify(sussyObject)}`,\n );\n }\n }\n } catch (innerError: unknown) {\n actionsCore.debug(\n `Cannot collect backtraces: ${stringifyError(innerError)}`,\n );\n\n return backtraces;\n }\n\n const doGzip = promisify(gzip);\n for (const coredump of coredumps) {\n try {\n const { stdout: logText } = await exec.getExecOutput(\n \"coredumpctl\",\n [\"info\", `${coredump.pid}`],\n {\n silent: true,\n },\n );\n\n const buf = await doGzip(logText);\n backtraces.set(`backtrace_value_${coredump.pid}`, buf.toString(\"base64\"));\n } catch (innerError: unknown) {\n backtraces.set(\n `backtrace_failure_${coredump.pid}`,\n stringifyError(innerError),\n );\n }\n }\n\n return backtraces;\n}\n","import * as actionsCore from \"@actions/core\";\nimport { createHash, randomUUID } from \"node:crypto\";\n\nconst OPTIONAL_VARIABLES = [\"INVOCATION_ID\"];\n\n/* eslint-disable camelcase */\n/**\n * JSON sent to server.\n */\nexport type AnonymizedCorrelationHashes = {\n $anon_distinct_id: string;\n $groups: Record;\n $session_id?: string;\n correlation_source: string;\n github_repository_hash?: string;\n github_workflow_hash?: string;\n github_workflow_job_hash?: string;\n github_workflow_run_differentiator_hash?: string;\n github_workflow_run_hash?: string;\n is_ci: boolean;\n};\n\nexport function identify(): AnonymizedCorrelationHashes {\n const repository = hashEnvironmentVariables(\"GHR\", [\n \"GITHUB_SERVER_URL\",\n \"GITHUB_REPOSITORY_OWNER\",\n \"GITHUB_REPOSITORY_OWNER_ID\",\n \"GITHUB_REPOSITORY\",\n \"GITHUB_REPOSITORY_ID\",\n ]);\n\n const run_differentiator = hashEnvironmentVariables(\"GHWJA\", [\n \"GITHUB_SERVER_URL\",\n \"GITHUB_REPOSITORY_OWNER\",\n \"GITHUB_REPOSITORY_OWNER_ID\",\n \"GITHUB_REPOSITORY\",\n \"GITHUB_REPOSITORY_ID\",\n \"GITHUB_WORKFLOW\",\n \"GITHUB_JOB\",\n \"GITHUB_RUN_ID\",\n \"GITHUB_RUN_NUMBER\",\n \"GITHUB_RUN_ATTEMPT\",\n \"INVOCATION_ID\",\n ]);\n\n const ident: AnonymizedCorrelationHashes = {\n $anon_distinct_id: process.env[\"RUNNER_TRACKING_ID\"] || randomUUID(),\n\n correlation_source: \"github-actions\",\n\n github_repository_hash: repository,\n github_workflow_hash: hashEnvironmentVariables(\"GHW\", [\n \"GITHUB_SERVER_URL\",\n \"GITHUB_REPOSITORY_OWNER\",\n \"GITHUB_REPOSITORY_OWNER_ID\",\n \"GITHUB_REPOSITORY\",\n \"GITHUB_REPOSITORY_ID\",\n \"GITHUB_WORKFLOW\",\n ]),\n github_workflow_job_hash: hashEnvironmentVariables(\"GHWJ\", [\n \"GITHUB_SERVER_URL\",\n \"GITHUB_REPOSITORY_OWNER\",\n \"GITHUB_REPOSITORY_OWNER_ID\",\n \"GITHUB_REPOSITORY\",\n \"GITHUB_REPOSITORY_ID\",\n \"GITHUB_WORKFLOW\",\n \"GITHUB_JOB\",\n ]),\n github_workflow_run_hash: hashEnvironmentVariables(\"GHWJR\", [\n \"GITHUB_SERVER_URL\",\n \"GITHUB_REPOSITORY_OWNER\",\n \"GITHUB_REPOSITORY_OWNER_ID\",\n \"GITHUB_REPOSITORY\",\n \"GITHUB_REPOSITORY_ID\",\n \"GITHUB_WORKFLOW\",\n \"GITHUB_JOB\",\n \"GITHUB_RUN_ID\",\n ]),\n github_workflow_run_differentiator_hash: run_differentiator,\n $session_id: run_differentiator,\n $groups: {\n github_repository: repository,\n github_organization: hashEnvironmentVariables(\"GHO\", [\n \"GITHUB_SERVER_URL\",\n \"GITHUB_REPOSITORY_OWNER\",\n \"GITHUB_REPOSITORY_OWNER_ID\",\n ]),\n },\n is_ci: true,\n };\n\n actionsCore.debug(\"Correlation data:\");\n actionsCore.debug(JSON.stringify(ident, null, 2));\n\n return ident;\n}\n\nfunction hashEnvironmentVariables(\n prefix: string,\n variables: string[],\n): undefined | string {\n const hash = createHash(\"sha256\");\n\n for (const varName of variables) {\n let value = process.env[varName];\n\n if (value === undefined) {\n if (OPTIONAL_VARIABLES.includes(varName)) {\n actionsCore.debug(\n `Optional environment variable not set: ${varName} -- substituting with the variable name`,\n );\n value = varName;\n } else {\n actionsCore.debug(\n `Environment variable not set: ${varName} -- can't generate the requested identity`,\n );\n return undefined;\n }\n }\n\n hash.update(value);\n hash.update(\"\\0\");\n }\n\n return `${prefix}-${hash.digest(\"hex\")}`;\n}\n","/**\n * @packageDocumentation\n * Identifies and discovers backend servers for install.determinate.systems\n */\nimport { stringifyError } from \"./errors.js\";\nimport * as actionsCore from \"@actions/core\";\nimport { Got, got } from \"got\";\nimport type { SrvRecord } from \"node:dns\";\nimport { resolveSrv } from \"node:dns/promises\";\n\nconst DEFAULT_LOOKUP = \"_detsys_ids._tcp.install.determinate.systems.\";\nconst ALLOWED_SUFFIXES = [\n \".install.determinate.systems\",\n \".install.detsys.dev\",\n];\n\nconst DEFAULT_IDS_HOST = \"https://install.determinate.systems\";\nconst LOOKUP = process.env[\"IDS_LOOKUP\"] ?? DEFAULT_LOOKUP;\n\nconst DEFAULT_TIMEOUT = 10_000; // 10 seconds in ms\n\n/**\n * Host information for install.determinate.systems.\n */\nexport class IdsHost {\n private idsProjectName: string;\n private diagnosticsSuffix?: string;\n private runtimeDiagnosticsUrl?: string;\n private prioritizedURLs?: URL[];\n private client?: Got;\n\n constructor(\n idsProjectName: string,\n diagnosticsSuffix: string | undefined,\n runtimeDiagnosticsUrl: string | undefined,\n ) {\n this.idsProjectName = idsProjectName;\n this.diagnosticsSuffix = diagnosticsSuffix;\n this.runtimeDiagnosticsUrl = runtimeDiagnosticsUrl;\n this.client = undefined;\n }\n\n async getGot(\n recordFailoverCallback?: (\n incitingError: unknown,\n prevUrl: URL,\n nextUrl: URL,\n ) => void,\n ): Promise {\n if (this.client === undefined) {\n this.client = got.extend({\n timeout: {\n request: DEFAULT_TIMEOUT,\n },\n\n retry: {\n limit: Math.max((await this.getUrlsByPreference()).length, 3),\n methods: [\"GET\", \"HEAD\"],\n },\n\n hooks: {\n beforeRetry: [\n async (error, retryCount) => {\n const prevUrl = await this.getRootUrl();\n this.markCurrentHostBroken();\n const nextUrl = await this.getRootUrl();\n\n if (recordFailoverCallback !== undefined) {\n recordFailoverCallback(error, prevUrl, nextUrl);\n }\n\n actionsCore.info(\n `Retrying after error ${error.code}, retry #: ${retryCount}`,\n );\n },\n ],\n\n beforeRequest: [\n async (options) => {\n // The getter always returns a URL, even though the setter accepts a string\n const currentUrl: URL = options.url as URL;\n\n if (this.isUrlSubjectToDynamicUrls(currentUrl)) {\n const newUrl: URL = new URL(currentUrl);\n\n const url: URL = await this.getRootUrl();\n newUrl.host = url.host;\n\n options.url = newUrl;\n actionsCore.debug(`Transmuted ${currentUrl} into ${newUrl}`);\n } else {\n actionsCore.debug(`No transmutations on ${currentUrl}`);\n }\n },\n ],\n },\n });\n }\n\n return this.client;\n }\n\n markCurrentHostBroken(): void {\n this.prioritizedURLs?.shift();\n }\n\n setPrioritizedUrls(urls: URL[]): void {\n this.prioritizedURLs = urls;\n }\n\n isUrlSubjectToDynamicUrls(url: URL): boolean {\n if (url.origin === DEFAULT_IDS_HOST) {\n return true;\n }\n\n for (const suffix of ALLOWED_SUFFIXES) {\n if (url.host.endsWith(suffix)) {\n return true;\n }\n }\n\n return false;\n }\n\n async getDynamicRootUrl(): Promise {\n const idsHost = process.env[\"IDS_HOST\"];\n if (idsHost !== undefined) {\n try {\n return new URL(idsHost);\n } catch (err: unknown) {\n actionsCore.error(\n `IDS_HOST environment variable is not a valid URL. Ignoring. ${stringifyError(err)}`,\n );\n }\n }\n\n let url: URL | undefined = undefined;\n try {\n const urls = await this.getUrlsByPreference();\n url = urls[0];\n } catch (err: unknown) {\n actionsCore.error(\n `Error collecting IDS URLs by preference: ${stringifyError(err)}`,\n );\n }\n\n if (url === undefined) {\n return undefined;\n } else {\n // This is a load-bearing `new URL(url)` so that callers can't mutate\n // getRootUrl's return value.\n return new URL(url);\n }\n }\n\n async getRootUrl(): Promise {\n const url = await this.getDynamicRootUrl();\n\n if (url === undefined) {\n return new URL(DEFAULT_IDS_HOST);\n }\n\n return url;\n }\n\n async getDiagnosticsUrl(): Promise {\n if (this.runtimeDiagnosticsUrl === \"\") {\n // User specifically set the diagnostics URL to an empty string\n // so disable diagnostics\n return undefined;\n }\n\n if (\n this.runtimeDiagnosticsUrl !== \"-\" &&\n this.runtimeDiagnosticsUrl !== undefined\n ) {\n try {\n // Caller specified a specific diagnostics URL\n return new URL(this.runtimeDiagnosticsUrl);\n } catch (err: unknown) {\n actionsCore.info(\n `User-provided diagnostic endpoint ignored: not a valid URL: ${stringifyError(err)}`,\n );\n }\n }\n\n try {\n const diagnosticUrl = await this.getRootUrl();\n diagnosticUrl.pathname += \"events/batch\";\n return diagnosticUrl;\n } catch (err: unknown) {\n actionsCore.info(\n `Generated diagnostic endpoint ignored, and diagnostics are disabled: not a valid URL: ${stringifyError(err)}`,\n );\n return undefined;\n }\n }\n\n private async getUrlsByPreference(): Promise {\n if (this.prioritizedURLs === undefined) {\n this.prioritizedURLs = orderRecordsByPriorityWeight(\n await discoverServiceRecords(),\n ).flatMap((record) => recordToUrl(record) || []);\n }\n\n return this.prioritizedURLs;\n }\n}\n\nexport function recordToUrl(record: SrvRecord): URL | undefined {\n const urlStr = `https://${record.name}:${record.port}`;\n try {\n return new URL(urlStr);\n } catch (err: unknown) {\n actionsCore.debug(\n `Record ${JSON.stringify(record)} produced an invalid URL: ${urlStr} (${err})`,\n );\n return undefined;\n }\n}\n\nasync function discoverServiceRecords(): Promise {\n return await discoverServicesStub(resolveSrv(LOOKUP), 1_000);\n}\n\nexport async function discoverServicesStub(\n lookup: Promise,\n timeout: number,\n): Promise {\n const defaultFallback: Promise = new Promise(\n (resolve, _reject) => {\n setTimeout(resolve, timeout, []);\n },\n );\n\n let records: SrvRecord[];\n\n try {\n records = await Promise.race([lookup, defaultFallback]);\n } catch (reason: unknown) {\n actionsCore.debug(`Error resolving SRV records: ${stringifyError(reason)}`);\n records = [];\n }\n\n const acceptableRecords = records.filter((record: SrvRecord): boolean => {\n for (const suffix of ALLOWED_SUFFIXES) {\n if (record.name.endsWith(suffix)) {\n return true;\n }\n }\n\n actionsCore.debug(\n `Unacceptable domain due to an invalid suffix: ${record.name}`,\n );\n\n return false;\n });\n\n if (acceptableRecords.length === 0) {\n actionsCore.debug(`No records found for ${LOOKUP}`);\n } else {\n actionsCore.debug(\n `Resolved ${LOOKUP} to ${JSON.stringify(acceptableRecords)}`,\n );\n }\n\n return acceptableRecords;\n}\n\nexport function orderRecordsByPriorityWeight(\n records: SrvRecord[],\n): SrvRecord[] {\n const byPriorityWeight: Map = new Map();\n for (const record of records) {\n const existing = byPriorityWeight.get(record.priority);\n if (existing) {\n existing.push(record);\n } else {\n byPriorityWeight.set(record.priority, [record]);\n }\n }\n\n const prioritizedRecords: SrvRecord[] = [];\n const keys: number[] = Array.from(byPriorityWeight.keys()).sort(\n (a, b) => a - b,\n );\n\n for (const priority of keys) {\n const recordsByPrio = byPriorityWeight.get(priority);\n if (recordsByPrio === undefined) {\n continue;\n }\n\n prioritizedRecords.push(...weightedRandom(recordsByPrio));\n }\n\n return prioritizedRecords;\n}\n\nexport function weightedRandom(records: SrvRecord[]): SrvRecord[] {\n // Duplicate records so we don't accidentally change our caller's data\n const scratchRecords: SrvRecord[] = records.slice();\n const result: SrvRecord[] = [];\n\n while (scratchRecords.length > 0) {\n const weights: number[] = [];\n\n {\n for (let i = 0; i < scratchRecords.length; i++) {\n weights.push(\n scratchRecords[i].weight + (i > 0 ? scratchRecords[i - 1].weight : 0),\n );\n }\n }\n\n const point = Math.random() * weights[weights.length - 1];\n\n for (\n let selectedIndex = 0;\n selectedIndex < weights.length;\n selectedIndex++\n ) {\n if (weights[selectedIndex] > point) {\n // Remove our selected record and add it to the result\n result.push(scratchRecords.splice(selectedIndex, 1)[0]);\n break;\n }\n }\n }\n\n return result;\n}\n","/**\n * @packageDocumentation\n * Helpers for getting values from an Action's configuration.\n */\nimport * as actionsCore from \"@actions/core\";\n\n/**\n * Get a Boolean input from the Action's configuration by name.\n */\nconst getBool = (name: string): boolean => {\n return actionsCore.getBooleanInput(name);\n};\n\n/**\n * Get a Boolean input from the Action's configuration by name, or undefined if it is unset.\n */\nconst getBoolOrUndefined = (name: string): boolean | undefined => {\n if (getStringOrUndefined(name) === undefined) {\n return undefined;\n }\n\n return actionsCore.getBooleanInput(name);\n};\n\n/**\n * The character used to separate values in the input string.\n */\nexport type Separator = \"space\" | \"comma\";\n\n/**\n * Convert a comma-separated string input into an array of strings. If `comma` is selected,\n * all whitespace is removed from the string before converting to an array.\n */\nconst getArrayOfStrings = (name: string, separator: Separator): string[] => {\n const original = getString(name);\n return handleString(original, separator);\n};\n\n/**\n * Convert a string input into an array of strings or `null` if no value is set.\n */\nconst getArrayOfStringsOrNull = (\n name: string,\n separator: Separator,\n): string[] | null => {\n const original = getStringOrNull(name);\n if (original === null) {\n return null;\n } else {\n return handleString(original, separator);\n }\n};\n\n// Split out this function for use in testing\nexport const handleString = (input: string, separator: Separator): string[] => {\n const sepChar = separator === \"comma\" ? \",\" : /\\s+/;\n const trimmed = input.trim(); // Remove whitespace at the beginning and end\n if (trimmed === \"\") {\n return [];\n }\n\n return trimmed.split(sepChar).map((s: string) => s.trim());\n};\n\n/**\n * Get a multi-line string input from the Action's configuration by name or return `null` if not set.\n */\nconst getMultilineStringOrNull = (name: string): string[] | null => {\n const value = actionsCore.getMultilineInput(name);\n if (value.length === 0) {\n return null;\n } else {\n return value;\n }\n};\n\n/**\n * Get a number input from the Action's configuration by name or return `null` if not set.\n */\nconst getNumberOrNull = (name: string): number | null => {\n const value = actionsCore.getInput(name);\n if (value === \"\") {\n return null;\n } else {\n return Number(value);\n }\n};\n\n/**\n * Get a string input from the Action's configuration.\n */\nconst getString = (name: string): string => {\n return actionsCore.getInput(name);\n};\n\n/**\n * Get a string input from the Action's configuration by name or return `null` if not set.\n */\nconst getStringOrNull = (name: string): string | null => {\n const value = actionsCore.getInput(name);\n if (value === \"\") {\n return null;\n } else {\n return value;\n }\n};\n\n/**\n * Get a string input from the Action's configuration by name or return `undefined` if not set.\n */\nconst getStringOrUndefined = (name: string): string | undefined => {\n const value = actionsCore.getInput(name);\n if (value === \"\") {\n return undefined;\n } else {\n return value;\n }\n};\n\nexport {\n getBool,\n getBoolOrUndefined,\n getArrayOfStrings,\n getArrayOfStringsOrNull,\n getMultilineStringOrNull,\n getNumberOrNull,\n getString,\n getStringOrNull,\n getStringOrUndefined,\n};\n","/**\n * @packageDocumentation\n * Helpers for determining system attributes of the current runner.\n */\nimport * as actionsCore from \"@actions/core\";\n\n/**\n * Get the current architecture plus OS. Examples include `X64-Linux` and `ARM64-macOS`.\n */\nexport function getArchOs(): string {\n const envArch = process.env.RUNNER_ARCH;\n const envOs = process.env.RUNNER_OS;\n\n if (envArch && envOs) {\n return `${envArch}-${envOs}`;\n } else {\n actionsCore.error(\n `Can't identify the platform: RUNNER_ARCH or RUNNER_OS undefined (${envArch}-${envOs})`,\n );\n throw new Error(\"RUNNER_ARCH and/or RUNNER_OS is not defined\");\n }\n}\n\n/**\n * Get the current Nix system. Examples include `x86_64-linux` and `aarch64-darwin`.\n */\nexport function getNixPlatform(archOs: string): string {\n const archOsMap: Map = new Map([\n [\"X64-macOS\", \"x86_64-darwin\"],\n [\"ARM64-macOS\", \"aarch64-darwin\"],\n [\"X64-Linux\", \"x86_64-linux\"],\n [\"ARM64-Linux\", \"aarch64-linux\"],\n ]);\n\n const mappedTo = archOsMap.get(archOs);\n if (mappedTo) {\n return mappedTo;\n } else {\n actionsCore.error(\n `ArchOs (${archOs}) doesn't map to a supported Nix platform.`,\n );\n throw new Error(\n `Cannot convert ArchOs (${archOs}) to a supported Nix platform.`,\n );\n }\n}\n","import { getStringOrUndefined } from \"./inputs.js\";\nimport * as actionsCore from \"@actions/core\";\n\nexport type SourceDef = {\n path?: string;\n url?: string;\n tag?: string;\n pr?: string;\n branch?: string;\n revision?: string;\n};\n\nexport function constructSourceParameters(legacyPrefix?: string): SourceDef {\n return {\n path: noisilyGetInput(\"path\", legacyPrefix),\n url: noisilyGetInput(\"url\", legacyPrefix),\n tag: noisilyGetInput(\"tag\", legacyPrefix),\n pr: noisilyGetInput(\"pr\", legacyPrefix),\n branch: noisilyGetInput(\"branch\", legacyPrefix),\n revision: noisilyGetInput(\"revision\", legacyPrefix),\n };\n}\n\nfunction noisilyGetInput(\n suffix: string,\n legacyPrefix: string | undefined,\n): string | undefined {\n const preferredInput = getStringOrUndefined(`source-${suffix}`);\n\n if (!legacyPrefix) {\n return preferredInput;\n }\n\n // Remaining is for handling cases where the legacy prefix\n // should be examined.\n const legacyInput = getStringOrUndefined(`${legacyPrefix}-${suffix}`);\n\n if (preferredInput && legacyInput) {\n actionsCore.warning(\n `The supported option source-${suffix} and the legacy option ${legacyPrefix}-${suffix} are both set. Preferring source-${suffix}. Please stop setting ${legacyPrefix}-${suffix}.`,\n );\n return preferredInput;\n } else if (legacyInput) {\n actionsCore.warning(\n `The legacy option ${legacyPrefix}-${suffix} is set. Please migrate to source-${suffix}.`,\n );\n return legacyInput;\n } else {\n return preferredInput;\n }\n}\n","/**\n * @packageDocumentation\n * Determinate Systems' TypeScript library for creating GitHub Actions logic.\n */\n// import { version as pkgVersion } from \"../package.json\";\nimport * as ghActionsCorePlatform from \"./actions-core-platform.js\";\nimport { collectBacktraces } from \"./backtrace.js\";\nimport type { CheckIn, Feature } from \"./check-in.js\";\nimport * as correlation from \"./correlation.js\";\nimport { IdsHost } from \"./ids-host.js\";\nimport { getBool, getBoolOrUndefined, getStringOrNull } from \"./inputs.js\";\nimport * as platform from \"./platform.js\";\nimport type { SourceDef } from \"./sourcedef.js\";\nimport { constructSourceParameters } from \"./sourcedef.js\";\nimport * as actionsCache from \"@actions/cache\";\nimport * as actionsCore from \"@actions/core\";\nimport * as actionsExec from \"@actions/exec\";\nimport { type Got, type Request, TimeoutError } from \"got\";\nimport { exec } from \"node:child_process\";\nimport type { UUID } from \"node:crypto\";\nimport { randomUUID } from \"node:crypto\";\nimport {\n PathLike,\n WriteStream,\n createWriteStream,\n constants as fsConstants,\n readFileSync,\n} from \"node:fs\";\nimport fs, { chmod, copyFile, mkdir } from \"node:fs/promises\";\nimport * as os from \"node:os\";\nimport { tmpdir } from \"node:os\";\nimport * as path from \"node:path\";\nimport { promisify } from \"node:util\";\nimport { gzip } from \"node:zlib\";\n\nconst pkgVersion = \"1.0\";\n\nconst EVENT_BACKTRACES = \"backtrace\";\nconst EVENT_EXCEPTION = \"exception\";\nconst EVENT_ARTIFACT_CACHE_HIT = \"artifact_cache_hit\";\nconst EVENT_ARTIFACT_CACHE_MISS = \"artifact_cache_miss\";\nconst EVENT_ARTIFACT_CACHE_PERSIST = \"artifact_cache_persist\";\nconst EVENT_PREFLIGHT_REQUIRE_NIX_DENIED = \"preflight-require-nix-denied\";\nconst EVENT_STORE_IDENTITY_FAILED = \"store_identity_failed\";\n\nconst FACT_ARTIFACT_FETCHED_FROM_CACHE = \"artifact_fetched_from_cache\";\nconst FACT_ENDED_WITH_EXCEPTION = \"ended_with_exception\";\nconst FACT_FINAL_EXCEPTION = \"final_exception\";\nconst FACT_OS = \"$os\";\nconst FACT_OS_VERSION = \"$os_version\";\nconst FACT_SOURCE_URL = \"source_url\";\nconst FACT_SOURCE_URL_ETAG = \"source_url_etag\";\nconst FACT_NIX_VERSION = \"nix_version\";\n\nconst FACT_NIX_LOCATION = \"nix_location\";\nconst FACT_NIX_STORE_TRUST = \"nix_store_trusted\";\nconst FACT_NIX_STORE_VERSION = \"nix_store_version\";\nconst FACT_NIX_STORE_CHECK_METHOD = \"nix_store_check_method\";\nconst FACT_NIX_STORE_CHECK_ERROR = \"nix_store_check_error\";\n\nconst STATE_KEY_EXECUTION_PHASE = \"detsys_action_execution_phase\";\nconst STATE_KEY_NIX_NOT_FOUND = \"detsys_action_nix_not_found\";\nconst STATE_NOT_FOUND = \"not-found\";\nconst STATE_KEY_CROSS_PHASE_ID = \"detsys_cross_phase_id\";\nconst STATE_BACKTRACE_START_TIMESTAMP = \"detsys_backtrace_start_timestamp\";\n\nconst DIAGNOSTIC_ENDPOINT_TIMEOUT_MS = 10_000; // 10 seconds in ms\nconst CHECK_IN_ENDPOINT_TIMEOUT_MS = 1_000; // 1 second in ms\nconst PROGRAM_NAME_CRASH_DENY_LIST = [\n \"nix-expr-tests\",\n \"nix-store-tests\",\n \"nix-util-tests\",\n];\n\n/**\n * An enum for describing different \"fetch suffixes\" for i.d.s.\n *\n * - `nix-style` means that system names like `x86_64-linux` and `aarch64-darwin` are used\n * - `gh-env-style` means that names like `X64-Linux` and `ARM64-macOS` are used\n * - `universal` means that the suffix is the static `universal` (for non-system-specific things)\n */\nexport type FetchSuffixStyle = \"nix-style\" | \"gh-env-style\" | \"universal\";\n\n/**\n * GitHub Actions has two possible execution phases: `main` and `post`.\n */\nexport type ExecutionPhase = \"main\" | \"post\";\n\n/**\n * How to handle whether Nix is currently installed on the runner.\n *\n * - `fail` means that the workflow fails if Nix isn't installed\n * - `warn` means that a warning is logged if Nix isn't installed\n * - `ignore` means that Nix will not be checked\n */\nexport type NixRequirementHandling = \"fail\" | \"warn\" | \"ignore\";\n\n/**\n * Whether the Nix store on the runner is trusted.\n *\n * - `trusted` means yes\n * - `untrusted` means no\n * - `unknown` means that the status couldn't be determined\n *\n * This is determined via the output of `nix store info --json`.\n */\nexport type NixStoreTrust = \"trusted\" | \"untrusted\" | \"unknown\";\n\nexport type ActionOptions = {\n // Name of the project generally, and the name of the binary on disk.\n name: string;\n\n // Defaults to `name`, Corresponds to the ProjectHost entry on i.d.s.\n idsProjectName?: string;\n\n // Defaults to `action:`\n eventPrefix?: string;\n\n // The \"architecture\" URL component expected by I.D.S. for the ProjectHost.\n fetchStyle: FetchSuffixStyle;\n\n // IdsToolbox assumes the GitHub Action exposes source overrides, like branch/pr/etc. to be named `source-*`.\n // This prefix adds a fallback name, prefixed by `${legacySourcePrefix}-`.\n // Users who configure legacySourcePrefix will get warnings asking them to change to `source-*`.\n legacySourcePrefix?: string;\n\n // Check if Nix is installed before running this action.\n // If Nix isn't installed, this action will not fail, and will instead do nothing.\n // The action will emit a user-visible warning instructing them to install Nix.\n requireNix: NixRequirementHandling;\n\n // The URL suffix to send diagnostics events to.\n //\n // The final URL is constructed via IDS_HOST/idsProjectName/diagnosticsSuffix.\n //\n // Default: `diagnostics`.\n diagnosticsSuffix?: string;\n\n // Collect backtraces from segfaults and other failures from binaries that start with these names.\n //\n // Default: `[ \"nix\", \"determinate-nixd\", ActionOptions.name ]`.\n binaryNamePrefixes?: string[];\n\n // Do NOT collect backtraces from segfaults and other failures from binaries with exact these names.\n //\n // Default: `[ \"nix-expr-tests\" ]`.\n binaryNamesDenyList?: string[];\n};\n\n/**\n * A confident version of Options, where defaults have been resolved into final values.\n */\nexport type ConfidentActionOptions = {\n name: string;\n idsProjectName: string;\n eventPrefix: string;\n fetchStyle: FetchSuffixStyle;\n legacySourcePrefix?: string;\n requireNix: NixRequirementHandling;\n providedDiagnosticsUrl?: URL;\n binaryNamePrefixes: string[];\n binaryNamesDenyList: string[];\n};\n\n/**\n * An event to send to the diagnostic endpoint of i.d.s.\n */\nexport type DiagnosticEvent = {\n // Note: putting a Map in here won't serialize to json properly.\n // It'll just be {} on serialization.\n name: string;\n distinct_id?: string;\n uuid: UUID;\n timestamp: Date;\n\n properties: Record;\n};\n\nconst determinateStateDir = \"/var/lib/determinate\";\nconst determinateIdentityFile = path.join(determinateStateDir, \"identity.json\");\n\nconst isRoot = os.userInfo().uid === 0;\n\n/** Create the Determinate state directory by escalating via sudo */\nasync function sudoEnsureDeterminateStateDir(): Promise {\n const code = await actionsExec.exec(\"sudo\", [\n \"mkdir\",\n \"-p\",\n determinateStateDir,\n ]);\n\n if (code !== 0) {\n throw new Error(`sudo mkdir -p exit: ${code}`);\n }\n}\n\n/** Ensures the Determinate state directory exists, escalating if necessary */\nasync function ensureDeterminateStateDir(): Promise {\n if (isRoot) {\n await mkdir(determinateStateDir, { recursive: true });\n } else {\n return sudoEnsureDeterminateStateDir();\n }\n}\n\n/** Writes correlation hashes to the Determinate state directory by writing to a `sudo tee` pipe */\nasync function sudoWriteCorrelationHashes(hashes: string): Promise {\n const buffer = Buffer.from(hashes);\n\n const code = await actionsExec.exec(\n \"sudo\",\n [\"tee\", determinateIdentityFile],\n {\n input: buffer,\n\n // Ignore output from tee\n outStream: createWriteStream(\"/dev/null\"),\n },\n );\n\n if (code !== 0) {\n throw new Error(`sudo tee exit: ${code}`);\n }\n}\n\n/** Writes correlation hashes to the Determinate state directory, escalating if necessary */\nasync function writeCorrelationHashes(hashes: string): Promise {\n await ensureDeterminateStateDir();\n\n if (isRoot) {\n await fs.writeFile(determinateIdentityFile, hashes, \"utf-8\");\n } else {\n return sudoWriteCorrelationHashes(hashes);\n }\n}\n\nexport abstract class DetSysAction {\n nixStoreTrust: NixStoreTrust;\n strictMode: boolean;\n\n private actionOptions: ConfidentActionOptions;\n private exceptionAttachments: Map;\n private archOs: string;\n private executionPhase: ExecutionPhase;\n private nixSystem: string;\n private architectureFetchSuffix: string;\n private sourceParameters: SourceDef;\n private facts: Record;\n private events: DiagnosticEvent[];\n private identity: correlation.AnonymizedCorrelationHashes;\n private idsHost: IdsHost;\n private features: { [k: string]: Feature };\n private featureEventMetadata: { [k: string]: string | boolean };\n\n private determineExecutionPhase(): ExecutionPhase {\n const currentPhase = actionsCore.getState(STATE_KEY_EXECUTION_PHASE);\n if (currentPhase === \"\") {\n actionsCore.saveState(STATE_KEY_EXECUTION_PHASE, \"post\");\n return \"main\";\n } else {\n return \"post\";\n }\n }\n\n constructor(actionOptions: ActionOptions) {\n this.actionOptions = makeOptionsConfident(actionOptions);\n this.idsHost = new IdsHost(\n this.actionOptions.idsProjectName,\n actionOptions.diagnosticsSuffix,\n // Note: we don't use actionsCore.getInput('diagnostic-endpoint') on purpose:\n // getInput silently converts absent data to an empty string.\n process.env[\"INPUT_DIAGNOSTIC-ENDPOINT\"],\n );\n this.exceptionAttachments = new Map();\n this.nixStoreTrust = \"unknown\";\n this.strictMode = getBool(\"_internal-strict-mode\");\n\n if (\n getBoolOrUndefined(\n \"_internal-obliterate-actions-id-token-request-variables\",\n ) === true\n ) {\n process.env[\"ACTIONS_ID_TOKEN_REQUEST_URL\"] = undefined;\n process.env[\"ACTIONS_ID_TOKEN_REQUEST_TOKEN\"] = undefined;\n }\n\n this.features = {};\n this.featureEventMetadata = {};\n this.events = [];\n\n this.getCrossPhaseId();\n this.collectBacktraceSetup();\n\n // JSON sent to server\n /* eslint-disable camelcase */\n this.facts = {\n $lib: \"idslib\",\n $lib_version: pkgVersion,\n project: this.actionOptions.name,\n ids_project: this.actionOptions.idsProjectName,\n };\n\n const params = [\n [\"github_action_ref\", \"GITHUB_ACTION_REF\"],\n [\"github_action_repository\", \"GITHUB_ACTION_REPOSITORY\"],\n [\"github_event_name\", \"GITHUB_EVENT_NAME\"],\n [\"$os\", \"RUNNER_OS\"],\n [\"arch\", \"RUNNER_ARCH\"],\n ];\n for (const [target, env] of params) {\n const value = process.env[env];\n if (value) {\n this.facts[target] = value;\n }\n }\n\n this.identity = correlation.identify();\n this.archOs = platform.getArchOs();\n this.nixSystem = platform.getNixPlatform(this.archOs);\n\n this.facts.$app_name = `${this.actionOptions.name}/action`;\n this.facts.arch_os = this.archOs;\n this.facts.nix_system = this.nixSystem;\n\n {\n ghActionsCorePlatform\n .getDetails()\n // eslint-disable-next-line github/no-then\n .then((details) => {\n if (details.name !== \"unknown\") {\n this.addFact(FACT_OS, details.name);\n }\n if (details.version !== \"unknown\") {\n this.addFact(FACT_OS_VERSION, details.version);\n }\n })\n // eslint-disable-next-line github/no-then\n .catch((e: unknown) => {\n actionsCore.debug(\n `Failure getting platform details: ${stringifyError(e)}`,\n );\n });\n }\n\n this.executionPhase = this.determineExecutionPhase();\n this.facts.execution_phase = this.executionPhase;\n\n if (this.actionOptions.fetchStyle === \"gh-env-style\") {\n this.architectureFetchSuffix = this.archOs;\n } else if (this.actionOptions.fetchStyle === \"nix-style\") {\n this.architectureFetchSuffix = this.nixSystem;\n } else if (this.actionOptions.fetchStyle === \"universal\") {\n this.architectureFetchSuffix = \"universal\";\n } else {\n throw new Error(\n `fetchStyle ${this.actionOptions.fetchStyle} is not a valid style`,\n );\n }\n\n this.sourceParameters = constructSourceParameters(\n this.actionOptions.legacySourcePrefix,\n );\n\n this.recordEvent(`begin_${this.executionPhase}`);\n }\n\n /**\n * Attach a file to the diagnostics data in error conditions.\n *\n * The file at `location` doesn't need to exist when stapleFile is called.\n *\n * If the file doesn't exist or is unreadable when trying to staple the attachments, the JS error will be stored in a context value at `staple_failure_{name}`.\n * If the file is readable, the file's contents will be stored in a context value at `staple_value_{name}`.\n */\n stapleFile(name: string, location: string): void {\n this.exceptionAttachments.set(name, location);\n }\n\n /**\n * The main execution phase.\n */\n abstract main(): Promise;\n\n /**\n * The post execution phase.\n */\n abstract post(): Promise;\n\n /**\n * Execute the Action as defined.\n */\n execute(): void {\n // eslint-disable-next-line github/no-then\n this.executeAsync().catch((error: Error) => {\n // eslint-disable-next-line no-console\n console.log(error);\n process.exitCode = 1;\n });\n }\n\n getTemporaryName(): string {\n const tmpDir = process.env[\"RUNNER_TEMP\"] || tmpdir();\n return path.join(tmpDir, `${this.actionOptions.name}-${randomUUID()}`);\n }\n\n addFact(key: string, value: string | boolean | number): void {\n this.facts[key] = value;\n }\n\n async getDiagnosticsUrl(): Promise {\n return await this.idsHost.getDiagnosticsUrl();\n }\n\n getUniqueId(): string {\n return (\n this.identity.github_workflow_run_differentiator_hash ||\n process.env.RUNNER_TRACKING_ID ||\n randomUUID()\n );\n }\n\n // This ID will be saved in the action's state, to be persisted across phase steps\n getCrossPhaseId(): string {\n let crossPhaseId = actionsCore.getState(STATE_KEY_CROSS_PHASE_ID);\n\n if (crossPhaseId === \"\") {\n crossPhaseId = randomUUID();\n actionsCore.saveState(STATE_KEY_CROSS_PHASE_ID, crossPhaseId);\n }\n\n return crossPhaseId;\n }\n\n getCorrelationHashes(): correlation.AnonymizedCorrelationHashes {\n return this.identity;\n }\n\n recordEvent(\n eventName: string,\n context: Record = {},\n ): void {\n const prefixedName =\n eventName === \"$feature_flag_called\"\n ? eventName\n : `${this.actionOptions.eventPrefix}${eventName}`;\n\n this.events.push({\n name: prefixedName,\n\n // Use the anon distinct ID as the distinct ID until we actually have a distinct ID in the future\n distinct_id: this.identity.$anon_distinct_id,\n\n // distinct_id\n uuid: randomUUID(),\n timestamp: new Date(),\n\n properties: {\n ...context,\n ...this.identity,\n ...this.facts,\n ...Object.fromEntries(\n Object.entries(this.featureEventMetadata).map<\n [string, string | boolean]\n >(([name, variant]) => [`$feature/${name}`, variant]),\n ),\n },\n });\n }\n\n /**\n * Unpacks the closure returned by `fetchArtifact()`, imports the\n * contents into the Nix store, and returns the path of the executable at\n * `/nix/store/STORE_PATH/bin/${bin}`.\n */\n async unpackClosure(bin: string): Promise {\n const artifact = await this.fetchArtifact();\n const { stdout } = await promisify(exec)(\n `cat \"${artifact}\" | xz -d | nix-store --import`,\n );\n const paths = stdout.split(os.EOL);\n const lastPath = paths.at(-2);\n return `${lastPath}/bin/${bin}`;\n }\n\n /**\n * Fetches the executable at the URL determined by the `source-*` inputs and\n * other facts, `chmod`s it, and returns the path to the executable on disk.\n */\n async fetchExecutable(): Promise {\n const binaryPath = await this.fetchArtifact();\n await chmod(binaryPath, fsConstants.S_IXUSR | fsConstants.S_IXGRP);\n return binaryPath;\n }\n\n private get isMain(): boolean {\n return this.executionPhase === \"main\";\n }\n\n private get isPost(): boolean {\n return this.executionPhase === \"post\";\n }\n\n private async executeAsync(): Promise {\n try {\n await this.checkIn();\n\n const correlationHashes = JSON.stringify(this.getCorrelationHashes());\n process.env.DETSYS_CORRELATION = correlationHashes;\n try {\n await writeCorrelationHashes(correlationHashes);\n } catch (error) {\n this.recordEvent(EVENT_STORE_IDENTITY_FAILED, { error: String(error) });\n }\n\n if (!(await this.preflightRequireNix())) {\n this.recordEvent(EVENT_PREFLIGHT_REQUIRE_NIX_DENIED);\n return;\n } else {\n await this.preflightNixStoreInfo();\n await this.preflightNixVersion();\n this.addFact(FACT_NIX_STORE_TRUST, this.nixStoreTrust);\n }\n\n if (this.isMain) {\n await this.main();\n\n // Run the preflight of the nix version a second time so our \"shutdown\" events have updated version info.\n await this.preflightNixVersion();\n } else if (this.isPost) {\n await this.post();\n }\n this.addFact(FACT_ENDED_WITH_EXCEPTION, false);\n } catch (e: unknown) {\n this.addFact(FACT_ENDED_WITH_EXCEPTION, true);\n\n const reportable = stringifyError(e);\n\n this.addFact(FACT_FINAL_EXCEPTION, reportable);\n\n if (this.isPost) {\n actionsCore.warning(reportable);\n } else {\n actionsCore.setFailed(reportable);\n }\n\n const doGzip = promisify(gzip);\n\n const exceptionContext: Map = new Map();\n for (const [attachmentLabel, filePath] of this.exceptionAttachments) {\n try {\n const logText = readFileSync(filePath);\n const buf = await doGzip(logText);\n exceptionContext.set(\n `staple_value_${attachmentLabel}`,\n buf.toString(\"base64\"),\n );\n } catch (innerError: unknown) {\n exceptionContext.set(\n `staple_failure_${attachmentLabel}`,\n stringifyError(innerError),\n );\n }\n }\n\n this.recordEvent(EVENT_EXCEPTION, Object.fromEntries(exceptionContext));\n } finally {\n if (this.isPost) {\n await this.collectBacktraces();\n }\n\n await this.complete();\n }\n }\n\n async getClient(): Promise {\n return await this.idsHost.getGot(\n (incitingError: unknown, prevUrl: URL, nextUrl: URL) => {\n this.recordPlausibleTimeout(incitingError);\n\n this.recordEvent(\"ids-failover\", {\n previousUrl: prevUrl.toString(),\n nextUrl: nextUrl.toString(),\n });\n },\n );\n }\n\n private async checkIn(): Promise {\n const checkin = await this.requestCheckIn();\n if (checkin === undefined) {\n return;\n }\n\n this.features = checkin.options;\n for (const [key, feature] of Object.entries(this.features)) {\n this.featureEventMetadata[key] = feature.variant;\n }\n\n const impactSymbol: Map = new Map([\n [\"none\", \"⚪\"],\n [\"maintenance\", \"🛠️\"],\n [\"minor\", \"🟡\"],\n [\"major\", \"🟠\"],\n [\"critical\", \"🔴\"],\n ]);\n const defaultImpactSymbol = \"🔵\";\n\n if (checkin.status !== null) {\n const summaries: string[] = [];\n\n for (const incident of checkin.status.incidents) {\n summaries.push(\n `${impactSymbol.get(incident.impact) || defaultImpactSymbol} ${incident.status.replace(\"_\", \" \")}: ${incident.name} (${incident.shortlink})`,\n );\n }\n\n for (const maintenance of checkin.status.scheduled_maintenances) {\n summaries.push(\n `${impactSymbol.get(maintenance.impact) || defaultImpactSymbol} ${maintenance.status.replace(\"_\", \" \")}: ${maintenance.name} (${maintenance.shortlink})`,\n );\n }\n\n if (summaries.length > 0) {\n actionsCore.info(\n // Bright red, Bold, Underline\n `${\"\\u001b[0;31m\"}${\"\\u001b[1m\"}${\"\\u001b[4m\"}${checkin.status.page.name} Status`,\n );\n for (const notice of summaries) {\n actionsCore.info(notice);\n }\n actionsCore.info(`See: ${checkin.status.page.url}`);\n actionsCore.info(``);\n }\n }\n }\n\n getFeature(name: string): Feature | undefined {\n if (!this.features.hasOwnProperty(name)) {\n return undefined;\n }\n\n const result = this.features[name];\n if (result === undefined) {\n return undefined;\n }\n\n this.recordEvent(\"$feature_flag_called\", {\n $feature_flag: name,\n $feature_flag_response: result.variant,\n });\n\n return result;\n }\n\n /**\n * Check in to install.determinate.systems, to accomplish three things:\n *\n * 1. Preflight the server selected from IdsHost, to increase the chances of success.\n * 2. Fetch any incidents and maintenance events to let users know in case things are weird.\n * 3. Get feature flag data so we can gently roll out new features.\n */\n private async requestCheckIn(): Promise {\n for (\n let attemptsRemaining = 5;\n attemptsRemaining > 0;\n attemptsRemaining--\n ) {\n const checkInUrl = await this.getCheckInUrl();\n if (checkInUrl === undefined) {\n return undefined;\n }\n\n try {\n actionsCore.debug(`Preflighting via ${checkInUrl}`);\n\n const props = {\n // Use a distinct_id when we actually have one\n distinct_id: this.identity.$anon_distinct_id,\n anon_distinct_id: this.identity.$anon_distinct_id,\n groups: this.identity.$groups,\n person_properties: {\n ci: \"github\",\n\n ...this.identity,\n ...this.facts,\n },\n };\n\n return await (\n await this.getClient()\n )\n .post(checkInUrl, {\n json: props,\n timeout: {\n request: CHECK_IN_ENDPOINT_TIMEOUT_MS,\n },\n })\n .json();\n } catch (e: unknown) {\n this.recordPlausibleTimeout(e);\n actionsCore.debug(`Error checking in: ${stringifyError(e)}`);\n this.idsHost.markCurrentHostBroken();\n }\n }\n\n return undefined;\n }\n\n private recordPlausibleTimeout(e: unknown): void {\n // see: https://github.com/sindresorhus/got/blob/895e463fa699d6f2e4b2fc01ceb3b2bb9e157f4c/documentation/8-errors.md\n if (e instanceof TimeoutError && \"timings\" in e && \"request\" in e) {\n const reportContext: {\n [index: string]: string | number | undefined;\n } = {\n url: e.request.requestUrl?.toString(),\n retry_count: e.request.retryCount,\n };\n\n for (const [key, value] of Object.entries(e.timings.phases)) {\n if (Number.isFinite(value)) {\n reportContext[`timing_phase_${key}`] = value;\n }\n }\n\n this.recordEvent(\"timeout\", reportContext);\n }\n }\n\n /**\n * Fetch an artifact, such as a tarball, from the location determined by the\n * `source-*` inputs. If `source-binary` is specified, this will return a path\n * to a binary on disk; otherwise, the artifact will be downloaded from the\n * URL determined by the other `source-*` inputs (`source-url`, `source-pr`,\n * etc.).\n */\n private async fetchArtifact(): Promise {\n const sourceBinary = getStringOrNull(\"source-binary\");\n\n // If source-binary is set, use that. Otherwise fall back to the source-* parameters.\n if (sourceBinary !== null && sourceBinary !== \"\") {\n actionsCore.debug(`Using the provided source binary at ${sourceBinary}`);\n return sourceBinary;\n }\n\n actionsCore.startGroup(\n `Downloading ${this.actionOptions.name} for ${this.architectureFetchSuffix}`,\n );\n\n try {\n actionsCore.info(`Fetching from ${await this.getSourceUrl()}`);\n\n const correlatedUrl = await this.getSourceUrl();\n correlatedUrl.searchParams.set(\"ci\", \"github\");\n correlatedUrl.searchParams.set(\n \"correlation\",\n JSON.stringify(this.identity),\n );\n\n const versionCheckup = await (await this.getClient()).head(correlatedUrl);\n if (versionCheckup.headers.etag) {\n const v = versionCheckup.headers.etag;\n this.addFact(FACT_SOURCE_URL_ETAG, v);\n\n actionsCore.debug(\n `Checking the tool cache for ${await this.getSourceUrl()} at ${v}`,\n );\n const cached = await this.getCachedVersion(v);\n if (cached) {\n this.facts[FACT_ARTIFACT_FETCHED_FROM_CACHE] = true;\n actionsCore.debug(`Tool cache hit.`);\n return cached;\n }\n }\n\n this.facts[FACT_ARTIFACT_FETCHED_FROM_CACHE] = false;\n\n actionsCore.debug(\n `No match from the cache, re-fetching from the redirect: ${versionCheckup.url}`,\n );\n\n const destFile = this.getTemporaryName();\n\n const fetchStream = await this.downloadFile(\n new URL(versionCheckup.url),\n destFile,\n );\n\n if (fetchStream.response?.headers.etag) {\n const v = fetchStream.response.headers.etag;\n\n try {\n await this.saveCachedVersion(v, destFile);\n } catch (e: unknown) {\n actionsCore.debug(`Error caching the artifact: ${stringifyError(e)}`);\n }\n }\n\n return destFile;\n } catch (e: unknown) {\n this.recordPlausibleTimeout(e);\n throw e;\n } finally {\n actionsCore.endGroup();\n }\n }\n\n /**\n * A helper function for failing on error only if strict mode is enabled.\n * This is intended only for CI environments testing Actions themselves.\n */\n failOnError(msg: string): void {\n if (this.strictMode) {\n actionsCore.setFailed(`strict mode failure: ${msg}`);\n }\n }\n\n private async downloadFile(\n url: URL,\n destination: PathLike,\n ): Promise {\n const client = await this.getClient();\n\n return new Promise((resolve, reject) => {\n // Current stream handle\n let writeStream: WriteStream | undefined;\n\n // Sentinel condition in case we want to abort retrying due to FS issues\n let failed = false;\n\n const retry = (stream: Request): void => {\n if (writeStream) {\n writeStream.destroy();\n }\n\n writeStream = createWriteStream(destination, {\n encoding: \"binary\",\n mode: 0o755,\n });\n\n writeStream.once(\"error\", (error) => {\n // Set failed here since promise rejections don't impact control flow\n failed = true;\n reject(error);\n });\n\n writeStream.on(\"finish\", () => {\n if (!failed) {\n resolve(stream);\n }\n });\n\n stream.once(\"retry\", (_count, _error, createRetryStream) => {\n // Optional: check `failed' here in case you want to stop retrying\n retry(createRetryStream());\n });\n\n // Now that all the handlers have been set up we can pipe from the HTTP\n // stream to disk\n stream.pipe(writeStream);\n };\n\n // Begin the retry logic by giving it a fresh got.Request\n retry(client.stream(url));\n });\n }\n\n private async complete(): Promise {\n this.recordEvent(`complete_${this.executionPhase}`);\n await this.submitEvents();\n }\n\n private async getCheckInUrl(): Promise {\n const checkInUrl = await this.idsHost.getDynamicRootUrl();\n\n if (checkInUrl === undefined) {\n return undefined;\n }\n\n checkInUrl.pathname += \"check-in\";\n return checkInUrl;\n }\n\n private async getSourceUrl(): Promise {\n const p = this.sourceParameters;\n\n if (p.url) {\n this.addFact(FACT_SOURCE_URL, p.url);\n return new URL(p.url);\n }\n\n const fetchUrl = await this.idsHost.getRootUrl();\n fetchUrl.pathname += this.actionOptions.idsProjectName;\n\n if (p.tag) {\n fetchUrl.pathname += `/tag/${p.tag}`;\n } else if (p.pr) {\n fetchUrl.pathname += `/pr/${p.pr}`;\n } else if (p.branch) {\n fetchUrl.pathname += `/branch/${p.branch}`;\n } else if (p.revision) {\n fetchUrl.pathname += `/rev/${p.revision}`;\n } else {\n fetchUrl.pathname += `/stable`;\n }\n\n fetchUrl.pathname += `/${this.architectureFetchSuffix}`;\n\n this.addFact(FACT_SOURCE_URL, fetchUrl.toString());\n\n return fetchUrl;\n }\n\n private cacheKey(version: string): string {\n const cleanedVersion = version.replace(/[^a-zA-Z0-9-+.]/g, \"\");\n return `determinatesystem-${this.actionOptions.name}-${this.architectureFetchSuffix}-${cleanedVersion}`;\n }\n\n private async getCachedVersion(version: string): Promise {\n const startCwd = process.cwd();\n\n try {\n const tempDir = this.getTemporaryName();\n await mkdir(tempDir);\n process.chdir(tempDir);\n\n // extremely evil shit right here:\n process.env.GITHUB_WORKSPACE_BACKUP = process.env.GITHUB_WORKSPACE;\n delete process.env.GITHUB_WORKSPACE;\n\n if (\n await actionsCache.restoreCache(\n [this.actionOptions.name],\n this.cacheKey(version),\n [],\n undefined,\n true,\n )\n ) {\n this.recordEvent(EVENT_ARTIFACT_CACHE_HIT);\n return `${tempDir}/${this.actionOptions.name}`;\n }\n\n this.recordEvent(EVENT_ARTIFACT_CACHE_MISS);\n return undefined;\n } finally {\n process.env.GITHUB_WORKSPACE = process.env.GITHUB_WORKSPACE_BACKUP;\n delete process.env.GITHUB_WORKSPACE_BACKUP;\n process.chdir(startCwd);\n }\n }\n\n private async saveCachedVersion(\n version: string,\n toolPath: string,\n ): Promise {\n const startCwd = process.cwd();\n\n try {\n const tempDir = this.getTemporaryName();\n await mkdir(tempDir);\n process.chdir(tempDir);\n await copyFile(toolPath, `${tempDir}/${this.actionOptions.name}`);\n\n // extremely evil shit right here:\n process.env.GITHUB_WORKSPACE_BACKUP = process.env.GITHUB_WORKSPACE;\n delete process.env.GITHUB_WORKSPACE;\n\n await actionsCache.saveCache(\n [this.actionOptions.name],\n this.cacheKey(version),\n undefined,\n true,\n );\n this.recordEvent(EVENT_ARTIFACT_CACHE_PERSIST);\n } finally {\n process.env.GITHUB_WORKSPACE = process.env.GITHUB_WORKSPACE_BACKUP;\n delete process.env.GITHUB_WORKSPACE_BACKUP;\n process.chdir(startCwd);\n }\n }\n\n private collectBacktraceSetup(): void {\n if (!process.env.DETSYS_BACKTRACE_COLLECTOR) {\n actionsCore.exportVariable(\n \"DETSYS_BACKTRACE_COLLECTOR\",\n this.getCrossPhaseId(),\n );\n\n actionsCore.saveState(STATE_BACKTRACE_START_TIMESTAMP, Date.now());\n }\n }\n\n private async collectBacktraces(): Promise {\n try {\n if (process.env.DETSYS_BACKTRACE_COLLECTOR !== this.getCrossPhaseId()) {\n return;\n }\n\n const backtraces = await collectBacktraces(\n this.actionOptions.binaryNamePrefixes,\n this.actionOptions.binaryNamesDenyList,\n parseInt(actionsCore.getState(STATE_BACKTRACE_START_TIMESTAMP)),\n );\n actionsCore.debug(`Backtraces identified: ${backtraces.size}`);\n if (backtraces.size > 0) {\n this.recordEvent(EVENT_BACKTRACES, Object.fromEntries(backtraces));\n }\n } catch (innerError: unknown) {\n actionsCore.debug(\n `Error collecting backtraces: ${stringifyError(innerError)}`,\n );\n }\n }\n\n private async preflightRequireNix(): Promise {\n let nixLocation: string | undefined;\n\n const pathParts = (process.env[\"PATH\"] || \"\").split(\":\");\n for (const location of pathParts) {\n const candidateNix = path.join(location, \"nix\");\n\n try {\n await fs.access(candidateNix, fs.constants.X_OK);\n actionsCore.debug(`Found Nix at ${candidateNix}`);\n nixLocation = candidateNix;\n break;\n } catch {\n actionsCore.debug(`Nix not at ${candidateNix}`);\n }\n }\n this.addFact(FACT_NIX_LOCATION, nixLocation || \"\");\n\n if (this.actionOptions.requireNix === \"ignore\") {\n return true;\n }\n\n const currentNotFoundState = actionsCore.getState(STATE_KEY_NIX_NOT_FOUND);\n if (currentNotFoundState === STATE_NOT_FOUND) {\n // It was previously not found, so don't run subsequent actions\n return false;\n }\n\n if (nixLocation !== undefined) {\n return true;\n }\n actionsCore.saveState(STATE_KEY_NIX_NOT_FOUND, STATE_NOT_FOUND);\n\n switch (this.actionOptions.requireNix) {\n case \"fail\":\n actionsCore.setFailed(\n [\n \"This action can only be used when Nix is installed.\",\n \"Add `- uses: DeterminateSystems/determinate-nix-action@v3` earlier in your workflow.\",\n ].join(\" \"),\n );\n break;\n case \"warn\":\n actionsCore.warning(\n [\n \"This action is in no-op mode because Nix is not installed.\",\n \"Add `- uses: DeterminateSystems/determinate-nix-action@v3` earlier in your workflow.\",\n ].join(\" \"),\n );\n break;\n }\n\n return false;\n }\n\n private async preflightNixStoreInfo(): Promise {\n let output = \"\";\n\n const options: actionsExec.ExecOptions = {};\n options.silent = true;\n options.listeners = {\n stdout: (data) => {\n output += data.toString();\n },\n };\n\n try {\n output = \"\";\n await actionsExec.exec(\"nix\", [\"store\", \"info\", \"--json\"], options);\n this.addFact(FACT_NIX_STORE_CHECK_METHOD, \"info\");\n } catch {\n try {\n // reset output\n output = \"\";\n await actionsExec.exec(\"nix\", [\"store\", \"ping\", \"--json\"], options);\n this.addFact(FACT_NIX_STORE_CHECK_METHOD, \"ping\");\n } catch {\n this.addFact(FACT_NIX_STORE_CHECK_METHOD, \"none\");\n return;\n }\n }\n\n try {\n const parsed = JSON.parse(output);\n if (parsed.trusted === 1) {\n this.nixStoreTrust = \"trusted\";\n } else if (parsed.trusted === 0) {\n this.nixStoreTrust = \"untrusted\";\n } else if (parsed.trusted !== undefined) {\n this.addFact(\n FACT_NIX_STORE_CHECK_ERROR,\n `Mysterious trusted value: ${JSON.stringify(parsed.trusted)}`,\n );\n }\n\n this.addFact(FACT_NIX_STORE_VERSION, JSON.stringify(parsed.version));\n } catch (e: unknown) {\n this.addFact(FACT_NIX_STORE_CHECK_ERROR, stringifyError(e));\n }\n }\n\n private async preflightNixVersion(): Promise {\n let output = \"unknown\";\n\n try {\n ({ stdout: output } = await actionsExec.getExecOutput(\n \"nix\",\n [\"--version\"],\n {\n silent: true,\n },\n ));\n output = output.trim() || \"unknown\";\n } catch {\n // That's fine.\n }\n\n this.addFact(FACT_NIX_VERSION, output);\n }\n\n private async submitEvents(): Promise {\n const diagnosticsUrl = await this.idsHost.getDiagnosticsUrl();\n if (diagnosticsUrl === undefined) {\n actionsCore.debug(\n \"Diagnostics are disabled. Not sending the following events:\",\n );\n actionsCore.debug(JSON.stringify(this.events, undefined, 2));\n return;\n }\n\n const batch = {\n sent_at: new Date(),\n batch: this.events,\n };\n\n try {\n await (\n await this.getClient()\n ).post(diagnosticsUrl, {\n json: batch,\n timeout: {\n request: DIAGNOSTIC_ENDPOINT_TIMEOUT_MS,\n },\n });\n } catch (err: unknown) {\n this.recordPlausibleTimeout(err);\n\n actionsCore.debug(\n `Error submitting diagnostics event to ${diagnosticsUrl}: ${stringifyError(err)}`,\n );\n }\n this.events = [];\n }\n}\n\nfunction stringifyError(error: unknown): string {\n return error instanceof Error || typeof error == \"string\"\n ? error.toString()\n : JSON.stringify(error);\n}\n\nfunction makeOptionsConfident(\n actionOptions: ActionOptions,\n): ConfidentActionOptions {\n const idsProjectName = actionOptions.idsProjectName ?? actionOptions.name;\n\n const finalOpts: ConfidentActionOptions = {\n name: actionOptions.name,\n idsProjectName,\n eventPrefix: actionOptions.eventPrefix || \"action:\",\n fetchStyle: actionOptions.fetchStyle,\n legacySourcePrefix: actionOptions.legacySourcePrefix,\n requireNix: actionOptions.requireNix,\n binaryNamePrefixes: actionOptions.binaryNamePrefixes ?? [\n \"nix\",\n \"determinate-nixd\",\n actionOptions.name,\n ],\n binaryNamesDenyList:\n actionOptions.binaryNamePrefixes ?? PROGRAM_NAME_CRASH_DENY_LIST,\n };\n\n actionsCore.debug(\"idslib options:\");\n actionsCore.debug(JSON.stringify(finalOpts, undefined, 2));\n\n return finalOpts;\n}\n\n// Public exports from other files\nexport type {\n CheckIn,\n Feature,\n Incident,\n Maintenance,\n Page,\n StatusSummary,\n} from \"./check-in.js\";\nexport type { AnonymizedCorrelationHashes } from \"./correlation.js\";\nexport { stringifyError } from \"./errors.js\";\nexport { IdsHost } from \"./ids-host.js\";\nexport type { SourceDef } from \"./sourcedef.js\";\nexport * as inputs from \"./inputs.js\";\nexport * as platform from \"./platform.js\";\n"],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 629416d..ae9461b 100644 --- a/package.json +++ b/package.json @@ -27,27 +27,27 @@ }, "homepage": "https://github.com/DeterminateSystems/detsys-ts#readme", "dependencies": { - "@actions/cache": "^4.0.5", + "@actions/cache": "^4.1.0", "@actions/core": "^1.11.1", "@actions/exec": "^1.1.1", - "got": "^14.4.8", - "type-fest": "^4.41.0" + "got": "^14.6.2", + "type-fest": "^5.1.0" }, "devDependencies": { "@trivago/prettier-plugin-sort-imports": "^5.2.2", - "@types/node": "^22.18.1", - "@typescript-eslint/eslint-plugin": "^8.43.0", - "eslint": "^9.35.0", + "@types/node": "^24.9.2", + "@typescript-eslint/eslint-plugin": "^8.46.2", + "eslint": "^9.39.0", "eslint-import-resolver-typescript": "^4.4.4", "eslint-plugin-github": "^6.0.0", "eslint-plugin-import": "^2.32.0", "eslint-plugin-prettier": "^5.5.4", - "globals": "^16.4.0", + "globals": "^16.5.0", "prettier": "^3.6.2", - "tsdown": "^0.14.2", - "typedoc": "^0.28.12", - "typescript": "^5.9.2", - "typescript-eslint": "^8.43.0", - "vitest": "^3.2.4" + "tsdown": "^0.15.12", + "typedoc": "^0.28.14", + "typescript": "^5.9.3", + "typescript-eslint": "^8.46.2", + "vitest": "^4.0.6" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 99d7a57..82819b4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: '@actions/cache': - specifier: ^4.0.5 - version: 4.0.5 + specifier: ^4.1.0 + version: 4.1.0 '@actions/core': specifier: ^1.11.1 version: 1.11.1 @@ -18,62 +18,62 @@ importers: specifier: ^1.1.1 version: 1.1.1 got: - specifier: ^14.4.8 - version: 14.4.8 + specifier: ^14.6.2 + version: 14.6.2 type-fest: - specifier: ^4.41.0 - version: 4.41.0 + specifier: ^5.1.0 + version: 5.1.0 devDependencies: '@trivago/prettier-plugin-sort-imports': specifier: ^5.2.2 version: 5.2.2(prettier@3.6.2) '@types/node': - specifier: ^22.18.1 - version: 22.18.1 + specifier: ^24.9.2 + version: 24.9.2 '@typescript-eslint/eslint-plugin': - specifier: ^8.43.0 - version: 8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + specifier: ^8.46.2 + version: 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) eslint: - specifier: ^9.35.0 - version: 9.35.0(jiti@2.5.1) + specifier: ^9.39.0 + version: 9.39.0(jiti@2.6.1) eslint-import-resolver-typescript: specifier: ^4.4.4 - version: 4.4.4(eslint-plugin-import@2.32.0)(eslint@9.35.0(jiti@2.5.1)) + version: 4.4.4(eslint-plugin-import@2.32.0)(eslint@9.39.0(jiti@2.6.1)) eslint-plugin-github: specifier: ^6.0.0 - version: 6.0.0(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.5.1)) + version: 6.0.0(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.0(jiti@2.6.1)) eslint-plugin-import: specifier: ^2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.5.1)) + version: 2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.0(jiti@2.6.1)) eslint-plugin-prettier: specifier: ^5.5.4 - version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1))(prettier@3.6.2) + version: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.39.0(jiti@2.6.1)))(eslint@9.39.0(jiti@2.6.1))(prettier@3.6.2) globals: - specifier: ^16.4.0 - version: 16.4.0 + specifier: ^16.5.0 + version: 16.5.0 prettier: specifier: ^3.6.2 version: 3.6.2 tsdown: - specifier: ^0.14.2 - version: 0.14.2(typescript@5.9.2) + specifier: ^0.15.12 + version: 0.15.12(typescript@5.9.3) typedoc: - specifier: ^0.28.12 - version: 0.28.12(typescript@5.9.2) + specifier: ^0.28.14 + version: 0.28.14(typescript@5.9.3) typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^5.9.3 + version: 5.9.3 typescript-eslint: - specifier: ^8.43.0 - version: 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + specifier: ^8.46.2 + version: 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) vitest: - specifier: ^3.2.4 - version: 3.2.4(@types/node@22.18.1)(jiti@2.5.1)(yaml@2.8.1) + specifier: ^4.0.6 + version: 4.0.6(@types/node@24.9.2)(jiti@2.6.1)(yaml@2.8.1) packages: - '@actions/cache@4.0.5': - resolution: {integrity: sha512-RjLz1/vvntOfp3FpkY3wB0MjVRbLq7bfQEuQG9UUTKwdtcYmFrKVmuD+9B6ADbzbkSfHM+dM4sMjdr3R4XIkFg==} + '@actions/cache@4.1.0': + resolution: {integrity: sha512-z3Opg+P4Y7baq+g1dODXgdtsvPLSewr3ZKpp3U0HQR1A/vWCoJFS52XSezjdngo4SIOdR5oHtyK3a3Arar+X9A==} '@actions/core@1.11.1': resolution: {integrity: sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==} @@ -141,12 +141,12 @@ packages: '@azure/ms-rest-js@2.7.0': resolution: {integrity: sha512-ngbzWbqF+NmztDOpLBVDxYM+XLcUj7nKhxGbSU9WtIsXfRB//cf2ZbAG5HkOrhU9/wd/ORRB6lM/d69RKVjiyA==} - '@azure/storage-blob@12.28.0': - resolution: {integrity: sha512-VhQHITXXO03SURhDiGuHhvc/k/sD2WvJUS7hqhiVNbErVCuQoLtWql7r97fleBlIRKHJaa9R7DpBjfE0pfLYcA==} + '@azure/storage-blob@12.29.1': + resolution: {integrity: sha512-7ktyY0rfTM0vo7HvtK6E3UvYnI9qfd6Oz6z/+92VhGRveWng3kJwMKeUpqmW/NmwcDNbxHpSlldG+vsUnRFnBg==} engines: {node: '>=20.0.0'} - '@azure/storage-common@12.0.0': - resolution: {integrity: sha512-QyEWXgi4kdRo0wc1rHum9/KnaWZKCdQGZK1BjU4fFL6Jtedp7KLbQihgTTVxldFy1z1ZPtuDPx8mQ5l3huPPbA==} + '@azure/storage-common@12.1.1': + resolution: {integrity: sha512-eIOH1pqFwI6UmVNnDQvmFeSg0XppuzDLFeUNO/Xht7ODAzRLgGDh7h550pSxoA+lPDxBl1+D2m/KG3jWzCUjTg==} engines: {node: '>=20.0.0'} '@babel/code-frame@7.27.1': @@ -157,6 +157,10 @@ packages: resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} engines: {node: '>=6.9.0'} + '@babel/generator@7.28.5': + resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-globals@7.28.0': resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} @@ -169,11 +173,20 @@ packages: resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + '@babel/parser@7.28.4': resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.28.5': + resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/template@7.27.2': resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} @@ -186,167 +199,177 @@ packages: resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} engines: {node: '>=6.9.0'} + '@babel/types@7.28.5': + resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} + engines: {node: '>=6.9.0'} + '@emnapi/core@1.5.0': resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==} + '@emnapi/core@1.6.0': + resolution: {integrity: sha512-zq/ay+9fNIJJtJiZxdTnXS20PllcYMX3OE23ESc4HK/bdYu3cOWYVhsOhVnXALfU/uqJIxn5NBPd9z4v+SfoSg==} + '@emnapi/runtime@1.5.0': resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} + '@emnapi/runtime@1.6.0': + resolution: {integrity: sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA==} + '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} - '@esbuild/aix-ppc64@0.25.9': - resolution: {integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==} + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.9': - resolution: {integrity: sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==} + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.9': - resolution: {integrity: sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==} + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.9': - resolution: {integrity: sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==} + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.9': - resolution: {integrity: sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==} + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.9': - resolution: {integrity: sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==} + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.9': - resolution: {integrity: sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==} + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.9': - resolution: {integrity: sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==} + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.9': - resolution: {integrity: sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==} + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.9': - resolution: {integrity: sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==} + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.9': - resolution: {integrity: sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==} + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.9': - resolution: {integrity: sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==} + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.9': - resolution: {integrity: sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==} + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.9': - resolution: {integrity: sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==} + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.9': - resolution: {integrity: sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==} + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.9': - resolution: {integrity: sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==} + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.9': - resolution: {integrity: sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==} + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.9': - resolution: {integrity: sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==} + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.9': - resolution: {integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==} + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.9': - resolution: {integrity: sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==} + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.9': - resolution: {integrity: sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==} + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.9': - resolution: {integrity: sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==} + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.25.9': - resolution: {integrity: sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==} + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.9': - resolution: {integrity: sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==} + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.9': - resolution: {integrity: sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==} + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.9': - resolution: {integrity: sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==} + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -357,8 +380,8 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.12.1': - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} '@eslint/compat@1.3.2': @@ -370,16 +393,16 @@ packages: eslint: optional: true - '@eslint/config-array@0.21.0': - resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} + '@eslint/config-array@0.21.1': + resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/config-helpers@0.3.1': - resolution: {integrity: sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==} + '@eslint/config-helpers@0.4.2': + resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.15.2': - resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==} + '@eslint/core@0.17.0': + resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@3.3.1': @@ -390,20 +413,24 @@ packages: resolution: {integrity: sha512-30iXE9whjlILfWobBkNerJo+TXYsgVM5ERQwMcMKCHckHflCmf7wXDAHlARoWnh0s1U72WqlbeyE7iAcCzuCPw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/object-schema@2.1.6': - resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + '@eslint/js@9.39.0': + resolution: {integrity: sha512-BIhe0sW91JGPiaF1mOuPy5v8NflqfjIcDNpC+LbW9f609WVRX1rArrhi6Z2ymvrAry9jw+5POTj4t2t62o8Bmw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.7': + resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.3.5': - resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} + '@eslint/plugin-kit@0.4.1': + resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@fastify/busboy@2.1.1': resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} - '@gerrit0/mini-shiki@3.12.2': - resolution: {integrity: sha512-HKZPmO8OSSAAo20H2B3xgJdxZaLTwtlMwxg0967scnrDlPwe6j5+ULGHyIqwgTbFCn9yv/ff8CmfWZLE9YKBzA==} + '@gerrit0/mini-shiki@3.14.0': + resolution: {integrity: sha512-c5X8fwPLOtUS8TVdqhynz9iV0GlOtFUT1ppXYzUUlEXe4kbZ/mvMT8wXoT8kCwUka+zsiloq7sD3pZ3+QVTuNQ==} '@github/browserslist-config@1.0.0': resolution: {integrity: sha512-gIhjdJp/c2beaIWWIlsXdqXVRUz3r2BxBCpfz/F3JXHvSAQ1paMYjLH+maEATtENg+k5eLV7gA+9yPp762ieuw==} @@ -437,11 +464,14 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@keyv/serialize@1.1.1': + resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==} + '@napi-rs/wasm-runtime@0.2.12': resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} - '@napi-rs/wasm-runtime@1.0.4': - resolution: {integrity: sha512-+ZEtJPp8EF8h4kN6rLQECRor00H7jtDgBVtttIUoxuDkXLiQMaSBqju3LV/IEsMvqVG5pviUvR4jYhIA1xNm8w==} + '@napi-rs/wasm-runtime@1.0.7': + resolution: {integrity: sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==} '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -455,12 +485,8 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@oxc-project/runtime@0.87.0': - resolution: {integrity: sha512-ky2Hqi2q/uGX36UfY79zxMbUqiNIl1RyKKVJfFenG70lbn+/fcaKBVTbhmUwn8a2wPyv2gNtDQxuDytbKX9giQ==} - engines: {node: '>=6.9.0'} - - '@oxc-project/types@0.87.0': - resolution: {integrity: sha512-ipZFWVGE9fADBVXXWJWY/cxpysc41Gt5upKDeb32F6WMgFyO7XETUMVq8UuREKCih+Km5E6p2VhEvf6Fuhey6g==} + '@oxc-project/types@0.95.0': + resolution: {integrity: sha512-vACy7vhpMPhjEJhULNxrdR0D943TkA/MigMpJCHmBHvMXxRStRi/dPtTlfQ3uDwWSzRpT8z+7ImjZVf8JWBocQ==} '@pkgr/core@0.2.9': resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} @@ -475,194 +501,199 @@ packages: '@quansync/fs@0.1.5': resolution: {integrity: sha512-lNS9hL2aS2NZgNW7BBj+6EBl4rOf8l+tQ0eRY6JWCI8jI2kc53gSoqbjojU0OnAWhzoXiOjFyGsHcDGePB3lhA==} - '@rolldown/binding-android-arm64@1.0.0-beta.37': - resolution: {integrity: sha512-Pdr3USGBdoYzcygfJTSATHd7x476vVF3rnQ6SuUAh4YjhgGoNaI/ZycQ0RsonptwwU5NmQRWxfWv+aUPL6JlJg==} + '@rolldown/binding-android-arm64@1.0.0-beta.45': + resolution: {integrity: sha512-bfgKYhFiXJALeA/riil908+2vlyWGdwa7Ju5S+JgWZYdR4jtiPOGdM6WLfso1dojCh+4ZWeiTwPeV9IKQEX+4g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-beta.37': - resolution: {integrity: sha512-iDdmatSgbWhTYOq51G2CkJXwFayiuQpv/ywG7Bv3wKqy31L7d0LltUhWqAdfCl7eBG3gybfUm/iEXiTldH3jYA==} + '@rolldown/binding-darwin-arm64@1.0.0-beta.45': + resolution: {integrity: sha512-xjCv4CRVsSnnIxTuyH1RDJl5OEQ1c9JYOwfDAHddjJDxCw46ZX9q80+xq7Eok7KC4bRSZudMJllkvOKv0T9SeA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-beta.37': - resolution: {integrity: sha512-LQPpi3YJDtIprj6mwMbVM1gLM4BV2m9oqe9h3Y1UwAd20xs+imnzWJqWFpm4Hw9SiFmefIf3q4EPx2k6Nj2K7A==} + '@rolldown/binding-darwin-x64@1.0.0-beta.45': + resolution: {integrity: sha512-ddcO9TD3D/CLUa/l8GO8LHzBOaZqWg5ClMy3jICoxwCuoz47h9dtqPsIeTiB6yR501LQTeDsjA4lIFd7u3Ljfw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-beta.37': - resolution: {integrity: sha512-9JnfSWfYd/YrZOu4Sj3rb2THBrCj70nJB/2FOSdg0O9ZoRrdTeB8b7Futo6N7HLWZM5uqqnJBX6VTpA0RZD+ow==} + '@rolldown/binding-freebsd-x64@1.0.0-beta.45': + resolution: {integrity: sha512-MBTWdrzW9w+UMYDUvnEuh0pQvLENkl2Sis15fHTfHVW7ClbGuez+RWopZudIDEGkpZXdeI4CkRXk+vdIIebrmg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.37': - resolution: {integrity: sha512-eEmQTpvefEtHxc0vg5sOnWCqBcGQB/SIDlPkkzKR9ESKq9BsjQfHxssJWuNMyQ+rpr9CYaogddyQtZ9GHkp8vA==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.45': + resolution: {integrity: sha512-4YgoCFiki1HR6oSg+GxxfzfnVCesQxLF1LEnw9uXS/MpBmuog0EOO2rYfy69rWP4tFZL9IWp6KEfGZLrZ7aUog==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.37': - resolution: {integrity: sha512-Ekv4OjDzQUl0X9kHM7M23N9hVRiYCYr89neLBNITCp7P4IHs1f6SNZiCIvvBVy6NIFzO1w9LZJGEeJYK5cQBVQ==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.45': + resolution: {integrity: sha512-LE1gjAwQRrbCOorJJ7LFr10s5vqYf5a00V5Ea9wXcT2+56n5YosJkcp8eQ12FxRBv2YX8dsdQJb+ZTtYJwb6XQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.37': - resolution: {integrity: sha512-z8Aa5Kar5mhh0RVZEL+zKJwNz1cgcDISmwUMcTk0w986T8JZJOJCfJ/u9e8pqUTIJjxdM8SZq9/24nMgMlx5ng==} + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.45': + resolution: {integrity: sha512-tdy8ThO/fPp40B81v0YK3QC+KODOmzJzSUOO37DinQxzlTJ026gqUSOM8tzlVixRbQJltgVDCTYF8HNPRErQTA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.37': - resolution: {integrity: sha512-e+fNseKhfE/socjOw6VrQcXrbNKfi2V/KZ+ssuLnmeaYNGuJWqPhvML56oYhGb3IgROEEc61lzr3Riy5BIqoMA==} + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.45': + resolution: {integrity: sha512-lS082ROBWdmOyVY/0YB3JmsiClaWoxvC+dA8/rbhyB9VLkvVEaihLEOr4CYmrMse151C4+S6hCw6oa1iewox7g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-musl@1.0.0-beta.37': - resolution: {integrity: sha512-dPZfB396PMIasd19X0ikpdCvjK/7SaJFO8y5/TxnozJEy70vOf4GESe/oKcsJPav/MSTWBYsHjJSO6vX0oAW8g==} + '@rolldown/binding-linux-x64-musl@1.0.0-beta.45': + resolution: {integrity: sha512-Hi73aYY0cBkr1/SvNQqH8Cd+rSV6S9RB5izCv0ySBcRnd/Wfn5plguUoGYwBnhHgFbh6cPw9m2dUVBR6BG1gxA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@rolldown/binding-openharmony-arm64@1.0.0-beta.37': - resolution: {integrity: sha512-rFjLXoHpRqxJqkSBXHuyt6bhyiIFnvLD9X2iPmCYlfpEkdTbrY1AXg4ZbF8UMO5LM7DAAZm/7vPYPO1TKTA7Sg==} + '@rolldown/binding-openharmony-arm64@1.0.0-beta.45': + resolution: {integrity: sha512-fljEqbO7RHHogNDxYtTzr+GNjlfOx21RUyGmF+NrkebZ8emYYiIqzPxsaMZuRx0rgZmVmliOzEp86/CQFDKhJQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-beta.37': - resolution: {integrity: sha512-oQAe3lMaBGX6q0GSic0l3Obmd6/rX8R6eHLnRC8kyy/CvPLiCMV82MPGT8fxpPTo/ULFGrupSu2nV1zmOFBt/w==} + '@rolldown/binding-wasm32-wasi@1.0.0-beta.45': + resolution: {integrity: sha512-ZJDB7lkuZE9XUnWQSYrBObZxczut+8FZ5pdanm8nNS1DAo8zsrPuvGwn+U3fwU98WaiFsNrA4XHngesCGr8tEQ==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.37': - resolution: {integrity: sha512-ucO6CiZhpkNRiVAk7ybvA9pZaMreCtfHej3BtJcBL5S3aYmp4h0g6TvaXLD5YRJx5sXobp/9A//xU4wPMul3Bg==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.45': + resolution: {integrity: sha512-zyzAjItHPUmxg6Z8SyRhLdXlJn3/D9KL5b9mObUrBHhWS/GwRH4665xCiFqeuktAhhWutqfc+rOV2LjK4VYQGQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.37': - resolution: {integrity: sha512-Ya9DBWJe1EGHwil7ielI8CdE0ELCg6KyDvDQqIFllnTJEYJ1Rb74DK6mvlZo273qz6Mw8WrMm26urfDeZhCc3Q==} + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.45': + resolution: {integrity: sha512-wODcGzlfxqS6D7BR0srkJk3drPwXYLu7jPHN27ce2c4PUnVVmJnp9mJzUQGT4LpmHmmVdMZ+P6hKvyTGBzc1CA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.37': - resolution: {integrity: sha512-r+RI+wMReoTIF/uXqQWJcD8xGWXzCzUyGdpLmQ8FC+MCyPHlkjEsFRv8OFIYI6HhiGAmbfWVYEGf+aeLJzkHGw==} + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.45': + resolution: {integrity: sha512-wiU40G1nQo9rtfvF9jLbl79lUgjfaD/LTyUEw2Wg/gdF5OhjzpKMVugZQngO+RNdwYaNj+Fs+kWBWfp4VXPMHA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@rolldown/pluginutils@1.0.0-beta.37': - resolution: {integrity: sha512-0taU1HpxFzrukvWIhLRI4YssJX2wOW5q1MxPXWztltsQ13TE51/larZIwhFdpyk7+K43TH7x6GJ8oEqAo+vDbA==} + '@rolldown/pluginutils@1.0.0-beta.45': + resolution: {integrity: sha512-Le9ulGCrD8ggInzWw/k2J8QcbPz7eGIOWqfJ2L+1R0Opm7n6J37s2hiDWlh6LJN0Lk9L5sUzMvRHKW7UxBZsQA==} - '@rollup/rollup-android-arm-eabi@4.50.1': - resolution: {integrity: sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag==} + '@rollup/rollup-android-arm-eabi@4.52.5': + resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.50.1': - resolution: {integrity: sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw==} + '@rollup/rollup-android-arm64@4.52.5': + resolution: {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.50.1': - resolution: {integrity: sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw==} + '@rollup/rollup-darwin-arm64@4.52.5': + resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.50.1': - resolution: {integrity: sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw==} + '@rollup/rollup-darwin-x64@4.52.5': + resolution: {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.50.1': - resolution: {integrity: sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA==} + '@rollup/rollup-freebsd-arm64@4.52.5': + resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.50.1': - resolution: {integrity: sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ==} + '@rollup/rollup-freebsd-x64@4.52.5': + resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.50.1': - resolution: {integrity: sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg==} + '@rollup/rollup-linux-arm-gnueabihf@4.52.5': + resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.50.1': - resolution: {integrity: sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw==} + '@rollup/rollup-linux-arm-musleabihf@4.52.5': + resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.50.1': - resolution: {integrity: sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw==} + '@rollup/rollup-linux-arm64-gnu@4.52.5': + resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.50.1': - resolution: {integrity: sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w==} + '@rollup/rollup-linux-arm64-musl@4.52.5': + resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.50.1': - resolution: {integrity: sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q==} + '@rollup/rollup-linux-loong64-gnu@4.52.5': + resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.50.1': - resolution: {integrity: sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q==} + '@rollup/rollup-linux-ppc64-gnu@4.52.5': + resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.50.1': - resolution: {integrity: sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ==} + '@rollup/rollup-linux-riscv64-gnu@4.52.5': + resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.50.1': - resolution: {integrity: sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg==} + '@rollup/rollup-linux-riscv64-musl@4.52.5': + resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.50.1': - resolution: {integrity: sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg==} + '@rollup/rollup-linux-s390x-gnu@4.52.5': + resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.50.1': - resolution: {integrity: sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA==} + '@rollup/rollup-linux-x64-gnu@4.52.5': + resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.50.1': - resolution: {integrity: sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg==} + '@rollup/rollup-linux-x64-musl@4.52.5': + resolution: {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==} cpu: [x64] os: [linux] - '@rollup/rollup-openharmony-arm64@4.50.1': - resolution: {integrity: sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA==} + '@rollup/rollup-openharmony-arm64@4.52.5': + resolution: {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.50.1': - resolution: {integrity: sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ==} + '@rollup/rollup-win32-arm64-msvc@4.52.5': + resolution: {integrity: sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.50.1': - resolution: {integrity: sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A==} + '@rollup/rollup-win32-ia32-msvc@4.52.5': + resolution: {integrity: sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.50.1': - resolution: {integrity: sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA==} + '@rollup/rollup-win32-x64-gnu@4.52.5': + resolution: {integrity: sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.52.5': + resolution: {integrity: sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==} cpu: [x64] os: [win32] @@ -672,25 +703,28 @@ packages: '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} - '@shikijs/engine-oniguruma@3.12.2': - resolution: {integrity: sha512-hozwnFHsLvujK4/CPVHNo3Bcg2EsnG8krI/ZQ2FlBlCRpPZW4XAEQmEwqegJsypsTAN9ehu2tEYe30lYKSZW/w==} + '@shikijs/engine-oniguruma@3.14.0': + resolution: {integrity: sha512-TNcYTYMbJyy+ZjzWtt0bG5y4YyMIWC2nyePz+CFMWqm+HnZZyy9SWMgo8Z6KBJVIZnx8XUXS8U2afO6Y0g1Oug==} - '@shikijs/langs@3.12.2': - resolution: {integrity: sha512-bVx5PfuZHDSHoBal+KzJZGheFuyH4qwwcwG/n+MsWno5cTlKmaNtTsGzJpHYQ8YPbB5BdEdKU1rga5/6JGY8ww==} + '@shikijs/langs@3.14.0': + resolution: {integrity: sha512-DIB2EQY7yPX1/ZH7lMcwrK5pl+ZkP/xoSpUzg9YC8R+evRCCiSQ7yyrvEyBsMnfZq4eBzLzBlugMyTAf13+pzg==} - '@shikijs/themes@3.12.2': - resolution: {integrity: sha512-fTR3QAgnwYpfGczpIbzPjlRnxyONJOerguQv1iwpyQZ9QXX4qy/XFQqXlf17XTsorxnHoJGbH/LXBvwtqDsF5A==} + '@shikijs/themes@3.14.0': + resolution: {integrity: sha512-fAo/OnfWckNmv4uBoUu6dSlkcBc+SA1xzj5oUSaz5z3KqHtEbUypg/9xxgJARtM6+7RVm0Q6Xnty41xA1ma1IA==} - '@shikijs/types@3.12.2': - resolution: {integrity: sha512-K5UIBzxCyv0YoxN3LMrKB9zuhp1bV+LgewxuVwHdl4Gz5oePoUFrr9EfgJlGlDeXCU1b/yhdnXeuRvAnz8HN8Q==} + '@shikijs/types@3.14.0': + resolution: {integrity: sha512-bQGgC6vrY8U/9ObG1Z/vTro+uclbjjD/uG58RvfxKZVD5p9Yc1ka3tVyEFy7BNJLzxuWyHH5NWynP9zZZS59eQ==} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} - '@sindresorhus/is@7.0.2': - resolution: {integrity: sha512-d9xRovfKNz1SKieM0qJdO+PQonjnnIfSNWfHYnBSJ9hkjm0ZPw6HlxscDXYstp3z+7V2GOFHc+J0CYrYTjqCJw==} + '@sindresorhus/is@7.1.1': + resolution: {integrity: sha512-rO92VvpgMc3kfiTjGT52LEtJ8Yc5kCWhZjLQ3LwlA4pSgPpQO7bVpYXParOD8Jwf+cVQECJo3yP/4I8aZtUQTQ==} engines: {node: '>=18'} + '@standard-schema/spec@1.0.0': + resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} + '@szmarczak/http-timer@5.0.1': resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} engines: {node: '>=14.16'} @@ -714,8 +748,8 @@ packages: '@tybys/wasm-util@0.10.1': resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} - '@types/chai@5.2.2': - resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} @@ -735,17 +769,17 @@ packages: '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - '@types/node@22.18.1': - resolution: {integrity: sha512-rzSDyhn4cYznVG+PCzGe1lwuMYJrcBS1fc3JqSa2PvtABwWo+dZ1ij5OVok3tqfpEBCBoaR4d7upFJk73HRJDw==} + '@types/node@24.9.2': + resolution: {integrity: sha512-uWN8YqxXxqFMX2RqGOrumsKeti4LlmIMIyV0lgut4jx7KQBcBiW6vkDtIBvHnHIquwNfJhk8v2OtmO8zXWHfPA==} '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@typescript-eslint/eslint-plugin@8.43.0': - resolution: {integrity: sha512-8tg+gt7ENL7KewsKMKDHXR1vm8tt9eMxjJBYINf6swonlWgkYn5NwyIgXpbbDxTNU5DgpDFfj95prcTq2clIQQ==} + '@typescript-eslint/eslint-plugin@8.46.2': + resolution: {integrity: sha512-ZGBMToy857/NIPaaCucIUQgqueOiq7HeAKkhlvqVV4lm089zUFW6ikRySx2v+cAhKeUCPuWVHeimyk6Dw1iY3w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.43.0 + '@typescript-eslint/parser': ^8.46.2 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' @@ -756,24 +790,47 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/parser@8.46.2': + resolution: {integrity: sha512-BnOroVl1SgrPLywqxyqdJ4l3S2MsKVLDVxZvjI1Eoe8ev2r3kGDo+PcMihNmDE+6/KjkTubSJnmqGZZjQSBq/g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/project-service@8.43.0': resolution: {integrity: sha512-htB/+D/BIGoNTQYffZw4uM4NzzuolCoaA/BusuSIcC8YjmBYQioew5VUZAYdAETPjeed0hqCaW7EHg+Robq8uw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/project-service@8.46.2': + resolution: {integrity: sha512-PULOLZ9iqwI7hXcmL4fVfIsBi6AN9YxRc0frbvmg8f+4hQAjQ5GYNKK0DIArNo+rOKmR/iBYwkpBmnIwin4wBg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/scope-manager@8.43.0': resolution: {integrity: sha512-daSWlQ87ZhsjrbMLvpuuMAt3y4ba57AuvadcR7f3nl8eS3BjRc8L9VLxFLk92RL5xdXOg6IQ+qKjjqNEimGuAg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/scope-manager@8.46.2': + resolution: {integrity: sha512-LF4b/NmGvdWEHD2H4MsHD8ny6JpiVNDzrSZr3CsckEgCbAGZbYM4Cqxvi9L+WqDMT+51Ozy7lt2M+d0JLEuBqA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/tsconfig-utils@8.43.0': resolution: {integrity: sha512-ALC2prjZcj2YqqL5X/bwWQmHA2em6/94GcbB/KKu5SX3EBDOsqztmmX1kMkvAJHzxk7TazKzJfFiEIagNV3qEA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.43.0': - resolution: {integrity: sha512-qaH1uLBpBuBBuRf8c1mLJ6swOfzCXryhKND04Igr4pckzSEW9JX5Aw9AgW00kwfjWJF0kk0ps9ExKTfvXfw4Qg==} + '@typescript-eslint/tsconfig-utils@8.46.2': + resolution: {integrity: sha512-a7QH6fw4S57+F5y2FIxxSDyi5M4UfGF+Jl1bCGd7+L4KsaUY80GsiF/t0UoRFDHAguKlBaACWJRmdrc6Xfkkag==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/type-utils@8.46.2': + resolution: {integrity: sha512-HbPM4LbaAAt/DjxXaG9yiS9brOOz6fabal4uvUmaUYe6l3K1phQDMQKBRUrr06BQkxkvIZVVHttqiybM9nJsLA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -783,14 +840,24 @@ packages: resolution: {integrity: sha512-vQ2FZaxJpydjSZJKiSW/LJsabFFvV7KgLC5DiLhkBcykhQj8iK9BOaDmQt74nnKdLvceM5xmhaTF+pLekrxEkw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.46.2': + resolution: {integrity: sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.43.0': resolution: {integrity: sha512-7Vv6zlAhPb+cvEpP06WXXy/ZByph9iL6BQRBDj4kmBsW98AqEeQHlj/13X+sZOrKSo9/rNKH4Ul4f6EICREFdw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.43.0': - resolution: {integrity: sha512-S1/tEmkUeeswxd0GGcnwuVQPFWo8NzZTOMxCvw8BX7OMxnNae+i8Tm7REQen/SwUIPoPqfKn7EaZ+YLpiB3k9g==} + '@typescript-eslint/typescript-estree@8.46.2': + resolution: {integrity: sha512-f7rW7LJ2b7Uh2EiQ+7sza6RDZnajbNbemn54Ob6fRwQbgcIn+GWfyuHDHRYgRoZu1P4AayVScrRW+YfbTvPQoQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/utils@8.46.2': + resolution: {integrity: sha512-sExxzucx0Tud5tE0XqR0lT0psBQvEpnpiul9XbGUB1QwpWJJAps1O/Z7hJxLGiZLBKMCutjTzDgmd1muEhBnVg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -800,6 +867,10 @@ packages: resolution: {integrity: sha512-T+S1KqRD4sg/bHfLwrpF/K3gQLBM1n7Rp7OjjikjTEssI2YJzQpi5WXoynOaQ93ERIuq3O8RBTOUYDKszUCEHw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.46.2': + resolution: {integrity: sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typespec/ts-http-runtime@0.3.1': resolution: {integrity: sha512-SnbaqayTVFEA6/tYumdF0UmybY0KHyKwGPBXnyckFlrrKdhWFrL3a2HIPXHjht5ZOElKGcXfD2D63P36btb+ww==} engines: {node: '>=20.0.0'} @@ -899,34 +970,34 @@ packages: cpu: [x64] os: [win32] - '@vitest/expect@3.2.4': - resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} + '@vitest/expect@4.0.6': + resolution: {integrity: sha512-5j8UUlBVhOjhj4lR2Nt9sEV8b4WtbcYh8vnfhTNA2Kn5+smtevzjNq+xlBuVhnFGXiyPPNzGrOVvmyHWkS5QGg==} - '@vitest/mocker@3.2.4': - resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} + '@vitest/mocker@4.0.6': + resolution: {integrity: sha512-3COEIew5HqdzBFEYN9+u0dT3i/NCwppLnO1HkjGfAP1Vs3vti1Hxm/MvcbC4DAn3Szo1M7M3otiAaT83jvqIjA==} peerDependencies: msw: ^2.4.9 - vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 + vite: ^6.0.0 || ^7.0.0-0 peerDependenciesMeta: msw: optional: true vite: optional: true - '@vitest/pretty-format@3.2.4': - resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} + '@vitest/pretty-format@4.0.6': + resolution: {integrity: sha512-4vptgNkLIA1W1Nn5X4x8rLJBzPiJwnPc+awKtfBE5hNMVsoAl/JCCPPzNrbf+L4NKgklsis5Yp2gYa+XAS442g==} - '@vitest/runner@3.2.4': - resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} + '@vitest/runner@4.0.6': + resolution: {integrity: sha512-trPk5qpd7Jj+AiLZbV/e+KiiaGXZ8ECsRxtnPnCrJr9OW2mLB72Cb824IXgxVz/mVU3Aj4VebY+tDTPn++j1Og==} - '@vitest/snapshot@3.2.4': - resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} + '@vitest/snapshot@4.0.6': + resolution: {integrity: sha512-PaYLt7n2YzuvxhulDDu6c9EosiRuIE+FI2ECKs6yvHyhoga+2TBWI8dwBjs+IeuQaMtZTfioa9tj3uZb7nev1g==} - '@vitest/spy@3.2.4': - resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} + '@vitest/spy@4.0.6': + resolution: {integrity: sha512-g9jTUYPV1LtRPRCQfhbMintW7BTQz1n6WXYQYRQ25qkyffA4bjVXjkROokZnv7t07OqfaFKw1lPzqKGk1hmNuQ==} - '@vitest/utils@3.2.4': - resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} + '@vitest/utils@4.0.6': + resolution: {integrity: sha512-bG43VS3iYKrMIZXBo+y8Pti0O7uNju3KvNn6DrQWhQQKcLavMB+0NZfO1/QBAEbq0MaQ3QjNsnnXlGQvsh0Z6A==} abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} @@ -953,8 +1024,8 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - ansis@4.1.0: - resolution: {integrity: sha512-BGcItUBWSMRgOCe+SVZJ+S7yTRG0eGt9cXAHev72yuGcY23hnLA7Bky5L/xLyPINoSN95geovfBkqoTlNZYa7w==} + ansis@4.2.0: + resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} engines: {node: '>=14'} argparse@2.0.1: @@ -992,9 +1063,9 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - ast-kit@2.1.2: - resolution: {integrity: sha512-cl76xfBQM6pztbrFWRnxbrDm9EOqDr1BF6+qQnnDZG2Co2LjyUktkN9GTJfBAfdae+DbT2nJf2nCGAdDDN7W2g==} - engines: {node: '>=20.18.0'} + ast-kit@2.1.3: + resolution: {integrity: sha512-TH+b3Lv6pUjy/Nu0m6A2JULtdzLpmqF9x1Dhj00ZoEiML8qvVA9j1flkzTKNYgdEhWrjDwtWNpyyCUbfQe514g==} + engines: {node: '>=20.19.0'} ast-types-flow@0.0.8: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} @@ -1021,8 +1092,8 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - birpc@2.5.0: - resolution: {integrity: sha512-VSWO/W6nNQdyP520F1mhf+Lc2f8pjGQOtoHHm7Ze8Go1kX7akpVIrtTa0fn+HB0QJEDVacl6aO08YE0PgXfdnQ==} + birpc@2.6.1: + resolution: {integrity: sha512-LPnFhlDpdSH6FJhJyn4M0kFO7vtQ5iPw24FnG0y21q09xC7e8+1LeR31S1MAIrDAHp4m7aas4bEkTDTvMAtebQ==} brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} @@ -1039,6 +1110,10 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + byte-counter@0.1.0: + resolution: {integrity: sha512-jheRLVMeUKrDBjVw2O5+k4EvR4t9wtxHL+bo/LxfkxsVeuGMy3a5SEGgXdAFA4FSzTrU8rQXQIrsZ3oBq5a0pQ==} + engines: {node: '>=20'} + cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -1047,8 +1122,8 @@ packages: resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} engines: {node: '>=14.16'} - cacheable-request@12.0.1: - resolution: {integrity: sha512-Yo9wGIQUaAfIbk+qY0X4cDQgCosecfBe3V9NSyeY4qPC2SAkbCS4Xj79VP8WOzitpJUZKc/wsRCYF5ariDIwkg==} + cacheable-request@13.0.13: + resolution: {integrity: sha512-/5/6xDTN/AZHOn93MNaU7HUSzOL/YJWOwa5hV84ib1mPUtQB/ZTg5bn57UGfdNwXGhgQfcPpJDy+eGiNgGJI1w==} engines: {node: '>=18'} call-bind-apply-helpers@1.0.2: @@ -1070,18 +1145,14 @@ packages: caniuse-lite@1.0.30001741: resolution: {integrity: sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw==} - chai@5.3.3: - resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} + chai@6.2.0: + resolution: {integrity: sha512-aUTnJc/JipRzJrNADXVvpVqi6CO0dn3nx4EVPxijri+fj3LUUDyZQOgVeW54Ob3Y1Xh9Iz8f+CgaCl8v0mn9bA==} engines: {node: '>=18'} chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - check-error@2.1.1: - resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} - engines: {node: '>= 16'} - chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} @@ -1136,13 +1207,18 @@ packages: supports-color: optional: true - decompress-response@6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true - deep-eql@5.0.2: - resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} - engines: {node: '>=6'} + decompress-response@10.0.0: + resolution: {integrity: sha512-oj7KWToJuuxlPr7VV0vabvxEIiqNMo+q0NueIiL3XhtwC6FVOX7Hr1c0C4eD0bmf7Zr+S/dSf2xvkH3Ad6sU3Q==} + engines: {node: '>=20'} deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -1232,8 +1308,8 @@ packages: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} - esbuild@0.25.9: - resolution: {integrity: sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==} + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} engines: {node: '>=18'} hasBin: true @@ -1378,8 +1454,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.35.0: - resolution: {integrity: sha512-QePbBFMJFjgmlE+cXAlbHZbHpdFVS2E/6vzCy7aKlebddvl1vadiC4JFV5u/wqTkNUwEV8WrQi257jf5f06hrg==} + eslint@9.39.0: + resolution: {integrity: sha512-iy2GE3MHrYTL5lrCtMZ0X1KLEKKUjmK0kzwcnefhR66txcEmXZD2YWgR5GNdcEwkNx3a0siYkSvl0vIC+Svjmg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -1439,8 +1515,8 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fast-xml-parser@5.2.5: - resolution: {integrity: sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==} + fast-xml-parser@5.3.0: + resolution: {integrity: sha512-gkWGshjYcQCF+6qtlrqBqELqNqnt4CxruY6UVAWWnqb3DQ6qaNFEIKqzYep1XzHLM/QtrHVCxyPOtTk4LTQ7Aw==} hasBin: true fastq@1.19.1: @@ -1520,6 +1596,9 @@ packages: get-tsconfig@4.10.1: resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} + get-tsconfig@4.13.0: + resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -1532,8 +1611,8 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globals@16.4.0: - resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==} + globals@16.5.0: + resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} engines: {node: '>=18'} globalthis@1.0.4: @@ -1544,8 +1623,8 @@ packages: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} - got@14.4.8: - resolution: {integrity: sha512-vxwU4HuR0BIl+zcT1LYrgBjM+IJjNElOjCzs0aPgHorQyr/V6H6Y73Sn3r3FOlUffvWD+Q5jtRuGWaXkU8Jbhg==} + got@14.6.2: + resolution: {integrity: sha512-bnhvxegqufyxHAmzwCZSscjGLVpw6/NzTXOk2tQVu/b9Q9FeMAgLabYulXEQRwP04UYltnkcZwvBq14fsdqvyw==} engines: {node: '>=20'} graphemer@1.4.0: @@ -1732,16 +1811,13 @@ packages: javascript-natural-sort@0.7.1: resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} - jiti@2.5.1: - resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-tokens@9.0.1: - resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} - js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true @@ -1771,6 +1847,9 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + keyv@5.5.3: + resolution: {integrity: sha512-h0Un1ieD+HUrzBH6dJXhod3ifSghk5Hw/2Y4/KHBziPlZecrFyE9YOTPU6eOs0V9pYl8gOs86fkr/KN8lUX39A==} + language-subtag-registry@0.3.23: resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} @@ -1807,9 +1886,6 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - loupe@3.2.1: - resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} - lowercase-keys@3.0.0: resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -1817,8 +1893,8 @@ packages: lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} - magic-string@0.30.19: - resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} markdown-it@14.1.0: resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} @@ -1847,10 +1923,6 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} - mimic-response@3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - mimic-response@4.0.0: resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -1959,10 +2031,6 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} - pathval@2.0.1: - resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} - engines: {node: '>= 14.16'} - picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -2044,19 +2112,26 @@ packages: resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} engines: {node: '>=14.16'} + responselike@4.0.2: + resolution: {integrity: sha512-cGk8IbWEAnaCpdAt1BHzJ3Ahz5ewDJa0KseTsE3qIRMJ3C698W8psM7byCeWVpd/Ha7FUYzuRVzXoKoM6nRUbA==} + engines: {node: '>=20'} + reusify@1.1.0: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rolldown-plugin-dts@0.15.10: - resolution: {integrity: sha512-8cPVAVQUo9tYAoEpc3jFV9RxSil13hrRRg8cHC9gLXxRMNtWPc1LNMSDXzjyD+5Vny49sDZH77JlXp/vlc4I3g==} + rolldown-plugin-dts@0.17.3: + resolution: {integrity: sha512-8mGnNUVNrqEdTnrlcaDxs4sAZg0No6njO+FuhQd4L56nUbJO1tHxOoKDH3mmMJg7f/BhEj/1KjU5W9kZ9zM/kQ==} engines: {node: '>=20.18.0'} peerDependencies: + '@ts-macro/tsc': ^0.3.6 '@typescript/native-preview': '>=7.0.0-dev.20250601.1' - rolldown: ^1.0.0-beta.9 + rolldown: ^1.0.0-beta.44 typescript: ^5.0.0 - vue-tsc: ~3.0.3 + vue-tsc: ~3.1.0 peerDependenciesMeta: + '@ts-macro/tsc': + optional: true '@typescript/native-preview': optional: true typescript: @@ -2064,13 +2139,13 @@ packages: vue-tsc: optional: true - rolldown@1.0.0-beta.37: - resolution: {integrity: sha512-KiTU6z1kHGaLvqaYjgsrv2LshHqNBn74waRZivlK8WbfN1obZeScVkQPKYunB66E/mxZWv/zyZlCv3xF2t0WOQ==} + rolldown@1.0.0-beta.45: + resolution: {integrity: sha512-iMmuD72XXLf26Tqrv1cryNYLX6NNPLhZ3AmNkSf8+xda0H+yijjGJ+wVT9UdBUHOpKzq9RjKtQKRCWoEKQQBZQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - rollup@4.50.1: - resolution: {integrity: sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==} + rollup@4.52.5: + resolution: {integrity: sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -2099,8 +2174,8 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.7.2: - resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} engines: {node: '>=10'} hasBin: true @@ -2154,8 +2229,8 @@ packages: stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - std-env@3.9.0: - resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + std-env@3.10.0: + resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} stop-iteration-iterator@1.1.0: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} @@ -2185,9 +2260,6 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strip-literal@3.0.0: - resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} - strnum@2.1.1: resolution: {integrity: sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==} @@ -2206,6 +2278,10 @@ packages: resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} engines: {node: ^14.18.0 || >=16.0.0} + tagged-tag@1.0.0: + resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} + engines: {node: '>=20'} + tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} @@ -2219,16 +2295,8 @@ packages: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} - tinypool@1.1.1: - resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} - engines: {node: ^18.0.0 || >=20.0.0} - - tinyrainbow@2.0.0: - resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} - engines: {node: '>=14.0.0'} - - tinyspy@4.0.3: - resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} + tinyrainbow@3.0.3: + resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==} engines: {node: '>=14.0.0'} to-regex-range@5.0.1: @@ -2251,8 +2319,8 @@ packages: tsconfig-paths@3.15.0: resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - tsdown@0.14.2: - resolution: {integrity: sha512-6ThtxVZoTlR5YJov5rYvH8N1+/S/rD/pGfehdCLGznGgbxz+73EASV1tsIIZkLw2n+SXcERqHhcB/OkyxdKv3A==} + tsdown@0.15.12: + resolution: {integrity: sha512-c8VLlQm8/lFrOAg5VMVeN4NAbejZyVQkzd+ErjuaQgJFI/9MhR9ivr0H/CM7UlOF1+ELlF6YaI7sU/4itgGQ8w==} engines: {node: '>=20.19.0'} hasBin: true peerDependencies: @@ -2261,6 +2329,7 @@ packages: typescript: ^5.0.0 unplugin-lightningcss: ^0.4.0 unplugin-unused: ^0.5.0 + unrun: ^0.2.1 peerDependenciesMeta: '@arethetypeswrong/core': optional: true @@ -2272,6 +2341,8 @@ packages: optional: true unplugin-unused: optional: true + unrun: + optional: true tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} @@ -2291,6 +2362,10 @@ packages: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} + type-fest@5.1.0: + resolution: {integrity: sha512-wQ531tuWvB6oK+pchHIu5lHe5f5wpSCqB8Kf4dWQRbOYc9HTge7JL0G4Qd44bh6QuJCccIzL3bugb8GI0MwHrg==} + engines: {node: '>=20'} + typed-array-buffer@1.0.3: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} @@ -2307,22 +2382,22 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typedoc@0.28.12: - resolution: {integrity: sha512-H5ODu4f7N+myG4MfuSp2Vh6wV+WLoZaEYxKPt2y8hmmqNEMVrH69DAjjdmYivF4tP/C2jrIZCZhPalZlTU/ipA==} + typedoc@0.28.14: + resolution: {integrity: sha512-ftJYPvpVfQvFzpkoSfHLkJybdA/geDJ8BGQt/ZnkkhnBYoYW6lBgPQXu6vqLxO4X75dA55hX8Af847H5KXlEFA==} engines: {node: '>= 18', pnpm: '>= 10'} hasBin: true peerDependencies: typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x - typescript-eslint@8.43.0: - resolution: {integrity: sha512-FyRGJKUGvcFekRRcBKFBlAhnp4Ng8rhe8tuvvkR9OiU0gfd4vyvTRQHEckO6VDlH57jbeUQem2IpqPq9kLJH+w==} + typescript-eslint@8.46.2: + resolution: {integrity: sha512-vbw8bOmiuYNdzzV3lsiWv6sRwjyuKJMQqWulBOU7M0RrxedXledX8G8kBbQeiOYDnTfiXz0Y4081E1QMNB6iQg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - typescript@5.9.2: - resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} hasBin: true @@ -2336,8 +2411,8 @@ packages: unconfig@7.3.3: resolution: {integrity: sha512-QCkQoOnJF8L107gxfHL0uavn7WD9b3dpBcFX6HtfQYmjw2YzWxGuFQ0N0J6tE9oguCBJn9KOvfqYDCMPHIZrBA==} - undici-types@6.21.0: - resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} undici@5.29.0: resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} @@ -2359,13 +2434,8 @@ packages: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true - vite-node@3.2.4: - resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} - hasBin: true - - vite@7.1.5: - resolution: {integrity: sha512-4cKBO9wR75r0BeIWWWId9XK9Lj6La5X846Zw9dFfzMRw38IlTk2iCcUt6hsyiDRcPidc55ZParFYDXi0nXOeLQ==} + vite@7.1.12: + resolution: {integrity: sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -2404,16 +2474,18 @@ packages: yaml: optional: true - vitest@3.2.4: - resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + vitest@4.0.6: + resolution: {integrity: sha512-gR7INfiVRwnEOkCk47faros/9McCZMp5LM+OMNWGLaDBSvJxIzwjgNFufkuePBNaesGRnLmNfW+ddbUJRZn0nQ==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/debug': ^4.1.12 - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.2.4 - '@vitest/ui': 3.2.4 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.0.6 + '@vitest/browser-preview': 4.0.6 + '@vitest/browser-webdriverio': 4.0.6 + '@vitest/ui': 4.0.6 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -2423,7 +2495,11 @@ packages: optional: true '@types/node': optional: true - '@vitest/browser': + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': optional: true '@vitest/ui': optional: true @@ -2487,7 +2563,7 @@ packages: snapshots: - '@actions/cache@4.0.5': + '@actions/cache@4.1.0': dependencies: '@actions/core': 1.11.1 '@actions/exec': 1.1.1 @@ -2496,7 +2572,7 @@ snapshots: '@actions/io': 1.1.3 '@azure/abort-controller': 1.1.0 '@azure/ms-rest-js': 2.7.0 - '@azure/storage-blob': 12.28.0 + '@azure/storage-blob': 12.29.1 '@protobuf-ts/runtime-rpc': 2.11.1 semver: 6.3.1 transitivePeerDependencies: @@ -2599,7 +2675,7 @@ snapshots: '@azure/core-xml@1.5.0': dependencies: - fast-xml-parser: 5.2.5 + fast-xml-parser: 5.3.0 tslib: 2.8.1 '@azure/logger@1.3.0': @@ -2623,7 +2699,7 @@ snapshots: - encoding - supports-color - '@azure/storage-blob@12.28.0': + '@azure/storage-blob@12.29.1': dependencies: '@azure/abort-controller': 2.1.2 '@azure/core-auth': 1.10.1 @@ -2636,13 +2712,13 @@ snapshots: '@azure/core-util': 1.13.1 '@azure/core-xml': 1.5.0 '@azure/logger': 1.3.0 - '@azure/storage-common': 12.0.0 + '@azure/storage-common': 12.1.1 events: 3.3.0 tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@azure/storage-common@12.0.0': + '@azure/storage-common@12.1.1': dependencies: '@azure/abort-controller': 2.1.2 '@azure/core-auth': 1.10.1 @@ -2670,16 +2746,30 @@ snapshots: '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 + '@babel/generator@7.28.5': + dependencies: + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + '@babel/helper-globals@7.28.0': {} '@babel/helper-string-parser@7.27.1': {} '@babel/helper-validator-identifier@7.27.1': {} + '@babel/helper-validator-identifier@7.28.5': {} + '@babel/parser@7.28.4': dependencies: '@babel/types': 7.28.4 + '@babel/parser@7.28.5': + dependencies: + '@babel/types': 7.28.5 + '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 @@ -2694,7 +2784,7 @@ snapshots: '@babel/parser': 7.28.4 '@babel/template': 7.27.2 '@babel/types': 7.28.4 - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -2703,129 +2793,147 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 + '@babel/types@7.28.5': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + '@emnapi/core@1.5.0': dependencies: '@emnapi/wasi-threads': 1.1.0 tslib: 2.8.1 optional: true + '@emnapi/core@1.6.0': + dependencies: + '@emnapi/wasi-threads': 1.1.0 + tslib: 2.8.1 + optional: true + '@emnapi/runtime@1.5.0': dependencies: tslib: 2.8.1 optional: true + '@emnapi/runtime@1.6.0': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/wasi-threads@1.1.0': dependencies: tslib: 2.8.1 optional: true - '@esbuild/aix-ppc64@0.25.9': + '@esbuild/aix-ppc64@0.25.12': optional: true - '@esbuild/android-arm64@0.25.9': + '@esbuild/android-arm64@0.25.12': optional: true - '@esbuild/android-arm@0.25.9': + '@esbuild/android-arm@0.25.12': optional: true - '@esbuild/android-x64@0.25.9': + '@esbuild/android-x64@0.25.12': optional: true - '@esbuild/darwin-arm64@0.25.9': + '@esbuild/darwin-arm64@0.25.12': optional: true - '@esbuild/darwin-x64@0.25.9': + '@esbuild/darwin-x64@0.25.12': optional: true - '@esbuild/freebsd-arm64@0.25.9': + '@esbuild/freebsd-arm64@0.25.12': optional: true - '@esbuild/freebsd-x64@0.25.9': + '@esbuild/freebsd-x64@0.25.12': optional: true - '@esbuild/linux-arm64@0.25.9': + '@esbuild/linux-arm64@0.25.12': optional: true - '@esbuild/linux-arm@0.25.9': + '@esbuild/linux-arm@0.25.12': optional: true - '@esbuild/linux-ia32@0.25.9': + '@esbuild/linux-ia32@0.25.12': optional: true - '@esbuild/linux-loong64@0.25.9': + '@esbuild/linux-loong64@0.25.12': optional: true - '@esbuild/linux-mips64el@0.25.9': + '@esbuild/linux-mips64el@0.25.12': optional: true - '@esbuild/linux-ppc64@0.25.9': + '@esbuild/linux-ppc64@0.25.12': optional: true - '@esbuild/linux-riscv64@0.25.9': + '@esbuild/linux-riscv64@0.25.12': optional: true - '@esbuild/linux-s390x@0.25.9': + '@esbuild/linux-s390x@0.25.12': optional: true - '@esbuild/linux-x64@0.25.9': + '@esbuild/linux-x64@0.25.12': optional: true - '@esbuild/netbsd-arm64@0.25.9': + '@esbuild/netbsd-arm64@0.25.12': optional: true - '@esbuild/netbsd-x64@0.25.9': + '@esbuild/netbsd-x64@0.25.12': optional: true - '@esbuild/openbsd-arm64@0.25.9': + '@esbuild/openbsd-arm64@0.25.12': optional: true - '@esbuild/openbsd-x64@0.25.9': + '@esbuild/openbsd-x64@0.25.12': optional: true - '@esbuild/openharmony-arm64@0.25.9': + '@esbuild/openharmony-arm64@0.25.12': optional: true - '@esbuild/sunos-x64@0.25.9': + '@esbuild/sunos-x64@0.25.12': optional: true - '@esbuild/win32-arm64@0.25.9': + '@esbuild/win32-arm64@0.25.12': optional: true - '@esbuild/win32-ia32@0.25.9': + '@esbuild/win32-ia32@0.25.12': optional: true - '@esbuild/win32-x64@0.25.9': + '@esbuild/win32-x64@0.25.12': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@9.35.0(jiti@2.5.1))': + '@eslint-community/eslint-utils@4.9.0(eslint@9.39.0(jiti@2.6.1))': dependencies: - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.39.0(jiti@2.6.1) eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.12.1': {} + '@eslint-community/regexpp@4.12.2': {} - '@eslint/compat@1.3.2(eslint@9.35.0(jiti@2.5.1))': + '@eslint/compat@1.3.2(eslint@9.39.0(jiti@2.6.1))': optionalDependencies: - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.39.0(jiti@2.6.1) - '@eslint/config-array@0.21.0': + '@eslint/config-array@0.21.1': dependencies: - '@eslint/object-schema': 2.1.6 - debug: 4.4.1 + '@eslint/object-schema': 2.1.7 + debug: 4.4.3 minimatch: 3.1.2 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.3.1': {} + '@eslint/config-helpers@0.4.2': + dependencies: + '@eslint/core': 0.17.0 - '@eslint/core@0.15.2': + '@eslint/core@0.17.0': dependencies: '@types/json-schema': 7.0.15 '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 - debug: 4.4.1 + debug: 4.4.3 espree: 10.4.0 globals: 14.0.0 ignore: 5.3.2 @@ -2838,21 +2946,23 @@ snapshots: '@eslint/js@9.35.0': {} - '@eslint/object-schema@2.1.6': {} + '@eslint/js@9.39.0': {} + + '@eslint/object-schema@2.1.7': {} - '@eslint/plugin-kit@0.3.5': + '@eslint/plugin-kit@0.4.1': dependencies: - '@eslint/core': 0.15.2 + '@eslint/core': 0.17.0 levn: 0.4.1 '@fastify/busboy@2.1.1': {} - '@gerrit0/mini-shiki@3.12.2': + '@gerrit0/mini-shiki@3.14.0': dependencies: - '@shikijs/engine-oniguruma': 3.12.2 - '@shikijs/langs': 3.12.2 - '@shikijs/themes': 3.12.2 - '@shikijs/types': 3.12.2 + '@shikijs/engine-oniguruma': 3.14.0 + '@shikijs/langs': 3.14.0 + '@shikijs/themes': 3.14.0 + '@shikijs/types': 3.14.0 '@shikijs/vscode-textmate': 10.0.2 '@github/browserslist-config@1.0.0': {} @@ -2882,6 +2992,8 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@keyv/serialize@1.1.1': {} + '@napi-rs/wasm-runtime@0.2.12': dependencies: '@emnapi/core': 1.5.0 @@ -2889,10 +3001,10 @@ snapshots: '@tybys/wasm-util': 0.10.1 optional: true - '@napi-rs/wasm-runtime@1.0.4': + '@napi-rs/wasm-runtime@1.0.7': dependencies: - '@emnapi/core': 1.5.0 - '@emnapi/runtime': 1.5.0 + '@emnapi/core': 1.6.0 + '@emnapi/runtime': 1.6.0 '@tybys/wasm-util': 0.10.1 optional: true @@ -2908,9 +3020,7 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.19.1 - '@oxc-project/runtime@0.87.0': {} - - '@oxc-project/types@0.87.0': {} + '@oxc-project/types@0.95.0': {} '@pkgr/core@0.2.9': {} @@ -2924,140 +3034,145 @@ snapshots: dependencies: quansync: 0.2.11 - '@rolldown/binding-android-arm64@1.0.0-beta.37': + '@rolldown/binding-android-arm64@1.0.0-beta.45': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-beta.37': + '@rolldown/binding-darwin-arm64@1.0.0-beta.45': optional: true - '@rolldown/binding-darwin-x64@1.0.0-beta.37': + '@rolldown/binding-darwin-x64@1.0.0-beta.45': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-beta.37': + '@rolldown/binding-freebsd-x64@1.0.0-beta.45': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.37': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.45': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.37': + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.45': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-beta.37': + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.45': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-beta.37': + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.45': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-beta.37': + '@rolldown/binding-linux-x64-musl@1.0.0-beta.45': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-beta.37': + '@rolldown/binding-openharmony-arm64@1.0.0-beta.45': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-beta.37': + '@rolldown/binding-wasm32-wasi@1.0.0-beta.45': dependencies: - '@napi-rs/wasm-runtime': 1.0.4 + '@napi-rs/wasm-runtime': 1.0.7 optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.37': + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.45': optional: true - '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.37': + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.45': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-beta.37': + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.45': optional: true - '@rolldown/pluginutils@1.0.0-beta.37': {} + '@rolldown/pluginutils@1.0.0-beta.45': {} + + '@rollup/rollup-android-arm-eabi@4.52.5': + optional: true - '@rollup/rollup-android-arm-eabi@4.50.1': + '@rollup/rollup-android-arm64@4.52.5': optional: true - '@rollup/rollup-android-arm64@4.50.1': + '@rollup/rollup-darwin-arm64@4.52.5': optional: true - '@rollup/rollup-darwin-arm64@4.50.1': + '@rollup/rollup-darwin-x64@4.52.5': optional: true - '@rollup/rollup-darwin-x64@4.50.1': + '@rollup/rollup-freebsd-arm64@4.52.5': optional: true - '@rollup/rollup-freebsd-arm64@4.50.1': + '@rollup/rollup-freebsd-x64@4.52.5': optional: true - '@rollup/rollup-freebsd-x64@4.50.1': + '@rollup/rollup-linux-arm-gnueabihf@4.52.5': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.50.1': + '@rollup/rollup-linux-arm-musleabihf@4.52.5': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.50.1': + '@rollup/rollup-linux-arm64-gnu@4.52.5': optional: true - '@rollup/rollup-linux-arm64-gnu@4.50.1': + '@rollup/rollup-linux-arm64-musl@4.52.5': optional: true - '@rollup/rollup-linux-arm64-musl@4.50.1': + '@rollup/rollup-linux-loong64-gnu@4.52.5': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.50.1': + '@rollup/rollup-linux-ppc64-gnu@4.52.5': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.50.1': + '@rollup/rollup-linux-riscv64-gnu@4.52.5': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.50.1': + '@rollup/rollup-linux-riscv64-musl@4.52.5': optional: true - '@rollup/rollup-linux-riscv64-musl@4.50.1': + '@rollup/rollup-linux-s390x-gnu@4.52.5': optional: true - '@rollup/rollup-linux-s390x-gnu@4.50.1': + '@rollup/rollup-linux-x64-gnu@4.52.5': optional: true - '@rollup/rollup-linux-x64-gnu@4.50.1': + '@rollup/rollup-linux-x64-musl@4.52.5': optional: true - '@rollup/rollup-linux-x64-musl@4.50.1': + '@rollup/rollup-openharmony-arm64@4.52.5': optional: true - '@rollup/rollup-openharmony-arm64@4.50.1': + '@rollup/rollup-win32-arm64-msvc@4.52.5': optional: true - '@rollup/rollup-win32-arm64-msvc@4.50.1': + '@rollup/rollup-win32-ia32-msvc@4.52.5': optional: true - '@rollup/rollup-win32-ia32-msvc@4.50.1': + '@rollup/rollup-win32-x64-gnu@4.52.5': optional: true - '@rollup/rollup-win32-x64-msvc@4.50.1': + '@rollup/rollup-win32-x64-msvc@4.52.5': optional: true '@rtsao/scc@1.1.0': {} '@sec-ant/readable-stream@0.4.1': {} - '@shikijs/engine-oniguruma@3.12.2': + '@shikijs/engine-oniguruma@3.14.0': dependencies: - '@shikijs/types': 3.12.2 + '@shikijs/types': 3.14.0 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@3.12.2': + '@shikijs/langs@3.14.0': dependencies: - '@shikijs/types': 3.12.2 + '@shikijs/types': 3.14.0 - '@shikijs/themes@3.12.2': + '@shikijs/themes@3.14.0': dependencies: - '@shikijs/types': 3.12.2 + '@shikijs/types': 3.14.0 - '@shikijs/types@3.12.2': + '@shikijs/types@3.14.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 '@shikijs/vscode-textmate@10.0.2': {} - '@sindresorhus/is@7.0.2': {} + '@sindresorhus/is@7.1.1': {} + + '@standard-schema/spec@1.0.0': {} '@szmarczak/http-timer@5.0.1': dependencies: @@ -3080,9 +3195,10 @@ snapshots: tslib: 2.8.1 optional: true - '@types/chai@5.2.2': + '@types/chai@5.2.3': dependencies: '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 '@types/deep-eql@4.0.2': {} @@ -3098,47 +3214,85 @@ snapshots: '@types/json5@0.0.29': {} - '@types/node@22.18.1': + '@types/node@24.9.2': dependencies: - undici-types: 6.21.0 + undici-types: 7.16.0 '@types/unist@3.0.3': {} - '@typescript-eslint/eslint-plugin@8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.43.0(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/scope-manager': 8.43.0 - '@typescript-eslint/type-utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/visitor-keys': 8.43.0 - eslint: 9.35.0(jiti@2.5.1) + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.43.0(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.46.2 + '@typescript-eslint/type-utils': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.46.2 + eslint: 9.39.0(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.9.2) - typescript: 5.9.2 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.46.2 + '@typescript-eslint/type-utils': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.46.2 + eslint: 9.39.0(jiti@2.6.1) + graphemer: 1.4.0 + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.43.0(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.43.0 '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) + '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.43.0 - debug: 4.4.1 - eslint: 9.35.0(jiti@2.5.1) - typescript: 5.9.2 + debug: 4.4.3 + eslint: 9.39.0(jiti@2.6.1) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.43.0(typescript@5.9.2)': + '@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.2) + '@typescript-eslint/scope-manager': 8.46.2 + '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.46.2 + debug: 4.4.3 + eslint: 9.39.0(jiti@2.6.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.43.0(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.3) '@typescript-eslint/types': 8.43.0 - debug: 4.4.1 - typescript: 5.9.2 + debug: 4.4.3 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.46.2(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.46.2(typescript@5.9.3) + '@typescript-eslint/types': 8.46.2 + debug: 4.4.3 + typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -3147,48 +3301,75 @@ snapshots: '@typescript-eslint/types': 8.43.0 '@typescript-eslint/visitor-keys': 8.43.0 - '@typescript-eslint/tsconfig-utils@8.43.0(typescript@5.9.2)': + '@typescript-eslint/scope-manager@8.46.2': dependencies: - typescript: 5.9.2 + '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/visitor-keys': 8.46.2 - '@typescript-eslint/type-utils@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/tsconfig-utils@8.43.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - debug: 4.4.1 - eslint: 9.35.0(jiti@2.5.1) - ts-api-utils: 2.1.0(typescript@5.9.2) - typescript: 5.9.2 + typescript: 5.9.3 + + '@typescript-eslint/tsconfig-utils@8.46.2(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@typescript-eslint/type-utils@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + debug: 4.4.3 + eslint: 9.39.0(jiti@2.6.1) + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color '@typescript-eslint/types@8.43.0': {} - '@typescript-eslint/typescript-estree@8.43.0(typescript@5.9.2)': + '@typescript-eslint/types@8.46.2': {} + + '@typescript-eslint/typescript-estree@8.43.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.43.0(typescript@5.9.2) - '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.2) + '@typescript-eslint/project-service': 8.43.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.43.0(typescript@5.9.3) '@typescript-eslint/types': 8.43.0 '@typescript-eslint/visitor-keys': 8.43.0 - debug: 4.4.1 + debug: 4.4.3 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.7.2 - ts-api-utils: 2.1.0(typescript@5.9.2) - typescript: 5.9.2 + semver: 7.7.3 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/typescript-estree@8.46.2(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.35.0(jiti@2.5.1)) - '@typescript-eslint/scope-manager': 8.43.0 - '@typescript-eslint/types': 8.43.0 - '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) - eslint: 9.35.0(jiti@2.5.1) - typescript: 5.9.2 + '@typescript-eslint/project-service': 8.46.2(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.46.2(typescript@5.9.3) + '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/visitor-keys': 8.46.2 + debug: 4.4.3 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.3 + ts-api-utils: 2.1.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.0(jiti@2.6.1)) + '@typescript-eslint/scope-manager': 8.46.2 + '@typescript-eslint/types': 8.46.2 + '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) + eslint: 9.39.0(jiti@2.6.1) + typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -3197,6 +3378,11 @@ snapshots: '@typescript-eslint/types': 8.43.0 eslint-visitor-keys: 4.2.1 + '@typescript-eslint/visitor-keys@8.46.2': + dependencies: + '@typescript-eslint/types': 8.46.2 + eslint-visitor-keys: 4.2.1 + '@typespec/ts-http-runtime@0.3.1': dependencies: http-proxy-agent: 7.0.2 @@ -3264,47 +3450,44 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vitest/expect@3.2.4': + '@vitest/expect@4.0.6': dependencies: - '@types/chai': 5.2.2 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.3.3 - tinyrainbow: 2.0.0 + '@standard-schema/spec': 1.0.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.0.6 + '@vitest/utils': 4.0.6 + chai: 6.2.0 + tinyrainbow: 3.0.3 - '@vitest/mocker@3.2.4(vite@7.1.5(@types/node@22.18.1)(jiti@2.5.1)(yaml@2.8.1))': + '@vitest/mocker@4.0.6(vite@7.1.12(@types/node@24.9.2)(jiti@2.6.1)(yaml@2.8.1))': dependencies: - '@vitest/spy': 3.2.4 + '@vitest/spy': 4.0.6 estree-walker: 3.0.3 - magic-string: 0.30.19 + magic-string: 0.30.21 optionalDependencies: - vite: 7.1.5(@types/node@22.18.1)(jiti@2.5.1)(yaml@2.8.1) + vite: 7.1.12(@types/node@24.9.2)(jiti@2.6.1)(yaml@2.8.1) - '@vitest/pretty-format@3.2.4': + '@vitest/pretty-format@4.0.6': dependencies: - tinyrainbow: 2.0.0 + tinyrainbow: 3.0.3 - '@vitest/runner@3.2.4': + '@vitest/runner@4.0.6': dependencies: - '@vitest/utils': 3.2.4 + '@vitest/utils': 4.0.6 pathe: 2.0.3 - strip-literal: 3.0.0 - '@vitest/snapshot@3.2.4': + '@vitest/snapshot@4.0.6': dependencies: - '@vitest/pretty-format': 3.2.4 - magic-string: 0.30.19 + '@vitest/pretty-format': 4.0.6 + magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@3.2.4': - dependencies: - tinyspy: 4.0.3 + '@vitest/spy@4.0.6': {} - '@vitest/utils@3.2.4': + '@vitest/utils@4.0.6': dependencies: - '@vitest/pretty-format': 3.2.4 - loupe: 3.2.1 - tinyrainbow: 2.0.0 + '@vitest/pretty-format': 4.0.6 + tinyrainbow: 3.0.3 abort-controller@3.0.0: dependencies: @@ -3329,7 +3512,7 @@ snapshots: dependencies: color-convert: 2.0.1 - ansis@4.1.0: {} + ansis@4.2.0: {} argparse@2.0.1: {} @@ -3387,9 +3570,9 @@ snapshots: assertion-error@2.0.1: {} - ast-kit@2.1.2: + ast-kit@2.1.3: dependencies: - '@babel/parser': 7.28.4 + '@babel/parser': 7.28.5 pathe: 2.0.3 ast-types-flow@0.0.8: {} @@ -3408,7 +3591,7 @@ snapshots: balanced-match@1.0.2: {} - birpc@2.5.0: {} + birpc@2.6.1: {} brace-expansion@1.1.12: dependencies: @@ -3430,16 +3613,18 @@ snapshots: node-releases: 2.0.21 update-browserslist-db: 1.1.3(browserslist@4.25.4) + byte-counter@0.1.0: {} + cac@6.7.14: {} cacheable-lookup@7.0.0: {} - cacheable-request@12.0.1: + cacheable-request@13.0.13: dependencies: '@types/http-cache-semantics': 4.0.4 get-stream: 9.0.1 http-cache-semantics: 4.2.0 - keyv: 4.5.4 + keyv: 5.5.3 mimic-response: 4.0.0 normalize-url: 8.1.0 responselike: 3.0.0 @@ -3465,21 +3650,13 @@ snapshots: caniuse-lite@1.0.30001741: {} - chai@5.3.3: - dependencies: - assertion-error: 2.0.1 - check-error: 2.1.1 - deep-eql: 5.0.2 - loupe: 3.2.1 - pathval: 2.0.1 + chai@6.2.0: {} chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - check-error@2.1.1: {} - chokidar@4.0.3: dependencies: readdirp: 4.1.2 @@ -3530,11 +3707,13 @@ snapshots: dependencies: ms: 2.1.3 - decompress-response@6.0.0: + debug@4.4.3: dependencies: - mimic-response: 3.1.0 + ms: 2.1.3 - deep-eql@5.0.2: {} + decompress-response@10.0.0: + dependencies: + mimic-response: 4.0.0 deep-is@0.1.4: {} @@ -3662,34 +3841,34 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 - esbuild@0.25.9: + esbuild@0.25.12: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.9 - '@esbuild/android-arm': 0.25.9 - '@esbuild/android-arm64': 0.25.9 - '@esbuild/android-x64': 0.25.9 - '@esbuild/darwin-arm64': 0.25.9 - '@esbuild/darwin-x64': 0.25.9 - '@esbuild/freebsd-arm64': 0.25.9 - '@esbuild/freebsd-x64': 0.25.9 - '@esbuild/linux-arm': 0.25.9 - '@esbuild/linux-arm64': 0.25.9 - '@esbuild/linux-ia32': 0.25.9 - '@esbuild/linux-loong64': 0.25.9 - '@esbuild/linux-mips64el': 0.25.9 - '@esbuild/linux-ppc64': 0.25.9 - '@esbuild/linux-riscv64': 0.25.9 - '@esbuild/linux-s390x': 0.25.9 - '@esbuild/linux-x64': 0.25.9 - '@esbuild/netbsd-arm64': 0.25.9 - '@esbuild/netbsd-x64': 0.25.9 - '@esbuild/openbsd-arm64': 0.25.9 - '@esbuild/openbsd-x64': 0.25.9 - '@esbuild/openharmony-arm64': 0.25.9 - '@esbuild/sunos-x64': 0.25.9 - '@esbuild/win32-arm64': 0.25.9 - '@esbuild/win32-ia32': 0.25.9 - '@esbuild/win32-x64': 0.25.9 + '@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 escalade@3.2.0: {} @@ -3697,9 +3876,9 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@10.1.8(eslint@9.35.0(jiti@2.5.1)): + eslint-config-prettier@10.1.8(eslint@9.39.0(jiti@2.6.1)): dependencies: - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.39.0(jiti@2.6.1) eslint-import-context@0.1.9(unrs-resolver@1.11.1): dependencies: @@ -3716,10 +3895,10 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@4.4.4(eslint-plugin-import@2.32.0)(eslint@9.35.0(jiti@2.5.1)): + eslint-import-resolver-typescript@4.4.4(eslint-plugin-import@2.32.0)(eslint@9.39.0(jiti@2.6.1)): dependencies: debug: 4.4.1 - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.39.0(jiti@2.6.1) eslint-import-context: 0.1.9(unrs-resolver@1.11.1) get-tsconfig: 4.10.1 is-bun-module: 2.0.0 @@ -3727,77 +3906,88 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.5.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.5.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.43.0(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.0(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - eslint: 9.35.0(jiti@2.5.1) + '@typescript-eslint/parser': 8.43.0(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import@2.32.0)(eslint@9.35.0(jiti@2.5.1)) + eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import@2.32.0)(eslint@9.39.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-plugin-escompat@3.11.4(eslint@9.35.0(jiti@2.5.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.0(jiti@2.6.1)): + dependencies: + debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.0(jiti@2.6.1) + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import@2.32.0)(eslint@9.39.0(jiti@2.6.1)) + transitivePeerDependencies: + - supports-color + + eslint-plugin-escompat@3.11.4(eslint@9.39.0(jiti@2.6.1)): dependencies: browserslist: 4.25.4 - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.39.0(jiti@2.6.1) - eslint-plugin-eslint-comments@3.2.0(eslint@9.35.0(jiti@2.5.1)): + eslint-plugin-eslint-comments@3.2.0(eslint@9.39.0(jiti@2.6.1)): dependencies: escape-string-regexp: 1.0.5 - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.39.0(jiti@2.6.1) ignore: 5.3.2 - eslint-plugin-filenames@1.3.2(eslint@9.35.0(jiti@2.5.1)): + eslint-plugin-filenames@1.3.2(eslint@9.39.0(jiti@2.6.1)): dependencies: - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.39.0(jiti@2.6.1) lodash.camelcase: 4.3.0 lodash.kebabcase: 4.1.1 lodash.snakecase: 4.1.1 lodash.upperfirst: 4.3.1 - eslint-plugin-github@6.0.0(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.5.1)): + eslint-plugin-github@6.0.0(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.0(jiti@2.6.1)): dependencies: - '@eslint/compat': 1.3.2(eslint@9.35.0(jiti@2.5.1)) + '@eslint/compat': 1.3.2(eslint@9.39.0(jiti@2.6.1)) '@eslint/eslintrc': 3.3.1 '@eslint/js': 9.35.0 '@github/browserslist-config': 1.0.0 - '@typescript-eslint/eslint-plugin': 8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/eslint-plugin': 8.46.2(@typescript-eslint/parser@8.43.0(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.43.0(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) aria-query: 5.3.2 - eslint: 9.35.0(jiti@2.5.1) - eslint-config-prettier: 10.1.8(eslint@9.35.0(jiti@2.5.1)) - eslint-plugin-escompat: 3.11.4(eslint@9.35.0(jiti@2.5.1)) - eslint-plugin-eslint-comments: 3.2.0(eslint@9.35.0(jiti@2.5.1)) - eslint-plugin-filenames: 1.3.2(eslint@9.35.0(jiti@2.5.1)) - eslint-plugin-i18n-text: 1.0.1(eslint@9.35.0(jiti@2.5.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.5.1)) - eslint-plugin-jsx-a11y: 6.10.2(eslint@9.35.0(jiti@2.5.1)) + eslint: 9.39.0(jiti@2.6.1) + eslint-config-prettier: 10.1.8(eslint@9.39.0(jiti@2.6.1)) + eslint-plugin-escompat: 3.11.4(eslint@9.39.0(jiti@2.6.1)) + eslint-plugin-eslint-comments: 3.2.0(eslint@9.39.0(jiti@2.6.1)) + eslint-plugin-filenames: 1.3.2(eslint@9.39.0(jiti@2.6.1)) + eslint-plugin-i18n-text: 1.0.1(eslint@9.39.0(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.0(jiti@2.6.1)) + eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.0(jiti@2.6.1)) eslint-plugin-no-only-tests: 3.3.0 - eslint-plugin-prettier: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1))(prettier@3.6.2) + eslint-plugin-prettier: 5.5.4(eslint-config-prettier@10.1.8(eslint@9.39.0(jiti@2.6.1)))(eslint@9.39.0(jiti@2.6.1))(prettier@3.6.2) eslint-rule-documentation: 1.0.23 - globals: 16.4.0 + globals: 16.5.0 jsx-ast-utils: 3.3.5 prettier: 3.6.2 svg-element-attributes: 1.3.1 - typescript: 5.9.2 - typescript-eslint: 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + typescript: 5.9.3 + typescript-eslint: 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - '@types/eslint' - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-i18n-text@1.0.1(eslint@9.35.0(jiti@2.5.1)): + eslint-plugin-i18n-text@1.0.1(eslint@9.39.0(jiti@2.6.1)): dependencies: - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.39.0(jiti@2.6.1) - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.5.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.43.0(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.0(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -3806,9 +3996,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.39.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.35.0(jiti@2.5.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.43.0(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.0(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -3820,13 +4010,42 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/parser': 8.43.0(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsx-a11y@6.10.2(eslint@9.35.0(jiti@2.5.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.0(jiti@2.6.1)): + 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: 9.39.0(jiti@2.6.1) + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.0(jiti@2.6.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 + optionalDependencies: + '@typescript-eslint/parser': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.0(jiti@2.6.1)): dependencies: aria-query: 5.3.2 array-includes: 3.1.9 @@ -3836,7 +4055,7 @@ snapshots: axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.39.0(jiti@2.6.1) hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -3847,14 +4066,14 @@ snapshots: eslint-plugin-no-only-tests@3.3.0: {} - eslint-plugin-prettier@5.5.4(eslint-config-prettier@10.1.8(eslint@9.35.0(jiti@2.5.1)))(eslint@9.35.0(jiti@2.5.1))(prettier@3.6.2): + eslint-plugin-prettier@5.5.4(eslint-config-prettier@10.1.8(eslint@9.39.0(jiti@2.6.1)))(eslint@9.39.0(jiti@2.6.1))(prettier@3.6.2): dependencies: - eslint: 9.35.0(jiti@2.5.1) + eslint: 9.39.0(jiti@2.6.1) prettier: 3.6.2 prettier-linter-helpers: 1.0.0 synckit: 0.11.11 optionalDependencies: - eslint-config-prettier: 10.1.8(eslint@9.35.0(jiti@2.5.1)) + eslint-config-prettier: 10.1.8(eslint@9.39.0(jiti@2.6.1)) eslint-rule-documentation@1.0.23: {} @@ -3867,25 +4086,24 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.35.0(jiti@2.5.1): + eslint@9.39.0(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.35.0(jiti@2.5.1)) - '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.21.0 - '@eslint/config-helpers': 0.3.1 - '@eslint/core': 0.15.2 + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.0(jiti@2.6.1)) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.21.1 + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.35.0 - '@eslint/plugin-kit': 0.3.5 + '@eslint/js': 9.39.0 + '@eslint/plugin-kit': 0.4.1 '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.8 - '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.1 + debug: 4.4.3 escape-string-regexp: 4.0.0 eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 @@ -3905,7 +4123,7 @@ snapshots: natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: - jiti: 2.5.1 + jiti: 2.6.1 transitivePeerDependencies: - supports-color @@ -3953,7 +4171,7 @@ snapshots: fast-levenshtein@2.0.6: {} - fast-xml-parser@5.2.5: + fast-xml-parser@5.3.0: dependencies: strnum: 2.1.1 @@ -4049,6 +4267,10 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + get-tsconfig@4.13.0: + dependencies: + resolve-pkg-maps: 1.0.0 + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -4059,7 +4281,7 @@ snapshots: globals@14.0.0: {} - globals@16.4.0: {} + globals@16.5.0: {} globalthis@1.0.4: dependencies: @@ -4068,18 +4290,20 @@ snapshots: gopd@1.2.0: {} - got@14.4.8: + got@14.6.2: dependencies: - '@sindresorhus/is': 7.0.2 + '@sindresorhus/is': 7.1.1 '@szmarczak/http-timer': 5.0.1 + byte-counter: 0.1.0 cacheable-lookup: 7.0.0 - cacheable-request: 12.0.1 - decompress-response: 6.0.0 + cacheable-request: 13.0.13 + decompress-response: 10.0.0 form-data-encoder: 4.1.0 http2-wrapper: 2.2.1 + keyv: 5.5.3 lowercase-keys: 3.0.0 p-cancelable: 4.0.1 - responselike: 3.0.0 + responselike: 4.0.2 type-fest: 4.41.0 graphemer@1.4.0: {} @@ -4113,7 +4337,7 @@ snapshots: http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.4 - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -4125,7 +4349,7 @@ snapshots: https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.4 - debug: 4.4.1 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -4171,7 +4395,7 @@ snapshots: is-bun-module@2.0.0: dependencies: - semver: 7.7.2 + semver: 7.7.3 is-callable@1.2.7: {} @@ -4265,12 +4489,10 @@ snapshots: javascript-natural-sort@0.7.1: {} - jiti@2.5.1: {} + jiti@2.6.1: {} js-tokens@4.0.0: {} - js-tokens@9.0.1: {} - js-yaml@4.1.0: dependencies: argparse: 2.0.1 @@ -4298,6 +4520,10 @@ snapshots: dependencies: json-buffer: 3.0.1 + keyv@5.5.3: + dependencies: + '@keyv/serialize': 1.1.1 + language-subtag-registry@0.3.23: {} language-tags@1.0.9: @@ -4329,13 +4555,11 @@ snapshots: lodash@4.17.21: {} - loupe@3.2.1: {} - lowercase-keys@3.0.0: {} lunr@2.3.9: {} - magic-string@0.30.19: + magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -4365,8 +4589,6 @@ snapshots: dependencies: mime-db: 1.52.0 - mimic-response@3.1.0: {} - mimic-response@4.0.0: {} minimatch@3.1.2: @@ -4465,8 +4687,6 @@ snapshots: pathe@2.0.3: {} - pathval@2.0.1: {} - picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -4537,72 +4757,76 @@ snapshots: dependencies: lowercase-keys: 3.0.0 + responselike@4.0.2: + dependencies: + lowercase-keys: 3.0.0 + reusify@1.1.0: {} - rolldown-plugin-dts@0.15.10(rolldown@1.0.0-beta.37)(typescript@5.9.2): + rolldown-plugin-dts@0.17.3(rolldown@1.0.0-beta.45)(typescript@5.9.3): dependencies: - '@babel/generator': 7.28.3 - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 - ast-kit: 2.1.2 - birpc: 2.5.0 - debug: 4.4.1 + '@babel/generator': 7.28.5 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + ast-kit: 2.1.3 + birpc: 2.6.1 + debug: 4.4.3 dts-resolver: 2.1.2 - get-tsconfig: 4.10.1 - rolldown: 1.0.0-beta.37 + get-tsconfig: 4.13.0 + magic-string: 0.30.21 + rolldown: 1.0.0-beta.45 optionalDependencies: - typescript: 5.9.2 + typescript: 5.9.3 transitivePeerDependencies: - oxc-resolver - supports-color - rolldown@1.0.0-beta.37: + rolldown@1.0.0-beta.45: dependencies: - '@oxc-project/runtime': 0.87.0 - '@oxc-project/types': 0.87.0 - '@rolldown/pluginutils': 1.0.0-beta.37 - ansis: 4.1.0 + '@oxc-project/types': 0.95.0 + '@rolldown/pluginutils': 1.0.0-beta.45 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-beta.37 - '@rolldown/binding-darwin-arm64': 1.0.0-beta.37 - '@rolldown/binding-darwin-x64': 1.0.0-beta.37 - '@rolldown/binding-freebsd-x64': 1.0.0-beta.37 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.37 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.37 - '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.37 - '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.37 - '@rolldown/binding-linux-x64-musl': 1.0.0-beta.37 - '@rolldown/binding-openharmony-arm64': 1.0.0-beta.37 - '@rolldown/binding-wasm32-wasi': 1.0.0-beta.37 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.37 - '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.37 - '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.37 - - rollup@4.50.1: + '@rolldown/binding-android-arm64': 1.0.0-beta.45 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.45 + '@rolldown/binding-darwin-x64': 1.0.0-beta.45 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.45 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.45 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.45 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.45 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.45 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.45 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.45 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.45 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.45 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.45 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.45 + + rollup@4.52.5: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.50.1 - '@rollup/rollup-android-arm64': 4.50.1 - '@rollup/rollup-darwin-arm64': 4.50.1 - '@rollup/rollup-darwin-x64': 4.50.1 - '@rollup/rollup-freebsd-arm64': 4.50.1 - '@rollup/rollup-freebsd-x64': 4.50.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.50.1 - '@rollup/rollup-linux-arm-musleabihf': 4.50.1 - '@rollup/rollup-linux-arm64-gnu': 4.50.1 - '@rollup/rollup-linux-arm64-musl': 4.50.1 - '@rollup/rollup-linux-loongarch64-gnu': 4.50.1 - '@rollup/rollup-linux-ppc64-gnu': 4.50.1 - '@rollup/rollup-linux-riscv64-gnu': 4.50.1 - '@rollup/rollup-linux-riscv64-musl': 4.50.1 - '@rollup/rollup-linux-s390x-gnu': 4.50.1 - '@rollup/rollup-linux-x64-gnu': 4.50.1 - '@rollup/rollup-linux-x64-musl': 4.50.1 - '@rollup/rollup-openharmony-arm64': 4.50.1 - '@rollup/rollup-win32-arm64-msvc': 4.50.1 - '@rollup/rollup-win32-ia32-msvc': 4.50.1 - '@rollup/rollup-win32-x64-msvc': 4.50.1 + '@rollup/rollup-android-arm-eabi': 4.52.5 + '@rollup/rollup-android-arm64': 4.52.5 + '@rollup/rollup-darwin-arm64': 4.52.5 + '@rollup/rollup-darwin-x64': 4.52.5 + '@rollup/rollup-freebsd-arm64': 4.52.5 + '@rollup/rollup-freebsd-x64': 4.52.5 + '@rollup/rollup-linux-arm-gnueabihf': 4.52.5 + '@rollup/rollup-linux-arm-musleabihf': 4.52.5 + '@rollup/rollup-linux-arm64-gnu': 4.52.5 + '@rollup/rollup-linux-arm64-musl': 4.52.5 + '@rollup/rollup-linux-loong64-gnu': 4.52.5 + '@rollup/rollup-linux-ppc64-gnu': 4.52.5 + '@rollup/rollup-linux-riscv64-gnu': 4.52.5 + '@rollup/rollup-linux-riscv64-musl': 4.52.5 + '@rollup/rollup-linux-s390x-gnu': 4.52.5 + '@rollup/rollup-linux-x64-gnu': 4.52.5 + '@rollup/rollup-linux-x64-musl': 4.52.5 + '@rollup/rollup-openharmony-arm64': 4.52.5 + '@rollup/rollup-win32-arm64-msvc': 4.52.5 + '@rollup/rollup-win32-ia32-msvc': 4.52.5 + '@rollup/rollup-win32-x64-gnu': 4.52.5 + '@rollup/rollup-win32-x64-msvc': 4.52.5 fsevents: 2.3.3 run-parallel@1.2.0: @@ -4634,7 +4858,7 @@ snapshots: semver@6.3.1: {} - semver@7.7.2: {} + semver@7.7.3: {} set-function-length@1.2.2: dependencies: @@ -4700,7 +4924,7 @@ snapshots: stackback@0.0.2: {} - std-env@3.9.0: {} + std-env@3.10.0: {} stop-iteration-iterator@1.1.0: dependencies: @@ -4740,10 +4964,6 @@ snapshots: strip-json-comments@3.1.1: {} - strip-literal@3.0.0: - dependencies: - js-tokens: 9.0.1 - strnum@2.1.1: {} supports-color@7.2.0: @@ -4758,6 +4978,8 @@ snapshots: dependencies: '@pkgr/core': 0.2.9 + tagged-tag@1.0.0: {} + tinybench@2.9.0: {} tinyexec@0.3.2: {} @@ -4769,11 +4991,7 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 - tinypool@1.1.1: {} - - tinyrainbow@2.0.0: {} - - tinyspy@4.0.3: {} + tinyrainbow@3.0.3: {} to-regex-range@5.0.1: dependencies: @@ -4783,9 +5001,9 @@ snapshots: tree-kill@1.2.2: {} - ts-api-utils@2.1.0(typescript@5.9.2): + ts-api-utils@2.1.0(typescript@5.9.3): dependencies: - typescript: 5.9.2 + typescript: 5.9.3 tsconfig-paths@3.15.0: dependencies: @@ -4794,25 +5012,26 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 - tsdown@0.14.2(typescript@5.9.2): + tsdown@0.15.12(typescript@5.9.3): dependencies: - ansis: 4.1.0 + ansis: 4.2.0 cac: 6.7.14 chokidar: 4.0.3 - debug: 4.4.1 + debug: 4.4.3 diff: 8.0.2 empathic: 2.0.0 hookable: 5.5.3 - rolldown: 1.0.0-beta.37 - rolldown-plugin-dts: 0.15.10(rolldown@1.0.0-beta.37)(typescript@5.9.2) - semver: 7.7.2 + rolldown: 1.0.0-beta.45 + rolldown-plugin-dts: 0.17.3(rolldown@1.0.0-beta.45)(typescript@5.9.3) + semver: 7.7.3 tinyexec: 1.0.1 tinyglobby: 0.2.15 tree-kill: 1.2.2 unconfig: 7.3.3 optionalDependencies: - typescript: 5.9.2 + typescript: 5.9.3 transitivePeerDependencies: + - '@ts-macro/tsc' - '@typescript/native-preview' - oxc-resolver - supports-color @@ -4830,6 +5049,10 @@ snapshots: type-fest@4.41.0: {} + type-fest@5.1.0: + dependencies: + tagged-tag: 1.0.0 + typed-array-buffer@1.0.3: dependencies: call-bound: 1.0.4 @@ -4863,27 +5086,27 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typedoc@0.28.12(typescript@5.9.2): + typedoc@0.28.14(typescript@5.9.3): dependencies: - '@gerrit0/mini-shiki': 3.12.2 + '@gerrit0/mini-shiki': 3.14.0 lunr: 2.3.9 markdown-it: 14.1.0 minimatch: 9.0.5 - typescript: 5.9.2 + typescript: 5.9.3 yaml: 2.8.1 - typescript-eslint@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2): + typescript-eslint@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.43.0(@typescript-eslint/parser@8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/parser': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/typescript-estree': 8.43.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.43.0(eslint@9.35.0(jiti@2.5.1))(typescript@5.9.2) - eslint: 9.35.0(jiti@2.5.1) - typescript: 5.9.2 + '@typescript-eslint/eslint-plugin': 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.2(eslint@9.39.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 9.39.0(jiti@2.6.1) + typescript: 5.9.3 transitivePeerDependencies: - supports-color - typescript@5.9.2: {} + typescript@5.9.3: {} uc.micro@2.1.0: {} @@ -4898,10 +5121,10 @@ snapshots: dependencies: '@quansync/fs': 0.1.5 defu: 6.1.4 - jiti: 2.5.1 + jiti: 2.6.1 quansync: 0.2.11 - undici-types@6.21.0: {} + undici-types@7.16.0: {} undici@5.29.0: dependencies: @@ -4943,68 +5166,44 @@ snapshots: uuid@8.3.2: {} - vite-node@3.2.4(@types/node@22.18.1)(jiti@2.5.1)(yaml@2.8.1): - dependencies: - cac: 6.7.14 - debug: 4.4.1 - es-module-lexer: 1.7.0 - pathe: 2.0.3 - vite: 7.1.5(@types/node@22.18.1)(jiti@2.5.1)(yaml@2.8.1) - transitivePeerDependencies: - - '@types/node' - - jiti - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - - vite@7.1.5(@types/node@22.18.1)(jiti@2.5.1)(yaml@2.8.1): + vite@7.1.12(@types/node@24.9.2)(jiti@2.6.1)(yaml@2.8.1): dependencies: - esbuild: 0.25.9 + esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.50.1 + rollup: 4.52.5 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 22.18.1 + '@types/node': 24.9.2 fsevents: 2.3.3 - jiti: 2.5.1 + jiti: 2.6.1 yaml: 2.8.1 - vitest@3.2.4(@types/node@22.18.1)(jiti@2.5.1)(yaml@2.8.1): - dependencies: - '@types/chai': 5.2.2 - '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.1.5(@types/node@22.18.1)(jiti@2.5.1)(yaml@2.8.1)) - '@vitest/pretty-format': 3.2.4 - '@vitest/runner': 3.2.4 - '@vitest/snapshot': 3.2.4 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.3.3 - debug: 4.4.1 + vitest@4.0.6(@types/node@24.9.2)(jiti@2.6.1)(yaml@2.8.1): + dependencies: + '@vitest/expect': 4.0.6 + '@vitest/mocker': 4.0.6(vite@7.1.12(@types/node@24.9.2)(jiti@2.6.1)(yaml@2.8.1)) + '@vitest/pretty-format': 4.0.6 + '@vitest/runner': 4.0.6 + '@vitest/snapshot': 4.0.6 + '@vitest/spy': 4.0.6 + '@vitest/utils': 4.0.6 + debug: 4.4.3 + es-module-lexer: 1.7.0 expect-type: 1.2.2 - magic-string: 0.30.19 + magic-string: 0.30.21 pathe: 2.0.3 picomatch: 4.0.3 - std-env: 3.9.0 + std-env: 3.10.0 tinybench: 2.9.0 tinyexec: 0.3.2 tinyglobby: 0.2.15 - tinypool: 1.1.1 - tinyrainbow: 2.0.0 - vite: 7.1.5(@types/node@22.18.1)(jiti@2.5.1)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@22.18.1)(jiti@2.5.1)(yaml@2.8.1) + tinyrainbow: 3.0.3 + vite: 7.1.12(@types/node@24.9.2)(jiti@2.6.1)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.18.1 + '@types/node': 24.9.2 transitivePeerDependencies: - jiti - less diff --git a/tsconfig.typedoc.json b/tsconfig.typedoc.json index 28ee7ea..6066a48 100644 --- a/tsconfig.typedoc.json +++ b/tsconfig.typedoc.json @@ -1,6 +1,7 @@ { "extends": "./tsconfig.json", "compilerOptions": { + "lib": ["ESNext"], "skipLibCheck": true }, "exclude": ["src/**/*.test.ts"]