From 7c8f4f5ca4f81c9313dc8fefa106576d0781ea5d Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Tue, 4 Jun 2024 00:02:09 +0900 Subject: [PATCH 01/28] Prefer GITHUB_OUTPUT for printing debug resources --- .github/workflows/itself.yml | 17 +++++++++++++++++ dist/index.js | 32 ++++++++++++++++---------------- src/input.ts | 4 ++-- src/main.ts | 6 +++--- 4 files changed, 38 insertions(+), 21 deletions(-) diff --git a/.github/workflows/itself.yml b/.github/workflows/itself.yml index 52cd0420..a88fd929 100644 --- a/.github/workflows/itself.yml +++ b/.github/workflows/itself.yml @@ -32,6 +32,7 @@ jobs: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 # Do NOT specify options except non omittable skip-list to make sure zero config may work - uses: ./ + id: wait with: skip-list: | [ @@ -39,6 +40,22 @@ jobs: "workflowFile": "GH-820-graceperiod.yml" } ] + - name: + env: + DEBUG_PR_CONTEXT: '${{ steps.wait.outputs.pr }}' + DEBUG_CHECKS_CONTEXT: '${{ steps.wait.outputs.checks }}' + DEBUG_REPORT_CONTEXT: '${{ steps.wait.outputs.report }}' + run: | + mkdir outputs + echo "$DEBUG_PR_CONTEXT" > ./outputs/pr.json + echo "DEBUG_CHECKS_CONTEXT" > ./outputs/checks.json + echo "DEBUG_REPORT_CONTEXT" > ./outputs/report.json + - name: Upload logs as an artifact + if: runner.debug + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 + with: + name: 'outputs-${{ github.job }}-${{ github.run_id }}-${{ github.run_number }}-${{ github.run_attempt }}' + path: ./outputs validation_example_basic_errors_allow_failure: runs-on: ubuntu-24.04 if: ${{ github.actor != 'dependabot[bot]' && github.actor != 'renovate[bot]' }} diff --git a/dist/index.js b/dist/index.js index 14876255..9a2b82af 100644 --- a/dist/index.js +++ b/dist/index.js @@ -726,7 +726,7 @@ var require_tunnel = __commonJS({ connectOptions.headers = connectOptions.headers || {}; connectOptions.headers["Proxy-Authorization"] = "Basic " + new Buffer(connectOptions.proxyAuth).toString("base64"); } - debug3("making CONNECT request"); + debug("making CONNECT request"); var connectReq = self.request(connectOptions); connectReq.useChunkedEncodingByDefault = false; connectReq.once("response", onResponse); @@ -746,7 +746,7 @@ var require_tunnel = __commonJS({ connectReq.removeAllListeners(); socket.removeAllListeners(); if (res.statusCode !== 200) { - debug3( + debug( "tunneling socket could not be established, statusCode=%d", res.statusCode ); @@ -758,7 +758,7 @@ var require_tunnel = __commonJS({ return; } if (head.length > 0) { - debug3("got illegal response body from proxy"); + debug("got illegal response body from proxy"); socket.destroy(); var error2 = new Error("got illegal response body from proxy"); error2.code = "ECONNRESET"; @@ -766,13 +766,13 @@ var require_tunnel = __commonJS({ self.removeSocket(placeholder); return; } - debug3("tunneling connection has established"); + debug("tunneling connection has established"); self.sockets[self.sockets.indexOf(placeholder)] = socket; return cb(socket); } function onError(cause) { connectReq.removeAllListeners(); - debug3( + debug( "tunneling socket could not be established, cause=%s\n", cause.message, cause.stack @@ -834,9 +834,9 @@ var require_tunnel = __commonJS({ } return target; } - var debug3; + var debug; if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { - debug3 = function() { + debug = function() { var args = Array.prototype.slice.call(arguments); if (typeof args[0] === "string") { args[0] = "TUNNEL: " + args[0]; @@ -846,10 +846,10 @@ var require_tunnel = __commonJS({ console.error.apply(console, args); }; } else { - debug3 = function() { + debug = function() { }; } - exports.debug = debug3; + exports.debug = debug; } }); @@ -18878,7 +18878,7 @@ var require_core = __commonJS({ Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); } exports.getBooleanInput = getBooleanInput2; - function setOutput(name, value) { + function setOutput3(name, value) { const filePath = process.env["GITHUB_OUTPUT"] || ""; if (filePath) { return file_command_1.issueFileCommand("OUTPUT", file_command_1.prepareKeyValueMessage(name, value)); @@ -18886,7 +18886,7 @@ Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); process.stdout.write(os2.EOL); command_1.issueCommand("set-output", { name }, utils_1.toCommandValue(value)); } - exports.setOutput = setOutput; + exports.setOutput = setOutput3; function setCommandEcho(enabled) { command_1.issue("echo", enabled ? "on" : "off"); } @@ -18900,10 +18900,10 @@ Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); return process.env["RUNNER_DEBUG"] === "1"; } exports.isDebug = isDebug3; - function debug3(message) { + function debug(message) { command_1.issueCommand("debug", {}, message); } - exports.debug = debug3; + exports.debug = debug; function error2(message, properties = {}) { command_1.issueCommand("error", utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message); } @@ -31126,7 +31126,7 @@ function parseInput() { commitSha = prSha; } else { if ((0, import_core.isDebug)()) { - (0, import_core.debug)(JSON.stringify({ label: "PullRequestContext", pr: pr2 }, null, 2)); + (0, import_core.setOutput)("pr-context", JSON.stringify(pr2, null, 2)); } (0, import_core.error)("github context has unexpected format: missing context.payload.pull_request.head.sha"); } @@ -32590,7 +32590,7 @@ async function run() { (0, import_core3.startGroup)(`Polling ${attempts}: ${(/* @__PURE__ */ new Date()).toISOString()} # total elapsed ${readableDuration(elapsed)}`); const checks = await fetchChecks(githubToken, trigger); if ((0, import_core3.isDebug)()) { - (0, import_core3.debug)(JSON.stringify({ label: "rawdata", checks, elapsed }, null, 2)); + (0, import_core3.setOutput)("checks", JSON.stringify(checks, null, 2)); } const report = generateReport( getSummaries(checks, trigger), @@ -32614,7 +32614,7 @@ async function run() { ); } if ((0, import_core3.isDebug)()) { - (0, import_core3.debug)(JSON.stringify({ label: "filtered", report }, null, 2)); + (0, import_core3.setOutput)("report", JSON.stringify(report, null, 2)); } const { ok, done, logs } = report; for (const { severity, message, resource } of logs) { diff --git a/src/input.ts b/src/input.ts index ac5e0305..6d48d139 100644 --- a/src/input.ts +++ b/src/input.ts @@ -1,4 +1,4 @@ -import { debug, getInput, getBooleanInput, setSecret, isDebug, error } from '@actions/core'; +import { getInput, getBooleanInput, setSecret, isDebug, error, setOutput } from '@actions/core'; import { context } from '@actions/github'; import { Durationable, Options, Trigger } from './schema.ts'; @@ -21,7 +21,7 @@ export function parseInput(): { trigger: Trigger; options: Options; githubToken: } else { if (isDebug()) { // Do not print secret even for debug code - debug(JSON.stringify({ label: 'PullRequestContext', pr }, null, 2)); + setOutput('pr-context', JSON.stringify(pr, null, 2)); } error('github context has unexpected format: missing context.payload.pull_request.head.sha'); } diff --git a/src/main.ts b/src/main.ts index 80df1a16..5a2f6ca2 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,4 +1,4 @@ -import { debug, info, setFailed, isDebug, startGroup, endGroup } from '@actions/core'; +import { info, setFailed, isDebug, startGroup, endGroup, setOutput } from '@actions/core'; import styles from 'ansi-styles'; function colorize(severity: Severity, message: string): string { @@ -71,7 +71,7 @@ async function run(): Promise { startGroup(`Polling ${attempts}: ${(new Date()).toISOString()} # total elapsed ${readableDuration(elapsed)}`); const checks = await fetchChecks(githubToken, trigger); if (isDebug()) { - debug(JSON.stringify({ label: 'rawdata', checks, elapsed }, null, 2)); + setOutput('checks', JSON.stringify(checks, null, 2)); } const report = generateReport( getSummaries(checks, trigger), @@ -102,7 +102,7 @@ async function run(): Promise { } if (isDebug()) { - debug(JSON.stringify({ label: 'filtered', report }, null, 2)); + setOutput('report', JSON.stringify(report, null, 2)); } const { ok, done, logs } = report; From ddcda0c187fd2cc3cd046c661b00f59c0d238231 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Tue, 4 Jun 2024 00:05:58 +0900 Subject: [PATCH 02/28] Fix typos --- .github/workflows/itself.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/itself.yml b/.github/workflows/itself.yml index a88fd929..09c2f3da 100644 --- a/.github/workflows/itself.yml +++ b/.github/workflows/itself.yml @@ -48,8 +48,8 @@ jobs: run: | mkdir outputs echo "$DEBUG_PR_CONTEXT" > ./outputs/pr.json - echo "DEBUG_CHECKS_CONTEXT" > ./outputs/checks.json - echo "DEBUG_REPORT_CONTEXT" > ./outputs/report.json + echo "$DEBUG_CHECKS_CONTEXT" > ./outputs/checks.json + echo "$DEBUG_REPORT_CONTEXT" > ./outputs/report.json - name: Upload logs as an artifact if: runner.debug uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 From df660dd99eee9c0ec85a80c76fe107d7350a8661 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Tue, 4 Jun 2024 00:07:26 +0900 Subject: [PATCH 03/28] Move into lightweight job --- .github/workflows/itself.yml | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/.github/workflows/itself.yml b/.github/workflows/itself.yml index 09c2f3da..23702fec 100644 --- a/.github/workflows/itself.yml +++ b/.github/workflows/itself.yml @@ -32,7 +32,6 @@ jobs: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 # Do NOT specify options except non omittable skip-list to make sure zero config may work - uses: ./ - id: wait with: skip-list: | [ @@ -40,22 +39,6 @@ jobs: "workflowFile": "GH-820-graceperiod.yml" } ] - - name: - env: - DEBUG_PR_CONTEXT: '${{ steps.wait.outputs.pr }}' - DEBUG_CHECKS_CONTEXT: '${{ steps.wait.outputs.checks }}' - DEBUG_REPORT_CONTEXT: '${{ steps.wait.outputs.report }}' - run: | - mkdir outputs - echo "$DEBUG_PR_CONTEXT" > ./outputs/pr.json - echo "$DEBUG_CHECKS_CONTEXT" > ./outputs/checks.json - echo "$DEBUG_REPORT_CONTEXT" > ./outputs/report.json - - name: Upload logs as an artifact - if: runner.debug - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 - with: - name: 'outputs-${{ github.job }}-${{ github.run_id }}-${{ github.run_number }}-${{ github.run_attempt }}' - path: ./outputs validation_example_basic_errors_allow_failure: runs-on: ubuntu-24.04 if: ${{ github.actor != 'dependabot[bot]' && github.actor != 'renovate[bot]' }} @@ -173,6 +156,7 @@ jobs: steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - uses: ./ + id: wait with: retry-method: 'equal_intervals' min-interval-seconds: 5 @@ -197,3 +181,19 @@ jobs: "workflowFile": "GH-820-graceperiod.yml" } ] + - name: + env: + DEBUG_PR_CONTEXT: '${{ steps.wait.outputs.pr }}' + DEBUG_CHECKS_CONTEXT: '${{ steps.wait.outputs.checks }}' + DEBUG_REPORT_CONTEXT: '${{ steps.wait.outputs.report }}' + run: | + mkdir outputs + echo "$DEBUG_PR_CONTEXT" > ./outputs/pr.json + echo "$DEBUG_CHECKS_CONTEXT" > ./outputs/checks.json + echo "$DEBUG_REPORT_CONTEXT" > ./outputs/report.json + - name: Upload logs as an artifact + if: runner.debug + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 + with: + name: 'outputs-${{ github.job }}-${{ github.run_id }}-${{ github.run_number }}-${{ github.run_attempt }}' + path: ./outputs From 61cfe2257afdd9a1728f4b98c40ac4de455ffa1d Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Tue, 4 Jun 2024 00:08:27 +0900 Subject: [PATCH 04/28] Fix missing step name --- .github/workflows/itself.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/itself.yml b/.github/workflows/itself.yml index 23702fec..1b18f441 100644 --- a/.github/workflows/itself.yml +++ b/.github/workflows/itself.yml @@ -181,7 +181,7 @@ jobs: "workflowFile": "GH-820-graceperiod.yml" } ] - - name: + - name: 'Copy the output results to files' env: DEBUG_PR_CONTEXT: '${{ steps.wait.outputs.pr }}' DEBUG_CHECKS_CONTEXT: '${{ steps.wait.outputs.checks }}' From 108ea7978c475b081f5c04ea55e21f4adcd71b40 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Tue, 4 Jun 2024 00:19:20 +0900 Subject: [PATCH 05/28] Print the output size --- .github/workflows/itself.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/itself.yml b/.github/workflows/itself.yml index 1b18f441..b8218e40 100644 --- a/.github/workflows/itself.yml +++ b/.github/workflows/itself.yml @@ -191,6 +191,7 @@ jobs: echo "$DEBUG_PR_CONTEXT" > ./outputs/pr.json echo "$DEBUG_CHECKS_CONTEXT" > ./outputs/checks.json echo "$DEBUG_REPORT_CONTEXT" > ./outputs/report.json + ls -alh ./outputs - name: Upload logs as an artifact if: runner.debug uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 From 2dc579248e7ce51ca62289cc159ad5967c4eb3c3 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Tue, 4 Jun 2024 00:38:15 +0900 Subject: [PATCH 06/28] Fix typo --- .github/workflows/itself.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/itself.yml b/.github/workflows/itself.yml index b8218e40..003b14fc 100644 --- a/.github/workflows/itself.yml +++ b/.github/workflows/itself.yml @@ -183,12 +183,12 @@ jobs: ] - name: 'Copy the output results to files' env: - DEBUG_PR_CONTEXT: '${{ steps.wait.outputs.pr }}' + DEBUG_PR_CONTEXT: '${{ steps.wait.outputs.pr-context }}' DEBUG_CHECKS_CONTEXT: '${{ steps.wait.outputs.checks }}' DEBUG_REPORT_CONTEXT: '${{ steps.wait.outputs.report }}' run: | mkdir outputs - echo "$DEBUG_PR_CONTEXT" > ./outputs/pr.json + echo "$DEBUG_PR_CONTEXT" > ./outputs/pr-context.json echo "$DEBUG_CHECKS_CONTEXT" > ./outputs/checks.json echo "$DEBUG_REPORT_CONTEXT" > ./outputs/report.json ls -alh ./outputs From 9777fd46dd0c2782a09cfd067201bdb21529dbbe Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Tue, 4 Jun 2024 00:43:08 +0900 Subject: [PATCH 07/28] Update documents --- README.md | 10 ++++++++++ snapshots/README.md | 4 ++++ 2 files changed, 14 insertions(+) create mode 100644 snapshots/README.md diff --git a/README.md b/README.md index 02c9149c..71ad2945 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,16 @@ Full list of the options | `skip-same-workflow` | Skip jobs defined in the same workflow which using this action | `bool` | `false` | | | `dry-run` | Avoid requests for tests | `bool` | `false` | | +## Outputs + +(Since v3.4.0) + +For now, this action outputs used resources only into `GITHUB_OUTPUT` in debug mode. + +- checks +- pr-context +- report + ## Required GITHUB_TOKEN permissions In public repositories, they are satisfied by default diff --git a/snapshots/README.md b/snapshots/README.md new file mode 100644 index 00000000..006654cb --- /dev/null +++ b/snapshots/README.md @@ -0,0 +1,4 @@ +# How to get snapshot of resources + +Since v3.4.0, we can use GITHUB_OUTPUT only in debug mode\ +See the section in [README](../README.md#outputs) From c235b73d743953568312c404e9938a58e59a3afc Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Tue, 4 Jun 2024 16:19:07 +0900 Subject: [PATCH 08/28] Gathers into single object --- .github/workflows/itself.yml | 10 +++------- README.md | 17 +++++++---------- dist/index.js | 27 ++++++++++++--------------- snapshots/README.md | 2 +- src/input.ts | 11 ++++------- src/main.ts | 35 +++++++++++++++++++++++++++-------- 6 files changed, 54 insertions(+), 48 deletions(-) diff --git a/.github/workflows/itself.yml b/.github/workflows/itself.yml index 003b14fc..642e4f96 100644 --- a/.github/workflows/itself.yml +++ b/.github/workflows/itself.yml @@ -183,16 +183,12 @@ jobs: ] - name: 'Copy the output results to files' env: - DEBUG_PR_CONTEXT: '${{ steps.wait.outputs.pr-context }}' - DEBUG_CHECKS_CONTEXT: '${{ steps.wait.outputs.checks }}' - DEBUG_REPORT_CONTEXT: '${{ steps.wait.outputs.report }}' + DEBUG_DUMP: '${{ steps.wait.outputs.dump }}' run: | mkdir outputs - echo "$DEBUG_PR_CONTEXT" > ./outputs/pr-context.json - echo "$DEBUG_CHECKS_CONTEXT" > ./outputs/checks.json - echo "$DEBUG_REPORT_CONTEXT" > ./outputs/report.json + echo "$DEBUG_DUMP" > ./outputs/dump.json ls -alh ./outputs - - name: Upload logs as an artifact + - name: Upload dumps as an artifact if: runner.debug uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: diff --git a/README.md b/README.md index 71ad2945..fd8e37ab 100644 --- a/README.md +++ b/README.md @@ -78,16 +78,6 @@ Full list of the options | `skip-same-workflow` | Skip jobs defined in the same workflow which using this action | `bool` | `false` | | | `dry-run` | Avoid requests for tests | `bool` | `false` | | -## Outputs - -(Since v3.4.0) - -For now, this action outputs used resources only into `GITHUB_OUTPUT` in debug mode. - -- checks -- pr-context -- report - ## Required GITHUB_TOKEN permissions In public repositories, they are satisfied by default @@ -99,6 +89,13 @@ permissions: actions: read ``` +## jobs..outputs + +(Since v3.4.0) + +If used in debug mode, this action outputs the used resources into the `dump` key.\ +This data is only provided for debugging purposes, so the schema is not defined. + ## Examples I'm using this action for auto-merging bot PRs and wait for deploy.\ diff --git a/dist/index.js b/dist/index.js index 9a2b82af..be8e9e8c 100644 --- a/dist/index.js +++ b/dist/index.js @@ -18878,7 +18878,7 @@ var require_core = __commonJS({ Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); } exports.getBooleanInput = getBooleanInput2; - function setOutput3(name, value) { + function setOutput2(name, value) { const filePath = process.env["GITHUB_OUTPUT"] || ""; if (filePath) { return file_command_1.issueFileCommand("OUTPUT", file_command_1.prepareKeyValueMessage(name, value)); @@ -18886,7 +18886,7 @@ Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); process.stdout.write(os2.EOL); command_1.issueCommand("set-output", { name }, utils_1.toCommandValue(value)); } - exports.setOutput = setOutput3; + exports.setOutput = setOutput2; function setCommandEcho(enabled) { command_1.issue("echo", enabled ? "on" : "off"); } @@ -18896,10 +18896,10 @@ Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); error2(message); } exports.setFailed = setFailed2; - function isDebug3() { + function isDebug2() { return process.env["RUNNER_DEBUG"] === "1"; } - exports.isDebug = isDebug3; + exports.isDebug = isDebug2; function debug(message) { command_1.issueCommand("debug", {}, message); } @@ -31125,9 +31125,6 @@ function parseInput() { if (typeof prSha === "string") { commitSha = prSha; } else { - if ((0, import_core.isDebug)()) { - (0, import_core.setOutput)("pr-context", JSON.stringify(pr2, null, 2)); - } (0, import_core.error)("github context has unexpected format: missing context.payload.pull_request.head.sha"); } } @@ -31161,7 +31158,7 @@ function parseInput() { const trigger = { ...repo, ref: commitSha, runId, jobName: job, eventName }; const githubToken = (0, import_core.getInput)("github-token", { required: true, trimWhitespace: false }); (0, import_core.setSecret)(githubToken); - return { trigger, options, githubToken }; + return { trigger, options, githubToken, payload }; } // node_modules/.pnpm/universal-user-agent@7.0.2/node_modules/universal-user-agent/index.js @@ -32555,8 +32552,9 @@ function colorize(severity, message) { async function run() { const startedAt = performance.now(); (0, import_core3.startGroup)("Parameters"); - const { trigger, options, githubToken } = parseInput(); + const { trigger, options, githubToken, payload } = parseInput(); (0, import_core3.info)(JSON.stringify( + // Do NOT include payload { trigger, startedAt, @@ -32572,6 +32570,7 @@ async function run() { if (options.isDryRun) { return; } + const dumper = { trigger, options, payload, results: [] }; for (; ; ) { attempts += 1; if (attempts > options.attemptLimits) { @@ -32589,9 +32588,6 @@ async function run() { const elapsed = mr.Duration.from({ milliseconds: Math.ceil(performance.now() - startedAt) }); (0, import_core3.startGroup)(`Polling ${attempts}: ${(/* @__PURE__ */ new Date()).toISOString()} # total elapsed ${readableDuration(elapsed)}`); const checks = await fetchChecks(githubToken, trigger); - if ((0, import_core3.isDebug)()) { - (0, import_core3.setOutput)("checks", JSON.stringify(checks, null, 2)); - } const report = generateReport( getSummaries(checks, trigger), trigger, @@ -32613,9 +32609,7 @@ async function run() { `${workflowBasename}(${colorize(severity, jobName)}): [eventName: ${eventName}][runStatus: ${runStatus}][runConclusion: ${runConclusion ?? nullStr}][runURL: ${checkRunUrl}]` ); } - if ((0, import_core3.isDebug)()) { - (0, import_core3.setOutput)("report", JSON.stringify(report, null, 2)); - } + dumper.results.push({ elapsed, checks, report }); const { ok, done, logs } = report; for (const { severity, message, resource } of logs) { (0, import_core3.info)(colorize(severity, message)); @@ -32645,6 +32639,9 @@ async function run() { break; } } + if ((0, import_core3.isDebug)()) { + (0, import_core3.setOutput)("dump", JSON.stringify(dumper, null, 2)); + } } void run(); /*! Bundled license information: diff --git a/snapshots/README.md b/snapshots/README.md index 006654cb..cd1fe345 100644 --- a/snapshots/README.md +++ b/snapshots/README.md @@ -1,4 +1,4 @@ # How to get snapshot of resources Since v3.4.0, we can use GITHUB_OUTPUT only in debug mode\ -See the section in [README](../README.md#outputs) +See the section in [README](../README.md#jobsjob_idoutputs) diff --git a/src/input.ts b/src/input.ts index 6d48d139..2c9bf735 100644 --- a/src/input.ts +++ b/src/input.ts @@ -1,9 +1,10 @@ -import { getInput, getBooleanInput, setSecret, isDebug, error, setOutput } from '@actions/core'; +import { getInput, getBooleanInput, setSecret, error } from '@actions/core'; +import { WebhookPayload } from '@actions/github/lib/interfaces.ts'; import { context } from '@actions/github'; import { Durationable, Options, Trigger } from './schema.ts'; -export function parseInput(): { trigger: Trigger; options: Options; githubToken: string } { +export function parseInput(): { trigger: Trigger; options: Options; githubToken: string; payload: WebhookPayload } { const { repo, payload, @@ -19,10 +20,6 @@ export function parseInput(): { trigger: Trigger; options: Options; githubToken: if (typeof prSha === 'string') { commitSha = prSha; } else { - if (isDebug()) { - // Do not print secret even for debug code - setOutput('pr-context', JSON.stringify(pr, null, 2)); - } error('github context has unexpected format: missing context.payload.pull_request.head.sha'); } } @@ -62,5 +59,5 @@ export function parseInput(): { trigger: Trigger; options: Options; githubToken: const githubToken = getInput('github-token', { required: true, trimWhitespace: false }); setSecret(githubToken); - return { trigger, options, githubToken }; + return { trigger, options, githubToken, payload }; } diff --git a/src/main.ts b/src/main.ts index 5a2f6ca2..bae6b33c 100644 --- a/src/main.ts +++ b/src/main.ts @@ -24,15 +24,31 @@ function colorize(severity: Severity, message: string): string { import { parseInput } from './input.ts'; import { fetchChecks } from './github-api.ts'; -import { Severity, generateReport, getSummaries, readableDuration } from './report.ts'; +import { Report, Severity, generateReport, getSummaries, readableDuration } from './report.ts'; import { getInterval, wait } from './wait.ts'; import { Temporal } from 'temporal-polyfill'; +import { Check, Options, Trigger } from './schema.ts'; +import { WebhookPayload } from '@actions/github/lib/interfaces.ts'; + +interface Attempt { + elapsed: Temporal.Duration; + checks: Check[]; + report: Report; +} + +interface Dumper { + trigger: Trigger; + options: Options; + payload: WebhookPayload; + results: Attempt[]; +} async function run(): Promise { const startedAt = performance.now(); startGroup('Parameters'); - const { trigger, options, githubToken } = parseInput(); + const { trigger, options, githubToken, payload } = parseInput(); info(JSON.stringify( + // Do NOT include payload { trigger, startedAt, @@ -50,6 +66,9 @@ async function run(): Promise { return; } + // Do not include secret even in debug mode + const dumper: Dumper = { trigger, options, payload, results: [] }; + for (;;) { attempts += 1; if (attempts > options.attemptLimits) { @@ -70,9 +89,7 @@ async function run(): Promise { const elapsed = Temporal.Duration.from({ milliseconds: Math.ceil(performance.now() - startedAt) }); startGroup(`Polling ${attempts}: ${(new Date()).toISOString()} # total elapsed ${readableDuration(elapsed)}`); const checks = await fetchChecks(githubToken, trigger); - if (isDebug()) { - setOutput('checks', JSON.stringify(checks, null, 2)); - } + const report = generateReport( getSummaries(checks, trigger), trigger, @@ -101,9 +118,7 @@ async function run(): Promise { ); } - if (isDebug()) { - setOutput('report', JSON.stringify(report, null, 2)); - } + dumper.results.push({ elapsed, checks, report }); const { ok, done, logs } = report; @@ -139,6 +154,10 @@ async function run(): Promise { break; } } + + if (isDebug()) { + setOutput('dump', JSON.stringify(dumper, null, 2)); + } } void run(); From 692d00310c4b7119a3900c58143c58ed5afb3314 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Tue, 4 Jun 2024 16:28:42 +0900 Subject: [PATCH 09/28] Extract outputs workflow to make rerun easy --- .github/workflows/itself.yml | 14 -------- .github/workflows/outputs.yml | 61 +++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 14 deletions(-) create mode 100644 .github/workflows/outputs.yml diff --git a/.github/workflows/itself.yml b/.github/workflows/itself.yml index 642e4f96..52cd0420 100644 --- a/.github/workflows/itself.yml +++ b/.github/workflows/itself.yml @@ -156,7 +156,6 @@ jobs: steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - uses: ./ - id: wait with: retry-method: 'equal_intervals' min-interval-seconds: 5 @@ -181,16 +180,3 @@ jobs: "workflowFile": "GH-820-graceperiod.yml" } ] - - name: 'Copy the output results to files' - env: - DEBUG_DUMP: '${{ steps.wait.outputs.dump }}' - run: | - mkdir outputs - echo "$DEBUG_DUMP" > ./outputs/dump.json - ls -alh ./outputs - - name: Upload dumps as an artifact - if: runner.debug - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 - with: - name: 'outputs-${{ github.job }}-${{ github.run_id }}-${{ github.run_number }}-${{ github.run_attempt }}' - path: ./outputs diff --git a/.github/workflows/outputs.yml b/.github/workflows/outputs.yml new file mode 100644 index 00000000..ac1c6472 --- /dev/null +++ b/.github/workflows/outputs.yml @@ -0,0 +1,61 @@ +name: Outputs +on: + push: + branches: [main] + paths: + - '.github/workflows/outputs.yml' + - 'action.yml' + - 'dist/**' + pull_request: + paths: + - '.github/workflows/outputs.yml' + - 'action.yml' + - 'dist/**' + workflow_dispatch: + +# Disable all permissions in workflow global as to setup clean room +# However PRs will have read permissions because this project is on a public repository +permissions: {} + +jobs: + echo: + runs-on: ubuntu-24.04 + timeout-minutes: 5 + steps: + - run: echo ':)' + # Wait longer than min-interval-seconds + - run: sleep 5 + - run: echo '🎉' + dump: + runs-on: ubuntu-24.04 + if: ${{ github.actor != 'dependabot[bot]' && github.actor != 'renovate[bot]' }} + timeout-minutes: 5 + steps: + - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + - uses: ./ + id: wait + with: + retry-method: 'equal_intervals' + min-interval-seconds: 3 + skip-same-workflow: 'false' + wait-list: | + [ + { + "workflowFile": "outputs.yml", + "jobName": "echo". + "optional": false + } + ] + - name: 'Copy the output results to files' + env: + DEBUG_DUMP: '${{ steps.wait.outputs.dump }}' + run: | + mkdir outputs + echo "$DEBUG_DUMP" > ./outputs/dump.json + ls -alh ./outputs + - name: Upload dumps as an artifact + if: runner.debug + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 + with: + name: 'outputs-${{ github.job }}-${{ github.run_id }}-${{ github.run_number }}-${{ github.run_attempt }}' + path: ./outputs From 66bcbcde9165dc367bbd70f9c2368f2b6f3e65e7 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Tue, 4 Jun 2024 16:29:35 +0900 Subject: [PATCH 10/28] No need to guard uploading --- .github/workflows/outputs.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/outputs.yml b/.github/workflows/outputs.yml index ac1c6472..86636594 100644 --- a/.github/workflows/outputs.yml +++ b/.github/workflows/outputs.yml @@ -54,7 +54,6 @@ jobs: echo "$DEBUG_DUMP" > ./outputs/dump.json ls -alh ./outputs - name: Upload dumps as an artifact - if: runner.debug uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: name: 'outputs-${{ github.job }}-${{ github.run_id }}-${{ github.run_number }}-${{ github.run_attempt }}' From 23ab2fd79fa206d00f7e5da6f7778814bf39451a Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Tue, 4 Jun 2024 16:30:17 +0900 Subject: [PATCH 11/28] Fix a typo --- .github/workflows/outputs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/outputs.yml b/.github/workflows/outputs.yml index 86636594..5a98a095 100644 --- a/.github/workflows/outputs.yml +++ b/.github/workflows/outputs.yml @@ -42,7 +42,7 @@ jobs: [ { "workflowFile": "outputs.yml", - "jobName": "echo". + "jobName": "echo", "optional": false } ] From e9a5abd66f17006b6a70771d9ef6d64f344d68a8 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Tue, 4 Jun 2024 16:38:24 +0900 Subject: [PATCH 12/28] Adjust times to make multiple pollings --- .github/workflows/outputs.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/outputs.yml b/.github/workflows/outputs.yml index 5a98a095..1a1ee9ac 100644 --- a/.github/workflows/outputs.yml +++ b/.github/workflows/outputs.yml @@ -24,7 +24,7 @@ jobs: steps: - run: echo ':)' # Wait longer than min-interval-seconds - - run: sleep 5 + - run: sleep 8 - run: echo '🎉' dump: runs-on: ubuntu-24.04 @@ -36,7 +36,8 @@ jobs: id: wait with: retry-method: 'equal_intervals' - min-interval-seconds: 3 + wait-seconds-before-first-polling: '1' + min-interval-seconds: '3' skip-same-workflow: 'false' wait-list: | [ From 81a9573094adaf364da5afaa1e30f9278bb7fe59 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Tue, 4 Jun 2024 16:52:10 +0900 Subject: [PATCH 13/28] Check the filesize --- .github/workflows/outputs.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/outputs.yml b/.github/workflows/outputs.yml index 1a1ee9ac..976b0b88 100644 --- a/.github/workflows/outputs.yml +++ b/.github/workflows/outputs.yml @@ -54,6 +54,9 @@ jobs: mkdir outputs echo "$DEBUG_DUMP" > ./outputs/dump.json ls -alh ./outputs + if [[ -s './outputs/dump.json' ]] && [[ '${{ runner.debug }}' != '1' ]]; then + exit 2 + fi - name: Upload dumps as an artifact uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: From 5c98a4f232a5b5d45cc6b24bcf10cbe5f9a097a6 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Tue, 4 Jun 2024 16:54:43 +0900 Subject: [PATCH 14/28] Do not early exit with set -e --- .github/workflows/outputs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/outputs.yml b/.github/workflows/outputs.yml index 976b0b88..5eca701f 100644 --- a/.github/workflows/outputs.yml +++ b/.github/workflows/outputs.yml @@ -54,6 +54,7 @@ jobs: mkdir outputs echo "$DEBUG_DUMP" > ./outputs/dump.json ls -alh ./outputs + set +e if [[ -s './outputs/dump.json' ]] && [[ '${{ runner.debug }}' != '1' ]]; then exit 2 fi From e2e86a326936f990f249677ef479c68a7fd7403d Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Tue, 4 Jun 2024 16:57:03 +0900 Subject: [PATCH 15/28] Do not append excess lf --- .github/workflows/outputs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/outputs.yml b/.github/workflows/outputs.yml index 5eca701f..232efcc5 100644 --- a/.github/workflows/outputs.yml +++ b/.github/workflows/outputs.yml @@ -52,7 +52,7 @@ jobs: DEBUG_DUMP: '${{ steps.wait.outputs.dump }}' run: | mkdir outputs - echo "$DEBUG_DUMP" > ./outputs/dump.json + echo -n "$DEBUG_DUMP" > ./outputs/dump.json ls -alh ./outputs set +e if [[ -s './outputs/dump.json' ]] && [[ '${{ runner.debug }}' != '1' ]]; then From b09e5a0534bd9d7237fa383efb2c49bc66d177b0 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Tue, 4 Jun 2024 21:05:30 +0900 Subject: [PATCH 16/28] Do not depend on debug mode --- action.yml | 4 ++++ src/input.ts | 2 ++ src/main.ts | 2 +- src/schema.ts | 1 + 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/action.yml b/action.yml index 3f983bb9..0a856158 100644 --- a/action.yml +++ b/action.yml @@ -41,6 +41,10 @@ inputs: description: 'Skip jobs defined in the same workflow which using this action' required: false default: 'false' + dump: + description: 'Output resources into jobs..outputs.dump for debugging purposes' + required: false + default: 'false' dry-run: description: 'Avoid http requests for tests' required: false diff --git a/src/input.ts b/src/input.ts index 2c9bf735..ec29c993 100644 --- a/src/input.ts +++ b/src/input.ts @@ -39,6 +39,7 @@ export function parseInput(): { trigger: Trigger; options: Options; githubToken: ); const isEarlyExit = getBooleanInput('early-exit', { required: true, trimWhitespace: true }); const shouldSkipSameWorkflow = getBooleanInput('skip-same-workflow', { required: true, trimWhitespace: true }); + const shouldDump = getBooleanInput('dump', { required: true, trimWhitespace: true }); const isDryRun = getBooleanInput('dry-run', { required: true, trimWhitespace: true }); const options = Options.parse({ @@ -50,6 +51,7 @@ export function parseInput(): { trigger: Trigger; options: Options; githubToken: skipList: JSON.parse(getInput('skip-list', { required: true })), isEarlyExit, shouldSkipSameWorkflow, + shouldDump, isDryRun, }); diff --git a/src/main.ts b/src/main.ts index bae6b33c..1d1cbbff 100644 --- a/src/main.ts +++ b/src/main.ts @@ -155,7 +155,7 @@ async function run(): Promise { } } - if (isDebug()) { + if (options.shouldDump) { setOutput('dump', JSON.stringify(dumper, null, 2)); } } diff --git a/src/schema.ts b/src/schema.ts index 8857ad79..d7f91a6f 100644 --- a/src/schema.ts +++ b/src/schema.ts @@ -102,6 +102,7 @@ export const Options = z.object({ attemptLimits: z.number().min(1), isEarlyExit: z.boolean(), shouldSkipSameWorkflow: z.boolean(), + shouldDump: z.boolean(), isDryRun: z.boolean(), }).strict().readonly().refine( ({ waitList, skipList }) => !(waitList.length > 0 && skipList.length > 0), From 0124347296adfd27ce32507c1c38f87ebb5d87d4 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Wed, 5 Jun 2024 03:50:51 +0900 Subject: [PATCH 17/28] Omit middle pollings in debug report --- src/main.ts | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main.ts b/src/main.ts index 1d1cbbff..128d476e 100644 --- a/src/main.ts +++ b/src/main.ts @@ -30,7 +30,7 @@ import { Temporal } from 'temporal-polyfill'; import { Check, Options, Trigger } from './schema.ts'; import { WebhookPayload } from '@actions/github/lib/interfaces.ts'; -interface Attempt { +interface Result { elapsed: Temporal.Duration; checks: Check[]; report: Report; @@ -40,7 +40,8 @@ interface Dumper { trigger: Trigger; options: Options; payload: WebhookPayload; - results: Attempt[]; + // - Do not include all pollings in one file, it might be large size + results: Record; } async function run(): Promise { @@ -66,8 +67,8 @@ async function run(): Promise { return; } - // Do not include secret even in debug mode - const dumper: Dumper = { trigger, options, payload, results: [] }; + // - Do not include secret even in debug mode + const dumper: Dumper = { trigger, options, payload, results: {} }; for (;;) { attempts += 1; @@ -97,6 +98,10 @@ async function run(): Promise { options, ); + if (attempts === 1) { + dumper.results[attempts] = { elapsed: elapsed, checks, report }; + } + for (const summary of report.summaries) { const { runStatus, @@ -118,8 +123,6 @@ async function run(): Promise { ); } - dumper.results.push({ elapsed, checks, report }); - const { ok, done, logs } = report; for (const { severity, message, resource } of logs) { @@ -145,6 +148,10 @@ async function run(): Promise { endGroup(); if (shouldStop) { + if (attempts !== 1) { + dumper.results[attempts] = { elapsed, checks, report }; + } + if (ok) { info(colorize('notice', 'all jobs passed')); } else { From b421c7986373acc8450d982b70e40e956a54a1b1 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Wed, 5 Jun 2024 11:36:35 +0900 Subject: [PATCH 18/28] Remove outdated isDebug --- dist/index.js | 18 +++++++++++++----- src/main.ts | 2 +- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/dist/index.js b/dist/index.js index be8e9e8c..581f4d77 100644 --- a/dist/index.js +++ b/dist/index.js @@ -18896,10 +18896,10 @@ Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); error2(message); } exports.setFailed = setFailed2; - function isDebug2() { + function isDebug() { return process.env["RUNNER_DEBUG"] === "1"; } - exports.isDebug = isDebug2; + exports.isDebug = isDebug; function debug(message) { command_1.issueCommand("debug", {}, message); } @@ -31091,6 +31091,7 @@ var Options = z2.object({ attemptLimits: z2.number().min(1), isEarlyExit: z2.boolean(), shouldSkipSameWorkflow: z2.boolean(), + shouldDump: z2.boolean(), isDryRun: z2.boolean() }).strict().readonly().refine( ({ waitList, skipList }) => !(waitList.length > 0 && skipList.length > 0), @@ -31143,6 +31144,7 @@ function parseInput() { ); const isEarlyExit = (0, import_core.getBooleanInput)("early-exit", { required: true, trimWhitespace: true }); const shouldSkipSameWorkflow = (0, import_core.getBooleanInput)("skip-same-workflow", { required: true, trimWhitespace: true }); + const shouldDump = (0, import_core.getBooleanInput)("dump", { required: true, trimWhitespace: true }); const isDryRun = (0, import_core.getBooleanInput)("dry-run", { required: true, trimWhitespace: true }); const options = Options.parse({ initialDuration: Durationable.parse({ seconds: waitSecondsBeforeFirstPolling }), @@ -31153,6 +31155,7 @@ function parseInput() { skipList: JSON.parse((0, import_core.getInput)("skip-list", { required: true })), isEarlyExit, shouldSkipSameWorkflow, + shouldDump, isDryRun }); const trigger = { ...repo, ref: commitSha, runId, jobName: job, eventName }; @@ -32570,7 +32573,7 @@ async function run() { if (options.isDryRun) { return; } - const dumper = { trigger, options, payload, results: [] }; + const dumper = { trigger, options, payload, results: {} }; for (; ; ) { attempts += 1; if (attempts > options.attemptLimits) { @@ -32594,6 +32597,9 @@ async function run() { elapsed, options ); + if (attempts === 1) { + dumper.results[attempts] = { elapsed, checks, report }; + } for (const summary of report.summaries) { const { runStatus, @@ -32609,7 +32615,6 @@ async function run() { `${workflowBasename}(${colorize(severity, jobName)}): [eventName: ${eventName}][runStatus: ${runStatus}][runConclusion: ${runConclusion ?? nullStr}][runURL: ${checkRunUrl}]` ); } - dumper.results.push({ elapsed, checks, report }); const { ok, done, logs } = report; for (const { severity, message, resource } of logs) { (0, import_core3.info)(colorize(severity, message)); @@ -32631,6 +32636,9 @@ async function run() { } (0, import_core3.endGroup)(); if (shouldStop) { + if (attempts !== 1) { + dumper.results[attempts] = { elapsed, checks, report }; + } if (ok) { (0, import_core3.info)(colorize("notice", "all jobs passed")); } else { @@ -32639,7 +32647,7 @@ async function run() { break; } } - if ((0, import_core3.isDebug)()) { + if (options.shouldDump) { (0, import_core3.setOutput)("dump", JSON.stringify(dumper, null, 2)); } } diff --git a/src/main.ts b/src/main.ts index 128d476e..2b282536 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,4 +1,4 @@ -import { info, setFailed, isDebug, startGroup, endGroup, setOutput } from '@actions/core'; +import { info, setFailed, startGroup, endGroup, setOutput } from '@actions/core'; import styles from 'ansi-styles'; function colorize(severity: Severity, message: string): string { From 586d9d455faf02a84ab3bb5d92d32a42343dc16f Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Wed, 5 Jun 2024 11:58:31 +0900 Subject: [PATCH 19/28] Remove payload from dump data --- README.md | 5 +++-- action.yml | 4 ---- dist/index.js | 13 ++++--------- src/input.ts | 7 ++----- src/main.ts | 11 ++++------- src/schema.ts | 1 - 6 files changed, 13 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index fd8e37ab..13896ae8 100644 --- a/README.md +++ b/README.md @@ -93,8 +93,9 @@ permissions: (Since v3.4.0) -If used in debug mode, this action outputs the used resources into the `dump` key.\ -This data is only provided for debugging purposes, so the schema is not defined. +- `dump`\ + Collected resources which keeps fields then logged.\ + This data is only provided for debugging purposes, so the schema is not defined. ## Examples diff --git a/action.yml b/action.yml index 0a856158..3f983bb9 100644 --- a/action.yml +++ b/action.yml @@ -41,10 +41,6 @@ inputs: description: 'Skip jobs defined in the same workflow which using this action' required: false default: 'false' - dump: - description: 'Output resources into jobs..outputs.dump for debugging purposes' - required: false - default: 'false' dry-run: description: 'Avoid http requests for tests' required: false diff --git a/dist/index.js b/dist/index.js index 581f4d77..422e9064 100644 --- a/dist/index.js +++ b/dist/index.js @@ -31091,7 +31091,6 @@ var Options = z2.object({ attemptLimits: z2.number().min(1), isEarlyExit: z2.boolean(), shouldSkipSameWorkflow: z2.boolean(), - shouldDump: z2.boolean(), isDryRun: z2.boolean() }).strict().readonly().refine( ({ waitList, skipList }) => !(waitList.length > 0 && skipList.length > 0), @@ -31144,7 +31143,6 @@ function parseInput() { ); const isEarlyExit = (0, import_core.getBooleanInput)("early-exit", { required: true, trimWhitespace: true }); const shouldSkipSameWorkflow = (0, import_core.getBooleanInput)("skip-same-workflow", { required: true, trimWhitespace: true }); - const shouldDump = (0, import_core.getBooleanInput)("dump", { required: true, trimWhitespace: true }); const isDryRun = (0, import_core.getBooleanInput)("dry-run", { required: true, trimWhitespace: true }); const options = Options.parse({ initialDuration: Durationable.parse({ seconds: waitSecondsBeforeFirstPolling }), @@ -31155,13 +31153,12 @@ function parseInput() { skipList: JSON.parse((0, import_core.getInput)("skip-list", { required: true })), isEarlyExit, shouldSkipSameWorkflow, - shouldDump, isDryRun }); const trigger = { ...repo, ref: commitSha, runId, jobName: job, eventName }; const githubToken = (0, import_core.getInput)("github-token", { required: true, trimWhitespace: false }); (0, import_core.setSecret)(githubToken); - return { trigger, options, githubToken, payload }; + return { trigger, options, githubToken }; } // node_modules/.pnpm/universal-user-agent@7.0.2/node_modules/universal-user-agent/index.js @@ -32555,7 +32552,7 @@ function colorize(severity, message) { async function run() { const startedAt = performance.now(); (0, import_core3.startGroup)("Parameters"); - const { trigger, options, githubToken, payload } = parseInput(); + const { trigger, options, githubToken } = parseInput(); (0, import_core3.info)(JSON.stringify( // Do NOT include payload { @@ -32573,7 +32570,7 @@ async function run() { if (options.isDryRun) { return; } - const dumper = { trigger, options, payload, results: {} }; + const dumper = { trigger, options, results: {} }; for (; ; ) { attempts += 1; if (attempts > options.attemptLimits) { @@ -32647,9 +32644,7 @@ async function run() { break; } } - if (options.shouldDump) { - (0, import_core3.setOutput)("dump", JSON.stringify(dumper, null, 2)); - } + (0, import_core3.setOutput)("dump", JSON.stringify(dumper, null, 2)); } void run(); /*! Bundled license information: diff --git a/src/input.ts b/src/input.ts index ec29c993..f3816f0c 100644 --- a/src/input.ts +++ b/src/input.ts @@ -1,10 +1,9 @@ import { getInput, getBooleanInput, setSecret, error } from '@actions/core'; -import { WebhookPayload } from '@actions/github/lib/interfaces.ts'; import { context } from '@actions/github'; import { Durationable, Options, Trigger } from './schema.ts'; -export function parseInput(): { trigger: Trigger; options: Options; githubToken: string; payload: WebhookPayload } { +export function parseInput(): { trigger: Trigger; options: Options; githubToken: string } { const { repo, payload, @@ -39,7 +38,6 @@ export function parseInput(): { trigger: Trigger; options: Options; githubToken: ); const isEarlyExit = getBooleanInput('early-exit', { required: true, trimWhitespace: true }); const shouldSkipSameWorkflow = getBooleanInput('skip-same-workflow', { required: true, trimWhitespace: true }); - const shouldDump = getBooleanInput('dump', { required: true, trimWhitespace: true }); const isDryRun = getBooleanInput('dry-run', { required: true, trimWhitespace: true }); const options = Options.parse({ @@ -51,7 +49,6 @@ export function parseInput(): { trigger: Trigger; options: Options; githubToken: skipList: JSON.parse(getInput('skip-list', { required: true })), isEarlyExit, shouldSkipSameWorkflow, - shouldDump, isDryRun, }); @@ -61,5 +58,5 @@ export function parseInput(): { trigger: Trigger; options: Options; githubToken: const githubToken = getInput('github-token', { required: true, trimWhitespace: false }); setSecret(githubToken); - return { trigger, options, githubToken, payload }; + return { trigger, options, githubToken }; } diff --git a/src/main.ts b/src/main.ts index 2b282536..87b88bcb 100644 --- a/src/main.ts +++ b/src/main.ts @@ -28,7 +28,6 @@ import { Report, Severity, generateReport, getSummaries, readableDuration } from import { getInterval, wait } from './wait.ts'; import { Temporal } from 'temporal-polyfill'; import { Check, Options, Trigger } from './schema.ts'; -import { WebhookPayload } from '@actions/github/lib/interfaces.ts'; interface Result { elapsed: Temporal.Duration; @@ -36,10 +35,10 @@ interface Result { report: Report; } +// `payload` is intentionally omitted for now: https://github.com/kachick/wait-other-jobs/pull/832#discussion_r1625952633 interface Dumper { trigger: Trigger; options: Options; - payload: WebhookPayload; // - Do not include all pollings in one file, it might be large size results: Record; } @@ -47,7 +46,7 @@ interface Dumper { async function run(): Promise { const startedAt = performance.now(); startGroup('Parameters'); - const { trigger, options, githubToken, payload } = parseInput(); + const { trigger, options, githubToken } = parseInput(); info(JSON.stringify( // Do NOT include payload { @@ -68,7 +67,7 @@ async function run(): Promise { } // - Do not include secret even in debug mode - const dumper: Dumper = { trigger, options, payload, results: {} }; + const dumper: Dumper = { trigger, options, results: {} }; for (;;) { attempts += 1; @@ -162,9 +161,7 @@ async function run(): Promise { } } - if (options.shouldDump) { - setOutput('dump', JSON.stringify(dumper, null, 2)); - } + setOutput('dump', JSON.stringify(dumper, null, 2)); } void run(); diff --git a/src/schema.ts b/src/schema.ts index d7f91a6f..8857ad79 100644 --- a/src/schema.ts +++ b/src/schema.ts @@ -102,7 +102,6 @@ export const Options = z.object({ attemptLimits: z.number().min(1), isEarlyExit: z.boolean(), shouldSkipSameWorkflow: z.boolean(), - shouldDump: z.boolean(), isDryRun: z.boolean(), }).strict().readonly().refine( ({ waitList, skipList }) => !(waitList.length > 0 && skipList.length > 0), From 234f1463ce2c0fb393d469607011e1be02ef0f2c Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Wed, 5 Jun 2024 12:42:10 +0900 Subject: [PATCH 20/28] Remove outdated guard in workflow --- .github/workflows/outputs.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/outputs.yml b/.github/workflows/outputs.yml index 232efcc5..c7c495c5 100644 --- a/.github/workflows/outputs.yml +++ b/.github/workflows/outputs.yml @@ -28,7 +28,6 @@ jobs: - run: echo '🎉' dump: runs-on: ubuntu-24.04 - if: ${{ github.actor != 'dependabot[bot]' && github.actor != 'renovate[bot]' }} timeout-minutes: 5 steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 @@ -54,10 +53,6 @@ jobs: mkdir outputs echo -n "$DEBUG_DUMP" > ./outputs/dump.json ls -alh ./outputs - set +e - if [[ -s './outputs/dump.json' ]] && [[ '${{ runner.debug }}' != '1' ]]; then - exit 2 - fi - name: Upload dumps as an artifact uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: From 81ed1522664e739c446365ff87995272c3dc9efd Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Wed, 5 Jun 2024 12:48:13 +0900 Subject: [PATCH 21/28] Do not use single quote for multine lines --- .github/workflows/outputs.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/outputs.yml b/.github/workflows/outputs.yml index c7c495c5..fa81f7bf 100644 --- a/.github/workflows/outputs.yml +++ b/.github/workflows/outputs.yml @@ -48,7 +48,8 @@ jobs: ] - name: 'Copy the output results to files' env: - DEBUG_DUMP: '${{ steps.wait.outputs.dump }}' + DEBUG_DUMP: | + ${{ steps.wait.outputs.dump }} run: | mkdir outputs echo -n "$DEBUG_DUMP" > ./outputs/dump.json From aa428732c1c9cfd76479e199cde4103b917d589a Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Wed, 5 Jun 2024 13:35:19 +0900 Subject: [PATCH 22/28] `pnpm install @actions/artifact` --- package.json | 1 + pnpm-lock.yaml | 1052 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1053 insertions(+) diff --git a/package.json b/package.json index 29c6152b..e40217c3 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "author": "Kenichi Kamiya ", "license": "MIT", "dependencies": { + "@actions/artifact": "^2.1.7", "@actions/core": "^1.10.1", "@actions/github": "^6.0.0", "@octokit/core": "^6.1.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eed937bb..9a53a419 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,6 +5,9 @@ settings: excludeLinksFromLockfile: false dependencies: + '@actions/artifact': + specifier: ^2.1.7 + version: 2.1.7 '@actions/core': specifier: ^1.10.1 version: 1.10.1 @@ -52,6 +55,29 @@ devDependencies: packages: + /@actions/artifact@2.1.7: + resolution: {integrity: sha512-iIFsTPZnb182dBc+Is5v7ZqojC4ydO8Ru4/PD8Azg2diV//fdW3H6biEH/utUlNhwfOuHxZpC/QSQsU5KDEuuw==} + dependencies: + '@actions/core': 1.10.1 + '@actions/github': 5.1.1 + '@actions/http-client': 2.2.1 + '@azure/storage-blob': 12.23.0 + '@octokit/core': 3.6.0 + '@octokit/plugin-request-log': 1.0.4(@octokit/core@3.6.0) + '@octokit/plugin-retry': 3.0.9 + '@octokit/request-error': 5.1.0 + '@protobuf-ts/plugin': 2.9.4 + archiver: 7.0.1 + crypto: 1.0.1 + jwt-decode: 3.1.2 + twirp-ts: 2.5.0(@protobuf-ts/plugin@2.9.4) + unzip-stream: 0.3.4 + transitivePeerDependencies: + - encoding + - supports-color + - ts-proto + dev: false + /@actions/core@1.10.1: resolution: {integrity: sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==} dependencies: @@ -59,6 +85,17 @@ packages: uuid: 8.3.2 dev: false + /@actions/github@5.1.1: + resolution: {integrity: sha512-Nk59rMDoJaV+mHCOJPXuvB1zIbomlKS0dmSIqPGxd0enAXBnOfn4VWF+CGtRCwXZG9Epa54tZA7VIRlJDS8A6g==} + dependencies: + '@actions/http-client': 2.2.1 + '@octokit/core': 3.6.0 + '@octokit/plugin-paginate-rest': 2.21.3(@octokit/core@3.6.0) + '@octokit/plugin-rest-endpoint-methods': 5.16.2(@octokit/core@3.6.0) + transitivePeerDependencies: + - encoding + dev: false + /@actions/github@6.0.0: resolution: {integrity: sha512-alScpSVnYmjNEXboZjarjukQEzgCRmjMv6Xj47fsdnqGS73bjJNDpiiXmp8jr0UZLdUB6d9jW63IcmddUP+l0g==} dependencies: @@ -75,6 +112,139 @@ packages: undici: 5.28.4 dev: false + /@azure/abort-controller@1.1.0: + resolution: {integrity: sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==} + engines: {node: '>=12.0.0'} + dependencies: + tslib: 2.6.2 + dev: false + + /@azure/abort-controller@2.1.2: + resolution: {integrity: sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==} + engines: {node: '>=18.0.0'} + dependencies: + tslib: 2.6.2 + dev: false + + /@azure/core-auth@1.7.2: + resolution: {integrity: sha512-Igm/S3fDYmnMq1uKS38Ae1/m37B3zigdlZw+kocwEhh5GjyKjPrXKO2J6rzpC1wAxrNil/jX9BJRqBshyjnF3g==} + engines: {node: '>=18.0.0'} + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-util': 1.9.0 + tslib: 2.6.2 + dev: false + + /@azure/core-client@1.9.2: + resolution: {integrity: sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==} + engines: {node: '>=18.0.0'} + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.7.2 + '@azure/core-rest-pipeline': 1.16.0 + '@azure/core-tracing': 1.1.2 + '@azure/core-util': 1.9.0 + '@azure/logger': 1.1.2 + tslib: 2.6.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@azure/core-http-compat@2.1.2: + resolution: {integrity: sha512-5MnV1yqzZwgNLLjlizsU3QqOeQChkIXw781Fwh1xdAqJR5AA32IUaq6xv1BICJvfbHoa+JYcaij2HFkhLbNTJQ==} + engines: {node: '>=18.0.0'} + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-client': 1.9.2 + '@azure/core-rest-pipeline': 1.16.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@azure/core-lro@2.7.2: + resolution: {integrity: sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==} + engines: {node: '>=18.0.0'} + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-util': 1.9.0 + '@azure/logger': 1.1.2 + tslib: 2.6.2 + dev: false + + /@azure/core-paging@1.6.2: + resolution: {integrity: sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==} + engines: {node: '>=18.0.0'} + dependencies: + tslib: 2.6.2 + dev: false + + /@azure/core-rest-pipeline@1.16.0: + resolution: {integrity: sha512-CeuTvsXxCUmEuxH5g/aceuSl6w2EugvNHKAtKKVdiX915EjJJxAwfzNNWZreNnbxHZ2fi0zaM6wwS23x2JVqSQ==} + engines: {node: '>=18.0.0'} + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.7.2 + '@azure/core-tracing': 1.1.2 + '@azure/core-util': 1.9.0 + '@azure/logger': 1.1.2 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.4 + tslib: 2.6.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@azure/core-tracing@1.1.2: + resolution: {integrity: sha512-dawW9ifvWAWmUm9/h+/UQ2jrdvjCJ7VJEuCJ6XVNudzcOwm53BFZH4Q845vjfgoUAM8ZxokvVNxNxAITc502YA==} + engines: {node: '>=18.0.0'} + dependencies: + tslib: 2.6.2 + dev: false + + /@azure/core-util@1.9.0: + resolution: {integrity: sha512-AfalUQ1ZppaKuxPPMsFEUdX6GZPB3d9paR9d/TTL7Ow2De8cJaC7ibi7kWVlFAVPCYo31OcnGymc0R89DX8Oaw==} + engines: {node: '>=18.0.0'} + dependencies: + '@azure/abort-controller': 2.1.2 + tslib: 2.6.2 + dev: false + + /@azure/core-xml@1.4.2: + resolution: {integrity: sha512-CW3MZhApe/S4iikbYKE7s83fjDBPIr2kpidX+hlGRwh7N4o1nIpQ/PfJTeioqhfqdMvRtheEl+ft64fyTaLNaA==} + engines: {node: '>=18.0.0'} + dependencies: + fast-xml-parser: 4.4.0 + tslib: 2.6.2 + dev: false + + /@azure/logger@1.1.2: + resolution: {integrity: sha512-l170uE7bsKpIU6B/giRc9i4NI0Mj+tANMMMxf7Zi/5cKzEqPayP7+X1WPrG7e+91JgY8N+7K7nF2WOi7iVhXvg==} + engines: {node: '>=18.0.0'} + dependencies: + tslib: 2.6.2 + dev: false + + /@azure/storage-blob@12.23.0: + resolution: {integrity: sha512-c1KJ5R5hqR/HtvmFtTn/Y1BNMq45NUBp0LZH7yF8WFMET+wmESgEr0FVTu/Z5NonmfUjbgJZG5Nh8xHc5RdWGQ==} + engines: {node: '>=18.0.0'} + dependencies: + '@azure/abort-controller': 1.1.0 + '@azure/core-auth': 1.7.2 + '@azure/core-client': 1.9.2 + '@azure/core-http-compat': 2.1.2 + '@azure/core-lro': 2.7.2 + '@azure/core-paging': 1.6.2 + '@azure/core-rest-pipeline': 1.16.0 + '@azure/core-tracing': 1.1.2 + '@azure/core-util': 1.9.0 + '@azure/core-xml': 1.4.2 + '@azure/logger': 1.1.2 + events: 3.3.0 + tslib: 2.6.2 + transitivePeerDependencies: + - supports-color + dev: false + /@esbuild/aix-ppc64@0.20.2: resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} engines: {node: '>=12'} @@ -494,6 +664,24 @@ packages: engines: {node: '>=14'} dev: false + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: false + + /@octokit/auth-token@2.5.0: + resolution: {integrity: sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==} + dependencies: + '@octokit/types': 6.41.0 + dev: false + /@octokit/auth-token@4.0.0: resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==} engines: {node: '>= 18'} @@ -504,6 +692,20 @@ packages: engines: {node: '>= 18'} dev: false + /@octokit/core@3.6.0: + resolution: {integrity: sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==} + dependencies: + '@octokit/auth-token': 2.5.0 + '@octokit/graphql': 4.8.0 + '@octokit/request': 5.6.3 + '@octokit/request-error': 2.1.0 + '@octokit/types': 6.41.0 + before-after-hook: 2.2.3 + universal-user-agent: 6.0.1 + transitivePeerDependencies: + - encoding + dev: false + /@octokit/core@5.2.0: resolution: {integrity: sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==} engines: {node: '>= 18'} @@ -538,6 +740,14 @@ packages: universal-user-agent: 7.0.2 dev: false + /@octokit/endpoint@6.0.12: + resolution: {integrity: sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==} + dependencies: + '@octokit/types': 6.41.0 + is-plain-object: 5.0.0 + universal-user-agent: 6.0.1 + dev: false + /@octokit/endpoint@9.0.5: resolution: {integrity: sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==} engines: {node: '>= 18'} @@ -553,6 +763,16 @@ packages: graphql-tag: 2.12.6(graphql@16.8.1) dev: false + /@octokit/graphql@4.8.0: + resolution: {integrity: sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==} + dependencies: + '@octokit/request': 5.6.3 + '@octokit/types': 6.41.0 + universal-user-agent: 6.0.1 + transitivePeerDependencies: + - encoding + dev: false + /@octokit/graphql@7.1.0: resolution: {integrity: sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==} engines: {node: '>= 18'} @@ -571,6 +791,10 @@ packages: universal-user-agent: 7.0.2 dev: false + /@octokit/openapi-types@12.11.0: + resolution: {integrity: sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==} + dev: false + /@octokit/openapi-types@20.0.0: resolution: {integrity: sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==} dev: false @@ -588,6 +812,15 @@ packages: '@octokit/core': 6.1.2 dev: false + /@octokit/plugin-paginate-rest@2.21.3(@octokit/core@3.6.0): + resolution: {integrity: sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==} + peerDependencies: + '@octokit/core': '>=2' + dependencies: + '@octokit/core': 3.6.0 + '@octokit/types': 6.41.0 + dev: false + /@octokit/plugin-paginate-rest@9.2.1(@octokit/core@5.2.0): resolution: {integrity: sha512-wfGhE/TAkXZRLjksFXuDZdmGnJQHvtU/joFQdweXUgzo1XwvBCD4o4+75NtFfjfLK5IwLf9vHTfSiU3sLRYpRw==} engines: {node: '>= 18'} @@ -598,6 +831,14 @@ packages: '@octokit/types': 12.6.0 dev: false + /@octokit/plugin-request-log@1.0.4(@octokit/core@3.6.0): + resolution: {integrity: sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==} + peerDependencies: + '@octokit/core': '>=3' + dependencies: + '@octokit/core': 3.6.0 + dev: false + /@octokit/plugin-rest-endpoint-methods@10.4.1(@octokit/core@5.2.0): resolution: {integrity: sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==} engines: {node: '>= 18'} @@ -608,6 +849,31 @@ packages: '@octokit/types': 12.6.0 dev: false + /@octokit/plugin-rest-endpoint-methods@5.16.2(@octokit/core@3.6.0): + resolution: {integrity: sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==} + peerDependencies: + '@octokit/core': '>=3' + dependencies: + '@octokit/core': 3.6.0 + '@octokit/types': 6.41.0 + deprecation: 2.3.1 + dev: false + + /@octokit/plugin-retry@3.0.9: + resolution: {integrity: sha512-r+fArdP5+TG6l1Rv/C9hVoty6tldw6cE2pRHNGmFPdyfrc696R6JjrQ3d7HdVqGwuzfyrcaLAKD7K8TX8aehUQ==} + dependencies: + '@octokit/types': 6.41.0 + bottleneck: 2.19.5 + dev: false + + /@octokit/request-error@2.1.0: + resolution: {integrity: sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==} + dependencies: + '@octokit/types': 6.41.0 + deprecation: 2.3.1 + once: 1.4.0 + dev: false + /@octokit/request-error@5.1.0: resolution: {integrity: sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==} engines: {node: '>= 18'} @@ -624,6 +890,19 @@ packages: '@octokit/types': 13.4.0 dev: false + /@octokit/request@5.6.3: + resolution: {integrity: sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==} + dependencies: + '@octokit/endpoint': 6.0.12 + '@octokit/request-error': 2.1.0 + '@octokit/types': 6.41.0 + is-plain-object: 5.0.0 + node-fetch: 2.7.0 + universal-user-agent: 6.0.1 + transitivePeerDependencies: + - encoding + dev: false + /@octokit/request@8.4.0: resolution: {integrity: sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==} engines: {node: '>= 18'} @@ -656,6 +935,52 @@ packages: '@octokit/openapi-types': 22.0.1 dev: false + /@octokit/types@6.41.0: + resolution: {integrity: sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==} + dependencies: + '@octokit/openapi-types': 12.11.0 + dev: false + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: false + optional: true + + /@protobuf-ts/plugin-framework@2.9.4: + resolution: {integrity: sha512-9nuX1kjdMliv+Pes8dQCKyVhjKgNNfwxVHg+tx3fLXSfZZRcUHMc1PMwB9/vTvc6gBKt9QGz5ERqSqZc0++E9A==} + dependencies: + '@protobuf-ts/runtime': 2.9.4 + typescript: 3.9.10 + dev: false + + /@protobuf-ts/plugin@2.9.4: + resolution: {integrity: sha512-Db5Laq5T3mc6ERZvhIhkj1rn57/p8gbWiCKxQWbZBBl20wMuqKoHbRw4tuD7FyXi+IkwTToaNVXymv5CY3E8Rw==} + hasBin: true + dependencies: + '@protobuf-ts/plugin-framework': 2.9.4 + '@protobuf-ts/protoc': 2.9.4 + '@protobuf-ts/runtime': 2.9.4 + '@protobuf-ts/runtime-rpc': 2.9.4 + typescript: 3.9.10 + dev: false + + /@protobuf-ts/protoc@2.9.4: + resolution: {integrity: sha512-hQX+nOhFtrA+YdAXsXEDrLoGJqXHpgv4+BueYF0S9hy/Jq0VRTVlJS1Etmf4qlMt/WdigEes5LOd/LDzui4GIQ==} + hasBin: true + dev: false + + /@protobuf-ts/runtime-rpc@2.9.4: + resolution: {integrity: sha512-y9L9JgnZxXFqH5vD4d7j9duWvIJ7AShyBRoNKJGhu9Q27qIbchfzli66H9RvrQNIFk5ER7z1Twe059WZGqERcA==} + dependencies: + '@protobuf-ts/runtime': 2.9.4 + dev: false + + /@protobuf-ts/runtime@2.9.4: + resolution: {integrity: sha512-vHRFWtJJB/SiogWDF0ypoKfRIZ41Kq+G9cEFj6Qm1eQaAhJ1LDFvgZ7Ja4tb3iLOQhz0PaoPnnOijF1qmEqTxg==} + dev: false + /@tsconfig/node20@20.1.4: resolution: {integrity: sha512-sqgsT69YFeLWf5NtJ4Xq/xAF8p4ZQHlmGW74Nu2tD4+g5fAsposc4ZfaaPixVu4y01BEiDCWLRDCvDM5JOsRxg==} dev: true @@ -670,11 +995,92 @@ packages: undici-types: 5.26.5 dev: true + /abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + dependencies: + event-target-shim: 5.0.1 + dev: false + + /agent-base@7.1.1: + resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} + engines: {node: '>= 14'} + dependencies: + debug: 4.3.5 + transitivePeerDependencies: + - supports-color + dev: false + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: false + + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: false + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: false + /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} dev: false + /archiver-utils@5.0.2: + resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==} + engines: {node: '>= 14'} + dependencies: + glob: 10.4.1 + graceful-fs: 4.2.11 + is-stream: 2.0.1 + lazystream: 1.0.1 + lodash: 4.17.21 + normalize-path: 3.0.0 + readable-stream: 4.5.2 + dev: false + + /archiver@7.0.1: + resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==} + engines: {node: '>= 14'} + dependencies: + archiver-utils: 5.0.2 + async: 3.2.5 + buffer-crc32: 1.0.0 + readable-stream: 4.5.2 + readdir-glob: 1.1.3 + tar-stream: 3.1.7 + zip-stream: 6.0.1 + dev: false + + /async@3.2.5: + resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} + dev: false + + /b4a@1.6.6: + resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} + dev: false + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: false + + /bare-events@2.3.1: + resolution: {integrity: sha512-sJnSOTVESURZ61XgEleqmP255T6zTYwHPwE4r6SssIh0U9/uDvfpdoJYpVUerJJZH2fueO+CdT8ZT+OC/7aZDA==} + requiresBuild: true + dev: false + optional: true + + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: false + /before-after-hook@2.2.3: resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} dev: false @@ -683,10 +1089,159 @@ packages: resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==} dev: false + /binary@0.3.0: + resolution: {integrity: sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==} + dependencies: + buffers: 0.1.1 + chainsaw: 0.1.0 + dev: false + + /bottleneck@2.19.5: + resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} + dev: false + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: false + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: false + + /buffer-crc32@1.0.0: + resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} + engines: {node: '>=8.0.0'} + dev: false + + /buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: false + + /buffers@0.1.1: + resolution: {integrity: sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==} + engines: {node: '>=0.2.0'} + dev: false + + /camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + dependencies: + pascal-case: 3.1.2 + tslib: 2.6.2 + dev: false + + /chainsaw@0.1.0: + resolution: {integrity: sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==} + dependencies: + traverse: 0.3.9 + dev: false + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: false + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: false + + /commander@6.2.1: + resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} + engines: {node: '>= 6'} + dev: false + + /compress-commons@6.0.2: + resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} + engines: {node: '>= 14'} + dependencies: + crc-32: 1.2.2 + crc32-stream: 6.0.0 + is-stream: 2.0.1 + normalize-path: 3.0.0 + readable-stream: 4.5.2 + dev: false + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: false + + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: false + + /crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + dev: false + + /crc32-stream@6.0.0: + resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==} + engines: {node: '>= 14'} + dependencies: + crc-32: 1.2.2 + readable-stream: 4.5.2 + dev: false + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: false + + /crypto@1.0.1: + resolution: {integrity: sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==} + deprecated: This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in. + dev: false + + /debug@4.3.5: + resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: false + /deprecation@2.3.1: resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} dev: false + /dot-object@2.1.5: + resolution: {integrity: sha512-xHF8EP4XH/Ba9fvAF2LDd5O3IITVolerVV6xvkxoM8zlGEiCUrggpAnHyOoKJKCrhvPcGATFAUwIujj7bRG5UA==} + hasBin: true + dependencies: + commander: 6.2.1 + glob: 7.2.3 + dev: false + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: false + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: false + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: false + /esbuild@0.20.2: resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} engines: {node: '>=12'} @@ -749,6 +1304,39 @@ packages: '@esbuild/win32-x64': 0.21.4 dev: true + /event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + dev: false + + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: false + + /fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + dev: false + + /fast-xml-parser@4.4.0: + resolution: {integrity: sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==} + hasBin: true + dependencies: + strnum: 1.0.5 + dev: false + + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: false + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: false + /fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -763,6 +1351,34 @@ packages: resolve-pkg-maps: 1.0.0 dev: true + /glob@10.4.1: + resolution: {integrity: sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==} + engines: {node: '>=16 || 14 >=14.18'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 3.3.0 + minimatch: 9.0.4 + minipass: 7.1.2 + path-scurry: 1.11.1 + dev: false + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: false + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: false + /graphql-tag@2.12.6(graphql@16.8.1): resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} engines: {node: '>=10'} @@ -778,16 +1394,342 @@ packages: engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} dev: false + /http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.1 + debug: 4.3.5 + transitivePeerDependencies: + - supports-color + dev: false + + /https-proxy-agent@7.0.4: + resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.1 + debug: 4.3.5 + transitivePeerDependencies: + - supports-color + dev: false + + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: false + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: false + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: false + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: false + + /is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + dev: false + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: false + + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: false + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: false + + /jackspeak@3.3.0: + resolution: {integrity: sha512-glPiBfKguqA7v8JsXO3iLjJWZ9FV1vNpoI0I9hI9Mnk5yetO9uPLSpiCEmiVijAssv2f54HpvtzvAHfhPieiDQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: false + + /jwt-decode@3.1.2: + resolution: {integrity: sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==} + dev: false + + /lazystream@1.0.1: + resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} + engines: {node: '>= 0.6.3'} + dependencies: + readable-stream: 2.3.8 + dev: false + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: false + + /lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + dependencies: + tslib: 2.6.2 + dev: false + + /lru-cache@10.2.2: + resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} + engines: {node: 14 || >=16.14} + dev: false + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: false + + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: false + + /minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: false + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: false + + /minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + dev: false + + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: false + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: false + + /no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + dependencies: + lower-case: 2.0.2 + tslib: 2.6.2 + dev: false + + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: false + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: false + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 dev: false + /pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + dependencies: + no-case: 3.0.4 + tslib: 2.6.2 + dev: false + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: false + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: false + + /path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + dependencies: + lru-cache: 10.2.2 + minipass: 7.1.2 + dev: false + + /path-to-regexp@6.2.2: + resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} + dev: false + + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: false + + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: false + + /process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + dev: false + + /queue-tick@1.0.1: + resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} + dev: false + + /readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: false + + /readable-stream@4.5.2: + resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + dev: false + + /readdir-glob@1.1.3: + resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} + dependencies: + minimatch: 5.1.6 + dev: false + /resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} dev: true + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: false + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: false + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: false + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: false + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: false + + /streamx@2.18.0: + resolution: {integrity: sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==} + dependencies: + fast-fifo: 1.3.2 + queue-tick: 1.0.1 + text-decoder: 1.1.0 + optionalDependencies: + bare-events: 2.3.1 + dev: false + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: false + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: false + + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + dev: false + + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: false + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: false + + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: false + + /strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + dev: false + + /tar-stream@3.1.7: + resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} + dependencies: + b4a: 1.6.6 + fast-fifo: 1.3.2 + streamx: 2.18.0 + dev: false + /temporal-polyfill@0.2.5: resolution: {integrity: sha512-ye47xp8Cb0nDguAhrrDS1JT1SzwEV9e26sSsrWzVu+yPZ7LzceEcH0i2gci9jWfOfSCCgM3Qv5nOYShVUUFUXA==} dependencies: @@ -798,6 +1740,27 @@ packages: resolution: {integrity: sha512-lDMFv4nKQrSjlkHKAlHVqKrBG4DyFfa9F74cmBZ3Iy3ed8yvWnlWSIdi4IKfSqwmazAohBNwiN64qGx4y5Q3IQ==} dev: false + /text-decoder@1.1.0: + resolution: {integrity: sha512-TmLJNj6UgX8xcUZo4UDStGQtDiTzF7BzWlzn9g7UWrjkpHr5uJTK1ld16wZ3LXb2vb6jH8qU89dW5whuMdXYdw==} + dependencies: + b4a: 1.6.6 + dev: false + + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: false + + /traverse@0.3.9: + resolution: {integrity: sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==} + dev: false + + /ts-poet@4.15.0: + resolution: {integrity: sha512-sLLR8yQBvHzi9d4R1F4pd+AzQxBfzOSSjfxiJxQhkUoH5bL7RsAC6wgvtVUQdGqiCsyS9rT6/8X2FI7ipdir5g==} + dependencies: + lodash: 4.17.21 + prettier: 2.8.8 + dev: false + /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: false @@ -818,6 +1781,33 @@ packages: engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} dev: false + /twirp-ts@2.5.0(@protobuf-ts/plugin@2.9.4): + resolution: {integrity: sha512-JTKIK5Pf/+3qCrmYDFlqcPPUx+ohEWKBaZy8GL8TmvV2VvC0SXVyNYILO39+GCRbqnuP6hBIF+BVr8ZxRz+6fw==} + hasBin: true + peerDependencies: + '@protobuf-ts/plugin': ^2.5.0 + ts-proto: ^1.81.3 + peerDependenciesMeta: + '@protobuf-ts/plugin': + optional: true + ts-proto: + optional: true + dependencies: + '@protobuf-ts/plugin': 2.9.4 + '@protobuf-ts/plugin-framework': 2.9.4 + camel-case: 4.1.2 + dot-object: 2.1.5 + path-to-regexp: 6.2.2 + ts-poet: 4.15.0 + yaml: 1.10.2 + dev: false + + /typescript@3.9.10: + resolution: {integrity: sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: false + /typescript@5.4.5: resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} engines: {node: '>=14.17'} @@ -843,15 +1833,77 @@ packages: resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==} dev: false + /unzip-stream@0.3.4: + resolution: {integrity: sha512-PyofABPVv+d7fL7GOpusx7eRT9YETY2X04PhwbSipdj6bMxVCFJrr+nm0Mxqbf9hUiTin/UsnuFWBXlDZFy0Cw==} + dependencies: + binary: 0.3.0 + mkdirp: 0.5.6 + dev: false + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: false + /uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true dev: false + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: false + + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: false + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: false + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: false + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: false + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: false + /yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: false + + /zip-stream@6.0.1: + resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} + engines: {node: '>= 14'} + dependencies: + archiver-utils: 5.0.2 + compress-commons: 6.0.2 + readable-stream: 4.5.2 + dev: false + /zod@3.23.8: resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} dev: false From 1da1ce2369c2d6b2edac2a8aa913b095259dabbe Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Wed, 5 Jun 2024 14:15:36 +0900 Subject: [PATCH 23/28] Write dump to file and just outputs the path --- README.md | 4 ++-- snapshots/README.md | 2 +- src/input.ts | 12 +++++++++--- src/main.ts | 9 +++++++-- src/schema.ts | 2 ++ 5 files changed, 21 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 13896ae8..3be5e86b 100644 --- a/README.md +++ b/README.md @@ -89,12 +89,12 @@ permissions: actions: read ``` -## jobs..outputs +## outputs. (Since v3.4.0) - `dump`\ - Collected resources which keeps fields then logged.\ + A file path for collected resources which keeps fields then logged.\ This data is only provided for debugging purposes, so the schema is not defined. ## Examples diff --git a/snapshots/README.md b/snapshots/README.md index cd1fe345..415e475c 100644 --- a/snapshots/README.md +++ b/snapshots/README.md @@ -1,4 +1,4 @@ # How to get snapshot of resources Since v3.4.0, we can use GITHUB_OUTPUT only in debug mode\ -See the section in [README](../README.md#jobsjob_idoutputs) +See the section in [README](../README.md#outputsoutput_id) diff --git a/src/input.ts b/src/input.ts index f3816f0c..c73ce986 100644 --- a/src/input.ts +++ b/src/input.ts @@ -1,9 +1,12 @@ import { getInput, getBooleanInput, setSecret, error } from '@actions/core'; import { context } from '@actions/github'; -import { Durationable, Options, Trigger } from './schema.ts'; +import { Durationable, Options, Path, Trigger } from './schema.ts'; +import { mkdtempSync } from 'fs'; +import { join } from 'path'; +import { assert } from 'console'; -export function parseInput(): { trigger: Trigger; options: Options; githubToken: string } { +export function parseInput(): { trigger: Trigger; options: Options; githubToken: string; tempDir: string } { const { repo, payload, @@ -22,6 +25,9 @@ export function parseInput(): { trigger: Trigger; options: Options; githubToken: error('github context has unexpected format: missing context.payload.pull_request.head.sha'); } } + // Do not use `tmpdir` from `node:os` in action: See https://github.com/actions/toolkit/issues/518 + const tempRoot = Path.parse(process.env['RUNNER_TEMP']); + const tempDir = mkdtempSync(join(tempRoot, 'wait-other-jobs-')); const waitSecondsBeforeFirstPolling = parseInt( getInput('wait-seconds-before-first-polling', { required: true, trimWhitespace: true }), @@ -58,5 +64,5 @@ export function parseInput(): { trigger: Trigger; options: Options; githubToken: const githubToken = getInput('github-token', { required: true, trimWhitespace: false }); setSecret(githubToken); - return { trigger, options, githubToken }; + return { trigger, options, githubToken, tempDir }; } diff --git a/src/main.ts b/src/main.ts index 87b88bcb..47bef260 100644 --- a/src/main.ts +++ b/src/main.ts @@ -28,6 +28,8 @@ import { Report, Severity, generateReport, getSummaries, readableDuration } from import { getInterval, wait } from './wait.ts'; import { Temporal } from 'temporal-polyfill'; import { Check, Options, Trigger } from './schema.ts'; +import { join } from 'path'; +import { fstat, writeFileSync } from 'fs'; interface Result { elapsed: Temporal.Duration; @@ -46,7 +48,7 @@ interface Dumper { async function run(): Promise { const startedAt = performance.now(); startGroup('Parameters'); - const { trigger, options, githubToken } = parseInput(); + const { trigger, options, githubToken, tempDir } = parseInput(); info(JSON.stringify( // Do NOT include payload { @@ -68,6 +70,7 @@ async function run(): Promise { // - Do not include secret even in debug mode const dumper: Dumper = { trigger, options, results: {} }; + const dumpFile = join(tempDir, 'dump.json'); for (;;) { attempts += 1; @@ -161,7 +164,9 @@ async function run(): Promise { } } - setOutput('dump', JSON.stringify(dumper, null, 2)); + writeFileSync(dumpFile, JSON.stringify(dumper, null, 2)); + setOutput('dump', dumpFile); + info(colorize('info', `you can read the checks detail in ${dumpFile}`)); } void run(); diff --git a/src/schema.ts b/src/schema.ts index 8857ad79..e3d4172c 100644 --- a/src/schema.ts +++ b/src/schema.ts @@ -122,6 +122,8 @@ export const Options = z.object({ }, ); +export const Path = z.string().min(1); + export type Options = z.infer; export interface Trigger { From 1ea10a02357d12d586a13a7b806bb79da4cad1b2 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Wed, 5 Jun 2024 14:15:49 +0900 Subject: [PATCH 24/28] `pnpm uninstall @actions/artifact` --- package.json | 1 - pnpm-lock.yaml | 1052 ------------------------------------------------ 2 files changed, 1053 deletions(-) diff --git a/package.json b/package.json index e40217c3..29c6152b 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,6 @@ "author": "Kenichi Kamiya ", "license": "MIT", "dependencies": { - "@actions/artifact": "^2.1.7", "@actions/core": "^1.10.1", "@actions/github": "^6.0.0", "@octokit/core": "^6.1.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9a53a419..eed937bb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,9 +5,6 @@ settings: excludeLinksFromLockfile: false dependencies: - '@actions/artifact': - specifier: ^2.1.7 - version: 2.1.7 '@actions/core': specifier: ^1.10.1 version: 1.10.1 @@ -55,29 +52,6 @@ devDependencies: packages: - /@actions/artifact@2.1.7: - resolution: {integrity: sha512-iIFsTPZnb182dBc+Is5v7ZqojC4ydO8Ru4/PD8Azg2diV//fdW3H6biEH/utUlNhwfOuHxZpC/QSQsU5KDEuuw==} - dependencies: - '@actions/core': 1.10.1 - '@actions/github': 5.1.1 - '@actions/http-client': 2.2.1 - '@azure/storage-blob': 12.23.0 - '@octokit/core': 3.6.0 - '@octokit/plugin-request-log': 1.0.4(@octokit/core@3.6.0) - '@octokit/plugin-retry': 3.0.9 - '@octokit/request-error': 5.1.0 - '@protobuf-ts/plugin': 2.9.4 - archiver: 7.0.1 - crypto: 1.0.1 - jwt-decode: 3.1.2 - twirp-ts: 2.5.0(@protobuf-ts/plugin@2.9.4) - unzip-stream: 0.3.4 - transitivePeerDependencies: - - encoding - - supports-color - - ts-proto - dev: false - /@actions/core@1.10.1: resolution: {integrity: sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==} dependencies: @@ -85,17 +59,6 @@ packages: uuid: 8.3.2 dev: false - /@actions/github@5.1.1: - resolution: {integrity: sha512-Nk59rMDoJaV+mHCOJPXuvB1zIbomlKS0dmSIqPGxd0enAXBnOfn4VWF+CGtRCwXZG9Epa54tZA7VIRlJDS8A6g==} - dependencies: - '@actions/http-client': 2.2.1 - '@octokit/core': 3.6.0 - '@octokit/plugin-paginate-rest': 2.21.3(@octokit/core@3.6.0) - '@octokit/plugin-rest-endpoint-methods': 5.16.2(@octokit/core@3.6.0) - transitivePeerDependencies: - - encoding - dev: false - /@actions/github@6.0.0: resolution: {integrity: sha512-alScpSVnYmjNEXboZjarjukQEzgCRmjMv6Xj47fsdnqGS73bjJNDpiiXmp8jr0UZLdUB6d9jW63IcmddUP+l0g==} dependencies: @@ -112,139 +75,6 @@ packages: undici: 5.28.4 dev: false - /@azure/abort-controller@1.1.0: - resolution: {integrity: sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==} - engines: {node: '>=12.0.0'} - dependencies: - tslib: 2.6.2 - dev: false - - /@azure/abort-controller@2.1.2: - resolution: {integrity: sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==} - engines: {node: '>=18.0.0'} - dependencies: - tslib: 2.6.2 - dev: false - - /@azure/core-auth@1.7.2: - resolution: {integrity: sha512-Igm/S3fDYmnMq1uKS38Ae1/m37B3zigdlZw+kocwEhh5GjyKjPrXKO2J6rzpC1wAxrNil/jX9BJRqBshyjnF3g==} - engines: {node: '>=18.0.0'} - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-util': 1.9.0 - tslib: 2.6.2 - dev: false - - /@azure/core-client@1.9.2: - resolution: {integrity: sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==} - engines: {node: '>=18.0.0'} - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-auth': 1.7.2 - '@azure/core-rest-pipeline': 1.16.0 - '@azure/core-tracing': 1.1.2 - '@azure/core-util': 1.9.0 - '@azure/logger': 1.1.2 - tslib: 2.6.2 - transitivePeerDependencies: - - supports-color - dev: false - - /@azure/core-http-compat@2.1.2: - resolution: {integrity: sha512-5MnV1yqzZwgNLLjlizsU3QqOeQChkIXw781Fwh1xdAqJR5AA32IUaq6xv1BICJvfbHoa+JYcaij2HFkhLbNTJQ==} - engines: {node: '>=18.0.0'} - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-client': 1.9.2 - '@azure/core-rest-pipeline': 1.16.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@azure/core-lro@2.7.2: - resolution: {integrity: sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==} - engines: {node: '>=18.0.0'} - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-util': 1.9.0 - '@azure/logger': 1.1.2 - tslib: 2.6.2 - dev: false - - /@azure/core-paging@1.6.2: - resolution: {integrity: sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==} - engines: {node: '>=18.0.0'} - dependencies: - tslib: 2.6.2 - dev: false - - /@azure/core-rest-pipeline@1.16.0: - resolution: {integrity: sha512-CeuTvsXxCUmEuxH5g/aceuSl6w2EugvNHKAtKKVdiX915EjJJxAwfzNNWZreNnbxHZ2fi0zaM6wwS23x2JVqSQ==} - engines: {node: '>=18.0.0'} - dependencies: - '@azure/abort-controller': 2.1.2 - '@azure/core-auth': 1.7.2 - '@azure/core-tracing': 1.1.2 - '@azure/core-util': 1.9.0 - '@azure/logger': 1.1.2 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.4 - tslib: 2.6.2 - transitivePeerDependencies: - - supports-color - dev: false - - /@azure/core-tracing@1.1.2: - resolution: {integrity: sha512-dawW9ifvWAWmUm9/h+/UQ2jrdvjCJ7VJEuCJ6XVNudzcOwm53BFZH4Q845vjfgoUAM8ZxokvVNxNxAITc502YA==} - engines: {node: '>=18.0.0'} - dependencies: - tslib: 2.6.2 - dev: false - - /@azure/core-util@1.9.0: - resolution: {integrity: sha512-AfalUQ1ZppaKuxPPMsFEUdX6GZPB3d9paR9d/TTL7Ow2De8cJaC7ibi7kWVlFAVPCYo31OcnGymc0R89DX8Oaw==} - engines: {node: '>=18.0.0'} - dependencies: - '@azure/abort-controller': 2.1.2 - tslib: 2.6.2 - dev: false - - /@azure/core-xml@1.4.2: - resolution: {integrity: sha512-CW3MZhApe/S4iikbYKE7s83fjDBPIr2kpidX+hlGRwh7N4o1nIpQ/PfJTeioqhfqdMvRtheEl+ft64fyTaLNaA==} - engines: {node: '>=18.0.0'} - dependencies: - fast-xml-parser: 4.4.0 - tslib: 2.6.2 - dev: false - - /@azure/logger@1.1.2: - resolution: {integrity: sha512-l170uE7bsKpIU6B/giRc9i4NI0Mj+tANMMMxf7Zi/5cKzEqPayP7+X1WPrG7e+91JgY8N+7K7nF2WOi7iVhXvg==} - engines: {node: '>=18.0.0'} - dependencies: - tslib: 2.6.2 - dev: false - - /@azure/storage-blob@12.23.0: - resolution: {integrity: sha512-c1KJ5R5hqR/HtvmFtTn/Y1BNMq45NUBp0LZH7yF8WFMET+wmESgEr0FVTu/Z5NonmfUjbgJZG5Nh8xHc5RdWGQ==} - engines: {node: '>=18.0.0'} - dependencies: - '@azure/abort-controller': 1.1.0 - '@azure/core-auth': 1.7.2 - '@azure/core-client': 1.9.2 - '@azure/core-http-compat': 2.1.2 - '@azure/core-lro': 2.7.2 - '@azure/core-paging': 1.6.2 - '@azure/core-rest-pipeline': 1.16.0 - '@azure/core-tracing': 1.1.2 - '@azure/core-util': 1.9.0 - '@azure/core-xml': 1.4.2 - '@azure/logger': 1.1.2 - events: 3.3.0 - tslib: 2.6.2 - transitivePeerDependencies: - - supports-color - dev: false - /@esbuild/aix-ppc64@0.20.2: resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} engines: {node: '>=12'} @@ -664,24 +494,6 @@ packages: engines: {node: '>=14'} dev: false - /@isaacs/cliui@8.0.2: - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - dependencies: - string-width: 5.1.2 - string-width-cjs: /string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: /strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: /wrap-ansi@7.0.0 - dev: false - - /@octokit/auth-token@2.5.0: - resolution: {integrity: sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==} - dependencies: - '@octokit/types': 6.41.0 - dev: false - /@octokit/auth-token@4.0.0: resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==} engines: {node: '>= 18'} @@ -692,20 +504,6 @@ packages: engines: {node: '>= 18'} dev: false - /@octokit/core@3.6.0: - resolution: {integrity: sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==} - dependencies: - '@octokit/auth-token': 2.5.0 - '@octokit/graphql': 4.8.0 - '@octokit/request': 5.6.3 - '@octokit/request-error': 2.1.0 - '@octokit/types': 6.41.0 - before-after-hook: 2.2.3 - universal-user-agent: 6.0.1 - transitivePeerDependencies: - - encoding - dev: false - /@octokit/core@5.2.0: resolution: {integrity: sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==} engines: {node: '>= 18'} @@ -740,14 +538,6 @@ packages: universal-user-agent: 7.0.2 dev: false - /@octokit/endpoint@6.0.12: - resolution: {integrity: sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==} - dependencies: - '@octokit/types': 6.41.0 - is-plain-object: 5.0.0 - universal-user-agent: 6.0.1 - dev: false - /@octokit/endpoint@9.0.5: resolution: {integrity: sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==} engines: {node: '>= 18'} @@ -763,16 +553,6 @@ packages: graphql-tag: 2.12.6(graphql@16.8.1) dev: false - /@octokit/graphql@4.8.0: - resolution: {integrity: sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==} - dependencies: - '@octokit/request': 5.6.3 - '@octokit/types': 6.41.0 - universal-user-agent: 6.0.1 - transitivePeerDependencies: - - encoding - dev: false - /@octokit/graphql@7.1.0: resolution: {integrity: sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==} engines: {node: '>= 18'} @@ -791,10 +571,6 @@ packages: universal-user-agent: 7.0.2 dev: false - /@octokit/openapi-types@12.11.0: - resolution: {integrity: sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==} - dev: false - /@octokit/openapi-types@20.0.0: resolution: {integrity: sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==} dev: false @@ -812,15 +588,6 @@ packages: '@octokit/core': 6.1.2 dev: false - /@octokit/plugin-paginate-rest@2.21.3(@octokit/core@3.6.0): - resolution: {integrity: sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==} - peerDependencies: - '@octokit/core': '>=2' - dependencies: - '@octokit/core': 3.6.0 - '@octokit/types': 6.41.0 - dev: false - /@octokit/plugin-paginate-rest@9.2.1(@octokit/core@5.2.0): resolution: {integrity: sha512-wfGhE/TAkXZRLjksFXuDZdmGnJQHvtU/joFQdweXUgzo1XwvBCD4o4+75NtFfjfLK5IwLf9vHTfSiU3sLRYpRw==} engines: {node: '>= 18'} @@ -831,14 +598,6 @@ packages: '@octokit/types': 12.6.0 dev: false - /@octokit/plugin-request-log@1.0.4(@octokit/core@3.6.0): - resolution: {integrity: sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==} - peerDependencies: - '@octokit/core': '>=3' - dependencies: - '@octokit/core': 3.6.0 - dev: false - /@octokit/plugin-rest-endpoint-methods@10.4.1(@octokit/core@5.2.0): resolution: {integrity: sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==} engines: {node: '>= 18'} @@ -849,31 +608,6 @@ packages: '@octokit/types': 12.6.0 dev: false - /@octokit/plugin-rest-endpoint-methods@5.16.2(@octokit/core@3.6.0): - resolution: {integrity: sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==} - peerDependencies: - '@octokit/core': '>=3' - dependencies: - '@octokit/core': 3.6.0 - '@octokit/types': 6.41.0 - deprecation: 2.3.1 - dev: false - - /@octokit/plugin-retry@3.0.9: - resolution: {integrity: sha512-r+fArdP5+TG6l1Rv/C9hVoty6tldw6cE2pRHNGmFPdyfrc696R6JjrQ3d7HdVqGwuzfyrcaLAKD7K8TX8aehUQ==} - dependencies: - '@octokit/types': 6.41.0 - bottleneck: 2.19.5 - dev: false - - /@octokit/request-error@2.1.0: - resolution: {integrity: sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==} - dependencies: - '@octokit/types': 6.41.0 - deprecation: 2.3.1 - once: 1.4.0 - dev: false - /@octokit/request-error@5.1.0: resolution: {integrity: sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==} engines: {node: '>= 18'} @@ -890,19 +624,6 @@ packages: '@octokit/types': 13.4.0 dev: false - /@octokit/request@5.6.3: - resolution: {integrity: sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==} - dependencies: - '@octokit/endpoint': 6.0.12 - '@octokit/request-error': 2.1.0 - '@octokit/types': 6.41.0 - is-plain-object: 5.0.0 - node-fetch: 2.7.0 - universal-user-agent: 6.0.1 - transitivePeerDependencies: - - encoding - dev: false - /@octokit/request@8.4.0: resolution: {integrity: sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==} engines: {node: '>= 18'} @@ -935,52 +656,6 @@ packages: '@octokit/openapi-types': 22.0.1 dev: false - /@octokit/types@6.41.0: - resolution: {integrity: sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==} - dependencies: - '@octokit/openapi-types': 12.11.0 - dev: false - - /@pkgjs/parseargs@0.11.0: - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - requiresBuild: true - dev: false - optional: true - - /@protobuf-ts/plugin-framework@2.9.4: - resolution: {integrity: sha512-9nuX1kjdMliv+Pes8dQCKyVhjKgNNfwxVHg+tx3fLXSfZZRcUHMc1PMwB9/vTvc6gBKt9QGz5ERqSqZc0++E9A==} - dependencies: - '@protobuf-ts/runtime': 2.9.4 - typescript: 3.9.10 - dev: false - - /@protobuf-ts/plugin@2.9.4: - resolution: {integrity: sha512-Db5Laq5T3mc6ERZvhIhkj1rn57/p8gbWiCKxQWbZBBl20wMuqKoHbRw4tuD7FyXi+IkwTToaNVXymv5CY3E8Rw==} - hasBin: true - dependencies: - '@protobuf-ts/plugin-framework': 2.9.4 - '@protobuf-ts/protoc': 2.9.4 - '@protobuf-ts/runtime': 2.9.4 - '@protobuf-ts/runtime-rpc': 2.9.4 - typescript: 3.9.10 - dev: false - - /@protobuf-ts/protoc@2.9.4: - resolution: {integrity: sha512-hQX+nOhFtrA+YdAXsXEDrLoGJqXHpgv4+BueYF0S9hy/Jq0VRTVlJS1Etmf4qlMt/WdigEes5LOd/LDzui4GIQ==} - hasBin: true - dev: false - - /@protobuf-ts/runtime-rpc@2.9.4: - resolution: {integrity: sha512-y9L9JgnZxXFqH5vD4d7j9duWvIJ7AShyBRoNKJGhu9Q27qIbchfzli66H9RvrQNIFk5ER7z1Twe059WZGqERcA==} - dependencies: - '@protobuf-ts/runtime': 2.9.4 - dev: false - - /@protobuf-ts/runtime@2.9.4: - resolution: {integrity: sha512-vHRFWtJJB/SiogWDF0ypoKfRIZ41Kq+G9cEFj6Qm1eQaAhJ1LDFvgZ7Ja4tb3iLOQhz0PaoPnnOijF1qmEqTxg==} - dev: false - /@tsconfig/node20@20.1.4: resolution: {integrity: sha512-sqgsT69YFeLWf5NtJ4Xq/xAF8p4ZQHlmGW74Nu2tD4+g5fAsposc4ZfaaPixVu4y01BEiDCWLRDCvDM5JOsRxg==} dev: true @@ -995,92 +670,11 @@ packages: undici-types: 5.26.5 dev: true - /abort-controller@3.0.0: - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} - engines: {node: '>=6.5'} - dependencies: - event-target-shim: 5.0.1 - dev: false - - /agent-base@7.1.1: - resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} - engines: {node: '>= 14'} - dependencies: - debug: 4.3.5 - transitivePeerDependencies: - - supports-color - dev: false - - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - dev: false - - /ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} - engines: {node: '>=12'} - dev: false - - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - dev: false - /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} dev: false - /archiver-utils@5.0.2: - resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==} - engines: {node: '>= 14'} - dependencies: - glob: 10.4.1 - graceful-fs: 4.2.11 - is-stream: 2.0.1 - lazystream: 1.0.1 - lodash: 4.17.21 - normalize-path: 3.0.0 - readable-stream: 4.5.2 - dev: false - - /archiver@7.0.1: - resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==} - engines: {node: '>= 14'} - dependencies: - archiver-utils: 5.0.2 - async: 3.2.5 - buffer-crc32: 1.0.0 - readable-stream: 4.5.2 - readdir-glob: 1.1.3 - tar-stream: 3.1.7 - zip-stream: 6.0.1 - dev: false - - /async@3.2.5: - resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} - dev: false - - /b4a@1.6.6: - resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} - dev: false - - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: false - - /bare-events@2.3.1: - resolution: {integrity: sha512-sJnSOTVESURZ61XgEleqmP255T6zTYwHPwE4r6SssIh0U9/uDvfpdoJYpVUerJJZH2fueO+CdT8ZT+OC/7aZDA==} - requiresBuild: true - dev: false - optional: true - - /base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - dev: false - /before-after-hook@2.2.3: resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} dev: false @@ -1089,159 +683,10 @@ packages: resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==} dev: false - /binary@0.3.0: - resolution: {integrity: sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==} - dependencies: - buffers: 0.1.1 - chainsaw: 0.1.0 - dev: false - - /bottleneck@2.19.5: - resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} - dev: false - - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - dev: false - - /brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - dependencies: - balanced-match: 1.0.2 - dev: false - - /buffer-crc32@1.0.0: - resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} - engines: {node: '>=8.0.0'} - dev: false - - /buffer@6.0.3: - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - dev: false - - /buffers@0.1.1: - resolution: {integrity: sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==} - engines: {node: '>=0.2.0'} - dev: false - - /camel-case@4.1.2: - resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} - dependencies: - pascal-case: 3.1.2 - tslib: 2.6.2 - dev: false - - /chainsaw@0.1.0: - resolution: {integrity: sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==} - dependencies: - traverse: 0.3.9 - dev: false - - /color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - dev: false - - /color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: false - - /commander@6.2.1: - resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} - engines: {node: '>= 6'} - dev: false - - /compress-commons@6.0.2: - resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} - engines: {node: '>= 14'} - dependencies: - crc-32: 1.2.2 - crc32-stream: 6.0.0 - is-stream: 2.0.1 - normalize-path: 3.0.0 - readable-stream: 4.5.2 - dev: false - - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: false - - /core-util-is@1.0.3: - resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: false - - /crc-32@1.2.2: - resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} - engines: {node: '>=0.8'} - hasBin: true - dev: false - - /crc32-stream@6.0.0: - resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==} - engines: {node: '>= 14'} - dependencies: - crc-32: 1.2.2 - readable-stream: 4.5.2 - dev: false - - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: false - - /crypto@1.0.1: - resolution: {integrity: sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==} - deprecated: This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in. - dev: false - - /debug@4.3.5: - resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - dev: false - /deprecation@2.3.1: resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} dev: false - /dot-object@2.1.5: - resolution: {integrity: sha512-xHF8EP4XH/Ba9fvAF2LDd5O3IITVolerVV6xvkxoM8zlGEiCUrggpAnHyOoKJKCrhvPcGATFAUwIujj7bRG5UA==} - hasBin: true - dependencies: - commander: 6.2.1 - glob: 7.2.3 - dev: false - - /eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: false - - /emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: false - - /emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - dev: false - /esbuild@0.20.2: resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} engines: {node: '>=12'} @@ -1304,39 +749,6 @@ packages: '@esbuild/win32-x64': 0.21.4 dev: true - /event-target-shim@5.0.1: - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} - engines: {node: '>=6'} - dev: false - - /events@3.3.0: - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} - engines: {node: '>=0.8.x'} - dev: false - - /fast-fifo@1.3.2: - resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - dev: false - - /fast-xml-parser@4.4.0: - resolution: {integrity: sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==} - hasBin: true - dependencies: - strnum: 1.0.5 - dev: false - - /foreground-child@3.1.1: - resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} - engines: {node: '>=14'} - dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.1.0 - dev: false - - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: false - /fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -1351,34 +763,6 @@ packages: resolve-pkg-maps: 1.0.0 dev: true - /glob@10.4.1: - resolution: {integrity: sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==} - engines: {node: '>=16 || 14 >=14.18'} - hasBin: true - dependencies: - foreground-child: 3.1.1 - jackspeak: 3.3.0 - minimatch: 9.0.4 - minipass: 7.1.2 - path-scurry: 1.11.1 - dev: false - - /glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Glob versions prior to v9 are no longer supported - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: false - - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: false - /graphql-tag@2.12.6(graphql@16.8.1): resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} engines: {node: '>=10'} @@ -1394,342 +778,16 @@ packages: engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} dev: false - /http-proxy-agent@7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.1 - debug: 4.3.5 - transitivePeerDependencies: - - supports-color - dev: false - - /https-proxy-agent@7.0.4: - resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} - engines: {node: '>= 14'} - dependencies: - agent-base: 7.1.1 - debug: 4.3.5 - transitivePeerDependencies: - - supports-color - dev: false - - /ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: false - - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - dev: false - - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: false - - /is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - dev: false - - /is-plain-object@5.0.0: - resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} - engines: {node: '>=0.10.0'} - dev: false - - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: false - - /isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - dev: false - - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: false - - /jackspeak@3.3.0: - resolution: {integrity: sha512-glPiBfKguqA7v8JsXO3iLjJWZ9FV1vNpoI0I9hI9Mnk5yetO9uPLSpiCEmiVijAssv2f54HpvtzvAHfhPieiDQ==} - engines: {node: '>=14'} - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - dev: false - - /jwt-decode@3.1.2: - resolution: {integrity: sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==} - dev: false - - /lazystream@1.0.1: - resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} - engines: {node: '>= 0.6.3'} - dependencies: - readable-stream: 2.3.8 - dev: false - - /lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: false - - /lower-case@2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - dependencies: - tslib: 2.6.2 - dev: false - - /lru-cache@10.2.2: - resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} - engines: {node: 14 || >=16.14} - dev: false - - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - dependencies: - brace-expansion: 1.1.11 - dev: false - - /minimatch@5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} - engines: {node: '>=10'} - dependencies: - brace-expansion: 2.0.1 - dev: false - - /minimatch@9.0.4: - resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - brace-expansion: 2.0.1 - dev: false - - /minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - dev: false - - /minipass@7.1.2: - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} - engines: {node: '>=16 || 14 >=14.17'} - dev: false - - /mkdirp@0.5.6: - resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} - hasBin: true - dependencies: - minimist: 1.2.8 - dev: false - - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: false - - /no-case@3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - dependencies: - lower-case: 2.0.2 - tslib: 2.6.2 - dev: false - - /node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - dependencies: - whatwg-url: 5.0.0 - dev: false - - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: false - /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 dev: false - /pascal-case@3.1.2: - resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} - dependencies: - no-case: 3.0.4 - tslib: 2.6.2 - dev: false - - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - dev: false - - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - dev: false - - /path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - dependencies: - lru-cache: 10.2.2 - minipass: 7.1.2 - dev: false - - /path-to-regexp@6.2.2: - resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} - dev: false - - /prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - dev: false - - /process-nextick-args@2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: false - - /process@0.11.10: - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} - engines: {node: '>= 0.6.0'} - dev: false - - /queue-tick@1.0.1: - resolution: {integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==} - dev: false - - /readable-stream@2.3.8: - resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - dev: false - - /readable-stream@4.5.2: - resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - abort-controller: 3.0.0 - buffer: 6.0.3 - events: 3.3.0 - process: 0.11.10 - string_decoder: 1.3.0 - dev: false - - /readdir-glob@1.1.3: - resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} - dependencies: - minimatch: 5.1.6 - dev: false - /resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} dev: true - /safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: false - - /safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: false - - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 - dev: false - - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - dev: false - - /signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - dev: false - - /streamx@2.18.0: - resolution: {integrity: sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==} - dependencies: - fast-fifo: 1.3.2 - queue-tick: 1.0.1 - text-decoder: 1.1.0 - optionalDependencies: - bare-events: 2.3.1 - dev: false - - /string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - dev: false - - /string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - dev: false - - /string_decoder@1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - dependencies: - safe-buffer: 5.1.2 - dev: false - - /string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - dependencies: - safe-buffer: 5.2.1 - dev: false - - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - dependencies: - ansi-regex: 5.0.1 - dev: false - - /strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - dependencies: - ansi-regex: 6.0.1 - dev: false - - /strnum@1.0.5: - resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} - dev: false - - /tar-stream@3.1.7: - resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - dependencies: - b4a: 1.6.6 - fast-fifo: 1.3.2 - streamx: 2.18.0 - dev: false - /temporal-polyfill@0.2.5: resolution: {integrity: sha512-ye47xp8Cb0nDguAhrrDS1JT1SzwEV9e26sSsrWzVu+yPZ7LzceEcH0i2gci9jWfOfSCCgM3Qv5nOYShVUUFUXA==} dependencies: @@ -1740,27 +798,6 @@ packages: resolution: {integrity: sha512-lDMFv4nKQrSjlkHKAlHVqKrBG4DyFfa9F74cmBZ3Iy3ed8yvWnlWSIdi4IKfSqwmazAohBNwiN64qGx4y5Q3IQ==} dev: false - /text-decoder@1.1.0: - resolution: {integrity: sha512-TmLJNj6UgX8xcUZo4UDStGQtDiTzF7BzWlzn9g7UWrjkpHr5uJTK1ld16wZ3LXb2vb6jH8qU89dW5whuMdXYdw==} - dependencies: - b4a: 1.6.6 - dev: false - - /tr46@0.0.3: - resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - dev: false - - /traverse@0.3.9: - resolution: {integrity: sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==} - dev: false - - /ts-poet@4.15.0: - resolution: {integrity: sha512-sLLR8yQBvHzi9d4R1F4pd+AzQxBfzOSSjfxiJxQhkUoH5bL7RsAC6wgvtVUQdGqiCsyS9rT6/8X2FI7ipdir5g==} - dependencies: - lodash: 4.17.21 - prettier: 2.8.8 - dev: false - /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: false @@ -1781,33 +818,6 @@ packages: engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} dev: false - /twirp-ts@2.5.0(@protobuf-ts/plugin@2.9.4): - resolution: {integrity: sha512-JTKIK5Pf/+3qCrmYDFlqcPPUx+ohEWKBaZy8GL8TmvV2VvC0SXVyNYILO39+GCRbqnuP6hBIF+BVr8ZxRz+6fw==} - hasBin: true - peerDependencies: - '@protobuf-ts/plugin': ^2.5.0 - ts-proto: ^1.81.3 - peerDependenciesMeta: - '@protobuf-ts/plugin': - optional: true - ts-proto: - optional: true - dependencies: - '@protobuf-ts/plugin': 2.9.4 - '@protobuf-ts/plugin-framework': 2.9.4 - camel-case: 4.1.2 - dot-object: 2.1.5 - path-to-regexp: 6.2.2 - ts-poet: 4.15.0 - yaml: 1.10.2 - dev: false - - /typescript@3.9.10: - resolution: {integrity: sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==} - engines: {node: '>=4.2.0'} - hasBin: true - dev: false - /typescript@5.4.5: resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} engines: {node: '>=14.17'} @@ -1833,77 +843,15 @@ packages: resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==} dev: false - /unzip-stream@0.3.4: - resolution: {integrity: sha512-PyofABPVv+d7fL7GOpusx7eRT9YETY2X04PhwbSipdj6bMxVCFJrr+nm0Mxqbf9hUiTin/UsnuFWBXlDZFy0Cw==} - dependencies: - binary: 0.3.0 - mkdirp: 0.5.6 - dev: false - - /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: false - /uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true dev: false - /webidl-conversions@3.0.1: - resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - dev: false - - /whatwg-url@5.0.0: - resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - dependencies: - tr46: 0.0.3 - webidl-conversions: 3.0.1 - dev: false - - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: false - - /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: false - - /wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - dev: false - /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} dev: false - /yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} - engines: {node: '>= 6'} - dev: false - - /zip-stream@6.0.1: - resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} - engines: {node: '>= 14'} - dependencies: - archiver-utils: 5.0.2 - compress-commons: 6.0.2 - readable-stream: 4.5.2 - dev: false - /zod@3.23.8: resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} dev: false From 5a273f591fcbbdc8937808a96f03f6762062fe80 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Wed, 5 Jun 2024 14:18:01 +0900 Subject: [PATCH 25/28] Update use of action --- .github/workflows/outputs.yml | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/.github/workflows/outputs.yml b/.github/workflows/outputs.yml index fa81f7bf..f158c020 100644 --- a/.github/workflows/outputs.yml +++ b/.github/workflows/outputs.yml @@ -46,16 +46,11 @@ jobs: "optional": false } ] - - name: 'Copy the output results to files' - env: - DEBUG_DUMP: | - ${{ steps.wait.outputs.dump }} + - name: Make sure there is the file run: | - mkdir outputs - echo -n "$DEBUG_DUMP" > ./outputs/dump.json - ls -alh ./outputs + ls -alh '${{ steps.wait.outputs.dump }}' - name: Upload dumps as an artifact uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: name: 'outputs-${{ github.job }}-${{ github.run_id }}-${{ github.run_number }}-${{ github.run_attempt }}' - path: ./outputs + path: '${{ steps.wait.outputs.dump }}' From b5b8e7086bc370ae4b167c5ec4e46516fd7eba49 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Wed, 5 Jun 2024 14:18:47 +0900 Subject: [PATCH 26/28] Remove unused code and compile --- dist/index.js | 20 +++++++++++++++----- src/input.ts | 1 - src/main.ts | 2 +- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/dist/index.js b/dist/index.js index 422e9064..88666161 100644 --- a/dist/index.js +++ b/dist/index.js @@ -31107,8 +31107,11 @@ var Options = z2.object({ path: ["initialDuration", "waitList"] } ); +var Path = z2.string().min(1); // src/input.ts +import { mkdtempSync } from "fs"; +import { join } from "path"; function parseInput() { const { repo, @@ -31128,6 +31131,8 @@ function parseInput() { (0, import_core.error)("github context has unexpected format: missing context.payload.pull_request.head.sha"); } } + const tempRoot = Path.parse(process.env["RUNNER_TEMP"]); + const tempDir = mkdtempSync(join(tempRoot, "wait-other-jobs-")); const waitSecondsBeforeFirstPolling = parseInt( (0, import_core.getInput)("wait-seconds-before-first-polling", { required: true, trimWhitespace: true }), 10 @@ -31158,7 +31163,7 @@ function parseInput() { const trigger = { ...repo, ref: commitSha, runId, jobName: job, eventName }; const githubToken = (0, import_core.getInput)("github-token", { required: true, trimWhitespace: false }); (0, import_core.setSecret)(githubToken); - return { trigger, options, githubToken }; + return { trigger, options, githubToken, tempDir }; } // node_modules/.pnpm/universal-user-agent@7.0.2/node_modules/universal-user-agent/index.js @@ -32343,7 +32348,7 @@ async function fetchChecks(token, trigger) { } // src/report.ts -import { join, relative } from "path"; +import { join as join2, relative } from "path"; // src/util.ts function groupBy(items, callback) { @@ -32397,7 +32402,7 @@ function summarize(check, trigger) { } function getSummaries(checks, trigger) { return checks.map((check) => summarize(check, trigger)).toSorted( - (a2, b2) => join(a2.workflowBasename, a2.jobName).localeCompare(join(b2.workflowBasename, b2.jobName)) + (a2, b2) => join2(a2.workflowBasename, a2.jobName).localeCompare(join2(b2.workflowBasename, b2.jobName)) ); } function seekWaitList(summaries, waitList, elapsed) { @@ -32529,6 +32534,8 @@ function getInterval(method, leastInterval, attempts) { } // src/main.ts +import { join as join3 } from "path"; +import { writeFileSync } from "fs"; function colorize(severity, message) { switch (severity) { case "error": { @@ -32552,7 +32559,7 @@ function colorize(severity, message) { async function run() { const startedAt = performance.now(); (0, import_core3.startGroup)("Parameters"); - const { trigger, options, githubToken } = parseInput(); + const { trigger, options, githubToken, tempDir } = parseInput(); (0, import_core3.info)(JSON.stringify( // Do NOT include payload { @@ -32571,6 +32578,7 @@ async function run() { return; } const dumper = { trigger, options, results: {} }; + const dumpFile = join3(tempDir, "dump.json"); for (; ; ) { attempts += 1; if (attempts > options.attemptLimits) { @@ -32644,7 +32652,9 @@ async function run() { break; } } - (0, import_core3.setOutput)("dump", JSON.stringify(dumper, null, 2)); + writeFileSync(dumpFile, JSON.stringify(dumper, null, 2)); + (0, import_core3.setOutput)("dump", dumpFile); + (0, import_core3.info)(colorize("info", `you can read the checks detail in ${dumpFile}`)); } void run(); /*! Bundled license information: diff --git a/src/input.ts b/src/input.ts index c73ce986..ae89ba67 100644 --- a/src/input.ts +++ b/src/input.ts @@ -4,7 +4,6 @@ import { context } from '@actions/github'; import { Durationable, Options, Path, Trigger } from './schema.ts'; import { mkdtempSync } from 'fs'; import { join } from 'path'; -import { assert } from 'console'; export function parseInput(): { trigger: Trigger; options: Options; githubToken: string; tempDir: string } { const { diff --git a/src/main.ts b/src/main.ts index 47bef260..33723f52 100644 --- a/src/main.ts +++ b/src/main.ts @@ -29,7 +29,7 @@ import { getInterval, wait } from './wait.ts'; import { Temporal } from 'temporal-polyfill'; import { Check, Options, Trigger } from './schema.ts'; import { join } from 'path'; -import { fstat, writeFileSync } from 'fs'; +import { writeFileSync } from 'fs'; interface Result { elapsed: Temporal.Duration; From 3f9d611e7f14f98d380171b1d68c50ef8eb78780 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Wed, 5 Jun 2024 14:40:28 +0900 Subject: [PATCH 27/28] Clarify outputs in action.yml --- README.md | 2 +- action.yml | 6 ++++++ snapshots/README.md | 2 +- snapshots/run-9281068681/README.md | 2 ++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3be5e86b..8e8fa64f 100644 --- a/README.md +++ b/README.md @@ -94,7 +94,7 @@ permissions: (Since v3.4.0) - `dump`\ - A file path for collected resources which keeps fields then logged.\ + A file path for collected resources which keeps fields than logged.\ This data is only provided for debugging purposes, so the schema is not defined. ## Examples diff --git a/action.yml b/action.yml index 3f983bb9..3caf6267 100644 --- a/action.yml +++ b/action.yml @@ -45,6 +45,12 @@ inputs: description: 'Avoid http requests for tests' required: false default: 'false' +outputs: + dump: + description: | + A file path for collected resources which keeps fields than logged. + This data is only provided for debugging purposes, so the schema is not defined. + runs: using: 'node20' main: 'dist/index.js' diff --git a/snapshots/README.md b/snapshots/README.md index 415e475c..ed309f6a 100644 --- a/snapshots/README.md +++ b/snapshots/README.md @@ -1,4 +1,4 @@ # How to get snapshot of resources -Since v3.4.0, we can use GITHUB_OUTPUT only in debug mode\ +Since v3.4.0, it dumps data and outputs the path\ See the section in [README](../README.md#outputsoutput_id) diff --git a/snapshots/run-9281068681/README.md b/snapshots/run-9281068681/README.md index 680ec0a7..17b30837 100644 --- a/snapshots/run-9281068681/README.md +++ b/snapshots/run-9281068681/README.md @@ -1,5 +1,7 @@ # How to extract checks from debug log +(This note is outdated) + Source: https://github.com/kachick/wait-other-jobs/actions/runs/9281068681 This file recorded snapshot checks for GH-820 in the debug log From 9d768c526cea7e08e57caa1d68c2b533c2bd5fb8 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Wed, 5 Jun 2024 14:45:54 +0900 Subject: [PATCH 28/28] Simplify message --- dist/index.js | 2 +- src/main.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/index.js b/dist/index.js index 88666161..98c962cb 100644 --- a/dist/index.js +++ b/dist/index.js @@ -32654,7 +32654,7 @@ async function run() { } writeFileSync(dumpFile, JSON.stringify(dumper, null, 2)); (0, import_core3.setOutput)("dump", dumpFile); - (0, import_core3.info)(colorize("info", `you can read the checks detail in ${dumpFile}`)); + (0, import_core3.info)(colorize("info", `Resources are saved in ${dumpFile}`)); } void run(); /*! Bundled license information: diff --git a/src/main.ts b/src/main.ts index 33723f52..26fa0921 100644 --- a/src/main.ts +++ b/src/main.ts @@ -166,7 +166,7 @@ async function run(): Promise { writeFileSync(dumpFile, JSON.stringify(dumper, null, 2)); setOutput('dump', dumpFile); - info(colorize('info', `you can read the checks detail in ${dumpFile}`)); + info(colorize('info', `Resources are saved in ${dumpFile}`)); } void run();