Merge pull request #62 from DeterminateSystems/post-fail-only-in-strict-mode

Prevent the Action from failing with strict mode disabled
This commit is contained in:
Luc Perkins 2024-06-05 09:48:54 -07:00 committed by GitHub
commit 78a586ce0e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 275 additions and 223 deletions

View file

@ -8,4 +8,3 @@ end_of_line = lf
charset = utf-8 charset = utf-8
trim_trailing_whitespace = true trim_trailing_whitespace = true
insert_final_newline = true insert_final_newline = true

68
dist/index.js generated vendored
View file

@ -94091,7 +94091,7 @@ const external_node_child_process_namespaceObject = __WEBPACK_EXTERNAL_createReq
const external_node_stream_promises_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:stream/promises"); const external_node_stream_promises_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:stream/promises");
;// CONCATENATED MODULE: external "node:zlib" ;// CONCATENATED MODULE: external "node:zlib"
const external_node_zlib_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:zlib"); const external_node_zlib_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:zlib");
;// CONCATENATED MODULE: ./node_modules/.pnpm/github.com+DeterminateSystems+detsys-ts@fe64ba33b4bdeec0991bb65ae00420bf68b9954c_ler7zqcm5mrt635umsvjcuxcmy/node_modules/detsys-ts/dist/index.js ;// CONCATENATED MODULE: ./node_modules/.pnpm/github.com+DeterminateSystems+detsys-ts@138ea0123a2a3c61fad2c998729b661405132119_63ifpzamfkw2vbemnszqtdfmnu/node_modules/detsys-ts/dist/index.js
var __defProp = Object.defineProperty; var __defProp = Object.defineProperty;
var __export = (target, all) => { var __export = (target, all) => {
for (var name in all) for (var name in all)
@ -94794,7 +94794,7 @@ var DetSysAction = class {
this.nixStoreTrust = "unknown"; this.nixStoreTrust = "unknown";
this.strictMode = getBool("_internal-strict-mode"); this.strictMode = getBool("_internal-strict-mode");
this.features = {}; this.features = {};
this.featureEventMetadata = /* @__PURE__ */ new Map(); this.featureEventMetadata = {};
this.events = []; this.events = [];
this.client = got_dist_source.extend({ this.client = got_dist_source.extend({
retry: { retry: {
@ -95001,7 +95001,7 @@ var DetSysAction = class {
} }
this.features = checkin.options; this.features = checkin.options;
for (const [key, feature] of Object.entries(this.features)) { for (const [key, feature] of Object.entries(this.features)) {
this.featureEventMetadata.set(key, feature.variant); this.featureEventMetadata[key] = feature.variant;
} }
const impactSymbol = /* @__PURE__ */ new Map([ const impactSymbol = /* @__PURE__ */ new Map([
["none", "\u26AA"], ["none", "\u26AA"],
@ -95463,15 +95463,15 @@ async function flakeHubLogin(netrc) {
var ENV_DAEMON_DIR = "MAGIC_NIX_CACHE_DAEMONDIR"; var ENV_DAEMON_DIR = "MAGIC_NIX_CACHE_DAEMONDIR";
var FACT_ENV_VARS_PRESENT = "required_env_vars_present"; var FACT_ENV_VARS_PRESENT = "required_env_vars_present";
var FACT_DIFF_STORE_ENABLED = "diff_store"; var FACT_DIFF_STORE_ENABLED = "diff_store";
var FACT_NOOP_MODE = "noop_mode"; var FACT_ALREADY_RUNNING = "noop_mode";
var STATE_DAEMONDIR = "MAGIC_NIX_CACHE_DAEMONDIR"; var STATE_DAEMONDIR = "MAGIC_NIX_CACHE_DAEMONDIR";
var STATE_ERROR_IN_MAIN = "ERROR_IN_MAIN";
var STATE_STARTED = "MAGIC_NIX_CACHE_STARTED"; var STATE_STARTED = "MAGIC_NIX_CACHE_STARTED";
var STARTED_HINT = "true"; var STARTED_HINT = "true";
var TEXT_NOOP = "Magic Nix Cache is already running, this workflow job is in noop mode. Is the Magic Nix Cache in the workflow twice?"; var TEXT_ALREADY_RUNNING = "Magic Nix Cache is already running, this workflow job is in noop mode. Is the Magic Nix Cache in the workflow twice?";
var TEXT_TRUST_UNTRUSTED = "The Nix daemon does not consider the user running this workflow to be trusted. Magic Nix Cache is disabled."; var TEXT_TRUST_UNTRUSTED = "The Nix daemon does not consider the user running this workflow to be trusted. Magic Nix Cache is disabled.";
var TEXT_TRUST_UNKNOWN = "The Nix daemon may not consider the user running this workflow to be trusted. Magic Nix Cache may not start correctly."; var TEXT_TRUST_UNKNOWN = "The Nix daemon may not consider the user running this workflow to be trusted. Magic Nix Cache may not start correctly.";
var MagicNixCacheAction = class extends DetSysAction { var MagicNixCacheAction = class extends DetSysAction {
@ -95510,17 +95510,17 @@ var MagicNixCacheAction = class extends DetSysAction {
core.saveState(STATE_DAEMONDIR, this.daemonDir); core.saveState(STATE_DAEMONDIR, this.daemonDir);
} }
if (process.env[ENV_DAEMON_DIR] === void 0) { if (process.env[ENV_DAEMON_DIR] === void 0) {
this.noopMode = false; this.alreadyRunning = false;
core.exportVariable(ENV_DAEMON_DIR, this.daemonDir); core.exportVariable(ENV_DAEMON_DIR, this.daemonDir);
} else { } else {
this.noopMode = process.env[ENV_DAEMON_DIR] !== this.daemonDir; this.alreadyRunning = process.env[ENV_DAEMON_DIR] !== this.daemonDir;
} }
this.addFact(FACT_NOOP_MODE, this.noopMode); this.addFact(FACT_ALREADY_RUNNING, this.alreadyRunning);
this.stapleFile("daemon.log", external_node_path_namespaceObject.join(this.daemonDir, "daemon.log")); this.stapleFile("daemon.log", external_node_path_namespaceObject.join(this.daemonDir, "daemon.log"));
} }
async main() { async main() {
if (this.noopMode) { if (this.alreadyRunning) {
core.warning(TEXT_NOOP); core.warning(TEXT_ALREADY_RUNNING);
return; return;
} }
if (this.nixStoreTrust === "untrusted") { if (this.nixStoreTrust === "untrusted") {
@ -95533,8 +95533,14 @@ var MagicNixCacheAction = class extends DetSysAction {
await this.notifyAutoCache(); await this.notifyAutoCache();
} }
async post() { async post() {
if (this.noopMode) { if (!this.strictMode && this.errorInMain) {
core.debug(TEXT_NOOP); core.warning(
`skipping post phase due to error in main phase: ${this.errorInMain}`
);
return;
}
if (this.alreadyRunning) {
core.debug(TEXT_ALREADY_RUNNING);
return; return;
} }
if (this.nixStoreTrust === "untrusted") { if (this.nixStoreTrust === "untrusted") {
@ -95650,12 +95656,11 @@ var MagicNixCacheAction = class extends DetSysAction {
const pidFile = external_node_path_namespaceObject.join(this.daemonDir, "daemon.pid"); const pidFile = external_node_path_namespaceObject.join(this.daemonDir, "daemon.pid");
await promises_namespaceObject.writeFile(pidFile, `${daemon.pid}`); await promises_namespaceObject.writeFile(pidFile, `${daemon.pid}`);
core.info("Waiting for magic-nix-cache to start..."); core.info("Waiting for magic-nix-cache to start...");
await new Promise((resolve, reject) => { await new Promise((resolve) => {
notifyPromise.then((_value) => { notifyPromise.then((_value) => {
resolve(); resolve();
}).catch((err) => { }).catch((e) => {
const msg = `error in notifyPromise: ${err}`; this.exitMain(`Error in notifyPromise: ${stringifyError(e)}`);
reject(new Error(msg));
}); });
daemon.on("exit", async (code, signal) => { daemon.on("exit", async (code, signal) => {
let msg; let msg;
@ -95666,7 +95671,7 @@ var MagicNixCacheAction = class extends DetSysAction {
} else { } else {
msg = "Daemon unexpectedly exited"; msg = "Daemon unexpectedly exited";
} }
reject(new Error(msg)); this.exitMain(msg);
}); });
}); });
daemon.unref(); daemon.unref();
@ -95693,10 +95698,7 @@ var MagicNixCacheAction = class extends DetSysAction {
} }
core.debug(`back from post: ${res.body}`); core.debug(`back from post: ${res.body}`);
} catch (e) { } catch (e) {
core.info(`Error marking the workflow as started:`); this.exitMain(`Error starting the Magic Nix Cache: ${stringifyError(e)}`);
core.info((0,external_node_util_.inspect)(e));
core.info(`Magic Nix Cache may not be running for this workflow.`);
this.failOnError(`Magic Nix Cache failed to start: ${(0,external_node_util_.inspect)(e)}`);
} }
} }
async tearDownAutoCache() { async tearDownAutoCache() {
@ -95728,12 +95730,14 @@ var MagicNixCacheAction = class extends DetSysAction {
core.debug(`unwatching the daemon log`); core.debug(`unwatching the daemon log`);
log.unwatch(); log.unwatch();
} }
core.debug(`killing`); core.debug(`killing daemon process ${pid}`);
try { try {
process.kill(pid, "SIGTERM"); process.kill(pid, "SIGTERM");
} catch (e) { } catch (e) {
if (typeof e === "object" && e && "code" in e && e.code !== "ESRCH") { if (typeof e === "object" && e && "code" in e && e.code !== "ESRCH") {
throw e; if (this.strictMode) {
throw e;
}
} }
} finally { } finally {
if (core.isDebug()) { if (core.isDebug()) {
@ -95743,6 +95747,22 @@ var MagicNixCacheAction = class extends DetSysAction {
} }
} }
} }
// Exit the workflow during the main phase. If strict mode is set, fail; if not, save the error
// message to the workflow's state and exit successfully.
exitMain(msg) {
if (this.strictMode) {
core.setFailed(msg);
} else {
core.saveState(STATE_ERROR_IN_MAIN, msg);
process.exit(0);
}
}
// If the main phase threw an error (not in strict mode), this will be a non-empty
// string available in the post phase.
get errorInMain() {
const state = core.getState(STATE_ERROR_IN_MAIN);
return state !== "" ? state : void 0;
}
}; };
function main() { function main() {
new MagicNixCacheAction().execute(); new MagicNixCacheAction().execute();

2
dist/index.js.map generated vendored

File diff suppressed because one or more lines are too long

View file

@ -33,18 +33,18 @@
}, },
"devDependencies": { "devDependencies": {
"@trivago/prettier-plugin-sort-imports": "^4.3.0", "@trivago/prettier-plugin-sort-imports": "^4.3.0",
"@types/node": "^20.12.13", "@types/node": "^20.14.0",
"@types/tail": "^2.2.3", "@types/tail": "^2.2.3",
"@types/uuid": "^9.0.8", "@types/uuid": "^9.0.8",
"@typescript-eslint/eslint-plugin": "^7.11.0", "@typescript-eslint/eslint-plugin": "^7.12.0",
"@vercel/ncc": "^0.38.1", "@vercel/ncc": "^0.38.1",
"eslint": "^8.57.0", "eslint": "^8.57.0",
"eslint-import-resolver-typescript": "^3.6.1", "eslint-import-resolver-typescript": "^3.6.1",
"eslint-plugin-github": "^4.10.2", "eslint-plugin-github": "^4.10.2",
"eslint-plugin-import": "^2.29.1", "eslint-plugin-import": "^2.29.1",
"eslint-plugin-prettier": "^5.1.3", "eslint-plugin-prettier": "^5.1.3",
"prettier": "^3.2.5", "prettier": "^3.3.0",
"tsup": "^8.0.2", "tsup": "^8.1.0",
"typescript": "^5.4.5" "typescript": "^5.4.5"
} }
} }

View file

@ -13,7 +13,7 @@ dependencies:
version: 1.1.1 version: 1.1.1
detsys-ts: detsys-ts:
specifier: github:DeterminateSystems/detsys-ts specifier: github:DeterminateSystems/detsys-ts
version: github.com/DeterminateSystems/detsys-ts/fe64ba33b4bdeec0991bb65ae00420bf68b9954c version: github.com/DeterminateSystems/detsys-ts/138ea0123a2a3c61fad2c998729b661405132119
got: got:
specifier: ^14.3.0 specifier: ^14.3.0
version: 14.3.0 version: 14.3.0
@ -24,10 +24,10 @@ dependencies:
devDependencies: devDependencies:
'@trivago/prettier-plugin-sort-imports': '@trivago/prettier-plugin-sort-imports':
specifier: ^4.3.0 specifier: ^4.3.0
version: 4.3.0(prettier@3.2.5) version: 4.3.0(prettier@3.3.0)
'@types/node': '@types/node':
specifier: ^20.12.13 specifier: ^20.14.0
version: 20.12.13 version: 20.14.0
'@types/tail': '@types/tail':
specifier: ^2.2.3 specifier: ^2.2.3
version: 2.2.3 version: 2.2.3
@ -35,8 +35,8 @@ devDependencies:
specifier: ^9.0.8 specifier: ^9.0.8
version: 9.0.8 version: 9.0.8
'@typescript-eslint/eslint-plugin': '@typescript-eslint/eslint-plugin':
specifier: ^7.11.0 specifier: ^7.12.0
version: 7.11.0(@typescript-eslint/parser@7.11.0)(eslint@8.57.0)(typescript@5.4.5) version: 7.12.0(@typescript-eslint/parser@7.12.0)(eslint@8.57.0)(typescript@5.4.5)
'@vercel/ncc': '@vercel/ncc':
specifier: ^0.38.1 specifier: ^0.38.1
version: 0.38.1 version: 0.38.1
@ -45,22 +45,22 @@ devDependencies:
version: 8.57.0 version: 8.57.0
eslint-import-resolver-typescript: eslint-import-resolver-typescript:
specifier: ^3.6.1 specifier: ^3.6.1
version: 3.6.1(@typescript-eslint/parser@7.11.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0) version: 3.6.1(@typescript-eslint/parser@7.12.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0)
eslint-plugin-github: eslint-plugin-github:
specifier: ^4.10.2 specifier: ^4.10.2
version: 4.10.2(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)(typescript@5.4.5) version: 4.10.2(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)(typescript@5.4.5)
eslint-plugin-import: eslint-plugin-import:
specifier: ^2.29.1 specifier: ^2.29.1
version: 2.29.1(@typescript-eslint/parser@7.11.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) version: 2.29.1(@typescript-eslint/parser@7.12.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
eslint-plugin-prettier: eslint-plugin-prettier:
specifier: ^5.1.3 specifier: ^5.1.3
version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5) version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.3.0)
prettier: prettier:
specifier: ^3.2.5 specifier: ^3.3.0
version: 3.2.5 version: 3.3.0
tsup: tsup:
specifier: ^8.0.2 specifier: ^8.1.0
version: 8.0.2(typescript@5.4.5) version: 8.1.0(typescript@5.4.5)
typescript: typescript:
specifier: ^5.4.5 specifier: ^5.4.5
version: 5.4.5 version: 5.4.5
@ -364,8 +364,8 @@ packages:
to-fast-properties: 2.0.0 to-fast-properties: 2.0.0
dev: true dev: true
/@esbuild/aix-ppc64@0.19.12: /@esbuild/aix-ppc64@0.21.4:
resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} resolution: {integrity: sha512-Zrm+B33R4LWPLjDEVnEqt2+SLTATlru1q/xYKVn8oVTbiRBGmK2VIMoIYGJDGyftnGaC788IuzGFAlb7IQ0Y8A==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [ppc64] cpu: [ppc64]
os: [aix] os: [aix]
@ -373,8 +373,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@esbuild/android-arm64@0.19.12: /@esbuild/android-arm64@0.21.4:
resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} resolution: {integrity: sha512-fYFnz+ObClJ3dNiITySBUx+oNalYUT18/AryMxfovLkYWbutXsct3Wz2ZWAcGGppp+RVVX5FiXeLYGi97umisA==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [android] os: [android]
@ -382,8 +382,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@esbuild/android-arm@0.19.12: /@esbuild/android-arm@0.21.4:
resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} resolution: {integrity: sha512-E7H/yTd8kGQfY4z9t3nRPk/hrhaCajfA3YSQSBrst8B+3uTcgsi8N+ZWYCaeIDsiVs6m65JPCaQN/DxBRclF3A==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm] cpu: [arm]
os: [android] os: [android]
@ -391,8 +391,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@esbuild/android-x64@0.19.12: /@esbuild/android-x64@0.21.4:
resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} resolution: {integrity: sha512-mDqmlge3hFbEPbCWxp4fM6hqq7aZfLEHZAKGP9viq9wMUBVQx202aDIfc3l+d2cKhUJM741VrCXEzRFhPDKH3Q==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [android] os: [android]
@ -400,8 +400,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@esbuild/darwin-arm64@0.19.12: /@esbuild/darwin-arm64@0.21.4:
resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} resolution: {integrity: sha512-72eaIrDZDSiWqpmCzVaBD58c8ea8cw/U0fq/PPOTqE3c53D0xVMRt2ooIABZ6/wj99Y+h4ksT/+I+srCDLU9TA==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
@ -409,8 +409,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@esbuild/darwin-x64@0.19.12: /@esbuild/darwin-x64@0.21.4:
resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} resolution: {integrity: sha512-uBsuwRMehGmw1JC7Vecu/upOjTsMhgahmDkWhGLWxIgUn2x/Y4tIwUZngsmVb6XyPSTXJYS4YiASKPcm9Zitag==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
@ -418,8 +418,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@esbuild/freebsd-arm64@0.19.12: /@esbuild/freebsd-arm64@0.21.4:
resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} resolution: {integrity: sha512-8JfuSC6YMSAEIZIWNL3GtdUT5NhUA/CMUCpZdDRolUXNAXEE/Vbpe6qlGLpfThtY5NwXq8Hi4nJy4YfPh+TwAg==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [freebsd] os: [freebsd]
@ -427,8 +427,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@esbuild/freebsd-x64@0.19.12: /@esbuild/freebsd-x64@0.21.4:
resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} resolution: {integrity: sha512-8d9y9eQhxv4ef7JmXny7591P/PYsDFc4+STaxC1GBv0tMyCdyWfXu2jBuqRsyhY8uL2HU8uPyscgE2KxCY9imQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [freebsd] os: [freebsd]
@ -436,8 +436,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@esbuild/linux-arm64@0.19.12: /@esbuild/linux-arm64@0.21.4:
resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} resolution: {integrity: sha512-/GLD2orjNU50v9PcxNpYZi+y8dJ7e7/LhQukN3S4jNDXCKkyyiyAz9zDw3siZ7Eh1tRcnCHAo/WcqKMzmi4eMQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
@ -445,8 +445,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@esbuild/linux-arm@0.19.12: /@esbuild/linux-arm@0.21.4:
resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} resolution: {integrity: sha512-2rqFFefpYmpMs+FWjkzSgXg5vViocqpq5a1PSRgT0AvSgxoXmGF17qfGAzKedg6wAwyM7UltrKVo9kxaJLMF/g==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
@ -454,8 +454,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@esbuild/linux-ia32@0.19.12: /@esbuild/linux-ia32@0.21.4:
resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} resolution: {integrity: sha512-pNftBl7m/tFG3t2m/tSjuYeWIffzwAZT9m08+9DPLizxVOsUl8DdFzn9HvJrTQwe3wvJnwTdl92AonY36w/25g==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [ia32] cpu: [ia32]
os: [linux] os: [linux]
@ -463,8 +463,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@esbuild/linux-loong64@0.19.12: /@esbuild/linux-loong64@0.21.4:
resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} resolution: {integrity: sha512-cSD2gzCK5LuVX+hszzXQzlWya6c7hilO71L9h4KHwqI4qeqZ57bAtkgcC2YioXjsbfAv4lPn3qe3b00Zt+jIfQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [loong64] cpu: [loong64]
os: [linux] os: [linux]
@ -472,8 +472,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@esbuild/linux-mips64el@0.19.12: /@esbuild/linux-mips64el@0.21.4:
resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} resolution: {integrity: sha512-qtzAd3BJh7UdbiXCrg6npWLYU0YpufsV9XlufKhMhYMJGJCdfX/G6+PNd0+v877X1JG5VmjBLUiFB0o8EUSicA==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [mips64el] cpu: [mips64el]
os: [linux] os: [linux]
@ -481,8 +481,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@esbuild/linux-ppc64@0.19.12: /@esbuild/linux-ppc64@0.21.4:
resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} resolution: {integrity: sha512-yB8AYzOTaL0D5+2a4xEy7OVvbcypvDR05MsB/VVPVA7nL4hc5w5Dyd/ddnayStDgJE59fAgNEOdLhBxjfx5+dg==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [ppc64] cpu: [ppc64]
os: [linux] os: [linux]
@ -490,8 +490,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@esbuild/linux-riscv64@0.19.12: /@esbuild/linux-riscv64@0.21.4:
resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} resolution: {integrity: sha512-Y5AgOuVzPjQdgU59ramLoqSSiXddu7F3F+LI5hYy/d1UHN7K5oLzYBDZe23QmQJ9PIVUXwOdKJ/jZahPdxzm9w==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [riscv64] cpu: [riscv64]
os: [linux] os: [linux]
@ -499,8 +499,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@esbuild/linux-s390x@0.19.12: /@esbuild/linux-s390x@0.21.4:
resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} resolution: {integrity: sha512-Iqc/l/FFwtt8FoTK9riYv9zQNms7B8u+vAI/rxKuN10HgQIXaPzKZc479lZ0x6+vKVQbu55GdpYpeNWzjOhgbA==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [s390x] cpu: [s390x]
os: [linux] os: [linux]
@ -508,8 +508,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@esbuild/linux-x64@0.19.12: /@esbuild/linux-x64@0.21.4:
resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} resolution: {integrity: sha512-Td9jv782UMAFsuLZINfUpoF5mZIbAj+jv1YVtE58rFtfvoKRiKSkRGQfHTgKamLVT/fO7203bHa3wU122V/Bdg==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
@ -517,8 +517,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@esbuild/netbsd-x64@0.19.12: /@esbuild/netbsd-x64@0.21.4:
resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} resolution: {integrity: sha512-Awn38oSXxsPMQxaV0Ipb7W/gxZtk5Tx3+W+rAPdZkyEhQ6968r9NvtkjhnhbEgWXYbgV+JEONJ6PcdBS+nlcpA==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [netbsd] os: [netbsd]
@ -526,8 +526,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@esbuild/openbsd-x64@0.19.12: /@esbuild/openbsd-x64@0.21.4:
resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} resolution: {integrity: sha512-IsUmQeCY0aU374R82fxIPu6vkOybWIMc3hVGZ3ChRwL9hA1TwY+tS0lgFWV5+F1+1ssuvvXt3HFqe8roCip8Hg==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [openbsd] os: [openbsd]
@ -535,8 +535,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@esbuild/sunos-x64@0.19.12: /@esbuild/sunos-x64@0.21.4:
resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} resolution: {integrity: sha512-hsKhgZ4teLUaDA6FG/QIu2q0rI6I36tZVfM4DBZv3BG0mkMIdEnMbhc4xwLvLJSS22uWmaVkFkqWgIS0gPIm+A==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [sunos] os: [sunos]
@ -544,8 +544,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@esbuild/win32-arm64@0.19.12: /@esbuild/win32-arm64@0.21.4:
resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} resolution: {integrity: sha512-UUfMgMoXPoA/bvGUNfUBFLCh0gt9dxZYIx9W4rfJr7+hKe5jxxHmfOK8YSH4qsHLLN4Ck8JZ+v7Q5fIm1huErg==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
@ -553,8 +553,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@esbuild/win32-ia32@0.19.12: /@esbuild/win32-ia32@0.21.4:
resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} resolution: {integrity: sha512-yIxbspZb5kGCAHWm8dexALQ9en1IYDfErzjSEq1KzXFniHv019VT3mNtTK7t8qdy4TwT6QYHI9sEZabONHg+aw==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [ia32] cpu: [ia32]
os: [win32] os: [win32]
@ -562,8 +562,8 @@ packages:
dev: true dev: true
optional: true optional: true
/@esbuild/win32-x64@0.19.12: /@esbuild/win32-x64@0.21.4:
resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} resolution: {integrity: sha512-sywLRD3UK/qRJt0oBwdpYLBibk7KiRfbswmWRDabuncQYSlf8aLEEUor/oP6KRz8KEG+HoiVLBhPRD5JWjS8Sg==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
@ -581,8 +581,8 @@ packages:
eslint-visitor-keys: 3.4.3 eslint-visitor-keys: 3.4.3
dev: true dev: true
/@eslint-community/regexpp@4.10.0: /@eslint-community/regexpp@4.10.1:
resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} resolution: {integrity: sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
dev: true dev: true
@ -861,7 +861,7 @@ packages:
defer-to-connect: 2.0.1 defer-to-connect: 2.0.1
dev: false dev: false
/@trivago/prettier-plugin-sort-imports@4.3.0(prettier@3.2.5): /@trivago/prettier-plugin-sort-imports@4.3.0(prettier@3.3.0):
resolution: {integrity: sha512-r3n0onD3BTOVUNPhR4lhVK4/pABGpbA7bW3eumZnYdKaHkf1qEC+Mag6DPbGNuuh0eG8AaYj+YqmVHSiGslaTQ==} resolution: {integrity: sha512-r3n0onD3BTOVUNPhR4lhVK4/pABGpbA7bW3eumZnYdKaHkf1qEC+Mag6DPbGNuuh0eG8AaYj+YqmVHSiGslaTQ==}
peerDependencies: peerDependencies:
'@vue/compiler-sfc': 3.x '@vue/compiler-sfc': 3.x
@ -876,7 +876,7 @@ packages:
'@babel/types': 7.17.0 '@babel/types': 7.17.0
javascript-natural-sort: 0.7.1 javascript-natural-sort: 0.7.1
lodash: 4.17.21 lodash: 4.17.21
prettier: 3.2.5 prettier: 3.3.0
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
dev: true dev: true
@ -896,12 +896,12 @@ packages:
/@types/node-fetch@2.6.11: /@types/node-fetch@2.6.11:
resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==}
dependencies: dependencies:
'@types/node': 20.12.13 '@types/node': 20.14.0
form-data: 4.0.0 form-data: 4.0.0
dev: false dev: false
/@types/node@20.12.13: /@types/node@20.14.0:
resolution: {integrity: sha512-gBGeanV41c1L171rR7wjbMiEpEI/l5XFQdLLfhr/REwpgDy/4U8y89+i8kRiLzDyZdOkXh+cRaTetUnCYutoXA==} resolution: {integrity: sha512-5cHBxFGJx6L4s56Bubp4fglrEpmyJypsqI6RgzMfBHWUJQGWAAi8cWcgetEbZXHYXo9C2Fa4EEds/uSyS4cxmA==}
dependencies: dependencies:
undici-types: 5.26.5 undici-types: 5.26.5
@ -912,15 +912,15 @@ packages:
/@types/tunnel@0.0.3: /@types/tunnel@0.0.3:
resolution: {integrity: sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==} resolution: {integrity: sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==}
dependencies: dependencies:
'@types/node': 20.12.13 '@types/node': 20.14.0
dev: false dev: false
/@types/uuid@9.0.8: /@types/uuid@9.0.8:
resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==}
dev: true dev: true
/@typescript-eslint/eslint-plugin@7.11.0(@typescript-eslint/parser@7.11.0)(eslint@8.57.0)(typescript@5.4.5): /@typescript-eslint/eslint-plugin@7.12.0(@typescript-eslint/parser@7.12.0)(eslint@8.57.0)(typescript@5.4.5):
resolution: {integrity: sha512-P+qEahbgeHW4JQ/87FuItjBj8O3MYv5gELDzr8QaQ7fsll1gSMTYb6j87MYyxwf3DtD7uGFB9ShwgmCJB5KmaQ==} resolution: {integrity: sha512-7F91fcbuDf/d3S8o21+r3ZncGIke/+eWk0EpO21LXhDfLahriZF9CGj4fbAetEjlaBdjdSm9a6VeXbpbT6Z40Q==}
engines: {node: ^18.18.0 || >=20.0.0} engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies: peerDependencies:
'@typescript-eslint/parser': ^7.0.0 '@typescript-eslint/parser': ^7.0.0
@ -930,12 +930,12 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@eslint-community/regexpp': 4.10.0 '@eslint-community/regexpp': 4.10.1
'@typescript-eslint/parser': 7.11.0(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.4.5)
'@typescript-eslint/scope-manager': 7.11.0 '@typescript-eslint/scope-manager': 7.12.0
'@typescript-eslint/type-utils': 7.11.0(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/type-utils': 7.12.0(eslint@8.57.0)(typescript@5.4.5)
'@typescript-eslint/utils': 7.11.0(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/utils': 7.12.0(eslint@8.57.0)(typescript@5.4.5)
'@typescript-eslint/visitor-keys': 7.11.0 '@typescript-eslint/visitor-keys': 7.12.0
eslint: 8.57.0 eslint: 8.57.0
graphemer: 1.4.0 graphemer: 1.4.0
ignore: 5.3.1 ignore: 5.3.1
@ -946,8 +946,8 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@typescript-eslint/parser@7.11.0(eslint@8.57.0)(typescript@5.4.5): /@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.4.5):
resolution: {integrity: sha512-yimw99teuaXVWsBcPO1Ais02kwJ1jmNA1KxE7ng0aT7ndr1pT1wqj0OJnsYVGKKlc4QJai86l/025L6z8CljOg==} resolution: {integrity: sha512-dm/J2UDY3oV3TKius2OUZIFHsomQmpHtsV0FTh1WO8EKgHLQ1QCADUqscPgTpU+ih1e21FQSRjXckHn3txn6kQ==}
engines: {node: ^18.18.0 || >=20.0.0} engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies: peerDependencies:
eslint: ^8.56.0 eslint: ^8.56.0
@ -956,10 +956,10 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/scope-manager': 7.11.0 '@typescript-eslint/scope-manager': 7.12.0
'@typescript-eslint/types': 7.11.0 '@typescript-eslint/types': 7.12.0
'@typescript-eslint/typescript-estree': 7.11.0(typescript@5.4.5) '@typescript-eslint/typescript-estree': 7.12.0(typescript@5.4.5)
'@typescript-eslint/visitor-keys': 7.11.0 '@typescript-eslint/visitor-keys': 7.12.0
debug: 4.3.5 debug: 4.3.5
eslint: 8.57.0 eslint: 8.57.0
typescript: 5.4.5 typescript: 5.4.5
@ -967,16 +967,16 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@typescript-eslint/scope-manager@7.11.0: /@typescript-eslint/scope-manager@7.12.0:
resolution: {integrity: sha512-27tGdVEiutD4POirLZX4YzT180vevUURJl4wJGmm6TrQoiYwuxTIY98PBp6L2oN+JQxzE0URvYlzJaBHIekXAw==} resolution: {integrity: sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg==}
engines: {node: ^18.18.0 || >=20.0.0} engines: {node: ^18.18.0 || >=20.0.0}
dependencies: dependencies:
'@typescript-eslint/types': 7.11.0 '@typescript-eslint/types': 7.12.0
'@typescript-eslint/visitor-keys': 7.11.0 '@typescript-eslint/visitor-keys': 7.12.0
dev: true dev: true
/@typescript-eslint/type-utils@7.11.0(eslint@8.57.0)(typescript@5.4.5): /@typescript-eslint/type-utils@7.12.0(eslint@8.57.0)(typescript@5.4.5):
resolution: {integrity: sha512-WmppUEgYy+y1NTseNMJ6mCFxt03/7jTOy08bcg7bxJJdsM4nuhnchyBbE8vryveaJUf62noH7LodPSo5Z0WUCg==} resolution: {integrity: sha512-lib96tyRtMhLxwauDWUp/uW3FMhLA6D0rJ8T7HmH7x23Gk1Gwwu8UZ94NMXBvOELn6flSPiBrCKlehkiXyaqwA==}
engines: {node: ^18.18.0 || >=20.0.0} engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies: peerDependencies:
eslint: ^8.56.0 eslint: ^8.56.0
@ -985,8 +985,8 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/typescript-estree': 7.11.0(typescript@5.4.5) '@typescript-eslint/typescript-estree': 7.12.0(typescript@5.4.5)
'@typescript-eslint/utils': 7.11.0(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/utils': 7.12.0(eslint@8.57.0)(typescript@5.4.5)
debug: 4.3.5 debug: 4.3.5
eslint: 8.57.0 eslint: 8.57.0
ts-api-utils: 1.3.0(typescript@5.4.5) ts-api-utils: 1.3.0(typescript@5.4.5)
@ -995,13 +995,13 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@typescript-eslint/types@7.11.0: /@typescript-eslint/types@7.12.0:
resolution: {integrity: sha512-MPEsDRZTyCiXkD4vd3zywDCifi7tatc4K37KqTprCvaXptP7Xlpdw0NR2hRJTetG5TxbWDB79Ys4kLmHliEo/w==} resolution: {integrity: sha512-o+0Te6eWp2ppKY3mLCU+YA9pVJxhUJE15FV7kxuD9jgwIAa+w/ycGJBMrYDTpVGUM/tgpa9SeMOugSabWFq7bg==}
engines: {node: ^18.18.0 || >=20.0.0} engines: {node: ^18.18.0 || >=20.0.0}
dev: true dev: true
/@typescript-eslint/typescript-estree@7.11.0(typescript@5.4.5): /@typescript-eslint/typescript-estree@7.12.0(typescript@5.4.5):
resolution: {integrity: sha512-cxkhZ2C/iyi3/6U9EPc5y+a6csqHItndvN/CzbNXTNrsC3/ASoYQZEt9uMaEp+xFNjasqQyszp5TumAVKKvJeQ==} resolution: {integrity: sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==}
engines: {node: ^18.18.0 || >=20.0.0} engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies: peerDependencies:
typescript: '*' typescript: '*'
@ -1009,8 +1009,8 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/types': 7.11.0 '@typescript-eslint/types': 7.12.0
'@typescript-eslint/visitor-keys': 7.11.0 '@typescript-eslint/visitor-keys': 7.12.0
debug: 4.3.5 debug: 4.3.5
globby: 11.1.0 globby: 11.1.0
is-glob: 4.0.3 is-glob: 4.0.3
@ -1022,27 +1022,27 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@typescript-eslint/utils@7.11.0(eslint@8.57.0)(typescript@5.4.5): /@typescript-eslint/utils@7.12.0(eslint@8.57.0)(typescript@5.4.5):
resolution: {integrity: sha512-xlAWwPleNRHwF37AhrZurOxA1wyXowW4PqVXZVUNCLjB48CqdPJoJWkrpH2nij9Q3Lb7rtWindtoXwxjxlKKCA==} resolution: {integrity: sha512-Y6hhwxwDx41HNpjuYswYp6gDbkiZ8Hin9Bf5aJQn1bpTs3afYY4GX+MPYxma8jtoIV2GRwTM/UJm/2uGCVv+DQ==}
engines: {node: ^18.18.0 || >=20.0.0} engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies: peerDependencies:
eslint: ^8.56.0 eslint: ^8.56.0
dependencies: dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
'@typescript-eslint/scope-manager': 7.11.0 '@typescript-eslint/scope-manager': 7.12.0
'@typescript-eslint/types': 7.11.0 '@typescript-eslint/types': 7.12.0
'@typescript-eslint/typescript-estree': 7.11.0(typescript@5.4.5) '@typescript-eslint/typescript-estree': 7.12.0(typescript@5.4.5)
eslint: 8.57.0 eslint: 8.57.0
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
- typescript - typescript
dev: true dev: true
/@typescript-eslint/visitor-keys@7.11.0: /@typescript-eslint/visitor-keys@7.12.0:
resolution: {integrity: sha512-7syYk4MzjxTEk0g/w3iqtgxnFQspDJfn6QKD36xMuuhTzjcxY7F8EmBLnALjVyaOF1/bVocu3bS/2/F7rXrveQ==} resolution: {integrity: sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==}
engines: {node: ^18.18.0 || >=20.0.0} engines: {node: ^18.18.0 || >=20.0.0}
dependencies: dependencies:
'@typescript-eslint/types': 7.11.0 '@typescript-eslint/types': 7.12.0
eslint-visitor-keys: 3.4.3 eslint-visitor-keys: 3.4.3
dev: true dev: true
@ -1265,19 +1265,19 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true hasBin: true
dependencies: dependencies:
caniuse-lite: 1.0.30001625 caniuse-lite: 1.0.30001627
electron-to-chromium: 1.4.787 electron-to-chromium: 1.4.788
node-releases: 2.0.14 node-releases: 2.0.14
update-browserslist-db: 1.0.16(browserslist@4.23.0) update-browserslist-db: 1.0.16(browserslist@4.23.0)
dev: true dev: true
/bundle-require@4.1.0(esbuild@0.19.12): /bundle-require@4.2.1(esbuild@0.21.4):
resolution: {integrity: sha512-FeArRFM+ziGkRViKRnSTbHZc35dgmR9yNog05Kn0+ItI59pOAISGvnnIwW1WgFZQW59IxD9QpJnUPkdIPfZuXg==} resolution: {integrity: sha512-7Q/6vkyYAwOmQNRw75x+4yRtZCZJXUDmHHlFdkiV0wgv/reNjtJwpu1jPJ0w2kbEpIM0uoKI3S4/f39dU7AjSA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
peerDependencies: peerDependencies:
esbuild: '>=0.17' esbuild: '>=0.17'
dependencies: dependencies:
esbuild: 0.19.12 esbuild: 0.21.4
load-tsconfig: 0.2.5 load-tsconfig: 0.2.5
dev: true dev: true
@ -1320,8 +1320,8 @@ packages:
engines: {node: '>=6'} engines: {node: '>=6'}
dev: true dev: true
/caniuse-lite@1.0.30001625: /caniuse-lite@1.0.30001627:
resolution: {integrity: sha512-4KE9N2gcRH+HQhpeiRZXd+1niLB/XNLAhSy4z7fI8EzcbcPoAqjNInxVHTiTwWfTIV4w096XG8OtCOCQQKPv3w==} resolution: {integrity: sha512-4zgNiB8nTyV/tHhwZrFs88ryjls/lHiqFhrxCW4qSTeuRByBVnPYpDInchOIySWknznucaf31Z4KYqjfbrecVw==}
dev: true dev: true
/chalk@2.4.2: /chalk@2.4.2:
@ -1524,8 +1524,8 @@ packages:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
dev: true dev: true
/electron-to-chromium@1.4.787: /electron-to-chromium@1.4.788:
resolution: {integrity: sha512-d0EFmtLPjctczO3LogReyM2pbBiiZbnsKnGF+cdZhsYzHm/A0GV7W94kqzLD8SN4O3f3iHlgLUChqghgyznvCQ==} resolution: {integrity: sha512-ubp5+Ev/VV8KuRoWnfP2QF2Bg+O2ZFdb49DiiNbz2VmgkIqrnyYaqIOqj8A6K/3p1xV0QcU5hBQ1+BmB6ot1OA==}
dev: true dev: true
/emoji-regex@8.0.0: /emoji-regex@8.0.0:
@ -1659,35 +1659,35 @@ packages:
is-symbol: 1.0.4 is-symbol: 1.0.4
dev: true dev: true
/esbuild@0.19.12: /esbuild@0.21.4:
resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} resolution: {integrity: sha512-sFMcNNrj+Q0ZDolrp5pDhH0nRPN9hLIM3fRPwgbLYJeSHHgnXSnbV3xYgSVuOeLWH9c73VwmEverVzupIv5xuA==}
engines: {node: '>=12'} engines: {node: '>=12'}
hasBin: true hasBin: true
requiresBuild: true requiresBuild: true
optionalDependencies: optionalDependencies:
'@esbuild/aix-ppc64': 0.19.12 '@esbuild/aix-ppc64': 0.21.4
'@esbuild/android-arm': 0.19.12 '@esbuild/android-arm': 0.21.4
'@esbuild/android-arm64': 0.19.12 '@esbuild/android-arm64': 0.21.4
'@esbuild/android-x64': 0.19.12 '@esbuild/android-x64': 0.21.4
'@esbuild/darwin-arm64': 0.19.12 '@esbuild/darwin-arm64': 0.21.4
'@esbuild/darwin-x64': 0.19.12 '@esbuild/darwin-x64': 0.21.4
'@esbuild/freebsd-arm64': 0.19.12 '@esbuild/freebsd-arm64': 0.21.4
'@esbuild/freebsd-x64': 0.19.12 '@esbuild/freebsd-x64': 0.21.4
'@esbuild/linux-arm': 0.19.12 '@esbuild/linux-arm': 0.21.4
'@esbuild/linux-arm64': 0.19.12 '@esbuild/linux-arm64': 0.21.4
'@esbuild/linux-ia32': 0.19.12 '@esbuild/linux-ia32': 0.21.4
'@esbuild/linux-loong64': 0.19.12 '@esbuild/linux-loong64': 0.21.4
'@esbuild/linux-mips64el': 0.19.12 '@esbuild/linux-mips64el': 0.21.4
'@esbuild/linux-ppc64': 0.19.12 '@esbuild/linux-ppc64': 0.21.4
'@esbuild/linux-riscv64': 0.19.12 '@esbuild/linux-riscv64': 0.21.4
'@esbuild/linux-s390x': 0.19.12 '@esbuild/linux-s390x': 0.21.4
'@esbuild/linux-x64': 0.19.12 '@esbuild/linux-x64': 0.21.4
'@esbuild/netbsd-x64': 0.19.12 '@esbuild/netbsd-x64': 0.21.4
'@esbuild/openbsd-x64': 0.19.12 '@esbuild/openbsd-x64': 0.21.4
'@esbuild/sunos-x64': 0.19.12 '@esbuild/sunos-x64': 0.21.4
'@esbuild/win32-arm64': 0.19.12 '@esbuild/win32-arm64': 0.21.4
'@esbuild/win32-ia32': 0.19.12 '@esbuild/win32-ia32': 0.21.4
'@esbuild/win32-x64': 0.19.12 '@esbuild/win32-x64': 0.21.4
dev: true dev: true
/escalade@3.1.2: /escalade@3.1.2:
@ -1724,7 +1724,7 @@ packages:
- supports-color - supports-color
dev: true dev: true
/eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.11.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0): /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.12.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0):
resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==}
engines: {node: ^14.18.0 || >=16.0.0} engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies: peerDependencies:
@ -1734,8 +1734,8 @@ packages:
debug: 4.3.5 debug: 4.3.5
enhanced-resolve: 5.16.1 enhanced-resolve: 5.16.1
eslint: 8.57.0 eslint: 8.57.0
eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.11.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.12.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.11.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.12.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
fast-glob: 3.3.2 fast-glob: 3.3.2
get-tsconfig: 4.7.5 get-tsconfig: 4.7.5
is-core-module: 2.13.1 is-core-module: 2.13.1
@ -1747,7 +1747,7 @@ packages:
- supports-color - supports-color
dev: true dev: true
/eslint-module-utils@2.8.1(@typescript-eslint/parser@7.11.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.12.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0):
resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==}
engines: {node: '>=4'} engines: {node: '>=4'}
peerDependencies: peerDependencies:
@ -1768,11 +1768,11 @@ packages:
eslint-import-resolver-webpack: eslint-import-resolver-webpack:
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/parser': 7.11.0(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.4.5)
debug: 3.2.7 debug: 3.2.7
eslint: 8.57.0 eslint: 8.57.0
eslint-import-resolver-node: 0.3.9 eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.11.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0) eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.12.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
dev: true dev: true
@ -1816,8 +1816,8 @@ packages:
eslint: ^8.0.1 eslint: ^8.0.1
dependencies: dependencies:
'@github/browserslist-config': 1.0.0 '@github/browserslist-config': 1.0.0
'@typescript-eslint/eslint-plugin': 7.11.0(@typescript-eslint/parser@7.11.0)(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/eslint-plugin': 7.12.0(@typescript-eslint/parser@7.12.0)(eslint@8.57.0)(typescript@5.4.5)
'@typescript-eslint/parser': 7.11.0(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.4.5)
aria-query: 5.3.0 aria-query: 5.3.0
eslint: 8.57.0 eslint: 8.57.0
eslint-config-prettier: 9.1.0(eslint@8.57.0) eslint-config-prettier: 9.1.0(eslint@8.57.0)
@ -1825,13 +1825,13 @@ packages:
eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.0) eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.0)
eslint-plugin-filenames: 1.3.2(eslint@8.57.0) eslint-plugin-filenames: 1.3.2(eslint@8.57.0)
eslint-plugin-i18n-text: 1.0.1(eslint@8.57.0) eslint-plugin-i18n-text: 1.0.1(eslint@8.57.0)
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.11.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.12.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0)
eslint-plugin-no-only-tests: 3.1.0 eslint-plugin-no-only-tests: 3.1.0
eslint-plugin-prettier: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5) eslint-plugin-prettier: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.3.0)
eslint-rule-documentation: 1.0.23 eslint-rule-documentation: 1.0.23
jsx-ast-utils: 3.3.5 jsx-ast-utils: 3.3.5
prettier: 3.2.5 prettier: 3.3.0
svg-element-attributes: 1.3.1 svg-element-attributes: 1.3.1
transitivePeerDependencies: transitivePeerDependencies:
- '@types/eslint' - '@types/eslint'
@ -1849,7 +1849,7 @@ packages:
eslint: 8.57.0 eslint: 8.57.0
dev: true dev: true
/eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.11.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0):
resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==}
engines: {node: '>=4'} engines: {node: '>=4'}
peerDependencies: peerDependencies:
@ -1859,7 +1859,7 @@ packages:
'@typescript-eslint/parser': '@typescript-eslint/parser':
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/parser': 7.11.0(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.4.5)
array-includes: 3.1.8 array-includes: 3.1.8
array.prototype.findlastindex: 1.2.5 array.prototype.findlastindex: 1.2.5
array.prototype.flat: 1.3.2 array.prototype.flat: 1.3.2
@ -1868,7 +1868,7 @@ packages:
doctrine: 2.1.0 doctrine: 2.1.0
eslint: 8.57.0 eslint: 8.57.0
eslint-import-resolver-node: 0.3.9 eslint-import-resolver-node: 0.3.9
eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.11.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.12.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
hasown: 2.0.2 hasown: 2.0.2
is-core-module: 2.13.1 is-core-module: 2.13.1
is-glob: 4.0.3 is-glob: 4.0.3
@ -1914,7 +1914,7 @@ packages:
engines: {node: '>=5.0.0'} engines: {node: '>=5.0.0'}
dev: true dev: true
/eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.2.5): /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.57.0)(prettier@3.3.0):
resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==}
engines: {node: ^14.18.0 || >=16.0.0} engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies: peerDependencies:
@ -1930,7 +1930,7 @@ packages:
dependencies: dependencies:
eslint: 8.57.0 eslint: 8.57.0
eslint-config-prettier: 9.1.0(eslint@8.57.0) eslint-config-prettier: 9.1.0(eslint@8.57.0)
prettier: 3.2.5 prettier: 3.3.0
prettier-linter-helpers: 1.0.0 prettier-linter-helpers: 1.0.0
synckit: 0.8.8 synckit: 0.8.8
dev: true dev: true
@ -1959,7 +1959,7 @@ packages:
hasBin: true hasBin: true
dependencies: dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
'@eslint-community/regexpp': 4.10.0 '@eslint-community/regexpp': 4.10.1
'@eslint/eslintrc': 2.1.4 '@eslint/eslintrc': 2.1.4
'@eslint/js': 8.57.0 '@eslint/js': 8.57.0
'@humanwhocodes/config-array': 0.11.14 '@humanwhocodes/config-array': 0.11.14
@ -2257,7 +2257,7 @@ packages:
hasBin: true hasBin: true
dependencies: dependencies:
foreground-child: 3.1.1 foreground-child: 3.1.1
jackspeak: 3.1.2 jackspeak: 3.2.3
minimatch: 9.0.4 minimatch: 9.0.4
minipass: 7.1.2 minipass: 7.1.2
path-scurry: 1.11.1 path-scurry: 1.11.1
@ -2644,8 +2644,8 @@ packages:
set-function-name: 2.0.2 set-function-name: 2.0.2
dev: true dev: true
/jackspeak@3.1.2: /jackspeak@3.2.3:
resolution: {integrity: sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==} resolution: {integrity: sha512-htOzIMPbpLid/Gq9/zaz9SfExABxqRe1sSCdxntlO/aMD6u0issZQiY25n2GKQUtJ02j7z5sfptlAOMpWWOmvw==}
engines: {node: '>=14'} engines: {node: '>=14'}
dependencies: dependencies:
'@isaacs/cliui': 8.0.2 '@isaacs/cliui': 8.0.2
@ -3084,7 +3084,7 @@ packages:
optional: true optional: true
dependencies: dependencies:
lilconfig: 3.1.1 lilconfig: 3.1.1
yaml: 2.4.2 yaml: 2.4.3
dev: true dev: true
/prelude-ls@1.2.1: /prelude-ls@1.2.1:
@ -3099,8 +3099,8 @@ packages:
fast-diff: 1.3.0 fast-diff: 1.3.0
dev: true dev: true
/prettier@3.2.5: /prettier@3.3.0:
resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} resolution: {integrity: sha512-J9odKxERhCQ10OC2yb93583f6UnYutOeiV5i0zEDS7UGTdUt0u+y8erxl3lBKvwo/JHyyoEdXjwp4dke9oyZ/g==}
engines: {node: '>=14'} engines: {node: '>=14'}
hasBin: true hasBin: true
dev: true dev: true
@ -3542,8 +3542,8 @@ packages:
/tslib@2.6.2: /tslib@2.6.2:
resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
/tsup@8.0.2(typescript@5.4.5): /tsup@8.1.0(typescript@5.4.5):
resolution: {integrity: sha512-NY8xtQXdH7hDUAZwcQdY/Vzlw9johQsaqf7iwZ6g1DOUlFYQ5/AtVAjTvihhEyeRlGo4dLRVHtrRaL35M1daqQ==} resolution: {integrity: sha512-UFdfCAXukax+U6KzeTNO2kAARHcWxmKsnvSPXUcfA1D+kU05XDccCrkffCQpFaWDsZfV0jMyTsxU39VfCp6EOg==}
engines: {node: '>=18'} engines: {node: '>=18'}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@ -3561,11 +3561,11 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
bundle-require: 4.1.0(esbuild@0.19.12) bundle-require: 4.2.1(esbuild@0.21.4)
cac: 6.7.14 cac: 6.7.14
chokidar: 3.6.0 chokidar: 3.6.0
debug: 4.3.5 debug: 4.3.5
esbuild: 0.19.12 esbuild: 0.21.4
execa: 5.1.1 execa: 5.1.1
globby: 11.1.0 globby: 11.1.0
joycon: 3.1.1 joycon: 3.1.1
@ -3815,8 +3815,8 @@ packages:
engines: {node: '>=4.0'} engines: {node: '>=4.0'}
dev: false dev: false
/yaml@2.4.2: /yaml@2.4.3:
resolution: {integrity: sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==} resolution: {integrity: sha512-sntgmxj8o7DE7g/Qi60cqpLBA3HG3STcDA0kO+WfB05jEKhZMbY7umNm2rBpQvsmZ16/lPXCJGW2672dgOUkrg==}
engines: {node: '>= 14'} engines: {node: '>= 14'}
hasBin: true hasBin: true
dev: true dev: true
@ -3826,8 +3826,8 @@ packages:
engines: {node: '>=10'} engines: {node: '>=10'}
dev: true dev: true
github.com/DeterminateSystems/detsys-ts/fe64ba33b4bdeec0991bb65ae00420bf68b9954c: github.com/DeterminateSystems/detsys-ts/138ea0123a2a3c61fad2c998729b661405132119:
resolution: {tarball: https://codeload.github.com/DeterminateSystems/detsys-ts/tar.gz/fe64ba33b4bdeec0991bb65ae00420bf68b9954c} resolution: {tarball: https://codeload.github.com/DeterminateSystems/detsys-ts/tar.gz/138ea0123a2a3c61fad2c998729b661405132119}
name: detsys-ts name: detsys-ts
version: 1.0.0 version: 1.0.0
dependencies: dependencies:

View file

@ -1,13 +1,12 @@
import { netrcPath, tailLog } from "./helpers.js"; import { netrcPath, tailLog } from "./helpers.js";
import * as actionsCore from "@actions/core"; import * as actionsCore from "@actions/core";
import { DetSysAction, inputs } from "detsys-ts"; import { DetSysAction, inputs, stringifyError } from "detsys-ts";
import got, { Got, Response } from "got"; import got, { Got, Response } from "got";
import * as http from "http"; import * as http from "http";
import { SpawnOptions, spawn } from "node:child_process"; import { SpawnOptions, spawn } from "node:child_process";
import { mkdirSync, openSync, readFileSync } from "node:fs"; import { mkdirSync, openSync, readFileSync } from "node:fs";
import * as fs from "node:fs/promises"; import * as fs from "node:fs/promises";
import * as path from "node:path"; import * as path from "node:path";
import { inspect } from "node:util";
// The ENV_DAEMON_DIR is intended to determine if we "own" the daemon or not, // The ENV_DAEMON_DIR is intended to determine if we "own" the daemon or not,
// in the case that a user has put the magic nix cache into their workflow // in the case that a user has put the magic nix cache into their workflow
@ -16,13 +15,14 @@ const ENV_DAEMON_DIR = "MAGIC_NIX_CACHE_DAEMONDIR";
const FACT_ENV_VARS_PRESENT = "required_env_vars_present"; const FACT_ENV_VARS_PRESENT = "required_env_vars_present";
const FACT_DIFF_STORE_ENABLED = "diff_store"; const FACT_DIFF_STORE_ENABLED = "diff_store";
const FACT_NOOP_MODE = "noop_mode"; const FACT_ALREADY_RUNNING = "noop_mode";
const STATE_DAEMONDIR = "MAGIC_NIX_CACHE_DAEMONDIR"; const STATE_DAEMONDIR = "MAGIC_NIX_CACHE_DAEMONDIR";
const STATE_ERROR_IN_MAIN = "ERROR_IN_MAIN";
const STATE_STARTED = "MAGIC_NIX_CACHE_STARTED"; const STATE_STARTED = "MAGIC_NIX_CACHE_STARTED";
const STARTED_HINT = "true"; const STARTED_HINT = "true";
const TEXT_NOOP = const TEXT_ALREADY_RUNNING =
"Magic Nix Cache is already running, this workflow job is in noop mode. Is the Magic Nix Cache in the workflow twice?"; "Magic Nix Cache is already running, this workflow job is in noop mode. Is the Magic Nix Cache in the workflow twice?";
const TEXT_TRUST_UNTRUSTED = const TEXT_TRUST_UNTRUSTED =
"The Nix daemon does not consider the user running this workflow to be trusted. Magic Nix Cache is disabled."; "The Nix daemon does not consider the user running this workflow to be trusted. Magic Nix Cache is disabled.";
@ -33,10 +33,13 @@ class MagicNixCacheAction extends DetSysAction {
private hostAndPort: string; private hostAndPort: string;
private diffStore: boolean; private diffStore: boolean;
private httpClient: Got; private httpClient: Got;
private noopMode: boolean;
private daemonDir: string; private daemonDir: string;
private daemonStarted: boolean; private daemonStarted: boolean;
// This is set to `true` if the MNC is already running, in which case the
// workflow will use the existing process rather than starting a new one.
private alreadyRunning: boolean;
constructor() { constructor() {
super({ super({
name: "magic-nix-cache", name: "magic-nix-cache",
@ -78,19 +81,19 @@ class MagicNixCacheAction extends DetSysAction {
} }
if (process.env[ENV_DAEMON_DIR] === undefined) { if (process.env[ENV_DAEMON_DIR] === undefined) {
this.noopMode = false; this.alreadyRunning = false;
actionsCore.exportVariable(ENV_DAEMON_DIR, this.daemonDir); actionsCore.exportVariable(ENV_DAEMON_DIR, this.daemonDir);
} else { } else {
this.noopMode = process.env[ENV_DAEMON_DIR] !== this.daemonDir; this.alreadyRunning = process.env[ENV_DAEMON_DIR] !== this.daemonDir;
} }
this.addFact(FACT_NOOP_MODE, this.noopMode); this.addFact(FACT_ALREADY_RUNNING, this.alreadyRunning);
this.stapleFile("daemon.log", path.join(this.daemonDir, "daemon.log")); this.stapleFile("daemon.log", path.join(this.daemonDir, "daemon.log"));
} }
async main(): Promise<void> { async main(): Promise<void> {
if (this.noopMode) { if (this.alreadyRunning) {
actionsCore.warning(TEXT_NOOP); actionsCore.warning(TEXT_ALREADY_RUNNING);
return; return;
} }
@ -106,8 +109,17 @@ class MagicNixCacheAction extends DetSysAction {
} }
async post(): Promise<void> { async post(): Promise<void> {
if (this.noopMode) { // If strict mode is off and there was an error in main, such as the daemon not starting,
actionsCore.debug(TEXT_NOOP); // then the post phase is skipped with a warning.
if (!this.strictMode && this.errorInMain) {
actionsCore.warning(
`skipping post phase due to error in main phase: ${this.errorInMain}`,
);
return;
}
if (this.alreadyRunning) {
actionsCore.debug(TEXT_ALREADY_RUNNING);
return; return;
} }
@ -252,17 +264,17 @@ class MagicNixCacheAction extends DetSysAction {
actionsCore.info("Waiting for magic-nix-cache to start..."); actionsCore.info("Waiting for magic-nix-cache to start...");
await new Promise<void>((resolve, reject) => { await new Promise<void>((resolve) => {
notifyPromise notifyPromise
// eslint-disable-next-line github/no-then // eslint-disable-next-line github/no-then
.then((_value) => { .then((_value) => {
resolve(); resolve();
}) })
// eslint-disable-next-line github/no-then // eslint-disable-next-line github/no-then
.catch((err) => { .catch((e: unknown) => {
const msg = `error in notifyPromise: ${err}`; this.exitMain(`Error in notifyPromise: ${stringifyError(e)}`);
reject(new Error(msg));
}); });
daemon.on("exit", async (code, signal) => { daemon.on("exit", async (code, signal) => {
let msg: string; let msg: string;
if (signal) { if (signal) {
@ -272,7 +284,8 @@ class MagicNixCacheAction extends DetSysAction {
} else { } else {
msg = "Daemon unexpectedly exited"; msg = "Daemon unexpectedly exited";
} }
reject(new Error(msg));
this.exitMain(msg);
}); });
}); });
@ -306,11 +319,8 @@ class MagicNixCacheAction extends DetSysAction {
} }
actionsCore.debug(`back from post: ${res.body}`); actionsCore.debug(`back from post: ${res.body}`);
} catch (e) { } catch (e: unknown) {
actionsCore.info(`Error marking the workflow as started:`); this.exitMain(`Error starting the Magic Nix Cache: ${stringifyError(e)}`);
actionsCore.info(inspect(e));
actionsCore.info(`Magic Nix Cache may not be running for this workflow.`);
this.failOnError(`Magic Nix Cache failed to start: ${inspect(e)}`);
} }
} }
@ -349,12 +359,17 @@ class MagicNixCacheAction extends DetSysAction {
log.unwatch(); log.unwatch();
} }
actionsCore.debug(`killing`); actionsCore.debug(`killing daemon process ${pid}`);
try { try {
process.kill(pid, "SIGTERM"); process.kill(pid, "SIGTERM");
} catch (e) { } catch (e: unknown) {
if (typeof e === "object" && e && "code" in e && e.code !== "ESRCH") { if (typeof e === "object" && e && "code" in e && e.code !== "ESRCH") {
throw e; // Throw an error only in strict mode, otherwise ignore because
// we're in the post phase and shutting down after this anyway
if (this.strictMode) {
throw e;
}
} }
} finally { } finally {
if (actionsCore.isDebug()) { if (actionsCore.isDebug()) {
@ -364,6 +379,24 @@ class MagicNixCacheAction extends DetSysAction {
} }
} }
} }
// Exit the workflow during the main phase. If strict mode is set, fail; if not, save the error
// message to the workflow's state and exit successfully.
private exitMain(msg: string): void {
if (this.strictMode) {
actionsCore.setFailed(msg);
} else {
actionsCore.saveState(STATE_ERROR_IN_MAIN, msg);
process.exit(0);
}
}
// If the main phase threw an error (not in strict mode), this will be a non-empty
// string available in the post phase.
private get errorInMain(): string | undefined {
const state = actionsCore.getState(STATE_ERROR_IN_MAIN);
return state !== "" ? state : undefined;
}
} }
function main(): void { function main(): void {