diff --git a/dist/index.js.map b/dist/index.js.map index 2efa3c2..eab92bb 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["../package.json","../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 \"name\": \"detsys-ts\",\n \"version\": \"1.0.0\",\n \"description\": \"TypeScript goodies for DetSys projects\",\n \"main\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"type\": \"module\",\n \"scripts\": {\n \"build\": \"tsup\",\n \"check-fmt\": \"prettier --check .\",\n \"format\": \"prettier --write .\",\n \"lint\": \"eslint src/**/*.ts\",\n \"docs\": \"typedoc\",\n \"test\": \"vitest --watch false\",\n \"test-dev\": \"vitest\",\n \"all\": \"rm -rf dist && pnpm run format && pnpm run lint && pnpm run build\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/DeterminateSystems/detsys-ts.git\"\n },\n \"keywords\": [],\n \"author\": \"\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/DeterminateSystems/detsys-ts/issues\"\n },\n \"homepage\": \"https://github.com/DeterminateSystems/detsys-ts#readme\",\n \"dependencies\": {\n \"@actions/cache\": \"^3.2.4\",\n \"@actions/core\": \"^1.11.1\",\n \"@actions/exec\": \"^1.1.1\",\n \"got\": \"^14.4.3\",\n \"type-fest\": \"^4.26.1\"\n },\n \"devDependencies\": {\n \"@trivago/prettier-plugin-sort-imports\": \"^4.3.0\",\n \"@types/node\": \"^20.16.11\",\n \"@typescript-eslint/eslint-plugin\": \"^7.18.0\",\n \"eslint\": \"^8.57.1\",\n \"eslint-import-resolver-typescript\": \"^3.6.3\",\n \"eslint-plugin-github\": \"^4.10.2\",\n \"eslint-plugin-import\": \"^2.31.0\",\n \"eslint-plugin-prettier\": \"^5.2.1\",\n \"prettier\": \"^3.3.3\",\n \"tsup\": \"^8.3.0\",\n \"typedoc\": \"^0.25.13\",\n \"typescript\": \"^5.6.3\",\n \"vitest\": \"^1.6.0\"\n }\n}\n","/*!\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\nexport async function collectBacktraces(\n prefixes: string[],\n startTimestampMs: number,\n): Promise> {\n if (isMacOS) {\n return await collectBacktracesMacOS(prefixes, startTimestampMs);\n }\n if (isLinux) {\n return await collectBacktracesSystemd(prefixes, startTimestampMs);\n }\n\n return new Map();\n}\n\nexport async function collectBacktracesMacOS(\n prefixes: 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 (e: unknown) {\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 // 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 startTimestampMs: number,\n): Promise> {\n const sinceSeconds = Math.ceil((Date.now() - startTimestampMs) / 1000);\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 (prefixes.some((prefix) => binaryName.startsWith(prefix))) {\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 } 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 correlation_source: string;\n repository?: string;\n run?: string;\n run_differentiator?: string;\n workflow?: string;\n groups: Record;\n};\n\nexport function identify(projectName: string): AnonymizedCorrelationHashes {\n const ident = {\n correlation_source: \"github-actions\",\n\n 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 workflow: 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 job: 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 run: 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 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 groups: {\n ci: \"github-actions\",\n project: projectName,\n github_organization: hashEnvironmentVariables(\"GHO\", [\n \"GITHUB_SERVER_URL\",\n \"GITHUB_REPOSITORY_OWNER\",\n \"GITHUB_REPOSITORY_OWNER_ID\",\n ]),\n },\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 += this.idsProjectName;\n diagnosticUrl.pathname += \"/\";\n diagnosticUrl.pathname += this.diagnosticsSuffix || \"diagnostics\";\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 */\nimport { version as pkgVersion } from \"../package.json\";\nimport * as ghActionsCorePlatform from \"./actions-core-platform.js\";\nimport { collectBacktraces } from \"./backtrace.js\";\nimport { 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 { SourceDef, constructSourceParameters } from \"./sourcedef.js\";\nimport * as actionsCache from \"@actions/cache\";\nimport * as actionsCore from \"@actions/core\";\nimport * as actionsExec from \"@actions/exec\";\nimport { Got, Request, TimeoutError } from \"got\";\nimport { exec } from \"node:child_process\";\nimport { UUID, randomUUID } from \"node:crypto\";\nimport {\n PathLike,\n WriteStream,\n createWriteStream,\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 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\";\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\";\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\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\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};\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 event_name: string;\n context: Record;\n correlation: correlation.AnonymizedCorrelationHashes;\n facts: Record;\n features: { [k: string]: string | boolean };\n timestamp: Date;\n uuid: UUID;\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(this.actionOptions.name);\n this.archOs = platform.getArchOs();\n this.nixSystem = platform.getNixPlatform(this.archOs);\n\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): 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.run_differentiator ||\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 this.events.push({\n event_name: prefixedName,\n context,\n correlation: this.identity,\n facts: this.facts,\n features: this.featureEventMetadata,\n timestamp: new Date(),\n uuid: randomUUID(),\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, fs.constants.S_IXUSR | fs.constants.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 process.env.DETSYS_CORRELATION = JSON.stringify(\n this.getCorrelationHashes(),\n );\n\n if (!(await this.preflightRequireNix())) {\n this.recordEvent(EVENT_PREFLIGHT_REQUIRE_NIX_DENIED);\n return;\n } else {\n await this.preflightNixStoreInfo();\n this.addFact(FACT_NIX_STORE_TRUST, this.nixStoreTrust);\n }\n\n if (this.isMain) {\n await this.main();\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 checkInUrl.searchParams.set(\"ci\", \"github\");\n checkInUrl.searchParams.set(\n \"correlation\",\n JSON.stringify(this.identity),\n );\n\n return (await this.getClient())\n .get(checkInUrl, {\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 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/nix-installer-action@main` 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/nix-installer-action@main` 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 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 type: \"eventlog\",\n sent_at: new Date(),\n events: 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 };\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 {\n CheckIn,\n Feature,\n Incident,\n Maintenance,\n Page,\n StatusSummary,\n} from \"./check-in.js\";\nexport { AnonymizedCorrelationHashes } from \"./correlation.js\";\nexport { stringifyError } from \"./errors.js\";\nexport { IdsHost } from \"./ids-host.js\";\nexport { SourceDef } from \"./sourcedef.js\";\nexport * as inputs from \"./inputs.js\";\nexport * as platform from \"./platform.js\";\n"],"mappings":"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","names":["error","os","version","platform","arch","actionsCore","exec","readFile","promisify","actionsCore","actionsCore","error","actionsCore","actionsCore","actionsCore","actionsCore","exec","readFileSync","fs","os","promisify","gzip","stringifyError","error","promisify","exec","fs","gzip","readFileSync","version"]} \ No newline at end of file +{"version":3,"sources":["../package.json","../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 \"name\": \"detsys-ts\",\n \"version\": \"1.0.0\",\n \"description\": \"TypeScript goodies for DetSys projects\",\n \"main\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"type\": \"module\",\n \"scripts\": {\n \"build\": \"tsup\",\n \"check-fmt\": \"prettier --check .\",\n \"format\": \"prettier --write .\",\n \"lint\": \"eslint src/**/*.ts\",\n \"docs\": \"typedoc\",\n \"test\": \"vitest --watch false\",\n \"test-dev\": \"vitest\",\n \"all\": \"rm -rf dist && pnpm run format && pnpm run lint && pnpm run build\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/DeterminateSystems/detsys-ts.git\"\n },\n \"keywords\": [],\n \"author\": \"\",\n \"license\": \"MIT\",\n \"bugs\": {\n \"url\": \"https://github.com/DeterminateSystems/detsys-ts/issues\"\n },\n \"homepage\": \"https://github.com/DeterminateSystems/detsys-ts#readme\",\n \"dependencies\": {\n \"@actions/cache\": \"^3.3.0\",\n \"@actions/core\": \"^1.11.1\",\n \"@actions/exec\": \"^1.1.1\",\n \"got\": \"^14.4.4\",\n \"type-fest\": \"^4.27.0\"\n },\n \"devDependencies\": {\n \"@trivago/prettier-plugin-sort-imports\": \"^4.3.0\",\n \"@types/node\": \"^20.17.6\",\n \"@typescript-eslint/eslint-plugin\": \"^7.18.0\",\n \"eslint\": \"^8.57.1\",\n \"eslint-import-resolver-typescript\": \"^3.6.3\",\n \"eslint-plugin-github\": \"^4.10.2\",\n \"eslint-plugin-import\": \"^2.31.0\",\n \"eslint-plugin-prettier\": \"^5.2.1\",\n \"prettier\": \"^3.3.3\",\n \"tsup\": \"^8.3.5\",\n \"typedoc\": \"^0.25.13\",\n \"typescript\": \"^5.6.3\",\n \"vitest\": \"^1.6.0\"\n }\n}\n","/*!\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\nexport async function collectBacktraces(\n prefixes: string[],\n startTimestampMs: number,\n): Promise> {\n if (isMacOS) {\n return await collectBacktracesMacOS(prefixes, startTimestampMs);\n }\n if (isLinux) {\n return await collectBacktracesSystemd(prefixes, startTimestampMs);\n }\n\n return new Map();\n}\n\nexport async function collectBacktracesMacOS(\n prefixes: 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 (e: unknown) {\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 // 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 startTimestampMs: number,\n): Promise> {\n const sinceSeconds = Math.ceil((Date.now() - startTimestampMs) / 1000);\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 (prefixes.some((prefix) => binaryName.startsWith(prefix))) {\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 } 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 correlation_source: string;\n repository?: string;\n run?: string;\n run_differentiator?: string;\n workflow?: string;\n groups: Record;\n};\n\nexport function identify(projectName: string): AnonymizedCorrelationHashes {\n const ident = {\n correlation_source: \"github-actions\",\n\n 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 workflow: 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 job: 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 run: 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 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 groups: {\n ci: \"github-actions\",\n project: projectName,\n github_organization: hashEnvironmentVariables(\"GHO\", [\n \"GITHUB_SERVER_URL\",\n \"GITHUB_REPOSITORY_OWNER\",\n \"GITHUB_REPOSITORY_OWNER_ID\",\n ]),\n },\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 += this.idsProjectName;\n diagnosticUrl.pathname += \"/\";\n diagnosticUrl.pathname += this.diagnosticsSuffix || \"diagnostics\";\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 */\nimport { version as pkgVersion } from \"../package.json\";\nimport * as ghActionsCorePlatform from \"./actions-core-platform.js\";\nimport { collectBacktraces } from \"./backtrace.js\";\nimport { 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 { SourceDef, constructSourceParameters } from \"./sourcedef.js\";\nimport * as actionsCache from \"@actions/cache\";\nimport * as actionsCore from \"@actions/core\";\nimport * as actionsExec from \"@actions/exec\";\nimport { Got, Request, TimeoutError } from \"got\";\nimport { exec } from \"node:child_process\";\nimport { UUID, randomUUID } from \"node:crypto\";\nimport {\n PathLike,\n WriteStream,\n createWriteStream,\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 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\";\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\";\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\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\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};\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 event_name: string;\n context: Record;\n correlation: correlation.AnonymizedCorrelationHashes;\n facts: Record;\n features: { [k: string]: string | boolean };\n timestamp: Date;\n uuid: UUID;\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(this.actionOptions.name);\n this.archOs = platform.getArchOs();\n this.nixSystem = platform.getNixPlatform(this.archOs);\n\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): 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.run_differentiator ||\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 this.events.push({\n event_name: prefixedName,\n context,\n correlation: this.identity,\n facts: this.facts,\n features: this.featureEventMetadata,\n timestamp: new Date(),\n uuid: randomUUID(),\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, fs.constants.S_IXUSR | fs.constants.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 process.env.DETSYS_CORRELATION = JSON.stringify(\n this.getCorrelationHashes(),\n );\n\n if (!(await this.preflightRequireNix())) {\n this.recordEvent(EVENT_PREFLIGHT_REQUIRE_NIX_DENIED);\n return;\n } else {\n await this.preflightNixStoreInfo();\n this.addFact(FACT_NIX_STORE_TRUST, this.nixStoreTrust);\n }\n\n if (this.isMain) {\n await this.main();\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 checkInUrl.searchParams.set(\"ci\", \"github\");\n checkInUrl.searchParams.set(\n \"correlation\",\n JSON.stringify(this.identity),\n );\n\n return (await this.getClient())\n .get(checkInUrl, {\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 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/nix-installer-action@main` 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/nix-installer-action@main` 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 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 type: \"eventlog\",\n sent_at: new Date(),\n events: 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 };\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 {\n CheckIn,\n Feature,\n Incident,\n Maintenance,\n Page,\n StatusSummary,\n} from \"./check-in.js\";\nexport { AnonymizedCorrelationHashes } from \"./correlation.js\";\nexport { stringifyError } from \"./errors.js\";\nexport { IdsHost } from \"./ids-host.js\";\nexport { SourceDef } from \"./sourcedef.js\";\nexport * as inputs from \"./inputs.js\";\nexport * as platform from \"./platform.js\";\n"],"mappings":";;;;;;;AAEE,cAAW;;;ACYb,YAAY,QAAQ;AACpB,YAAY,QAAQ;AACpB,SAAS,iBAAiB;AAE1B,IAAM,gBAAgB,UAAa,WAAQ;AAyB3C,IAAM,kCAA2D;AAAA,EAC/D,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,OAAO;AACT;AAQO,SAAS,YAAY,aAA8C;AACxE,QAAM,UAAU,EAAE,GAAG,iCAAiC,GAAG,YAAY;AAErE,QAAM,0BAAoC;AAAA,IACxC,QAAQ;AAAA,EACV;AAEA,MAAO,QAAK,MAAM,SAAS;AACzB,QAAI,QAAQ,SAAS,QAAQ;AAC3B,aAAO,UAAU;AAAA,IACnB,OAAO;AACL,aAAO,QAAQ,QAAQ,UAAU,CAAC;AAAA,IACpC;AAAA,EACF;AAEA,MAAI,QAAQ,SAAS,QAAQ;AAC3B,WAAO,sBAAsB,yBAAyB,OAAO;AAAA,EAC/D,OAAO;AACL,WAAO,QAAQ;AAAA,MACb,uBAAuB,yBAAyB,OAAO;AAAA,IACzD;AAAA,EACF;AACF;AASA,SAAS,eAAe,YAAoB,cAA8B;AACxE,QAAM,QAAkB,aAAa,MAAM,IAAI;AAE/C,aAAW,QAAQ,OAAO;AACxB,UAAM,WAAW,KAAK,MAAM,GAAG;AAE/B,QAAI,SAAS,WAAW,GAAG;AACzB,eAAS,CAAC,IAAI,SAAS,CAAC,EAAE,QAAQ,YAAY,EAAE;AAEhD,aAAO,eAAe,YAAY,SAAS,CAAC,EAAE,YAAY,GAAG;AAAA,QAC3D,OAAO,SAAS,CAAC;AAAA,QACjB,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,cAAc;AAAA,MAChB,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAO;AACT;AAQA,SAAS,kBAAkB,YAAiD;AAC1E,QAAM,2BAA2B,CAAC,mBAAmB,qBAAqB;AAE1E,MAAI,CAAC,YAAY;AACf,WAAO;AAAA,EACT,OAAO;AACL,WAAO,MAAM,UAAU;AAAA,EACzB;AACF;AAmBA,SAAS,YAAoB;AAC3B,SAAO;AAAA,IACL,MAAS,QAAK;AAAA,IACd,UAAa,YAAS;AAAA,IACtB,UAAa,YAAS;AAAA,IACtB,MAAS,QAAK;AAAA,IACd,SAAY,WAAQ;AAAA,EACtB;AACF;AAIA,eAAe,uBACb,UACA,SACiB;AACjB,MAAI,WAAW;AAEf,aAAW,iBAAiB,UAAU;AACpC,QAAI;AACF,UAAI,QAAQ,OAAO;AAEjB,gBAAQ,IAAI,mBAAmB,aAAa,MAAM;AAAA,MACpD;AAEA,iBAAW,MAAM,cAAc,eAAe,QAAQ;AAEtD,UAAI,QAAQ,OAAO;AACjB,gBAAQ,IAAI;AAAA,EAAe,QAAQ,EAAE;AAAA,MACvC;AAEA;AAAA,IACF,SAASA,QAAO;AACd,UAAI,QAAQ,OAAO;AACjB,gBAAQ,MAAMA,MAAK;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AAEA,MAAI,aAAa,MAAM;AACrB,UAAM,IAAI,MAAM,8BAA8B;AAAA,EAEhD;AAEA,SAAO,eAAe,UAAU,GAAG,QAAQ;AAC7C;AAEA,SAAS,sBACP,iBACA,SACQ;AACR,MAAI,WAAW;AAEf,aAAW,iBAAiB,iBAAiB;AAC3C,QAAI;AACF,UAAI,QAAQ,OAAO;AACjB,gBAAQ,IAAI,mBAAmB,aAAa,MAAM;AAAA,MACpD;AAEA,iBAAc,gBAAa,eAAe,QAAQ;AAElD,UAAI,QAAQ,OAAO;AACjB,gBAAQ,IAAI;AAAA,EAAe,QAAQ,EAAE;AAAA,MACvC;AAEA;AAAA,IACF,SAASA,QAAO;AACd,UAAI,QAAQ,OAAO;AACjB,gBAAQ,MAAMA,MAAK;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AAEA,MAAI,aAAa,MAAM;AACrB,UAAM,IAAI,MAAM,8BAA8B;AAAA,EAEhD;AAEA,SAAO,eAAe,UAAU,GAAG,QAAQ;AAC7C;;;ACvNA,YAAY,iBAAiB;AAC7B,YAAY,UAAU;AACtB,OAAOC,SAAQ;AAaf,IAAM,iBAAiB,YAAiC;AACtD,QAAM,EAAE,QAAQC,SAAQ,IAAI,MAAW;AAAA,IACrC;AAAA,IACA;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,IACV;AAAA,EACF;AAEA,QAAM,EAAE,QAAQ,KAAK,IAAI,MAAW;AAAA,IAClC;AAAA,IACA;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,IACV;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM,KAAK,KAAK;AAAA,IAChB,SAASA,SAAQ,KAAK;AAAA,EACxB;AACF;AAKA,IAAM,eAAe,YAAiC;AACpD,QAAM,EAAE,OAAO,IAAI,MAAW,mBAAc,WAAW,QAAW;AAAA,IAChE,QAAQ;AAAA,EACV,CAAC;AAED,QAAMA,WAAU,OAAO,MAAM,wBAAwB,IAAI,CAAC,KAAK;AAC/D,QAAM,OAAO,OAAO,MAAM,qBAAqB,IAAI,CAAC,KAAK;AAEzD,SAAO;AAAA,IACL;AAAA,IACA,SAAAA;AAAA,EACF;AACF;AAKA,IAAM,eAAe,YAAiC;AACpD,MAAI,OAAe,CAAC;AAEpB,MAAI;AACF,WAAO,YAAY,EAAE,MAAM,OAAO,CAAC;AACnC,IAAY,kBAAM,4BAA4B,KAAK,UAAU,IAAI,CAAC,EAAE;AAAA,EACtE,SAAS,GAAG;AACV,IAAY,kBAAM,kCAAkC,CAAC,EAAE;AAAA,EACzD;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,MACJ;AAAA,MACA,CAAC,MAAM,QAAQ,eAAe,SAAS;AAAA,MACvC;AAAA,IACF;AAAA,IACA,SAAS;AAAA,MACP;AAAA,MACA,CAAC,cAAc,WAAW,kBAAkB;AAAA,MAC5C;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,0BACP,MACA,OACA,cACG;AACH,aAAW,QAAQ,OAAO;AACxB,UAAM,MAAS,uBAAuB,MAAM,MAAM,YAAY;AAE9D,QAAI,QAAQ,cAAc;AACxB,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,uBACP,MACA,MACA,cACG;AACH,MAAI,CAAC,KAAK,eAAe,IAAI,GAAG;AAC9B,WAAO;AAAA,EACT;AAEA,QAAM,QAAS,KAAgC,IAAI;AAGnD,MAAI,OAAO,UAAU,OAAO,cAAc;AACxC,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAKO,IAAMC,YAAWF,IAAG,SAAS;AAK7B,IAAMG,QAAOH,IAAG,KAAK;AAKrB,IAAM,YAAYE,cAAa;AAK/B,IAAM,UAAUA,cAAa;AAK7B,IAAM,UAAUA,cAAa;AAkBpC,eAAsB,aAAqC;AACzD,SAAO;AAAA,IACL,GAAI,OAAO,YACP,eAAe,IACf,UACE,aAAa,IACb,aAAa;AAAA,IACnB,UAAAA;AAAA,IACA,MAAAC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;AC5KO,SAAS,eAAe,GAAoB;AACjD,MAAI,aAAa,OAAO;AACtB,WAAO,EAAE;AAAA,EACX,WAAW,OAAO,MAAM,UAAU;AAChC,WAAO;AAAA,EACT,OAAO;AACL,WAAO,KAAK,UAAU,CAAC;AAAA,EACzB;AACF;;;ACLA,YAAYC,kBAAiB;AAC7B,YAAYC,WAAU;AACtB,SAAS,YAAAC,WAAU,SAAS,YAAY;AACxC,SAAS,aAAAC,kBAAiB;AAC1B,SAAS,YAAY;AAErB,eAAsB,kBACpB,UACA,kBAC8B;AAC9B,MAAI,SAAS;AACX,WAAO,MAAM,uBAAuB,UAAU,gBAAgB;AAAA,EAChE;AACA,MAAI,SAAS;AACX,WAAO,MAAM,yBAAyB,UAAU,gBAAgB;AAAA,EAClE;AAEA,SAAO,oBAAI,IAAI;AACjB;AAEA,eAAsB,uBACpB,UACA,kBAC8B;AAC9B,QAAM,aAAkC,oBAAI,IAAI;AAEhD,MAAI;AACF,UAAM,EAAE,QAAQ,QAAQ,IAAI,MAAW;AAAA,MACrC;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA;AAAA,QAGA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,MACV;AAAA,IACF;AAEA,UAAM,aAAsB,KAAK,MAAM,OAAO;AAC9C,QAAI,CAAC,MAAM,QAAQ,UAAU,GAAG;AAC9B,YAAM,IAAI,MAAM,4BAA4B,OAAO,EAAE;AAAA,IACvD;AAEA,QAAI,WAAW,SAAS,GAAG;AACzB,MAAY,kBAAK,0BAA0B;AAC3C,YAAM,QAAQ,OAAO,OACnB,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AAClD,YAAM,MAAM,GAAI;AAAA,IAClB;AAAA,EACF,SAAS,GAAY;AACnB,IAAY;AAAA,MACV;AAAA,IACF;AAAA,EACF;AAEA,QAAM,OAAO;AAAA,IACX,CAAC,UAAU,kCAAkC;AAAA,IAC7C,CAAC,QAAQ,GAAG,QAAQ,IAAI,MAAM,CAAC,kCAAkC;AAAA,EACnE;AAEA,aAAW,CAAC,QAAQ,GAAG,KAAK,MAAM;AAChC,UAAM,aAAa,MAAM,QAAQ,GAAG,GACjC,OAAO,CAAC,aAAa;AACpB,aAAO,SAAS,KAAK,CAAC,WAAW,SAAS,WAAW,MAAM,CAAC;AAAA,IAC9D,CAAC,EACA,OAAO,CAAC,aAAa;AAIpB,aAAO,CAAC,SAAS,SAAS,OAAO;AAAA,IACnC,CAAC;AAEH,UAAM,SAASA,WAAU,IAAI;AAC7B,eAAW,YAAY,WAAW;AAChC,UAAI;AACF,aAAK,MAAM,KAAK,GAAG,GAAG,IAAI,QAAQ,EAAE,GAAG,WAAW,kBAAkB;AAClE,gBAAM,UAAU,MAAMD,UAAS,GAAG,GAAG,IAAI,QAAQ,EAAE;AACnD,gBAAM,MAAM,MAAM,OAAO,OAAO;AAChC,qBAAW;AAAA,YACT,mBAAmB,MAAM,IAAI,QAAQ;AAAA,YACrC,IAAI,SAAS,QAAQ;AAAA,UACvB;AAAA,QACF;AAAA,MACF,SAAS,YAAqB;AAC5B,mBAAW;AAAA,UACT,qBAAqB,MAAM,IAAI,QAAQ;AAAA,UACvC,eAAe,UAAU;AAAA,QAC3B;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAOA,eAAsB,yBACpB,UACA,kBAC8B;AAC9B,QAAM,eAAe,KAAK,MAAM,KAAK,IAAI,IAAI,oBAAoB,GAAI;AACrE,QAAM,aAAkC,oBAAI,IAAI;AAEhD,QAAM,YAAmC,CAAC;AAE1C,MAAI;AACF,UAAM,EAAE,QAAQ,aAAa,IAAI,MAAW;AAAA,MAC1C;AAAA,MACA,CAAC,iBAAiB,QAAQ,WAAW,GAAG,YAAY,cAAc;AAAA,MAClE;AAAA,QACE,QAAQ;AAAA,MACV;AAAA,IACF;AAEA,UAAM,aAAsB,KAAK,MAAM,YAAY;AACnD,QAAI,CAAC,MAAM,QAAQ,UAAU,GAAG;AAC9B,YAAM,IAAI,MAAM,4BAA4B,YAAY,EAAE;AAAA,IAC5D;AAEA,eAAW,eAAe,YAAY;AACpC,YAAM,OAAO,OAAO,KAAK,WAAW;AAEpC,UAAI,KAAK,SAAS,KAAK,KAAK,KAAK,SAAS,KAAK,GAAG;AAChD,YACE,OAAO,YAAY,OAAO,YAC1B,OAAO,YAAY,OAAO,UAC1B;AACA,gBAAM,YAAY,YAAY,IAAI,MAAM,GAAG;AAC3C,gBAAM,aAAa,UAAU,UAAU,SAAS,CAAC;AAEjD,cAAI,SAAS,KAAK,CAAC,WAAW,WAAW,WAAW,MAAM,CAAC,GAAG;AAC5D,sBAAU,KAAK;AAAA,cACb,KAAK,YAAY;AAAA,cACjB,KAAK,YAAY;AAAA,YACnB,CAAC;AAAA,UACH;AAAA,QACF,OAAO;AACL,UAAY;AAAA,YACV,mEAAmE,KAAK,UAAU,WAAW,CAAC;AAAA,UAChG;AAAA,QACF;AAAA,MACF,OAAO;AACL,QAAY;AAAA,UACV,iEAAiE,KAAK,UAAU,WAAW,CAAC;AAAA,QAC9F;AAAA,MACF;AAAA,IACF;AAAA,EACF,SAAS,YAAqB;AAC5B,IAAY;AAAA,MACV,8BAA8B,eAAe,UAAU,CAAC;AAAA,IAC1D;AAEA,WAAO;AAAA,EACT;AAEA,QAAM,SAASC,WAAU,IAAI;AAC7B,aAAW,YAAY,WAAW;AAChC,QAAI;AACF,YAAM,EAAE,QAAQ,QAAQ,IAAI,MAAW;AAAA,QACrC;AAAA,QACA,CAAC,QAAQ,GAAG,SAAS,GAAG,EAAE;AAAA,QAC1B;AAAA,UACE,QAAQ;AAAA,QACV;AAAA,MACF;AAEA,YAAM,MAAM,MAAM,OAAO,OAAO;AAChC,iBAAW,IAAI,mBAAmB,SAAS,GAAG,IAAI,IAAI,SAAS,QAAQ,CAAC;AAAA,IAC1E,SAAS,YAAqB;AAC5B,iBAAW;AAAA,QACT,qBAAqB,SAAS,GAAG;AAAA,QACjC,eAAe,UAAU;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;;;ACnMA,YAAYC,kBAAiB;AAC7B,SAAS,kBAAkB;AAE3B,IAAM,qBAAqB,CAAC,eAAe;AAepC,SAAS,SAAS,aAAkD;AACzE,QAAM,QAAQ;AAAA,IACZ,oBAAoB;AAAA,IAEpB,YAAY,yBAAyB,OAAO;AAAA,MAC1C;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACD,UAAU,yBAAyB,OAAO;AAAA,MACxC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACD,KAAK,yBAAyB,QAAQ;AAAA,MACpC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACD,KAAK,yBAAyB,SAAS;AAAA,MACrC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACD,oBAAoB,yBAAyB,SAAS;AAAA,MACpD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACD,QAAQ;AAAA,MACN,IAAI;AAAA,MACJ,SAAS;AAAA,MACT,qBAAqB,yBAAyB,OAAO;AAAA,QACnD;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAEA,EAAY,mBAAM,mBAAmB;AACrC,EAAY,mBAAM,KAAK,UAAU,OAAO,MAAM,CAAC,CAAC;AAEhD,SAAO;AACT;AAEA,SAAS,yBACP,QACA,WACoB;AACpB,QAAM,OAAO,WAAW,QAAQ;AAEhC,aAAW,WAAW,WAAW;AAC/B,QAAI,QAAQ,QAAQ,IAAI,OAAO;AAE/B,QAAI,UAAU,QAAW;AACvB,UAAI,mBAAmB,SAAS,OAAO,GAAG;AACxC,QAAY;AAAA,UACV,0CAA0C,OAAO;AAAA,QACnD;AACA,gBAAQ;AAAA,MACV,OAAO;AACL,QAAY;AAAA,UACV,iCAAiC,OAAO;AAAA,QAC1C;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAEA,SAAK,OAAO,KAAK;AACjB,SAAK,OAAO,IAAI;AAAA,EAClB;AAEA,SAAO,GAAG,MAAM,IAAI,KAAK,OAAO,KAAK,CAAC;AACxC;;;AC7GA,YAAYC,kBAAiB;AAC7B,OAAO,SAAkB;AAEzB,SAAS,kBAAkB;AAE3B,IAAM,iBAAiB;AACvB,IAAM,mBAAmB;AAAA,EACvB;AAAA,EACA;AACF;AAEA,IAAM,mBAAmB;AACzB,IAAM,SAAS,QAAQ,IAAI,YAAY,KAAK;AAE5C,IAAM,kBAAkB;AAKjB,IAAM,UAAN,MAAc;AAAA,EAOnB,YACE,gBACA,mBACA,uBACA;AACA,SAAK,iBAAiB;AACtB,SAAK,oBAAoB;AACzB,SAAK,wBAAwB;AAC7B,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,MAAM,OACJ,wBAKc;AACd,QAAI,KAAK,WAAW,QAAW;AAC7B,WAAK,SAAS,IAAI,OAAO;AAAA,QACvB,SAAS;AAAA,UACP,SAAS;AAAA,QACX;AAAA,QAEA,OAAO;AAAA,UACL,OAAO,KAAK,KAAK,MAAM,KAAK,oBAAoB,GAAG,QAAQ,CAAC;AAAA,UAC5D,SAAS,CAAC,OAAO,MAAM;AAAA,QACzB;AAAA,QAEA,OAAO;AAAA,UACL,aAAa;AAAA,YACX,OAAOC,QAAO,eAAe;AAC3B,oBAAM,UAAU,MAAM,KAAK,WAAW;AACtC,mBAAK,sBAAsB;AAC3B,oBAAM,UAAU,MAAM,KAAK,WAAW;AAEtC,kBAAI,2BAA2B,QAAW;AACxC,uCAAuBA,QAAO,SAAS,OAAO;AAAA,cAChD;AAEA,cAAY;AAAA,gBACV,wBAAwBA,OAAM,IAAI,cAAc,UAAU;AAAA,cAC5D;AAAA,YACF;AAAA,UACF;AAAA,UAEA,eAAe;AAAA,YACb,OAAO,YAAY;AAEjB,oBAAM,aAAkB,QAAQ;AAEhC,kBAAI,KAAK,0BAA0B,UAAU,GAAG;AAC9C,sBAAM,SAAc,IAAI,IAAI,UAAU;AAEtC,sBAAM,MAAW,MAAM,KAAK,WAAW;AACvC,uBAAO,OAAO,IAAI;AAElB,wBAAQ,MAAM;AACd,gBAAY,mBAAM,cAAc,UAAU,SAAS,MAAM,EAAE;AAAA,cAC7D,OAAO;AACL,gBAAY,mBAAM,wBAAwB,UAAU,EAAE;AAAA,cACxD;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAEA,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,wBAA8B;AAC5B,SAAK,iBAAiB,MAAM;AAAA,EAC9B;AAAA,EAEA,mBAAmB,MAAmB;AACpC,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEA,0BAA0B,KAAmB;AAC3C,QAAI,IAAI,WAAW,kBAAkB;AACnC,aAAO;AAAA,IACT;AAEA,eAAW,UAAU,kBAAkB;AACrC,UAAI,IAAI,KAAK,SAAS,MAAM,GAAG;AAC7B,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,oBAA8C;AAClD,UAAM,UAAU,QAAQ,IAAI,UAAU;AACtC,QAAI,YAAY,QAAW;AACzB,UAAI;AACF,eAAO,IAAI,IAAI,OAAO;AAAA,MACxB,SAAS,KAAc;AACrB,QAAY;AAAA,UACV,+DAA+D,eAAe,GAAG,CAAC;AAAA,QACpF;AAAA,MACF;AAAA,IACF;AAEA,QAAI,MAAuB;AAC3B,QAAI;AACF,YAAM,OAAO,MAAM,KAAK,oBAAoB;AAC5C,YAAM,KAAK,CAAC;AAAA,IACd,SAAS,KAAc;AACrB,MAAY;AAAA,QACV,4CAA4C,eAAe,GAAG,CAAC;AAAA,MACjE;AAAA,IACF;AAEA,QAAI,QAAQ,QAAW;AACrB,aAAO;AAAA,IACT,OAAO;AAGL,aAAO,IAAI,IAAI,GAAG;AAAA,IACpB;AAAA,EACF;AAAA,EAEA,MAAM,aAA2B;AAC/B,UAAM,MAAM,MAAM,KAAK,kBAAkB;AAEzC,QAAI,QAAQ,QAAW;AACrB,aAAO,IAAI,IAAI,gBAAgB;AAAA,IACjC;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,oBAA8C;AAClD,QAAI,KAAK,0BAA0B,IAAI;AAGrC,aAAO;AAAA,IACT;AAEA,QACE,KAAK,0BAA0B,OAC/B,KAAK,0BAA0B,QAC/B;AACA,UAAI;AAEF,eAAO,IAAI,IAAI,KAAK,qBAAqB;AAAA,MAC3C,SAAS,KAAc;AACrB,QAAY;AAAA,UACV,+DAA+D,eAAe,GAAG,CAAC;AAAA,QACpF;AAAA,MACF;AAAA,IACF;AAEA,QAAI;AACF,YAAM,gBAAgB,MAAM,KAAK,WAAW;AAC5C,oBAAc,YAAY,KAAK;AAC/B,oBAAc,YAAY;AAC1B,oBAAc,YAAY,KAAK,qBAAqB;AACpD,aAAO;AAAA,IACT,SAAS,KAAc;AACrB,MAAY;AAAA,QACV,yFAAyF,eAAe,GAAG,CAAC;AAAA,MAC9G;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,MAAc,sBAAsC;AAClD,QAAI,KAAK,oBAAoB,QAAW;AACtC,WAAK,kBAAkB;AAAA,QACrB,MAAM,uBAAuB;AAAA,MAC/B,EAAE,QAAQ,CAAC,WAAW,YAAY,MAAM,KAAK,CAAC,CAAC;AAAA,IACjD;AAEA,WAAO,KAAK;AAAA,EACd;AACF;AAEO,SAAS,YAAY,QAAoC;AAC9D,QAAM,SAAS,WAAW,OAAO,IAAI,IAAI,OAAO,IAAI;AACpD,MAAI;AACF,WAAO,IAAI,IAAI,MAAM;AAAA,EACvB,SAAS,KAAc;AACrB,IAAY;AAAA,MACV,UAAU,KAAK,UAAU,MAAM,CAAC,6BAA6B,MAAM,KAAK,GAAG;AAAA,IAC7E;AACA,WAAO;AAAA,EACT;AACF;AAEA,eAAe,yBAA+C;AAC5D,SAAO,MAAM,qBAAqB,WAAW,MAAM,GAAG,GAAK;AAC7D;AAEA,eAAsB,qBACpB,QACA,SACsB;AACtB,QAAM,kBAAwC,IAAI;AAAA,IAChD,CAAC,SAAS,YAAY;AACpB,iBAAW,SAAS,SAAS,CAAC,CAAC;AAAA,IACjC;AAAA,EACF;AAEA,MAAI;AAEJ,MAAI;AACF,cAAU,MAAM,QAAQ,KAAK,CAAC,QAAQ,eAAe,CAAC;AAAA,EACxD,SAAS,QAAiB;AACxB,IAAY,mBAAM,gCAAgC,eAAe,MAAM,CAAC,EAAE;AAC1E,cAAU,CAAC;AAAA,EACb;AAEA,QAAM,oBAAoB,QAAQ,OAAO,CAAC,WAA+B;AACvE,eAAW,UAAU,kBAAkB;AACrC,UAAI,OAAO,KAAK,SAAS,MAAM,GAAG;AAChC,eAAO;AAAA,MACT;AAAA,IACF;AAEA,IAAY;AAAA,MACV,iDAAiD,OAAO,IAAI;AAAA,IAC9D;AAEA,WAAO;AAAA,EACT,CAAC;AAED,MAAI,kBAAkB,WAAW,GAAG;AAClC,IAAY,mBAAM,wBAAwB,MAAM,EAAE;AAAA,EACpD,OAAO;AACL,IAAY;AAAA,MACV,YAAY,MAAM,OAAO,KAAK,UAAU,iBAAiB,CAAC;AAAA,IAC5D;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,6BACd,SACa;AACb,QAAM,mBAA6C,oBAAI,IAAI;AAC3D,aAAW,UAAU,SAAS;AAC5B,UAAM,WAAW,iBAAiB,IAAI,OAAO,QAAQ;AACrD,QAAI,UAAU;AACZ,eAAS,KAAK,MAAM;AAAA,IACtB,OAAO;AACL,uBAAiB,IAAI,OAAO,UAAU,CAAC,MAAM,CAAC;AAAA,IAChD;AAAA,EACF;AAEA,QAAM,qBAAkC,CAAC;AACzC,QAAM,OAAiB,MAAM,KAAK,iBAAiB,KAAK,CAAC,EAAE;AAAA,IACzD,CAAC,GAAG,MAAM,IAAI;AAAA,EAChB;AAEA,aAAW,YAAY,MAAM;AAC3B,UAAM,gBAAgB,iBAAiB,IAAI,QAAQ;AACnD,QAAI,kBAAkB,QAAW;AAC/B;AAAA,IACF;AAEA,uBAAmB,KAAK,GAAG,eAAe,aAAa,CAAC;AAAA,EAC1D;AAEA,SAAO;AACT;AAEO,SAAS,eAAe,SAAmC;AAEhE,QAAM,iBAA8B,QAAQ,MAAM;AAClD,QAAM,SAAsB,CAAC;AAE7B,SAAO,eAAe,SAAS,GAAG;AAChC,UAAM,UAAoB,CAAC;AAE3B;AACE,eAAS,IAAI,GAAG,IAAI,eAAe,QAAQ,KAAK;AAC9C,gBAAQ;AAAA,UACN,eAAe,CAAC,EAAE,UAAU,IAAI,IAAI,eAAe,IAAI,CAAC,EAAE,SAAS;AAAA,QACrE;AAAA,MACF;AAAA,IACF;AAEA,UAAM,QAAQ,KAAK,OAAO,IAAI,QAAQ,QAAQ,SAAS,CAAC;AAExD,aACM,gBAAgB,GACpB,gBAAgB,QAAQ,QACxB,iBACA;AACA,UAAI,QAAQ,aAAa,IAAI,OAAO;AAElC,eAAO,KAAK,eAAe,OAAO,eAAe,CAAC,EAAE,CAAC,CAAC;AACtD;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;;;AC7UA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,YAAYC,kBAAiB;AAK7B,IAAM,UAAU,CAAC,SAA0B;AACzC,SAAmB,6BAAgB,IAAI;AACzC;AAKA,IAAM,qBAAqB,CAAC,SAAsC;AAChE,MAAI,qBAAqB,IAAI,MAAM,QAAW;AAC5C,WAAO;AAAA,EACT;AAEA,SAAmB,6BAAgB,IAAI;AACzC;AAWA,IAAM,oBAAoB,CAAC,MAAc,cAAmC;AAC1E,QAAM,WAAW,UAAU,IAAI;AAC/B,SAAO,aAAa,UAAU,SAAS;AACzC;AAKA,IAAM,0BAA0B,CAC9B,MACA,cACoB;AACpB,QAAM,WAAW,gBAAgB,IAAI;AACrC,MAAI,aAAa,MAAM;AACrB,WAAO;AAAA,EACT,OAAO;AACL,WAAO,aAAa,UAAU,SAAS;AAAA,EACzC;AACF;AAGO,IAAM,eAAe,CAAC,OAAe,cAAmC;AAC7E,QAAM,UAAU,cAAc,UAAU,MAAM;AAC9C,QAAM,UAAU,MAAM,KAAK;AAC3B,MAAI,YAAY,IAAI;AAClB,WAAO,CAAC;AAAA,EACV;AAEA,SAAO,QAAQ,MAAM,OAAO,EAAE,IAAI,CAAC,MAAc,EAAE,KAAK,CAAC;AAC3D;AAKA,IAAM,2BAA2B,CAAC,SAAkC;AAClE,QAAM,QAAoB,+BAAkB,IAAI;AAChD,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO;AAAA,EACT,OAAO;AACL,WAAO;AAAA,EACT;AACF;AAKA,IAAM,kBAAkB,CAAC,SAAgC;AACvD,QAAM,QAAoB,sBAAS,IAAI;AACvC,MAAI,UAAU,IAAI;AAChB,WAAO;AAAA,EACT,OAAO;AACL,WAAO,OAAO,KAAK;AAAA,EACrB;AACF;AAKA,IAAM,YAAY,CAAC,SAAyB;AAC1C,SAAmB,sBAAS,IAAI;AAClC;AAKA,IAAM,kBAAkB,CAAC,SAAgC;AACvD,QAAM,QAAoB,sBAAS,IAAI;AACvC,MAAI,UAAU,IAAI;AAChB,WAAO;AAAA,EACT,OAAO;AACL,WAAO;AAAA,EACT;AACF;AAKA,IAAM,uBAAuB,CAAC,SAAqC;AACjE,QAAM,QAAoB,sBAAS,IAAI;AACvC,MAAI,UAAU,IAAI;AAChB,WAAO;AAAA,EACT,OAAO;AACL,WAAO;AAAA,EACT;AACF;;;ACrHA;AAAA;AAAA;AAAA;AAAA;AAIA,YAAYC,kBAAiB;AAKtB,SAAS,YAAoB;AAClC,QAAM,UAAU,QAAQ,IAAI;AAC5B,QAAM,QAAQ,QAAQ,IAAI;AAE1B,MAAI,WAAW,OAAO;AACpB,WAAO,GAAG,OAAO,IAAI,KAAK;AAAA,EAC5B,OAAO;AACL,IAAY;AAAA,MACV,oEAAoE,OAAO,IAAI,KAAK;AAAA,IACtF;AACA,UAAM,IAAI,MAAM,6CAA6C;AAAA,EAC/D;AACF;AAKO,SAAS,eAAe,QAAwB;AACrD,QAAM,YAAiC,oBAAI,IAAI;AAAA,IAC7C,CAAC,aAAa,eAAe;AAAA,IAC7B,CAAC,eAAe,gBAAgB;AAAA,IAChC,CAAC,aAAa,cAAc;AAAA,IAC5B,CAAC,eAAe,eAAe;AAAA,EACjC,CAAC;AAED,QAAM,WAAW,UAAU,IAAI,MAAM;AACrC,MAAI,UAAU;AACZ,WAAO;AAAA,EACT,OAAO;AACL,IAAY;AAAA,MACV,WAAW,MAAM;AAAA,IACnB;AACA,UAAM,IAAI;AAAA,MACR,0BAA0B,MAAM;AAAA,IAClC;AAAA,EACF;AACF;;;AC5CA,YAAYC,kBAAiB;AAWtB,SAAS,0BAA0B,cAAkC;AAC1E,SAAO;AAAA,IACL,MAAM,gBAAgB,QAAQ,YAAY;AAAA,IAC1C,KAAK,gBAAgB,OAAO,YAAY;AAAA,IACxC,KAAK,gBAAgB,OAAO,YAAY;AAAA,IACxC,IAAI,gBAAgB,MAAM,YAAY;AAAA,IACtC,QAAQ,gBAAgB,UAAU,YAAY;AAAA,IAC9C,UAAU,gBAAgB,YAAY,YAAY;AAAA,EACpD;AACF;AAEA,SAAS,gBACP,QACA,cACoB;AACpB,QAAM,iBAAiB,qBAAqB,UAAU,MAAM,EAAE;AAE9D,MAAI,CAAC,cAAc;AACjB,WAAO;AAAA,EACT;AAIA,QAAM,cAAc,qBAAqB,GAAG,YAAY,IAAI,MAAM,EAAE;AAEpE,MAAI,kBAAkB,aAAa;AACjC,IAAY;AAAA,MACV,+BAA+B,MAAM,0BAA0B,YAAY,IAAI,MAAM,oCAAoC,MAAM,yBAAyB,YAAY,IAAI,MAAM;AAAA,IAChL;AACA,WAAO;AAAA,EACT,WAAW,aAAa;AACtB,IAAY;AAAA,MACV,qBAAqB,YAAY,IAAI,MAAM,qCAAqC,MAAM;AAAA,IACxF;AACA,WAAO;AAAA,EACT,OAAO;AACL,WAAO;AAAA,EACT;AACF;;;ACrCA,YAAY,kBAAkB;AAC9B,YAAYC,kBAAiB;AAC7B,YAAY,iBAAiB;AAC7B,SAAuB,oBAAoB;AAC3C,SAAS,QAAAC,aAAY;AACrB,SAAe,kBAAkB;AACjC;AAAA,EAGE;AAAA,EACA,gBAAAC;AAAA,OACK;AACP,OAAOC,OAAM,OAAO,UAAU,aAAa;AAC3C,YAAYC,SAAQ;AACpB,SAAS,cAAc;AACvB,YAAY,UAAU;AACtB,SAAS,aAAAC,kBAAiB;AAC1B,SAAS,QAAAC,aAAY;AAErB,IAAM,mBAAmB;AACzB,IAAM,kBAAkB;AACxB,IAAM,2BAA2B;AACjC,IAAM,4BAA4B;AAClC,IAAM,+BAA+B;AACrC,IAAM,qCAAqC;AAE3C,IAAM,mCAAmC;AACzC,IAAM,4BAA4B;AAClC,IAAM,uBAAuB;AAC7B,IAAM,UAAU;AAChB,IAAM,kBAAkB;AACxB,IAAM,kBAAkB;AACxB,IAAM,uBAAuB;AAE7B,IAAM,oBAAoB;AAC1B,IAAM,uBAAuB;AAC7B,IAAM,yBAAyB;AAC/B,IAAM,8BAA8B;AACpC,IAAM,6BAA6B;AAEnC,IAAM,4BAA4B;AAClC,IAAM,0BAA0B;AAChC,IAAM,kBAAkB;AACxB,IAAM,2BAA2B;AACjC,IAAM,kCAAkC;AAExC,IAAM,iCAAiC;AACvC,IAAM,+BAA+B;AAqG9B,IAAe,eAAf,MAA4B;AAAA,EAkBzB,0BAA0C;AAChD,UAAM,eAA2B,sBAAS,yBAAyB;AACnE,QAAI,iBAAiB,IAAI;AACvB,MAAY,uBAAU,2BAA2B,MAAM;AACvD,aAAO;AAAA,IACT,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,YAAY,eAA8B;AACxC,SAAK,gBAAgB,qBAAqB,aAAa;AACvD,SAAK,UAAU,IAAI;AAAA,MACjB,KAAK,cAAc;AAAA,MACnB,cAAc;AAAA;AAAA;AAAA,MAGd,QAAQ,IAAI,2BAA2B;AAAA,IACzC;AACA,SAAK,uBAAuB,oBAAI,IAAI;AACpC,SAAK,gBAAgB;AACrB,SAAK,aAAa,QAAQ,uBAAuB;AAEjD,QACE;AAAA,MACE;AAAA,IACF,MAAM,MACN;AACA,cAAQ,IAAI,8BAA8B,IAAI;AAC9C,cAAQ,IAAI,gCAAgC,IAAI;AAAA,IAClD;AAEA,SAAK,WAAW,CAAC;AACjB,SAAK,uBAAuB,CAAC;AAC7B,SAAK,SAAS,CAAC;AAEf,SAAK,gBAAgB;AACrB,SAAK,sBAAsB;AAI3B,SAAK,QAAQ;AAAA,MACX,MAAM;AAAA,MACN,cAAc;AAAA,MACd,SAAS,KAAK,cAAc;AAAA,MAC5B,aAAa,KAAK,cAAc;AAAA,IAClC;AAEA,UAAM,SAAS;AAAA,MACb,CAAC,qBAAqB,mBAAmB;AAAA,MACzC,CAAC,4BAA4B,0BAA0B;AAAA,MACvD,CAAC,qBAAqB,mBAAmB;AAAA,MACzC,CAAC,OAAO,WAAW;AAAA,MACnB,CAAC,QAAQ,aAAa;AAAA,IACxB;AACA,eAAW,CAAC,QAAQ,GAAG,KAAK,QAAQ;AAClC,YAAM,QAAQ,QAAQ,IAAI,GAAG;AAC7B,UAAI,OAAO;AACT,aAAK,MAAM,MAAM,IAAI;AAAA,MACvB;AAAA,IACF;AAEA,SAAK,WAAuB,SAAS,KAAK,cAAc,IAAI;AAC5D,SAAK,SAAkB,UAAU;AACjC,SAAK,YAAqB,eAAe,KAAK,MAAM;AAEpD,SAAK,MAAM,UAAU,KAAK;AAC1B,SAAK,MAAM,aAAa,KAAK;AAE7B;AACE,MACG,WAAW,EAEX,KAAK,CAAC,YAAY;AACjB,YAAI,QAAQ,SAAS,WAAW;AAC9B,eAAK,QAAQ,SAAS,QAAQ,IAAI;AAAA,QACpC;AACA,YAAI,QAAQ,YAAY,WAAW;AACjC,eAAK,QAAQ,iBAAiB,QAAQ,OAAO;AAAA,QAC/C;AAAA,MACF,CAAC,EAEA,MAAM,CAAC,MAAe;AACrB,QAAY;AAAA,UACV,qCAAqCC,gBAAe,CAAC,CAAC;AAAA,QACxD;AAAA,MACF,CAAC;AAAA,IACL;AAEA,SAAK,iBAAiB,KAAK,wBAAwB;AACnD,SAAK,MAAM,kBAAkB,KAAK;AAElC,QAAI,KAAK,cAAc,eAAe,gBAAgB;AACpD,WAAK,0BAA0B,KAAK;AAAA,IACtC,WAAW,KAAK,cAAc,eAAe,aAAa;AACxD,WAAK,0BAA0B,KAAK;AAAA,IACtC,WAAW,KAAK,cAAc,eAAe,aAAa;AACxD,WAAK,0BAA0B;AAAA,IACjC,OAAO;AACL,YAAM,IAAI;AAAA,QACR,cAAc,KAAK,cAAc,UAAU;AAAA,MAC7C;AAAA,IACF;AAEA,SAAK,mBAAmB;AAAA,MACtB,KAAK,cAAc;AAAA,IACrB;AAEA,SAAK,YAAY,SAAS,KAAK,cAAc,EAAE;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,WAAW,MAAc,UAAwB;AAC/C,SAAK,qBAAqB,IAAI,MAAM,QAAQ;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA,EAeA,UAAgB;AAEd,SAAK,aAAa,EAAE,MAAM,CAACC,WAAiB;AAE1C,cAAQ,IAAIA,MAAK;AACjB,cAAQ,WAAW;AAAA,IACrB,CAAC;AAAA,EACH;AAAA,EAEA,mBAA2B;AACzB,UAAM,SAAS,QAAQ,IAAI,aAAa,KAAK,OAAO;AACpD,WAAY,UAAK,QAAQ,GAAG,KAAK,cAAc,IAAI,IAAI,WAAW,CAAC,EAAE;AAAA,EACvE;AAAA,EAEA,QAAQ,KAAa,OAA+B;AAClD,SAAK,MAAM,GAAG,IAAI;AAAA,EACpB;AAAA,EAEA,MAAM,oBAA8C;AAClD,WAAO,MAAM,KAAK,QAAQ,kBAAkB;AAAA,EAC9C;AAAA,EAEA,cAAsB;AACpB,WACE,KAAK,SAAS,sBACd,QAAQ,IAAI,sBACZ,WAAW;AAAA,EAEf;AAAA;AAAA,EAGA,kBAA0B;AACxB,QAAI,eAA2B,sBAAS,wBAAwB;AAEhE,QAAI,iBAAiB,IAAI;AACvB,qBAAe,WAAW;AAC1B,MAAY,uBAAU,0BAA0B,YAAY;AAAA,IAC9D;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,uBAAgE;AAC9D,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,YACE,WACA,UAAiE,CAAC,GAC5D;AACN,UAAM,eACJ,cAAc,yBACV,YACA,GAAG,KAAK,cAAc,WAAW,GAAG,SAAS;AACnD,SAAK,OAAO,KAAK;AAAA,MACf,YAAY;AAAA,MACZ;AAAA,MACA,aAAa,KAAK;AAAA,MAClB,OAAO,KAAK;AAAA,MACZ,UAAU,KAAK;AAAA,MACf,WAAW,oBAAI,KAAK;AAAA,MACpB,MAAM,WAAW;AAAA,IACnB,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,cAAc,KAA8B;AAChD,UAAM,WAAW,MAAM,KAAK,cAAc;AAC1C,UAAM,EAAE,OAAO,IAAI,MAAMC,WAAUC,KAAI;AAAA,MACrC,QAAQ,QAAQ;AAAA,IAClB;AACA,UAAM,QAAQ,OAAO,MAAS,OAAG;AACjC,UAAM,WAAW,MAAM,GAAG,EAAE;AAC5B,WAAO,GAAG,QAAQ,QAAQ,GAAG;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,kBAAmC;AACvC,UAAM,aAAa,MAAM,KAAK,cAAc;AAC5C,UAAM,MAAM,YAAYC,IAAG,UAAU,UAAUA,IAAG,UAAU,OAAO;AACnE,WAAO;AAAA,EACT;AAAA,EAEA,IAAY,SAAkB;AAC5B,WAAO,KAAK,mBAAmB;AAAA,EACjC;AAAA,EAEA,IAAY,SAAkB;AAC5B,WAAO,KAAK,mBAAmB;AAAA,EACjC;AAAA,EAEA,MAAc,eAA8B;AAC1C,QAAI;AACF,YAAM,KAAK,QAAQ;AAEnB,cAAQ,IAAI,qBAAqB,KAAK;AAAA,QACpC,KAAK,qBAAqB;AAAA,MAC5B;AAEA,UAAI,CAAE,MAAM,KAAK,oBAAoB,GAAI;AACvC,aAAK,YAAY,kCAAkC;AACnD;AAAA,MACF,OAAO;AACL,cAAM,KAAK,sBAAsB;AACjC,aAAK,QAAQ,sBAAsB,KAAK,aAAa;AAAA,MACvD;AAEA,UAAI,KAAK,QAAQ;AACf,cAAM,KAAK,KAAK;AAAA,MAClB,WAAW,KAAK,QAAQ;AACtB,cAAM,KAAK,KAAK;AAAA,MAClB;AACA,WAAK,QAAQ,2BAA2B,KAAK;AAAA,IAC/C,SAAS,GAAY;AACnB,WAAK,QAAQ,2BAA2B,IAAI;AAE5C,YAAM,aAAaJ,gBAAe,CAAC;AAEnC,WAAK,QAAQ,sBAAsB,UAAU;AAE7C,UAAI,KAAK,QAAQ;AACf,QAAY,qBAAQ,UAAU;AAAA,MAChC,OAAO;AACL,QAAY,uBAAU,UAAU;AAAA,MAClC;AAEA,YAAM,SAASE,WAAUG,KAAI;AAE7B,YAAM,mBAAwC,oBAAI,IAAI;AACtD,iBAAW,CAAC,iBAAiB,QAAQ,KAAK,KAAK,sBAAsB;AACnE,YAAI;AACF,gBAAM,UAAUC,cAAa,QAAQ;AACrC,gBAAM,MAAM,MAAM,OAAO,OAAO;AAChC,2BAAiB;AAAA,YACf,gBAAgB,eAAe;AAAA,YAC/B,IAAI,SAAS,QAAQ;AAAA,UACvB;AAAA,QACF,SAAS,YAAqB;AAC5B,2BAAiB;AAAA,YACf,kBAAkB,eAAe;AAAA,YACjCN,gBAAe,UAAU;AAAA,UAC3B;AAAA,QACF;AAAA,MACF;AAEA,WAAK,YAAY,iBAAiB,OAAO,YAAY,gBAAgB,CAAC;AAAA,IACxE,UAAE;AACA,UAAI,KAAK,QAAQ;AACf,cAAM,KAAK,kBAAkB;AAAA,MAC/B;AAEA,YAAM,KAAK,SAAS;AAAA,IACtB;AAAA,EACF;AAAA,EAEA,MAAM,YAA0B;AAC9B,WAAO,MAAM,KAAK,QAAQ;AAAA,MACxB,CAAC,eAAwB,SAAc,YAAiB;AACtD,aAAK,uBAAuB,aAAa;AAEzC,aAAK,YAAY,gBAAgB;AAAA,UAC/B,aAAa,QAAQ,SAAS;AAAA,UAC9B,SAAS,QAAQ,SAAS;AAAA,QAC5B,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAc,UAAyB;AACrC,UAAM,UAAU,MAAM,KAAK,eAAe;AAC1C,QAAI,YAAY,QAAW;AACzB;AAAA,IACF;AAEA,SAAK,WAAW,QAAQ;AACxB,eAAW,CAAC,KAAK,OAAO,KAAK,OAAO,QAAQ,KAAK,QAAQ,GAAG;AAC1D,WAAK,qBAAqB,GAAG,IAAI,QAAQ;AAAA,IAC3C;AAEA,UAAM,eAAoC,oBAAI,IAAI;AAAA,MAChD,CAAC,QAAQ,QAAG;AAAA,MACZ,CAAC,eAAe,iBAAK;AAAA,MACrB,CAAC,SAAS,WAAI;AAAA,MACd,CAAC,SAAS,WAAI;AAAA,MACd,CAAC,YAAY,WAAI;AAAA,IACnB,CAAC;AACD,UAAM,sBAAsB;AAE5B,QAAI,QAAQ,WAAW,MAAM;AAC3B,YAAM,YAAsB,CAAC;AAE7B,iBAAW,YAAY,QAAQ,OAAO,WAAW;AAC/C,kBAAU;AAAA,UACR,GAAG,aAAa,IAAI,SAAS,MAAM,KAAK,mBAAmB,IAAI,SAAS,OAAO,QAAQ,KAAK,GAAG,CAAC,KAAK,SAAS,IAAI,KAAK,SAAS,SAAS;AAAA,QAC3I;AAAA,MACF;AAEA,iBAAW,eAAe,QAAQ,OAAO,wBAAwB;AAC/D,kBAAU;AAAA,UACR,GAAG,aAAa,IAAI,YAAY,MAAM,KAAK,mBAAmB,IAAI,YAAY,OAAO,QAAQ,KAAK,GAAG,CAAC,KAAK,YAAY,IAAI,KAAK,YAAY,SAAS;AAAA,QACvJ;AAAA,MACF;AAEA,UAAI,UAAU,SAAS,GAAG;AACxB,QAAY;AAAA;AAAA,UAEV,GAAG,YAAc,GAAG,SAAW,GAAG,SAAW,GAAG,QAAQ,OAAO,KAAK,IAAI;AAAA,QAC1E;AACA,mBAAW,UAAU,WAAW;AAC9B,UAAY,kBAAK,MAAM;AAAA,QACzB;AACA,QAAY,kBAAK,QAAQ,QAAQ,OAAO,KAAK,GAAG,EAAE;AAClD,QAAY,kBAAK,EAAE;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,WAAW,MAAmC;AAC5C,QAAI,CAAC,KAAK,SAAS,eAAe,IAAI,GAAG;AACvC,aAAO;AAAA,IACT;AAEA,UAAM,SAAS,KAAK,SAAS,IAAI;AACjC,QAAI,WAAW,QAAW;AACxB,aAAO;AAAA,IACT;AAEA,SAAK,YAAY,wBAAwB;AAAA,MACvC,eAAe;AAAA,MACf,wBAAwB,OAAO;AAAA,IACjC,CAAC;AAED,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAc,iBAA+C;AAC3D,aACM,oBAAoB,GACxB,oBAAoB,GACpB,qBACA;AACA,YAAM,aAAa,MAAM,KAAK,cAAc;AAC5C,UAAI,eAAe,QAAW;AAC5B,eAAO;AAAA,MACT;AAEA,UAAI;AACF,QAAY,mBAAM,oBAAoB,UAAU,EAAE;AAElD,mBAAW,aAAa,IAAI,MAAM,QAAQ;AAC1C,mBAAW,aAAa;AAAA,UACtB;AAAA,UACA,KAAK,UAAU,KAAK,QAAQ;AAAA,QAC9B;AAEA,gBAAQ,MAAM,KAAK,UAAU,GAC1B,IAAI,YAAY;AAAA,UACf,SAAS;AAAA,YACP,SAAS;AAAA,UACX;AAAA,QACF,CAAC,EACA,KAAK;AAAA,MACV,SAAS,GAAY;AACnB,aAAK,uBAAuB,CAAC;AAC7B,QAAY,mBAAM,sBAAsBA,gBAAe,CAAC,CAAC,EAAE;AAC3D,aAAK,QAAQ,sBAAsB;AAAA,MACrC;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,uBAAuB,GAAkB;AAE/C,QAAI,aAAa,gBAAgB,aAAa,KAAK,aAAa,GAAG;AACjE,YAAM,gBAEF;AAAA,QACF,KAAK,EAAE,QAAQ,YAAY,SAAS;AAAA,QACpC,aAAa,EAAE,QAAQ;AAAA,MACzB;AAEA,iBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,EAAE,QAAQ,MAAM,GAAG;AAC3D,YAAI,OAAO,SAAS,KAAK,GAAG;AAC1B,wBAAc,gBAAgB,GAAG,EAAE,IAAI;AAAA,QACzC;AAAA,MACF;AAEA,WAAK,YAAY,WAAW,aAAa;AAAA,IAC3C;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAc,gBAAiC;AAC7C,UAAM,eAAe,gBAAgB,eAAe;AAGpD,QAAI,iBAAiB,QAAQ,iBAAiB,IAAI;AAChD,MAAY,mBAAM,uCAAuC,YAAY,EAAE;AACvE,aAAO;AAAA,IACT;AAEA,IAAY;AAAA,MACV,eAAe,KAAK,cAAc,IAAI,QAAQ,KAAK,uBAAuB;AAAA,IAC5E;AAEA,QAAI;AACF,MAAY,kBAAK,iBAAiB,MAAM,KAAK,aAAa,CAAC,EAAE;AAE7D,YAAM,gBAAgB,MAAM,KAAK,aAAa;AAC9C,oBAAc,aAAa,IAAI,MAAM,QAAQ;AAC7C,oBAAc,aAAa;AAAA,QACzB;AAAA,QACA,KAAK,UAAU,KAAK,QAAQ;AAAA,MAC9B;AAEA,YAAM,iBAAiB,OAAO,MAAM,KAAK,UAAU,GAAG,KAAK,aAAa;AACxE,UAAI,eAAe,QAAQ,MAAM;AAC/B,cAAM,IAAI,eAAe,QAAQ;AACjC,aAAK,QAAQ,sBAAsB,CAAC;AAEpC,QAAY;AAAA,UACV,+BAA+B,MAAM,KAAK,aAAa,CAAC,OAAO,CAAC;AAAA,QAClE;AACA,cAAM,SAAS,MAAM,KAAK,iBAAiB,CAAC;AAC5C,YAAI,QAAQ;AACV,eAAK,MAAM,gCAAgC,IAAI;AAC/C,UAAY,mBAAM,iBAAiB;AACnC,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,WAAK,MAAM,gCAAgC,IAAI;AAE/C,MAAY;AAAA,QACV,2DAA2D,eAAe,GAAG;AAAA,MAC/E;AAEA,YAAM,WAAW,KAAK,iBAAiB;AAEvC,YAAM,cAAc,MAAM,KAAK;AAAA,QAC7B,IAAI,IAAI,eAAe,GAAG;AAAA,QAC1B;AAAA,MACF;AAEA,UAAI,YAAY,UAAU,QAAQ,MAAM;AACtC,cAAM,IAAI,YAAY,SAAS,QAAQ;AAEvC,YAAI;AACF,gBAAM,KAAK,kBAAkB,GAAG,QAAQ;AAAA,QAC1C,SAAS,GAAY;AACnB,UAAY,mBAAM,+BAA+BA,gBAAe,CAAC,CAAC,EAAE;AAAA,QACtE;AAAA,MACF;AAEA,aAAO;AAAA,IACT,SAAS,GAAY;AACnB,WAAK,uBAAuB,CAAC;AAC7B,YAAM;AAAA,IACR,UAAE;AACA,MAAY,sBAAS;AAAA,IACvB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,YAAY,KAAmB;AAC7B,QAAI,KAAK,YAAY;AACnB,MAAY,uBAAU,wBAAwB,GAAG,EAAE;AAAA,IACrD;AAAA,EACF;AAAA,EAEA,MAAc,aACZ,KACA,aACkB;AAClB,UAAM,SAAS,MAAM,KAAK,UAAU;AAEpC,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAEtC,UAAI;AAGJ,UAAI,SAAS;AAEb,YAAM,QAAQ,CAAC,WAA0B;AACvC,YAAI,aAAa;AACf,sBAAY,QAAQ;AAAA,QACtB;AAEA,sBAAc,kBAAkB,aAAa;AAAA,UAC3C,UAAU;AAAA,UACV,MAAM;AAAA,QACR,CAAC;AAED,oBAAY,KAAK,SAAS,CAACC,WAAU;AAEnC,mBAAS;AACT,iBAAOA,MAAK;AAAA,QACd,CAAC;AAED,oBAAY,GAAG,UAAU,MAAM;AAC7B,cAAI,CAAC,QAAQ;AACX,oBAAQ,MAAM;AAAA,UAChB;AAAA,QACF,CAAC;AAED,eAAO,KAAK,SAAS,CAAC,QAAQ,QAAQ,sBAAsB;AAE1D,gBAAM,kBAAkB,CAAC;AAAA,QAC3B,CAAC;AAID,eAAO,KAAK,WAAW;AAAA,MACzB;AAGA,YAAM,OAAO,OAAO,GAAG,CAAC;AAAA,IAC1B,CAAC;AAAA,EACH;AAAA,EAEA,MAAc,WAA0B;AACtC,SAAK,YAAY,YAAY,KAAK,cAAc,EAAE;AAClD,UAAM,KAAK,aAAa;AAAA,EAC1B;AAAA,EAEA,MAAc,gBAA0C;AACtD,UAAM,aAAa,MAAM,KAAK,QAAQ,kBAAkB;AAExD,QAAI,eAAe,QAAW;AAC5B,aAAO;AAAA,IACT;AAEA,eAAW,YAAY;AACvB,WAAO;AAAA,EACT;AAAA,EAEA,MAAc,eAA6B;AACzC,UAAM,IAAI,KAAK;AAEf,QAAI,EAAE,KAAK;AACT,WAAK,QAAQ,iBAAiB,EAAE,GAAG;AACnC,aAAO,IAAI,IAAI,EAAE,GAAG;AAAA,IACtB;AAEA,UAAM,WAAW,MAAM,KAAK,QAAQ,WAAW;AAC/C,aAAS,YAAY,KAAK,cAAc;AAExC,QAAI,EAAE,KAAK;AACT,eAAS,YAAY,QAAQ,EAAE,GAAG;AAAA,IACpC,WAAW,EAAE,IAAI;AACf,eAAS,YAAY,OAAO,EAAE,EAAE;AAAA,IAClC,WAAW,EAAE,QAAQ;AACnB,eAAS,YAAY,WAAW,EAAE,MAAM;AAAA,IAC1C,WAAW,EAAE,UAAU;AACrB,eAAS,YAAY,QAAQ,EAAE,QAAQ;AAAA,IACzC,OAAO;AACL,eAAS,YAAY;AAAA,IACvB;AAEA,aAAS,YAAY,IAAI,KAAK,uBAAuB;AAErD,SAAK,QAAQ,iBAAiB,SAAS,SAAS,CAAC;AAEjD,WAAO;AAAA,EACT;AAAA,EAEQ,SAASM,UAAyB;AACxC,UAAM,iBAAiBA,SAAQ,QAAQ,oBAAoB,EAAE;AAC7D,WAAO,qBAAqB,KAAK,cAAc,IAAI,IAAI,KAAK,uBAAuB,IAAI,cAAc;AAAA,EACvG;AAAA,EAEA,MAAc,iBAAiBA,UAA8C;AAC3E,UAAM,WAAW,QAAQ,IAAI;AAE7B,QAAI;AACF,YAAM,UAAU,KAAK,iBAAiB;AACtC,YAAM,MAAM,OAAO;AACnB,cAAQ,MAAM,OAAO;AAGrB,cAAQ,IAAI,0BAA0B,QAAQ,IAAI;AAClD,aAAO,QAAQ,IAAI;AAEnB,UACE,MAAmB;AAAA,QACjB,CAAC,KAAK,cAAc,IAAI;AAAA,QACxB,KAAK,SAASA,QAAO;AAAA,QACrB,CAAC;AAAA,QACD;AAAA,QACA;AAAA,MACF,GACA;AACA,aAAK,YAAY,wBAAwB;AACzC,eAAO,GAAG,OAAO,IAAI,KAAK,cAAc,IAAI;AAAA,MAC9C;AAEA,WAAK,YAAY,yBAAyB;AAC1C,aAAO;AAAA,IACT,UAAE;AACA,cAAQ,IAAI,mBAAmB,QAAQ,IAAI;AAC3C,aAAO,QAAQ,IAAI;AACnB,cAAQ,MAAM,QAAQ;AAAA,IACxB;AAAA,EACF;AAAA,EAEA,MAAc,kBACZA,UACA,UACe;AACf,UAAM,WAAW,QAAQ,IAAI;AAE7B,QAAI;AACF,YAAM,UAAU,KAAK,iBAAiB;AACtC,YAAM,MAAM,OAAO;AACnB,cAAQ,MAAM,OAAO;AACrB,YAAM,SAAS,UAAU,GAAG,OAAO,IAAI,KAAK,cAAc,IAAI,EAAE;AAGhE,cAAQ,IAAI,0BAA0B,QAAQ,IAAI;AAClD,aAAO,QAAQ,IAAI;AAEnB,YAAmB;AAAA,QACjB,CAAC,KAAK,cAAc,IAAI;AAAA,QACxB,KAAK,SAASA,QAAO;AAAA,QACrB;AAAA,QACA;AAAA,MACF;AACA,WAAK,YAAY,4BAA4B;AAAA,IAC/C,UAAE;AACA,cAAQ,IAAI,mBAAmB,QAAQ,IAAI;AAC3C,aAAO,QAAQ,IAAI;AACnB,cAAQ,MAAM,QAAQ;AAAA,IACxB;AAAA,EACF;AAAA,EAEQ,wBAA8B;AACpC,QAAI,QAAQ,IAAI,+BAA+B,IAAI;AACjD,MAAY;AAAA,QACV;AAAA,QACA,KAAK,gBAAgB;AAAA,MACvB;AAEA,MAAY,uBAAU,iCAAiC,KAAK,IAAI,CAAC;AAAA,IACnE;AAAA,EACF;AAAA,EAEA,MAAc,oBAAmC;AAC/C,QAAI;AACF,UAAI,QAAQ,IAAI,+BAA+B,KAAK,gBAAgB,GAAG;AACrE;AAAA,MACF;AAEA,YAAM,aAAa,MAAM;AAAA,QACvB,KAAK,cAAc;AAAA,QACnB,SAAqB,sBAAS,+BAA+B,CAAC;AAAA,MAChE;AACA,MAAY,mBAAM,0BAA0B,WAAW,IAAI,EAAE;AAC7D,UAAI,WAAW,OAAO,GAAG;AACvB,aAAK,YAAY,kBAAkB,OAAO,YAAY,UAAU,CAAC;AAAA,MACnE;AAAA,IACF,SAAS,YAAqB;AAC5B,MAAY;AAAA,QACV,gCAAgCP,gBAAe,UAAU,CAAC;AAAA,MAC5D;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAc,sBAAwC;AACpD,QAAI;AAEJ,UAAM,aAAa,QAAQ,IAAI,MAAM,KAAK,IAAI,MAAM,GAAG;AACvD,eAAW,YAAY,WAAW;AAChC,YAAM,eAAoB,UAAK,UAAU,KAAK;AAE9C,UAAI;AACF,cAAMI,IAAG,OAAO,cAAcA,IAAG,UAAU,IAAI;AAC/C,QAAY,mBAAM,gBAAgB,YAAY,EAAE;AAChD,sBAAc;AACd;AAAA,MACF,QAAQ;AACN,QAAY,mBAAM,cAAc,YAAY,EAAE;AAAA,MAChD;AAAA,IACF;AACA,SAAK,QAAQ,mBAAmB,eAAe,EAAE;AAEjD,QAAI,KAAK,cAAc,eAAe,UAAU;AAC9C,aAAO;AAAA,IACT;AAEA,UAAM,uBAAmC,sBAAS,uBAAuB;AACzE,QAAI,yBAAyB,iBAAiB;AAE5C,aAAO;AAAA,IACT;AAEA,QAAI,gBAAgB,QAAW;AAC7B,aAAO;AAAA,IACT;AACA,IAAY,uBAAU,yBAAyB,eAAe;AAE9D,YAAQ,KAAK,cAAc,YAAY;AAAA,MACrC,KAAK;AACH,QAAY;AAAA,UACV;AAAA,YACE;AAAA,YACA;AAAA,UACF,EAAE,KAAK,GAAG;AAAA,QACZ;AACA;AAAA,MACF,KAAK;AACH,QAAY;AAAA,UACV;AAAA,YACE;AAAA,YACA;AAAA,UACF,EAAE,KAAK,GAAG;AAAA,QACZ;AACA;AAAA,IACJ;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,MAAc,wBAAuC;AACnD,QAAI,SAAS;AAEb,UAAM,UAAmC,CAAC;AAC1C,YAAQ,SAAS;AACjB,YAAQ,YAAY;AAAA,MAClB,QAAQ,CAAC,SAAS;AAChB,kBAAU,KAAK,SAAS;AAAA,MAC1B;AAAA,IACF;AAEA,QAAI;AACF,eAAS;AACT,YAAkB,iBAAK,OAAO,CAAC,SAAS,QAAQ,QAAQ,GAAG,OAAO;AAClE,WAAK,QAAQ,6BAA6B,MAAM;AAAA,IAClD,QAAQ;AACN,UAAI;AAEF,iBAAS;AACT,cAAkB,iBAAK,OAAO,CAAC,SAAS,QAAQ,QAAQ,GAAG,OAAO;AAClE,aAAK,QAAQ,6BAA6B,MAAM;AAAA,MAClD,QAAQ;AACN,aAAK,QAAQ,6BAA6B,MAAM;AAChD;AAAA,MACF;AAAA,IACF;AAEA,QAAI;AACF,YAAM,SAAS,KAAK,MAAM,MAAM;AAChC,UAAI,OAAO,YAAY,GAAG;AACxB,aAAK,gBAAgB;AAAA,MACvB,WAAW,OAAO,YAAY,GAAG;AAC/B,aAAK,gBAAgB;AAAA,MACvB,WAAW,OAAO,YAAY,QAAW;AACvC,aAAK;AAAA,UACH;AAAA,UACA,6BAA6B,KAAK,UAAU,OAAO,OAAO,CAAC;AAAA,QAC7D;AAAA,MACF;AAEA,WAAK,QAAQ,wBAAwB,KAAK,UAAU,OAAO,OAAO,CAAC;AAAA,IACrE,SAAS,GAAY;AACnB,WAAK,QAAQ,4BAA4BJ,gBAAe,CAAC,CAAC;AAAA,IAC5D;AAAA,EACF;AAAA,EAEA,MAAc,eAA8B;AAC1C,UAAM,iBAAiB,MAAM,KAAK,QAAQ,kBAAkB;AAC5D,QAAI,mBAAmB,QAAW;AAChC,MAAY;AAAA,QACV;AAAA,MACF;AACA,MAAY,mBAAM,KAAK,UAAU,KAAK,QAAQ,QAAW,CAAC,CAAC;AAC3D;AAAA,IACF;AAEA,UAAM,QAAQ;AAAA,MACZ,MAAM;AAAA,MACN,SAAS,oBAAI,KAAK;AAAA,MAClB,QAAQ,KAAK;AAAA,IACf;AAEA,QAAI;AACF,aACE,MAAM,KAAK,UAAU,GACrB,KAAK,gBAAgB;AAAA,QACrB,MAAM;AAAA,QACN,SAAS;AAAA,UACP,SAAS;AAAA,QACX;AAAA,MACF,CAAC;AAAA,IACH,SAAS,KAAc;AACrB,WAAK,uBAAuB,GAAG;AAE/B,MAAY;AAAA,QACV,yCAAyC,cAAc,KAAKA,gBAAe,GAAG,CAAC;AAAA,MACjF;AAAA,IACF;AACA,SAAK,SAAS,CAAC;AAAA,EACjB;AACF;AAEA,SAASA,gBAAeC,QAAwB;AAC9C,SAAOA,kBAAiB,SAAS,OAAOA,UAAS,WAC7CA,OAAM,SAAS,IACf,KAAK,UAAUA,MAAK;AAC1B;AAEA,SAAS,qBACP,eACwB;AACxB,QAAM,iBAAiB,cAAc,kBAAkB,cAAc;AAErE,QAAM,YAAoC;AAAA,IACxC,MAAM,cAAc;AAAA,IACpB;AAAA,IACA,aAAa,cAAc,eAAe;AAAA,IAC1C,YAAY,cAAc;AAAA,IAC1B,oBAAoB,cAAc;AAAA,IAClC,YAAY,cAAc;AAAA,IAC1B,oBAAoB,cAAc,sBAAsB;AAAA,MACtD;AAAA,MACA;AAAA,MACA,cAAc;AAAA,IAChB;AAAA,EACF;AAEA,EAAY,mBAAM,iBAAiB;AACnC,EAAY,mBAAM,KAAK,UAAU,WAAW,QAAW,CAAC,CAAC;AAEzD,SAAO;AACT;","names":["error","os","version","platform","arch","actionsCore","exec","readFile","promisify","actionsCore","actionsCore","error","actionsCore","actionsCore","actionsCore","actionsCore","exec","readFileSync","fs","os","promisify","gzip","stringifyError","error","promisify","exec","fs","gzip","readFileSync","version"]} \ No newline at end of file diff --git a/package.json b/package.json index fcf25ff..081e884 100644 --- a/package.json +++ b/package.json @@ -27,15 +27,15 @@ }, "homepage": "https://github.com/DeterminateSystems/detsys-ts#readme", "dependencies": { - "@actions/cache": "^3.2.4", + "@actions/cache": "^3.3.0", "@actions/core": "^1.11.1", "@actions/exec": "^1.1.1", - "got": "^14.4.3", - "type-fest": "^4.26.1" + "got": "^14.4.4", + "type-fest": "^4.27.0" }, "devDependencies": { "@trivago/prettier-plugin-sort-imports": "^4.3.0", - "@types/node": "^20.16.11", + "@types/node": "^20.17.6", "@typescript-eslint/eslint-plugin": "^7.18.0", "eslint": "^8.57.1", "eslint-import-resolver-typescript": "^3.6.3", @@ -43,7 +43,7 @@ "eslint-plugin-import": "^2.31.0", "eslint-plugin-prettier": "^5.2.1", "prettier": "^3.3.3", - "tsup": "^8.3.0", + "tsup": "^8.3.5", "typedoc": "^0.25.13", "typescript": "^5.6.3", "vitest": "^1.6.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ed41c9b..8b55497 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,8 +6,8 @@ settings: dependencies: '@actions/cache': - specifier: ^3.2.4 - version: 3.2.4 + specifier: ^3.3.0 + version: 3.3.0 '@actions/core': specifier: ^1.11.1 version: 1.11.1 @@ -15,19 +15,19 @@ dependencies: specifier: ^1.1.1 version: 1.1.1 got: - specifier: ^14.4.3 - version: 14.4.3 + specifier: ^14.4.4 + version: 14.4.4 type-fest: - specifier: ^4.26.1 - version: 4.26.1 + specifier: ^4.27.0 + version: 4.27.0 devDependencies: '@trivago/prettier-plugin-sort-imports': specifier: ^4.3.0 version: 4.3.0(prettier@3.3.3) '@types/node': - specifier: ^20.16.11 - version: 20.16.11 + specifier: ^20.17.6 + version: 20.17.6 '@typescript-eslint/eslint-plugin': specifier: ^7.18.0 version: 7.18.0(@typescript-eslint/parser@7.18.0)(eslint@8.57.1)(typescript@5.6.3) @@ -50,8 +50,8 @@ devDependencies: specifier: ^3.3.3 version: 3.3.3 tsup: - specifier: ^8.3.0 - version: 8.3.0(typescript@5.6.3) + specifier: ^8.3.5 + version: 8.3.5(typescript@5.6.3) typedoc: specifier: ^0.25.13 version: 0.25.13(typescript@5.6.3) @@ -60,12 +60,12 @@ devDependencies: version: 5.6.3 vitest: specifier: ^1.6.0 - version: 1.6.0(@types/node@20.16.11) + version: 1.6.0(@types/node@20.17.6) packages: - /@actions/cache@3.2.4: - resolution: {integrity: sha512-RuHnwfcDagtX+37s0ZWy7clbOfnZ7AlDJQ7k/9rzt2W4Gnwde3fa/qjSjVuz4vLcLIpc7fUob27CMrqiWZytYA==} + /@actions/cache@3.3.0: + resolution: {integrity: sha512-+eCsMTIZUEm+QA9GqjollOhCdvRrZ1JV8d9Rp34zVNizBkYITO8dhKczP5Xps1dFzc5n59p7vYVtZrGt18bb5Q==} dependencies: '@actions/core': 1.11.1 '@actions/exec': 1.1.1 @@ -74,9 +74,8 @@ packages: '@actions/io': 1.1.3 '@azure/abort-controller': 1.1.0 '@azure/ms-rest-js': 2.7.0 - '@azure/storage-blob': 12.25.0 + '@azure/storage-blob': 12.26.0 semver: 6.3.1 - uuid: 3.4.0 transitivePeerDependencies: - encoding - supports-color @@ -117,23 +116,23 @@ packages: resolution: {integrity: sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==} engines: {node: '>=12.0.0'} dependencies: - tslib: 2.8.0 + tslib: 2.8.1 dev: false /@azure/abort-controller@2.1.2: resolution: {integrity: sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==} engines: {node: '>=18.0.0'} dependencies: - tslib: 2.8.0 + tslib: 2.8.1 dev: false - /@azure/core-auth@1.8.0: - resolution: {integrity: sha512-YvFMowkXzLbXNM11yZtVLhUCmuG0ex7JKOH366ipjmHBhL3vpDcPAeWF+jf0X+jVXwFqo3UhsWUq4kH0ZPdu/g==} + /@azure/core-auth@1.9.0: + resolution: {integrity: sha512-FPwHpZywuyasDSLMqJ6fhbOK3TqUdviZNF8OqRGA4W5Ewib2lEEZ+pBsYcBa88B2NGO/SEnYPGhyBqNlE8ilSw==} engines: {node: '>=18.0.0'} dependencies: '@azure/abort-controller': 2.1.2 - '@azure/core-util': 1.10.0 - tslib: 2.8.0 + '@azure/core-util': 1.11.0 + tslib: 2.8.1 dev: false /@azure/core-client@1.9.2: @@ -141,12 +140,12 @@ packages: engines: {node: '>=18.0.0'} dependencies: '@azure/abort-controller': 2.1.2 - '@azure/core-auth': 1.8.0 - '@azure/core-rest-pipeline': 1.17.0 + '@azure/core-auth': 1.9.0 + '@azure/core-rest-pipeline': 1.18.0 '@azure/core-tracing': 1.2.0 - '@azure/core-util': 1.10.0 + '@azure/core-util': 1.11.0 '@azure/logger': 1.1.4 - tslib: 2.8.0 + tslib: 2.8.1 transitivePeerDependencies: - supports-color dev: false @@ -157,7 +156,7 @@ packages: dependencies: '@azure/abort-controller': 2.1.2 '@azure/core-client': 1.9.2 - '@azure/core-rest-pipeline': 1.17.0 + '@azure/core-rest-pipeline': 1.18.0 transitivePeerDependencies: - supports-color dev: false @@ -167,30 +166,30 @@ packages: engines: {node: '>=18.0.0'} dependencies: '@azure/abort-controller': 2.1.2 - '@azure/core-util': 1.10.0 + '@azure/core-util': 1.11.0 '@azure/logger': 1.1.4 - tslib: 2.8.0 + tslib: 2.8.1 dev: false /@azure/core-paging@1.6.2: resolution: {integrity: sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==} engines: {node: '>=18.0.0'} dependencies: - tslib: 2.8.0 + tslib: 2.8.1 dev: false - /@azure/core-rest-pipeline@1.17.0: - resolution: {integrity: sha512-62Vv8nC+uPId3j86XJ0WI+sBf0jlqTqPUFCBNrGtlaUeQUIXWV/D8GE5A1d+Qx8H7OQojn2WguC8kChD6v0shA==} + /@azure/core-rest-pipeline@1.18.0: + resolution: {integrity: sha512-QSoGUp4Eq/gohEFNJaUOwTN7BCc2nHTjjbm75JT0aD7W65PWM1H/tItz0GsABn22uaKyGxiMhWQLt2r+FGU89Q==} engines: {node: '>=18.0.0'} dependencies: '@azure/abort-controller': 2.1.2 - '@azure/core-auth': 1.8.0 + '@azure/core-auth': 1.9.0 '@azure/core-tracing': 1.2.0 - '@azure/core-util': 1.10.0 + '@azure/core-util': 1.11.0 '@azure/logger': 1.1.4 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.5 - tslib: 2.8.0 + tslib: 2.8.1 transitivePeerDependencies: - supports-color dev: false @@ -199,15 +198,15 @@ packages: resolution: {integrity: sha512-UKTiEJPkWcESPYJz3X5uKRYyOcJD+4nYph+KpfdPRnQJVrZfk0KJgdnaAWKfhsBBtAf/D58Az4AvCJEmWgIBAg==} engines: {node: '>=18.0.0'} dependencies: - tslib: 2.8.0 + tslib: 2.8.1 dev: false - /@azure/core-util@1.10.0: - resolution: {integrity: sha512-dqLWQsh9Nro1YQU+405POVtXnwrIVqPyfUzc4zXCbThTg7+vNNaiMkwbX9AMXKyoFYFClxmB3s25ZFr3+jZkww==} + /@azure/core-util@1.11.0: + resolution: {integrity: sha512-DxOSLua+NdpWoSqULhjDyAZTXFdP/LKkqtYuxxz1SCN289zk3OG8UOpnCQAz/tygyACBtWp/BoO72ptK7msY8g==} engines: {node: '>=18.0.0'} dependencies: '@azure/abort-controller': 2.1.2 - tslib: 2.8.0 + tslib: 2.8.1 dev: false /@azure/core-xml@1.4.4: @@ -215,20 +214,20 @@ packages: engines: {node: '>=18.0.0'} dependencies: fast-xml-parser: 4.5.0 - tslib: 2.8.0 + tslib: 2.8.1 dev: false /@azure/logger@1.1.4: resolution: {integrity: sha512-4IXXzcCdLdlXuCG+8UKEwLA1T1NHqUfanhXYHiQTn+6sfWCZXduqbtXDGceg3Ce5QxTGo7EqmbV6Bi+aqKuClQ==} engines: {node: '>=18.0.0'} dependencies: - tslib: 2.8.0 + tslib: 2.8.1 dev: false /@azure/ms-rest-js@2.7.0: resolution: {integrity: sha512-ngbzWbqF+NmztDOpLBVDxYM+XLcUj7nKhxGbSU9WtIsXfRB//cf2ZbAG5HkOrhU9/wd/ORRB6lM/d69RKVjiyA==} dependencies: - '@azure/core-auth': 1.8.0 + '@azure/core-auth': 1.9.0 abort-controller: 3.0.0 form-data: 2.5.2 node-fetch: 2.7.0 @@ -240,32 +239,33 @@ packages: - encoding dev: false - /@azure/storage-blob@12.25.0: - resolution: {integrity: sha512-oodouhA3nCCIh843tMMbxty3WqfNT+Vgzj3Xo5jqR9UPnzq3d7mzLjlHAYz7lW+b4km3SIgz+NAgztvhm7Z6kQ==} + /@azure/storage-blob@12.26.0: + resolution: {integrity: sha512-SriLPKezypIsiZ+TtlFfE46uuBIap2HeaQVS78e1P7rz5OSbq0rsd52WE1mC5f7vAeLiXqv7I7oRhL3WFZEw3Q==} engines: {node: '>=18.0.0'} dependencies: '@azure/abort-controller': 2.1.2 - '@azure/core-auth': 1.8.0 + '@azure/core-auth': 1.9.0 '@azure/core-client': 1.9.2 '@azure/core-http-compat': 2.1.2 '@azure/core-lro': 2.7.2 '@azure/core-paging': 1.6.2 - '@azure/core-rest-pipeline': 1.17.0 + '@azure/core-rest-pipeline': 1.18.0 '@azure/core-tracing': 1.2.0 - '@azure/core-util': 1.10.0 + '@azure/core-util': 1.11.0 '@azure/core-xml': 1.4.4 '@azure/logger': 1.1.4 events: 3.3.0 - tslib: 2.8.0 + tslib: 2.8.1 transitivePeerDependencies: - supports-color dev: false - /@babel/code-frame@7.25.7: - resolution: {integrity: sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==} + /@babel/code-frame@7.26.2: + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.25.7 + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 picocolors: 1.1.1 dev: true @@ -278,11 +278,12 @@ packages: source-map: 0.5.7 dev: true - /@babel/generator@7.25.7: - resolution: {integrity: sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==} + /@babel/generator@7.26.2: + resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.25.8 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.0.2 @@ -292,80 +293,70 @@ packages: resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.25.8 + '@babel/types': 7.26.0 dev: true /@babel/helper-function-name@7.24.7: resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.25.7 - '@babel/types': 7.25.8 + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 dev: true /@babel/helper-hoist-variables@7.24.7: resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.25.8 + '@babel/types': 7.26.0 dev: true /@babel/helper-split-export-declaration@7.24.7: resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.25.8 - dev: true - - /@babel/helper-string-parser@7.25.7: - resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==} - engines: {node: '>=6.9.0'} + '@babel/types': 7.26.0 dev: true - /@babel/helper-validator-identifier@7.25.7: - resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==} + /@babel/helper-string-parser@7.25.9: + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} engines: {node: '>=6.9.0'} dev: true - /@babel/highlight@7.25.7: - resolution: {integrity: sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==} + /@babel/helper-validator-identifier@7.25.9: + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.25.7 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.1.1 dev: true - /@babel/parser@7.25.8: - resolution: {integrity: sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==} + /@babel/parser@7.26.2: + resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.25.8 + '@babel/types': 7.26.0 dev: true - /@babel/template@7.25.7: - resolution: {integrity: sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==} + /@babel/template@7.25.9: + resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.25.7 - '@babel/parser': 7.25.8 - '@babel/types': 7.25.8 + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 dev: true /@babel/traverse@7.23.2: resolution: {integrity: sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.25.7 - '@babel/generator': 7.25.7 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 '@babel/helper-environment-visitor': 7.24.7 '@babel/helper-function-name': 7.24.7 '@babel/helper-hoist-variables': 7.24.7 '@babel/helper-split-export-declaration': 7.24.7 - '@babel/parser': 7.25.8 - '@babel/types': 7.25.8 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 debug: 4.3.7 globals: 11.12.0 transitivePeerDependencies: @@ -376,17 +367,16 @@ packages: resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.25.7 + '@babel/helper-validator-identifier': 7.25.9 to-fast-properties: 2.0.0 dev: true - /@babel/types@7.25.8: - resolution: {integrity: sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==} + /@babel/types@7.26.0: + resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.25.7 - '@babel/helper-validator-identifier': 7.25.7 - to-fast-properties: 2.0.0 + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 dev: true /@esbuild/aix-ppc64@0.21.5: @@ -398,8 +388,8 @@ packages: dev: true optional: true - /@esbuild/aix-ppc64@0.23.1: - resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} + /@esbuild/aix-ppc64@0.24.0: + resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -416,8 +406,8 @@ packages: dev: true optional: true - /@esbuild/android-arm64@0.23.1: - resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + /@esbuild/android-arm64@0.24.0: + resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -434,8 +424,8 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.23.1: - resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + /@esbuild/android-arm@0.24.0: + resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -452,8 +442,8 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.23.1: - resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} + /@esbuild/android-x64@0.24.0: + resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -470,8 +460,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.23.1: - resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + /@esbuild/darwin-arm64@0.24.0: + resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -488,8 +478,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.23.1: - resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} + /@esbuild/darwin-x64@0.24.0: + resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -506,8 +496,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.23.1: - resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} + /@esbuild/freebsd-arm64@0.24.0: + resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -524,8 +514,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.23.1: - resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} + /@esbuild/freebsd-x64@0.24.0: + resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -542,8 +532,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.23.1: - resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + /@esbuild/linux-arm64@0.24.0: + resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -560,8 +550,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.23.1: - resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + /@esbuild/linux-arm@0.24.0: + resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -578,8 +568,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.23.1: - resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + /@esbuild/linux-ia32@0.24.0: + resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -596,8 +586,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.23.1: - resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} + /@esbuild/linux-loong64@0.24.0: + resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -614,8 +604,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.23.1: - resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} + /@esbuild/linux-mips64el@0.24.0: + resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -632,8 +622,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.23.1: - resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + /@esbuild/linux-ppc64@0.24.0: + resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -650,8 +640,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.23.1: - resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + /@esbuild/linux-riscv64@0.24.0: + resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -668,8 +658,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.23.1: - resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} + /@esbuild/linux-s390x@0.24.0: + resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -686,8 +676,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.23.1: - resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + /@esbuild/linux-x64@0.24.0: + resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} engines: {node: '>=18'} cpu: [x64] os: [linux] @@ -704,8 +694,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.23.1: - resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + /@esbuild/netbsd-x64@0.24.0: + resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] @@ -713,8 +703,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-arm64@0.23.1: - resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} + /@esbuild/openbsd-arm64@0.24.0: + resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -731,8 +721,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.23.1: - resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + /@esbuild/openbsd-x64@0.24.0: + resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] @@ -749,8 +739,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.23.1: - resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} + /@esbuild/sunos-x64@0.24.0: + resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -767,8 +757,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.23.1: - resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + /@esbuild/win32-arm64@0.24.0: + resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -785,8 +775,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.23.1: - resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + /@esbuild/win32-ia32@0.24.0: + resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -803,8 +793,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.23.1: - resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} + /@esbuild/win32-x64@0.24.0: + resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -812,8 +802,8 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.57.1): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + /@eslint-community/eslint-utils@4.4.1(eslint@8.57.1): + resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 @@ -822,8 +812,8 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/regexpp@4.11.1: - resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} + /@eslint-community/regexpp@4.12.1: + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true @@ -967,128 +957,144 @@ packages: engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dev: true - /@rollup/rollup-android-arm-eabi@4.24.0: - resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==} + /@rollup/rollup-android-arm-eabi@4.27.3: + resolution: {integrity: sha512-EzxVSkIvCFxUd4Mgm4xR9YXrcp976qVaHnqom/Tgm+vU79k4vV4eYTjmRvGfeoW8m9LVcsAy/lGjcgVegKEhLQ==} cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-android-arm64@4.24.0: - resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==} + /@rollup/rollup-android-arm64@4.27.3: + resolution: {integrity: sha512-LJc5pDf1wjlt9o/Giaw9Ofl+k/vLUaYsE2zeQGH85giX2F+wn/Cg8b3c5CDP3qmVmeO5NzwVUzQQxwZvC2eQKw==} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-arm64@4.24.0: - resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==} + /@rollup/rollup-darwin-arm64@4.27.3: + resolution: {integrity: sha512-OuRysZ1Mt7wpWJ+aYKblVbJWtVn3Cy52h8nLuNSzTqSesYw1EuN6wKp5NW/4eSre3mp12gqFRXOKTcN3AI3LqA==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-x64@4.24.0: - resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==} + /@rollup/rollup-darwin-x64@4.27.3: + resolution: {integrity: sha512-xW//zjJMlJs2sOrCmXdB4d0uiilZsOdlGQIC/jjmMWT47lkLLoB1nsNhPUcnoqyi5YR6I4h+FjBpILxbEy8JRg==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.24.0: - resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==} + /@rollup/rollup-freebsd-arm64@4.27.3: + resolution: {integrity: sha512-58E0tIcwZ+12nK1WiLzHOD8I0d0kdrY/+o7yFVPRHuVGY3twBwzwDdTIBGRxLmyjciMYl1B/U515GJy+yn46qw==} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-freebsd-x64@4.27.3: + resolution: {integrity: sha512-78fohrpcVwTLxg1ZzBMlwEimoAJmY6B+5TsyAZ3Vok7YabRBUvjYTsRXPTjGEvv/mfgVBepbW28OlMEz4w8wGA==} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.27.3: + resolution: {integrity: sha512-h2Ay79YFXyQi+QZKo3ISZDyKaVD7uUvukEHTOft7kh00WF9mxAaxZsNs3o/eukbeKuH35jBvQqrT61fzKfAB/Q==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm-musleabihf@4.24.0: - resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==} + /@rollup/rollup-linux-arm-musleabihf@4.27.3: + resolution: {integrity: sha512-Sv2GWmrJfRY57urktVLQ0VKZjNZGogVtASAgosDZ1aUB+ykPxSi3X1nWORL5Jk0sTIIwQiPH7iE3BMi9zGWfkg==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.24.0: - resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==} + /@rollup/rollup-linux-arm64-gnu@4.27.3: + resolution: {integrity: sha512-FPoJBLsPW2bDNWjSrwNuTPUt30VnfM8GPGRoLCYKZpPx0xiIEdFip3dH6CqgoT0RnoGXptaNziM0WlKgBc+OWQ==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.24.0: - resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==} + /@rollup/rollup-linux-arm64-musl@4.27.3: + resolution: {integrity: sha512-TKxiOvBorYq4sUpA0JT+Fkh+l+G9DScnG5Dqx7wiiqVMiRSkzTclP35pE6eQQYjP4Gc8yEkJGea6rz4qyWhp3g==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-powerpc64le-gnu@4.24.0: - resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==} + /@rollup/rollup-linux-powerpc64le-gnu@4.27.3: + resolution: {integrity: sha512-v2M/mPvVUKVOKITa0oCFksnQQ/TqGrT+yD0184/cWHIu0LoIuYHwox0Pm3ccXEz8cEQDLk6FPKd1CCm+PlsISw==} cpu: [ppc64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-riscv64-gnu@4.24.0: - resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==} + /@rollup/rollup-linux-riscv64-gnu@4.27.3: + resolution: {integrity: sha512-LdrI4Yocb1a/tFVkzmOE5WyYRgEBOyEhWYJe4gsDWDiwnjYKjNs7PS6SGlTDB7maOHF4kxevsuNBl2iOcj3b4A==} cpu: [riscv64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-s390x-gnu@4.24.0: - resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==} + /@rollup/rollup-linux-s390x-gnu@4.27.3: + resolution: {integrity: sha512-d4wVu6SXij/jyiwPvI6C4KxdGzuZOvJ6y9VfrcleHTwo68fl8vZC5ZYHsCVPUi4tndCfMlFniWgwonQ5CUpQcA==} cpu: [s390x] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.24.0: - resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==} + /@rollup/rollup-linux-x64-gnu@4.27.3: + resolution: {integrity: sha512-/6bn6pp1fsCGEY5n3yajmzZQAh+mW4QPItbiWxs69zskBzJuheb3tNynEjL+mKOsUSFK11X4LYF2BwwXnzWleA==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.24.0: - resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==} + /@rollup/rollup-linux-x64-musl@4.27.3: + resolution: {integrity: sha512-nBXOfJds8OzUT1qUreT/en3eyOXd2EH5b0wr2bVB5999qHdGKkzGzIyKYaKj02lXk6wpN71ltLIaQpu58YFBoQ==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.24.0: - resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==} + /@rollup/rollup-win32-arm64-msvc@4.27.3: + resolution: {integrity: sha512-ogfbEVQgIZOz5WPWXF2HVb6En+kWzScuxJo/WdQTqEgeyGkaa2ui5sQav9Zkr7bnNCLK48uxmmK0TySm22eiuw==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.24.0: - resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==} + /@rollup/rollup-win32-ia32-msvc@4.27.3: + resolution: {integrity: sha512-ecE36ZBMLINqiTtSNQ1vzWc5pXLQHlf/oqGp/bSbi7iedcjcNb6QbCBNG73Euyy2C+l/fn8qKWEwxr+0SSfs3w==} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.24.0: - resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==} + /@rollup/rollup-win32-x64-msvc@4.27.3: + resolution: {integrity: sha512-vliZLrDmYKyaUoMzEbMTg2JkerfBjn03KmAw9CykO0Zzkzoyd7o3iZNam/TpyWNjNT+Cz2iO3P9Smv2wgrR+Eg==} cpu: [x64] os: [win32] requiresBuild: true @@ -1129,7 +1135,7 @@ packages: optional: true dependencies: '@babel/generator': 7.17.7 - '@babel/parser': 7.25.8 + '@babel/parser': 7.26.2 '@babel/traverse': 7.23.2 '@babel/types': 7.17.0 javascript-natural-sort: 0.7.1 @@ -1151,8 +1157,8 @@ packages: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true - /@types/node@20.16.11: - resolution: {integrity: sha512-y+cTCACu92FyA5fgQSAI8A1H429g7aSK2HsO7K4XYUWc4dY5IUz55JSDIYT6/VsOLfGy8vmvQYC2hfb0iF16Uw==} + /@types/node@20.17.6: + resolution: {integrity: sha512-VEI7OdvK2wP7XHnsuXbAJnEpEkF6NjSN45QJlL4VGqZSXsnicpesdTWsg9RISeSdYd3yeRj/y3k5KGjUXYnFwQ==} dependencies: undici-types: 6.19.8 dev: true @@ -1168,7 +1174,7 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.11.1 + '@eslint-community/regexpp': 4.12.1 '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.6.3) '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.1)(typescript@5.6.3) @@ -1178,7 +1184,7 @@ packages: graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.6.3) + ts-api-utils: 1.4.0(typescript@5.6.3) typescript: 5.6.3 transitivePeerDependencies: - supports-color @@ -1227,7 +1233,7 @@ packages: '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.6.3) debug: 4.3.7 eslint: 8.57.1 - ts-api-utils: 1.3.0(typescript@5.6.3) + ts-api-utils: 1.4.0(typescript@5.6.3) typescript: 5.6.3 transitivePeerDependencies: - supports-color @@ -1254,7 +1260,7 @@ packages: is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.6.3) + ts-api-utils: 1.4.0(typescript@5.6.3) typescript: 5.6.3 transitivePeerDependencies: - supports-color @@ -1266,7 +1272,7 @@ packages: peerDependencies: eslint: ^8.56.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.3) @@ -1307,7 +1313,7 @@ packages: /@vitest/snapshot@1.6.0: resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} dependencies: - magic-string: 0.30.12 + magic-string: 0.30.13 pathe: 1.1.2 pretty-format: 29.7.0 dev: true @@ -1334,23 +1340,23 @@ packages: event-target-shim: 5.0.1 dev: false - /acorn-jsx@5.3.2(acorn@8.13.0): + /acorn-jsx@5.3.2(acorn@8.14.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.13.0 + acorn: 8.14.0 dev: true /acorn-walk@8.3.4: resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} dependencies: - acorn: 8.13.0 + acorn: 8.14.0 dev: true - /acorn@8.13.0: - resolution: {integrity: sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==} + /acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} engines: {node: '>=0.4.0'} hasBin: true dev: true @@ -1387,13 +1393,6 @@ packages: resolution: {integrity: sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==} dev: true - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - dependencies: - color-convert: 1.9.3 - dev: true - /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -1415,24 +1414,10 @@ packages: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} dev: true - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: true - /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true - /aria-query@5.1.3: - resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} - dependencies: - deep-equal: 2.2.3 - dev: true - /aria-query@5.3.2: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} engines: {node: '>= 0.4'} @@ -1452,7 +1437,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.5 es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 is-string: 1.0.7 @@ -1469,7 +1454,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.5 es-errors: 1.3.0 es-object-atoms: 1.0.0 es-shim-unscopables: 1.0.2 @@ -1481,7 +1466,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.5 es-shim-unscopables: 1.0.2 dev: true @@ -1491,7 +1476,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.5 es-shim-unscopables: 1.0.2 dev: true @@ -1502,7 +1487,7 @@ packages: array-buffer-byte-length: 1.0.1 call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.5 es-errors: 1.3.0 get-intrinsic: 1.2.4 is-array-buffer: 3.0.4 @@ -1528,8 +1513,8 @@ packages: possible-typed-array-names: 1.0.0 dev: true - /axe-core@4.10.1: - resolution: {integrity: sha512-qPC9o+kD8Tir0lzNGLeghbOrWMr3ZJpaRlCIb6Uobt/7N4FiEDvqUMnxzCHRHmg8vOg14kr5gVNyScRmbMaJ9g==} + /axe-core@4.10.2: + resolution: {integrity: sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==} engines: {node: '>=4'} dev: true @@ -1541,11 +1526,6 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - /binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - dev: true - /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: @@ -1565,24 +1545,24 @@ packages: fill-range: 7.1.1 dev: true - /browserslist@4.24.0: - resolution: {integrity: sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==} + /browserslist@4.24.2: + resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001669 - electron-to-chromium: 1.5.39 + caniuse-lite: 1.0.30001680 + electron-to-chromium: 1.5.63 node-releases: 2.0.18 - update-browserslist-db: 1.1.1(browserslist@4.24.0) + update-browserslist-db: 1.1.1(browserslist@4.24.2) dev: true - /bundle-require@5.0.0(esbuild@0.23.1): + /bundle-require@5.0.0(esbuild@0.24.0): resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} peerDependencies: esbuild: '>=0.18' dependencies: - esbuild: 0.23.1 + esbuild: 0.24.0 load-tsconfig: 0.2.5 dev: true @@ -1625,8 +1605,8 @@ packages: engines: {node: '>=6'} dev: true - /caniuse-lite@1.0.30001669: - resolution: {integrity: sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==} + /caniuse-lite@1.0.30001680: + resolution: {integrity: sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==} dev: true /chai@4.5.0: @@ -1642,15 +1622,6 @@ packages: type-detect: 4.1.0 dev: true - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - dev: true - /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -1665,25 +1636,11 @@ packages: get-func-name: 2.0.2 dev: true - /chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - dev: true - - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + /chokidar@4.0.1: + resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} + engines: {node: '>= 14.16.0'} dependencies: - color-name: 1.1.3 + readdirp: 4.0.2 dev: true /color-convert@2.0.1: @@ -1693,10 +1650,6 @@ packages: color-name: 1.1.4 dev: true - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: true - /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: true @@ -1725,8 +1678,8 @@ packages: engines: {node: ^14.18.0 || >=16.10.0} dev: true - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + /cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} dependencies: path-key: 3.1.1 @@ -1801,30 +1754,6 @@ packages: type-detect: 4.1.0 dev: true - /deep-equal@2.2.3: - resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 - es-get-iterator: 1.1.3 - get-intrinsic: 1.2.4 - is-arguments: 1.1.1 - is-array-buffer: 3.0.4 - is-date-object: 1.0.5 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 - isarray: 2.0.5 - object-is: 1.1.6 - object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.3 - side-channel: 1.0.6 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.2 - which-typed-array: 1.1.15 - dev: true - /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true @@ -1887,8 +1816,8 @@ packages: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /electron-to-chromium@1.5.39: - resolution: {integrity: sha512-4xkpSR6CjuiaNyvwiWDI85N9AxsvbPawB8xc7yzLPonYTuP19BVgYweKyUMFtHEZgIcHWMt1ks5Cqx2m+6/Grg==} + /electron-to-chromium@1.5.63: + resolution: {integrity: sha512-ddeXKuY9BHo/mw145axlyWjlJ1UBt4WK3AlvkT7W2AbqfRQoacVoRUCF6wL3uIx/8wT9oLKXzI+rFqHHscByaA==} dev: true /emoji-regex@8.0.0: @@ -1907,8 +1836,8 @@ packages: tapable: 2.2.1 dev: true - /es-abstract@1.23.3: - resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + /es-abstract@1.23.5: + resolution: {integrity: sha512-vlmniQ0WNPwXqA0BnmwV3Ng7HxiGlh6r5U6JcTMNx8OilcAGqVJBHJcPjqOMaczU9fRuRK5Px2BdVyPRnKMMVQ==} engines: {node: '>= 0.4'} dependencies: array-buffer-byte-length: 1.0.1 @@ -1942,7 +1871,7 @@ packages: is-string: 1.0.7 is-typed-array: 1.1.13 is-weakref: 1.0.2 - object-inspect: 1.13.2 + object-inspect: 1.13.3 object-keys: 1.1.1 object.assign: 4.1.5 regexp.prototype.flags: 1.5.3 @@ -1971,40 +1900,6 @@ packages: engines: {node: '>= 0.4'} dev: true - /es-get-iterator@1.1.3: - resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - is-arguments: 1.1.1 - is-map: 2.0.3 - is-set: 2.0.3 - is-string: 1.0.7 - isarray: 2.0.5 - stop-iteration-iterator: 1.0.0 - dev: true - - /es-iterator-helpers@1.1.0: - resolution: {integrity: sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-set-tostringtag: 2.0.3 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - globalthis: 1.0.4 - has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - internal-slot: 1.0.7 - iterator.prototype: 1.1.3 - safe-array-concat: 1.1.2 - dev: true - /es-object-atoms@1.0.0: resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} engines: {node: '>= 0.4'} @@ -2067,36 +1962,36 @@ packages: '@esbuild/win32-x64': 0.21.5 dev: true - /esbuild@0.23.1: - resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} + /esbuild@0.24.0: + resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} engines: {node: '>=18'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/aix-ppc64': 0.23.1 - '@esbuild/android-arm': 0.23.1 - '@esbuild/android-arm64': 0.23.1 - '@esbuild/android-x64': 0.23.1 - '@esbuild/darwin-arm64': 0.23.1 - '@esbuild/darwin-x64': 0.23.1 - '@esbuild/freebsd-arm64': 0.23.1 - '@esbuild/freebsd-x64': 0.23.1 - '@esbuild/linux-arm': 0.23.1 - '@esbuild/linux-arm64': 0.23.1 - '@esbuild/linux-ia32': 0.23.1 - '@esbuild/linux-loong64': 0.23.1 - '@esbuild/linux-mips64el': 0.23.1 - '@esbuild/linux-ppc64': 0.23.1 - '@esbuild/linux-riscv64': 0.23.1 - '@esbuild/linux-s390x': 0.23.1 - '@esbuild/linux-x64': 0.23.1 - '@esbuild/netbsd-x64': 0.23.1 - '@esbuild/openbsd-arm64': 0.23.1 - '@esbuild/openbsd-x64': 0.23.1 - '@esbuild/sunos-x64': 0.23.1 - '@esbuild/win32-arm64': 0.23.1 - '@esbuild/win32-ia32': 0.23.1 - '@esbuild/win32-x64': 0.23.1 + '@esbuild/aix-ppc64': 0.24.0 + '@esbuild/android-arm': 0.24.0 + '@esbuild/android-arm64': 0.24.0 + '@esbuild/android-x64': 0.24.0 + '@esbuild/darwin-arm64': 0.24.0 + '@esbuild/darwin-x64': 0.24.0 + '@esbuild/freebsd-arm64': 0.24.0 + '@esbuild/freebsd-x64': 0.24.0 + '@esbuild/linux-arm': 0.24.0 + '@esbuild/linux-arm64': 0.24.0 + '@esbuild/linux-ia32': 0.24.0 + '@esbuild/linux-loong64': 0.24.0 + '@esbuild/linux-mips64el': 0.24.0 + '@esbuild/linux-ppc64': 0.24.0 + '@esbuild/linux-riscv64': 0.24.0 + '@esbuild/linux-s390x': 0.24.0 + '@esbuild/linux-x64': 0.24.0 + '@esbuild/netbsd-x64': 0.24.0 + '@esbuild/openbsd-arm64': 0.24.0 + '@esbuild/openbsd-x64': 0.24.0 + '@esbuild/sunos-x64': 0.24.0 + '@esbuild/win32-arm64': 0.24.0 + '@esbuild/win32-ia32': 0.24.0 + '@esbuild/win32-x64': 0.24.0 dev: true /escalade@3.2.0: @@ -2193,12 +2088,12 @@ packages: - supports-color dev: true - /eslint-plugin-escompat@3.11.3(eslint@8.57.1): - resolution: {integrity: sha512-Gz/eTJzl7fK9SPBkvB3t+xc1iribxRc5Fgu6Z7206b5q1d7kG0t8Drtin8MRY4UgGBg8Zu1HG6RGzR35LCUpLA==} + /eslint-plugin-escompat@3.11.4(eslint@8.57.1): + resolution: {integrity: sha512-j0ywwNnIufshOzgAu+PfIig1c7VRClKSNKzpniMT2vXQ4leL5q+e/SpMFQU0nrdL2WFFM44XmhSuwmxb3G0CJg==} peerDependencies: eslint: '>=5.14.1' dependencies: - browserslist: 4.24.0 + browserslist: 4.24.2 eslint: 8.57.1 dev: true @@ -2237,12 +2132,12 @@ packages: aria-query: 5.3.2 eslint: 8.57.1 eslint-config-prettier: 9.1.0(eslint@8.57.1) - eslint-plugin-escompat: 3.11.3(eslint@8.57.1) + eslint-plugin-escompat: 3.11.4(eslint@8.57.1) eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.1) eslint-plugin-filenames: 1.3.2(eslint@8.57.1) eslint-plugin-i18n-text: 1.0.1(eslint@8.57.1) eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) - eslint-plugin-jsx-a11y: 6.10.0(eslint@8.57.1) + eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1) eslint-plugin-no-only-tests: 3.3.0 eslint-plugin-prettier: 5.2.1(eslint-config-prettier@9.1.0)(eslint@8.57.1)(prettier@3.3.3) eslint-rule-documentation: 1.0.23 @@ -2302,21 +2197,20 @@ packages: - supports-color dev: true - /eslint-plugin-jsx-a11y@6.10.0(eslint@8.57.1): - resolution: {integrity: sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==} + /eslint-plugin-jsx-a11y@6.10.2(eslint@8.57.1): + resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 dependencies: - aria-query: 5.1.3 + aria-query: 5.3.2 array-includes: 3.1.8 array.prototype.flatmap: 1.3.2 ast-types-flow: 0.0.8 - axe-core: 4.10.1 + axe-core: 4.10.2 axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - es-iterator-helpers: 1.1.0 eslint: 8.57.1 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -2377,8 +2271,8 @@ packages: deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) - '@eslint-community/regexpp': 4.11.1 + '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) + '@eslint-community/regexpp': 4.12.1 '@eslint/eslintrc': 2.1.4 '@eslint/js': 8.57.1 '@humanwhocodes/config-array': 0.13.0 @@ -2387,7 +2281,7 @@ packages: '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 debug: 4.3.7 doctrine: 3.0.0 escape-string-regexp: 4.0.0 @@ -2423,8 +2317,8 @@ packages: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.13.0 - acorn-jsx: 5.3.2(acorn@8.13.0) + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) eslint-visitor-keys: 3.4.3 dev: true @@ -2468,26 +2362,11 @@ packages: engines: {node: '>=0.8.x'} dev: false - /execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - dev: true - /execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 get-stream: 8.0.1 human-signals: 5.0.0 is-stream: 3.0.0 @@ -2538,8 +2417,8 @@ packages: reusify: 1.0.4 dev: true - /fdir@6.4.1(picomatch@4.0.2): - resolution: {integrity: sha512-upAYvbFc8GU44qWv+r6YnWp3h13/hPFOnpCsuahbxFGmOCm7sc5UT1SytkHLS7Go/UwvhVD9k4dF6PJxpIjqAA==} + /fdir@6.4.2(picomatch@4.0.2): + resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -2575,13 +2454,13 @@ packages: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flatted: 3.3.1 + flatted: 3.3.2 keyv: 4.5.4 rimraf: 3.0.2 dev: true - /flatted@3.3.1: - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + /flatted@3.3.2: + resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} dev: true /for-each@0.3.3: @@ -2594,7 +2473,7 @@ packages: resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} engines: {node: '>=14'} dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 signal-exit: 4.1.0 dev: true @@ -2635,7 +2514,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.5 functions-have-names: 1.2.3 dev: true @@ -2658,11 +2537,6 @@ packages: hasown: 2.0.2 dev: true - /get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - dev: true - /get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} @@ -2767,8 +2641,8 @@ packages: get-intrinsic: 1.2.4 dev: true - /got@14.4.3: - resolution: {integrity: sha512-iTC0Z87yxSijWTh/IpvGpwOhIQK7+GgWkYrMRoN/hB9qeRj9RPuLGODwevs0p5idUf7nrxCVa5IlOmK3b8z+KA==} + /got@14.4.4: + resolution: {integrity: sha512-tqiF7eSgTBwQkxb1LxsEpva8TaMYVisbhplrFVmw9GQE3855Z+MH/mnsXLLOkDxR6hZJRFMj5VTAZ8lmTF8ZOA==} engines: {node: '>=20'} dependencies: '@sindresorhus/is': 7.0.1 @@ -2781,7 +2655,7 @@ packages: lowercase-keys: 3.0.0 p-cancelable: 4.0.1 responselike: 3.0.0 - type-fest: 4.26.1 + type-fest: 4.27.0 dev: false /graceful-fs@4.2.11: @@ -2796,11 +2670,6 @@ packages: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} dev: true - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - dev: true - /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -2868,11 +2737,6 @@ packages: - supports-color dev: false - /human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - dev: true - /human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} @@ -2917,14 +2781,6 @@ packages: side-channel: 1.0.6 dev: true - /is-arguments@1.1.1: - resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - dev: true - /is-array-buffer@3.0.4: resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} engines: {node: '>= 0.4'} @@ -2933,26 +2789,12 @@ packages: get-intrinsic: 1.2.4 dev: true - /is-async-function@2.0.0: - resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.2 - dev: true - /is-bigint@1.0.4: resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} dependencies: has-bigints: 1.0.2 dev: true - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - dependencies: - binary-extensions: 2.3.0 - dev: true - /is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} @@ -2998,24 +2840,11 @@ packages: engines: {node: '>=0.10.0'} dev: true - /is-finalizationregistry@1.0.2: - resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} - dependencies: - call-bind: 1.0.7 - dev: true - /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} dev: true - /is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.2 - dev: true - /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -3023,11 +2852,6 @@ packages: is-extglob: 2.1.1 dev: true - /is-map@2.0.3: - resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} - engines: {node: '>= 0.4'} - dev: true - /is-negative-zero@2.0.3: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} @@ -3058,11 +2882,6 @@ packages: has-tostringtag: 1.0.2 dev: true - /is-set@2.0.3: - resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} - engines: {node: '>= 0.4'} - dev: true - /is-shared-array-buffer@1.0.3: resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} engines: {node: '>= 0.4'} @@ -3070,11 +2889,6 @@ packages: call-bind: 1.0.7 dev: true - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: true - /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -3106,25 +2920,12 @@ packages: which-typed-array: 1.1.15 dev: true - /is-weakmap@2.0.2: - resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} - engines: {node: '>= 0.4'} - dev: true - /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: call-bind: 1.0.7 dev: true - /is-weakset@2.0.3: - resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - dev: true - /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} dev: true @@ -3133,17 +2934,6 @@ packages: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true - /iterator.prototype@1.1.3: - resolution: {integrity: sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==} - engines: {node: '>= 0.4'} - dependencies: - define-properties: 1.2.1 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.6 - set-function-name: 2.0.2 - dev: true - /jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} dependencies: @@ -3258,11 +3048,11 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /local-pkg@0.5.0: - resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + /local-pkg@0.5.1: + resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} engines: {node: '>=14'} dependencies: - mlly: 1.7.2 + mlly: 1.7.3 pkg-types: 1.2.1 dev: true @@ -3320,8 +3110,8 @@ packages: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} dev: true - /magic-string@0.30.12: - resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} + /magic-string@0.30.13: + resolution: {integrity: sha512-8rYBO+MsWkgjDSOvLomYnzhdwEG51olQ4zL5KXnNJWV5MNmrb4rTZdrtkhxjnD/QyZUqR/Z/XDsUs/4ej2nx0g==} dependencies: '@jridgewell/sourcemap-codec': 1.5.0 dev: true @@ -3361,11 +3151,6 @@ packages: mime-db: 1.52.0 dev: false - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: true - /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} @@ -3402,10 +3187,10 @@ packages: engines: {node: '>=16 || 14 >=14.17'} dev: true - /mlly@1.7.2: - resolution: {integrity: sha512-tN3dvVHYVz4DhSXinXIk7u9syPYaJvio118uomkovAtWBT+RdbP6Lfh/5Lvo519YMmwBafwlh20IPTXIStscpA==} + /mlly@1.7.3: + resolution: {integrity: sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==} dependencies: - acorn: 8.13.0 + acorn: 8.14.0 pathe: 1.1.2 pkg-types: 1.2.1 ufo: 1.5.4 @@ -3448,23 +3233,11 @@ packages: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} dev: true - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: true - /normalize-url@8.0.1: resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} engines: {node: '>=14.16'} dev: false - /npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - dependencies: - path-key: 3.1.1 - dev: true - /npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -3477,19 +3250,11 @@ packages: engines: {node: '>=0.10.0'} dev: true - /object-inspect@1.13.2: - resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + /object-inspect@1.13.3: + resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==} engines: {node: '>= 0.4'} dev: true - /object-is@1.1.6: - resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - dev: true - /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} @@ -3511,7 +3276,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.5 es-object-atoms: 1.0.0 dev: true @@ -3521,7 +3286,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.5 dev: true /object.values@1.2.0: @@ -3539,13 +3304,6 @@ packages: wrappy: 1.0.2 dev: true - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 - dev: true - /onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} @@ -3670,7 +3428,7 @@ packages: resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==} dependencies: confbox: 0.1.8 - mlly: 1.7.2 + mlly: 1.7.3 pathe: 1.1.2 dev: true @@ -3700,8 +3458,8 @@ packages: lilconfig: 3.1.2 dev: true - /postcss@8.4.47: - resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + /postcss@8.4.49: + resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 @@ -3754,24 +3512,9 @@ packages: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} dev: true - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.1 - dev: true - - /reflect.getprototypeof@1.0.6: - resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - globalthis: 1.0.4 - which-builtin-type: 1.1.4 + /readdirp@4.0.2: + resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} + engines: {node: '>= 14.16.0'} dev: true /regexp.prototype.flags@1.5.3: @@ -3831,29 +3574,31 @@ packages: glob: 7.2.3 dev: true - /rollup@4.24.0: - resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==} + /rollup@4.27.3: + resolution: {integrity: sha512-SLsCOnlmGt9VoZ9Ek8yBK8tAdmPHeppkw+Xa7yDlCEhDTvwYei03JlWo1fdc7YTfLZ4tD8riJCUyAgTbszk1fQ==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.24.0 - '@rollup/rollup-android-arm64': 4.24.0 - '@rollup/rollup-darwin-arm64': 4.24.0 - '@rollup/rollup-darwin-x64': 4.24.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.24.0 - '@rollup/rollup-linux-arm-musleabihf': 4.24.0 - '@rollup/rollup-linux-arm64-gnu': 4.24.0 - '@rollup/rollup-linux-arm64-musl': 4.24.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.24.0 - '@rollup/rollup-linux-riscv64-gnu': 4.24.0 - '@rollup/rollup-linux-s390x-gnu': 4.24.0 - '@rollup/rollup-linux-x64-gnu': 4.24.0 - '@rollup/rollup-linux-x64-musl': 4.24.0 - '@rollup/rollup-win32-arm64-msvc': 4.24.0 - '@rollup/rollup-win32-ia32-msvc': 4.24.0 - '@rollup/rollup-win32-x64-msvc': 4.24.0 + '@rollup/rollup-android-arm-eabi': 4.27.3 + '@rollup/rollup-android-arm64': 4.27.3 + '@rollup/rollup-darwin-arm64': 4.27.3 + '@rollup/rollup-darwin-x64': 4.27.3 + '@rollup/rollup-freebsd-arm64': 4.27.3 + '@rollup/rollup-freebsd-x64': 4.27.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.27.3 + '@rollup/rollup-linux-arm-musleabihf': 4.27.3 + '@rollup/rollup-linux-arm64-gnu': 4.27.3 + '@rollup/rollup-linux-arm64-musl': 4.27.3 + '@rollup/rollup-linux-powerpc64le-gnu': 4.27.3 + '@rollup/rollup-linux-riscv64-gnu': 4.27.3 + '@rollup/rollup-linux-s390x-gnu': 4.27.3 + '@rollup/rollup-linux-x64-gnu': 4.27.3 + '@rollup/rollup-linux-x64-musl': 4.27.3 + '@rollup/rollup-win32-arm64-msvc': 4.27.3 + '@rollup/rollup-win32-ia32-msvc': 4.27.3 + '@rollup/rollup-win32-x64-msvc': 4.27.3 fsevents: 2.3.3 dev: true @@ -3950,17 +3695,13 @@ packages: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - object-inspect: 1.13.2 + object-inspect: 1.13.3 dev: true /siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} dev: true - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: true - /signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} @@ -3992,15 +3733,8 @@ packages: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true - /std-env@3.7.0: - resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} - dev: true - - /stop-iteration-iterator@1.0.0: - resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} - engines: {node: '>= 0.4'} - dependencies: - internal-slot: 1.0.7 + /std-env@3.8.0: + resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} dev: true /string-width@4.2.3: @@ -4027,7 +3761,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.5 dev: true /string.prototype.trim@1.2.9: @@ -4036,7 +3770,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.23.5 es-object-atoms: 1.0.0 dev: true @@ -4076,11 +3810,6 @@ packages: engines: {node: '>=4'} dev: true - /strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - dev: true - /strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} @@ -4115,13 +3844,6 @@ packages: ts-interface-checker: 0.1.13 dev: true - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - dependencies: - has-flag: 3.0.0 - dev: true - /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -4143,7 +3865,7 @@ packages: engines: {node: ^14.18.0 || >=16.0.0} dependencies: '@pkgr/core': 0.1.1 - tslib: 2.8.0 + tslib: 2.8.1 dev: true /tapable@2.2.1: @@ -4172,11 +3894,15 @@ packages: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} dev: true - /tinyglobby@0.2.9: - resolution: {integrity: sha512-8or1+BGEdk1Zkkw2ii16qSS7uVrQJPre5A9o/XkWPATkk23FZh/15BKFxPnlTy6vkljZxLqYCzzBMj30ZrSvjw==} + /tinyexec@0.3.1: + resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} + dev: true + + /tinyglobby@0.2.10: + resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} engines: {node: '>=12.0.0'} dependencies: - fdir: 6.4.1(picomatch@4.0.2) + fdir: 6.4.2(picomatch@4.0.2) picomatch: 4.0.2 dev: true @@ -4217,8 +3943,8 @@ packages: hasBin: true dev: true - /ts-api-utils@1.3.0(typescript@5.6.3): - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + /ts-api-utils@1.4.0(typescript@5.6.3): + resolution: {integrity: sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==} engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' @@ -4243,11 +3969,11 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: false - /tslib@2.8.0: - resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} + /tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - /tsup@8.3.0(typescript@5.6.3): - resolution: {integrity: sha512-ALscEeyS03IomcuNdFdc0YWGVIkwH1Ws7nfTbAPuoILvEV2hpGQAY72LIOjglGo4ShWpZfpBqP/jpQVCzqYQag==} + /tsup@8.3.5(typescript@5.6.3): + resolution: {integrity: sha512-Tunf6r6m6tnZsG9GYWndg0z8dEV7fD733VBFzFJ5Vcm1FtlXB8xBD/rtrBi2a3YKEV7hHtxiZtW5EAVADoe1pA==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -4265,21 +3991,21 @@ packages: typescript: optional: true dependencies: - bundle-require: 5.0.0(esbuild@0.23.1) + bundle-require: 5.0.0(esbuild@0.24.0) cac: 6.7.14 - chokidar: 3.6.0 + chokidar: 4.0.1 consola: 3.2.3 debug: 4.3.7 - esbuild: 0.23.1 - execa: 5.1.1 + esbuild: 0.24.0 joycon: 3.1.1 picocolors: 1.1.1 postcss-load-config: 6.0.1 resolve-from: 5.0.0 - rollup: 4.24.0 + rollup: 4.27.3 source-map: 0.8.0-beta.0 sucrase: 3.35.0 - tinyglobby: 0.2.9 + tinyexec: 0.3.1 + tinyglobby: 0.2.10 tree-kill: 1.2.2 typescript: 5.6.3 transitivePeerDependencies: @@ -4311,8 +4037,8 @@ packages: engines: {node: '>=10'} dev: true - /type-fest@4.26.1: - resolution: {integrity: sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==} + /type-fest@4.27.0: + resolution: {integrity: sha512-3IMSWgP7C5KSQqmo1wjhKrwsvXAtF33jO3QY+Uy++ia7hqvgSK6iXbbg5PbDBc1P2ZbNEDgejOrN4YooXvhwCw==} engines: {node: '>=16'} dev: false @@ -4404,13 +4130,13 @@ packages: '@fastify/busboy': 2.1.1 dev: false - /update-browserslist-db@1.1.1(browserslist@4.24.0): + /update-browserslist-db@1.1.1(browserslist@4.24.2): resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.24.0 + browserslist: 4.24.2 escalade: 3.2.0 picocolors: 1.1.1 dev: true @@ -4421,18 +4147,12 @@ packages: punycode: 2.3.1 dev: true - /uuid@3.4.0: - resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. - hasBin: true - dev: false - /uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true dev: false - /vite-node@1.6.0(@types/node@20.16.11): + /vite-node@1.6.0(@types/node@20.17.6): resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -4441,7 +4161,7 @@ packages: debug: 4.3.7 pathe: 1.1.2 picocolors: 1.1.1 - vite: 5.4.9(@types/node@20.16.11) + vite: 5.4.11(@types/node@20.17.6) transitivePeerDependencies: - '@types/node' - less @@ -4454,8 +4174,8 @@ packages: - terser dev: true - /vite@5.4.9(@types/node@20.16.11): - resolution: {integrity: sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==} + /vite@5.4.11(@types/node@20.17.6): + resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -4485,15 +4205,15 @@ packages: terser: optional: true dependencies: - '@types/node': 20.16.11 + '@types/node': 20.17.6 esbuild: 0.21.5 - postcss: 8.4.47 - rollup: 4.24.0 + postcss: 8.4.49 + rollup: 4.27.3 optionalDependencies: fsevents: 2.3.3 dev: true - /vitest@1.6.0(@types/node@20.16.11): + /vitest@1.6.0(@types/node@20.17.6): resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -4518,7 +4238,7 @@ packages: jsdom: optional: true dependencies: - '@types/node': 20.16.11 + '@types/node': 20.17.6 '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 '@vitest/snapshot': 1.6.0 @@ -4528,16 +4248,16 @@ packages: chai: 4.5.0 debug: 4.3.7 execa: 8.0.1 - local-pkg: 0.5.0 - magic-string: 0.30.12 + local-pkg: 0.5.1 + magic-string: 0.30.13 pathe: 1.1.2 picocolors: 1.1.1 - std-env: 3.7.0 + std-env: 3.8.0 strip-literal: 2.1.0 tinybench: 2.9.0 tinypool: 0.8.4 - vite: 5.4.9(@types/node@20.16.11) - vite-node: 1.6.0(@types/node@20.16.11) + vite: 5.4.11(@types/node@20.17.6) + vite-node: 1.6.0(@types/node@20.17.6) why-is-node-running: 2.3.0 transitivePeerDependencies: - less @@ -4591,34 +4311,6 @@ packages: is-symbol: 1.0.4 dev: true - /which-builtin-type@1.1.4: - resolution: {integrity: sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==} - engines: {node: '>= 0.4'} - dependencies: - function.prototype.name: 1.1.6 - has-tostringtag: 1.0.2 - is-async-function: 2.0.0 - is-date-object: 1.0.5 - is-finalizationregistry: 1.0.2 - is-generator-function: 1.0.10 - is-regex: 1.1.4 - is-weakref: 1.0.2 - isarray: 2.0.5 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.2 - which-typed-array: 1.1.15 - dev: true - - /which-collection@1.0.2: - resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} - engines: {node: '>= 0.4'} - dependencies: - is-map: 2.0.3 - is-set: 2.0.3 - is-weakmap: 2.0.2 - is-weakset: 2.0.3 - dev: true - /which-typed-array@1.1.15: resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} engines: {node: '>= 0.4'}