Merge pull request #47 from DeterminateSystems/debug-daemon-listen

Debug daemon listen
This commit is contained in:
Graham Christensen 2024-05-06 13:25:00 -04:00 committed by GitHub
commit e8013ee4e5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 299 additions and 217 deletions

100
dist/index.js generated vendored
View file

@ -93750,7 +93750,9 @@ const got = source_create(defaults);
;// CONCATENATED MODULE: external "node:stream/promises" ;// CONCATENATED MODULE: external "node:stream/promises"
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: ./node_modules/.pnpm/github.com+DeterminateSystems+detsys-ts@5abcb239472d24b114a53f70800f0e42fc30819c_ey4bwtjkop43mcem42nicbf3we/node_modules/detsys-ts/dist/index.js ;// CONCATENATED MODULE: external "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@b2ff406239cb9d311fa9dad332ccfee2669ce6dc_o2lwkok3rvt3rnal2ayts63upe/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)
@ -94096,17 +94098,27 @@ function getNixPlatform(archOs) {
// src/inputs.ts // src/inputs.ts
var inputs_exports = {}; var inputs_exports = {};
__export(inputs_exports, { __export(inputs_exports, {
getArrayOfStrings: () => getArrayOfStrings,
getBool: () => getBool, getBool: () => getBool,
getMultilineStringOrNull: () => getMultilineStringOrNull, getMultilineStringOrNull: () => getMultilineStringOrNull,
getNumberOrNull: () => getNumberOrNull, getNumberOrNull: () => getNumberOrNull,
getString: () => getString, getString: () => getString,
getStringOrNull: () => getStringOrNull, getStringOrNull: () => getStringOrNull,
getStringOrUndefined: () => getStringOrUndefined getStringOrUndefined: () => getStringOrUndefined,
handleString: () => handleString
}); });
var getBool = (name) => { var getBool = (name) => {
return core.getBooleanInput(name); return core.getBooleanInput(name);
}; };
var getArrayOfStrings = (name, separator) => {
const original = getString(name);
return handleString(original, separator);
};
var handleString = (input, separator) => {
const sepChar = separator === "comma" ? "," : /\s+/;
return input.trim().split(sepChar).map((s) => s.trim());
};
var getMultilineStringOrNull = (name) => { var getMultilineStringOrNull = (name) => {
const value = core.getMultilineInput(name); const value = core.getMultilineInput(name);
if (value.length === 0) { if (value.length === 0) {
@ -94186,18 +94198,24 @@ function constructSourceParameters(legacyPrefix) {
var DEFAULT_IDS_HOST = "https://install.determinate.systems"; var DEFAULT_IDS_HOST = "https://install.determinate.systems";
var IDS_HOST = process.env["IDS_HOST"] ?? DEFAULT_IDS_HOST; var IDS_HOST = process.env["IDS_HOST"] ?? DEFAULT_IDS_HOST;
var EVENT_EXCEPTION = "exception"; var EVENT_EXCEPTION = "exception";
var EVENT_ARTIFACT_CACHE_HIT = "artifact_cache_hit"; var EVENT_ARTIFACT_CACHE_HIT = "artifact_cache_hit";
var EVENT_ARTIFACT_CACHE_MISS = "artifact_cache_miss"; var EVENT_ARTIFACT_CACHE_MISS = "artifact_cache_miss";
var EVENT_ARTIFACT_CACHE_PERSIST = "artifact_cache_persist";
var FACT_ENDED_WITH_EXCEPTION = "ended_with_exception"; var FACT_ENDED_WITH_EXCEPTION = "ended_with_exception";
var FACT_FINAL_EXCEPTION = "final_exception"; var FACT_FINAL_EXCEPTION = "final_exception";
var FACT_SOURCE_URL = "source_url";
var FACT_SOURCE_URL_ETAG = "source_url_etag";
var IdsToolbox = class { var IdsToolbox = class {
constructor(actionOptions) { constructor(actionOptions) {
this.actionOptions = makeOptionsConfident(actionOptions); this.actionOptions = makeOptionsConfident(actionOptions);
this.hookMain = void 0; this.hookMain = void 0;
this.hookPost = void 0; this.hookPost = void 0;
this.exceptionAttachments = /* @__PURE__ */ new Map();
this.events = []; this.events = [];
this.client = got_dist_source.extend({ this.client = got_dist_source.extend({
retry: { retry: {
@ -94276,6 +94294,17 @@ var IdsToolbox = class {
); );
this.recordEvent(`begin_${this.executionPhase}`); this.recordEvent(`begin_${this.executionPhase}`);
} }
/**
* Attach a file to the diagnostics data in error conditions.
*
* The file at `location` doesn't need to exist when stapleFile is called.
*
* 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}`.
* If the file is readable, the file's contents will be stored in a context value at `staple_value_{name}`.
*/
stapleFile(name, location) {
this.exceptionAttachments.set(name, location);
}
onMain(callback) { onMain(callback) {
this.hookMain = callback; this.hookMain = callback;
} }
@ -94288,6 +94317,9 @@ var IdsToolbox = class {
process.exitCode = 1; process.exitCode = 1;
}); });
} }
stringifyError(error2) {
return error2 instanceof Error || typeof error2 == "string" ? error2.toString() : JSON.stringify(error2);
}
async executeAsync() { async executeAsync() {
try { try {
process.env.DETSYS_CORRELATION = JSON.stringify( process.env.DETSYS_CORRELATION = JSON.stringify(
@ -94305,14 +94337,31 @@ var IdsToolbox = class {
this.addFact(FACT_ENDED_WITH_EXCEPTION, false); this.addFact(FACT_ENDED_WITH_EXCEPTION, false);
} catch (error2) { } catch (error2) {
this.addFact(FACT_ENDED_WITH_EXCEPTION, true); this.addFact(FACT_ENDED_WITH_EXCEPTION, true);
const reportable = error2 instanceof Error || typeof error2 == "string" ? error2.toString() : JSON.stringify(error2); const reportable = this.stringifyError(error2);
this.addFact(FACT_FINAL_EXCEPTION, reportable); this.addFact(FACT_FINAL_EXCEPTION, reportable);
if (this.executionPhase === "post") { if (this.executionPhase === "post") {
core.warning(reportable); core.warning(reportable);
} else { } else {
core.setFailed(reportable); core.setFailed(reportable);
} }
this.recordEvent(EVENT_EXCEPTION); const do_gzip = (0,external_node_util_.promisify)(external_node_zlib_namespaceObject.gzip);
const exceptionContext = /* @__PURE__ */ new Map();
for (const [attachmentLabel, filePath] of this.exceptionAttachments) {
try {
const logText = (0,external_node_fs_namespaceObject.readFileSync)(filePath);
const buf = await do_gzip(logText);
exceptionContext.set(
`staple_value_${attachmentLabel}`,
buf.toString("base64")
);
} catch (e) {
exceptionContext.set(
`staple_failure_${attachmentLabel}`,
this.stringifyError(e)
);
}
}
this.recordEvent(EVENT_EXCEPTION, Object.fromEntries(exceptionContext));
} finally { } finally {
await this.complete(); await this.complete();
} }
@ -94354,6 +94403,7 @@ var IdsToolbox = class {
const versionCheckup = await this.client.head(correlatedUrl); const versionCheckup = await this.client.head(correlatedUrl);
if (versionCheckup.headers.etag) { if (versionCheckup.headers.etag) {
const v = versionCheckup.headers.etag; const v = versionCheckup.headers.etag;
this.addFact(FACT_SOURCE_URL_ETAG, v);
core.debug( core.debug(
`Checking the tool cache for ${this.getUrl()} at ${v}` `Checking the tool cache for ${this.getUrl()} at ${v}`
); );
@ -94402,6 +94452,7 @@ var IdsToolbox = class {
getUrl() { getUrl() {
const p = this.sourceParameters; const p = this.sourceParameters;
if (p.url) { if (p.url) {
this.addFact(FACT_SOURCE_URL, p.url);
return new URL(p.url); return new URL(p.url);
} }
const fetchUrl = new URL(IDS_HOST); const fetchUrl = new URL(IDS_HOST);
@ -94418,6 +94469,7 @@ var IdsToolbox = class {
fetchUrl.pathname += `/stable`; fetchUrl.pathname += `/stable`;
} }
fetchUrl.pathname += `/${this.architectureFetchSuffix}`; fetchUrl.pathname += `/${this.architectureFetchSuffix}`;
this.addFact(FACT_SOURCE_URL, fetchUrl.toString());
return fetchUrl; return fetchUrl;
} }
cacheKey(version2) { cacheKey(version2) {
@ -94465,7 +94517,7 @@ var IdsToolbox = class {
void 0, void 0,
true true
); );
this.recordEvent(EVENT_ARTIFACT_CACHE_HIT); this.recordEvent(EVENT_ARTIFACT_CACHE_PERSIST);
} finally { } finally {
process.env.GITHUB_WORKSPACE = process.env.GITHUB_WORKSPACE_BACKUP; process.env.GITHUB_WORKSPACE = process.env.GITHUB_WORKSPACE_BACKUP;
delete process.env.GITHUB_WORKSPACE_BACKUP; delete process.env.GITHUB_WORKSPACE_BACKUP;
@ -94690,6 +94742,8 @@ async function flakeHubLogin(netrc) {
var ENV_CACHE_DAEMONDIR = "MAGIC_NIX_CACHE_DAEMONDIR"; var ENV_CACHE_DAEMONDIR = "MAGIC_NIX_CACHE_DAEMONDIR";
var ENV_CACHE_STARTED = "MAGIC_NIX_CACHE_STARTED";
var STARTED_HINT = "true";
var MagicNixCacheAction = class { var MagicNixCacheAction = class {
constructor() { constructor() {
this.idslib = new IdsToolbox({ this.idslib = new IdsToolbox({
@ -94713,9 +94767,20 @@ var MagicNixCacheAction = class {
] ]
} }
}); });
this.daemonStarted = process.env[ENV_CACHE_STARTED] === STARTED_HINT;
if (process.env[ENV_CACHE_DAEMONDIR]) {
this.daemonDir = process.env[ENV_CACHE_DAEMONDIR];
} else {
this.daemonDir = this.idslib.getTemporaryName();
(0,external_node_fs_namespaceObject.mkdirSync)(this.daemonDir);
core.exportVariable(ENV_CACHE_DAEMONDIR, this.daemonDir);
}
this.idslib.stapleFile(
"daemon.log",
external_node_path_namespaceObject.join(this.daemonDir, "daemon.log")
);
} }
async setUpAutoCache() { async setUpAutoCache() {
const tmpdir3 = process.env["RUNNER_TEMP"] || external_node_os_.tmpdir();
const requiredEnv = [ const requiredEnv = [
"ACTIONS_CACHE_URL", "ACTIONS_CACHE_URL",
"ACTIONS_RUNTIME_URL", "ACTIONS_RUNTIME_URL",
@ -94736,7 +94801,8 @@ var MagicNixCacheAction = class {
core.debug( core.debug(
`GitHub Action Cache URL: ${process.env["ACTIONS_CACHE_URL"]}` `GitHub Action Cache URL: ${process.env["ACTIONS_CACHE_URL"]}`
); );
const daemonDir = await promises_namespaceObject.mkdtemp(external_node_path_namespaceObject.join(tmpdir3, "magic-nix-cache-")); this.daemonStarted = true;
core.exportVariable(ENV_CACHE_STARTED, STARTED_HINT);
const sourceBinary = inputs_exports.getStringOrNull("source-binary"); const sourceBinary = inputs_exports.getStringOrNull("source-binary");
const daemonBin = sourceBinary !== null ? sourceBinary : await this.fetchAutoCacher(); const daemonBin = sourceBinary !== null ? sourceBinary : await this.fetchAutoCacher();
let runEnv; let runEnv;
@ -94768,9 +94834,9 @@ var MagicNixCacheAction = class {
}); });
}); });
}); });
const outputPath = `${daemonDir}/daemon.log`; const outputPath = `${this.daemonDir}/daemon.log`;
const output = (0,external_node_fs_namespaceObject.openSync)(outputPath, "a"); const output = (0,external_node_fs_namespaceObject.openSync)(outputPath, "a");
const log = tailLog(daemonDir); const log = tailLog(this.daemonDir);
const netrc = await netrcPath(); const netrc = await netrcPath();
const nixConfPath = `${process.env["HOME"]}/.config/nix/nix.conf`; const nixConfPath = `${process.env["HOME"]}/.config/nix/nix.conf`;
const hostAndPort = inputs_exports.getString("listen"); const hostAndPort = inputs_exports.getString("listen");
@ -94813,7 +94879,7 @@ var MagicNixCacheAction = class {
core.debug("Full daemon start command:"); core.debug("Full daemon start command:");
core.debug(`${daemonBin} ${daemonCliFlags.join(" ")}`); core.debug(`${daemonBin} ${daemonCliFlags.join(" ")}`);
const daemon = (0,external_node_child_process_namespaceObject.spawn)(daemonBin, daemonCliFlags, opts); const daemon = (0,external_node_child_process_namespaceObject.spawn)(daemonBin, daemonCliFlags, opts);
const pidFile = external_node_path_namespaceObject.join(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, reject) => {
@ -94834,7 +94900,6 @@ var MagicNixCacheAction = class {
}); });
daemon.unref(); daemon.unref();
core.info("Launched Magic Nix Cache"); core.info("Launched Magic Nix Cache");
core.exportVariable(ENV_CACHE_DAEMONDIR, daemonDir);
log.unwatch(); log.unwatch();
} }
async fetchAutoCacher() { async fetchAutoCacher() {
@ -94848,8 +94913,8 @@ var MagicNixCacheAction = class {
return `${lastPath}/bin/magic-nix-cache`; return `${lastPath}/bin/magic-nix-cache`;
} }
async notifyAutoCache() { async notifyAutoCache() {
const daemonDir = process.env[ENV_CACHE_DAEMONDIR]; if (!this.daemonStarted) {
if (!daemonDir) { core.debug("magic-nix-cache not started - Skipping");
return; return;
} }
try { try {
@ -94864,18 +94929,17 @@ var MagicNixCacheAction = class {
} }
} }
async tearDownAutoCache() { async tearDownAutoCache() {
const daemonDir = process.env[ENV_CACHE_DAEMONDIR]; if (!this.daemonStarted) {
if (!daemonDir) {
core.debug("magic-nix-cache not started - Skipping"); core.debug("magic-nix-cache not started - Skipping");
return; return;
} }
const pidFile = external_node_path_namespaceObject.join(daemonDir, "daemon.pid"); const pidFile = external_node_path_namespaceObject.join(this.daemonDir, "daemon.pid");
const pid = parseInt(await promises_namespaceObject.readFile(pidFile, { encoding: "ascii" })); const pid = parseInt(await promises_namespaceObject.readFile(pidFile, { encoding: "ascii" }));
core.debug(`found daemon pid: ${pid}`); core.debug(`found daemon pid: ${pid}`);
if (!pid) { if (!pid) {
throw new Error("magic-nix-cache did not start successfully"); throw new Error("magic-nix-cache did not start successfully");
} }
const log = tailLog(daemonDir); const log = tailLog(this.daemonDir);
try { try {
core.debug(`about to post to localhost`); core.debug(`about to post to localhost`);
const hostAndPort = inputs_exports.getString("listen"); const hostAndPort = inputs_exports.getString("listen");
@ -94895,7 +94959,7 @@ var MagicNixCacheAction = class {
} finally { } finally {
if (core.isDebug()) { if (core.isDebug()) {
core.info("Entire log:"); core.info("Entire log:");
const entireLog = (0,external_node_fs_namespaceObject.readFileSync)(external_node_path_namespaceObject.join(daemonDir, "daemon.log")); const entireLog = (0,external_node_fs_namespaceObject.readFileSync)(external_node_path_namespaceObject.join(this.daemonDir, "daemon.log"));
core.info(entireLog.toString()); core.info(entireLog.toString());
} }
} }

2
dist/index.js.map generated vendored

File diff suppressed because one or more lines are too long

View file

@ -33,10 +33,10 @@
}, },
"devDependencies": { "devDependencies": {
"@trivago/prettier-plugin-sort-imports": "^4.3.0", "@trivago/prettier-plugin-sort-imports": "^4.3.0",
"@types/node": "^20.12.7", "@types/node": "^20.12.9",
"@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.7.1", "@typescript-eslint/eslint-plugin": "^7.8.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",

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/5abcb239472d24b114a53f70800f0e42fc30819c version: github.com/DeterminateSystems/detsys-ts/b2ff406239cb9d311fa9dad332ccfee2669ce6dc
got: got:
specifier: ^14.2.1 specifier: ^14.2.1
version: 14.2.1 version: 14.2.1
@ -26,8 +26,8 @@ devDependencies:
specifier: ^4.3.0 specifier: ^4.3.0
version: 4.3.0(prettier@3.2.5) version: 4.3.0(prettier@3.2.5)
'@types/node': '@types/node':
specifier: ^20.12.7 specifier: ^20.12.9
version: 20.12.7 version: 20.12.9
'@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.7.1 specifier: ^7.8.0
version: 7.7.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0)(typescript@5.4.5) version: 7.8.0(@typescript-eslint/parser@7.8.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,13 +45,13 @@ 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.7.1)(eslint-plugin-import@2.29.1)(eslint@8.57.0) version: 3.6.1(@typescript-eslint/parser@7.8.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.7.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) version: 2.29.1(@typescript-eslint/parser@7.8.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.2.5)
@ -67,11 +67,6 @@ devDependencies:
packages: packages:
/@aashutoshrathi/word-wrap@1.2.6:
resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
engines: {node: '>=0.10.0'}
dev: true
/@actions/cache@3.2.4: /@actions/cache@3.2.4:
resolution: {integrity: sha512-RuHnwfcDagtX+37s0ZWy7clbOfnZ7AlDJQ7k/9rzt2W4Gnwde3fa/qjSjVuz4vLcLIpc7fUob27CMrqiWZytYA==} resolution: {integrity: sha512-RuHnwfcDagtX+37s0ZWy7clbOfnZ7AlDJQ7k/9rzt2W4Gnwde3fa/qjSjVuz4vLcLIpc7fUob27CMrqiWZytYA==}
dependencies: dependencies:
@ -240,7 +235,7 @@ packages:
resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dependencies: dependencies:
'@babel/highlight': 7.24.2 '@babel/highlight': 7.24.5
picocolors: 1.0.0 picocolors: 1.0.0
dev: true dev: true
@ -253,11 +248,11 @@ packages:
source-map: 0.5.7 source-map: 0.5.7
dev: true dev: true
/@babel/generator@7.24.4: /@babel/generator@7.24.5:
resolution: {integrity: sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==} resolution: {integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dependencies: dependencies:
'@babel/types': 7.24.0 '@babel/types': 7.24.5
'@jridgewell/gen-mapping': 0.3.5 '@jridgewell/gen-mapping': 0.3.5
'@jridgewell/trace-mapping': 0.3.25 '@jridgewell/trace-mapping': 0.3.25
jsesc: 2.5.2 jsesc: 2.5.2
@ -273,21 +268,21 @@ packages:
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dependencies: dependencies:
'@babel/template': 7.24.0 '@babel/template': 7.24.0
'@babel/types': 7.24.0 '@babel/types': 7.24.5
dev: true dev: true
/@babel/helper-hoist-variables@7.22.5: /@babel/helper-hoist-variables@7.22.5:
resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dependencies: dependencies:
'@babel/types': 7.24.0 '@babel/types': 7.24.5
dev: true dev: true
/@babel/helper-split-export-declaration@7.22.6: /@babel/helper-split-export-declaration@7.24.5:
resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} resolution: {integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dependencies: dependencies:
'@babel/types': 7.24.0 '@babel/types': 7.24.5
dev: true dev: true
/@babel/helper-string-parser@7.24.1: /@babel/helper-string-parser@7.24.1:
@ -295,31 +290,31 @@ packages:
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dev: true dev: true
/@babel/helper-validator-identifier@7.22.20: /@babel/helper-validator-identifier@7.24.5:
resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dev: true dev: true
/@babel/highlight@7.24.2: /@babel/highlight@7.24.5:
resolution: {integrity: sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==} resolution: {integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dependencies: dependencies:
'@babel/helper-validator-identifier': 7.22.20 '@babel/helper-validator-identifier': 7.24.5
chalk: 2.4.2 chalk: 2.4.2
js-tokens: 4.0.0 js-tokens: 4.0.0
picocolors: 1.0.0 picocolors: 1.0.0
dev: true dev: true
/@babel/parser@7.24.4: /@babel/parser@7.24.5:
resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==}
engines: {node: '>=6.0.0'} engines: {node: '>=6.0.0'}
hasBin: true hasBin: true
dependencies: dependencies:
'@babel/types': 7.17.0 '@babel/types': 7.17.0
dev: true dev: true
/@babel/runtime@7.24.4: /@babel/runtime@7.24.5:
resolution: {integrity: sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==} resolution: {integrity: sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dependencies: dependencies:
regenerator-runtime: 0.14.1 regenerator-runtime: 0.14.1
@ -330,8 +325,8 @@ packages:
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dependencies: dependencies:
'@babel/code-frame': 7.24.2 '@babel/code-frame': 7.24.2
'@babel/parser': 7.24.4 '@babel/parser': 7.24.5
'@babel/types': 7.24.0 '@babel/types': 7.24.5
dev: true dev: true
/@babel/traverse@7.23.2: /@babel/traverse@7.23.2:
@ -339,13 +334,13 @@ packages:
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dependencies: dependencies:
'@babel/code-frame': 7.24.2 '@babel/code-frame': 7.24.2
'@babel/generator': 7.24.4 '@babel/generator': 7.24.5
'@babel/helper-environment-visitor': 7.22.20 '@babel/helper-environment-visitor': 7.22.20
'@babel/helper-function-name': 7.23.0 '@babel/helper-function-name': 7.23.0
'@babel/helper-hoist-variables': 7.22.5 '@babel/helper-hoist-variables': 7.22.5
'@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-split-export-declaration': 7.24.5
'@babel/parser': 7.24.4 '@babel/parser': 7.24.5
'@babel/types': 7.24.0 '@babel/types': 7.24.5
debug: 4.3.4 debug: 4.3.4
globals: 11.12.0 globals: 11.12.0
transitivePeerDependencies: transitivePeerDependencies:
@ -356,16 +351,16 @@ packages:
resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dependencies: dependencies:
'@babel/helper-validator-identifier': 7.22.20 '@babel/helper-validator-identifier': 7.24.5
to-fast-properties: 2.0.0 to-fast-properties: 2.0.0
dev: true dev: true
/@babel/types@7.24.0: /@babel/types@7.24.5:
resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==}
engines: {node: '>=6.9.0'} engines: {node: '>=6.9.0'}
dependencies: dependencies:
'@babel/helper-string-parser': 7.24.1 '@babel/helper-string-parser': 7.24.1
'@babel/helper-validator-identifier': 7.22.20 '@babel/helper-validator-identifier': 7.24.5
to-fast-properties: 2.0.0 to-fast-properties: 2.0.0
dev: true dev: true
@ -722,128 +717,128 @@ packages:
engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
dev: true dev: true
/@rollup/rollup-android-arm-eabi@4.16.4: /@rollup/rollup-android-arm-eabi@4.17.2:
resolution: {integrity: sha512-GkhjAaQ8oUTOKE4g4gsZ0u8K/IHU1+2WQSgS1TwTcYvL+sjbaQjNHFXbOJ6kgqGHIO1DfUhI/Sphi9GkRT9K+Q==} resolution: {integrity: sha512-NM0jFxY8bB8QLkoKxIQeObCaDlJKewVlIEkuyYKm5An1tdVZ966w2+MPQ2l8LBZLjR+SgyV+nRkTIunzOYBMLQ==}
cpu: [arm] cpu: [arm]
os: [android] os: [android]
requiresBuild: true requiresBuild: true
dev: true dev: true
optional: true optional: true
/@rollup/rollup-android-arm64@4.16.4: /@rollup/rollup-android-arm64@4.17.2:
resolution: {integrity: sha512-Bvm6D+NPbGMQOcxvS1zUl8H7DWlywSXsphAeOnVeiZLQ+0J6Is8T7SrjGTH29KtYkiY9vld8ZnpV3G2EPbom+w==} resolution: {integrity: sha512-yeX/Usk7daNIVwkq2uGoq2BYJKZY1JfyLTaHO/jaiSwi/lsf8fTFoQW/n6IdAsx5tx+iotu2zCJwz8MxI6D/Bw==}
cpu: [arm64] cpu: [arm64]
os: [android] os: [android]
requiresBuild: true requiresBuild: true
dev: true dev: true
optional: true optional: true
/@rollup/rollup-darwin-arm64@4.16.4: /@rollup/rollup-darwin-arm64@4.17.2:
resolution: {integrity: sha512-i5d64MlnYBO9EkCOGe5vPR/EeDwjnKOGGdd7zKFhU5y8haKhQZTN2DgVtpODDMxUr4t2K90wTUJg7ilgND6bXw==} resolution: {integrity: sha512-kcMLpE6uCwls023+kknm71ug7MZOrtXo+y5p/tsg6jltpDtgQY1Eq5sGfHcQfb+lfuKwhBmEURDga9N0ol4YPw==}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
requiresBuild: true requiresBuild: true
dev: true dev: true
optional: true optional: true
/@rollup/rollup-darwin-x64@4.16.4: /@rollup/rollup-darwin-x64@4.17.2:
resolution: {integrity: sha512-WZupV1+CdUYehaZqjaFTClJI72fjJEgTXdf4NbW69I9XyvdmztUExBtcI2yIIU6hJtYvtwS6pkTkHJz+k08mAQ==} resolution: {integrity: sha512-AtKwD0VEx0zWkL0ZjixEkp5tbNLzX+FCqGG1SvOu993HnSz4qDI6S4kGzubrEJAljpVkhRSlg5bzpV//E6ysTQ==}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
requiresBuild: true requiresBuild: true
dev: true dev: true
optional: true optional: true
/@rollup/rollup-linux-arm-gnueabihf@4.16.4: /@rollup/rollup-linux-arm-gnueabihf@4.17.2:
resolution: {integrity: sha512-ADm/xt86JUnmAfA9mBqFcRp//RVRt1ohGOYF6yL+IFCYqOBNwy5lbEK05xTsEoJq+/tJzg8ICUtS82WinJRuIw==} resolution: {integrity: sha512-3reX2fUHqN7sffBNqmEyMQVj/CKhIHZd4y631duy0hZqI8Qoqf6lTtmAKvJFYa6bhU95B1D0WgzHkmTg33In0A==}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
requiresBuild: true requiresBuild: true
dev: true dev: true
optional: true optional: true
/@rollup/rollup-linux-arm-musleabihf@4.16.4: /@rollup/rollup-linux-arm-musleabihf@4.17.2:
resolution: {integrity: sha512-tJfJaXPiFAG+Jn3cutp7mCs1ePltuAgRqdDZrzb1aeE3TktWWJ+g7xK9SNlaSUFw6IU4QgOxAY4rA+wZUT5Wfg==} resolution: {integrity: sha512-uSqpsp91mheRgw96xtyAGP9FW5ChctTFEoXP0r5FAzj/3ZRv3Uxjtc7taRQSaQM/q85KEKjKsZuiZM3GyUivRg==}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
requiresBuild: true requiresBuild: true
dev: true dev: true
optional: true optional: true
/@rollup/rollup-linux-arm64-gnu@4.16.4: /@rollup/rollup-linux-arm64-gnu@4.17.2:
resolution: {integrity: sha512-7dy1BzQkgYlUTapDTvK997cgi0Orh5Iu7JlZVBy1MBURk7/HSbHkzRnXZa19ozy+wwD8/SlpJnOOckuNZtJR9w==} resolution: {integrity: sha512-EMMPHkiCRtE8Wdk3Qhtciq6BndLtstqZIroHiiGzB3C5LDJmIZcSzVtLRbwuXuUft1Cnv+9fxuDtDxz3k3EW2A==}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
requiresBuild: true requiresBuild: true
dev: true dev: true
optional: true optional: true
/@rollup/rollup-linux-arm64-musl@4.16.4: /@rollup/rollup-linux-arm64-musl@4.17.2:
resolution: {integrity: sha512-zsFwdUw5XLD1gQe0aoU2HVceI6NEW7q7m05wA46eUAyrkeNYExObfRFQcvA6zw8lfRc5BHtan3tBpo+kqEOxmg==} resolution: {integrity: sha512-NMPylUUZ1i0z/xJUIx6VUhISZDRT+uTWpBcjdv0/zkp7b/bQDF+NfnfdzuTiB1G6HTodgoFa93hp0O1xl+/UbA==}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
requiresBuild: true requiresBuild: true
dev: true dev: true
optional: true optional: true
/@rollup/rollup-linux-powerpc64le-gnu@4.16.4: /@rollup/rollup-linux-powerpc64le-gnu@4.17.2:
resolution: {integrity: sha512-p8C3NnxXooRdNrdv6dBmRTddEapfESEUflpICDNKXpHvTjRRq1J82CbU5G3XfebIZyI3B0s074JHMWD36qOW6w==} resolution: {integrity: sha512-T19My13y8uYXPw/L/k0JYaX1fJKFT/PWdXiHr8mTbXWxjVF1t+8Xl31DgBBvEKclw+1b00Chg0hxE2O7bTG7GQ==}
cpu: [ppc64] cpu: [ppc64]
os: [linux] os: [linux]
requiresBuild: true requiresBuild: true
dev: true dev: true
optional: true optional: true
/@rollup/rollup-linux-riscv64-gnu@4.16.4: /@rollup/rollup-linux-riscv64-gnu@4.17.2:
resolution: {integrity: sha512-Lh/8ckoar4s4Id2foY7jNgitTOUQczwMWNYi+Mjt0eQ9LKhr6sK477REqQkmy8YHY3Ca3A2JJVdXnfb3Rrwkng==} resolution: {integrity: sha512-BOaNfthf3X3fOWAB+IJ9kxTgPmMqPPH5f5k2DcCsRrBIbWnaJCgX2ll77dV1TdSy9SaXTR5iDXRL8n7AnoP5cg==}
cpu: [riscv64] cpu: [riscv64]
os: [linux] os: [linux]
requiresBuild: true requiresBuild: true
dev: true dev: true
optional: true optional: true
/@rollup/rollup-linux-s390x-gnu@4.16.4: /@rollup/rollup-linux-s390x-gnu@4.17.2:
resolution: {integrity: sha512-1xwwn9ZCQYuqGmulGsTZoKrrn0z2fAur2ujE60QgyDpHmBbXbxLaQiEvzJWDrscRq43c8DnuHx3QorhMTZgisQ==} resolution: {integrity: sha512-W0UP/x7bnn3xN2eYMql2T/+wpASLE5SjObXILTMPUBDB/Fg/FxC+gX4nvCfPBCbNhz51C+HcqQp2qQ4u25ok6g==}
cpu: [s390x] cpu: [s390x]
os: [linux] os: [linux]
requiresBuild: true requiresBuild: true
dev: true dev: true
optional: true optional: true
/@rollup/rollup-linux-x64-gnu@4.16.4: /@rollup/rollup-linux-x64-gnu@4.17.2:
resolution: {integrity: sha512-LuOGGKAJ7dfRtxVnO1i3qWc6N9sh0Em/8aZ3CezixSTM+E9Oq3OvTsvC4sm6wWjzpsIlOCnZjdluINKESflJLA==} resolution: {integrity: sha512-Hy7pLwByUOuyaFC6mAr7m+oMC+V7qyifzs/nW2OJfC8H4hbCzOX07Ov0VFk/zP3kBsELWNFi7rJtgbKYsav9QQ==}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
requiresBuild: true requiresBuild: true
dev: true dev: true
optional: true optional: true
/@rollup/rollup-linux-x64-musl@4.16.4: /@rollup/rollup-linux-x64-musl@4.17.2:
resolution: {integrity: sha512-ch86i7KkJKkLybDP2AtySFTRi5fM3KXp0PnHocHuJMdZwu7BuyIKi35BE9guMlmTpwwBTB3ljHj9IQXnTCD0vA==} resolution: {integrity: sha512-h1+yTWeYbRdAyJ/jMiVw0l6fOOm/0D1vNLui9iPuqgRGnXA0u21gAqOyB5iHjlM9MMfNOm9RHCQ7zLIzT0x11Q==}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
requiresBuild: true requiresBuild: true
dev: true dev: true
optional: true optional: true
/@rollup/rollup-win32-arm64-msvc@4.16.4: /@rollup/rollup-win32-arm64-msvc@4.17.2:
resolution: {integrity: sha512-Ma4PwyLfOWZWayfEsNQzTDBVW8PZ6TUUN1uFTBQbF2Chv/+sjenE86lpiEwj2FiviSmSZ4Ap4MaAfl1ciF4aSA==} resolution: {integrity: sha512-tmdtXMfKAjy5+IQsVtDiCfqbynAQE/TQRpWdVataHmhMb9DCoJxp9vLcCBjEQWMiUYxO1QprH/HbY9ragCEFLA==}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
requiresBuild: true requiresBuild: true
dev: true dev: true
optional: true optional: true
/@rollup/rollup-win32-ia32-msvc@4.16.4: /@rollup/rollup-win32-ia32-msvc@4.17.2:
resolution: {integrity: sha512-9m/ZDrQsdo/c06uOlP3W9G2ENRVzgzbSXmXHT4hwVaDQhYcRpi9bgBT0FTG9OhESxwK0WjQxYOSfv40cU+T69w==} resolution: {integrity: sha512-7II/QCSTAHuE5vdZaQEwJq2ZACkBpQDOmQsE6D6XUbnBHW8IAhm4eTufL6msLJorzrHDFv3CF8oCA/hSIRuZeQ==}
cpu: [ia32] cpu: [ia32]
os: [win32] os: [win32]
requiresBuild: true requiresBuild: true
dev: true dev: true
optional: true optional: true
/@rollup/rollup-win32-x64-msvc@4.16.4: /@rollup/rollup-win32-x64-msvc@4.17.2:
resolution: {integrity: sha512-YunpoOAyGLDseanENHmbFvQSfVL5BxW3k7hhy0eN4rb3gS/ct75dVD0EXOWIqFT/nE8XYW6LP6vz6ctKRi0k9A==} resolution: {integrity: sha512-TGGO7v7qOq4CYmSBVEYpI1Y5xDuCEnbVC5Vth8mOsW0gDSzxNrVERPc790IGHsrT2dQSimgMr9Ub3Y1Jci5/8w==}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
requiresBuild: true requiresBuild: true
@ -872,7 +867,7 @@ packages:
optional: true optional: true
dependencies: dependencies:
'@babel/generator': 7.17.7 '@babel/generator': 7.17.7
'@babel/parser': 7.24.4 '@babel/parser': 7.24.5
'@babel/traverse': 7.23.2 '@babel/traverse': 7.23.2
'@babel/types': 7.17.0 '@babel/types': 7.17.0
javascript-natural-sort: 0.7.1 javascript-natural-sort: 0.7.1
@ -901,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.7 '@types/node': 20.12.9
form-data: 4.0.0 form-data: 4.0.0
dev: false dev: false
/@types/node@20.12.7: /@types/node@20.12.9:
resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} resolution: {integrity: sha512-o93r47yu04MHumPBCFg0bMPBMNgtMg3jzbhl7e68z50+BMHmRMGDJv13eBlUgOdc9i/uoJXGMGYLtJV4ReTXEg==}
dependencies: dependencies:
undici-types: 5.26.5 undici-types: 5.26.5
@ -921,15 +916,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.7 '@types/node': 20.12.9
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.7.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0)(typescript@5.4.5): /@typescript-eslint/eslint-plugin@7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5):
resolution: {integrity: sha512-KwfdWXJBOviaBVhxO3p5TJiLpNuh2iyXyjmWN0f1nU87pwyvfS0EmjC6ukQVYVFJd/K1+0NWGPDXiyEyQorn0Q==} resolution: {integrity: sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg==}
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
@ -940,11 +935,11 @@ packages:
optional: true optional: true
dependencies: dependencies:
'@eslint-community/regexpp': 4.10.0 '@eslint-community/regexpp': 4.10.0
'@typescript-eslint/parser': 7.7.1(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': 7.8.0(eslint@8.57.0)(typescript@5.4.5)
'@typescript-eslint/scope-manager': 7.7.1 '@typescript-eslint/scope-manager': 7.8.0
'@typescript-eslint/type-utils': 7.7.1(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/type-utils': 7.8.0(eslint@8.57.0)(typescript@5.4.5)
'@typescript-eslint/utils': 7.7.1(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/utils': 7.8.0(eslint@8.57.0)(typescript@5.4.5)
'@typescript-eslint/visitor-keys': 7.7.1 '@typescript-eslint/visitor-keys': 7.8.0
debug: 4.3.4 debug: 4.3.4
eslint: 8.57.0 eslint: 8.57.0
graphemer: 1.4.0 graphemer: 1.4.0
@ -957,8 +952,8 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@typescript-eslint/parser@7.7.1(eslint@8.57.0)(typescript@5.4.5): /@typescript-eslint/parser@7.8.0(eslint@8.57.0)(typescript@5.4.5):
resolution: {integrity: sha512-vmPzBOOtz48F6JAGVS/kZYk4EkXao6iGrD838sp1w3NQQC0W8ry/q641KU4PrG7AKNAf56NOcR8GOpH8l9FPCw==} resolution: {integrity: sha512-KgKQly1pv0l4ltcftP59uQZCi4HUYswCLbTqVZEJu7uLX8CTLyswqMLqLN+2QFz4jCptqWVV4SB7vdxcH2+0kQ==}
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
@ -967,10 +962,10 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/scope-manager': 7.7.1 '@typescript-eslint/scope-manager': 7.8.0
'@typescript-eslint/types': 7.7.1 '@typescript-eslint/types': 7.8.0
'@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5) '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5)
'@typescript-eslint/visitor-keys': 7.7.1 '@typescript-eslint/visitor-keys': 7.8.0
debug: 4.3.4 debug: 4.3.4
eslint: 8.57.0 eslint: 8.57.0
typescript: 5.4.5 typescript: 5.4.5
@ -978,16 +973,16 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@typescript-eslint/scope-manager@7.7.1: /@typescript-eslint/scope-manager@7.8.0:
resolution: {integrity: sha512-PytBif2SF+9SpEUKynYn5g1RHFddJUcyynGpztX3l/ik7KmZEv19WCMhUBkHXPU9es/VWGD3/zg3wg90+Dh2rA==} resolution: {integrity: sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==}
engines: {node: ^18.18.0 || >=20.0.0} engines: {node: ^18.18.0 || >=20.0.0}
dependencies: dependencies:
'@typescript-eslint/types': 7.7.1 '@typescript-eslint/types': 7.8.0
'@typescript-eslint/visitor-keys': 7.7.1 '@typescript-eslint/visitor-keys': 7.8.0
dev: true dev: true
/@typescript-eslint/type-utils@7.7.1(eslint@8.57.0)(typescript@5.4.5): /@typescript-eslint/type-utils@7.8.0(eslint@8.57.0)(typescript@5.4.5):
resolution: {integrity: sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==} resolution: {integrity: sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A==}
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
@ -996,8 +991,8 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5) '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5)
'@typescript-eslint/utils': 7.7.1(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/utils': 7.8.0(eslint@8.57.0)(typescript@5.4.5)
debug: 4.3.4 debug: 4.3.4
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)
@ -1006,13 +1001,13 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@typescript-eslint/types@7.7.1: /@typescript-eslint/types@7.8.0:
resolution: {integrity: sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w==} resolution: {integrity: sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==}
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.7.1(typescript@5.4.5): /@typescript-eslint/typescript-estree@7.8.0(typescript@5.4.5):
resolution: {integrity: sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==} resolution: {integrity: sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==}
engines: {node: ^18.18.0 || >=20.0.0} engines: {node: ^18.18.0 || >=20.0.0}
peerDependencies: peerDependencies:
typescript: '*' typescript: '*'
@ -1020,8 +1015,8 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/types': 7.7.1 '@typescript-eslint/types': 7.8.0
'@typescript-eslint/visitor-keys': 7.7.1 '@typescript-eslint/visitor-keys': 7.8.0
debug: 4.3.4 debug: 4.3.4
globby: 11.1.0 globby: 11.1.0
is-glob: 4.0.3 is-glob: 4.0.3
@ -1033,8 +1028,8 @@ packages:
- supports-color - supports-color
dev: true dev: true
/@typescript-eslint/utils@7.7.1(eslint@8.57.0)(typescript@5.4.5): /@typescript-eslint/utils@7.8.0(eslint@8.57.0)(typescript@5.4.5):
resolution: {integrity: sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==} resolution: {integrity: sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==}
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
@ -1042,9 +1037,9 @@ packages:
'@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0)
'@types/json-schema': 7.0.15 '@types/json-schema': 7.0.15
'@types/semver': 7.5.8 '@types/semver': 7.5.8
'@typescript-eslint/scope-manager': 7.7.1 '@typescript-eslint/scope-manager': 7.8.0
'@typescript-eslint/types': 7.7.1 '@typescript-eslint/types': 7.8.0
'@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5) '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5)
eslint: 8.57.0 eslint: 8.57.0
semver: 7.6.0 semver: 7.6.0
transitivePeerDependencies: transitivePeerDependencies:
@ -1052,11 +1047,11 @@ packages:
- typescript - typescript
dev: true dev: true
/@typescript-eslint/visitor-keys@7.7.1: /@typescript-eslint/visitor-keys@7.8.0:
resolution: {integrity: sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw==} resolution: {integrity: sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==}
engines: {node: ^18.18.0 || >=20.0.0} engines: {node: ^18.18.0 || >=20.0.0}
dependencies: dependencies:
'@typescript-eslint/types': 7.7.1 '@typescript-eslint/types': 7.8.0
eslint-visitor-keys: 3.4.3 eslint-visitor-keys: 3.4.3
dev: true dev: true
@ -1279,14 +1274,14 @@ 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.30001612 caniuse-lite: 1.0.30001616
electron-to-chromium: 1.4.749 electron-to-chromium: 1.4.756
node-releases: 2.0.14 node-releases: 2.0.14
update-browserslist-db: 1.0.13(browserslist@4.23.0) update-browserslist-db: 1.0.15(browserslist@4.23.0)
dev: true dev: true
/bundle-require@4.0.3(esbuild@0.19.12): /bundle-require@4.1.0(esbuild@0.19.12):
resolution: {integrity: sha512-2iscZ3fcthP2vka4Y7j277YJevwmsby/FpFDwjgw34Nl7dtCpt7zz/4TexmHMzY6KZEih7En9ImlbbgUNNQGtA==} resolution: {integrity: sha512-FeArRFM+ziGkRViKRnSTbHZc35dgmR9yNog05Kn0+ItI59pOAISGvnnIwW1WgFZQW59IxD9QpJnUPkdIPfZuXg==}
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'
@ -1334,8 +1329,8 @@ packages:
engines: {node: '>=6'} engines: {node: '>=6'}
dev: true dev: true
/caniuse-lite@1.0.30001612: /caniuse-lite@1.0.30001616:
resolution: {integrity: sha512-lFgnZ07UhaCcsSZgWW0K5j4e69dK1u/ltrL9lTUiFOwNHs12S3UMIEYgBV0Z6C6hRDev7iRnMzzYmKabYdXF9g==} resolution: {integrity: sha512-RHVYKov7IcdNjVHJFNY/78RdG4oGVjbayxv8u5IO74Wv7Hlq4PnJE6mo/OjFijjVFNy5ijnCt6H3IIo4t+wfEw==}
dev: true dev: true
/chalk@2.4.2: /chalk@2.4.2:
@ -1538,8 +1533,8 @@ packages:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
dev: true dev: true
/electron-to-chromium@1.4.749: /electron-to-chromium@1.4.756:
resolution: {integrity: sha512-LRMMrM9ITOvue0PoBrvNIraVmuDbJV5QC9ierz/z5VilMdPOVMjOtpICNld3PuXuTZ3CHH/UPxX9gHhAPwi+0Q==} resolution: {integrity: sha512-RJKZ9+vEBMeiPAvKNWyZjuYyUqMndcP1f335oHqn3BEQbs2NFtVrnK5+6Xg5wSM9TknNNpWghGDUCKGYF+xWXw==}
dev: true dev: true
/emoji-regex@8.0.0: /emoji-regex@8.0.0:
@ -1577,7 +1572,7 @@ packages:
function.prototype.name: 1.1.6 function.prototype.name: 1.1.6
get-intrinsic: 1.2.4 get-intrinsic: 1.2.4
get-symbol-description: 1.0.2 get-symbol-description: 1.0.2
globalthis: 1.0.3 globalthis: 1.0.4
gopd: 1.0.1 gopd: 1.0.1
has-property-descriptors: 1.0.2 has-property-descriptors: 1.0.2
has-proto: 1.0.3 has-proto: 1.0.3
@ -1633,7 +1628,7 @@ packages:
es-set-tostringtag: 2.0.3 es-set-tostringtag: 2.0.3
function-bind: 1.1.2 function-bind: 1.1.2
get-intrinsic: 1.2.4 get-intrinsic: 1.2.4
globalthis: 1.0.3 globalthis: 1.0.4
has-property-descriptors: 1.0.2 has-property-descriptors: 1.0.2
has-proto: 1.0.3 has-proto: 1.0.3
has-symbols: 1.0.3 has-symbols: 1.0.3
@ -1738,7 +1733,7 @@ packages:
- supports-color - supports-color
dev: true dev: true
/eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.1)(eslint-plugin-import@2.29.1)(eslint@8.57.0): /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.8.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:
@ -1748,10 +1743,10 @@ packages:
debug: 4.3.4 debug: 4.3.4
enhanced-resolve: 5.16.0 enhanced-resolve: 5.16.0
eslint: 8.57.0 eslint: 8.57.0
eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.7.1)(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.8.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.7.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.8.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.3 get-tsconfig: 4.7.4
is-core-module: 2.13.1 is-core-module: 2.13.1
is-glob: 4.0.3 is-glob: 4.0.3
transitivePeerDependencies: transitivePeerDependencies:
@ -1761,7 +1756,7 @@ packages:
- supports-color - supports-color
dev: true dev: true
/eslint-module-utils@2.8.1(@typescript-eslint/parser@7.7.1)(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.8.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:
@ -1782,11 +1777,11 @@ packages:
eslint-import-resolver-webpack: eslint-import-resolver-webpack:
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/parser': 7.7.1(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': 7.8.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.7.1)(eslint-plugin-import@2.29.1)(eslint@8.57.0) eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.8.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0)
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
dev: true dev: true
@ -1830,8 +1825,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.7.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/eslint-plugin': 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@8.57.0)(typescript@5.4.5)
'@typescript-eslint/parser': 7.7.1(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': 7.8.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)
@ -1839,7 +1834,7 @@ 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.7.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.8.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.2.5)
@ -1863,7 +1858,7 @@ packages:
eslint: 8.57.0 eslint: 8.57.0
dev: true dev: true
/eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.8.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:
@ -1873,7 +1868,7 @@ packages:
'@typescript-eslint/parser': '@typescript-eslint/parser':
optional: true optional: true
dependencies: dependencies:
'@typescript-eslint/parser': 7.7.1(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': 7.8.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
@ -1882,7 +1877,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.7.1)(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.8.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
@ -1904,7 +1899,7 @@ packages:
peerDependencies: peerDependencies:
eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8
dependencies: dependencies:
'@babel/runtime': 7.24.4 '@babel/runtime': 7.24.5
aria-query: 5.3.0 aria-query: 5.3.0
array-includes: 3.1.8 array-includes: 3.1.8
array.prototype.flatmap: 1.3.2 array.prototype.flatmap: 1.3.2
@ -2007,7 +2002,7 @@ packages:
lodash.merge: 4.6.2 lodash.merge: 4.6.2
minimatch: 3.1.2 minimatch: 3.1.2
natural-compare: 1.4.0 natural-compare: 1.4.0
optionator: 0.9.3 optionator: 0.9.4
strip-ansi: 6.0.1 strip-ansi: 6.0.1
text-table: 0.2.0 text-table: 0.2.0
transitivePeerDependencies: transitivePeerDependencies:
@ -2236,8 +2231,8 @@ packages:
get-intrinsic: 1.2.4 get-intrinsic: 1.2.4
dev: true dev: true
/get-tsconfig@4.7.3: /get-tsconfig@4.7.4:
resolution: {integrity: sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==} resolution: {integrity: sha512-ofbkKj+0pjXjhejr007J/fLf+sW+8H7K5GCm+msC8q3IpvgjobpyPqSRFemNyIMxklC0zeJpi7VDFna19FacvQ==}
dependencies: dependencies:
resolve-pkg-maps: 1.0.0 resolve-pkg-maps: 1.0.0
dev: true dev: true
@ -2264,7 +2259,7 @@ packages:
foreground-child: 3.1.1 foreground-child: 3.1.1
jackspeak: 2.3.6 jackspeak: 2.3.6
minimatch: 9.0.4 minimatch: 9.0.4
minipass: 7.0.4 minipass: 7.1.0
path-scurry: 1.10.2 path-scurry: 1.10.2
dev: true dev: true
@ -2291,11 +2286,12 @@ packages:
type-fest: 0.20.2 type-fest: 0.20.2
dev: true dev: true
/globalthis@1.0.3: /globalthis@1.0.4:
resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
dependencies: dependencies:
define-properties: 1.2.1 define-properties: 1.2.1
gopd: 1.0.1
dev: true dev: true
/globby@11.1.0: /globby@11.1.0:
@ -2782,8 +2778,8 @@ packages:
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
dev: false dev: false
/lru-cache@10.2.1: /lru-cache@10.2.2:
resolution: {integrity: sha512-tS24spDe/zXhWbNPErCHs/AGOzbKGHT+ybSBqmdLm8WZ1xXLWvH8Qn71QPAlqVhd0qUTWjy+Kl9JmISgDdEjsA==} resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==}
engines: {node: 14 || >=16.14} engines: {node: 14 || >=16.14}
dev: true dev: true
@ -2854,8 +2850,8 @@ packages:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
dev: true dev: true
/minipass@7.0.4: /minipass@7.1.0:
resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} resolution: {integrity: sha512-oGZRv2OT1lO2UF1zUcwdTb3wqUwI0kBGTgt/T7OdSj6M6N5m3o5uPf0AIW6lVxGGoiWUR7e2AwTE+xiwK8WQig==}
engines: {node: '>=16 || 14 >=14.17'} engines: {node: '>=16 || 14 >=14.17'}
dev: true dev: true
@ -2986,16 +2982,16 @@ packages:
mimic-fn: 2.1.0 mimic-fn: 2.1.0
dev: true dev: true
/optionator@0.9.3: /optionator@0.9.4:
resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
engines: {node: '>= 0.8.0'} engines: {node: '>= 0.8.0'}
dependencies: dependencies:
'@aashutoshrathi/word-wrap': 1.2.6
deep-is: 0.1.4 deep-is: 0.1.4
fast-levenshtein: 2.0.6 fast-levenshtein: 2.0.6
levn: 0.4.1 levn: 0.4.1
prelude-ls: 1.2.1 prelude-ls: 1.2.1
type-check: 0.4.0 type-check: 0.4.0
word-wrap: 1.2.5
dev: true dev: true
/p-cancelable@4.0.1: /p-cancelable@4.0.1:
@ -3047,8 +3043,8 @@ packages:
resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==}
engines: {node: '>=16 || 14 >=14.17'} engines: {node: '>=16 || 14 >=14.17'}
dependencies: dependencies:
lru-cache: 10.2.1 lru-cache: 10.2.2
minipass: 7.0.4 minipass: 7.1.0
dev: true dev: true
/path-type@4.0.0: /path-type@4.0.0:
@ -3088,7 +3084,7 @@ packages:
optional: true optional: true
dependencies: dependencies:
lilconfig: 3.1.1 lilconfig: 3.1.1
yaml: 2.4.1 yaml: 2.4.2
dev: true dev: true
/prelude-ls@1.2.1: /prelude-ls@1.2.1:
@ -3144,7 +3140,7 @@ packages:
es-abstract: 1.23.3 es-abstract: 1.23.3
es-errors: 1.3.0 es-errors: 1.3.0
get-intrinsic: 1.2.4 get-intrinsic: 1.2.4
globalthis: 1.0.3 globalthis: 1.0.4
which-builtin-type: 1.1.3 which-builtin-type: 1.1.3
dev: true dev: true
@ -3208,29 +3204,29 @@ packages:
glob: 7.2.3 glob: 7.2.3
dev: true dev: true
/rollup@4.16.4: /rollup@4.17.2:
resolution: {integrity: sha512-kuaTJSUbz+Wsb2ATGvEknkI12XV40vIiHmLuFlejoo7HtDok/O5eDDD0UpCVY5bBX5U5RYo8wWP83H7ZsqVEnA==} resolution: {integrity: sha512-/9ClTJPByC0U4zNLowV1tMBe8yMEAxewtR3cUNX5BoEpGH3dQEWpJLr6CLp0fPdYRF/fzVOgvDb1zXuakwF5kQ==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'} engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true hasBin: true
dependencies: dependencies:
'@types/estree': 1.0.5 '@types/estree': 1.0.5
optionalDependencies: optionalDependencies:
'@rollup/rollup-android-arm-eabi': 4.16.4 '@rollup/rollup-android-arm-eabi': 4.17.2
'@rollup/rollup-android-arm64': 4.16.4 '@rollup/rollup-android-arm64': 4.17.2
'@rollup/rollup-darwin-arm64': 4.16.4 '@rollup/rollup-darwin-arm64': 4.17.2
'@rollup/rollup-darwin-x64': 4.16.4 '@rollup/rollup-darwin-x64': 4.17.2
'@rollup/rollup-linux-arm-gnueabihf': 4.16.4 '@rollup/rollup-linux-arm-gnueabihf': 4.17.2
'@rollup/rollup-linux-arm-musleabihf': 4.16.4 '@rollup/rollup-linux-arm-musleabihf': 4.17.2
'@rollup/rollup-linux-arm64-gnu': 4.16.4 '@rollup/rollup-linux-arm64-gnu': 4.17.2
'@rollup/rollup-linux-arm64-musl': 4.16.4 '@rollup/rollup-linux-arm64-musl': 4.17.2
'@rollup/rollup-linux-powerpc64le-gnu': 4.16.4 '@rollup/rollup-linux-powerpc64le-gnu': 4.17.2
'@rollup/rollup-linux-riscv64-gnu': 4.16.4 '@rollup/rollup-linux-riscv64-gnu': 4.17.2
'@rollup/rollup-linux-s390x-gnu': 4.16.4 '@rollup/rollup-linux-s390x-gnu': 4.17.2
'@rollup/rollup-linux-x64-gnu': 4.16.4 '@rollup/rollup-linux-x64-gnu': 4.17.2
'@rollup/rollup-linux-x64-musl': 4.16.4 '@rollup/rollup-linux-x64-musl': 4.17.2
'@rollup/rollup-win32-arm64-msvc': 4.16.4 '@rollup/rollup-win32-arm64-msvc': 4.17.2
'@rollup/rollup-win32-ia32-msvc': 4.16.4 '@rollup/rollup-win32-ia32-msvc': 4.17.2
'@rollup/rollup-win32-x64-msvc': 4.16.4 '@rollup/rollup-win32-x64-msvc': 4.17.2
fsevents: 2.3.3 fsevents: 2.3.3
dev: true dev: true
@ -3566,7 +3562,7 @@ packages:
typescript: typescript:
optional: true optional: true
dependencies: dependencies:
bundle-require: 4.0.3(esbuild@0.19.12) bundle-require: 4.1.0(esbuild@0.19.12)
cac: 6.7.14 cac: 6.7.14
chokidar: 3.6.0 chokidar: 3.6.0
debug: 4.3.4 debug: 4.3.4
@ -3576,7 +3572,7 @@ packages:
joycon: 3.1.1 joycon: 3.1.1
postcss-load-config: 4.0.2 postcss-load-config: 4.0.2
resolve-from: 5.0.0 resolve-from: 5.0.0
rollup: 4.16.4 rollup: 4.17.2
source-map: 0.8.0-beta.0 source-map: 0.8.0-beta.0
sucrase: 3.35.0 sucrase: 3.35.0
tree-kill: 1.2.2 tree-kill: 1.2.2
@ -3672,8 +3668,8 @@ packages:
'@fastify/busboy': 2.1.1 '@fastify/busboy': 2.1.1
dev: false dev: false
/update-browserslist-db@1.0.13(browserslist@4.23.0): /update-browserslist-db@1.0.15(browserslist@4.23.0):
resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} resolution: {integrity: sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA==}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
browserslist: '>= 4.21.0' browserslist: '>= 4.21.0'
@ -3780,6 +3776,11 @@ packages:
isexe: 2.0.0 isexe: 2.0.0
dev: true dev: true
/word-wrap@1.2.5:
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
engines: {node: '>=0.10.0'}
dev: true
/wrap-ansi@7.0.0: /wrap-ansi@7.0.0:
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
engines: {node: '>=10'} engines: {node: '>=10'}
@ -3819,8 +3820,8 @@ packages:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
dev: true dev: true
/yaml@2.4.1: /yaml@2.4.2:
resolution: {integrity: sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==} resolution: {integrity: sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==}
engines: {node: '>= 14'} engines: {node: '>= 14'}
hasBin: true hasBin: true
dev: true dev: true
@ -3830,8 +3831,8 @@ packages:
engines: {node: '>=10'} engines: {node: '>=10'}
dev: true dev: true
github.com/DeterminateSystems/detsys-ts/5abcb239472d24b114a53f70800f0e42fc30819c: github.com/DeterminateSystems/detsys-ts/b2ff406239cb9d311fa9dad332ccfee2669ce6dc:
resolution: {tarball: https://codeload.github.com/DeterminateSystems/detsys-ts/tar.gz/5abcb239472d24b114a53f70800f0e42fc30819c} resolution: {tarball: https://codeload.github.com/DeterminateSystems/detsys-ts/tar.gz/b2ff406239cb9d311fa9dad332ccfee2669ce6dc}
name: detsys-ts name: detsys-ts
version: 1.0.0 version: 1.0.0
dependencies: dependencies:

View file

@ -4,18 +4,24 @@ import { IdsToolbox, inputs } from "detsys-ts";
import got, { Got } from "got"; import got, { Got } from "got";
import * as http from "http"; import * as http from "http";
import { SpawnOptions, exec, spawn } from "node:child_process"; import { SpawnOptions, exec, spawn } from "node:child_process";
import { 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 os from "node:os"; import * as os from "node:os";
import * as path from "node:path"; import * as path from "node:path";
import { inspect, promisify } from "node:util"; import { inspect, promisify } from "node:util";
const ENV_CACHE_DAEMONDIR = "MAGIC_NIX_CACHE_DAEMONDIR"; const ENV_CACHE_DAEMONDIR = "MAGIC_NIX_CACHE_DAEMONDIR";
const ENV_CACHE_STARTED = "MAGIC_NIX_CACHE_STARTED";
const STARTED_HINT = "true";
class MagicNixCacheAction { class MagicNixCacheAction {
idslib: IdsToolbox; idslib: IdsToolbox;
private client: Got; private client: Got;
private daemonDir: string;
private daemonStarted: boolean;
constructor() { constructor() {
this.idslib = new IdsToolbox({ this.idslib = new IdsToolbox({
name: "magic-nix-cache", name: "magic-nix-cache",
@ -39,10 +45,24 @@ class MagicNixCacheAction {
], ],
}, },
}); });
this.daemonStarted = process.env[ENV_CACHE_STARTED] === STARTED_HINT;
if (process.env[ENV_CACHE_DAEMONDIR]) {
this.daemonDir = process.env[ENV_CACHE_DAEMONDIR];
} else {
this.daemonDir = this.idslib.getTemporaryName();
mkdirSync(this.daemonDir);
actionsCore.exportVariable(ENV_CACHE_DAEMONDIR, this.daemonDir);
}
this.idslib.stapleFile(
"daemon.log",
path.join(this.daemonDir, "daemon.log"),
);
} }
async setUpAutoCache(): Promise<void> { async setUpAutoCache(): Promise<void> {
const tmpdir = process.env["RUNNER_TEMP"] || os.tmpdir();
const requiredEnv = [ const requiredEnv = [
"ACTIONS_CACHE_URL", "ACTIONS_CACHE_URL",
"ACTIONS_RUNTIME_URL", "ACTIONS_RUNTIME_URL",
@ -67,7 +87,8 @@ class MagicNixCacheAction {
`GitHub Action Cache URL: ${process.env["ACTIONS_CACHE_URL"]}`, `GitHub Action Cache URL: ${process.env["ACTIONS_CACHE_URL"]}`,
); );
const daemonDir = await fs.mkdtemp(path.join(tmpdir, "magic-nix-cache-")); this.daemonStarted = true;
actionsCore.exportVariable(ENV_CACHE_STARTED, STARTED_HINT);
const sourceBinary = inputs.getStringOrNull("source-binary"); const sourceBinary = inputs.getStringOrNull("source-binary");
const daemonBin = const daemonBin =
sourceBinary !== null ? sourceBinary : await this.fetchAutoCacher(); sourceBinary !== null ? sourceBinary : await this.fetchAutoCacher();
@ -106,9 +127,9 @@ class MagicNixCacheAction {
}); });
// Start tailing the daemon log. // Start tailing the daemon log.
const outputPath = `${daemonDir}/daemon.log`; const outputPath = `${this.daemonDir}/daemon.log`;
const output = openSync(outputPath, "a"); const output = openSync(outputPath, "a");
const log = tailLog(daemonDir); const log = tailLog(this.daemonDir);
const netrc = await netrcPath(); const netrc = await netrcPath();
const nixConfPath = `${process.env["HOME"]}/.config/nix/nix.conf`; const nixConfPath = `${process.env["HOME"]}/.config/nix/nix.conf`;
@ -163,7 +184,7 @@ class MagicNixCacheAction {
// Start the server. Once it is ready, it will notify us via the notification server. // Start the server. Once it is ready, it will notify us via the notification server.
const daemon = spawn(daemonBin, daemonCliFlags, opts); const daemon = spawn(daemonBin, daemonCliFlags, opts);
const pidFile = path.join(daemonDir, "daemon.pid"); const pidFile = path.join(this.daemonDir, "daemon.pid");
await fs.writeFile(pidFile, `${daemon.pid}`); await fs.writeFile(pidFile, `${daemon.pid}`);
actionsCore.info("Waiting for magic-nix-cache to start..."); actionsCore.info("Waiting for magic-nix-cache to start...");
@ -192,7 +213,6 @@ class MagicNixCacheAction {
daemon.unref(); daemon.unref();
actionsCore.info("Launched Magic Nix Cache"); actionsCore.info("Launched Magic Nix Cache");
actionsCore.exportVariable(ENV_CACHE_DAEMONDIR, daemonDir);
log.unwatch(); log.unwatch();
} }
@ -211,9 +231,8 @@ class MagicNixCacheAction {
} }
async notifyAutoCache(): Promise<void> { async notifyAutoCache(): Promise<void> {
const daemonDir = process.env[ENV_CACHE_DAEMONDIR]; if (!this.daemonStarted) {
actionsCore.debug("magic-nix-cache not started - Skipping");
if (!daemonDir) {
return; return;
} }
@ -232,21 +251,19 @@ class MagicNixCacheAction {
} }
async tearDownAutoCache(): Promise<void> { async tearDownAutoCache(): Promise<void> {
const daemonDir = process.env[ENV_CACHE_DAEMONDIR]; if (!this.daemonStarted) {
if (!daemonDir) {
actionsCore.debug("magic-nix-cache not started - Skipping"); actionsCore.debug("magic-nix-cache not started - Skipping");
return; return;
} }
const pidFile = path.join(daemonDir, "daemon.pid"); const pidFile = path.join(this.daemonDir, "daemon.pid");
const pid = parseInt(await fs.readFile(pidFile, { encoding: "ascii" })); const pid = parseInt(await fs.readFile(pidFile, { encoding: "ascii" }));
actionsCore.debug(`found daemon pid: ${pid}`); actionsCore.debug(`found daemon pid: ${pid}`);
if (!pid) { if (!pid) {
throw new Error("magic-nix-cache did not start successfully"); throw new Error("magic-nix-cache did not start successfully");
} }
const log = tailLog(daemonDir); const log = tailLog(this.daemonDir);
try { try {
actionsCore.debug(`about to post to localhost`); actionsCore.debug(`about to post to localhost`);
@ -270,7 +287,7 @@ class MagicNixCacheAction {
} finally { } finally {
if (actionsCore.isDebug()) { if (actionsCore.isDebug()) {
actionsCore.info("Entire log:"); actionsCore.info("Entire log:");
const entireLog = readFileSync(path.join(daemonDir, "daemon.log")); const entireLog = readFileSync(path.join(this.daemonDir, "daemon.log"));
actionsCore.info(entireLog.toString()); actionsCore.info(entireLog.toString());
} }
} }