From 6af1c8cffa5fe80334b055a68c3fcb7d3a7310ff Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 5 Dec 2024 16:48:45 +0800 Subject: [PATCH 001/190] first test action is working --- .github/workflows/SDK-Suppressions-Label.yaml | 41 +++++++++++++++++++ .../cmd/sdk-suppressions-label.js | 3 ++ 2 files changed, 44 insertions(+) create mode 100644 .github/workflows/SDK-Suppressions-Label.yaml create mode 100644 eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml new file mode 100644 index 000000000000..5db187e96556 --- /dev/null +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -0,0 +1,41 @@ +name: breakingchange suppressions label Workflow + +on: + pull_request: + branches: + - jacktn/suppression-action + types: + - opened + - synchronize + - reopened + + workflow_dispatch: + +jobs: + manage_sdk_suppressions_labels: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '18' + + - name: Run the script + run: node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js + + # - name: Run Manage-SDKSuppression-Label script from file + # run: | + # .\scripts\Manage-SDKSuppression-Label.ps1 + # env: + # GITHUB_EVENT_PULL_REQUEST_BASE_REPO_OWNER: ${{ github.event.pull_request.base.repo.owner.login }} + # GITHUB_EVENT_PULL_REQUEST_BASE_REPO_NAME: ${{ github.event.pull_request.base.repo.name }} + # GITHUB_EVENT_PULL_REQUEST_BASE_REF: ${{ github.event.pull_request.base.ref }} + # GITHUB_EVENT_PULL_REQUEST_HEAD_REPO_OWNER: ${{ github.event.pull_request.head.repo.owner.login }} + # GITHUB_EVENT_PULL_REQUEST_HEAD_REPO_NAME: ${{ github.event.pull_request.head.repo.name }} + # GITHUB_EVENT_PULL_REQUEST_HEAD_REF: ${{ github.event.pull_request.head.ref }} + # GITHUB_EVENT_PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }} + # GITHUB_TOKEN: ${{ secrets.TOKEN }} \ No newline at end of file diff --git a/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js b/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js new file mode 100644 index 000000000000..e74dd8682c02 --- /dev/null +++ b/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js @@ -0,0 +1,3 @@ + + +console.log('test sdk-suppressions-label.js is working'); \ No newline at end of file From 9d13f26969441240e8d4023a0444f2e9ad649768 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 5 Dec 2024 17:28:13 +0800 Subject: [PATCH 002/190] test variabel can used in next step --- .github/workflows/SDK-Suppressions-Label.yaml | 13 +++++++++++++ .../sdk-suppressions/cmd/sdk-suppressions-label.js | 8 +++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 5db187e96556..fee03c2a7b4b 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -26,6 +26,19 @@ jobs: - name: Run the script run: node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js + - name: 运行 Node.js 脚本 + id: run-script + run: | + # 运行脚本并捕获输出 + OUTPUT=$(node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js) + echo "脚本输出: $OUTPUT" + # 将输出保存为环境变量 + echo "result=$OUTPUT" >> $GITHUB_ENV + + - name: 在下一步中使用结果 + run: | + echo "脚本结果为: $OUTPUT" + # - name: Run Manage-SDKSuppression-Label script from file # run: | diff --git a/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js b/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js index e74dd8682c02..5c9de606c053 100644 --- a/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js +++ b/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js @@ -1,3 +1,9 @@ -console.log('test sdk-suppressions-label.js is working'); \ No newline at end of file +console.log('test sdk-suppressions-label.js is working'); + +// script.js +const result = { key: "value", success: true }; +console.log(JSON.stringify(result)); // 以 JSON 格式输出 + + From feade6a5d50d42b460b63bba2707eb6bf5f9bef2 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 5 Dec 2024 17:42:16 +0800 Subject: [PATCH 003/190] remove old --- .github/workflows/SDK-Suppressions-Label.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index fee03c2a7b4b..516a33ff209e 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -24,8 +24,8 @@ jobs: with: node-version: '18' - - name: Run the script - run: node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js + # - name: Run the script + # run: node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js - name: 运行 Node.js 脚本 id: run-script run: | From 598db169162acdacbd9999b05a29ef66ebabe4d3 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 5 Dec 2024 18:52:01 +0800 Subject: [PATCH 004/190] add new --- .github/workflows/SDK-Suppressions-Label.yaml | 28 +++++++++++++------ .../cmd/sdk-suppressions-label.js | 10 ++++--- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 516a33ff209e..063589eb4b06 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -11,6 +11,9 @@ on: workflow_dispatch: +env: + script_result: '' + jobs: manage_sdk_suppressions_labels: runs-on: ubuntu-latest @@ -19,6 +22,15 @@ jobs: - name: Checkout code uses: actions/checkout@v4 + - name: Set the value + id: step_one + run: | + echo "action_state=yellow" >> "$GITHUB_ENV" + - name: Use the value + id: step_two + run: | + printf '%s\n' "$action_state" # This will output 'yellow' + - name: Set up Node.js uses: actions/setup-node@v4 with: @@ -26,18 +38,18 @@ jobs: # - name: Run the script # run: node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js - - name: 运行 Node.js 脚本 + - name: Run Node.js script id: run-script run: | - # 运行脚本并捕获输出 - OUTPUT=$(node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js) - echo "脚本输出: $OUTPUT" - # 将输出保存为环境变量 - echo "result=$OUTPUT" >> $GITHUB_ENV + node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js + OUTPUT=$(cat output.json) + echo "Script JSON Output: $OUTPUT" + echo "script_result=$OUTPUT" >> $GITHUB_ENV - - name: 在下一步中使用结果 + - name: Write all JSON content run: | - echo "脚本结果为: $OUTPUT" + echo "Entire JSON content:" + echo "${{ env.script_result }}" # - name: Run Manage-SDKSuppression-Label script from file diff --git a/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js b/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js index 5c9de606c053..310f4764c73c 100644 --- a/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js +++ b/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js @@ -1,9 +1,11 @@ +const fs = require("fs"); +console.log('test sdk-suppressions-label.js is working 2'); -console.log('test sdk-suppressions-label.js is working'); +const result = { removeLabel: "remove-label", addLabel: "add-label" }; -// script.js -const result = { key: "value", success: true }; -console.log(JSON.stringify(result)); // 以 JSON 格式输出 +fs.writeFileSync("output.json", JSON.stringify(result)); +console.log("JSON output saved to output.json"); +console.log("Ending log"); From 5fd1f327e5853eaa3aee21797602a8ad21b4fdac Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 5 Dec 2024 19:25:00 +0800 Subject: [PATCH 005/190] test read env in node script --- .github/workflows/SDK-Suppressions-Label.yaml | 11 +- .../cmd/sdk-suppressions-label.js | 11 + eng/tools/sdk-suppressions/package.json | 12 + eng/tools/sdk-suppressions/src/index.ts | 0 .../src/updateSdkSuppressionsLabel.ts | 322 ++++++++++++++++++ eng/tools/sdk-suppressions/tsconfig.json | 6 + 6 files changed, 361 insertions(+), 1 deletion(-) create mode 100644 eng/tools/sdk-suppressions/package.json create mode 100644 eng/tools/sdk-suppressions/src/index.ts create mode 100644 eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts create mode 100644 eng/tools/sdk-suppressions/tsconfig.json diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 063589eb4b06..83076673128a 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -41,6 +41,16 @@ jobs: - name: Run Node.js script id: run-script run: | + # echo "GITHUB_PULL_REQUEST_BASE_REPO_OWNER=${{ github.event.pull_request.base.repo.owner.login }}" >> $GITHUB_ENV + # echo "GITHUB_PULL_REQUEST_BASE_REPO_NAME=${{ github.event.pull_request.base.repo.name }}" >> $GITHUB_ENV + # echo "GITHUB_PULL_REQUEST_HEAD_REPO_OWNER=${{ github.event.pull_request.head.repo.owner.login }}" >> $GITHUB_ENV + # echo "GITHUB_PULL_REQUEST_HEAD_REPO_NAME=${{ github.event.pull_request.head.repo.name }}" >> $GITHUB_ENV + # echo "GITHUB_PULL_REQUEST_NUMBER=${{ github.event.pull_request.number }}" >> $GITHUB_ENV + + echo "GITHUB_HEAD_REF=${{ github.head_ref }}" >> $GITHUB_ENV + echo "GITHUB_BASE_REF=${{ github.base_ref }}" >> $GITHUB_ENV + echo "GITHUB_PR_NUMBER=${{ github.event.pull_request.number }}" >> $GITHUB_ENV + node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js OUTPUT=$(cat output.json) echo "Script JSON Output: $OUTPUT" @@ -51,7 +61,6 @@ jobs: echo "Entire JSON content:" echo "${{ env.script_result }}" - # - name: Run Manage-SDKSuppression-Label script from file # run: | # .\scripts\Manage-SDKSuppression-Label.ps1 diff --git a/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js b/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js index 310f4764c73c..fedc597c6ce8 100644 --- a/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js +++ b/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js @@ -7,5 +7,16 @@ const result = { removeLabel: "remove-label", addLabel: "add-label" }; fs.writeFileSync("output.json", JSON.stringify(result)); console.log("JSON output saved to output.json"); +const prHeaderBranch = process.env.GITHUB_HEAD_REF; // The branch from which the PR is created +const prBaseBranch = process.env.GITHUB_BASE_REF; // The target branch of the PR +const prNumber = process.env.GITHUB_PR_NUMBER; // The PR number + +console.log(` + Pull Request Information: + Header Branch: ${prHeaderBranch} + Base Branch: ${prBaseBranch} + PR Number: ${prNumber}` +); + console.log("Ending log"); diff --git a/eng/tools/sdk-suppressions/package.json b/eng/tools/sdk-suppressions/package.json new file mode 100644 index 000000000000..d5910ab2ceb5 --- /dev/null +++ b/eng/tools/sdk-suppressions/package.json @@ -0,0 +1,12 @@ +{ + "name": "sdk-suppressions", + "version": "1.0.0", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "description": "" +} diff --git a/eng/tools/sdk-suppressions/src/index.ts b/eng/tools/sdk-suppressions/src/index.ts new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts new file mode 100644 index 000000000000..f6f0b5cd599b --- /dev/null +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -0,0 +1,322 @@ +// import { Octokit, RestEndpointMethodTypes } from "@octokit/rest"; +// import _ from "lodash"; +// import { +// sdkLabels, +// SdkName, +// SdkSuppressionsYml, +// SdkSuppressionsSection, +// sdkSuppressionsFileName, +// SdkPackageSuppressionsEntry, +// base64ToString, +// parseYamlContent, +// validateSdkSuppressionsFile, +// } from "@azure/swagger-validation-common"; +// import { OctokitResponse, ReposGetContentResponseData } from "@octokit/types"; +// import { PullsGetResponse } from './triggerPipeline'; +// import { updatePullRequestLabels } from '../common/github'; +// import { PullRequestContext } from '../../context'; + +// /** +// * +// * @param appClient +// * @param pr +// * @returns SdkName list +// * This part compares the suppression files of the head branch and the base branch. +// * To get the SDK, we need to identify which package name, SDK name, or breaking changes are different and apply the SDK suppression label accordingly in the next step. +// * change details can see at getSdkNamesWithChangedSuppressions function +// * on the other hand that the sdkName list will return an empty array if it does not have a suppression file or if the file is blank. +// */ +// export async function getSdkSuppressionsSdkNames( +// appClient: Octokit, +// pr: PullsGetResponse, +// prCtx: PullRequestContext +// ): Promise { +// const filesChangedPaths: string[] = await listChangedFilePaths(appClient, { +// owner: pr.base.user.login, +// repo: pr.base.repo.name, +// pull_number: pr.number, +// }); +// // Get suppression file list +// let suppressionFileList = filterSuppressionList(filesChangedPaths); + +// let sdkNameList: SdkName[] = []; +// // Get suppression file Content +// if (suppressionFileList.length > 0) { +// for (const suppressionFile of suppressionFileList) { +// logSuppressionFileInfo( +// { +// owner: pr.base.user.login, +// repo: pr.base.repo.name, +// ref: pr.base.ref, +// path: suppressionFile, +// }, +// prCtx +// ); +// let baseSuppressionContent = await getSdkSuppressionsFileContent( +// appClient, +// pr.base.user.login, +// pr.base.repo.name, +// pr.base.ref, +// suppressionFile +// ); +// logSuppressionFileInfo( +// { +// owner: pr.head.user.login, +// repo: pr.head.repo.name, +// ref: pr.head.ref, +// path: suppressionFile, +// }, +// prCtx +// ); +// const headSuppressionContent = await getSdkSuppressionsFileContent( +// appClient, +// pr.head.user.login, +// pr.head.repo.name, +// pr.head.ref, +// suppressionFile +// ); + +// // if the head suppression file is present but anything is wrong like schema error with it return +// const validateSdkSuppressionsFileResult = validateSdkSuppressionsFile(headSuppressionContent).result; +// if (!validateSdkSuppressionsFileResult) { +// return []; +// } +// // if base suppression file does not exist, set it to an empty object but has correct schema +// if (!baseSuppressionContent) { +// baseSuppressionContent = { suppressions: {} }; +// } + +// prCtx.logger.logInfo( +// `updateSdkSuppressionsLabels: PR: ${pr.html_url} Will compare base suppressions content: ${JSON.stringify( +// baseSuppressionContent +// )} and head suppressions content: ${JSON.stringify(headSuppressionContent)} to get different SDK.` +// ); + +// sdkNameList = getSdkNamesWithChangedSuppressions( +// headSuppressionContent as SdkSuppressionsYml, +// baseSuppressionContent as SdkSuppressionsYml +// ); +// } +// } + +// return [...new Set(sdkNameList)]; +// } + +// export async function getSdkSuppressionsLabels(appClient: Octokit, pr: PullsGetResponse, prCtx: PullRequestContext): Promise { +// const sdkNameList = await getSdkSuppressionsSdkNames(appClient, pr, prCtx); +// return sdkNameList.map((sdkName) => sdkLabels[sdkName].breakingChangeSuppression) as string[]; +// } + +// async function getSdkSuppressionsFileContent( +// appClient: Octokit, +// owner: string, +// repo: string, +// ref: string, +// path: string +// ): Promise { +// try { +// const { data: suppressionFileContent }: OctokitResponse = await appClient.repos.getContent({ +// repo, +// owner, +// ref, +// path +// }); +// const suppressionContentString = base64ToString(suppressionFileContent.content); +// return parseYamlContent(suppressionContentString, path).result;; +// } catch (error) { +// console.log(`Not found ${path} in ${owner}/${repo}#${ref}`) +// return null; +// } +// } + +// function getSdksWithSuppressionsDefined(suppressions: SdkSuppressionsSection): SdkName[] { +// return _.keys(suppressions) as SdkName[]; +// } + +// export function getSdkNamesWithChangedSuppressions( +// headSuppressionFile: SdkSuppressionsYml, +// baseSuppressionFile: SdkSuppressionsYml +// ): SdkName[] { +// let sdkNamesWithChangedSuppressions: SdkName[] = []; + +// const headSdkSuppressionsSection: SdkSuppressionsSection = headSuppressionFile.suppressions; +// const baseSdkSuppressionsSection: SdkSuppressionsSection = baseSuppressionFile.suppressions; + +// const headSdksWithSuppressions: SdkName[] = getSdksWithSuppressionsDefined(headSdkSuppressionsSection); +// const baseSdksWithSuppressions: SdkName[] = getSdksWithSuppressionsDefined(baseSdkSuppressionsSection); + +// if (headSdksWithSuppressions.length === 0) { +// if (baseSdksWithSuppressions.length > 0) { +// sdkNamesWithChangedSuppressions = [...sdkNamesWithChangedSuppressions, ...baseSdksWithSuppressions]; +// } +// } + +// // 1. If modify Sdk in SdkSuppressionsSection, add SdkName to sdkNamesWithChangedSuppressions +// const differentSdkNamesWithChangedSuppressions = _.xorWith(headSdksWithSuppressions, baseSdksWithSuppressions, _.isEqual); +// if (differentSdkNamesWithChangedSuppressions.length > 0) { +// sdkNamesWithChangedSuppressions = [...sdkNamesWithChangedSuppressions, ...differentSdkNamesWithChangedSuppressions]; +// } + +// // 2. If modify SdkPackageSuppressionsEntry in SdkSuppressionsSection include package name and breaking changes +// // add SdkName to sdkNamesWithChangedSuppressions +// const similarSdkNamesWithChangedSuppressions = _.intersectionWith(headSdksWithSuppressions, baseSdksWithSuppressions); +// similarSdkNamesWithChangedSuppressions.forEach((sdkName: SdkName) => { +// const headSdkPackageSuppressionsEntry = headSdkSuppressionsSection[sdkName] as SdkPackageSuppressionsEntry[]; +// const baseSdkPackageSuppressionsEntry = baseSdkSuppressionsSection[sdkName] as SdkPackageSuppressionsEntry[]; +// // Determine whether packageName has changed +// const differentPackageNamesWithChangedSuppressions = _.xorWith( +// headSdkPackageSuppressionsEntry.map((entry) => entry.package), +// baseSdkPackageSuppressionsEntry.map((entry) => entry.package), +// _.isEqual +// ); +// if (differentPackageNamesWithChangedSuppressions.length > 0) { +// sdkNamesWithChangedSuppressions = [...sdkNamesWithChangedSuppressions, sdkName]; +// return; +// } +// // Determine whether breaking-changes has changed +// headSdkPackageSuppressionsEntry.forEach((headEntry) => { +// const baseEntry = baseSdkPackageSuppressionsEntry.find((entry) => entry.package === headEntry.package); +// if (!baseEntry) { +// sdkNamesWithChangedSuppressions = [...sdkNamesWithChangedSuppressions, sdkName]; +// return; +// } +// if (!_.isEqual(headEntry["breaking-changes"].sort(), baseEntry["breaking-changes"].sort())) { +// sdkNamesWithChangedSuppressions = [...sdkNamesWithChangedSuppressions, sdkName]; +// return; +// } +// }); +// }) + +// return [...new Set(sdkNamesWithChangedSuppressions)]; +// } + +// /** +// * +// * @param appClient +// * @param pr +// * This code segment is responsible for managing the sdk suppression label (e.g. BreakingChange-Go-Sdk-Suppression) for PRs. +// * 1. It applies the label automatically when a PR includes a new suppression file. +// * 2. It removes the label if the PR no longer contains the suppression file. +// * 3. It leaves the label unchanged if the PR already has both the suppression and the suppression approved labels. +// * +// */ +// export async function updateSdkSuppressionsLabels(appClient: Octokit, pr: PullsGetResponse, prCtx: PullRequestContext) { +// const sdkNames = await getSdkSuppressionsSdkNames(appClient, pr, prCtx); +// prCtx.logger.logInfo(`updateSdkSuppressionsLabels: PR: ${pr.html_url} Get the required suppressions label based on compared SDK List ${sdkNames.join(", ")}`); +// const presentLabels = pr.labels.map((label) => label.name); +// // The sdkNames indicates whether any suppression files have been modified. If it is empty +// // then check if the suppression label was previously applied and remove it if so. Otherwise, no action is needed. +// if (sdkNames.length === 0) { +// const sdkSuppressionsLabels = Object.values(sdkLabels).map(sdkName => sdkName.breakingChangeSuppression).filter(breakingChangeSuppressionLabel => breakingChangeSuppressionLabel !== undefined); +// let removeSdkSuppressionsLabels: string[] = []; +// for (let prLabel of presentLabels) { +// if (sdkSuppressionsLabels.includes(prLabel)) { +// const sdkSuppressionsApprovedLabel = Object.values(sdkLabels).find(sdkName => sdkName.breakingChangeSuppression === prLabel)?.breakingChangeSuppressionApproved || ''; +// if (!presentLabels.includes(sdkSuppressionsApprovedLabel)) { +// prCtx.logger.logInfo(`updateSdkSuppressionsLabels: PR: ${pr.html_url} To remove the existed suppression label if there are no difference between head commit and base commit for the suppression content.`); +// removeSdkSuppressionsLabels.push(prLabel); +// } +// } +// } +// if (removeSdkSuppressionsLabels.length > 0) { +// await updatePullRequestLabels( +// appClient, +// { +// owner: pr.base.user.login, +// repo: pr.base.repo.name +// }, +// pr.number, +// [], +// removeSdkSuppressionsLabels +// ) +// prCtx.logger.logInfo(`updateSdkSuppressionsLabels: PR: ${pr.html_url} Remove label: ${removeSdkSuppressionsLabels.join(", ")}`); +// } else { +// prCtx.logger.logInfo(`updateSdkSuppressionsLabels: PR: ${pr.html_url} No Remove label`); +// } +// } else { +// // The presence of sdkNames indicates that the suppression file has changed between the head and base branch. The suppression label should be added if it is missing. +// let addSdkSuppressionsLabels: string[] = []; +// for (let sdkName of sdkNames) { +// const sdkSuppressionsLabel = sdkLabels[sdkName].breakingChangeSuppression || ''; +// if (!presentLabels.includes(sdkSuppressionsLabel)) { +// addSdkSuppressionsLabels.push(sdkSuppressionsLabel); +// } +// } +// if (addSdkSuppressionsLabels.length > 0) { +// await updatePullRequestLabels( +// appClient, +// { +// owner: pr.base.user.login, +// repo: pr.base.repo.name +// }, +// pr.number, +// addSdkSuppressionsLabels, +// [] +// ) +// prCtx.logger.logInfo(`updateSdkSuppressionsLabels: PR: ${pr.html_url} add label: ${addSdkSuppressionsLabels.join(", ")}`); +// } else { +// prCtx.logger.logInfo(`updateSdkSuppressionsLabels: PR: ${pr.html_url} no add label`); +// } +// } +// } + +// function logSuppressionFileInfo(pr: { owner: string, repo: string, ref: string, path: string }, prCtx: PullRequestContext) { +// prCtx.logger.logInfo(`updateSdkSuppressionsLabels: Will get suppressions content from ${pr.owner}/${pr.repo}#${pr.ref} for ${pr.path}`); +// } + +// const listChangedFilePaths = async ( +// github: Octokit, +// args: RestEndpointMethodTypes["pulls"]["listFiles"]["parameters"] +// ): Promise => { +// const changedFiles = await github.paginate("GET /repos/:owner/:repo/pulls/:pull_number/files", args) as { filename: string }[]; + +// return changedFiles.map(it => it.filename); +// }; + +// /** +// * +// * @param filesChangedPaths +// * @returns string[] +// * check suppressionFileList is swagger suppression or tsp suppression +// * if the change includes both swagger suppression and tsp suppression, only handle the tsp suppression +// * others keep swagger suppression +// * +// * filter data-plane for swagger suppression and tsp suppression for each service +// */ +// export function filterSuppressionList(filesChangedPaths: string[]): string[] { +// let initialSuppressionFiles = filesChangedPaths.filter((suppressionFile) => +// suppressionFile.split("/").includes(sdkSuppressionsFileName) +// ); +// let tspSuppressionFileList = initialSuppressionFiles.filter( +// suppressionFile => suppressionFile.split('/').some(suppressionFile => suppressionFile.endsWith('.Management')) +// ); +// let swaggerSuppressionFileList = initialSuppressionFiles.filter( +// suppressionFile => suppressionFile.split('/').includes('resource-manager') +// ); + +// let filterSuppressionFileList = [...tspSuppressionFileList, ...swaggerSuppressionFileList]; + +// const groupedSuppressionFileList = filterSuppressionFileList.reduce((acc: {[key: string]: string[]}, path) => { +// const key = path.split('/')[1]; +// if (!acc[key]) { +// acc[key] = []; +// } +// acc[key].push(path); + +// return acc; +// }, {}); + +// let suppressionFileList: string[] = [] +// for (const serviceName in groupedSuppressionFileList) { +// if (groupedSuppressionFileList.hasOwnProperty(serviceName)) { +// let serviceSuppressionList = groupedSuppressionFileList[serviceName]; +// if(serviceSuppressionList.some(suppressionFile => suppressionFile.split('/').some(suppressionFile => suppressionFile.endsWith('.Management')))) { +// suppressionFileList = suppressionFileList.concat(serviceSuppressionList.filter(suppressionFile => suppressionFile.split('/').some(suppressionFile => suppressionFile.endsWith('.Management')))); +// } else { +// suppressionFileList = suppressionFileList.concat(serviceSuppressionList) +// } +// } +// } + +// return suppressionFileList; +// } diff --git a/eng/tools/sdk-suppressions/tsconfig.json b/eng/tools/sdk-suppressions/tsconfig.json new file mode 100644 index 000000000000..ec6d6640928a --- /dev/null +++ b/eng/tools/sdk-suppressions/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "./dist", + } +} From cf53842bc1d8cf2b26df64ea0b9d2a4b39986fd1 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 5 Dec 2024 19:57:53 +0800 Subject: [PATCH 006/190] write all github info --- .github/workflows/SDK-Suppressions-Label.yaml | 6 ++++++ eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js | 3 +++ 2 files changed, 9 insertions(+) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 83076673128a..c31c52489d44 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -36,6 +36,10 @@ jobs: with: node-version: '18' + - name: Print GitHub Context + run: | + echo "GitHub Context: ${{ toJson(github) }}" + # - name: Run the script # run: node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js - name: Run Node.js script @@ -47,6 +51,8 @@ jobs: # echo "GITHUB_PULL_REQUEST_HEAD_REPO_NAME=${{ github.event.pull_request.head.repo.name }}" >> $GITHUB_ENV # echo "GITHUB_PULL_REQUEST_NUMBER=${{ github.event.pull_request.number }}" >> $GITHUB_ENV + echo "GITHUB_EVENT_NAME=${{ github.event_name }}" >> $GITHUB_ENV + echo "GITHUB_HEAD_REF=${{ github.head_ref }}" >> $GITHUB_ENV echo "GITHUB_BASE_REF=${{ github.base_ref }}" >> $GITHUB_ENV echo "GITHUB_PR_NUMBER=${{ github.event.pull_request.number }}" >> $GITHUB_ENV diff --git a/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js b/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js index fedc597c6ce8..18365d5af1b6 100644 --- a/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js +++ b/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js @@ -10,6 +10,9 @@ console.log("JSON output saved to output.json"); const prHeaderBranch = process.env.GITHUB_HEAD_REF; // The branch from which the PR is created const prBaseBranch = process.env.GITHUB_BASE_REF; // The target branch of the PR const prNumber = process.env.GITHUB_PR_NUMBER; // The PR number +const eventName = process.env.GITHUB_EVENT_NAME; + +console.log(`This workflow was triggered by the ${eventName} event.`); console.log(` Pull Request Information: From 8eeabb1fc3a4d7636b0003c5872764ca35374931 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 5 Dec 2024 20:04:30 +0800 Subject: [PATCH 007/190] fix bug --- .github/workflows/SDK-Suppressions-Label.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index c31c52489d44..2479486e9a59 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -38,7 +38,7 @@ jobs: - name: Print GitHub Context run: | - echo "GitHub Context: ${{ toJson(github) }}" + echo "GitHub Context: ${{ toJson(github.event) }}" # - name: Run the script # run: node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js From 6beaa1634e7ad3d18f40c15ab90dd97eebc6fe47 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 5 Dec 2024 20:14:53 +0800 Subject: [PATCH 008/190] add new param --- .github/workflows/SDK-Suppressions-Label.yaml | 21 ++++++++++++------- .../cmd/sdk-suppressions-label.js | 14 ++++++++++--- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 2479486e9a59..e5040116908b 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -22,14 +22,16 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Set the value - id: step_one - run: | - echo "action_state=yellow" >> "$GITHUB_ENV" - - name: Use the value - id: step_two - run: | - printf '%s\n' "$action_state" # This will output 'yellow' + # - name: Get PR info from GitHub API + # uses: octokit/request-action@v2 + # id: pr_info + # with: + # route: GET /repos/${{ github.repository }}/pulls + # headers: '{"Authorization": "token ${{ secrets.GITHUB_TOKEN }}"}' + + # - name: Show PR number + # run: | + # echo "Pull Request Number: ${{ steps.pr_info.outputs.data[0].number }}" - name: Set up Node.js uses: actions/setup-node@v4 @@ -56,6 +58,9 @@ jobs: echo "GITHUB_HEAD_REF=${{ github.head_ref }}" >> $GITHUB_ENV echo "GITHUB_BASE_REF=${{ github.base_ref }}" >> $GITHUB_ENV echo "GITHUB_PR_NUMBER=${{ github.event.pull_request.number }}" >> $GITHUB_ENV + echo "GITHUB_PR_REF=${{ github.ref }}" >> $GITHUB_ENV + echo "GITHUB_PR_REF_NAME=${{ github.ref_name }}" >> $GITHUB_ENV + echo "GITHUB_PR_RUN_NUMBER=${{ github.run_number }}" >> $GITHUB_ENV node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js OUTPUT=$(cat output.json) diff --git a/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js b/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js index 18365d5af1b6..6b03bdc67a27 100644 --- a/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js +++ b/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js @@ -10,9 +10,6 @@ console.log("JSON output saved to output.json"); const prHeaderBranch = process.env.GITHUB_HEAD_REF; // The branch from which the PR is created const prBaseBranch = process.env.GITHUB_BASE_REF; // The target branch of the PR const prNumber = process.env.GITHUB_PR_NUMBER; // The PR number -const eventName = process.env.GITHUB_EVENT_NAME; - -console.log(`This workflow was triggered by the ${eventName} event.`); console.log(` Pull Request Information: @@ -21,5 +18,16 @@ console.log(` PR Number: ${prNumber}` ); +const eventName = process.env.GITHUB_EVENT_NAME; +console.log(`This workflow was triggered by the ${eventName} event.`); + +const ref = process.env.GITHUB_PR_REF; +const refName = process.env.GITHUB_PR_REF_NAME; +const run_number = process.env.GITHUB_PR_RUN_NUMBER; +console.log(`This workflow ref ${ref} `); +console.log(`This workflow ref name ${refName} `); +console.log(`This workflow run_number ${run_number} `); + + console.log("Ending log"); From b33ad69863ad6f29dcfd2e5dbf42f0af5bd2adc4 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 5 Dec 2024 20:15:06 +0800 Subject: [PATCH 009/190] remove sth --- .github/workflows/SDK-Suppressions-Label.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index e5040116908b..bf6714f63d38 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -38,9 +38,9 @@ jobs: with: node-version: '18' - - name: Print GitHub Context - run: | - echo "GitHub Context: ${{ toJson(github.event) }}" + # - name: Print GitHub Context + # run: | + # echo "GitHub Context: ${{ toJson(github.event) }}" # - name: Run the script # run: node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js From 2f03f584d55f20b6a92eafe2f29884059e0eb6ef Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 00:30:03 +0800 Subject: [PATCH 010/190] add script --- .../actions/add-label-artifact/action.yaml | 4 +++ .github/workflows/SDK-Suppressions-Label.yaml | 30 +++++++++++++------ 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/.github/actions/add-label-artifact/action.yaml b/.github/actions/add-label-artifact/action.yaml index 28c4b294655c..331db1e34f47 100644 --- a/.github/actions/add-label-artifact/action.yaml +++ b/.github/actions/add-label-artifact/action.yaml @@ -1,5 +1,9 @@ name: Add Label Artifact +<<<<<<< HEAD description: Uploads an empty artifact named `label-${name}=${value}`, that's consumed by action "update-labels" +======= +description: Uploads an empty artifact named `label-${name}=${value}`, that's consumed by update-labels.yaml +>>>>>>> 2b80e40a66 (add script) inputs: name: diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index bf6714f63d38..5dfe113d523d 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -22,16 +22,28 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - # - name: Get PR info from GitHub API - # uses: octokit/request-action@v2 - # id: pr_info + # - name: Set Label + # uses: actions/github-script@v7 + # env: + # OWNER: ${{ inputs.owner }} + # REPO: ${{ inputs.repo }} + # ISSUE_NUMBER: ${{ inputs.issue_number }} + # RUN_ID: ${{ inputs.run_id }} # with: - # route: GET /repos/${{ github.repository }}/pulls - # headers: '{"Authorization": "token ${{ secrets.GITHUB_TOKEN }}"}' - - # - name: Show PR number - # run: | - # echo "Pull Request Number: ${{ steps.pr_info.outputs.data[0].number }}" + # script: | + # const action = require('./.github/actions/update-labels/action.js') + # await action({ github, context, core }); + + - name: Add a comment + uses: actions/github-script@v6 + with: + script: | + github.rest.issues.createComment({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.issue.number, + body: "Thank you for your contribution! 🚀" + }); - name: Set up Node.js uses: actions/setup-node@v4 From 5a5f3f69864ab4741880ad52da7dc33f9e58689b Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 00:54:56 +0800 Subject: [PATCH 011/190] test action using js --- .../actions/handle-suppressions/suppressions.js | 15 +++++++++++++++ .github/actions/update-labels/action.js | 11 +++++++++++ .github/workflows/SDK-Suppressions-Label.yaml | 14 ++++++++------ .gitignore | 2 ++ 4 files changed, 36 insertions(+), 6 deletions(-) create mode 100644 .github/actions/handle-suppressions/suppressions.js diff --git a/.github/actions/handle-suppressions/suppressions.js b/.github/actions/handle-suppressions/suppressions.js new file mode 100644 index 000000000000..b25ad55a9046 --- /dev/null +++ b/.github/actions/handle-suppressions/suppressions.js @@ -0,0 +1,15 @@ + +module.exports = async ({ github, context, core }) => { + + core.info(`extractInputs(${context.eventName}, ${context.payload.action})`); + + console.log('context', JSON.stringify(context)); + console.log('context.payload', JSON.stringify(context.payload)); + github.rest.issues.createComment({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.issue.number, + body: "Thank you for your contribution! 123123🚀" + }); + +} \ No newline at end of file diff --git a/.github/actions/update-labels/action.js b/.github/actions/update-labels/action.js index ffd734584b14..32607e8e278a 100644 --- a/.github/actions/update-labels/action.js +++ b/.github/actions/update-labels/action.js @@ -33,8 +33,19 @@ module.exports = async ({ github, context, core }) => { artifactNames = artifacts.data.artifacts.map((a) => a.name); } else { +<<<<<<< HEAD // TODO: List all artifacts of all workflows associated with issue_number throw new Error("Required input 'run_id' not found in env or context"); +======= + const workflows = await github.rest.actions.listWorkflowRunsForRepo({ + owner, + repo, + event: 'pull_request', + status: 'completed', + head_sha: context.payload + }); + // TODO: List all artifacts of issue_number +>>>>>>> ff897aaa2e (test action using js) } core.info(`artifactNames: ${JSON.stringify(artifactNames)}`); diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 5dfe113d523d..58252647bcf2 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -38,12 +38,14 @@ jobs: uses: actions/github-script@v6 with: script: | - github.rest.issues.createComment({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.issue.number, - body: "Thank you for your contribution! 🚀" - }); + # github.rest.issues.createComment({ + # owner: context.repo.owner, + # repo: context.repo.repo, + # issue_number: context.issue.number, + # body: "Thank you for your contribution! 🚀" + # }); + const action = require('./.github/actions/handle-suppressions/suppressions.js') + await action({ github, context, core }); - name: Set up Node.js uses: actions/setup-node@v4 diff --git a/.gitignore b/.gitignore index b07c3b3ae14e..57ec3e887049 100644 --- a/.gitignore +++ b/.gitignore @@ -129,6 +129,8 @@ eng/tools/**/dist !eng/tools/**/cmd/*.js !eng/tools/**/eslint.config.js +!.github/**/*.js + # TypeScript cache *.tsbuildinfo From 6a4e8b7a724732b02a9f79d8cf2f8e2ce53a2c60 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 01:28:31 +0800 Subject: [PATCH 012/190] using suppressions.js to test --- .../handle-suppressions/suppressions.js | 15 +++---- .github/workflows/SDK-Suppressions-Label.yaml | 42 +++++++++++++++++-- 2 files changed, 46 insertions(+), 11 deletions(-) diff --git a/.github/actions/handle-suppressions/suppressions.js b/.github/actions/handle-suppressions/suppressions.js index b25ad55a9046..4b76d569bbfc 100644 --- a/.github/actions/handle-suppressions/suppressions.js +++ b/.github/actions/handle-suppressions/suppressions.js @@ -1,15 +1,16 @@ module.exports = async ({ github, context, core }) => { - core.info(`extractInputs(${context.eventName}, ${context.payload.action})`); + core.info(`(${context.eventName}, ${context.payload.action})`); console.log('context', JSON.stringify(context)); console.log('context.payload', JSON.stringify(context.payload)); - github.rest.issues.createComment({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.issue.number, - body: "Thank you for your contribution! 123123🚀" - }); + const {SHA} = process.env + const commit = await github.rest.repos.getCommit({ + owner: context.repo.owner, + repo: context.repo.repo, + ref: `${SHA}` + }) + core.exportVariable('author', commit.data.commit.author.email) } \ No newline at end of file diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 58252647bcf2..12f52650d790 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -35,8 +35,11 @@ jobs: # await action({ github, context, core }); - name: Add a comment - uses: actions/github-script@v6 + uses: actions/github-script@v7 with: + result-encoding: string + retries: 3 + retry-exempt-status-codes: 400,401 script: | # github.rest.issues.createComment({ # owner: context.repo.owner, @@ -44,13 +47,44 @@ jobs: # issue_number: context.issue.number, # body: "Thank you for your contribution! 🚀" # }); - const action = require('./.github/actions/handle-suppressions/suppressions.js') - await action({ github, context, core }); + console.log(context) + const script = require('.github/actions/handle-suppressions/suppressions.js') + await script({github, context, core}) + env: + GITHUB_TOKEN: ${{ secrets.SPEC_REPO_TOKEN }} + + + # - name: 获取 PR 信息 + # uses: actions/github-script@v6 + # with: + # script: | + # const pr = context.payload.pull_request; + # const prNumber = pr.number; + # const prTitle = pr.title; + + + # console.log(`PR Number: ${prNumber}`); + # console.log(`PR Title: ${prTitle}`); + + # // 保存到环境变量 + # return { prNumber, prTitle }; + # result-encoding: string + # id: fetch-pr-info + + # - name: 保存到 GitHub 环境变量 + # run: | + # echo "PR_NUMBER=${{ steps.fetch-pr-info.outputs.prNumber }}" >> $GITHUB_ENV + # echo "PR_TITLE=${{ steps.fetch-pr-info.outputs.prTitle }}" >> $GITHUB_ENV + + # - name: 测试打印环境变量 + # run: | + # echo "Pull Request Number: $PR_NUMBER" + # echo "Pull Request Title: $PR_TITLE" - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: '18' + node-version: '20' # - name: Print GitHub Context # run: | From 7f78eca54a0b2f21efa8705b6b9befd0958a1506 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 01:34:13 +0800 Subject: [PATCH 013/190] test github-script --- .../handle-suppressions/suppressions.js | 14 ++--- .github/workflows/SDK-Suppressions-Label.yaml | 56 ++++++++++--------- __azurite_db_table__.json | 1 + 3 files changed, 37 insertions(+), 34 deletions(-) create mode 100644 __azurite_db_table__.json diff --git a/.github/actions/handle-suppressions/suppressions.js b/.github/actions/handle-suppressions/suppressions.js index 4b76d569bbfc..d249a2424154 100644 --- a/.github/actions/handle-suppressions/suppressions.js +++ b/.github/actions/handle-suppressions/suppressions.js @@ -5,12 +5,12 @@ module.exports = async ({ github, context, core }) => { console.log('context', JSON.stringify(context)); console.log('context.payload', JSON.stringify(context.payload)); - const {SHA} = process.env - const commit = await github.rest.repos.getCommit({ - owner: context.repo.owner, - repo: context.repo.repo, - ref: `${SHA}` - }) - core.exportVariable('author', commit.data.commit.author.email) + // const {SHA} = process.env + // const commit = await github.rest.repos.getCommit({ + // owner: context.repo.owner, + // repo: context.repo.repo, + // ref: `${SHA}` + // }) + // core.exportVariable('author', commit.data.commit.author.email) } \ No newline at end of file diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 12f52650d790..829905dac67d 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -34,7 +34,35 @@ jobs: # const action = require('./.github/actions/update-labels/action.js') # await action({ github, context, core }); - - name: Add a comment + - name: 获取 PR 信息 + uses: actions/github-script@v6 + with: + script: | + const pr = context.payload.pull_request; + const prNumber = pr.number; + const prTitle = pr.title; + + + console.log(`PR Number: ${prNumber}`); + console.log(`PR Title: ${prTitle}`); + + // 保存到环境变量 + return { prNumber, prTitle }; + result-encoding: string + id: fetch-pr-info + + - name: 保存到 GitHub 环境变量 + run: | + echo "PR_NUMBER=${{ steps.fetch-pr-info.outputs.prNumber }}" >> $GITHUB_ENV + echo "PR_TITLE=${{ steps.fetch-pr-info.outputs.prTitle }}" >> $GITHUB_ENV + + - name: 测试打印环境变量 + run: | + echo "Pull Request Number: $PR_NUMBER" + echo "Pull Request Title: $PR_TITLE" + + + - name: test github-script uses: actions/github-script@v7 with: result-encoding: string @@ -54,32 +82,6 @@ jobs: GITHUB_TOKEN: ${{ secrets.SPEC_REPO_TOKEN }} - # - name: 获取 PR 信息 - # uses: actions/github-script@v6 - # with: - # script: | - # const pr = context.payload.pull_request; - # const prNumber = pr.number; - # const prTitle = pr.title; - - - # console.log(`PR Number: ${prNumber}`); - # console.log(`PR Title: ${prTitle}`); - - # // 保存到环境变量 - # return { prNumber, prTitle }; - # result-encoding: string - # id: fetch-pr-info - - # - name: 保存到 GitHub 环境变量 - # run: | - # echo "PR_NUMBER=${{ steps.fetch-pr-info.outputs.prNumber }}" >> $GITHUB_ENV - # echo "PR_TITLE=${{ steps.fetch-pr-info.outputs.prTitle }}" >> $GITHUB_ENV - - # - name: 测试打印环境变量 - # run: | - # echo "Pull Request Number: $PR_NUMBER" - # echo "Pull Request Title: $PR_TITLE" - name: Set up Node.js uses: actions/setup-node@v4 diff --git a/__azurite_db_table__.json b/__azurite_db_table__.json new file mode 100644 index 000000000000..8953b9d30ff6 --- /dev/null +++ b/__azurite_db_table__.json @@ -0,0 +1 @@ +{"filename":"/home/tianenx/Github/JackTn/azure-rest-api-specs/__azurite_db_table__.json","collections":[{"name":"$TABLES_COLLECTION$","data":[],"idIndex":null,"binaryIndices":{"account":{"name":"account","dirty":false,"values":[]},"table":{"name":"table","dirty":false,"values":[]}},"constraints":null,"uniqueNames":[],"transforms":{},"objType":"$TABLES_COLLECTION$","dirty":false,"cachedIndex":null,"cachedBinaryIndex":null,"cachedData":null,"adaptiveBinaryIndices":true,"transactional":false,"cloneObjects":false,"cloneMethod":"parse-stringify","asyncListeners":false,"disableMeta":false,"disableChangesApi":true,"disableDeltaChangesApi":true,"autoupdate":false,"serializableIndices":true,"disableFreeze":true,"ttl":null,"maxId":0,"DynamicViews":[],"events":{"insert":[],"update":[],"pre-insert":[],"pre-update":[],"close":[],"flushbuffer":[],"error":[],"delete":[null],"warning":[null]},"changes":[],"dirtyIds":[]},{"name":"$SERVICES_COLLECTION$","data":[],"idIndex":null,"binaryIndices":{},"constraints":null,"uniqueNames":["accountName"],"transforms":{},"objType":"$SERVICES_COLLECTION$","dirty":false,"cachedIndex":null,"cachedBinaryIndex":null,"cachedData":null,"adaptiveBinaryIndices":true,"transactional":false,"cloneObjects":false,"cloneMethod":"parse-stringify","asyncListeners":false,"disableMeta":false,"disableChangesApi":true,"disableDeltaChangesApi":true,"autoupdate":false,"serializableIndices":true,"disableFreeze":true,"ttl":null,"maxId":0,"DynamicViews":[],"events":{"insert":[],"update":[],"pre-insert":[],"pre-update":[],"close":[],"flushbuffer":[],"error":[],"delete":[null],"warning":[null]},"changes":[],"dirtyIds":[]}],"databaseVersion":1.5,"engineVersion":1.5,"autosave":true,"autosaveInterval":5000,"autosaveHandle":null,"throttledSaves":true,"options":{"persistenceMethod":"fs","autosave":true,"autosaveInterval":5000,"serializationMethod":"normal","destructureDelimiter":"$<\n"},"persistenceMethod":"fs","persistenceAdapter":null,"verbose":false,"events":{"init":[null],"loaded":[],"flushChanges":[],"close":[],"changes":[],"warning":[]},"ENV":"NODEJS"} \ No newline at end of file From 39e4af03af5df7d82dd3d5bda7b39a2ac0f0b758 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 01:47:35 +0800 Subject: [PATCH 014/190] set output --- .github/workflows/SDK-Suppressions-Label.yaml | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 829905dac67d..3b071787eb69 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -33,9 +33,17 @@ jobs: # script: | # const action = require('./.github/actions/update-labels/action.js') # await action({ github, context, core }); + - name: Set color + id: color-selector + run: echo "SELECTED_COLOR=green" >> "$GITHUB_OUTPUT" + - name: Get color + env: + SELECTED_COLOR: ${{ steps.color-selector.outputs.SELECTED_COLOR }} + run: echo "The selected color is $SELECTED_COLOR" - - name: 获取 PR 信息 - uses: actions/github-script@v6 + - name: get GitHub pr info + uses: actions/github-script@v7 + id: fetch-pr-info with: script: | const pr = context.payload.pull_request; @@ -46,21 +54,24 @@ jobs: console.log(`PR Number: ${prNumber}`); console.log(`PR Title: ${prTitle}`); - // 保存到环境变量 + core.setOutput("prNumber", prNumber); // 显式设置输出 + core.setOutput("prTitle", prTitle); // 显式设置输出 + return { prNumber, prTitle }; + result-encoding: string - id: fetch-pr-info - - name: 保存到 GitHub 环境变量 + - name: save GitHub env run: | echo "PR_NUMBER=${{ steps.fetch-pr-info.outputs.prNumber }}" >> $GITHUB_ENV echo "PR_TITLE=${{ steps.fetch-pr-info.outputs.prTitle }}" >> $GITHUB_ENV - - name: 测试打印环境变量 + - name: test GitHub env run: | + echo "Pull Request Number: ${{ steps.fetch-pr-info.outputs.prNumber }}" + echo "Pull Request Title: ${{ steps.fetch-pr-info.outputs.prTitle }}" echo "Pull Request Number: $PR_NUMBER" echo "Pull Request Title: $PR_TITLE" - - name: test github-script uses: actions/github-script@v7 From 7122d89debc9c72a5a1bf634993d17daf9345f58 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 02:00:20 +0800 Subject: [PATCH 015/190] log context --- .github/workflows/SDK-Suppressions-Label.yaml | 37 +++++++++++++++---- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 3b071787eb69..0c724d2bd626 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -54,10 +54,10 @@ jobs: console.log(`PR Number: ${prNumber}`); console.log(`PR Title: ${prTitle}`); - core.setOutput("prNumber", prNumber); // 显式设置输出 - core.setOutput("prTitle", prTitle); // 显式设置输出 + core.setOutput("prNumber", prNumber); + core.setOutput("prTitle", prTitle); - return { prNumber, prTitle }; + # cannot use this code - return { prNumber, prTitle }; result-encoding: string @@ -86,14 +86,35 @@ jobs: # issue_number: context.issue.number, # body: "Thank you for your contribution! 🚀" # }); - console.log(context) - const script = require('.github/actions/handle-suppressions/suppressions.js') - await script({github, context, core}) + + + # const script = require('.github/actions/handle-suppressions/suppressions.js') + # await script({github, context, core}) + + console.log("event:", context.eventName); + console.log("actor:", context.actor); + console.log("repo:", context.repo); + console.log("SHA:", context.sha); + console.log("payload", context.payload); + console.log("pull_request", context.payload.pull_request); + + + console.log("=== GitHub Context ==="); + console.log(context); + + console.log("Repository Info:", context.repo); + console.log("Actor:", context.actor); + console.log("Event Name:", context.eventName); + console.log("Payload:", context.payload); + console.log("Run ID:", context.runId); + console.log("Run Number:", context.runNumber); + console.log("SHA:", context.sha); + console.log("Ref:", context.ref); + console.log("Workflow:", context.workflow); + console.log("Job:", context.job); env: GITHUB_TOKEN: ${{ secrets.SPEC_REPO_TOKEN }} - - - name: Set up Node.js uses: actions/setup-node@v4 with: From 962da3612b2dde12b78ecd157b634abf5bcd472f Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 02:05:41 +0800 Subject: [PATCH 016/190] log context --- .github/workflows/SDK-Suppressions-Label.yaml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 0c724d2bd626..d85811e40f1b 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -50,15 +50,13 @@ jobs: const prNumber = pr.number; const prTitle = pr.title; - console.log(`PR Number: ${prNumber}`); console.log(`PR Title: ${prTitle}`); core.setOutput("prNumber", prNumber); core.setOutput("prTitle", prTitle); - # cannot use this code - return { prNumber, prTitle }; - + return { prNumber, prTitle }; result-encoding: string - name: save GitHub env From 91f1b41f397a6f1f91d50dcf929a91251a3914fb Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 02:16:49 +0800 Subject: [PATCH 017/190] find change path --- .github/workflows/SDK-Suppressions-Label.yaml | 107 ++++++++++++------ 1 file changed, 72 insertions(+), 35 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index d85811e40f1b..68aa3fca833a 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -50,6 +50,10 @@ jobs: const prNumber = pr.number; const prTitle = pr.title; + console.log("event:", context.eventName); + console.log("actor:", context.actor); + console.log("pull_request", context.payload.pull_request); + console.log(`PR Number: ${prNumber}`); console.log(`PR Title: ${prTitle}`); @@ -70,48 +74,81 @@ jobs: echo "Pull Request Title: ${{ steps.fetch-pr-info.outputs.prTitle }}" echo "Pull Request Number: $PR_NUMBER" echo "Pull Request Title: $PR_TITLE" - - - name: test github-script + + - name: Use GitHub Script to get changed files uses: actions/github-script@v7 with: - result-encoding: string - retries: 3 - retry-exempt-status-codes: 400,401 script: | - # github.rest.issues.createComment({ - # owner: context.repo.owner, - # repo: context.repo.repo, - # issue_number: context.issue.number, - # body: "Thank you for your contribution! 🚀" - # }); - - - # const script = require('.github/actions/handle-suppressions/suppressions.js') - # await script({github, context, core}) + const prNumber = context.payload.pull_request.number; // Get PR number from context + + // Get changed files in the PR + const { data: files } = await github.rest.pulls.listFiles({ + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: prNumber, + }); + + // Log changed files + console.log(`Changed files in PR #${prNumber}:`); + files.forEach(file => { + console.log(`- ${file.filename} (status: ${file.status})`); + }); + + // Optionally return the list of files to be used in the next steps + return files.map(file => file.filename); + id: get-changed-files + + - name: Save changed files to GitHub environment + run: | + echo "CHANGED_FILES=${{ steps.get-changed-files.outputs.result }}" >> $GITHUB_ENV - console.log("event:", context.eventName); - console.log("actor:", context.actor); - console.log("repo:", context.repo); - console.log("SHA:", context.sha); - console.log("payload", context.payload); - console.log("pull_request", context.payload.pull_request); + - name: Display changed files + run: | + echo "Changed files in the PR:" + echo "$CHANGED_FILES" - console.log("=== GitHub Context ==="); - console.log(context); + # - name: test github-script + # uses: actions/github-script@v7 + # with: + # result-encoding: string + # retries: 3 + # retry-exempt-status-codes: 400,401 + # script: | + # # github.rest.issues.createComment({ + # # owner: context.repo.owner, + # # repo: context.repo.repo, + # # issue_number: context.issue.number, + # # body: "Thank you for your contribution! 🚀" + # # }); + - console.log("Repository Info:", context.repo); - console.log("Actor:", context.actor); - console.log("Event Name:", context.eventName); - console.log("Payload:", context.payload); - console.log("Run ID:", context.runId); - console.log("Run Number:", context.runNumber); - console.log("SHA:", context.sha); - console.log("Ref:", context.ref); - console.log("Workflow:", context.workflow); - console.log("Job:", context.job); - env: - GITHUB_TOKEN: ${{ secrets.SPEC_REPO_TOKEN }} + # # const script = require('.github/actions/handle-suppressions/suppressions.js') + # # await script({github, context, core}) + + # console.log("event:", context.eventName); + # console.log("actor:", context.actor); + # console.log("repo:", context.repo); + # console.log("SHA:", context.sha); + # console.log("payload", context.payload); + # console.log("pull_request", context.payload.pull_request); + + + # console.log("=== GitHub Context ==="); + # console.log(context); + + # console.log("Repository Info:", context.repo); + # console.log("Actor:", context.actor); + # console.log("Event Name:", context.eventName); + # console.log("Payload:", context.payload); + # console.log("Run ID:", context.runId); + # console.log("Run Number:", context.runNumber); + # console.log("SHA:", context.sha); + # console.log("Ref:", context.ref); + # console.log("Workflow:", context.workflow); + # console.log("Job:", context.job); + # env: + # GITHUB_TOKEN: ${{ secrets.SPEC_REPO_TOKEN }} - name: Set up Node.js uses: actions/setup-node@v4 From 1801f09fdefeab3caff58acd8a0f0ed52b089e8f Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 02:21:08 +0800 Subject: [PATCH 018/190] find path content --- .github/workflows/SDK-Suppressions-Label.yaml | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 68aa3fca833a..50d3b3226dfa 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -98,6 +98,49 @@ jobs: return files.map(file => file.filename); id: get-changed-files +# // Filter files by regexp +# const filteredFiles = files.filter(file => regex.test(file.filename)); + +# if (filteredFiles.length === 0) { +# console.log("No files matched the regexp."); +# } + +# // Fetch content of filtered files from head and base branches +# const fileContents = await Promise.all(filteredFiles.map(async (file) => { +# // Get content from the base branch (target branch of the PR) +# const baseContent = await github.rest.repos.getContent({ +# owner: context.repo.owner, +# repo: context.repo.repo, +# path: file.filename, +# ref: context.payload.pull_request.base.sha, // base branch SHA +# }).catch(() => null); // In case the file does not exist on the base branch + +# // Get content from the head branch (source branch of the PR) +# const headContent = await github.rest.repos.getContent({ +# owner: context.repo.owner, +# repo: context.repo.repo, +# path: file.filename, +# ref: context.payload.pull_request.head.sha, // head branch SHA +# }).catch(() => null); // In case the file does not exist on the head branch + +# return { +# file: file.filename, +# baseContent: baseContent ? baseContent.data : null, +# headContent: headContent ? headContent.data : null, +# }; +# })); + +# // Log the content differences or the file contents +# fileContents.forEach(({ file, baseContent, headContent }) => { +# console.log(`File: ${file}`); +# console.log(`Base Content (from ${context.payload.pull_request.base.ref}):`, baseContent); +# console.log(`Head Content (from ${context.payload.pull_request.head.ref}):`, headContent); +# }); + +# return fileContents; // Return the file contents for further processing if needed +# id: fetch-files + + - name: Save changed files to GitHub environment run: | echo "CHANGED_FILES=${{ steps.get-changed-files.outputs.result }}" >> $GITHUB_ENV From 9b2c6575602fe265fcfb33c9c75fbfed1d6e7ce3 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 11:17:28 +0800 Subject: [PATCH 019/190] add new test --- .../SDK-Suppressions-Label-test1.yaml | 248 ++++++++++++++++++ .github/workflows/SDK-Suppressions-Label.yaml | 96 +++---- 2 files changed, 278 insertions(+), 66 deletions(-) create mode 100644 .github/workflows/SDK-Suppressions-Label-test1.yaml diff --git a/.github/workflows/SDK-Suppressions-Label-test1.yaml b/.github/workflows/SDK-Suppressions-Label-test1.yaml new file mode 100644 index 000000000000..09b372754834 --- /dev/null +++ b/.github/workflows/SDK-Suppressions-Label-test1.yaml @@ -0,0 +1,248 @@ +name: breakingchange suppressions label Workflow + +on: + pull_request: + branches: + - jacktn/suppression-action + types: + - opened + - synchronize + - reopened + + workflow_dispatch: + +env: + script_result: '' + +jobs: + manage_sdk_suppressions_labels: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + # - name: Set Label + # uses: actions/github-script@v7 + # env: + # OWNER: ${{ inputs.owner }} + # REPO: ${{ inputs.repo }} + # ISSUE_NUMBER: ${{ inputs.issue_number }} + # RUN_ID: ${{ inputs.run_id }} + # with: + # script: | + # const action = require('./.github/actions/update-labels/action.js') + # await action({ github, context, core }); + - name: Set color + id: color-selector + run: echo "SELECTED_COLOR=green" >> "$GITHUB_OUTPUT" + - name: Get color + env: + SELECTED_COLOR: ${{ steps.color-selector.outputs.SELECTED_COLOR }} + run: echo "The selected color is $SELECTED_COLOR" + + - name: get GitHub pr info + uses: actions/github-script@v7 + id: fetch-pr-info + with: + script: | + const pr = context.payload.pull_request; + const prNumber = pr.number; + const prTitle = pr.title; + const prBaseSha = pr.base.sha; + const prHeadSha = pr.head.sha; + + console.log(`PR Number: ${prNumber}`); + console.log(`PR Title: ${prTitle}`); + console.log(`base sha: ${prBaseSha}`); + console.log(`head sha: ${prHeadSha}`); + + core.setOutput("prNumber", prNumber); + core.setOutput("prTitle", prTitle); + + return { prNumber, prTitle, prBaseSha, prHeadSha }; + result-encoding: string + + - name: save GitHub env + run: | + echo "PR_NUMBER=${{ steps.fetch-pr-info.outputs.prNumber }}" >> $GITHUB_ENV + echo "PR_TITLE=${{ steps.fetch-pr-info.outputs.prTitle }}" >> $GITHUB_ENV + echo "PR_BASE_SHA=${{ steps.fetch-pr-info.outputs.prBaseSha }}" >> $GITHUB_ENV + echo "PR_HEAD_SHA=${{ steps.fetch-pr-info.outputs.prHeadSha }}" >> $GITHUB_ENV + + - name: test GitHub env + run: | + echo "Pull Request Number: $PR_NUMBER" + echo "Pull Request Title: $PR_TITLE" + echo "Pull Request base: $PR_BASE_SHA" + echo "Pull Request head: $PR_HEAD_SHA" + + - name: Use GitHub Script to get changed files + uses: actions/github-script@v7 + with: + script: | + const prNumber = context.payload.pull_request.number; // Get PR number from context + + // Get changed files in the PR + const { data: files } = await github.rest.pulls.listFiles({ + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: prNumber, + }); + + // Log changed files + console.log(`Changed files in PR #${prNumber}:`); + files.forEach(file => { + console.log(`- ${file.filename} (status: ${file.status})`); + }); + + // Optionally return the list of files to be used in the next steps + return files.map(file => file.filename); + id: get-changed-files + +# // Filter files by regexp +# const filteredFiles = files.filter(file => regex.test(file.filename)); + +# if (filteredFiles.length === 0) { +# console.log("No files matched the regexp."); +# } + +# // Fetch content of filtered files from head and base branches +# const fileContents = await Promise.all(filteredFiles.map(async (file) => { +# // Get content from the base branch (target branch of the PR) +# const baseContent = await github.rest.repos.getContent({ +# owner: context.repo.owner, +# repo: context.repo.repo, +# path: file.filename, +# ref: context.payload.pull_request.base.sha, // base branch SHA +# }).catch(() => null); // In case the file does not exist on the base branch + +# // Get content from the head branch (source branch of the PR) +# const headContent = await github.rest.repos.getContent({ +# owner: context.repo.owner, +# repo: context.repo.repo, +# path: file.filename, +# ref: context.payload.pull_request.head.sha, // head branch SHA +# }).catch(() => null); // In case the file does not exist on the head branch + +# return { +# file: file.filename, +# baseContent: baseContent ? baseContent.data : null, +# headContent: headContent ? headContent.data : null, +# }; +# })); + +# // Log the content differences or the file contents +# fileContents.forEach(({ file, baseContent, headContent }) => { +# console.log(`File: ${file}`); +# console.log(`Base Content (from ${context.payload.pull_request.base.ref}):`, baseContent); +# console.log(`Head Content (from ${context.payload.pull_request.head.ref}):`, headContent); +# }); + +# return fileContents; // Return the file contents for further processing if needed +# id: fetch-files + + + - name: Save changed files to GitHub environment + run: | + echo "CHANGED_FILES=${{ steps.get-changed-files.outputs.result }}" >> $GITHUB_ENV + + - name: Display changed files + run: | + echo "Changed files in the PR:" + echo "$CHANGED_FILES" + + + # - name: test github-script + # uses: actions/github-script@v7 + # with: + # result-encoding: string + # retries: 3 + # retry-exempt-status-codes: 400,401 + # script: | + # # github.rest.issues.createComment({ + # # owner: context.repo.owner, + # # repo: context.repo.repo, + # # issue_number: context.issue.number, + # # body: "Thank you for your contribution! 🚀" + # # }); + + + # # const script = require('.github/actions/handle-suppressions/suppressions.js') + # # await script({github, context, core}) + + # console.log("event:", context.eventName); + # console.log("actor:", context.actor); + # console.log("repo:", context.repo); + # console.log("SHA:", context.sha); + # console.log("payload", context.payload); + # console.log("pull_request", context.payload.pull_request); + + + # console.log("=== GitHub Context ==="); + # console.log(context); + + # console.log("Repository Info:", context.repo); + # console.log("Actor:", context.actor); + # console.log("Event Name:", context.eventName); + # console.log("Payload:", context.payload); + # console.log("Run ID:", context.runId); + # console.log("Run Number:", context.runNumber); + # console.log("SHA:", context.sha); + # console.log("Ref:", context.ref); + # console.log("Workflow:", context.workflow); + # console.log("Job:", context.job); + # env: + # GITHUB_TOKEN: ${{ secrets.SPEC_REPO_TOKEN }} + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + + # - name: Print GitHub Context + # run: | + # echo "GitHub Context: ${{ toJson(github.event) }}" + + # - name: Run the script + # run: node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js + - name: Run Node.js script + id: run-script + run: | + # echo "GITHUB_PULL_REQUEST_BASE_REPO_OWNER=${{ github.event.pull_request.base.repo.owner.login }}" >> $GITHUB_ENV + # echo "GITHUB_PULL_REQUEST_BASE_REPO_NAME=${{ github.event.pull_request.base.repo.name }}" >> $GITHUB_ENV + # echo "GITHUB_PULL_REQUEST_HEAD_REPO_OWNER=${{ github.event.pull_request.head.repo.owner.login }}" >> $GITHUB_ENV + # echo "GITHUB_PULL_REQUEST_HEAD_REPO_NAME=${{ github.event.pull_request.head.repo.name }}" >> $GITHUB_ENV + # echo "GITHUB_PULL_REQUEST_NUMBER=${{ github.event.pull_request.number }}" >> $GITHUB_ENV + + echo "GITHUB_EVENT_NAME=${{ github.event_name }}" >> $GITHUB_ENV + + echo "GITHUB_HEAD_REF=${{ github.head_ref }}" >> $GITHUB_ENV + echo "GITHUB_BASE_REF=${{ github.base_ref }}" >> $GITHUB_ENV + echo "GITHUB_PR_NUMBER=${{ github.event.pull_request.number }}" >> $GITHUB_ENV + echo "GITHUB_PR_REF=${{ github.ref }}" >> $GITHUB_ENV + echo "GITHUB_PR_REF_NAME=${{ github.ref_name }}" >> $GITHUB_ENV + echo "GITHUB_PR_RUN_NUMBER=${{ github.run_number }}" >> $GITHUB_ENV + + node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js + OUTPUT=$(cat output.json) + echo "Script JSON Output: $OUTPUT" + echo "script_result=$OUTPUT" >> $GITHUB_ENV + + - name: Write all JSON content + run: | + echo "Entire JSON content:" + echo "${{ env.script_result }}" + + # - name: Run Manage-SDKSuppression-Label script from file + # run: | + # .\scripts\Manage-SDKSuppression-Label.ps1 + # env: + # GITHUB_EVENT_PULL_REQUEST_BASE_REPO_OWNER: ${{ github.event.pull_request.base.repo.owner.login }} + # GITHUB_EVENT_PULL_REQUEST_BASE_REPO_NAME: ${{ github.event.pull_request.base.repo.name }} + # GITHUB_EVENT_PULL_REQUEST_BASE_REF: ${{ github.event.pull_request.base.ref }} + # GITHUB_EVENT_PULL_REQUEST_HEAD_REPO_OWNER: ${{ github.event.pull_request.head.repo.owner.login }} + # GITHUB_EVENT_PULL_REQUEST_HEAD_REPO_NAME: ${{ github.event.pull_request.head.repo.name }} + # GITHUB_EVENT_PULL_REQUEST_HEAD_REF: ${{ github.event.pull_request.head.ref }} + # GITHUB_EVENT_PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }} + # GITHUB_TOKEN: ${{ secrets.TOKEN }} \ No newline at end of file diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 50d3b3226dfa..c39fbac0ad24 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -22,25 +22,6 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - # - name: Set Label - # uses: actions/github-script@v7 - # env: - # OWNER: ${{ inputs.owner }} - # REPO: ${{ inputs.repo }} - # ISSUE_NUMBER: ${{ inputs.issue_number }} - # RUN_ID: ${{ inputs.run_id }} - # with: - # script: | - # const action = require('./.github/actions/update-labels/action.js') - # await action({ github, context, core }); - - name: Set color - id: color-selector - run: echo "SELECTED_COLOR=green" >> "$GITHUB_OUTPUT" - - name: Get color - env: - SELECTED_COLOR: ${{ steps.color-selector.outputs.SELECTED_COLOR }} - run: echo "The selected color is $SELECTED_COLOR" - - name: get GitHub pr info uses: actions/github-script@v7 id: fetch-pr-info @@ -88,59 +69,42 @@ jobs: pull_number: prNumber, }); - // Log changed files - console.log(`Changed files in PR #${prNumber}:`); - files.forEach(file => { - console.log(`- ${file.filename} (status: ${file.status})`); + // Fetch content of filtered files from head and base branches + const fileContents = await Promise.all(files.map(async (file) => { + // Get content from the base branch (target branch of the PR) + const baseContent = await github.rest.repos.getContent({ + owner: context.repo.owner, + repo: context.repo.repo, + path: file.filename, + ref: context.payload.pull_request.base.sha, // base branch SHA + }).catch(() => null); // In case the file does not exist on the base branch + + // Get content from the head branch (source branch of the PR) + const headContent = await github.rest.repos.getContent({ + owner: context.repo.owner, + repo: context.repo.repo, + path: file.filename, + ref: context.payload.pull_request.head.sha, // head branch SHA + }).catch(() => null); // In case the file does not exist on the head branch + + return { + file: file.filename, + baseContent: baseContent ? baseContent.data : null, + headContent: headContent ? headContent.data : null, + }; + })); + + // Log the content differences or the file contents + fileContents.forEach(({ file, baseContent, headContent }) => { + console.log(`File: ${file}`); + console.log(`Base Content (from ${context.payload.pull_request.base.ref}):`, baseContent); + console.log(`Head Content (from ${context.payload.pull_request.head.ref}):`, headContent); }); // Optionally return the list of files to be used in the next steps return files.map(file => file.filename); id: get-changed-files -# // Filter files by regexp -# const filteredFiles = files.filter(file => regex.test(file.filename)); - -# if (filteredFiles.length === 0) { -# console.log("No files matched the regexp."); -# } - -# // Fetch content of filtered files from head and base branches -# const fileContents = await Promise.all(filteredFiles.map(async (file) => { -# // Get content from the base branch (target branch of the PR) -# const baseContent = await github.rest.repos.getContent({ -# owner: context.repo.owner, -# repo: context.repo.repo, -# path: file.filename, -# ref: context.payload.pull_request.base.sha, // base branch SHA -# }).catch(() => null); // In case the file does not exist on the base branch - -# // Get content from the head branch (source branch of the PR) -# const headContent = await github.rest.repos.getContent({ -# owner: context.repo.owner, -# repo: context.repo.repo, -# path: file.filename, -# ref: context.payload.pull_request.head.sha, // head branch SHA -# }).catch(() => null); // In case the file does not exist on the head branch - -# return { -# file: file.filename, -# baseContent: baseContent ? baseContent.data : null, -# headContent: headContent ? headContent.data : null, -# }; -# })); - -# // Log the content differences or the file contents -# fileContents.forEach(({ file, baseContent, headContent }) => { -# console.log(`File: ${file}`); -# console.log(`Base Content (from ${context.payload.pull_request.base.ref}):`, baseContent); -# console.log(`Head Content (from ${context.payload.pull_request.head.ref}):`, headContent); -# }); - -# return fileContents; // Return the file contents for further processing if needed -# id: fetch-files - - - name: Save changed files to GitHub environment run: | echo "CHANGED_FILES=${{ steps.get-changed-files.outputs.result }}" >> $GITHUB_ENV From da68760c88c29730f8b39b084397956eeb50462d Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 12:01:20 +0800 Subject: [PATCH 020/190] add new return --- .../SDK-Suppressions-Label-test1.yaml | 56 ++++--------------- .github/workflows/SDK-Suppressions-Label.yaml | 50 +---------------- 2 files changed, 12 insertions(+), 94 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label-test1.yaml b/.github/workflows/SDK-Suppressions-Label-test1.yaml index 09b372754834..eb4311b4df08 100644 --- a/.github/workflows/SDK-Suppressions-Label-test1.yaml +++ b/.github/workflows/SDK-Suppressions-Label-test1.yaml @@ -1,4 +1,4 @@ -name: breakingchange suppressions label Workflow +name: breakingchange suppressions label Workflow Test on: pull_request: @@ -15,7 +15,7 @@ env: script_result: '' jobs: - manage_sdk_suppressions_labels: + manage_sdk_suppressions_labels_test: runs-on: ubuntu-latest steps: @@ -51,16 +51,21 @@ jobs: const prTitle = pr.title; const prBaseSha = pr.base.sha; const prHeadSha = pr.head.sha; + const prlabels = pr.labels; console.log(`PR Number: ${prNumber}`); console.log(`PR Title: ${prTitle}`); console.log(`base sha: ${prBaseSha}`); console.log(`head sha: ${prHeadSha}`); + console.log(`labels: ${prlabels}`); core.setOutput("prNumber", prNumber); core.setOutput("prTitle", prTitle); + core.setOutput("prBaseSha", prBaseSha); + core.setOutput("prHeadSha", prHeadSha); + core.setOutput("prLabels", prlabels); - return { prNumber, prTitle, prBaseSha, prHeadSha }; + return { prNumber, prTitle }; result-encoding: string - name: save GitHub env @@ -69,6 +74,7 @@ jobs: echo "PR_TITLE=${{ steps.fetch-pr-info.outputs.prTitle }}" >> $GITHUB_ENV echo "PR_BASE_SHA=${{ steps.fetch-pr-info.outputs.prBaseSha }}" >> $GITHUB_ENV echo "PR_HEAD_SHA=${{ steps.fetch-pr-info.outputs.prHeadSha }}" >> $GITHUB_ENV + echo "PR_LABELS=${{ steps.fetch-pr-info.outputs.prlabels }}" >> $GITHUB_ENV - name: test GitHub env run: | @@ -76,6 +82,7 @@ jobs: echo "Pull Request Title: $PR_TITLE" echo "Pull Request base: $PR_BASE_SHA" echo "Pull Request head: $PR_HEAD_SHA" + echo "Pull Request head: $PR_LABELS" - name: Use GitHub Script to get changed files uses: actions/github-script@v7 @@ -100,49 +107,6 @@ jobs: return files.map(file => file.filename); id: get-changed-files -# // Filter files by regexp -# const filteredFiles = files.filter(file => regex.test(file.filename)); - -# if (filteredFiles.length === 0) { -# console.log("No files matched the regexp."); -# } - -# // Fetch content of filtered files from head and base branches -# const fileContents = await Promise.all(filteredFiles.map(async (file) => { -# // Get content from the base branch (target branch of the PR) -# const baseContent = await github.rest.repos.getContent({ -# owner: context.repo.owner, -# repo: context.repo.repo, -# path: file.filename, -# ref: context.payload.pull_request.base.sha, // base branch SHA -# }).catch(() => null); // In case the file does not exist on the base branch - -# // Get content from the head branch (source branch of the PR) -# const headContent = await github.rest.repos.getContent({ -# owner: context.repo.owner, -# repo: context.repo.repo, -# path: file.filename, -# ref: context.payload.pull_request.head.sha, // head branch SHA -# }).catch(() => null); // In case the file does not exist on the head branch - -# return { -# file: file.filename, -# baseContent: baseContent ? baseContent.data : null, -# headContent: headContent ? headContent.data : null, -# }; -# })); - -# // Log the content differences or the file contents -# fileContents.forEach(({ file, baseContent, headContent }) => { -# console.log(`File: ${file}`); -# console.log(`Base Content (from ${context.payload.pull_request.base.ref}):`, baseContent); -# console.log(`Head Content (from ${context.payload.pull_request.head.ref}):`, headContent); -# }); - -# return fileContents; // Return the file contents for further processing if needed -# id: fetch-files - - - name: Save changed files to GitHub environment run: | echo "CHANGED_FILES=${{ steps.get-changed-files.outputs.result }}" >> $GITHUB_ENV diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index c39fbac0ad24..1ab115ee06b7 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -102,7 +102,8 @@ jobs: }); // Optionally return the list of files to be used in the next steps - return files.map(file => file.filename); + // return files.map(file => file.filename); + return {baseContent, headContent} id: get-changed-files - name: Save changed files to GitHub environment @@ -114,58 +115,11 @@ jobs: echo "Changed files in the PR:" echo "$CHANGED_FILES" - - # - name: test github-script - # uses: actions/github-script@v7 - # with: - # result-encoding: string - # retries: 3 - # retry-exempt-status-codes: 400,401 - # script: | - # # github.rest.issues.createComment({ - # # owner: context.repo.owner, - # # repo: context.repo.repo, - # # issue_number: context.issue.number, - # # body: "Thank you for your contribution! 🚀" - # # }); - - - # # const script = require('.github/actions/handle-suppressions/suppressions.js') - # # await script({github, context, core}) - - # console.log("event:", context.eventName); - # console.log("actor:", context.actor); - # console.log("repo:", context.repo); - # console.log("SHA:", context.sha); - # console.log("payload", context.payload); - # console.log("pull_request", context.payload.pull_request); - - - # console.log("=== GitHub Context ==="); - # console.log(context); - - # console.log("Repository Info:", context.repo); - # console.log("Actor:", context.actor); - # console.log("Event Name:", context.eventName); - # console.log("Payload:", context.payload); - # console.log("Run ID:", context.runId); - # console.log("Run Number:", context.runNumber); - # console.log("SHA:", context.sha); - # console.log("Ref:", context.ref); - # console.log("Workflow:", context.workflow); - # console.log("Job:", context.job); - # env: - # GITHUB_TOKEN: ${{ secrets.SPEC_REPO_TOKEN }} - - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: '20' - # - name: Print GitHub Context - # run: | - # echo "GitHub Context: ${{ toJson(github.event) }}" - # - name: Run the script # run: node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js - name: Run Node.js script From 23eda209cfb5ecbbfb971a1c194f53fd4526dcf8 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 12:09:06 +0800 Subject: [PATCH 021/190] fix bug --- .github/workflows/SDK-Suppressions-Label-test1.yaml | 11 ++++++----- .github/workflows/SDK-Suppressions-Label.yaml | 6 +++--- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label-test1.yaml b/.github/workflows/SDK-Suppressions-Label-test1.yaml index eb4311b4df08..bd0efbd4f6a9 100644 --- a/.github/workflows/SDK-Suppressions-Label-test1.yaml +++ b/.github/workflows/SDK-Suppressions-Label-test1.yaml @@ -57,13 +57,14 @@ jobs: console.log(`PR Title: ${prTitle}`); console.log(`base sha: ${prBaseSha}`); console.log(`head sha: ${prHeadSha}`); + prlabels.map(file => console.log(file.filename)); console.log(`labels: ${prlabels}`); - core.setOutput("prNumber", prNumber); - core.setOutput("prTitle", prTitle); - core.setOutput("prBaseSha", prBaseSha); - core.setOutput("prHeadSha", prHeadSha); - core.setOutput("prLabels", prlabels); + # core.setOutput("prNumber", prNumber); + # core.setOutput("prTitle", prTitle); + # core.setOutput("prBaseSha", prBaseSha); + # core.setOutput("prHeadSha", prHeadSha); + # core.setOutput("prLabels", prlabels); return { prNumber, prTitle }; result-encoding: string diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 1ab115ee06b7..211f6b1b8866 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -38,8 +38,8 @@ jobs: console.log(`PR Number: ${prNumber}`); console.log(`PR Title: ${prTitle}`); - core.setOutput("prNumber", prNumber); - core.setOutput("prTitle", prTitle); + // core.setOutput("prNumber", prNumber); + // core.setOutput("prTitle", prTitle); return { prNumber, prTitle }; result-encoding: string @@ -103,7 +103,7 @@ jobs: // Optionally return the list of files to be used in the next steps // return files.map(file => file.filename); - return {baseContent, headContent} + return fileContents.map(file => file.baseContent); id: get-changed-files - name: Save changed files to GitHub environment From 5c9ff47847d80375fd0e2a1f5a32448a020ca810 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 12:23:43 +0800 Subject: [PATCH 022/190] refactor env --- .../SDK-Suppressions-Label-test1.yaml | 35 ++++++++-- .github/workflows/SDK-Suppressions-Label.yaml | 64 +------------------ 2 files changed, 33 insertions(+), 66 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label-test1.yaml b/.github/workflows/SDK-Suppressions-Label-test1.yaml index bd0efbd4f6a9..fb3872fdd166 100644 --- a/.github/workflows/SDK-Suppressions-Label-test1.yaml +++ b/.github/workflows/SDK-Suppressions-Label-test1.yaml @@ -98,10 +98,36 @@ jobs: pull_number: prNumber, }); - // Log changed files - console.log(`Changed files in PR #${prNumber}:`); - files.forEach(file => { - console.log(`- ${file.filename} (status: ${file.status})`); + // Fetch content of filtered files from head and base branches + const fileContents = await Promise.all(files.map(async (file) => { + // Get content from the base branch (target branch of the PR) + const baseContent = await github.rest.repos.getContent({ + owner: context.repo.owner, + repo: context.repo.repo, + path: file.filename, + ref: context.payload.pull_request.base.sha, // base branch SHA + }).catch(() => null); // In case the file does not exist on the base branch + + // Get content from the head branch (source branch of the PR) + const headContent = await github.rest.repos.getContent({ + owner: context.repo.owner, + repo: context.repo.repo, + path: file.filename, + ref: context.payload.pull_request.head.sha, // head branch SHA + }).catch(() => null); // In case the file does not exist on the head branch + + return { + file: file.filename, + baseContent: baseContent ? baseContent.data : null, + headContent: headContent ? headContent.data : null, + }; + })); + + // Log the content differences or the file contents + fileContents.forEach(({ file, baseContent, headContent }) => { + console.log(`File: ${file}`); + console.log(`Base Content (from ${context.payload.pull_request.base.ref}):`, baseContent); + console.log(`Head Content (from ${context.payload.pull_request.head.ref}):`, headContent); }); // Optionally return the list of files to be used in the next steps @@ -117,7 +143,6 @@ jobs: echo "Changed files in the PR:" echo "$CHANGED_FILES" - # - name: test github-script # uses: actions/github-script@v7 # with: diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 211f6b1b8866..f79c09f3a669 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -38,10 +38,10 @@ jobs: console.log(`PR Number: ${prNumber}`); console.log(`PR Title: ${prTitle}`); - // core.setOutput("prNumber", prNumber); - // core.setOutput("prTitle", prTitle); + core.setOutput("prNumber", prNumber); + core.setOutput("prTitle", prTitle); - return { prNumber, prTitle }; + // return { prNumber, prTitle }; result-encoding: string - name: save GitHub env @@ -56,64 +56,6 @@ jobs: echo "Pull Request Number: $PR_NUMBER" echo "Pull Request Title: $PR_TITLE" - - name: Use GitHub Script to get changed files - uses: actions/github-script@v7 - with: - script: | - const prNumber = context.payload.pull_request.number; // Get PR number from context - - // Get changed files in the PR - const { data: files } = await github.rest.pulls.listFiles({ - owner: context.repo.owner, - repo: context.repo.repo, - pull_number: prNumber, - }); - - // Fetch content of filtered files from head and base branches - const fileContents = await Promise.all(files.map(async (file) => { - // Get content from the base branch (target branch of the PR) - const baseContent = await github.rest.repos.getContent({ - owner: context.repo.owner, - repo: context.repo.repo, - path: file.filename, - ref: context.payload.pull_request.base.sha, // base branch SHA - }).catch(() => null); // In case the file does not exist on the base branch - - // Get content from the head branch (source branch of the PR) - const headContent = await github.rest.repos.getContent({ - owner: context.repo.owner, - repo: context.repo.repo, - path: file.filename, - ref: context.payload.pull_request.head.sha, // head branch SHA - }).catch(() => null); // In case the file does not exist on the head branch - - return { - file: file.filename, - baseContent: baseContent ? baseContent.data : null, - headContent: headContent ? headContent.data : null, - }; - })); - - // Log the content differences or the file contents - fileContents.forEach(({ file, baseContent, headContent }) => { - console.log(`File: ${file}`); - console.log(`Base Content (from ${context.payload.pull_request.base.ref}):`, baseContent); - console.log(`Head Content (from ${context.payload.pull_request.head.ref}):`, headContent); - }); - - // Optionally return the list of files to be used in the next steps - // return files.map(file => file.filename); - return fileContents.map(file => file.baseContent); - id: get-changed-files - - - name: Save changed files to GitHub environment - run: | - echo "CHANGED_FILES=${{ steps.get-changed-files.outputs.result }}" >> $GITHUB_ENV - - - name: Display changed files - run: | - echo "Changed files in the PR:" - echo "$CHANGED_FILES" - name: Set up Node.js uses: actions/setup-node@v4 From efd658c541fcb7b7c209bc8ee8fafd2821499508 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 12:40:30 +0800 Subject: [PATCH 023/190] fix bug --- .github/workflows/SDK-Suppressions-Label-test1.yaml | 10 +++++----- .github/workflows/SDK-Suppressions-Label.yaml | 13 ------------- 2 files changed, 5 insertions(+), 18 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label-test1.yaml b/.github/workflows/SDK-Suppressions-Label-test1.yaml index fb3872fdd166..721520c04264 100644 --- a/.github/workflows/SDK-Suppressions-Label-test1.yaml +++ b/.github/workflows/SDK-Suppressions-Label-test1.yaml @@ -60,11 +60,11 @@ jobs: prlabels.map(file => console.log(file.filename)); console.log(`labels: ${prlabels}`); - # core.setOutput("prNumber", prNumber); - # core.setOutput("prTitle", prTitle); - # core.setOutput("prBaseSha", prBaseSha); - # core.setOutput("prHeadSha", prHeadSha); - # core.setOutput("prLabels", prlabels); + core.setOutput("prNumber", prNumber); + core.setOutput("prTitle", prTitle); + core.setOutput("prBaseSha", prBaseSha); + core.setOutput("prHeadSha", prHeadSha); + core.setOutput("prLabels", prlabels); return { prNumber, prTitle }; result-encoding: string diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index f79c09f3a669..1aad1ecb23d4 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -91,16 +91,3 @@ jobs: run: | echo "Entire JSON content:" echo "${{ env.script_result }}" - - # - name: Run Manage-SDKSuppression-Label script from file - # run: | - # .\scripts\Manage-SDKSuppression-Label.ps1 - # env: - # GITHUB_EVENT_PULL_REQUEST_BASE_REPO_OWNER: ${{ github.event.pull_request.base.repo.owner.login }} - # GITHUB_EVENT_PULL_REQUEST_BASE_REPO_NAME: ${{ github.event.pull_request.base.repo.name }} - # GITHUB_EVENT_PULL_REQUEST_BASE_REF: ${{ github.event.pull_request.base.ref }} - # GITHUB_EVENT_PULL_REQUEST_HEAD_REPO_OWNER: ${{ github.event.pull_request.head.repo.owner.login }} - # GITHUB_EVENT_PULL_REQUEST_HEAD_REPO_NAME: ${{ github.event.pull_request.head.repo.name }} - # GITHUB_EVENT_PULL_REQUEST_HEAD_REF: ${{ github.event.pull_request.head.ref }} - # GITHUB_EVENT_PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }} - # GITHUB_TOKEN: ${{ secrets.TOKEN }} \ No newline at end of file From d1267c35163c3e9b2ca46dd78afaf051c10d4ced Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 12:56:11 +0800 Subject: [PATCH 024/190] fix bug --- .github/workflows/SDK-Suppressions-Label-test1.yaml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label-test1.yaml b/.github/workflows/SDK-Suppressions-Label-test1.yaml index 721520c04264..9cbfc2141a29 100644 --- a/.github/workflows/SDK-Suppressions-Label-test1.yaml +++ b/.github/workflows/SDK-Suppressions-Label-test1.yaml @@ -57,7 +57,7 @@ jobs: console.log(`PR Title: ${prTitle}`); console.log(`base sha: ${prBaseSha}`); console.log(`head sha: ${prHeadSha}`); - prlabels.map(file => console.log(file.filename)); + prlabels.forEach(file => console.log(file.filename)); console.log(`labels: ${prlabels}`); core.setOutput("prNumber", prNumber); @@ -71,14 +71,18 @@ jobs: - name: save GitHub env run: | + echo "PR_LABELS111='[\"bug\",\"feature\",\"documentation\"]'" >> $GITHUB_ENV + echo "PR_INFO111='{\"number\":123,\"title\":\"Fix issue\",\"author\":\"octocat\"}'" >> $GITHUB_ENV echo "PR_NUMBER=${{ steps.fetch-pr-info.outputs.prNumber }}" >> $GITHUB_ENV echo "PR_TITLE=${{ steps.fetch-pr-info.outputs.prTitle }}" >> $GITHUB_ENV echo "PR_BASE_SHA=${{ steps.fetch-pr-info.outputs.prBaseSha }}" >> $GITHUB_ENV echo "PR_HEAD_SHA=${{ steps.fetch-pr-info.outputs.prHeadSha }}" >> $GITHUB_ENV - echo "PR_LABELS=${{ steps.fetch-pr-info.outputs.prlabels }}" >> $GITHUB_ENV + echo "PR_LABELS='${{ steps.fetch-pr-info.outputs.prlabels }}'" >> $GITHUB_ENV - name: test GitHub env run: | + echo "Pull Request Number t: $PR_LABELS111" + echo "Pull Request Number t: $PR_INFO111" echo "Pull Request Number: $PR_NUMBER" echo "Pull Request Title: $PR_TITLE" echo "Pull Request base: $PR_BASE_SHA" From db90e6ab863d291949437f4c6a6a60c5cab2ae1b Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 13:05:55 +0800 Subject: [PATCH 025/190] fix bug --- .github/workflows/SDK-Suppressions-Label-test1.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label-test1.yaml b/.github/workflows/SDK-Suppressions-Label-test1.yaml index 9cbfc2141a29..c8ae434a6270 100644 --- a/.github/workflows/SDK-Suppressions-Label-test1.yaml +++ b/.github/workflows/SDK-Suppressions-Label-test1.yaml @@ -57,14 +57,14 @@ jobs: console.log(`PR Title: ${prTitle}`); console.log(`base sha: ${prBaseSha}`); console.log(`head sha: ${prHeadSha}`); - prlabels.forEach(file => console.log(file.filename)); - console.log(`labels: ${prlabels}`); + // prlabels.forEach(file => console.log(file.filename)); + // console.log(`labels: ${prlabels}`); core.setOutput("prNumber", prNumber); core.setOutput("prTitle", prTitle); core.setOutput("prBaseSha", prBaseSha); core.setOutput("prHeadSha", prHeadSha); - core.setOutput("prLabels", prlabels); + // core.setOutput("prLabels", prlabels); return { prNumber, prTitle }; result-encoding: string @@ -77,7 +77,7 @@ jobs: echo "PR_TITLE=${{ steps.fetch-pr-info.outputs.prTitle }}" >> $GITHUB_ENV echo "PR_BASE_SHA=${{ steps.fetch-pr-info.outputs.prBaseSha }}" >> $GITHUB_ENV echo "PR_HEAD_SHA=${{ steps.fetch-pr-info.outputs.prHeadSha }}" >> $GITHUB_ENV - echo "PR_LABELS='${{ steps.fetch-pr-info.outputs.prlabels }}'" >> $GITHUB_ENV + # echo "PR_LABELS='${{ steps.fetch-pr-info.outputs.prlabels }}'" >> $GITHUB_ENV - name: test GitHub env run: | From bd848f0c86c7080df683781ada4742b4a9fe26c6 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 13:32:14 +0800 Subject: [PATCH 026/190] fix bug --- .github/workflows/SDK-Suppressions-Label-test1.yaml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label-test1.yaml b/.github/workflows/SDK-Suppressions-Label-test1.yaml index c8ae434a6270..1d7d4d95a864 100644 --- a/.github/workflows/SDK-Suppressions-Label-test1.yaml +++ b/.github/workflows/SDK-Suppressions-Label-test1.yaml @@ -57,14 +57,19 @@ jobs: console.log(`PR Title: ${prTitle}`); console.log(`base sha: ${prBaseSha}`); console.log(`head sha: ${prHeadSha}`); - // prlabels.forEach(file => console.log(file.filename)); - // console.log(`labels: ${prlabels}`); + + // Fetch the labels of the PR + const labels = pr.labels.map(label => label.name); + + // Log the labels + console.log(`PR Labels: ${labels}`); + // Return the labels as a JSON string core.setOutput("prNumber", prNumber); core.setOutput("prTitle", prTitle); core.setOutput("prBaseSha", prBaseSha); core.setOutput("prHeadSha", prHeadSha); - // core.setOutput("prLabels", prlabels); + core.setOutput("prLabels", JSON.stringify(labels)); return { prNumber, prTitle }; result-encoding: string @@ -77,7 +82,7 @@ jobs: echo "PR_TITLE=${{ steps.fetch-pr-info.outputs.prTitle }}" >> $GITHUB_ENV echo "PR_BASE_SHA=${{ steps.fetch-pr-info.outputs.prBaseSha }}" >> $GITHUB_ENV echo "PR_HEAD_SHA=${{ steps.fetch-pr-info.outputs.prHeadSha }}" >> $GITHUB_ENV - # echo "PR_LABELS='${{ steps.fetch-pr-info.outputs.prlabels }}'" >> $GITHUB_ENV + echo "PR_LABELS=${{ steps.fetch-pr-info.outputs.prlabels }}" >> $GITHUB_ENV - name: test GitHub env run: | From dda9b71b58f354173ce202056d7ccb7c90060e22 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 15:43:10 +0800 Subject: [PATCH 027/190] fix bug --- .github/workflows/SDK-Suppressions-Label.yaml | 55 +++++++++---------- .../cmd/sdk-suppressions-label.js | 3 +- 2 files changed, 27 insertions(+), 31 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 1aad1ecb23d4..17a69a1c567c 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -22,45 +22,40 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: get GitHub pr info + - name: Get GitHub pr info uses: actions/github-script@v7 id: fetch-pr-info with: script: | const pr = context.payload.pull_request; - const prNumber = pr.number; - const prTitle = pr.title; - - console.log("event:", context.eventName); - console.log("actor:", context.actor); - console.log("pull_request", context.payload.pull_request); - - console.log(`PR Number: ${prNumber}`); - console.log(`PR Title: ${prTitle}`); - - core.setOutput("prNumber", prNumber); - core.setOutput("prTitle", prTitle); - - // return { prNumber, prTitle }; + if (!pr) { + throw new Error("This workflow must run in the context of a pull request."); + } + console.log("This action trigger by ", context.eventName); + const prInfo = { + number: pr.number, + title: pr.title, + base: { + owner: pr.base.repo.owner.login, + repo: pr.base.repo.name, + branch: pr.base.ref + }, + head: { + owner: pr.head.repo.owner.login, + repo: pr.head.repo.name, + branch: pr.head.ref + }, + labels: pr.labels.map(label => label.name) + }; + return JSON.stringify(prInfo); result-encoding: string - - name: save GitHub env + - name: Set GitHub env run: | - echo "PR_NUMBER=${{ steps.fetch-pr-info.outputs.prNumber }}" >> $GITHUB_ENV - echo "PR_TITLE=${{ steps.fetch-pr-info.outputs.prTitle }}" >> $GITHUB_ENV + echo "PR_NUMBER=${{ steps.fetch-pr-info.outputs.result }}" >> $GITHUB_ENV - - name: test GitHub env - run: | - echo "Pull Request Number: ${{ steps.fetch-pr-info.outputs.prNumber }}" - echo "Pull Request Title: ${{ steps.fetch-pr-info.outputs.prTitle }}" - echo "Pull Request Number: $PR_NUMBER" - echo "Pull Request Title: $PR_TITLE" - - - - name: Set up Node.js - uses: actions/setup-node@v4 - with: - node-version: '20' + - name: Setup Node and run `npm ci` + uses: ./.github/actions/setup-node-npm-ci # - name: Run the script # run: node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js diff --git a/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js b/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js index 6b03bdc67a27..7e9b17be02b8 100644 --- a/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js +++ b/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js @@ -28,6 +28,7 @@ console.log(`This workflow ref ${ref} `); console.log(`This workflow ref name ${refName} `); console.log(`This workflow run_number ${run_number} `); - console.log("Ending log"); +return result; + From bd1df5fd33716bc67ff595372476a3830a2e3dce Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 15:46:52 +0800 Subject: [PATCH 028/190] fix bug --- .github/workflows/SDK-Suppressions-Label.yaml | 26 +++++++------------ 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 17a69a1c567c..1402470c97c6 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -52,31 +52,23 @@ jobs: - name: Set GitHub env run: | - echo "PR_NUMBER=${{ steps.fetch-pr-info.outputs.result }}" >> $GITHUB_ENV + echo "PR_INFO=${{ steps.fetch-pr-info.outputs.result }}" >> $GITHUB_ENV + + - name: Verify PR Info + run: | + echo "PR Info: $PR_INFO" - name: Setup Node and run `npm ci` uses: ./.github/actions/setup-node-npm-ci # - name: Run the script # run: node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js - - name: Run Node.js script + - name: Run get suppressions label script id: run-script + env: + PR_INFO: ${{ steps.fetch-pr-info.outputs.result }} run: | - # echo "GITHUB_PULL_REQUEST_BASE_REPO_OWNER=${{ github.event.pull_request.base.repo.owner.login }}" >> $GITHUB_ENV - # echo "GITHUB_PULL_REQUEST_BASE_REPO_NAME=${{ github.event.pull_request.base.repo.name }}" >> $GITHUB_ENV - # echo "GITHUB_PULL_REQUEST_HEAD_REPO_OWNER=${{ github.event.pull_request.head.repo.owner.login }}" >> $GITHUB_ENV - # echo "GITHUB_PULL_REQUEST_HEAD_REPO_NAME=${{ github.event.pull_request.head.repo.name }}" >> $GITHUB_ENV - # echo "GITHUB_PULL_REQUEST_NUMBER=${{ github.event.pull_request.number }}" >> $GITHUB_ENV - - echo "GITHUB_EVENT_NAME=${{ github.event_name }}" >> $GITHUB_ENV - - echo "GITHUB_HEAD_REF=${{ github.head_ref }}" >> $GITHUB_ENV - echo "GITHUB_BASE_REF=${{ github.base_ref }}" >> $GITHUB_ENV - echo "GITHUB_PR_NUMBER=${{ github.event.pull_request.number }}" >> $GITHUB_ENV - echo "GITHUB_PR_REF=${{ github.ref }}" >> $GITHUB_ENV - echo "GITHUB_PR_REF_NAME=${{ github.ref_name }}" >> $GITHUB_ENV - echo "GITHUB_PR_RUN_NUMBER=${{ github.run_number }}" >> $GITHUB_ENV - + echo "PR_INFO=$PR_INFO" node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js OUTPUT=$(cat output.json) echo "Script JSON Output: $OUTPUT" From 10bce10b9ea958febe0279b8d66bd88bef93b7fc Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 17:28:10 +0800 Subject: [PATCH 029/190] add feature --- .github/workflows/SDK-Suppressions-Label.yaml | 48 +- .../cmd/sdk-suppressions-label.js | 35 +- eng/tools/sdk-suppressions/package.json | 29 +- eng/tools/sdk-suppressions/src/common.ts | 49 ++ eng/tools/sdk-suppressions/src/index.ts | 36 ++ eng/tools/sdk-suppressions/src/sdk.ts | 59 ++ .../sdk-suppressions/src/sdkSuppressions.ts | 87 +++ .../src/updateSdkSuppressionsLabel.ts | 594 +++++++++--------- eng/tools/sdk-suppressions/tsconfig.json | 2 +- 9 files changed, 584 insertions(+), 355 deletions(-) create mode 100644 eng/tools/sdk-suppressions/src/common.ts create mode 100644 eng/tools/sdk-suppressions/src/sdk.ts create mode 100644 eng/tools/sdk-suppressions/src/sdkSuppressions.ts diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 1402470c97c6..a0fdcbc96f7d 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -22,9 +22,9 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Get GitHub pr info + - name: Get GitHub PullRequest Context uses: actions/github-script@v7 - id: fetch-pr-info + id: Fetch-PullRequest-Context with: script: | const pr = context.payload.pull_request; @@ -32,31 +32,32 @@ jobs: throw new Error("This workflow must run in the context of a pull request."); } console.log("This action trigger by ", context.eventName); - const prInfo = { + const prContext = { number: pr.number, title: pr.title, + html_url: pr.html_url, base: { owner: pr.base.repo.owner.login, repo: pr.base.repo.name, - branch: pr.base.ref + ref: pr.base.ref }, head: { owner: pr.head.repo.owner.login, repo: pr.head.repo.name, - branch: pr.head.ref + ref: pr.head.ref }, labels: pr.labels.map(label => label.name) }; - return JSON.stringify(prInfo); + return JSON.stringify(prContext); result-encoding: string - - name: Set GitHub env - run: | - echo "PR_INFO=${{ steps.fetch-pr-info.outputs.result }}" >> $GITHUB_ENV + # - name: Set GitHub env + # run: | + # echo "GITHUB_PULL_REQUEST_CONTEXT=${{ steps.Fetch-PullRequest-Context.outputs.result }}" >> $GITHUB_ENV - - name: Verify PR Info - run: | - echo "PR Info: $PR_INFO" + # - name: Verify PR Context + # run: | + # echo "PR Info: $GITHUB_PULL_REQUEST_CONTEXT" - name: Setup Node and run `npm ci` uses: ./.github/actions/setup-node-npm-ci @@ -64,15 +65,24 @@ jobs: # - name: Run the script # run: node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js - name: Run get suppressions label script - id: run-script + id: run-suppressions-script env: - PR_INFO: ${{ steps.fetch-pr-info.outputs.result }} + GITHUB_PULL_REQUEST_CONTEXT: ${{ steps.Fetch-PullRequest-Context.outputs.result }} + GITHUB_TOLEN: ${{ secrets.SPEC_REPO_TOKEN }} run: | - echo "PR_INFO=$PR_INFO" - node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js - OUTPUT=$(cat output.json) - echo "Script JSON Output: $OUTPUT" - echo "script_result=$OUTPUT" >> $GITHUB_ENV + echo "PR_INFO=$GITHUB_PULL_REQUEST_CONTEXT" + + # node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js + # OUTPUT=$(cat output.json) + # echo "Script JSON Output: $OUTPUT" + # echo "script_result=$OUTPUT" >> $GITHUB_ENV + + result=$(node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js) + echo "SCRIPT_OUTPUT=$result" >> $GITHUB_ENV + + # const result = require('eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js'); + # console.log(JSON.stringify(result)); + # echo "SCRIPT_OUTPUT_RESULT=$result" >> $GITHUB_ENV - name: Write all JSON content run: | diff --git a/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js b/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js index 7e9b17be02b8..e2a37e0b5491 100644 --- a/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js +++ b/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js @@ -1,34 +1,5 @@ -const fs = require("fs"); +#!/usr/bin/env node -console.log('test sdk-suppressions-label.js is working 2'); - -const result = { removeLabel: "remove-label", addLabel: "add-label" }; - -fs.writeFileSync("output.json", JSON.stringify(result)); -console.log("JSON output saved to output.json"); - -const prHeaderBranch = process.env.GITHUB_HEAD_REF; // The branch from which the PR is created -const prBaseBranch = process.env.GITHUB_BASE_REF; // The target branch of the PR -const prNumber = process.env.GITHUB_PR_NUMBER; // The PR number - -console.log(` - Pull Request Information: - Header Branch: ${prHeaderBranch} - Base Branch: ${prBaseBranch} - PR Number: ${prNumber}` -); - -const eventName = process.env.GITHUB_EVENT_NAME; -console.log(`This workflow was triggered by the ${eventName} event.`); - -const ref = process.env.GITHUB_PR_REF; -const refName = process.env.GITHUB_PR_REF_NAME; -const run_number = process.env.GITHUB_PR_RUN_NUMBER; -console.log(`This workflow ref ${ref} `); -console.log(`This workflow ref name ${refName} `); -console.log(`This workflow run_number ${run_number} `); - -console.log("Ending log"); - -return result; +import { main } from "../dist/src/index.js"; +await main(); diff --git a/eng/tools/sdk-suppressions/package.json b/eng/tools/sdk-suppressions/package.json index d5910ab2ceb5..494ab91abc2e 100644 --- a/eng/tools/sdk-suppressions/package.json +++ b/eng/tools/sdk-suppressions/package.json @@ -1,12 +1,27 @@ { - "name": "sdk-suppressions", + "name": "@azure-tools/sdk-suppressions", + "private": true, + "type": "module", + "main": "dist/src/index.js", "version": "1.0.0", - "main": "index.js", + "bin": { + "get-sdk-suppressions-label": "cmd/sdk-suppressions-label.js" + }, "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "build": "tsc --build" + }, + "engines": { + "node": ">= 18.0.0" + }, + "dependencies": { + "@octokit/rest": "18.0.3", + "@octokit/types": "^5.4.0", + "ajv": "^6.12.6", + "js-yaml": "^3.14.0", + "lodash": "^4.17.20" }, - "keywords": [], - "author": "", - "license": "ISC", - "description": "" + "devDependencies": { + "@types/js-yaml": "^3.12.5", + "@types/lodash": "^4.14.161" + } } diff --git a/eng/tools/sdk-suppressions/src/common.ts b/eng/tools/sdk-suppressions/src/common.ts new file mode 100644 index 000000000000..7ce2775408da --- /dev/null +++ b/eng/tools/sdk-suppressions/src/common.ts @@ -0,0 +1,49 @@ +import * as YAML from "js-yaml"; + +/** + * @param yamlContent + * @returns {result: string | object | undefined | null, message: string} + * special return + * if the content is empty, return {result: null, message: string + * if the file parse error, return {result: undefined, message: string + */ +export function parseYamlContent(yamlContent: string, path: string): { + result: string | object | undefined | null; + message: string; + } { + let content = undefined; + // if yaml file is not a valid yaml, catch error and return undefined + try { + content = YAML.safeLoad(yamlContent); + } catch (error) { + console.error(`The file parsing failed in the ${path}. Details: ${error}`); + return { + result: content, + message: `The file parsing failed in the ${path}. Details: ${error}` + };; + } + + // if yaml file is empty, run yaml.safeload success but get undefined + // to identify whether it is empty return null to distinguish. + if (!content) { + console.info(`The file in the ${path} has been successfully parsed, but it is an empty file.`) + return { + result: null, + message: `The file in the ${path} has been successfully parsed, but it is an empty file.` + };; + } + + return { + result: content, + message: 'The file has been successfully parsed.' + }; + + } + + export function base64ToString(base64: string): string { + return Buffer.from(base64, "base64").toString(); + }; + + export function stringToBase64(base: string): string { + return Buffer.from(base).toString("base64"); + }; \ No newline at end of file diff --git a/eng/tools/sdk-suppressions/src/index.ts b/eng/tools/sdk-suppressions/src/index.ts index e69de29bb2d1..829535a720cf 100644 --- a/eng/tools/sdk-suppressions/src/index.ts +++ b/eng/tools/sdk-suppressions/src/index.ts @@ -0,0 +1,36 @@ + +import { exit } from "process"; +import { updateSdkSuppressionsLabels, PullRequestContext } from "./updateSdkSuppressionsLabel.js"; + +function getUsage(): string { + return ( + " Usage: npx get-specs-model \n" + + "Returns: JSON metadata for the input file or directory.\n" + + "\n" + + "The input path:\n" + + "- Must be an absolute or relative path to local clone of the https://github.com/Azure/azure-rest-api-specs or https://github.com/Azure/azure-rest-api-specs-pr repo.\n" + + "- Must point to the /specification directory or one of its descendants.\n" + + "\n" + + "Example: npx get-specs-model $HOME/repos/azure-rest-api-specs/specification\n" + + "Returns: JSON with metadata for the entire 'specification' directory of the local clone of 'azure-rest-api-specs' repo.\n" + ); + } + +export async function main() { + const PullRequestContext = process.env.PullRequestContext as unknown as PullRequestContext; + const GITHUB_TOKEN = process.env.GITHUB_TOKEN; + console.log(`PullRequestContext: JSON.stringify(${PullRequestContext})`); + + if (PullRequestContext && GITHUB_TOKEN) { + const changedLabels: {labelsToAdd: String[], labelsToRemove: String[]} = await updateSdkSuppressionsLabels(PullRequestContext, GITHUB_TOKEN); + console.log(JSON.stringify(changedLabels)); + exit(0); + } else { + console.error(getUsage()); + exit(1); + } +} + +export { updateSdkSuppressionsLabels }; + + diff --git a/eng/tools/sdk-suppressions/src/sdk.ts b/eng/tools/sdk-suppressions/src/sdk.ts new file mode 100644 index 000000000000..8d1e3ec2452d --- /dev/null +++ b/eng/tools/sdk-suppressions/src/sdk.ts @@ -0,0 +1,59 @@ +/** + * This file is the single source of truth for the labels used by the SDK generation tooling + * in the Azure/azure-rest-api-specs and Azure/azure-rest-api-specs-pr repositories. + * + * For additional context, see: + * - https://gist.github.com/raych1/353949d19371b69fb82a10dd70032a51 + * - https://github.com/Azure/azure-sdk-tools/issues/6327 + * - https://microsoftapc-my.sharepoint.com/:w:/g/personal/raychen_microsoft_com/EbOAA9SkhQhGlgxtf7mc0kUB-25bFue0EFbXKXS3TFLTQA + */ +export type SdkName = + | "azure-sdk-for-go" + | "azure-sdk-for-java" + | "azure-sdk-for-js" + | "azure-sdk-for-net" + | "azure-sdk-for-python" + +export const sdkLabels: { + [sdkName in SdkName]: { + breakingChange: string | undefined; + breakingChangeApproved: string | undefined; + breakingChangeSuppression: string | undefined; + breakingChangeSuppressionApproved: string | undefined; + }; +} = { + "azure-sdk-for-go": { + breakingChange: "BreakingChange-Go-Sdk", + breakingChangeApproved: "BreakingChange-Go-Sdk-Approved", + breakingChangeSuppression: "BreakingChange-Go-Sdk-Suppression", + breakingChangeSuppressionApproved: + "BreakingChange-Go-Sdk-Suppression-Approved", + }, + "azure-sdk-for-java": { + breakingChange: "BreakingChange-Java-Sdk", + breakingChangeApproved: "BreakingChange-Java-Sdk-Approved", + breakingChangeSuppression: "BreakingChange-Java-Sdk-Suppression", + breakingChangeSuppressionApproved: + "BreakingChange-Java-Sdk-Suppression-Approved" + }, + "azure-sdk-for-js": { + breakingChange: "BreakingChange-JavaScript-Sdk", + breakingChangeApproved: "BreakingChange-JavaScript-Sdk-Approved", + breakingChangeSuppression: "BreakingChange-JavaScript-Sdk-Suppression", + breakingChangeSuppressionApproved: + "BreakingChange-JavaScript-Sdk-Suppression-Approved" + }, + "azure-sdk-for-net": { + breakingChange: undefined, + breakingChangeApproved: undefined, + breakingChangeSuppression: undefined, + breakingChangeSuppressionApproved: undefined + }, + "azure-sdk-for-python": { + breakingChange: "BreakingChange-Python-Sdk", + breakingChangeApproved: "BreakingChange-Python-Sdk-Approved", + breakingChangeSuppression: "BreakingChange-Python-Sdk-Suppression", + breakingChangeSuppressionApproved: + "BreakingChange-Python-Sdk-Suppression-Approved" + } +}; diff --git a/eng/tools/sdk-suppressions/src/sdkSuppressions.ts b/eng/tools/sdk-suppressions/src/sdkSuppressions.ts new file mode 100644 index 000000000000..4ad2a35ebcb3 --- /dev/null +++ b/eng/tools/sdk-suppressions/src/sdkSuppressions.ts @@ -0,0 +1,87 @@ +/** + * This file contains types for the contents of the SDK suppressions file, sdk-suppressions.yml. + * For details, see: + * - https://microsoftapc-my.sharepoint.com/:w:/g/personal/raychen_microsoft_com/EbOAA9SkhQhGlgxtf7mc0kUB-25bFue0EFbXKXS3TFLTQA + */ + +import Ajv from 'ajv'; +import { SdkName, sdkLabels } from "./sdk.js"; + +export const sdkSuppressionsFileName = "sdk-suppressions.yaml"; + +export type SdkSuppressionsYml = { + suppressions: SdkSuppressionsSection; +}; + +export type SdkSuppressionsSection = { + [sdkName in SdkName]?: SdkPackageSuppressionsEntry[]; +}; + +export type SdkPackageSuppressionsEntry = { + package: string; + "breaking-changes": string[]; +}; + +export function validateSdkSuppressionsFile(suppressionContent: string | object | undefined | null): { + result: boolean, + message: string +} { + if (suppressionContent === null) { + return { + result: false, + message: 'This suppression file is a empty file' + }; + } + + if (!suppressionContent) { + return { + result: false, + message: 'This suppression file is not a valid yaml.' + }; + } + + const suppressionFileSchema = { + type: 'object', + properties: { + suppressions: { + type: 'object', + propertyNames: { + enum: Object.keys(sdkLabels) + }, + patternProperties: { + "^.*$": { + type: 'array', + items: { + type: 'object', + properties: { + package: { type: 'string' }, + "breaking-changes": { type: 'array', items: { type: 'string' } } + }, + required: ['package', 'breaking-changes'], + additionalProperties: false + } + } + } + } + }, + required: ['suppressions'], + additionalProperties: false + }; + + const suppressionAjv = new Ajv({ allErrors: true }); + const suppressionAjvCompile = suppressionAjv.compile(suppressionFileSchema); + + const isValid = suppressionAjvCompile(suppressionContent); + + if (isValid) { + return { + result: true, + message: 'This suppression file is a valid yaml.' + }; + } else { + return { + result: false, + message: 'This suppression file is a valid yaml but the schema is wrong: ' + suppressionAjv.errorsText(suppressionAjvCompile.errors, { separator: '\n' }) + }; + } +} diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index f6f0b5cd599b..57dba8d81f2a 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -1,322 +1,324 @@ -// import { Octokit, RestEndpointMethodTypes } from "@octokit/rest"; -// import _ from "lodash"; -// import { -// sdkLabels, -// SdkName, -// SdkSuppressionsYml, -// SdkSuppressionsSection, -// sdkSuppressionsFileName, -// SdkPackageSuppressionsEntry, -// base64ToString, -// parseYamlContent, -// validateSdkSuppressionsFile, -// } from "@azure/swagger-validation-common"; -// import { OctokitResponse, ReposGetContentResponseData } from "@octokit/types"; -// import { PullsGetResponse } from './triggerPipeline'; -// import { updatePullRequestLabels } from '../common/github'; -// import { PullRequestContext } from '../../context'; +import _ from "lodash"; +import { Octokit, RestEndpointMethodTypes } from "@octokit/rest"; +import { OctokitResponse, ReposGetContentResponseData } from "@octokit/types"; +import { sdkLabels, SdkName } from './sdk.js'; +import { + SdkSuppressionsYml, + SdkSuppressionsSection, + sdkSuppressionsFileName, + SdkPackageSuppressionsEntry, + validateSdkSuppressionsFile +} from './sdkSuppressions.js'; +import { + base64ToString, + parseYamlContent, +} from "./common.js"; -// /** -// * -// * @param appClient -// * @param pr -// * @returns SdkName list -// * This part compares the suppression files of the head branch and the base branch. -// * To get the SDK, we need to identify which package name, SDK name, or breaking changes are different and apply the SDK suppression label accordingly in the next step. -// * change details can see at getSdkNamesWithChangedSuppressions function -// * on the other hand that the sdkName list will return an empty array if it does not have a suppression file or if the file is blank. -// */ -// export async function getSdkSuppressionsSdkNames( -// appClient: Octokit, -// pr: PullsGetResponse, -// prCtx: PullRequestContext -// ): Promise { -// const filesChangedPaths: string[] = await listChangedFilePaths(appClient, { -// owner: pr.base.user.login, -// repo: pr.base.repo.name, -// pull_number: pr.number, -// }); -// // Get suppression file list -// let suppressionFileList = filterSuppressionList(filesChangedPaths); +export type PullRequestContext = { + labels: string[]; + number: number; + html_url: string; + head: { + owner: string, + repo: string, + ref: string + }; + base: { + owner: string, + repo: string, + ref: string + }; +} -// let sdkNameList: SdkName[] = []; -// // Get suppression file Content -// if (suppressionFileList.length > 0) { -// for (const suppressionFile of suppressionFileList) { -// logSuppressionFileInfo( -// { -// owner: pr.base.user.login, -// repo: pr.base.repo.name, -// ref: pr.base.ref, -// path: suppressionFile, -// }, -// prCtx -// ); -// let baseSuppressionContent = await getSdkSuppressionsFileContent( -// appClient, -// pr.base.user.login, -// pr.base.repo.name, -// pr.base.ref, -// suppressionFile -// ); -// logSuppressionFileInfo( -// { -// owner: pr.head.user.login, -// repo: pr.head.repo.name, -// ref: pr.head.ref, -// path: suppressionFile, -// }, -// prCtx -// ); -// const headSuppressionContent = await getSdkSuppressionsFileContent( -// appClient, -// pr.head.user.login, -// pr.head.repo.name, -// pr.head.ref, -// suppressionFile -// ); +/** + * + * @param appClient + * @param pr + * @returns SdkName list + * This part compares the suppression files of the head branch and the base branch. + * To get the SDK, we need to identify which package name, SDK name, or breaking changes are different and apply the SDK suppression label accordingly in the next step. + * change details can see at getSdkNamesWithChangedSuppressions function + * on the other hand that the sdkName list will return an empty array if it does not have a suppression file or if the file is blank. + */ +export async function getSdkSuppressionsSdkNames( + appClient: Octokit, + pr: PullRequestContext +): Promise { + // Get changed files paths + const filesChangedPaths: string[] = await listChangedFilePaths(appClient, { + owner: pr.base.owner, + repo: pr.base.repo, + pull_number: pr.number, + }); -// // if the head suppression file is present but anything is wrong like schema error with it return -// const validateSdkSuppressionsFileResult = validateSdkSuppressionsFile(headSuppressionContent).result; -// if (!validateSdkSuppressionsFileResult) { -// return []; -// } -// // if base suppression file does not exist, set it to an empty object but has correct schema -// if (!baseSuppressionContent) { -// baseSuppressionContent = { suppressions: {} }; -// } + // Get suppression file list + let suppressionFileList = filterSuppressionList(filesChangedPaths); -// prCtx.logger.logInfo( -// `updateSdkSuppressionsLabels: PR: ${pr.html_url} Will compare base suppressions content: ${JSON.stringify( -// baseSuppressionContent -// )} and head suppressions content: ${JSON.stringify(headSuppressionContent)} to get different SDK.` -// ); + let sdkNameList: SdkName[] = []; + // Get suppression file Content + if (suppressionFileList.length > 0) { + for (const suppressionFile of suppressionFileList) { + logSuppressionFileInfo( + { + owner: pr.base.owner, + repo: pr.base.repo, + ref: pr.base.ref, + path: suppressionFile, + } + ); + let baseSuppressionContent = await getSdkSuppressionsFileContent( + appClient, + pr.base.owner, + pr.base.repo, + pr.base.ref, + suppressionFile + ); + logSuppressionFileInfo( + { + owner: pr.head.owner, + repo: pr.head.repo, + ref: pr.head.ref, + path: suppressionFile, + } + ); + const headSuppressionContent = await getSdkSuppressionsFileContent( + appClient, + pr.head.owner, + pr.head.repo, + pr.head.ref, + suppressionFile + ); -// sdkNameList = getSdkNamesWithChangedSuppressions( -// headSuppressionContent as SdkSuppressionsYml, -// baseSuppressionContent as SdkSuppressionsYml -// ); -// } -// } + // if the head suppression file is present but anything is wrong like schema error with it return + const validateSdkSuppressionsFileResult = validateSdkSuppressionsFile(headSuppressionContent).result; + if (!validateSdkSuppressionsFileResult) { + return []; + } + // if base suppression file does not exist, set it to an empty object but has correct schema + if (!baseSuppressionContent) { + baseSuppressionContent = { suppressions: {} }; + } -// return [...new Set(sdkNameList)]; -// } + console.log( + `updateSdkSuppressionsLabels: PR: ${pr.html_url} Will compare base suppressions content: ${JSON.stringify( + baseSuppressionContent + )} and head suppressions content: ${JSON.stringify(headSuppressionContent)} to get different SDK.` + ); -// export async function getSdkSuppressionsLabels(appClient: Octokit, pr: PullsGetResponse, prCtx: PullRequestContext): Promise { -// const sdkNameList = await getSdkSuppressionsSdkNames(appClient, pr, prCtx); -// return sdkNameList.map((sdkName) => sdkLabels[sdkName].breakingChangeSuppression) as string[]; -// } + sdkNameList = getSdkNamesWithChangedSuppressions( + headSuppressionContent as SdkSuppressionsYml, + baseSuppressionContent as SdkSuppressionsYml + ); + } + } -// async function getSdkSuppressionsFileContent( -// appClient: Octokit, -// owner: string, -// repo: string, -// ref: string, -// path: string -// ): Promise { -// try { -// const { data: suppressionFileContent }: OctokitResponse = await appClient.repos.getContent({ -// repo, -// owner, -// ref, -// path -// }); -// const suppressionContentString = base64ToString(suppressionFileContent.content); -// return parseYamlContent(suppressionContentString, path).result;; -// } catch (error) { -// console.log(`Not found ${path} in ${owner}/${repo}#${ref}`) -// return null; -// } -// } + return [...new Set(sdkNameList)]; +} -// function getSdksWithSuppressionsDefined(suppressions: SdkSuppressionsSection): SdkName[] { -// return _.keys(suppressions) as SdkName[]; -// } +export async function getSdkSuppressionsLabels(appClient: Octokit, pr: PullRequestContext): Promise { + const sdkNameList = await getSdkSuppressionsSdkNames(appClient, pr); + return sdkNameList.map((sdkName) => sdkLabels[sdkName].breakingChangeSuppression) as string[]; +} -// export function getSdkNamesWithChangedSuppressions( -// headSuppressionFile: SdkSuppressionsYml, -// baseSuppressionFile: SdkSuppressionsYml -// ): SdkName[] { -// let sdkNamesWithChangedSuppressions: SdkName[] = []; +async function getSdkSuppressionsFileContent( + appClient: Octokit, + owner: string, + repo: string, + ref: string, + path: string +): Promise { + try { + const { data: suppressionFileContent }: OctokitResponse = await appClient.repos.getContent({ + repo, + owner, + ref, + path + }); + const suppressionContentString = base64ToString(suppressionFileContent.content); + return parseYamlContent(suppressionContentString, path).result;; + } catch (error) { + console.log(`Not found ${path} in ${owner}/${repo}#${ref}`) + return null; + } +} -// const headSdkSuppressionsSection: SdkSuppressionsSection = headSuppressionFile.suppressions; -// const baseSdkSuppressionsSection: SdkSuppressionsSection = baseSuppressionFile.suppressions; +function getSdksWithSuppressionsDefined(suppressions: SdkSuppressionsSection): SdkName[] { + return _.keys(suppressions) as SdkName[]; +} -// const headSdksWithSuppressions: SdkName[] = getSdksWithSuppressionsDefined(headSdkSuppressionsSection); -// const baseSdksWithSuppressions: SdkName[] = getSdksWithSuppressionsDefined(baseSdkSuppressionsSection); +export function getSdkNamesWithChangedSuppressions( + headSuppressionFile: SdkSuppressionsYml, + baseSuppressionFile: SdkSuppressionsYml +): SdkName[] { + let sdkNamesWithChangedSuppressions: SdkName[] = []; -// if (headSdksWithSuppressions.length === 0) { -// if (baseSdksWithSuppressions.length > 0) { -// sdkNamesWithChangedSuppressions = [...sdkNamesWithChangedSuppressions, ...baseSdksWithSuppressions]; -// } -// } + const headSdkSuppressionsSection: SdkSuppressionsSection = headSuppressionFile.suppressions; + const baseSdkSuppressionsSection: SdkSuppressionsSection = baseSuppressionFile.suppressions; -// // 1. If modify Sdk in SdkSuppressionsSection, add SdkName to sdkNamesWithChangedSuppressions -// const differentSdkNamesWithChangedSuppressions = _.xorWith(headSdksWithSuppressions, baseSdksWithSuppressions, _.isEqual); -// if (differentSdkNamesWithChangedSuppressions.length > 0) { -// sdkNamesWithChangedSuppressions = [...sdkNamesWithChangedSuppressions, ...differentSdkNamesWithChangedSuppressions]; -// } + const headSdksWithSuppressions: SdkName[] = getSdksWithSuppressionsDefined(headSdkSuppressionsSection); + const baseSdksWithSuppressions: SdkName[] = getSdksWithSuppressionsDefined(baseSdkSuppressionsSection); -// // 2. If modify SdkPackageSuppressionsEntry in SdkSuppressionsSection include package name and breaking changes -// // add SdkName to sdkNamesWithChangedSuppressions -// const similarSdkNamesWithChangedSuppressions = _.intersectionWith(headSdksWithSuppressions, baseSdksWithSuppressions); -// similarSdkNamesWithChangedSuppressions.forEach((sdkName: SdkName) => { -// const headSdkPackageSuppressionsEntry = headSdkSuppressionsSection[sdkName] as SdkPackageSuppressionsEntry[]; -// const baseSdkPackageSuppressionsEntry = baseSdkSuppressionsSection[sdkName] as SdkPackageSuppressionsEntry[]; -// // Determine whether packageName has changed -// const differentPackageNamesWithChangedSuppressions = _.xorWith( -// headSdkPackageSuppressionsEntry.map((entry) => entry.package), -// baseSdkPackageSuppressionsEntry.map((entry) => entry.package), -// _.isEqual -// ); -// if (differentPackageNamesWithChangedSuppressions.length > 0) { -// sdkNamesWithChangedSuppressions = [...sdkNamesWithChangedSuppressions, sdkName]; -// return; -// } -// // Determine whether breaking-changes has changed -// headSdkPackageSuppressionsEntry.forEach((headEntry) => { -// const baseEntry = baseSdkPackageSuppressionsEntry.find((entry) => entry.package === headEntry.package); -// if (!baseEntry) { -// sdkNamesWithChangedSuppressions = [...sdkNamesWithChangedSuppressions, sdkName]; -// return; -// } -// if (!_.isEqual(headEntry["breaking-changes"].sort(), baseEntry["breaking-changes"].sort())) { -// sdkNamesWithChangedSuppressions = [...sdkNamesWithChangedSuppressions, sdkName]; -// return; -// } -// }); -// }) + if (headSdksWithSuppressions.length === 0) { + if (baseSdksWithSuppressions.length > 0) { + sdkNamesWithChangedSuppressions = [...sdkNamesWithChangedSuppressions, ...baseSdksWithSuppressions]; + } + } -// return [...new Set(sdkNamesWithChangedSuppressions)]; -// } + // 1. If modify Sdk in SdkSuppressionsSection, add SdkName to sdkNamesWithChangedSuppressions + const differentSdkNamesWithChangedSuppressions = _.xorWith(headSdksWithSuppressions, baseSdksWithSuppressions, _.isEqual); + if (differentSdkNamesWithChangedSuppressions.length > 0) { + sdkNamesWithChangedSuppressions = [...sdkNamesWithChangedSuppressions, ...differentSdkNamesWithChangedSuppressions]; + } -// /** -// * -// * @param appClient -// * @param pr -// * This code segment is responsible for managing the sdk suppression label (e.g. BreakingChange-Go-Sdk-Suppression) for PRs. -// * 1. It applies the label automatically when a PR includes a new suppression file. -// * 2. It removes the label if the PR no longer contains the suppression file. -// * 3. It leaves the label unchanged if the PR already has both the suppression and the suppression approved labels. -// * -// */ -// export async function updateSdkSuppressionsLabels(appClient: Octokit, pr: PullsGetResponse, prCtx: PullRequestContext) { -// const sdkNames = await getSdkSuppressionsSdkNames(appClient, pr, prCtx); -// prCtx.logger.logInfo(`updateSdkSuppressionsLabels: PR: ${pr.html_url} Get the required suppressions label based on compared SDK List ${sdkNames.join(", ")}`); -// const presentLabels = pr.labels.map((label) => label.name); -// // The sdkNames indicates whether any suppression files have been modified. If it is empty -// // then check if the suppression label was previously applied and remove it if so. Otherwise, no action is needed. -// if (sdkNames.length === 0) { -// const sdkSuppressionsLabels = Object.values(sdkLabels).map(sdkName => sdkName.breakingChangeSuppression).filter(breakingChangeSuppressionLabel => breakingChangeSuppressionLabel !== undefined); -// let removeSdkSuppressionsLabels: string[] = []; -// for (let prLabel of presentLabels) { -// if (sdkSuppressionsLabels.includes(prLabel)) { -// const sdkSuppressionsApprovedLabel = Object.values(sdkLabels).find(sdkName => sdkName.breakingChangeSuppression === prLabel)?.breakingChangeSuppressionApproved || ''; -// if (!presentLabels.includes(sdkSuppressionsApprovedLabel)) { -// prCtx.logger.logInfo(`updateSdkSuppressionsLabels: PR: ${pr.html_url} To remove the existed suppression label if there are no difference between head commit and base commit for the suppression content.`); -// removeSdkSuppressionsLabels.push(prLabel); -// } -// } -// } -// if (removeSdkSuppressionsLabels.length > 0) { -// await updatePullRequestLabels( -// appClient, -// { -// owner: pr.base.user.login, -// repo: pr.base.repo.name -// }, -// pr.number, -// [], -// removeSdkSuppressionsLabels -// ) -// prCtx.logger.logInfo(`updateSdkSuppressionsLabels: PR: ${pr.html_url} Remove label: ${removeSdkSuppressionsLabels.join(", ")}`); -// } else { -// prCtx.logger.logInfo(`updateSdkSuppressionsLabels: PR: ${pr.html_url} No Remove label`); -// } -// } else { -// // The presence of sdkNames indicates that the suppression file has changed between the head and base branch. The suppression label should be added if it is missing. -// let addSdkSuppressionsLabels: string[] = []; -// for (let sdkName of sdkNames) { -// const sdkSuppressionsLabel = sdkLabels[sdkName].breakingChangeSuppression || ''; -// if (!presentLabels.includes(sdkSuppressionsLabel)) { -// addSdkSuppressionsLabels.push(sdkSuppressionsLabel); -// } -// } -// if (addSdkSuppressionsLabels.length > 0) { -// await updatePullRequestLabels( -// appClient, -// { -// owner: pr.base.user.login, -// repo: pr.base.repo.name -// }, -// pr.number, -// addSdkSuppressionsLabels, -// [] -// ) -// prCtx.logger.logInfo(`updateSdkSuppressionsLabels: PR: ${pr.html_url} add label: ${addSdkSuppressionsLabels.join(", ")}`); -// } else { -// prCtx.logger.logInfo(`updateSdkSuppressionsLabels: PR: ${pr.html_url} no add label`); -// } -// } -// } + // 2. If modify SdkPackageSuppressionsEntry in SdkSuppressionsSection include package name and breaking changes + // add SdkName to sdkNamesWithChangedSuppressions + const similarSdkNamesWithChangedSuppressions = _.intersectionWith(headSdksWithSuppressions, baseSdksWithSuppressions); + similarSdkNamesWithChangedSuppressions.forEach((sdkName: SdkName) => { + const headSdkPackageSuppressionsEntry = headSdkSuppressionsSection[sdkName] as SdkPackageSuppressionsEntry[]; + const baseSdkPackageSuppressionsEntry = baseSdkSuppressionsSection[sdkName] as SdkPackageSuppressionsEntry[]; + // Determine whether packageName has changed + const differentPackageNamesWithChangedSuppressions = _.xorWith( + headSdkPackageSuppressionsEntry.map((entry) => entry.package), + baseSdkPackageSuppressionsEntry.map((entry) => entry.package), + _.isEqual + ); + if (differentPackageNamesWithChangedSuppressions.length > 0) { + sdkNamesWithChangedSuppressions = [...sdkNamesWithChangedSuppressions, sdkName]; + return; + } + // Determine whether breaking-changes has changed + headSdkPackageSuppressionsEntry.forEach((headEntry) => { + const baseEntry = baseSdkPackageSuppressionsEntry.find((entry) => entry.package === headEntry.package); + if (!baseEntry) { + sdkNamesWithChangedSuppressions = [...sdkNamesWithChangedSuppressions, sdkName]; + return; + } + if (!_.isEqual(headEntry["breaking-changes"].sort(), baseEntry["breaking-changes"].sort())) { + sdkNamesWithChangedSuppressions = [...sdkNamesWithChangedSuppressions, sdkName]; + return; + } + }); + }) -// function logSuppressionFileInfo(pr: { owner: string, repo: string, ref: string, path: string }, prCtx: PullRequestContext) { -// prCtx.logger.logInfo(`updateSdkSuppressionsLabels: Will get suppressions content from ${pr.owner}/${pr.repo}#${pr.ref} for ${pr.path}`); -// } + return [...new Set(sdkNamesWithChangedSuppressions)]; +} -// const listChangedFilePaths = async ( -// github: Octokit, -// args: RestEndpointMethodTypes["pulls"]["listFiles"]["parameters"] -// ): Promise => { -// const changedFiles = await github.paginate("GET /repos/:owner/:repo/pulls/:pull_number/files", args) as { filename: string }[]; +/** + * + * @param appClient + * @param pr + * This code segment is responsible for managing the sdk suppression label (e.g. BreakingChange-Go-Sdk-Suppression) for PRs. + * 1. It applies the label automatically when a PR includes a new suppression file. + * 2. It removes the label if the PR no longer contains the suppression file. + * 3. It leaves the label unchanged if the PR already has both the suppression and the suppression approved labels. + */ +export async function updateSdkSuppressionsLabels(pr: PullRequestContext, GITHUB_TOKEN: string): Promise<{labelsToAdd: String[], labelsToRemove: String[]}> { + const appClient: Octokit = new Octokit({ + auth: GITHUB_TOKEN + }); + const sdkNames = await getSdkSuppressionsSdkNames(appClient, pr); + + console.log(`updateSdkSuppressionsLabels: PR: ${pr.html_url} Get the required suppressions label based on compared SDK List ${sdkNames.join(", ")}`); + let addSdkSuppressionsLabels: string[] = []; + let removeSdkSuppressionsLabels: string[] = []; + const presentLabels = pr.labels; + // The sdkNames indicates whether any suppression files have been modified. If it is empty + // then check if the suppression label was previously applied and remove it if so. Otherwise, no action is needed. + if (sdkNames.length === 0) { + const sdkSuppressionsLabels = Object.values(sdkLabels).map(sdkName => sdkName.breakingChangeSuppression).filter(breakingChangeSuppressionLabel => breakingChangeSuppressionLabel !== undefined); + for (let prLabel of presentLabels) { + if (sdkSuppressionsLabels.includes(prLabel)) { + const sdkSuppressionsApprovedLabel = Object.values(sdkLabels).find(sdkName => sdkName.breakingChangeSuppression === prLabel)?.breakingChangeSuppressionApproved || ''; + if (!presentLabels.includes(sdkSuppressionsApprovedLabel)) { + console.log(`updateSdkSuppressionsLabels: PR: ${pr.html_url} To remove the existed suppression label if there are no difference between head commit and base commit for the suppression content.`); + removeSdkSuppressionsLabels.push(prLabel); + } + } + } + if (removeSdkSuppressionsLabels.length > 0) { + console.log(`updateSdkSuppressionsLabels: PR: ${pr.html_url} Remove label: ${removeSdkSuppressionsLabels.join(", ")}`); + } else { + console.log(`updateSdkSuppressionsLabels: PR: ${pr.html_url} No Remove label`); + } + } else { + // The presence of sdkNames indicates that the suppression file has changed between the head and base branch. The suppression label should be added if it is missing. + + for (let sdkName of sdkNames) { + const sdkSuppressionsLabel = sdkLabels[sdkName].breakingChangeSuppression || ''; + if (!presentLabels.includes(sdkSuppressionsLabel)) { + addSdkSuppressionsLabels.push(sdkSuppressionsLabel); + } + } + if (addSdkSuppressionsLabels.length > 0) { + console.log(`updateSdkSuppressionsLabels: PR: ${pr.html_url} add label: ${addSdkSuppressionsLabels.join(", ")}`); + } else { + console.log(`updateSdkSuppressionsLabels: PR: ${pr.html_url} no add label`); + } + } -// return changedFiles.map(it => it.filename); -// }; + return { + labelsToAdd: addSdkSuppressionsLabels, + labelsToRemove: removeSdkSuppressionsLabels + } +} -// /** -// * -// * @param filesChangedPaths -// * @returns string[] -// * check suppressionFileList is swagger suppression or tsp suppression -// * if the change includes both swagger suppression and tsp suppression, only handle the tsp suppression -// * others keep swagger suppression -// * -// * filter data-plane for swagger suppression and tsp suppression for each service -// */ -// export function filterSuppressionList(filesChangedPaths: string[]): string[] { -// let initialSuppressionFiles = filesChangedPaths.filter((suppressionFile) => -// suppressionFile.split("/").includes(sdkSuppressionsFileName) -// ); -// let tspSuppressionFileList = initialSuppressionFiles.filter( -// suppressionFile => suppressionFile.split('/').some(suppressionFile => suppressionFile.endsWith('.Management')) -// ); -// let swaggerSuppressionFileList = initialSuppressionFiles.filter( -// suppressionFile => suppressionFile.split('/').includes('resource-manager') -// ); +function logSuppressionFileInfo(pr: { owner: string, repo: string, ref: string, path: string }) { + console.log(`updateSdkSuppressionsLabels: Will get suppressions content from ${pr.owner}/${pr.repo}#${pr.ref} for ${pr.path}`); +} -// let filterSuppressionFileList = [...tspSuppressionFileList, ...swaggerSuppressionFileList]; +const listChangedFilePaths = async ( + github: Octokit, + args: RestEndpointMethodTypes["pulls"]["listFiles"]["parameters"] +): Promise => { + const changedFiles = await github.paginate("GET /repos/:owner/:repo/pulls/:pull_number/files", args) as { filename: string }[]; -// const groupedSuppressionFileList = filterSuppressionFileList.reduce((acc: {[key: string]: string[]}, path) => { -// const key = path.split('/')[1]; -// if (!acc[key]) { -// acc[key] = []; -// } -// acc[key].push(path); + return changedFiles.map(it => it.filename); +}; -// return acc; -// }, {}); +/** + * + * @param filesChangedPaths + * @returns string[] + * check suppressionFileList is swagger suppression or tsp suppression + * if the change includes both swagger suppression and tsp suppression, only handle the tsp suppression + * others keep swagger suppression + * + * filter data-plane for swagger suppression and tsp suppression for each service + */ +export function filterSuppressionList(filesChangedPaths: string[]): string[] { + let initialSuppressionFiles = filesChangedPaths.filter((suppressionFile) => + suppressionFile.split("/").includes(sdkSuppressionsFileName) + ); + let tspSuppressionFileList = initialSuppressionFiles.filter( + suppressionFile => suppressionFile.split('/').some(suppressionFile => suppressionFile.endsWith('.Management')) + ); + let swaggerSuppressionFileList = initialSuppressionFiles.filter( + suppressionFile => suppressionFile.split('/').includes('resource-manager') + ); -// let suppressionFileList: string[] = [] -// for (const serviceName in groupedSuppressionFileList) { -// if (groupedSuppressionFileList.hasOwnProperty(serviceName)) { -// let serviceSuppressionList = groupedSuppressionFileList[serviceName]; -// if(serviceSuppressionList.some(suppressionFile => suppressionFile.split('/').some(suppressionFile => suppressionFile.endsWith('.Management')))) { -// suppressionFileList = suppressionFileList.concat(serviceSuppressionList.filter(suppressionFile => suppressionFile.split('/').some(suppressionFile => suppressionFile.endsWith('.Management')))); -// } else { -// suppressionFileList = suppressionFileList.concat(serviceSuppressionList) -// } -// } -// } + let filterSuppressionFileList = [...tspSuppressionFileList, ...swaggerSuppressionFileList]; -// return suppressionFileList; -// } + const groupedSuppressionFileList = filterSuppressionFileList.reduce((acc: {[key: string]: string[]}, path) => { + const key = path.split('/')[1]; + if (!acc[key]) { + acc[key] = []; + } + acc[key].push(path); + + return acc; + }, {}); + + let suppressionFileList: string[] = [] + for (const serviceName in groupedSuppressionFileList) { + if (groupedSuppressionFileList.hasOwnProperty(serviceName)) { + let serviceSuppressionList = groupedSuppressionFileList[serviceName]; + if(serviceSuppressionList.some(suppressionFile => suppressionFile.split('/').some(suppressionFile => suppressionFile.endsWith('.Management')))) { + suppressionFileList = suppressionFileList.concat(serviceSuppressionList.filter(suppressionFile => suppressionFile.split('/').some(suppressionFile => suppressionFile.endsWith('.Management')))); + } else { + suppressionFileList = suppressionFileList.concat(serviceSuppressionList) + } + } + } + + return suppressionFileList; +} diff --git a/eng/tools/sdk-suppressions/tsconfig.json b/eng/tools/sdk-suppressions/tsconfig.json index ec6d6640928a..eae537921c52 100644 --- a/eng/tools/sdk-suppressions/tsconfig.json +++ b/eng/tools/sdk-suppressions/tsconfig.json @@ -1,6 +1,6 @@ { "extends": "../tsconfig.json", "compilerOptions": { - "outDir": "./dist", + "outDir": "./dist" } } From ad8945dd50c9ac70583ca635f0f11b7e52f873a3 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 17:47:40 +0800 Subject: [PATCH 030/190] fix git ignore --- .../SDK-Suppressions-Label-test1.yaml | 8 +- .github/workflows/SDK-Suppressions-Label.yaml | 5 + __azurite_db_table__.json | 1 - eng/tools/sdk-suppressions/package-lock.json | 433 ++++++++++++++++++ 4 files changed, 442 insertions(+), 5 deletions(-) delete mode 100644 __azurite_db_table__.json create mode 100644 eng/tools/sdk-suppressions/package-lock.json diff --git a/.github/workflows/SDK-Suppressions-Label-test1.yaml b/.github/workflows/SDK-Suppressions-Label-test1.yaml index 1d7d4d95a864..a64e1968072f 100644 --- a/.github/workflows/SDK-Suppressions-Label-test1.yaml +++ b/.github/workflows/SDK-Suppressions-Label-test1.yaml @@ -223,10 +223,10 @@ jobs: echo "GITHUB_PR_REF_NAME=${{ github.ref_name }}" >> $GITHUB_ENV echo "GITHUB_PR_RUN_NUMBER=${{ github.run_number }}" >> $GITHUB_ENV - node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js - OUTPUT=$(cat output.json) - echo "Script JSON Output: $OUTPUT" - echo "script_result=$OUTPUT" >> $GITHUB_ENV + # node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js + # OUTPUT=$(cat output.json) + # echo "Script JSON Output: $OUTPUT" + # echo "script_result=$OUTPUT" >> $GITHUB_ENV - name: Write all JSON content run: | diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index a0fdcbc96f7d..d6755c7318aa 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -61,6 +61,11 @@ jobs: - name: Setup Node and run `npm ci` uses: ./.github/actions/setup-node-npm-ci + + # - name: Set up Node.js + # uses: actions/setup-node@v4 + # with: + # node-version: '20' # - name: Run the script # run: node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js diff --git a/__azurite_db_table__.json b/__azurite_db_table__.json deleted file mode 100644 index 8953b9d30ff6..000000000000 --- a/__azurite_db_table__.json +++ /dev/null @@ -1 +0,0 @@ -{"filename":"/home/tianenx/Github/JackTn/azure-rest-api-specs/__azurite_db_table__.json","collections":[{"name":"$TABLES_COLLECTION$","data":[],"idIndex":null,"binaryIndices":{"account":{"name":"account","dirty":false,"values":[]},"table":{"name":"table","dirty":false,"values":[]}},"constraints":null,"uniqueNames":[],"transforms":{},"objType":"$TABLES_COLLECTION$","dirty":false,"cachedIndex":null,"cachedBinaryIndex":null,"cachedData":null,"adaptiveBinaryIndices":true,"transactional":false,"cloneObjects":false,"cloneMethod":"parse-stringify","asyncListeners":false,"disableMeta":false,"disableChangesApi":true,"disableDeltaChangesApi":true,"autoupdate":false,"serializableIndices":true,"disableFreeze":true,"ttl":null,"maxId":0,"DynamicViews":[],"events":{"insert":[],"update":[],"pre-insert":[],"pre-update":[],"close":[],"flushbuffer":[],"error":[],"delete":[null],"warning":[null]},"changes":[],"dirtyIds":[]},{"name":"$SERVICES_COLLECTION$","data":[],"idIndex":null,"binaryIndices":{},"constraints":null,"uniqueNames":["accountName"],"transforms":{},"objType":"$SERVICES_COLLECTION$","dirty":false,"cachedIndex":null,"cachedBinaryIndex":null,"cachedData":null,"adaptiveBinaryIndices":true,"transactional":false,"cloneObjects":false,"cloneMethod":"parse-stringify","asyncListeners":false,"disableMeta":false,"disableChangesApi":true,"disableDeltaChangesApi":true,"autoupdate":false,"serializableIndices":true,"disableFreeze":true,"ttl":null,"maxId":0,"DynamicViews":[],"events":{"insert":[],"update":[],"pre-insert":[],"pre-update":[],"close":[],"flushbuffer":[],"error":[],"delete":[null],"warning":[null]},"changes":[],"dirtyIds":[]}],"databaseVersion":1.5,"engineVersion":1.5,"autosave":true,"autosaveInterval":5000,"autosaveHandle":null,"throttledSaves":true,"options":{"persistenceMethod":"fs","autosave":true,"autosaveInterval":5000,"serializationMethod":"normal","destructureDelimiter":"$<\n"},"persistenceMethod":"fs","persistenceAdapter":null,"verbose":false,"events":{"init":[null],"loaded":[],"flushChanges":[],"close":[],"changes":[],"warning":[]},"ENV":"NODEJS"} \ No newline at end of file diff --git a/eng/tools/sdk-suppressions/package-lock.json b/eng/tools/sdk-suppressions/package-lock.json new file mode 100644 index 000000000000..304293532061 --- /dev/null +++ b/eng/tools/sdk-suppressions/package-lock.json @@ -0,0 +1,433 @@ +{ + "name": "@azure-tools/sdk-suppressions", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@azure-tools/sdk-suppressions", + "version": "1.0.0", + "dependencies": { + "@octokit/rest": "18.0.3", + "@octokit/types": "^5.4.0", + "ajv": "^6.12.6", + "js-yaml": "^3.14.0", + "lodash": "^4.17.20" + }, + "bin": { + "get-sdk-suppressions-label": "cmd/sdk-suppressions-label.js" + }, + "devDependencies": { + "@types/js-yaml": "^3.12.5", + "@types/lodash": "^4.14.161" + }, + "engines": { + "node": ">= 18.0.0" + } + }, + "node_modules/@octokit/auth-token": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^6.0.3" + } + }, + "node_modules/@octokit/auth-token/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/@octokit/core": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", + "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", + "license": "MIT", + "dependencies": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.6.3", + "@octokit/request-error": "^2.0.5", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/core/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/endpoint/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/@octokit/graphql": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "license": "MIT", + "dependencies": { + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/graphql/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==", + "license": "MIT" + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "2.21.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", + "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^6.40.0" + }, + "peerDependencies": { + "@octokit/core": ">=2" + } + }, + "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "license": "MIT", + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-4.1.2.tgz", + "integrity": "sha512-PTI7wpbGEZ2IR87TVh+TNWaLcgX/RsZQalFbQCq8XxYUrQ36RHyERrHSNXFy5gkWpspUAOYRSV707JJv6BhqJA==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^5.1.1", + "deprecation": "^2.3.1" + } + }, + "node_modules/@octokit/request": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", + "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", + "license": "MIT", + "dependencies": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "node_modules/@octokit/request-error/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/@octokit/request/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/@octokit/rest": { + "version": "18.0.3", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.0.3.tgz", + "integrity": "sha512-GubgemnLvUJlkhouTM2BtX+g/voYT/Mqh0SASGwTnLvSkW1irjt14N911/ABb6m1Hru0TwScOgFgMFggp3igfQ==", + "license": "MIT", + "dependencies": { + "@octokit/core": "^3.0.0", + "@octokit/plugin-paginate-rest": "^2.2.0", + "@octokit/plugin-request-log": "^1.0.0", + "@octokit/plugin-rest-endpoint-methods": "4.1.2" + } + }, + "node_modules/@octokit/types": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-5.5.0.tgz", + "integrity": "sha512-UZ1pErDue6bZNjYOotCNveTXArOMZQFG6hKJfOnGnulVCMcVVi7YIIuuR4WfBhjo7zgpmzn/BkPDnUXtNx+PcQ==", + "license": "MIT", + "dependencies": { + "@types/node": ">= 8" + } + }, + "node_modules/@types/js-yaml": { + "version": "3.12.10", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.10.tgz", + "integrity": "sha512-/Mtaq/wf+HxXpvhzFYzrzCqNRcA958sW++7JOFC8nPrZcvfi/TrzOaaGbvt27ltJB2NQbHVAg5a1wUCsyMH7NA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/lodash": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.13.tgz", + "integrity": "sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz", + "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "license": "Apache-2.0" + }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "license": "ISC" + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "license": "MIT" + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "license": "MIT" + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "license": "MIT" + }, + "node_modules/universal-user-agent": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", + "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", + "license": "ISC" + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + } + } +} From 617b2bd73bab10eac15c3691eec25cbb3541f7cb Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 18:10:00 +0800 Subject: [PATCH 031/190] fix npm ci error --- eng/tools/package.json | 3 ++- eng/tools/tsconfig.json | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/eng/tools/package.json b/eng/tools/package.json index 8dcd0c6a9d2d..1385766802eb 100644 --- a/eng/tools/package.json +++ b/eng/tools/package.json @@ -5,7 +5,8 @@ "@azure-tools/suppressions": "file:suppressions", "@azure-tools/tsp-client-tests": "file:tsp-client-tests", "@azure-tools/typespec-requirement": "file:typespec-requirement", - "@azure-tools/typespec-validation": "file:typespec-validation" + "@azure-tools/typespec-validation": "file:typespec-validation", + "@azure-tools/sdk-suppressions": "file:sdk-suppressions" }, "scripts": { "build": "tsc --build", diff --git a/eng/tools/tsconfig.json b/eng/tools/tsconfig.json index ffa89e56a6d8..eca3d4cdace7 100644 --- a/eng/tools/tsconfig.json +++ b/eng/tools/tsconfig.json @@ -15,6 +15,7 @@ { "path": "./suppressions" }, { "path": "./tsp-client-tests" }, { "path": "./typespec-requirement" }, - { "path": "./typespec-validation" } + { "path": "./typespec-validation" }, + { "path": "./sdk-suppressions" } ] } From 65ee4c3c30b7fdb6af84bd2187ebd395439cc293 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 18:43:19 +0800 Subject: [PATCH 032/190] fix npm ci error --- .github/workflows/SDK-Suppressions-Label.yaml | 2 + .../cmd/sdk-suppressions-label.js | 0 eng/tools/sdk-suppressions/package-lock.json | 433 ------------------ package-lock.json | 326 +++++++++++++ 4 files changed, 328 insertions(+), 433 deletions(-) mode change 100644 => 100755 eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js delete mode 100644 eng/tools/sdk-suppressions/package-lock.json diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index d6755c7318aa..6d52b8df09eb 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -21,6 +21,8 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v4 + with: + fetch-depth: 2 - name: Get GitHub PullRequest Context uses: actions/github-script@v7 diff --git a/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js b/eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js old mode 100644 new mode 100755 diff --git a/eng/tools/sdk-suppressions/package-lock.json b/eng/tools/sdk-suppressions/package-lock.json deleted file mode 100644 index 304293532061..000000000000 --- a/eng/tools/sdk-suppressions/package-lock.json +++ /dev/null @@ -1,433 +0,0 @@ -{ - "name": "@azure-tools/sdk-suppressions", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "@azure-tools/sdk-suppressions", - "version": "1.0.0", - "dependencies": { - "@octokit/rest": "18.0.3", - "@octokit/types": "^5.4.0", - "ajv": "^6.12.6", - "js-yaml": "^3.14.0", - "lodash": "^4.17.20" - }, - "bin": { - "get-sdk-suppressions-label": "cmd/sdk-suppressions-label.js" - }, - "devDependencies": { - "@types/js-yaml": "^3.12.5", - "@types/lodash": "^4.14.161" - }, - "engines": { - "node": ">= 18.0.0" - } - }, - "node_modules/@octokit/auth-token": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", - "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.0.3" - } - }, - "node_modules/@octokit/auth-token/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@octokit/core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", - "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", - "license": "MIT", - "dependencies": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.6.3", - "@octokit/request-error": "^2.0.5", - "@octokit/types": "^6.0.3", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@octokit/core/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.0.3", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@octokit/endpoint/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", - "license": "MIT", - "dependencies": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@octokit/graphql/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==", - "license": "MIT" - }, - "node_modules/@octokit/plugin-paginate-rest": { - "version": "2.21.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", - "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.40.0" - }, - "peerDependencies": { - "@octokit/core": ">=2" - } - }, - "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@octokit/plugin-request-log": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", - "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", - "license": "MIT", - "peerDependencies": { - "@octokit/core": ">=3" - } - }, - "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-4.1.2.tgz", - "integrity": "sha512-PTI7wpbGEZ2IR87TVh+TNWaLcgX/RsZQalFbQCq8XxYUrQ36RHyERrHSNXFy5gkWpspUAOYRSV707JJv6BhqJA==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^5.1.1", - "deprecation": "^2.3.1" - } - }, - "node_modules/@octokit/request": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", - "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", - "license": "MIT", - "dependencies": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "node_modules/@octokit/request-error/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@octokit/request/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@octokit/rest": { - "version": "18.0.3", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.0.3.tgz", - "integrity": "sha512-GubgemnLvUJlkhouTM2BtX+g/voYT/Mqh0SASGwTnLvSkW1irjt14N911/ABb6m1Hru0TwScOgFgMFggp3igfQ==", - "license": "MIT", - "dependencies": { - "@octokit/core": "^3.0.0", - "@octokit/plugin-paginate-rest": "^2.2.0", - "@octokit/plugin-request-log": "^1.0.0", - "@octokit/plugin-rest-endpoint-methods": "4.1.2" - } - }, - "node_modules/@octokit/types": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-5.5.0.tgz", - "integrity": "sha512-UZ1pErDue6bZNjYOotCNveTXArOMZQFG6hKJfOnGnulVCMcVVi7YIIuuR4WfBhjo7zgpmzn/BkPDnUXtNx+PcQ==", - "license": "MIT", - "dependencies": { - "@types/node": ">= 8" - } - }, - "node_modules/@types/js-yaml": { - "version": "3.12.10", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.10.tgz", - "integrity": "sha512-/Mtaq/wf+HxXpvhzFYzrzCqNRcA958sW++7JOFC8nPrZcvfi/TrzOaaGbvt27ltJB2NQbHVAg5a1wUCsyMH7NA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/lodash": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.13.tgz", - "integrity": "sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "22.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz", - "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==", - "license": "MIT", - "dependencies": { - "undici-types": "~6.20.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/before-after-hook": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", - "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", - "license": "Apache-2.0" - }, - "node_modules/deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "license": "ISC" - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "license": "MIT" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "license": "MIT" - }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "license": "MIT" - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "license": "MIT" - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "license": "BSD-3-Clause" - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" - }, - "node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "license": "MIT" - }, - "node_modules/universal-user-agent": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", - "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", - "license": "ISC" - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "license": "ISC" - } - } -} diff --git a/package-lock.json b/package-lock.json index 4ff3c2f2b07d..8a2dae57d6c0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39,6 +39,7 @@ "dev": true, "hasInstallScript": true, "devDependencies": { + "@azure-tools/sdk-suppressions": "file:sdk-suppressions", "@azure-tools/specs-model": "file:specs-model", "@azure-tools/suppressions": "file:suppressions", "@azure-tools/tsp-client-tests": "file:tsp-client-tests", @@ -99,6 +100,27 @@ "balanced-match": "^1.0.0" } }, + "eng/tools/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "eng/tools/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, "eng/tools/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -248,6 +270,7 @@ } } }, +<<<<<<< HEAD "eng/tools/node_modules/vitest/node_modules/@vitest/mocker": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.8.tgz", @@ -273,6 +296,28 @@ "vite": { "optional": true } +======= + "eng/tools/sdk-suppressions": { + "name": "@azure-tools/sdk-suppressions", + "version": "1.0.0", + "dev": true, + "dependencies": { + "@octokit/rest": "18.0.3", + "@octokit/types": "^5.4.0", + "ajv": "^6.12.6", + "js-yaml": "^3.14.0", + "lodash": "^4.17.20" + }, + "bin": { + "get-sdk-suppressions-label": "cmd/sdk-suppressions-label.js" + }, + "devDependencies": { + "@types/js-yaml": "^3.12.5", + "@types/lodash": "^4.14.161" + }, + "engines": { + "node": ">= 18.0.0" +>>>>>>> aa0f6a308c (fix npm ci error) } }, "eng/tools/specs-model": { @@ -911,6 +956,10 @@ "node": ">=18.0.0" } }, + "node_modules/@azure-tools/sdk-suppressions": { + "resolved": "eng/tools/sdk-suppressions", + "link": true + }, "node_modules/@azure-tools/specs-model": { "resolved": "eng/tools/specs-model", "link": true @@ -2604,6 +2653,238 @@ "node": ">= 8" } }, + "node_modules/@octokit/auth-token": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^6.0.3" + } + }, + "node_modules/@octokit/auth-token/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/@octokit/core": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", + "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.6.3", + "@octokit/request-error": "^2.0.5", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/core/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/endpoint/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/@octokit/graphql": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/graphql/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "2.21.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", + "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^6.40.0" + }, + "peerDependencies": { + "@octokit/core": ">=2" + } + }, + "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-4.1.2.tgz", + "integrity": "sha512-PTI7wpbGEZ2IR87TVh+TNWaLcgX/RsZQalFbQCq8XxYUrQ36RHyERrHSNXFy5gkWpspUAOYRSV707JJv6BhqJA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^5.1.1", + "deprecation": "^2.3.1" + } + }, + "node_modules/@octokit/request": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", + "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "node_modules/@octokit/request-error/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/@octokit/request/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/@octokit/request/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/@octokit/rest": { + "version": "18.0.3", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.0.3.tgz", + "integrity": "sha512-GubgemnLvUJlkhouTM2BtX+g/voYT/Mqh0SASGwTnLvSkW1irjt14N911/ABb6m1Hru0TwScOgFgMFggp3igfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/core": "^3.0.0", + "@octokit/plugin-paginate-rest": "^2.2.0", + "@octokit/plugin-request-log": "^1.0.0", + "@octokit/plugin-rest-endpoint-methods": "4.1.2" + } + }, + "node_modules/@octokit/types": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-5.5.0.tgz", + "integrity": "sha512-UZ1pErDue6bZNjYOotCNveTXArOMZQFG6hKJfOnGnulVCMcVVi7YIIuuR4WfBhjo7zgpmzn/BkPDnUXtNx+PcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": ">= 8" + } + }, "node_modules/@opentelemetry/api": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", @@ -3369,6 +3650,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/js-yaml": { + "version": "3.12.10", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.10.tgz", + "integrity": "sha512-/Mtaq/wf+HxXpvhzFYzrzCqNRcA958sW++7JOFC8nPrZcvfi/TrzOaaGbvt27ltJB2NQbHVAg5a1wUCsyMH7NA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -3376,6 +3664,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/lodash": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.13.tgz", + "integrity": "sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/node": { "version": "10.17.60", "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", @@ -4180,6 +4475,13 @@ "tweetnacl": "^0.14.3" } }, + "node_modules/before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/bluebird": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", @@ -4780,6 +5082,13 @@ "node": ">=0.4.0" } }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true, + "license": "ISC" + }, "node_modules/des.js": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", @@ -6355,6 +6664,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -9439,6 +9758,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/universal-user-agent": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", + "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", + "dev": true, + "license": "ISC" + }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", From e2048d89bc426aec9ec3c2690cc16dceca0c074c Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 18:58:33 +0800 Subject: [PATCH 033/190] fix npm ci error --- .github/workflows/SDK-Suppressions-Label.yaml | 2 -- eng/tools/sdk-suppressions/src/index.ts | 12 ++---------- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 6d52b8df09eb..d6755c7318aa 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -21,8 +21,6 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v4 - with: - fetch-depth: 2 - name: Get GitHub PullRequest Context uses: actions/github-script@v7 diff --git a/eng/tools/sdk-suppressions/src/index.ts b/eng/tools/sdk-suppressions/src/index.ts index 829535a720cf..9337b2664711 100644 --- a/eng/tools/sdk-suppressions/src/index.ts +++ b/eng/tools/sdk-suppressions/src/index.ts @@ -4,20 +4,12 @@ import { updateSdkSuppressionsLabels, PullRequestContext } from "./updateSdkSupp function getUsage(): string { return ( - " Usage: npx get-specs-model \n" + - "Returns: JSON metadata for the input file or directory.\n" + - "\n" + - "The input path:\n" + - "- Must be an absolute or relative path to local clone of the https://github.com/Azure/azure-rest-api-specs or https://github.com/Azure/azure-rest-api-specs-pr repo.\n" + - "- Must point to the /specification directory or one of its descendants.\n" + - "\n" + - "Example: npx get-specs-model $HOME/repos/azure-rest-api-specs/specification\n" + - "Returns: JSON with metadata for the entire 'specification' directory of the local clone of 'azure-rest-api-specs' repo.\n" + "parameter missing! \n" ); } export async function main() { - const PullRequestContext = process.env.PullRequestContext as unknown as PullRequestContext; + const PullRequestContext = process.env.GITHUB_PULL_REQUEST_CONTEXT as unknown as PullRequestContext; const GITHUB_TOKEN = process.env.GITHUB_TOKEN; console.log(`PullRequestContext: JSON.stringify(${PullRequestContext})`); From 3c4f72faded2b83763cbe139a4ccae28efd7cf6a Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 19:04:25 +0800 Subject: [PATCH 034/190] fix process env error --- .github/workflows/SDK-Suppressions-Label.yaml | 2 +- eng/tools/sdk-suppressions/src/index.ts | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index d6755c7318aa..ef49efb96e74 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -73,7 +73,7 @@ jobs: id: run-suppressions-script env: GITHUB_PULL_REQUEST_CONTEXT: ${{ steps.Fetch-PullRequest-Context.outputs.result }} - GITHUB_TOLEN: ${{ secrets.SPEC_REPO_TOKEN }} + GITHUB_TOKEN: ${{ secrets.SPEC_REPO_TOKEN }} run: | echo "PR_INFO=$GITHUB_PULL_REQUEST_CONTEXT" diff --git a/eng/tools/sdk-suppressions/src/index.ts b/eng/tools/sdk-suppressions/src/index.ts index 9337b2664711..b2d4d62afdd0 100644 --- a/eng/tools/sdk-suppressions/src/index.ts +++ b/eng/tools/sdk-suppressions/src/index.ts @@ -12,6 +12,8 @@ export async function main() { const PullRequestContext = process.env.GITHUB_PULL_REQUEST_CONTEXT as unknown as PullRequestContext; const GITHUB_TOKEN = process.env.GITHUB_TOKEN; console.log(`PullRequestContext: JSON.stringify(${PullRequestContext})`); + console.log(`GITHUB_TOKEN: is exist ? ${!!GITHUB_TOKEN}`); + console.log(`GITHUB_PULL_REQUEST_CONTEXT: is exist ? ${!!PullRequestContext}`); if (PullRequestContext && GITHUB_TOKEN) { const changedLabels: {labelsToAdd: String[], labelsToRemove: String[]} = await updateSdkSuppressionsLabels(PullRequestContext, GITHUB_TOKEN); From b2275f3ac4b113b07deb9f96cd2d745df01ebb0a Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 19:13:26 +0800 Subject: [PATCH 035/190] fix process env error --- eng/tools/sdk-suppressions/src/index.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/eng/tools/sdk-suppressions/src/index.ts b/eng/tools/sdk-suppressions/src/index.ts index b2d4d62afdd0..e53c67ec494d 100644 --- a/eng/tools/sdk-suppressions/src/index.ts +++ b/eng/tools/sdk-suppressions/src/index.ts @@ -9,14 +9,16 @@ function getUsage(): string { } export async function main() { - const PullRequestContext = process.env.GITHUB_PULL_REQUEST_CONTEXT as unknown as PullRequestContext; - const GITHUB_TOKEN = process.env.GITHUB_TOKEN; - console.log(`PullRequestContext: JSON.stringify(${PullRequestContext})`); + const GITHUB_PULL_REQUEST_CONTEXT = process.env.GITHUB_PULL_REQUEST_CONTEXT as string; + const GITHUB_TOKEN = process.env.GITHUB_TOKEN as string; + console.log(`PullRequestContext: (${GITHUB_PULL_REQUEST_CONTEXT})`); console.log(`GITHUB_TOKEN: is exist ? ${!!GITHUB_TOKEN}`); - console.log(`GITHUB_PULL_REQUEST_CONTEXT: is exist ? ${!!PullRequestContext}`); + console.log(`GITHUB_PULL_REQUEST_CONTEXT: is exist ? ${!!GITHUB_PULL_REQUEST_CONTEXT}`); - if (PullRequestContext && GITHUB_TOKEN) { - const changedLabels: {labelsToAdd: String[], labelsToRemove: String[]} = await updateSdkSuppressionsLabels(PullRequestContext, GITHUB_TOKEN); + if (GITHUB_PULL_REQUEST_CONTEXT && GITHUB_TOKEN) { + const pullRequestContext = JSON.parse(GITHUB_PULL_REQUEST_CONTEXT) as unknown as PullRequestContext; + const token = GITHUB_TOKEN; + const changedLabels: {labelsToAdd: String[], labelsToRemove: String[]} = await updateSdkSuppressionsLabels(pullRequestContext, token); console.log(JSON.stringify(changedLabels)); exit(0); } else { From f12b069f5b5f085ee67e3de82053879120c7cb17 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 19:26:40 +0800 Subject: [PATCH 036/190] fix process env error --- eng/tools/sdk-suppressions/src/index.ts | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/eng/tools/sdk-suppressions/src/index.ts b/eng/tools/sdk-suppressions/src/index.ts index e53c67ec494d..2a87307d5682 100644 --- a/eng/tools/sdk-suppressions/src/index.ts +++ b/eng/tools/sdk-suppressions/src/index.ts @@ -9,15 +9,13 @@ function getUsage(): string { } export async function main() { - const GITHUB_PULL_REQUEST_CONTEXT = process.env.GITHUB_PULL_REQUEST_CONTEXT as string; - const GITHUB_TOKEN = process.env.GITHUB_TOKEN as string; - console.log(`PullRequestContext: (${GITHUB_PULL_REQUEST_CONTEXT})`); - console.log(`GITHUB_TOKEN: is exist ? ${!!GITHUB_TOKEN}`); - console.log(`GITHUB_PULL_REQUEST_CONTEXT: is exist ? ${!!GITHUB_PULL_REQUEST_CONTEXT}`); + const _pullRequestContext = process.env.GITHUB_PULL_REQUEST_CONTEXT as string; + const _githubToken = process.env.GITHUB_TOKEN as string; - if (GITHUB_PULL_REQUEST_CONTEXT && GITHUB_TOKEN) { - const pullRequestContext = JSON.parse(GITHUB_PULL_REQUEST_CONTEXT) as unknown as PullRequestContext; - const token = GITHUB_TOKEN; + if (_pullRequestContext && _githubToken) { + const pullRequestContext = JSON.parse(_pullRequestContext) as unknown as PullRequestContext; + console.log(`PullRequestContext: (${pullRequestContext})`); + const token = _githubToken; const changedLabels: {labelsToAdd: String[], labelsToRemove: String[]} = await updateSdkSuppressionsLabels(pullRequestContext, token); console.log(JSON.stringify(changedLabels)); exit(0); From fca9cd2412c55b73086fa12b95db25833662ae48 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 19:35:11 +0800 Subject: [PATCH 037/190] fix process env error --- .../sdk-suppressions/src/updateSdkSuppressionsLabel.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index 57dba8d81f2a..7d9fb8e70076 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -212,11 +212,13 @@ export function getSdkNamesWithChangedSuppressions( * 2. It removes the label if the PR no longer contains the suppression file. * 3. It leaves the label unchanged if the PR already has both the suppression and the suppression approved labels. */ -export async function updateSdkSuppressionsLabels(pr: PullRequestContext, GITHUB_TOKEN: string): Promise<{labelsToAdd: String[], labelsToRemove: String[]}> { +export async function updateSdkSuppressionsLabels(pr: PullRequestContext, githubToken: string): Promise<{labelsToAdd: String[], labelsToRemove: String[]}> { const appClient: Octokit = new Octokit({ - auth: GITHUB_TOKEN + auth: githubToken }); + console.log('---------------pr info', pr); const sdkNames = await getSdkSuppressionsSdkNames(appClient, pr); + console.log('=============== sdkNames', sdkNames); console.log(`updateSdkSuppressionsLabels: PR: ${pr.html_url} Get the required suppressions label based on compared SDK List ${sdkNames.join(", ")}`); let addSdkSuppressionsLabels: string[] = []; From 1611202f850529193d22c1dad1fc230d425e63fb Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 19:36:54 +0800 Subject: [PATCH 038/190] fix process env error --- eng/tools/sdk-suppressions/src/index.ts | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/eng/tools/sdk-suppressions/src/index.ts b/eng/tools/sdk-suppressions/src/index.ts index 2a87307d5682..4519222ef8ff 100644 --- a/eng/tools/sdk-suppressions/src/index.ts +++ b/eng/tools/sdk-suppressions/src/index.ts @@ -9,14 +9,13 @@ function getUsage(): string { } export async function main() { - const _pullRequestContext = process.env.GITHUB_PULL_REQUEST_CONTEXT as string; - const _githubToken = process.env.GITHUB_TOKEN as string; + const pullRequestContext = process.env.GITHUB_PULL_REQUEST_CONTEXT as string; + const githubToken = process.env.GITHUB_TOKEN as string; - if (_pullRequestContext && _githubToken) { - const pullRequestContext = JSON.parse(_pullRequestContext) as unknown as PullRequestContext; - console.log(`PullRequestContext: (${pullRequestContext})`); - const token = _githubToken; - const changedLabels: {labelsToAdd: String[], labelsToRemove: String[]} = await updateSdkSuppressionsLabels(pullRequestContext, token); + if (pullRequestContext && githubToken) { + const _pullRequestContext = JSON.parse(pullRequestContext) as unknown as PullRequestContext; + const _token = githubToken; + const changedLabels: {labelsToAdd: String[], labelsToRemove: String[]} = await updateSdkSuppressionsLabels(_pullRequestContext, _token); console.log(JSON.stringify(changedLabels)); exit(0); } else { From b6284dbb76d97093e5b4232bc724f0c37db5723e Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 19:53:15 +0800 Subject: [PATCH 039/190] fix process env error --- .github/workflows/SDK-Suppressions-Label-test1.yaml | 9 +++++++++ .github/workflows/SDK-Suppressions-Label.yaml | 9 --------- eng/tools/sdk-suppressions/package.json | 3 ++- eng/tools/sdk-suppressions/src/index.ts | 3 +-- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label-test1.yaml b/.github/workflows/SDK-Suppressions-Label-test1.yaml index a64e1968072f..1717f7e70418 100644 --- a/.github/workflows/SDK-Suppressions-Label-test1.yaml +++ b/.github/workflows/SDK-Suppressions-Label-test1.yaml @@ -228,6 +228,15 @@ jobs: # echo "Script JSON Output: $OUTPUT" # echo "script_result=$OUTPUT" >> $GITHUB_ENV + # node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js + # OUTPUT=$(cat output.json) + # echo "Script JSON Output: $OUTPUT" + # echo "script_result=$OUTPUT" >> $GITHUB_ENV + + # const result = require('eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js'); + # console.log(JSON.stringify(result)); + # echo "SCRIPT_OUTPUT_RESULT=$result" >> $GITHUB_ENV + - name: Write all JSON content run: | echo "Entire JSON content:" diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index ef49efb96e74..5342708483a2 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -77,18 +77,9 @@ jobs: run: | echo "PR_INFO=$GITHUB_PULL_REQUEST_CONTEXT" - # node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js - # OUTPUT=$(cat output.json) - # echo "Script JSON Output: $OUTPUT" - # echo "script_result=$OUTPUT" >> $GITHUB_ENV - result=$(node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js) echo "SCRIPT_OUTPUT=$result" >> $GITHUB_ENV - # const result = require('eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js'); - # console.log(JSON.stringify(result)); - # echo "SCRIPT_OUTPUT_RESULT=$result" >> $GITHUB_ENV - - name: Write all JSON content run: | echo "Entire JSON content:" diff --git a/eng/tools/sdk-suppressions/package.json b/eng/tools/sdk-suppressions/package.json index 494ab91abc2e..7bef4e21bd66 100644 --- a/eng/tools/sdk-suppressions/package.json +++ b/eng/tools/sdk-suppressions/package.json @@ -8,7 +8,8 @@ "get-sdk-suppressions-label": "cmd/sdk-suppressions-label.js" }, "scripts": { - "build": "tsc --build" + "build": "tsc --build", + "start": "npm run build & node cmd/sdk-suppressions-label.js" }, "engines": { "node": ">= 18.0.0" diff --git a/eng/tools/sdk-suppressions/src/index.ts b/eng/tools/sdk-suppressions/src/index.ts index 4519222ef8ff..a9a14be034c6 100644 --- a/eng/tools/sdk-suppressions/src/index.ts +++ b/eng/tools/sdk-suppressions/src/index.ts @@ -11,9 +11,8 @@ function getUsage(): string { export async function main() { const pullRequestContext = process.env.GITHUB_PULL_REQUEST_CONTEXT as string; const githubToken = process.env.GITHUB_TOKEN as string; - if (pullRequestContext && githubToken) { - const _pullRequestContext = JSON.parse(pullRequestContext) as unknown as PullRequestContext; + const _pullRequestContext = pullRequestContext as unknown as PullRequestContext; const _token = githubToken; const changedLabels: {labelsToAdd: String[], labelsToRemove: String[]} = await updateSdkSuppressionsLabels(_pullRequestContext, _token); console.log(JSON.stringify(changedLabels)); From 0d5912bdc1c95dd018ca765973bf96f72af13a2e Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 20:16:13 +0800 Subject: [PATCH 040/190] fix process env error --- .../SDK-Suppressions-Label-test1.yaml | 256 ------------------ .github/workflows/SDK-Suppressions-Label.yaml | 23 +- eng/tools/sdk-suppressions/package.json | 2 +- eng/tools/sdk-suppressions/src/index.ts | 2 +- package-lock.json | 161 +++++++++++ 5 files changed, 164 insertions(+), 280 deletions(-) delete mode 100644 .github/workflows/SDK-Suppressions-Label-test1.yaml diff --git a/.github/workflows/SDK-Suppressions-Label-test1.yaml b/.github/workflows/SDK-Suppressions-Label-test1.yaml deleted file mode 100644 index 1717f7e70418..000000000000 --- a/.github/workflows/SDK-Suppressions-Label-test1.yaml +++ /dev/null @@ -1,256 +0,0 @@ -name: breakingchange suppressions label Workflow Test - -on: - pull_request: - branches: - - jacktn/suppression-action - types: - - opened - - synchronize - - reopened - - workflow_dispatch: - -env: - script_result: '' - -jobs: - manage_sdk_suppressions_labels_test: - runs-on: ubuntu-latest - - steps: - - name: Checkout code - uses: actions/checkout@v4 - - # - name: Set Label - # uses: actions/github-script@v7 - # env: - # OWNER: ${{ inputs.owner }} - # REPO: ${{ inputs.repo }} - # ISSUE_NUMBER: ${{ inputs.issue_number }} - # RUN_ID: ${{ inputs.run_id }} - # with: - # script: | - # const action = require('./.github/actions/update-labels/action.js') - # await action({ github, context, core }); - - name: Set color - id: color-selector - run: echo "SELECTED_COLOR=green" >> "$GITHUB_OUTPUT" - - name: Get color - env: - SELECTED_COLOR: ${{ steps.color-selector.outputs.SELECTED_COLOR }} - run: echo "The selected color is $SELECTED_COLOR" - - - name: get GitHub pr info - uses: actions/github-script@v7 - id: fetch-pr-info - with: - script: | - const pr = context.payload.pull_request; - const prNumber = pr.number; - const prTitle = pr.title; - const prBaseSha = pr.base.sha; - const prHeadSha = pr.head.sha; - const prlabels = pr.labels; - - console.log(`PR Number: ${prNumber}`); - console.log(`PR Title: ${prTitle}`); - console.log(`base sha: ${prBaseSha}`); - console.log(`head sha: ${prHeadSha}`); - - // Fetch the labels of the PR - const labels = pr.labels.map(label => label.name); - - // Log the labels - console.log(`PR Labels: ${labels}`); - - // Return the labels as a JSON string - core.setOutput("prNumber", prNumber); - core.setOutput("prTitle", prTitle); - core.setOutput("prBaseSha", prBaseSha); - core.setOutput("prHeadSha", prHeadSha); - core.setOutput("prLabels", JSON.stringify(labels)); - - return { prNumber, prTitle }; - result-encoding: string - - - name: save GitHub env - run: | - echo "PR_LABELS111='[\"bug\",\"feature\",\"documentation\"]'" >> $GITHUB_ENV - echo "PR_INFO111='{\"number\":123,\"title\":\"Fix issue\",\"author\":\"octocat\"}'" >> $GITHUB_ENV - echo "PR_NUMBER=${{ steps.fetch-pr-info.outputs.prNumber }}" >> $GITHUB_ENV - echo "PR_TITLE=${{ steps.fetch-pr-info.outputs.prTitle }}" >> $GITHUB_ENV - echo "PR_BASE_SHA=${{ steps.fetch-pr-info.outputs.prBaseSha }}" >> $GITHUB_ENV - echo "PR_HEAD_SHA=${{ steps.fetch-pr-info.outputs.prHeadSha }}" >> $GITHUB_ENV - echo "PR_LABELS=${{ steps.fetch-pr-info.outputs.prlabels }}" >> $GITHUB_ENV - - - name: test GitHub env - run: | - echo "Pull Request Number t: $PR_LABELS111" - echo "Pull Request Number t: $PR_INFO111" - echo "Pull Request Number: $PR_NUMBER" - echo "Pull Request Title: $PR_TITLE" - echo "Pull Request base: $PR_BASE_SHA" - echo "Pull Request head: $PR_HEAD_SHA" - echo "Pull Request head: $PR_LABELS" - - - name: Use GitHub Script to get changed files - uses: actions/github-script@v7 - with: - script: | - const prNumber = context.payload.pull_request.number; // Get PR number from context - - // Get changed files in the PR - const { data: files } = await github.rest.pulls.listFiles({ - owner: context.repo.owner, - repo: context.repo.repo, - pull_number: prNumber, - }); - - // Fetch content of filtered files from head and base branches - const fileContents = await Promise.all(files.map(async (file) => { - // Get content from the base branch (target branch of the PR) - const baseContent = await github.rest.repos.getContent({ - owner: context.repo.owner, - repo: context.repo.repo, - path: file.filename, - ref: context.payload.pull_request.base.sha, // base branch SHA - }).catch(() => null); // In case the file does not exist on the base branch - - // Get content from the head branch (source branch of the PR) - const headContent = await github.rest.repos.getContent({ - owner: context.repo.owner, - repo: context.repo.repo, - path: file.filename, - ref: context.payload.pull_request.head.sha, // head branch SHA - }).catch(() => null); // In case the file does not exist on the head branch - - return { - file: file.filename, - baseContent: baseContent ? baseContent.data : null, - headContent: headContent ? headContent.data : null, - }; - })); - - // Log the content differences or the file contents - fileContents.forEach(({ file, baseContent, headContent }) => { - console.log(`File: ${file}`); - console.log(`Base Content (from ${context.payload.pull_request.base.ref}):`, baseContent); - console.log(`Head Content (from ${context.payload.pull_request.head.ref}):`, headContent); - }); - - // Optionally return the list of files to be used in the next steps - return files.map(file => file.filename); - id: get-changed-files - - - name: Save changed files to GitHub environment - run: | - echo "CHANGED_FILES=${{ steps.get-changed-files.outputs.result }}" >> $GITHUB_ENV - - - name: Display changed files - run: | - echo "Changed files in the PR:" - echo "$CHANGED_FILES" - - # - name: test github-script - # uses: actions/github-script@v7 - # with: - # result-encoding: string - # retries: 3 - # retry-exempt-status-codes: 400,401 - # script: | - # # github.rest.issues.createComment({ - # # owner: context.repo.owner, - # # repo: context.repo.repo, - # # issue_number: context.issue.number, - # # body: "Thank you for your contribution! 🚀" - # # }); - - - # # const script = require('.github/actions/handle-suppressions/suppressions.js') - # # await script({github, context, core}) - - # console.log("event:", context.eventName); - # console.log("actor:", context.actor); - # console.log("repo:", context.repo); - # console.log("SHA:", context.sha); - # console.log("payload", context.payload); - # console.log("pull_request", context.payload.pull_request); - - - # console.log("=== GitHub Context ==="); - # console.log(context); - - # console.log("Repository Info:", context.repo); - # console.log("Actor:", context.actor); - # console.log("Event Name:", context.eventName); - # console.log("Payload:", context.payload); - # console.log("Run ID:", context.runId); - # console.log("Run Number:", context.runNumber); - # console.log("SHA:", context.sha); - # console.log("Ref:", context.ref); - # console.log("Workflow:", context.workflow); - # console.log("Job:", context.job); - # env: - # GITHUB_TOKEN: ${{ secrets.SPEC_REPO_TOKEN }} - - - name: Set up Node.js - uses: actions/setup-node@v4 - with: - node-version: '20' - - # - name: Print GitHub Context - # run: | - # echo "GitHub Context: ${{ toJson(github.event) }}" - - # - name: Run the script - # run: node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js - - name: Run Node.js script - id: run-script - run: | - # echo "GITHUB_PULL_REQUEST_BASE_REPO_OWNER=${{ github.event.pull_request.base.repo.owner.login }}" >> $GITHUB_ENV - # echo "GITHUB_PULL_REQUEST_BASE_REPO_NAME=${{ github.event.pull_request.base.repo.name }}" >> $GITHUB_ENV - # echo "GITHUB_PULL_REQUEST_HEAD_REPO_OWNER=${{ github.event.pull_request.head.repo.owner.login }}" >> $GITHUB_ENV - # echo "GITHUB_PULL_REQUEST_HEAD_REPO_NAME=${{ github.event.pull_request.head.repo.name }}" >> $GITHUB_ENV - # echo "GITHUB_PULL_REQUEST_NUMBER=${{ github.event.pull_request.number }}" >> $GITHUB_ENV - - echo "GITHUB_EVENT_NAME=${{ github.event_name }}" >> $GITHUB_ENV - - echo "GITHUB_HEAD_REF=${{ github.head_ref }}" >> $GITHUB_ENV - echo "GITHUB_BASE_REF=${{ github.base_ref }}" >> $GITHUB_ENV - echo "GITHUB_PR_NUMBER=${{ github.event.pull_request.number }}" >> $GITHUB_ENV - echo "GITHUB_PR_REF=${{ github.ref }}" >> $GITHUB_ENV - echo "GITHUB_PR_REF_NAME=${{ github.ref_name }}" >> $GITHUB_ENV - echo "GITHUB_PR_RUN_NUMBER=${{ github.run_number }}" >> $GITHUB_ENV - - # node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js - # OUTPUT=$(cat output.json) - # echo "Script JSON Output: $OUTPUT" - # echo "script_result=$OUTPUT" >> $GITHUB_ENV - - # node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js - # OUTPUT=$(cat output.json) - # echo "Script JSON Output: $OUTPUT" - # echo "script_result=$OUTPUT" >> $GITHUB_ENV - - # const result = require('eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js'); - # console.log(JSON.stringify(result)); - # echo "SCRIPT_OUTPUT_RESULT=$result" >> $GITHUB_ENV - - - name: Write all JSON content - run: | - echo "Entire JSON content:" - echo "${{ env.script_result }}" - - # - name: Run Manage-SDKSuppression-Label script from file - # run: | - # .\scripts\Manage-SDKSuppression-Label.ps1 - # env: - # GITHUB_EVENT_PULL_REQUEST_BASE_REPO_OWNER: ${{ github.event.pull_request.base.repo.owner.login }} - # GITHUB_EVENT_PULL_REQUEST_BASE_REPO_NAME: ${{ github.event.pull_request.base.repo.name }} - # GITHUB_EVENT_PULL_REQUEST_BASE_REF: ${{ github.event.pull_request.base.ref }} - # GITHUB_EVENT_PULL_REQUEST_HEAD_REPO_OWNER: ${{ github.event.pull_request.head.repo.owner.login }} - # GITHUB_EVENT_PULL_REQUEST_HEAD_REPO_NAME: ${{ github.event.pull_request.head.repo.name }} - # GITHUB_EVENT_PULL_REQUEST_HEAD_REF: ${{ github.event.pull_request.head.ref }} - # GITHUB_EVENT_PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }} - # GITHUB_TOKEN: ${{ secrets.TOKEN }} \ No newline at end of file diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 5342708483a2..78bf74a075ec 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -51,24 +51,9 @@ jobs: return JSON.stringify(prContext); result-encoding: string - # - name: Set GitHub env - # run: | - # echo "GITHUB_PULL_REQUEST_CONTEXT=${{ steps.Fetch-PullRequest-Context.outputs.result }}" >> $GITHUB_ENV - - # - name: Verify PR Context - # run: | - # echo "PR Info: $GITHUB_PULL_REQUEST_CONTEXT" - - name: Setup Node and run `npm ci` uses: ./.github/actions/setup-node-npm-ci - # - name: Set up Node.js - # uses: actions/setup-node@v4 - # with: - # node-version: '20' - - # - name: Run the script - # run: node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js - name: Run get suppressions label script id: run-suppressions-script env: @@ -76,11 +61,5 @@ jobs: GITHUB_TOKEN: ${{ secrets.SPEC_REPO_TOKEN }} run: | echo "PR_INFO=$GITHUB_PULL_REQUEST_CONTEXT" + node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js - result=$(node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js) - echo "SCRIPT_OUTPUT=$result" >> $GITHUB_ENV - - - name: Write all JSON content - run: | - echo "Entire JSON content:" - echo "${{ env.script_result }}" diff --git a/eng/tools/sdk-suppressions/package.json b/eng/tools/sdk-suppressions/package.json index 7bef4e21bd66..e5b28364f850 100644 --- a/eng/tools/sdk-suppressions/package.json +++ b/eng/tools/sdk-suppressions/package.json @@ -9,7 +9,7 @@ }, "scripts": { "build": "tsc --build", - "start": "npm run build & node cmd/sdk-suppressions-label.js" + "start": "npm run build && node cmd/sdk-suppressions-label.js" }, "engines": { "node": ">= 18.0.0" diff --git a/eng/tools/sdk-suppressions/src/index.ts b/eng/tools/sdk-suppressions/src/index.ts index a9a14be034c6..7b693f1582f1 100644 --- a/eng/tools/sdk-suppressions/src/index.ts +++ b/eng/tools/sdk-suppressions/src/index.ts @@ -12,7 +12,7 @@ export async function main() { const pullRequestContext = process.env.GITHUB_PULL_REQUEST_CONTEXT as string; const githubToken = process.env.GITHUB_TOKEN as string; if (pullRequestContext && githubToken) { - const _pullRequestContext = pullRequestContext as unknown as PullRequestContext; + const _pullRequestContext = JSON.parse(pullRequestContext) as unknown as PullRequestContext; const _token = githubToken; const changedLabels: {labelsToAdd: String[], labelsToRemove: String[]} = await updateSdkSuppressionsLabels(_pullRequestContext, _token); console.log(JSON.stringify(changedLabels)); diff --git a/package-lock.json b/package-lock.json index 8a2dae57d6c0..64caa96338fb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -48,9 +48,15 @@ } }, "eng/tools/node_modules/@types/node": { +<<<<<<< HEAD "version": "18.19.68", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.68.tgz", "integrity": "sha512-QGtpFH1vB99ZmTa63K4/FU8twThj4fuVSBkGddTp7uIL/cuoLWIUSL2RcOaigBhfR+hg5pgGkBnkoOxrTVBMKw==", +======= + "version": "18.19.67", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.67.tgz", + "integrity": "sha512-wI8uHusga+0ZugNp0Ol/3BqQfEcCCNfojtO6Oou9iVNGPTL6QNSdnUdqq85fRgIorLhLMuPIKpsN98QE9Nh+KQ==", +>>>>>>> c4622c1c04 (fix process env error) "dev": true, "license": "MIT", "dependencies": { @@ -271,6 +277,9 @@ } }, <<<<<<< HEAD +<<<<<<< HEAD +======= +>>>>>>> c4622c1c04 (fix process env error) "eng/tools/node_modules/vitest/node_modules/@vitest/mocker": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.8.tgz", @@ -296,7 +305,12 @@ "vite": { "optional": true } +<<<<<<< HEAD ======= +======= + } + }, +>>>>>>> c4622c1c04 (fix process env error) "eng/tools/sdk-suppressions": { "name": "@azure-tools/sdk-suppressions", "version": "1.0.0", @@ -549,6 +563,7 @@ "integrity": "sha512-AyoNMq3EORugHynFF8bN0TJh+zYxui/ApU5DoVEL7Xr1yMD6k9p5b90VD4HiCsP0dz8470ApFnjt5Vl6xCSzig==", "dev": true, "license": "MIT", +<<<<<<< HEAD "engines": { "node": ">=18.0.0" }, @@ -659,6 +674,8 @@ "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, "license": "MIT", +======= +>>>>>>> c4622c1c04 (fix process env error) "bin": { "prettier": "bin/prettier.cjs" }, @@ -3738,17 +3755,30 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { +<<<<<<< HEAD "version": "8.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.18.0.tgz", "integrity": "sha512-NR2yS7qUqCL7AIxdJUQf2MKKNDVNaig/dEB0GBLU7D+ZdHgK1NoH/3wsgO3OnPVipn51tG3MAwaODEGil70WEw==", +======= + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.17.0.tgz", + "integrity": "sha512-HU1KAdW3Tt8zQkdvNoIijfWDMvdSweFYm4hWh+KwhPstv+sCmWb89hCIP8msFm9N1R/ooh9honpSuvqKWlYy3w==", +>>>>>>> c4622c1c04 (fix process env error) "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", +<<<<<<< HEAD "@typescript-eslint/scope-manager": "8.18.0", "@typescript-eslint/type-utils": "8.18.0", "@typescript-eslint/utils": "8.18.0", "@typescript-eslint/visitor-keys": "8.18.0", +======= + "@typescript-eslint/scope-manager": "8.17.0", + "@typescript-eslint/type-utils": "8.17.0", + "@typescript-eslint/utils": "8.17.0", + "@typescript-eslint/visitor-keys": "8.17.0", +>>>>>>> c4622c1c04 (fix process env error) "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -3768,16 +3798,29 @@ } }, "node_modules/@typescript-eslint/parser": { +<<<<<<< HEAD "version": "8.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.18.0.tgz", "integrity": "sha512-hgUZ3kTEpVzKaK3uNibExUYm6SKKOmTU2BOxBSvOYwtJEPdVQ70kZJpPjstlnhCHcuc2WGfSbpKlb/69ttyN5Q==", +======= + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.17.0.tgz", + "integrity": "sha512-Drp39TXuUlD49F7ilHHCG7TTg8IkA+hxCuULdmzWYICxGXvDXmDmWEjJYZQYgf6l/TFfYNE167m7isnc3xlIEg==", +>>>>>>> c4622c1c04 (fix process env error) "dev": true, "license": "MITClause", "dependencies": { +<<<<<<< HEAD "@typescript-eslint/scope-manager": "8.18.0", "@typescript-eslint/types": "8.18.0", "@typescript-eslint/typescript-estree": "8.18.0", "@typescript-eslint/visitor-keys": "8.18.0", +======= + "@typescript-eslint/scope-manager": "8.17.0", + "@typescript-eslint/types": "8.17.0", + "@typescript-eslint/typescript-estree": "8.17.0", + "@typescript-eslint/visitor-keys": "8.17.0", +>>>>>>> c4622c1c04 (fix process env error) "debug": "^4.3.4" }, "engines": { @@ -3793,6 +3836,7 @@ } }, "node_modules/@typescript-eslint/scope-manager": { +<<<<<<< HEAD "version": "8.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.18.0.tgz", "integrity": "sha512-PNGcHop0jkK2WVYGotk/hxj+UFLhXtGPiGtiaWgVBVP1jhMoMCHlTyJA+hEj4rszoSdLTK3fN4oOatrL0Cp+Xw==", @@ -3801,6 +3845,16 @@ "dependencies": { "@typescript-eslint/types": "8.18.0", "@typescript-eslint/visitor-keys": "8.18.0" +======= + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.17.0.tgz", + "integrity": "sha512-/ewp4XjvnxaREtqsZjF4Mfn078RD/9GmiEAtTeLQ7yFdKnqwTOgRMSvFz4et9U5RiJQ15WTGXPLj89zGusvxBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.17.0", + "@typescript-eslint/visitor-keys": "8.17.0" +>>>>>>> c4622c1c04 (fix process env error) }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3811,6 +3865,7 @@ } }, "node_modules/@typescript-eslint/type-utils": { +<<<<<<< HEAD "version": "8.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.18.0.tgz", "integrity": "sha512-er224jRepVAVLnMF2Q7MZJCq5CsdH2oqjP4dT7K6ij09Kyd+R21r7UVJrF0buMVdZS5QRhDzpvzAxHxabQadow==", @@ -3819,6 +3874,16 @@ "dependencies": { "@typescript-eslint/typescript-estree": "8.18.0", "@typescript-eslint/utils": "8.18.0", +======= + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.17.0.tgz", + "integrity": "sha512-q38llWJYPd63rRnJ6wY/ZQqIzPrBCkPdpIsaCfkR3Q4t3p6sb422zougfad4TFW9+ElIFLVDzWGiGAfbb/v2qw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.17.0", + "@typescript-eslint/utils": "8.17.0", +>>>>>>> c4622c1c04 (fix process env error) "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -3830,6 +3895,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { +<<<<<<< HEAD "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" } @@ -3838,6 +3904,20 @@ "version": "8.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.18.0.tgz", "integrity": "sha512-FNYxgyTCAnFwTrzpBGq+zrnoTO4x0c1CKYY5MuUTzpScqmY5fmsh2o3+57lqdI3NZucBDCzDgdEbIaNfAjAHQA==", +======= + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.17.0.tgz", + "integrity": "sha512-gY2TVzeve3z6crqh2Ic7Cr+CAv6pfb0Egee7J5UAVWCpVvDI/F71wNfolIim4FE6hT15EbpZFVUj9j5i38jYXA==", +>>>>>>> c4622c1c04 (fix process env error) "dev": true, "license": "MIT", "engines": { @@ -3849,14 +3929,25 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { +<<<<<<< HEAD "version": "8.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.0.tgz", "integrity": "sha512-rqQgFRu6yPkauz+ms3nQpohwejS8bvgbPyIDq13cgEDbkXt4LH4OkDMT0/fN1RUtzG8e8AKJyDBoocuQh8qNeg==", +======= + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.17.0.tgz", + "integrity": "sha512-JqkOopc1nRKZpX+opvKqnM3XUlM7LpFMD0lYxTqOTKQfCWAmxw45e3qlOCsEqEB2yuacujivudOFpCnqkBDNMw==", +>>>>>>> c4622c1c04 (fix process env error) "dev": true, "license": "MIT", "dependencies": { +<<<<<<< HEAD "@typescript-eslint/types": "8.18.0", "@typescript-eslint/visitor-keys": "8.18.0", +======= + "@typescript-eslint/types": "8.17.0", + "@typescript-eslint/visitor-keys": "8.17.0", +>>>>>>> c4622c1c04 (fix process env error) "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -3902,16 +3993,28 @@ } }, "node_modules/@typescript-eslint/utils": { +<<<<<<< HEAD "version": "8.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.18.0.tgz", "integrity": "sha512-p6GLdY383i7h5b0Qrfbix3Vc3+J2k6QWw6UMUeY5JGfm3C5LbZ4QIZzJNoNOfgyRe0uuYKjvVOsO/jD4SJO+xg==", +======= + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.17.0.tgz", + "integrity": "sha512-bQC8BnEkxqG8HBGKwG9wXlZqg37RKSMY7v/X8VEWD8JG2JuTHuNK0VFvMPMUKQcbk6B+tf05k+4AShAEtCtJ/w==", +>>>>>>> c4622c1c04 (fix process env error) "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", +<<<<<<< HEAD "@typescript-eslint/scope-manager": "8.18.0", "@typescript-eslint/types": "8.18.0", "@typescript-eslint/typescript-estree": "8.18.0" +======= + "@typescript-eslint/scope-manager": "8.17.0", + "@typescript-eslint/types": "8.17.0", + "@typescript-eslint/typescript-estree": "8.17.0" +>>>>>>> c4622c1c04 (fix process env error) }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3921,6 +4024,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { +<<<<<<< HEAD "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" } @@ -3933,6 +4037,24 @@ "license": "MIT", "dependencies": { "@typescript-eslint/types": "8.18.0", +======= + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.17.0.tgz", + "integrity": "sha512-1Hm7THLpO6ww5QU6H/Qp+AusUUl+z/CAm3cNZZ0jQvon9yicgO7Rwd+/WWRpMKLYV6p2UvdbR27c86rzCPpreg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.17.0", +>>>>>>> c4622c1c04 (fix process env error) "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -5154,9 +5276,15 @@ } }, "node_modules/electron-to-chromium": { +<<<<<<< HEAD "version": "1.5.72", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.72.tgz", "integrity": "sha512-ZpSAUOZ2Izby7qnZluSrAlGgGQzucmFbN0n64dYzocYxnxV5ufurpj3VgEe4cUp7ir9LmeLxNYo8bVnlM8bQHw==", +======= + "version": "1.5.71", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.71.tgz", + "integrity": "sha512-dB68l59BI75W1BUGVTAEJy45CEVuEGy9qPVVQ8pnHyHMn36PLPPoE1mjLH+lo9rKulO3HC2OhbACI/8tCqJBcA==", +>>>>>>> c4622c1c04 (fix process env error) "dev": true, "license": "ISC" }, @@ -7232,9 +7360,15 @@ } }, "node_modules/magic-string": { +<<<<<<< HEAD "version": "0.30.15", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.15.tgz", "integrity": "sha512-zXeaYRgZ6ldS1RJJUrMrYgNJ4fdwnyI6tVqoiIhyCyv5IVTK9BU8Ic2l253GGETQHxI4HNUwhJ3fjDhKqEoaAw==", +======= + "version": "0.30.14", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.14.tgz", + "integrity": "sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==", +>>>>>>> c4622c1c04 (fix process env error) "dev": true, "license": "MIT", "dependencies": { @@ -9695,6 +9829,7 @@ } }, "node_modules/typescript-eslint": { +<<<<<<< HEAD "version": "8.18.0", "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.18.0.tgz", "integrity": "sha512-Xq2rRjn6tzVpAyHr3+nmSg1/9k9aIHnJ2iZeOH7cfGOWqTkXTm3kwpQglEuLGdNrYvPF+2gtAs+/KF5rjVo+WQ==", @@ -9704,6 +9839,17 @@ "@typescript-eslint/eslint-plugin": "8.18.0", "@typescript-eslint/parser": "8.18.0", "@typescript-eslint/utils": "8.18.0" +======= + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.17.0.tgz", + "integrity": "sha512-409VXvFd/f1br1DCbuKNFqQpXICoTB+V51afcwG1pn1a3Cp92MqAUges3YjwEdQ0cMUoCIodjVDAYzyD8h3SYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.17.0", + "@typescript-eslint/parser": "8.17.0", + "@typescript-eslint/utils": "8.17.0" +>>>>>>> c4622c1c04 (fix process env error) }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -9713,8 +9859,17 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { +<<<<<<< HEAD "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" +======= + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } +>>>>>>> c4622c1c04 (fix process env error) } }, "node_modules/uglify-js": { @@ -9924,9 +10079,15 @@ } }, "node_modules/vite-node/node_modules/@types/node": { +<<<<<<< HEAD "version": "22.10.2", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", +======= + "version": "22.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz", + "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==", +>>>>>>> c4622c1c04 (fix process env error) "dev": true, "license": "MIT", "optional": true, From e3f37a81b2a3b3578978e96e91177f6e1d752a1b Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 20:29:15 +0800 Subject: [PATCH 041/190] log to next step --- .github/workflows/SDK-Suppressions-Label.yaml | 13 ++++++++----- .../src/updateSdkSuppressionsLabel.ts | 4 ++-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 78bf74a075ec..011a87f44567 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -11,9 +11,6 @@ on: workflow_dispatch: -env: - script_result: '' - jobs: manage_sdk_suppressions_labels: runs-on: ubuntu-latest @@ -60,6 +57,12 @@ jobs: GITHUB_PULL_REQUEST_CONTEXT: ${{ steps.Fetch-PullRequest-Context.outputs.result }} GITHUB_TOKEN: ${{ secrets.SPEC_REPO_TOKEN }} run: | - echo "PR_INFO=$GITHUB_PULL_REQUEST_CONTEXT" - node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js + result=$(node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js) + echo "suppressions-lables=$result" >> $GITHUB_ENV + echo "::set-output name=result::$result" + - name: Write all labels + run: | + echo "Entire labels content:" + echo "${{ steps.run-suppressions-script.outputs.result }}" + echo $suppressions-lables \ No newline at end of file diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index 7d9fb8e70076..8c875f766e27 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -216,9 +216,9 @@ export async function updateSdkSuppressionsLabels(pr: PullRequestContext, github const appClient: Octokit = new Octokit({ auth: githubToken }); - console.log('---------------pr info', pr); + console.log('Pull Request Context', pr); const sdkNames = await getSdkSuppressionsSdkNames(appClient, pr); - console.log('=============== sdkNames', sdkNames); + console.log('Changed SdkNames', sdkNames); console.log(`updateSdkSuppressionsLabels: PR: ${pr.html_url} Get the required suppressions label based on compared SDK List ${sdkNames.join(", ")}`); let addSdkSuppressionsLabels: string[] = []; From 7b01d41d847f9407eb087b21226f10c29e14b1e0 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 20:35:36 +0800 Subject: [PATCH 042/190] add breaking change --- .github/workflows/SDK-Suppressions-Label.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 011a87f44567..fa78b792cdcb 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -58,11 +58,10 @@ jobs: GITHUB_TOKEN: ${{ secrets.SPEC_REPO_TOKEN }} run: | result=$(node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js) - echo "suppressions-lables=$result" >> $GITHUB_ENV + echo "Result from Node.js script: $result" # Debugging output echo "::set-output name=result::$result" - name: Write all labels run: | echo "Entire labels content:" - echo "${{ steps.run-suppressions-script.outputs.result }}" - echo $suppressions-lables \ No newline at end of file + echo "${{ steps.run-suppressions-script.outputs.result }}" \ No newline at end of file From 65d7ae4aa4349c49d8cdcc60f724ec76b1547b00 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 20:45:11 +0800 Subject: [PATCH 043/190] test next step get labels --- .github/workflows/SDK-Suppressions-Label.yaml | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index fa78b792cdcb..309577e2ed33 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -58,10 +58,19 @@ jobs: GITHUB_TOKEN: ${{ secrets.SPEC_REPO_TOKEN }} run: | result=$(node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js) - echo "Result from Node.js script: $result" # Debugging output - echo "::set-output name=result::$result" + + echo "Result from Node.js script: $result" + + result_object=$(echo "$result" | node -p "JSON.parse(process.argv[1])" "$result") + echo "::set-output name=result::$result_object" - name: Write all labels run: | echo "Entire labels content:" - echo "${{ steps.run-suppressions-script.outputs.result }}" \ No newline at end of file + result_json="${{ steps.run-suppressions-script.outputs.result }}" + + echo "Received JSON string: $result_json" + + result_object=$(echo "$result_json" | node -p "JSON.parse(process.argv[1])" "$result_json") + + echo "Processed result object: $result_object" \ No newline at end of file From 74c9dd23bfb6649b4dd8ac745068653b048d10e3 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 20:53:30 +0800 Subject: [PATCH 044/190] test next step get labels --- .github/workflows/SDK-Suppressions-Label.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 309577e2ed33..f76d9e65422d 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -57,17 +57,17 @@ jobs: GITHUB_PULL_REQUEST_CONTEXT: ${{ steps.Fetch-PullRequest-Context.outputs.result }} GITHUB_TOKEN: ${{ secrets.SPEC_REPO_TOKEN }} run: | - result=$(node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js) + labels=$(node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js) - echo "Result from Node.js script: $result" + echo "Result from Node.js script: $labels" - result_object=$(echo "$result" | node -p "JSON.parse(process.argv[1])" "$result") - echo "::set-output name=result::$result_object" + result_object=$(echo "$labels" | node -p "JSON.parse(process.argv[1])" "$labels") + echo "::set-output name=labels::$result_object" - name: Write all labels run: | echo "Entire labels content:" - result_json="${{ steps.run-suppressions-script.outputs.result }}" + result_json="${{ steps.run-suppressions-script.outputs.labels }}" echo "Received JSON string: $result_json" From 065be65d5c21f5a067e9dcbe8823f9ab7f8432f0 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 21:18:01 +0800 Subject: [PATCH 045/190] save result to file --- .github/workflows/SDK-Suppressions-Label.yaml | 21 +++++++------------ .../src/updateSdkSuppressionsLabel.ts | 7 +++++++ 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index f76d9e65422d..ecb67da32d22 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -11,6 +11,9 @@ on: workflow_dispatch: +env: + script_result: '' + jobs: manage_sdk_suppressions_labels: runs-on: ubuntu-latest @@ -57,20 +60,12 @@ jobs: GITHUB_PULL_REQUEST_CONTEXT: ${{ steps.Fetch-PullRequest-Context.outputs.result }} GITHUB_TOKEN: ${{ secrets.SPEC_REPO_TOKEN }} run: | - labels=$(node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js) - - echo "Result from Node.js script: $labels" - - result_object=$(echo "$labels" | node -p "JSON.parse(process.argv[1])" "$labels") - echo "::set-output name=labels::$result_object" + node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js + OUTPUT=$(cat output.json) + echo "Script output labels: $OUTPUT" + echo "script_result=$OUTPUT" >> $GITHUB_ENV - name: Write all labels run: | echo "Entire labels content:" - result_json="${{ steps.run-suppressions-script.outputs.labels }}" - - echo "Received JSON string: $result_json" - - result_object=$(echo "$result_json" | node -p "JSON.parse(process.argv[1])" "$result_json") - - echo "Processed result object: $result_object" \ No newline at end of file + echo "${{ env.script_result }}" \ No newline at end of file diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index 8c875f766e27..362e596ded66 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -1,4 +1,5 @@ import _ from "lodash"; +const fs = require("fs"); import { Octokit, RestEndpointMethodTypes } from "@octokit/rest"; import { OctokitResponse, ReposGetContentResponseData } from "@octokit/types"; import { sdkLabels, SdkName } from './sdk.js'; @@ -257,6 +258,12 @@ export async function updateSdkSuppressionsLabels(pr: PullRequestContext, github console.log(`updateSdkSuppressionsLabels: PR: ${pr.html_url} no add label`); } } + const result = { + labelsToAdd: addSdkSuppressionsLabels, + labelsToRemove: removeSdkSuppressionsLabels + } + fs.writeFileSync("output.json", JSON.stringify(result)); + console.log("JSON output saved to output.json"); return { labelsToAdd: addSdkSuppressionsLabels, From 3078936593b74ccd7f066b22c36970c8c8500c1d Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 6 Dec 2024 21:21:12 +0800 Subject: [PATCH 046/190] save result to file --- eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index 362e596ded66..dae2d179cafa 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -1,5 +1,5 @@ import _ from "lodash"; -const fs = require("fs"); +import * as fs from "fs"; import { Octokit, RestEndpointMethodTypes } from "@octokit/rest"; import { OctokitResponse, ReposGetContentResponseData } from "@octokit/types"; import { sdkLabels, SdkName } from './sdk.js'; From e4f3025d96d48fb49e9dd4b78c888e4d2564af61 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 15:43:09 +0800 Subject: [PATCH 047/190] add test upload test --- .github/workflows/SDK-Suppressions-Label.yaml | 1 + .github/workflows/update-labels.yaml | 4 ++++ eng/scripts/TypeSpec-Requirement.ps1 | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index ecb67da32d22..9603326b9318 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -16,6 +16,7 @@ env: jobs: manage_sdk_suppressions_labels: + name: breakingchange suppressions label Workflow runs-on: ubuntu-latest steps: diff --git a/.github/workflows/update-labels.yaml b/.github/workflows/update-labels.yaml index d1663f57ae8c..56ed9d619f9b 100644 --- a/.github/workflows/update-labels.yaml +++ b/.github/workflows/update-labels.yaml @@ -51,4 +51,8 @@ jobs: owner: ${{ inputs.owner }} repo: ${{ inputs.repo }} issue_number: ${{ inputs.issue_number }} +<<<<<<< HEAD run_id: ${{ inputs.run_id }} +======= + run_id: ${{ inputs.run_id }} +>>>>>>> d826a5a0c8 (add test upload test) diff --git a/eng/scripts/TypeSpec-Requirement.ps1 b/eng/scripts/TypeSpec-Requirement.ps1 index 6e0e0eb74971..d6e26534ea26 100644 --- a/eng/scripts/TypeSpec-Requirement.ps1 +++ b/eng/scripts/TypeSpec-Requirement.ps1 @@ -201,4 +201,4 @@ if ($pathsWithErrors.Count -gt 0) { exit 1 } -exit 0 +exit 0 \ No newline at end of file From f48e35430e072ba5bc52489e9fb1e43c67d31dc2 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 16:16:04 +0800 Subject: [PATCH 048/190] test update-lables --- .github/actions/context.js | 5 +---- .github/actions/update-labels/action.js | 13 ------------- 2 files changed, 1 insertion(+), 17 deletions(-) diff --git a/.github/actions/context.js b/.github/actions/context.js index 8dce041c2f22..6ccf74e1003c 100644 --- a/.github/actions/context.js +++ b/.github/actions/context.js @@ -1,13 +1,10 @@ // @ts-check /** - * Extracts inputs from context based on event name and properties. - * run_id is only defined for "workflow_run:completed" events. - * * @param {import('github-script').AsyncFunctionArguments['github']} github * @param {import('github-script').AsyncFunctionArguments['context']} context * @param {import('github-script').AsyncFunctionArguments['core']} core - * @returns {Promise<{owner: string, repo: string, head_sha: string, issue_number: number, run_id: number }>} + * @returns {Promise<{owner: string, repo: string, issue_number: number, run_id: number }>} */ async function extractInputs(github, context, core) { core.info(`extractInputs(${context.eventName}, ${context.payload.action})`); diff --git a/.github/actions/update-labels/action.js b/.github/actions/update-labels/action.js index 32607e8e278a..ae323e066842 100644 --- a/.github/actions/update-labels/action.js +++ b/.github/actions/update-labels/action.js @@ -33,19 +33,6 @@ module.exports = async ({ github, context, core }) => { artifactNames = artifacts.data.artifacts.map((a) => a.name); } else { -<<<<<<< HEAD - // TODO: List all artifacts of all workflows associated with issue_number - throw new Error("Required input 'run_id' not found in env or context"); -======= - const workflows = await github.rest.actions.listWorkflowRunsForRepo({ - owner, - repo, - event: 'pull_request', - status: 'completed', - head_sha: context.payload - }); - // TODO: List all artifacts of issue_number ->>>>>>> ff897aaa2e (test action using js) } core.info(`artifactNames: ${JSON.stringify(artifactNames)}`); From a2e19c9fb371326b5ec50ad8fb471b91f405f106 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 16:29:54 +0800 Subject: [PATCH 049/190] test update-lables --- .github/workflows/update-labels.yaml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/update-labels.yaml b/.github/workflows/update-labels.yaml index 56ed9d619f9b..d1663f57ae8c 100644 --- a/.github/workflows/update-labels.yaml +++ b/.github/workflows/update-labels.yaml @@ -51,8 +51,4 @@ jobs: owner: ${{ inputs.owner }} repo: ${{ inputs.repo }} issue_number: ${{ inputs.issue_number }} -<<<<<<< HEAD run_id: ${{ inputs.run_id }} -======= - run_id: ${{ inputs.run_id }} ->>>>>>> d826a5a0c8 (add test upload test) From 799f9d36b1423112008957bbb0620d0752443018 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 16:51:20 +0800 Subject: [PATCH 050/190] add test --- .github/workflows/test-workflow-run.yaml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .github/workflows/test-workflow-run.yaml diff --git a/.github/workflows/test-workflow-run.yaml b/.github/workflows/test-workflow-run.yaml new file mode 100644 index 000000000000..8ab838ac040e --- /dev/null +++ b/.github/workflows/test-workflow-run.yaml @@ -0,0 +1,16 @@ +name: Test Workflow Run + +on: + workflow_run: + workflows: + - breakingchange suppressions label Workflow + types: + - completed + +jobs: + test-workflow-run: + name: Test Workflow Run + runs-on: ubuntu-latest + steps: + - name: Confirm Trigger + run: echo "Workflow triggered by Trigger Workflow" From 44e579c8e29f5c8b9d8cd75fc9bbcb18e94ad16b Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 16:57:59 +0800 Subject: [PATCH 051/190] add test --- .github/workflows/trigger-workflow.yaml | 14 ++++++++++++++ ...st-workflow-run.yaml => workflow-run-test.yaml} | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/trigger-workflow.yaml rename .github/workflows/{test-workflow-run.yaml => workflow-run-test.yaml} (84%) diff --git a/.github/workflows/trigger-workflow.yaml b/.github/workflows/trigger-workflow.yaml new file mode 100644 index 000000000000..fd0e517f1de0 --- /dev/null +++ b/.github/workflows/trigger-workflow.yaml @@ -0,0 +1,14 @@ +name: Trigger Workflow + +on: + push: + branches: + - main + +jobs: + trigger: + name: Trigger Test + runs-on: ubuntu-latest + steps: + - name: Print Message + run: echo "Trigger workflow completed" diff --git a/.github/workflows/test-workflow-run.yaml b/.github/workflows/workflow-run-test.yaml similarity index 84% rename from .github/workflows/test-workflow-run.yaml rename to .github/workflows/workflow-run-test.yaml index 8ab838ac040e..c0c55b612465 100644 --- a/.github/workflows/test-workflow-run.yaml +++ b/.github/workflows/workflow-run-test.yaml @@ -3,7 +3,7 @@ name: Test Workflow Run on: workflow_run: workflows: - - breakingchange suppressions label Workflow + - Trigger Workflow types: - completed From c2e91dac8a8cff8a6edc1cb6ffb1deb782cf38d4 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 17:03:57 +0800 Subject: [PATCH 052/190] add test --- .github/workflows/workflow-run-test.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/workflow-run-test.yaml b/.github/workflows/workflow-run-test.yaml index c0c55b612465..2ccfee44775a 100644 --- a/.github/workflows/workflow-run-test.yaml +++ b/.github/workflows/workflow-run-test.yaml @@ -13,4 +13,4 @@ jobs: runs-on: ubuntu-latest steps: - name: Confirm Trigger - run: echo "Workflow triggered by Trigger Workflow" + run: echo "Workflow triggered by Trigger Workflow 1" From ee882f633517fb0dc0c50bba1b2b5c32cbfd442c Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 17:10:18 +0800 Subject: [PATCH 053/190] fix test bug --- .github/workflows/trigger-workflow.yaml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/trigger-workflow.yaml b/.github/workflows/trigger-workflow.yaml index fd0e517f1de0..2bbdcb60ebba 100644 --- a/.github/workflows/trigger-workflow.yaml +++ b/.github/workflows/trigger-workflow.yaml @@ -1,9 +1,6 @@ name: Trigger Workflow -on: - push: - branches: - - main +on: pull_request jobs: trigger: From 9afc6d2f037fd221a29c4feb06e792cd8a1b663b Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 17:19:02 +0800 Subject: [PATCH 054/190] add bug code --- .github/workflows/workflow-run-test.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/workflow-run-test.yaml b/.github/workflows/workflow-run-test.yaml index 2ccfee44775a..dd2b6c406280 100644 --- a/.github/workflows/workflow-run-test.yaml +++ b/.github/workflows/workflow-run-test.yaml @@ -11,6 +11,8 @@ jobs: test-workflow-run: name: Test Workflow Run runs-on: ubuntu-latest + env: + ACTIONS_STEP_DEBUG: true steps: - name: Confirm Trigger run: echo "Workflow triggered by Trigger Workflow 1" From 6a8c5de32a8016a61156b728a0e895dbf90e645b Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 18:00:01 +0800 Subject: [PATCH 055/190] add test label --- .github/workflows/trigger-workflow.yaml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/.github/workflows/trigger-workflow.yaml b/.github/workflows/trigger-workflow.yaml index 2bbdcb60ebba..cd1bf61e99fe 100644 --- a/.github/workflows/trigger-workflow.yaml +++ b/.github/workflows/trigger-workflow.yaml @@ -7,5 +7,17 @@ jobs: name: Trigger Test runs-on: ubuntu-latest steps: - - name: Print Message - run: echo "Trigger workflow completed" + - name: Create empty file to upload artifact + run: "> $RUNNER_TEMP/empty.txt" + shell: bash + + # A recommended format is "key=value". The maximum length is reported to be 260 characters. + # + # A full list of invalid artifact name characters is documented here: + # https://github.com/actions/toolkit/blob/main/packages/artifact/src/internal/upload/path-and-artifact-name-validation.ts + - uses: actions/upload-artifact@v4 + with: + name: label-aaa=true + path: ${{ runner.temp }}/empty.txt + if-no-files-found: error + overwrite: true From 511f7f08e781070e4d90b6c59ea9a9113274eb57 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 18:02:50 +0800 Subject: [PATCH 056/190] add test label --- .github/workflows/update-labels.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-labels.yaml b/.github/workflows/update-labels.yaml index d1663f57ae8c..b14a3c136620 100644 --- a/.github/workflows/update-labels.yaml +++ b/.github/workflows/update-labels.yaml @@ -6,7 +6,7 @@ on: # types: [labeled, unlabeled] # If an upstream workflow if completed, get only the artifacts from that workflow, and update labels workflow_run: - workflows: ["TypeSpec Requirement"] + workflows: ["TypeSpec Requirement", "Trigger Workflow"] types: [completed] workflow_dispatch: inputs: From bb3d73b83b7ad98e2060d8ad996aa39d4d3dbbbc Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 18:39:47 +0800 Subject: [PATCH 057/190] add test label --- .github/workflows/trigger-workflow.yaml | 17 +++++++++-------- .github/workflows/update-labels.yaml | 2 +- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/.github/workflows/trigger-workflow.yaml b/.github/workflows/trigger-workflow.yaml index cd1bf61e99fe..ca6a59d29fee 100644 --- a/.github/workflows/trigger-workflow.yaml +++ b/.github/workflows/trigger-workflow.yaml @@ -3,21 +3,22 @@ name: Trigger Workflow on: pull_request jobs: - trigger: + upload-artifacts: name: Trigger Test runs-on: ubuntu-latest + strategy: + matrix: + artifact-name: ["label-test1=true", "label-test2=true", "label-aaa=false"] + steps: - - name: Create empty file to upload artifact + - name: Create empty file to upload artifacts run: "> $RUNNER_TEMP/empty.txt" shell: bash - # A recommended format is "key=value". The maximum length is reported to be 260 characters. - # - # A full list of invalid artifact name characters is documented here: - # https://github.com/actions/toolkit/blob/main/packages/artifact/src/internal/upload/path-and-artifact-name-validation.ts - - uses: actions/upload-artifact@v4 + - name: Upload artifact + uses: actions/upload-artifact@v4 with: - name: label-aaa=true + name: ${{ matrix.artifact-name }} # Artifact name from matrix path: ${{ runner.temp }}/empty.txt if-no-files-found: error overwrite: true diff --git a/.github/workflows/update-labels.yaml b/.github/workflows/update-labels.yaml index b14a3c136620..4f4810ec76a4 100644 --- a/.github/workflows/update-labels.yaml +++ b/.github/workflows/update-labels.yaml @@ -6,7 +6,7 @@ on: # types: [labeled, unlabeled] # If an upstream workflow if completed, get only the artifacts from that workflow, and update labels workflow_run: - workflows: ["TypeSpec Requirement", "Trigger Workflow"] + workflows: ["TypeSpec Requirement", "Trigger Workflow", "breakingchange suppressions label Workflow"] types: [completed] workflow_dispatch: inputs: From 3aaf326dfc68f9cb9c4f5fe940cb82ab66ed4fde Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 18:48:04 +0800 Subject: [PATCH 058/190] add test label --- .github/workflows/trigger-workflow.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/trigger-workflow.yaml b/.github/workflows/trigger-workflow.yaml index ca6a59d29fee..3ab1dcdbe296 100644 --- a/.github/workflows/trigger-workflow.yaml +++ b/.github/workflows/trigger-workflow.yaml @@ -5,10 +5,13 @@ on: pull_request jobs: upload-artifacts: name: Trigger Test + permissions: + contents: read + pull-requests: write runs-on: ubuntu-latest strategy: matrix: - artifact-name: ["label-test1=true", "label-test2=true", "label-aaa=false"] + artifact-name: ["label-test1=true", "label-test2=false", "label-aaa=false"] steps: - name: Create empty file to upload artifacts From 6ace84868f519a23e051eef896480b1c91dcbea7 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 19:01:00 +0800 Subject: [PATCH 059/190] test echo env --- .github/workflows/SDK-Suppressions-Label.yaml | 19 ++++++++++++------- .../src/updateSdkSuppressionsLabel.ts | 12 ++++++++---- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 9603326b9318..79e6e9df66f5 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -61,12 +61,17 @@ jobs: GITHUB_PULL_REQUEST_CONTEXT: ${{ steps.Fetch-PullRequest-Context.outputs.result }} GITHUB_TOKEN: ${{ secrets.SPEC_REPO_TOKEN }} run: | - node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js - OUTPUT=$(cat output.json) - echo "Script output labels: $OUTPUT" - echo "script_result=$OUTPUT" >> $GITHUB_ENV + result=$(node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js) + echo "::set-output name=suppressions-result::$result" + # OUTPUT=$(cat output.json) + # echo "Script output labels: $OUTPUT" + # echo "script_result=$OUTPUT" >> $GITHUB_ENV - - name: Write all labels + # - name: Write all labels + # run: | + # echo "Entire labels content:" + # echo "${{ env.script_result }}" + + - name: Use the suppressions result run: | - echo "Entire labels content:" - echo "${{ env.script_result }}" \ No newline at end of file + echo "The result from the script is: ${{ steps.run-suppressions-script.outputs.suppressions-result }}" diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index dae2d179cafa..44bc5450ca45 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -265,10 +265,14 @@ export async function updateSdkSuppressionsLabels(pr: PullRequestContext, github fs.writeFileSync("output.json", JSON.stringify(result)); console.log("JSON output saved to output.json"); - return { - labelsToAdd: addSdkSuppressionsLabels, - labelsToRemove: removeSdkSuppressionsLabels - } +// return { +// labelsToAdd: addSdkSuppressionsLabels, +// labelsToRemove: removeSdkSuppressionsLabels +// } + return { + labelsToAdd: ['a1', 'a2'], + labelsToRemove: ['abc'] + } } function logSuppressionFileInfo(pr: { owner: string, repo: string, ref: string, path: string }) { From ce838f3ac58b313e240137a04419f0c7d5230d74 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 19:13:19 +0800 Subject: [PATCH 060/190] test set env --- .github/actions/update-labels/action.js | 2 ++ .github/workflows/SDK-Suppressions-Label.yaml | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/actions/update-labels/action.js b/.github/actions/update-labels/action.js index ae323e066842..05897dadcea1 100644 --- a/.github/actions/update-labels/action.js +++ b/.github/actions/update-labels/action.js @@ -70,6 +70,8 @@ module.exports = async ({ github, context, core }) => { core.info(`labelsToAdd: ${JSON.stringify(labelsToAdd)}`); core.info(`labelsToRemove: ${JSON.stringify(labelsToRemove)}`); + core.info(`issue_number: ${JSON.stringify(issue_number)}`); + if (labelsToAdd.length > 0) { await github.rest.issues.addLabels({ owner: owner, diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 79e6e9df66f5..a61371ece939 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -62,7 +62,11 @@ jobs: GITHUB_TOKEN: ${{ secrets.SPEC_REPO_TOKEN }} run: | result=$(node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js) - echo "::set-output name=suppressions-result::$result" + + + echo "suppressions-result=$result" >> $GITHUB_ENV + + # echo "::set-output name=suppressions-result::$result" # OUTPUT=$(cat output.json) # echo "Script output labels: $OUTPUT" # echo "script_result=$OUTPUT" >> $GITHUB_ENV From 5ae3db7da2af3ba8feef4f7d11150e030fa2df45 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 19:26:31 +0800 Subject: [PATCH 061/190] add new job --- .github/workflows/SDK-Suppressions-Label.yaml | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index a61371ece939..a4862f87d0aa 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -13,11 +13,14 @@ on: env: script_result: '' + suppressions-result: '' jobs: manage_sdk_suppressions_labels: name: breakingchange suppressions label Workflow runs-on: ubuntu-latest + outputs: + suppressions-result: ${{ steps.run-suppressions-script.outputs.suppressions-result }} steps: - name: Checkout code @@ -78,4 +81,15 @@ jobs: - name: Use the suppressions result run: | - echo "The result from the script is: ${{ steps.run-suppressions-script.outputs.suppressions-result }}" + # echo "The result from the script is: ${{ steps.run-suppressions-script.outputs.suppressions-result }}" + echo "The suppressions result is ${{ env.suppressions-result }}" + + update-suppressions-labels: + runs-on: ubuntu-latest + needs: manage_sdk_suppressions_labels + env: + SUPPRESSIONS_RESULT: ${{ needs.manage_sdk_suppressions_labels.outputs.suppressions-result }} + steps: + - name: Use the suppressions result in job2 + run: | + echo "The result from job1 is: $SUPPRESSIONS_RESULT" \ No newline at end of file From c16e11cb3ed71c8f6b0e4b7de12cd8456c58cf5b Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 19:34:44 +0800 Subject: [PATCH 062/190] fix name buyg --- .github/workflows/SDK-Suppressions-Label.yaml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index a4862f87d0aa..5bc89de56770 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -10,17 +10,16 @@ on: - reopened workflow_dispatch: - -env: - script_result: '' - suppressions-result: '' jobs: manage_sdk_suppressions_labels: name: breakingchange suppressions label Workflow runs-on: ubuntu-latest + env: + script_result: '' + suppressions-result: '' outputs: - suppressions-result: ${{ steps.run-suppressions-script.outputs.suppressions-result }} + suppressions-result-out: ${{ steps.run-suppressions-script.outputs.suppressions-result-output }} steps: - name: Checkout code @@ -69,7 +68,8 @@ jobs: echo "suppressions-result=$result" >> $GITHUB_ENV - # echo "::set-output name=suppressions-result::$result" + echo "::set-output name=suppressions-result-output::$result" + # OUTPUT=$(cat output.json) # echo "Script output labels: $OUTPUT" # echo "script_result=$OUTPUT" >> $GITHUB_ENV @@ -88,8 +88,8 @@ jobs: runs-on: ubuntu-latest needs: manage_sdk_suppressions_labels env: - SUPPRESSIONS_RESULT: ${{ needs.manage_sdk_suppressions_labels.outputs.suppressions-result }} + SUPPRESSIONS_LABELS: ${{ needs.manage_sdk_suppressions_labels.outputs.suppressions-result-out }} steps: - name: Use the suppressions result in job2 run: | - echo "The result from job1 is: $SUPPRESSIONS_RESULT" \ No newline at end of file + echo "The result from job1 is: $SUPPRESSIONS_LABELS" \ No newline at end of file From ff729258ec1eb6597bd4eeecf5e5acb3470eecb3 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 19:43:06 +0800 Subject: [PATCH 063/190] bug env --- .github/workflows/SDK-Suppressions-Label.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 5bc89de56770..d525c4533113 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -81,8 +81,9 @@ jobs: - name: Use the suppressions result run: | + echo "11111" # echo "The result from the script is: ${{ steps.run-suppressions-script.outputs.suppressions-result }}" - echo "The suppressions result is ${{ env.suppressions-result }}" + # echo "The suppressions result is ${{ env.suppressions-result }}" update-suppressions-labels: runs-on: ubuntu-latest @@ -92,4 +93,5 @@ jobs: steps: - name: Use the suppressions result in job2 run: | + echo "2222" echo "The result from job1 is: $SUPPRESSIONS_LABELS" \ No newline at end of file From 215eaeea53c3d00a229f94ab771de44cb9b5b8b4 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 19:48:29 +0800 Subject: [PATCH 064/190] bug env --- .github/workflows/SDK-Suppressions-Label.yaml | 39 ++++++++----------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index d525c4533113..572a5502afe8 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -12,7 +12,7 @@ on: workflow_dispatch: jobs: - manage_sdk_suppressions_labels: + manage-sdk-suppressions-labels: name: breakingchange suppressions label Workflow runs-on: ubuntu-latest env: @@ -65,33 +65,28 @@ jobs: run: | result=$(node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js) - + echo "Cleaned result: $result" echo "suppressions-result=$result" >> $GITHUB_ENV - echo "::set-output name=suppressions-result-output::$result" - - # OUTPUT=$(cat output.json) - # echo "Script output labels: $OUTPUT" - # echo "script_result=$OUTPUT" >> $GITHUB_ENV # - name: Write all labels # run: | # echo "Entire labels content:" # echo "${{ env.script_result }}" - - name: Use the suppressions result - run: | - echo "11111" - # echo "The result from the script is: ${{ steps.run-suppressions-script.outputs.suppressions-result }}" - # echo "The suppressions result is ${{ env.suppressions-result }}" + # - name: Use the suppressions result + # run: | + # echo "11111" + # # echo "The result from the script is: ${{ steps.run-suppressions-script.outputs.suppressions-result }}" + # echo "The suppressions result is ${{ env.suppressions-result }}" - update-suppressions-labels: - runs-on: ubuntu-latest - needs: manage_sdk_suppressions_labels - env: - SUPPRESSIONS_LABELS: ${{ needs.manage_sdk_suppressions_labels.outputs.suppressions-result-out }} - steps: - - name: Use the suppressions result in job2 - run: | - echo "2222" - echo "The result from job1 is: $SUPPRESSIONS_LABELS" \ No newline at end of file + # update-suppressions-labels: + # runs-on: ubuntu-latest + # needs: manage-sdk-suppressions-labels + # env: + # SUPPRESSIONS_LABELS: ${{ needs.manage-sdk-suppressions-labels.outputs.suppressions-result-out }} + # steps: + # - name: Use the suppressions result in job2 + # run: | + # echo "2222" + # echo "The result from job1 is: $SUPPRESSIONS_LABELS" \ No newline at end of file From b8bd9f861198f7bcd2ff6001832fa8ccac28f0d5 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 19:57:06 +0800 Subject: [PATCH 065/190] bug env --- .github/workflows/SDK-Suppressions-Label.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 572a5502afe8..026856101c8a 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -64,9 +64,9 @@ jobs: GITHUB_TOKEN: ${{ secrets.SPEC_REPO_TOKEN }} run: | result=$(node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js) - echo "Cleaned result: $result" - echo "suppressions-result=$result" >> $GITHUB_ENV + + # echo "suppressions-result=$result" >> $GITHUB_ENV # - name: Write all labels From 399965f0fc3de14012f00d140c3fbdf047488942 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 20:02:25 +0800 Subject: [PATCH 066/190] bug env --- .github/workflows/SDK-Suppressions-Label.yaml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 026856101c8a..61572570db11 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -17,7 +17,6 @@ jobs: runs-on: ubuntu-latest env: script_result: '' - suppressions-result: '' outputs: suppressions-result-out: ${{ steps.run-suppressions-script.outputs.suppressions-result-output }} @@ -65,9 +64,7 @@ jobs: run: | result=$(node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js) echo "Cleaned result: $result" - - # echo "suppressions-result=$result" >> $GITHUB_ENV - + echo "suppressions-result=$result" >> $GITHUB_ENV # - name: Write all labels # run: | From 88a1a2d678e624bd14ae3e85df817fe15abee5c6 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 20:04:56 +0800 Subject: [PATCH 067/190] bug env --- .github/workflows/SDK-Suppressions-Label.yaml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 61572570db11..93b8676c04b1 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -62,9 +62,10 @@ jobs: GITHUB_PULL_REQUEST_CONTEXT: ${{ steps.Fetch-PullRequest-Context.outputs.result }} GITHUB_TOKEN: ${{ secrets.SPEC_REPO_TOKEN }} run: | - result=$(node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js) - echo "Cleaned result: $result" - echo "suppressions-result=$result" >> $GITHUB_ENV + script-result=$(node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js) + echo "Cleaned result: $script-result" + + # echo "suppressions-result=$script-result" >> $GITHUB_ENV # - name: Write all labels # run: | From 75f3321f8ce23e16cb26c767c83e449a60c9e714 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 20:17:46 +0800 Subject: [PATCH 068/190] bug env --- .github/workflows/SDK-Suppressions-Label.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 93b8676c04b1..aff5da6e9b7c 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -62,8 +62,8 @@ jobs: GITHUB_PULL_REQUEST_CONTEXT: ${{ steps.Fetch-PullRequest-Context.outputs.result }} GITHUB_TOKEN: ${{ secrets.SPEC_REPO_TOKEN }} run: | - script-result=$(node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js) - echo "Cleaned result: $script-result" + saresult=$(node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js) + echo "Cleaned result: $saresult" # echo "suppressions-result=$script-result" >> $GITHUB_ENV From c7df20c76634a6a456057ebb36b6ac05accb87a2 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 20:24:11 +0800 Subject: [PATCH 069/190] bug env --- .github/workflows/SDK-Suppressions-Label.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index aff5da6e9b7c..d6231f347754 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -64,8 +64,7 @@ jobs: run: | saresult=$(node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js) echo "Cleaned result: $saresult" - - # echo "suppressions-result=$script-result" >> $GITHUB_ENV + echo "suppressions-result=$saresult" >> $GITHUB_ENV # - name: Write all labels # run: | From 715b39db196719257025a691286ff25d4b2058ab Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 20:30:07 +0800 Subject: [PATCH 070/190] bug env --- .github/workflows/SDK-Suppressions-Label.yaml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index d6231f347754..c63577a14dea 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -62,14 +62,16 @@ jobs: GITHUB_PULL_REQUEST_CONTEXT: ${{ steps.Fetch-PullRequest-Context.outputs.result }} GITHUB_TOKEN: ${{ secrets.SPEC_REPO_TOKEN }} run: | - saresult=$(node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js) - echo "Cleaned result: $saresult" - echo "suppressions-result=$saresult" >> $GITHUB_ENV + node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js + OUTPUT=$(cat output.json) + echo "Script output labels: $OUTPUT" + echo "script_result=$OUTPUT" >> $GITHUB_ENV - # - name: Write all labels - # run: | - # echo "Entire labels content:" - # echo "${{ env.script_result }}" + - name: Write all labels + run: | + echo "Entire labels content:" + echo "${{ env.script_result }}" + echo "The result from the script is: ${{ steps.run-suppressions-script.outputs.suppressions-result }}" # - name: Use the suppressions result # run: | From 9864b8a156dd44a94c891ae9bbe85c36d9cc8d25 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 20:37:16 +0800 Subject: [PATCH 071/190] fix eng --- .github/workflows/SDK-Suppressions-Label.yaml | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index c63577a14dea..9d63051eb1f2 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -79,13 +79,13 @@ jobs: # # echo "The result from the script is: ${{ steps.run-suppressions-script.outputs.suppressions-result }}" # echo "The suppressions result is ${{ env.suppressions-result }}" - # update-suppressions-labels: - # runs-on: ubuntu-latest - # needs: manage-sdk-suppressions-labels - # env: - # SUPPRESSIONS_LABELS: ${{ needs.manage-sdk-suppressions-labels.outputs.suppressions-result-out }} - # steps: - # - name: Use the suppressions result in job2 - # run: | - # echo "2222" - # echo "The result from job1 is: $SUPPRESSIONS_LABELS" \ No newline at end of file + update-suppressions-labels: + runs-on: ubuntu-latest + needs: manage-sdk-suppressions-labels + env: + SUPPRESSIONS_LABELS: ${{ needs.manage-sdk-suppressions-labels.outputs.suppressions-result-out }} + steps: + - name: Use the suppressions result in job2 + run: | + echo "2222" + echo "The result from job1 is: $SUPPRESSIONS_LABELS" \ No newline at end of file From ac6cfb5a5ec592b252a39e3be68a17caa478da83 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 20:51:47 +0800 Subject: [PATCH 072/190] fix eng --- .github/workflows/SDK-Suppressions-Label.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 9d63051eb1f2..b7f5e6fb7e7e 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -66,12 +66,14 @@ jobs: OUTPUT=$(cat output.json) echo "Script output labels: $OUTPUT" echo "script_result=$OUTPUT" >> $GITHUB_ENV + echo "::set-output name=suppressions-result-output::$result" - name: Write all labels run: | echo "Entire labels content:" echo "${{ env.script_result }}" - echo "The result from the script is: ${{ steps.run-suppressions-script.outputs.suppressions-result }}" + + # echo "The result from the script is: ${{ steps.run-suppressions-script.outputs.suppressions-result }}" # - name: Use the suppressions result # run: | From 0525cfe8af075293b865341c236b330f8daa5b76 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 20:58:00 +0800 Subject: [PATCH 073/190] rename output file name --- .github/workflows/SDK-Suppressions-Label.yaml | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index b7f5e6fb7e7e..832101ed8988 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -66,28 +66,20 @@ jobs: OUTPUT=$(cat output.json) echo "Script output labels: $OUTPUT" echo "script_result=$OUTPUT" >> $GITHUB_ENV - echo "::set-output name=suppressions-result-output::$result" + echo "::set-output name=suppressions-result-output::$OUTPUT" - name: Write all labels run: | echo "Entire labels content:" echo "${{ env.script_result }}" - # echo "The result from the script is: ${{ steps.run-suppressions-script.outputs.suppressions-result }}" - - # - name: Use the suppressions result - # run: | - # echo "11111" - # # echo "The result from the script is: ${{ steps.run-suppressions-script.outputs.suppressions-result }}" - # echo "The suppressions result is ${{ env.suppressions-result }}" - update-suppressions-labels: runs-on: ubuntu-latest needs: manage-sdk-suppressions-labels env: SUPPRESSIONS_LABELS: ${{ needs.manage-sdk-suppressions-labels.outputs.suppressions-result-out }} steps: - - name: Use the suppressions result in job2 + - name: Use the suppressions result in job manage-sdk-suppressions-labels run: | echo "2222" echo "The result from job1 is: $SUPPRESSIONS_LABELS" \ No newline at end of file From 3aa3ca5d144ae421548180501e1543bde0d9b689 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 21:03:54 +0800 Subject: [PATCH 074/190] rename output file name --- .github/workflows/SDK-Suppressions-Label.yaml | 5 ++++- .../src/updateSdkSuppressionsLabel.ts | 20 +++++++++---------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 832101ed8988..b095d469d1aa 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -64,7 +64,7 @@ jobs: run: | node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js OUTPUT=$(cat output.json) - echo "Script output labels: $OUTPUT" + echo "Script output labels1111: $OUTPUT" echo "script_result=$OUTPUT" >> $GITHUB_ENV echo "::set-output name=suppressions-result-output::$OUTPUT" @@ -81,5 +81,8 @@ jobs: steps: - name: Use the suppressions result in job manage-sdk-suppressions-labels run: | + echo "11111" + OUTPUT=$(cat output.json) + echo "Script output labels2222: $OUTPUT" echo "2222" echo "The result from job1 is: $SUPPRESSIONS_LABELS" \ No newline at end of file diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index 44bc5450ca45..63fae7bc7127 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -258,21 +258,19 @@ export async function updateSdkSuppressionsLabels(pr: PullRequestContext, github console.log(`updateSdkSuppressionsLabels: PR: ${pr.html_url} no add label`); } } - const result = { + + const willSaveOutput = { + labelsToAdd: ['a1', 'b1'], + labelsToRemove: ['c1'] + }; + fs.writeFileSync("output.json", JSON.stringify(willSaveOutput)); + console.log("JSON output saved to output.json"); + + return { labelsToAdd: addSdkSuppressionsLabels, labelsToRemove: removeSdkSuppressionsLabels } - fs.writeFileSync("output.json", JSON.stringify(result)); - console.log("JSON output saved to output.json"); -// return { -// labelsToAdd: addSdkSuppressionsLabels, -// labelsToRemove: removeSdkSuppressionsLabels -// } - return { - labelsToAdd: ['a1', 'a2'], - labelsToRemove: ['abc'] - } } function logSuppressionFileInfo(pr: { owner: string, repo: string, ref: string, path: string }) { From 92faeb4d8293111c9f401f82ccb60fa0b11eeb1a Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 21:14:54 +0800 Subject: [PATCH 075/190] add loop to update label --- .github/workflows/SDK-Suppressions-Label.yaml | 21 ++++++++++++++----- .../src/updateSdkSuppressionsLabel.ts | 6 +++++- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index b095d469d1aa..be7c6aa62603 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -78,11 +78,22 @@ jobs: needs: manage-sdk-suppressions-labels env: SUPPRESSIONS_LABELS: ${{ needs.manage-sdk-suppressions-labels.outputs.suppressions-result-out }} + strategy: + matrix: + artifact-name: ${{ fromJson(needs.manage-sdk-suppressions-labels.outputs.suppressions-result-out) }} steps: - name: Use the suppressions result in job manage-sdk-suppressions-labels run: | - echo "11111" - OUTPUT=$(cat output.json) - echo "Script output labels2222: $OUTPUT" - echo "2222" - echo "The result from job1 is: $SUPPRESSIONS_LABELS" \ No newline at end of file + echo "The result from job1 is: $SUPPRESSIONS_LABELS" + + - name: Create empty file to upload artifacts + run: "> $RUNNER_TEMP/empty.txt" + shell: bash + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.artifact-name }} # Artifact name from matrix + path: ${{ runner.temp }}/empty.txt + if-no-files-found: error + overwrite: true \ No newline at end of file diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index 63fae7bc7127..c76fc6842c17 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -259,10 +259,14 @@ export async function updateSdkSuppressionsLabels(pr: PullRequestContext, github } } - const willSaveOutput = { + const result = { labelsToAdd: ['a1', 'b1'], labelsToRemove: ['c1'] }; + const willSaveOutput = [ + ...result.labelsToAdd.map(label => `label-${label}=true`), + ...result.labelsToRemove.map(label => `label-${label}=false`) + ]; fs.writeFileSync("output.json", JSON.stringify(willSaveOutput)); console.log("JSON output saved to output.json"); From 1602b11d294aa1410c7ddce69164b76075d41578 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 21:28:03 +0800 Subject: [PATCH 076/190] rename workflow name --- .github/workflows/SDK-Suppressions-Label.yaml | 28 +++++-------------- .github/workflows/update-labels.yaml | 2 +- .../src/updateSdkSuppressionsLabel.ts | 4 +-- 3 files changed, 10 insertions(+), 24 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index be7c6aa62603..7106e5a4d750 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -1,4 +1,4 @@ -name: breakingchange suppressions label Workflow +name: Manage SDK Breakingchange Suppressions Labels Workflow on: pull_request: @@ -12,13 +12,11 @@ on: workflow_dispatch: jobs: - manage-sdk-suppressions-labels: + process-sdk-suppressions-labels: name: breakingchange suppressions label Workflow runs-on: ubuntu-latest - env: - script_result: '' outputs: - suppressions-result-out: ${{ steps.run-suppressions-script.outputs.suppressions-result-output }} + process-sdk-suppressions-output: ${{ steps.run-suppressions-script.outputs.suppressions-result-output }} steps: - name: Checkout code @@ -64,28 +62,16 @@ jobs: run: | node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js OUTPUT=$(cat output.json) - echo "Script output labels1111: $OUTPUT" - echo "script_result=$OUTPUT" >> $GITHUB_ENV + echo "Script output labels: $OUTPUT" echo "::set-output name=suppressions-result-output::$OUTPUT" - - name: Write all labels - run: | - echo "Entire labels content:" - echo "${{ env.script_result }}" - - update-suppressions-labels: + update-sdk-suppressions-labels: runs-on: ubuntu-latest - needs: manage-sdk-suppressions-labels - env: - SUPPRESSIONS_LABELS: ${{ needs.manage-sdk-suppressions-labels.outputs.suppressions-result-out }} + needs: process-sdk-suppressions-labels strategy: matrix: - artifact-name: ${{ fromJson(needs.manage-sdk-suppressions-labels.outputs.suppressions-result-out) }} + artifact-name: ${{ fromJson(needs.process-sdk-suppressions-labels.outputs.process-sdk-suppressions-output) }} steps: - - name: Use the suppressions result in job manage-sdk-suppressions-labels - run: | - echo "The result from job1 is: $SUPPRESSIONS_LABELS" - - name: Create empty file to upload artifacts run: "> $RUNNER_TEMP/empty.txt" shell: bash diff --git a/.github/workflows/update-labels.yaml b/.github/workflows/update-labels.yaml index 4f4810ec76a4..09f0b2070cca 100644 --- a/.github/workflows/update-labels.yaml +++ b/.github/workflows/update-labels.yaml @@ -6,7 +6,7 @@ on: # types: [labeled, unlabeled] # If an upstream workflow if completed, get only the artifacts from that workflow, and update labels workflow_run: - workflows: ["TypeSpec Requirement", "Trigger Workflow", "breakingchange suppressions label Workflow"] + workflows: ["TypeSpec Requirement", "Manage SDK Breakingchange Suppressions Labels Workflow"] types: [completed] workflow_dispatch: inputs: diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index c76fc6842c17..4873456ba05f 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -260,8 +260,8 @@ export async function updateSdkSuppressionsLabels(pr: PullRequestContext, github } const result = { - labelsToAdd: ['a1', 'b1'], - labelsToRemove: ['c1'] + labelsToAdd: ['c1', 'b1'], + labelsToRemove: ['a1'] }; const willSaveOutput = [ ...result.labelsToAdd.map(label => `label-${label}=true`), From 50e305f763ba6ee4311d8fbbe19beffa4217bbb3 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 21:33:54 +0800 Subject: [PATCH 077/190] set output.json to var --- .github/workflows/SDK-Suppressions-Label.yaml | 3 ++- eng/tools/sdk-suppressions/src/index.ts | 5 +++-- eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 7106e5a4d750..19e23d765571 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -59,9 +59,10 @@ jobs: env: GITHUB_PULL_REQUEST_CONTEXT: ${{ steps.Fetch-PullRequest-Context.outputs.result }} GITHUB_TOKEN: ${{ secrets.SPEC_REPO_TOKEN }} + OUTPUT_FILE: "output.json" run: | node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js - OUTPUT=$(cat output.json) + OUTPUT=$(cat $OUTPUT_FILE) echo "Script output labels: $OUTPUT" echo "::set-output name=suppressions-result-output::$OUTPUT" diff --git a/eng/tools/sdk-suppressions/src/index.ts b/eng/tools/sdk-suppressions/src/index.ts index 7b693f1582f1..178e269af1d7 100644 --- a/eng/tools/sdk-suppressions/src/index.ts +++ b/eng/tools/sdk-suppressions/src/index.ts @@ -11,10 +11,11 @@ function getUsage(): string { export async function main() { const pullRequestContext = process.env.GITHUB_PULL_REQUEST_CONTEXT as string; const githubToken = process.env.GITHUB_TOKEN as string; - if (pullRequestContext && githubToken) { + const outputFile = process.env.OUTPUT_FILE as string; + if (pullRequestContext && githubToken && outputFile) { const _pullRequestContext = JSON.parse(pullRequestContext) as unknown as PullRequestContext; const _token = githubToken; - const changedLabels: {labelsToAdd: String[], labelsToRemove: String[]} = await updateSdkSuppressionsLabels(_pullRequestContext, _token); + const changedLabels: {labelsToAdd: String[], labelsToRemove: String[]} = await updateSdkSuppressionsLabels(_pullRequestContext, _token, outputFile); console.log(JSON.stringify(changedLabels)); exit(0); } else { diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index 4873456ba05f..67f921488ab0 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -213,7 +213,7 @@ export function getSdkNamesWithChangedSuppressions( * 2. It removes the label if the PR no longer contains the suppression file. * 3. It leaves the label unchanged if the PR already has both the suppression and the suppression approved labels. */ -export async function updateSdkSuppressionsLabels(pr: PullRequestContext, githubToken: string): Promise<{labelsToAdd: String[], labelsToRemove: String[]}> { +export async function updateSdkSuppressionsLabels(pr: PullRequestContext, githubToken: string, outputFile: string): Promise<{labelsToAdd: String[], labelsToRemove: String[]}> { const appClient: Octokit = new Octokit({ auth: githubToken }); @@ -267,7 +267,7 @@ export async function updateSdkSuppressionsLabels(pr: PullRequestContext, github ...result.labelsToAdd.map(label => `label-${label}=true`), ...result.labelsToRemove.map(label => `label-${label}=false`) ]; - fs.writeFileSync("output.json", JSON.stringify(willSaveOutput)); + fs.writeFileSync(outputFile, JSON.stringify(willSaveOutput)); console.log("JSON output saved to output.json"); return { From 0f4fce74198ce4a9684c944ba841cbea07c70323 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 21:51:56 +0800 Subject: [PATCH 078/190] fix script error --- eng/tools/sdk-suppressions/src/common.ts | 2 +- .../sdk-suppressions/src/updateSdkSuppressionsLabel.ts | 10 +++------- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/eng/tools/sdk-suppressions/src/common.ts b/eng/tools/sdk-suppressions/src/common.ts index 7ce2775408da..6f2324459e3c 100644 --- a/eng/tools/sdk-suppressions/src/common.ts +++ b/eng/tools/sdk-suppressions/src/common.ts @@ -14,7 +14,7 @@ export function parseYamlContent(yamlContent: string, path: string): { let content = undefined; // if yaml file is not a valid yaml, catch error and return undefined try { - content = YAML.safeLoad(yamlContent); + content = YAML.load(yamlContent); } catch (error) { console.error(`The file parsing failed in the ${path}. Details: ${error}`); return { diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index 67f921488ab0..3eab27ab5dc6 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -260,8 +260,8 @@ export async function updateSdkSuppressionsLabels(pr: PullRequestContext, github } const result = { - labelsToAdd: ['c1', 'b1'], - labelsToRemove: ['a1'] + labelsToAdd: addSdkSuppressionsLabels, + labelsToRemove: removeSdkSuppressionsLabels }; const willSaveOutput = [ ...result.labelsToAdd.map(label => `label-${label}=true`), @@ -270,11 +270,7 @@ export async function updateSdkSuppressionsLabels(pr: PullRequestContext, github fs.writeFileSync(outputFile, JSON.stringify(willSaveOutput)); console.log("JSON output saved to output.json"); - return { - labelsToAdd: addSdkSuppressionsLabels, - labelsToRemove: removeSdkSuppressionsLabels - } - + return result; } function logSuppressionFileInfo(pr: { owner: string, repo: string, ref: string, path: string }) { From 0fcb2f865e9e8791e594dad00ba2bcf42bcaa2d0 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 22:12:42 +0800 Subject: [PATCH 079/190] fix script error --- eng/tools/sdk-suppressions/src/common.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/tools/sdk-suppressions/src/common.ts b/eng/tools/sdk-suppressions/src/common.ts index 6f2324459e3c..663a7629e5e2 100644 --- a/eng/tools/sdk-suppressions/src/common.ts +++ b/eng/tools/sdk-suppressions/src/common.ts @@ -1,4 +1,4 @@ -import * as YAML from "js-yaml"; +import * as yaml from "js-yaml"; /** * @param yamlContent @@ -14,7 +14,7 @@ export function parseYamlContent(yamlContent: string, path: string): { let content = undefined; // if yaml file is not a valid yaml, catch error and return undefined try { - content = YAML.load(yamlContent); + content = yaml.load(yamlContent); } catch (error) { console.error(`The file parsing failed in the ${path}. Details: ${error}`); return { From 7c276eff96e861d133b44005b05a320f9a8362e5 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 22:26:40 +0800 Subject: [PATCH 080/190] fix script error --- eng/tools/sdk-suppressions/src/common.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/eng/tools/sdk-suppressions/src/common.ts b/eng/tools/sdk-suppressions/src/common.ts index 663a7629e5e2..e5f348bfcbb5 100644 --- a/eng/tools/sdk-suppressions/src/common.ts +++ b/eng/tools/sdk-suppressions/src/common.ts @@ -1,4 +1,4 @@ -import * as yaml from "js-yaml"; +import { load } from "js-yaml"; /** * @param yamlContent @@ -14,7 +14,7 @@ export function parseYamlContent(yamlContent: string, path: string): { let content = undefined; // if yaml file is not a valid yaml, catch error and return undefined try { - content = yaml.load(yamlContent); + content = load(yamlContent); } catch (error) { console.error(`The file parsing failed in the ${path}. Details: ${error}`); return { From 6938904fa13a8517661ae7fe08958e36793210e2 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 22:33:30 +0800 Subject: [PATCH 081/190] fix script error --- eng/tools/sdk-suppressions/src/common.ts | 5 ++++- eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/eng/tools/sdk-suppressions/src/common.ts b/eng/tools/sdk-suppressions/src/common.ts index e5f348bfcbb5..6941f7926f6e 100644 --- a/eng/tools/sdk-suppressions/src/common.ts +++ b/eng/tools/sdk-suppressions/src/common.ts @@ -1,4 +1,7 @@ -import { load } from "js-yaml"; +// import { load } from "js-yaml"; +import pkg from 'js-yaml'; +const { load } = pkg; + /** * @param yamlContent diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index 3eab27ab5dc6..1d28530cc069 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -1,5 +1,5 @@ import _ from "lodash"; -import * as fs from "fs"; +import { writeFileSync } from "fs"; import { Octokit, RestEndpointMethodTypes } from "@octokit/rest"; import { OctokitResponse, ReposGetContentResponseData } from "@octokit/types"; import { sdkLabels, SdkName } from './sdk.js'; @@ -267,7 +267,7 @@ export async function updateSdkSuppressionsLabels(pr: PullRequestContext, github ...result.labelsToAdd.map(label => `label-${label}=true`), ...result.labelsToRemove.map(label => `label-${label}=false`) ]; - fs.writeFileSync(outputFile, JSON.stringify(willSaveOutput)); + writeFileSync(outputFile, JSON.stringify(willSaveOutput)); console.log("JSON output saved to output.json"); return result; From 1f38870c0f623ec6a93bbfc3a57a3df06aa65434 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 22:59:31 +0800 Subject: [PATCH 082/190] fix remvoe label error --- .github/actions/update-labels/action.js | 2 -- .../{trigger-workflow.yaml => test-trigger-workflow.yaml} | 0 .../{workflow-run-test.yaml => test-workflow-run-test.yaml} | 2 +- 3 files changed, 1 insertion(+), 3 deletions(-) rename .github/workflows/{trigger-workflow.yaml => test-trigger-workflow.yaml} (100%) rename .github/workflows/{workflow-run-test.yaml => test-workflow-run-test.yaml} (82%) diff --git a/.github/actions/update-labels/action.js b/.github/actions/update-labels/action.js index 05897dadcea1..ae323e066842 100644 --- a/.github/actions/update-labels/action.js +++ b/.github/actions/update-labels/action.js @@ -70,8 +70,6 @@ module.exports = async ({ github, context, core }) => { core.info(`labelsToAdd: ${JSON.stringify(labelsToAdd)}`); core.info(`labelsToRemove: ${JSON.stringify(labelsToRemove)}`); - core.info(`issue_number: ${JSON.stringify(issue_number)}`); - if (labelsToAdd.length > 0) { await github.rest.issues.addLabels({ owner: owner, diff --git a/.github/workflows/trigger-workflow.yaml b/.github/workflows/test-trigger-workflow.yaml similarity index 100% rename from .github/workflows/trigger-workflow.yaml rename to .github/workflows/test-trigger-workflow.yaml diff --git a/.github/workflows/workflow-run-test.yaml b/.github/workflows/test-workflow-run-test.yaml similarity index 82% rename from .github/workflows/workflow-run-test.yaml rename to .github/workflows/test-workflow-run-test.yaml index dd2b6c406280..672d8ecf1875 100644 --- a/.github/workflows/workflow-run-test.yaml +++ b/.github/workflows/test-workflow-run-test.yaml @@ -15,4 +15,4 @@ jobs: ACTIONS_STEP_DEBUG: true steps: - name: Confirm Trigger - run: echo "Workflow triggered by Trigger Workflow 1" + run: echo "Workflow triggered by Trigger Workflow" From 7555446efb2759d89928cafeed3475aa69f0d60d Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 23:02:51 +0800 Subject: [PATCH 083/190] fix remvoe label error --- .github/actions/update-labels/action.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/update-labels/action.js b/.github/actions/update-labels/action.js index ae323e066842..44cc2ebfa1ad 100644 --- a/.github/actions/update-labels/action.js +++ b/.github/actions/update-labels/action.js @@ -87,7 +87,7 @@ module.exports = async ({ github, context, core }) => { owner: owner, repo: repo, issue_number: issue_number, - name: name, + name: labelsToRemove[name], }); } catch (error) { if (error.status === 404) { From 8db4fa20ae4a3b6759e0d69e3cc89a43f178086a Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 23:19:48 +0800 Subject: [PATCH 084/190] fix remove label error --- .github/actions/update-labels/action.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/update-labels/action.js b/.github/actions/update-labels/action.js index 44cc2ebfa1ad..12819d77e0f7 100644 --- a/.github/actions/update-labels/action.js +++ b/.github/actions/update-labels/action.js @@ -87,7 +87,7 @@ module.exports = async ({ github, context, core }) => { owner: owner, repo: repo, issue_number: issue_number, - name: labelsToRemove[name], + name: "brownfield", }); } catch (error) { if (error.status === 404) { From 5ec82c95299bf1e63b8cd6e18ae73719ebfa27de Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 23:28:51 +0800 Subject: [PATCH 085/190] fix remove label error --- .github/actions/update-labels/action.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/actions/update-labels/action.js b/.github/actions/update-labels/action.js index 12819d77e0f7..e4d1bac2585e 100644 --- a/.github/actions/update-labels/action.js +++ b/.github/actions/update-labels/action.js @@ -67,9 +67,6 @@ module.exports = async ({ github, context, core }) => { } } - core.info(`labelsToAdd: ${JSON.stringify(labelsToAdd)}`); - core.info(`labelsToRemove: ${JSON.stringify(labelsToRemove)}`); - if (labelsToAdd.length > 0) { await github.rest.issues.addLabels({ owner: owner, @@ -87,7 +84,7 @@ module.exports = async ({ github, context, core }) => { owner: owner, repo: repo, issue_number: issue_number, - name: "brownfield", + name: name, }); } catch (error) { if (error.status === 404) { From 8ac45c3a8ac2f0b82bad86d1ecb0ef1c96a9e6fb Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 23:31:20 +0800 Subject: [PATCH 086/190] add workflows --- .github/workflows/update-labels.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-labels.yaml b/.github/workflows/update-labels.yaml index 09f0b2070cca..37d6b2e370f1 100644 --- a/.github/workflows/update-labels.yaml +++ b/.github/workflows/update-labels.yaml @@ -6,7 +6,7 @@ on: # types: [labeled, unlabeled] # If an upstream workflow if completed, get only the artifacts from that workflow, and update labels workflow_run: - workflows: ["TypeSpec Requirement", "Manage SDK Breakingchange Suppressions Labels Workflow"] + workflows: ["TypeSpec Requirement", "Test Workflow Run", "Manage SDK Breakingchange Suppressions Labels Workflow"] types: [completed] workflow_dispatch: inputs: From 541bcf70a7ab9701eee8003f1ad4081254422af7 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 23:38:43 +0800 Subject: [PATCH 087/190] add workflows --- .github/actions/update-labels/action.js | 4 ++++ .github/workflows/update-labels.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/actions/update-labels/action.js b/.github/actions/update-labels/action.js index e4d1bac2585e..e2b1536b32e8 100644 --- a/.github/actions/update-labels/action.js +++ b/.github/actions/update-labels/action.js @@ -67,6 +67,9 @@ module.exports = async ({ github, context, core }) => { } } + core.info(`labelsToAdd: ${JSON.stringify(labelsToAdd)}`); + core.info(`labelsToRemove: ${JSON.stringify(labelsToRemove)}`); + if (labelsToAdd.length > 0) { await github.rest.issues.addLabels({ owner: owner, @@ -79,6 +82,7 @@ module.exports = async ({ github, context, core }) => { if (labelsToRemove.length > 0) { // Must loop over labelsToRemove ourselves, since GitHub doesn't expose a REST API to remove in bulk. for (const name of labelsToRemove) { + core.info(`labelsToRemove-name333, ${name}`) try { await github.rest.issues.removeLabel({ owner: owner, diff --git a/.github/workflows/update-labels.yaml b/.github/workflows/update-labels.yaml index 37d6b2e370f1..401ab10ace45 100644 --- a/.github/workflows/update-labels.yaml +++ b/.github/workflows/update-labels.yaml @@ -6,7 +6,7 @@ on: # types: [labeled, unlabeled] # If an upstream workflow if completed, get only the artifacts from that workflow, and update labels workflow_run: - workflows: ["TypeSpec Requirement", "Test Workflow Run", "Manage SDK Breakingchange Suppressions Labels Workflow"] + workflows: ["TypeSpec Requirement", "Trigger Workflow", "Manage SDK Breakingchange Suppressions Labels Workflow"] types: [completed] workflow_dispatch: inputs: From fb645208fd3c04ba001656812776642a4725c392 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Mon, 9 Dec 2024 23:48:35 +0800 Subject: [PATCH 088/190] remove test --- .github/workflows/test-trigger-workflow.yaml | 27 ------------------- .github/workflows/test-workflow-run-test.yaml | 18 ------------- .github/workflows/update-labels.yaml | 2 +- 3 files changed, 1 insertion(+), 46 deletions(-) delete mode 100644 .github/workflows/test-trigger-workflow.yaml delete mode 100644 .github/workflows/test-workflow-run-test.yaml diff --git a/.github/workflows/test-trigger-workflow.yaml b/.github/workflows/test-trigger-workflow.yaml deleted file mode 100644 index 3ab1dcdbe296..000000000000 --- a/.github/workflows/test-trigger-workflow.yaml +++ /dev/null @@ -1,27 +0,0 @@ -name: Trigger Workflow - -on: pull_request - -jobs: - upload-artifacts: - name: Trigger Test - permissions: - contents: read - pull-requests: write - runs-on: ubuntu-latest - strategy: - matrix: - artifact-name: ["label-test1=true", "label-test2=false", "label-aaa=false"] - - steps: - - name: Create empty file to upload artifacts - run: "> $RUNNER_TEMP/empty.txt" - shell: bash - - - name: Upload artifact - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.artifact-name }} # Artifact name from matrix - path: ${{ runner.temp }}/empty.txt - if-no-files-found: error - overwrite: true diff --git a/.github/workflows/test-workflow-run-test.yaml b/.github/workflows/test-workflow-run-test.yaml deleted file mode 100644 index 672d8ecf1875..000000000000 --- a/.github/workflows/test-workflow-run-test.yaml +++ /dev/null @@ -1,18 +0,0 @@ -name: Test Workflow Run - -on: - workflow_run: - workflows: - - Trigger Workflow - types: - - completed - -jobs: - test-workflow-run: - name: Test Workflow Run - runs-on: ubuntu-latest - env: - ACTIONS_STEP_DEBUG: true - steps: - - name: Confirm Trigger - run: echo "Workflow triggered by Trigger Workflow" diff --git a/.github/workflows/update-labels.yaml b/.github/workflows/update-labels.yaml index 401ab10ace45..09f0b2070cca 100644 --- a/.github/workflows/update-labels.yaml +++ b/.github/workflows/update-labels.yaml @@ -6,7 +6,7 @@ on: # types: [labeled, unlabeled] # If an upstream workflow if completed, get only the artifacts from that workflow, and update labels workflow_run: - workflows: ["TypeSpec Requirement", "Trigger Workflow", "Manage SDK Breakingchange Suppressions Labels Workflow"] + workflows: ["TypeSpec Requirement", "Manage SDK Breakingchange Suppressions Labels Workflow"] types: [completed] workflow_dispatch: inputs: From 4f0117758f6c1ec1f54bd63900c63dca0a6e2004 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Tue, 10 Dec 2024 11:00:06 +0800 Subject: [PATCH 089/190] fix rebase error --- .github/actions/add-label-artifact/action.yaml | 6 +----- .github/actions/context.js | 7 +++++-- .../actions/handle-suppressions/suppressions.js | 16 ---------------- .github/actions/update-labels/action.js | 5 +++-- .gitignore | 4 +--- 5 files changed, 10 insertions(+), 28 deletions(-) delete mode 100644 .github/actions/handle-suppressions/suppressions.js diff --git a/.github/actions/add-label-artifact/action.yaml b/.github/actions/add-label-artifact/action.yaml index 331db1e34f47..b73522c0f209 100644 --- a/.github/actions/add-label-artifact/action.yaml +++ b/.github/actions/add-label-artifact/action.yaml @@ -1,9 +1,5 @@ name: Add Label Artifact -<<<<<<< HEAD description: Uploads an empty artifact named `label-${name}=${value}`, that's consumed by action "update-labels" -======= -description: Uploads an empty artifact named `label-${name}=${value}`, that's consumed by update-labels.yaml ->>>>>>> 2b80e40a66 (add script) inputs: name: @@ -28,4 +24,4 @@ runs: name: label-${{ inputs.name }}=${{ inputs.value }} path: ${{ runner.temp }}/empty.txt if-no-files-found: error - overwrite: true + overwrite: true \ No newline at end of file diff --git a/.github/actions/context.js b/.github/actions/context.js index 6ccf74e1003c..32046c40da58 100644 --- a/.github/actions/context.js +++ b/.github/actions/context.js @@ -1,10 +1,13 @@ // @ts-check /** + * Extracts inputs from context based on event name and properties. + * run_id is only defined for "workflow_run:completed" events. + * * @param {import('github-script').AsyncFunctionArguments['github']} github * @param {import('github-script').AsyncFunctionArguments['context']} context * @param {import('github-script').AsyncFunctionArguments['core']} core - * @returns {Promise<{owner: string, repo: string, issue_number: number, run_id: number }>} + * @returns {Promise<{owner: string, repo: string, head_sha: string, issue_number: number, run_id: number }>} */ async function extractInputs(github, context, core) { core.info(`extractInputs(${context.eventName}, ${context.payload.action})`); @@ -89,4 +92,4 @@ async function extractInputs(github, context, core) { } } -module.exports = { extractInputs }; +module.exports = { extractInputs }; \ No newline at end of file diff --git a/.github/actions/handle-suppressions/suppressions.js b/.github/actions/handle-suppressions/suppressions.js deleted file mode 100644 index d249a2424154..000000000000 --- a/.github/actions/handle-suppressions/suppressions.js +++ /dev/null @@ -1,16 +0,0 @@ - -module.exports = async ({ github, context, core }) => { - - core.info(`(${context.eventName}, ${context.payload.action})`); - - console.log('context', JSON.stringify(context)); - console.log('context.payload', JSON.stringify(context.payload)); - // const {SHA} = process.env - // const commit = await github.rest.repos.getCommit({ - // owner: context.repo.owner, - // repo: context.repo.repo, - // ref: `${SHA}` - // }) - // core.exportVariable('author', commit.data.commit.author.email) - -} \ No newline at end of file diff --git a/.github/actions/update-labels/action.js b/.github/actions/update-labels/action.js index e2b1536b32e8..7a27aede3427 100644 --- a/.github/actions/update-labels/action.js +++ b/.github/actions/update-labels/action.js @@ -33,6 +33,8 @@ module.exports = async ({ github, context, core }) => { artifactNames = artifacts.data.artifacts.map((a) => a.name); } else { + // TODO: List all artifacts of all workflows associated with issue_number + throw new Error("Required input 'run_id' not found in env or context"); } core.info(`artifactNames: ${JSON.stringify(artifactNames)}`); @@ -82,7 +84,6 @@ module.exports = async ({ github, context, core }) => { if (labelsToRemove.length > 0) { // Must loop over labelsToRemove ourselves, since GitHub doesn't expose a REST API to remove in bulk. for (const name of labelsToRemove) { - core.info(`labelsToRemove-name333, ${name}`) try { await github.rest.issues.removeLabel({ owner: owner, @@ -99,4 +100,4 @@ module.exports = async ({ github, context, core }) => { } } } -}; +}; \ No newline at end of file diff --git a/.gitignore b/.gitignore index 57ec3e887049..94cdf5ff7b11 100644 --- a/.gitignore +++ b/.gitignore @@ -129,8 +129,6 @@ eng/tools/**/dist !eng/tools/**/cmd/*.js !eng/tools/**/eslint.config.js -!.github/**/*.js - # TypeScript cache *.tsbuildinfo @@ -149,4 +147,4 @@ eng/tools/**/dist **/terraform/**/*.backup **/terraform/**/tfplan **/terraform/**/.terraform -!**/terraform/**/*.tf +!**/terraform/**/*.tf \ No newline at end of file From e75ba314050d7e17e3ba91b119e2e0a259897174 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Tue, 10 Dec 2024 11:01:30 +0800 Subject: [PATCH 090/190] fix rebase error --- .github/actions/add-label-artifact/action.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/add-label-artifact/action.yaml b/.github/actions/add-label-artifact/action.yaml index b73522c0f209..28c4b294655c 100644 --- a/.github/actions/add-label-artifact/action.yaml +++ b/.github/actions/add-label-artifact/action.yaml @@ -24,4 +24,4 @@ runs: name: label-${{ inputs.name }}=${{ inputs.value }} path: ${{ runner.temp }}/empty.txt if-no-files-found: error - overwrite: true \ No newline at end of file + overwrite: true From 728de435deab0a9ba003c41b9725d77a4ae4314a Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Tue, 10 Dec 2024 11:04:21 +0800 Subject: [PATCH 091/190] fix rebase error --- .github/actions/context.js | 2 +- .github/actions/update-labels/action.js | 2 +- .gitignore | 2 +- eng/scripts/TypeSpec-Requirement.ps1 | 2 +- eng/tools/sdk-suppressions/src/common.ts | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/actions/context.js b/.github/actions/context.js index 32046c40da58..8dce041c2f22 100644 --- a/.github/actions/context.js +++ b/.github/actions/context.js @@ -92,4 +92,4 @@ async function extractInputs(github, context, core) { } } -module.exports = { extractInputs }; \ No newline at end of file +module.exports = { extractInputs }; diff --git a/.github/actions/update-labels/action.js b/.github/actions/update-labels/action.js index 7a27aede3427..ffd734584b14 100644 --- a/.github/actions/update-labels/action.js +++ b/.github/actions/update-labels/action.js @@ -100,4 +100,4 @@ module.exports = async ({ github, context, core }) => { } } } -}; \ No newline at end of file +}; diff --git a/.gitignore b/.gitignore index 94cdf5ff7b11..b07c3b3ae14e 100644 --- a/.gitignore +++ b/.gitignore @@ -147,4 +147,4 @@ eng/tools/**/dist **/terraform/**/*.backup **/terraform/**/tfplan **/terraform/**/.terraform -!**/terraform/**/*.tf \ No newline at end of file +!**/terraform/**/*.tf diff --git a/eng/scripts/TypeSpec-Requirement.ps1 b/eng/scripts/TypeSpec-Requirement.ps1 index d6e26534ea26..6e0e0eb74971 100644 --- a/eng/scripts/TypeSpec-Requirement.ps1 +++ b/eng/scripts/TypeSpec-Requirement.ps1 @@ -201,4 +201,4 @@ if ($pathsWithErrors.Count -gt 0) { exit 1 } -exit 0 \ No newline at end of file +exit 0 diff --git a/eng/tools/sdk-suppressions/src/common.ts b/eng/tools/sdk-suppressions/src/common.ts index 6941f7926f6e..f56c21ae1939 100644 --- a/eng/tools/sdk-suppressions/src/common.ts +++ b/eng/tools/sdk-suppressions/src/common.ts @@ -49,4 +49,4 @@ export function parseYamlContent(yamlContent: string, path: string): { export function stringToBase64(base: string): string { return Buffer.from(base).toString("base64"); - }; \ No newline at end of file + }; From c05d5d19c8b0c4ed04586546138515eeb0666283 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Tue, 10 Dec 2024 13:00:46 +0800 Subject: [PATCH 092/190] fix comment --- .github/workflows/SDK-Suppressions-Label.yaml | 8 ++++---- eng/tools/sdk-suppressions/src/index.ts | 6 +++++- eng/tools/sdk-suppressions/src/sdkSuppressions.ts | 2 +- eng/tools/suppressions/src/index.ts | 2 +- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 19e23d765571..aba8c8c8cf09 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -24,7 +24,7 @@ jobs: - name: Get GitHub PullRequest Context uses: actions/github-script@v7 - id: Fetch-PullRequest-Context + id: fetch-pullRequest-context with: script: | const pr = context.payload.pull_request; @@ -57,7 +57,7 @@ jobs: - name: Run get suppressions label script id: run-suppressions-script env: - GITHUB_PULL_REQUEST_CONTEXT: ${{ steps.Fetch-PullRequest-Context.outputs.result }} + GITHUB_PULL_REQUEST_CONTEXT: ${{ steps.fetch-pullRequest-context.outputs.result }} GITHUB_TOKEN: ${{ secrets.SPEC_REPO_TOKEN }} OUTPUT_FILE: "output.json" run: | @@ -80,7 +80,7 @@ jobs: - name: Upload artifact uses: actions/upload-artifact@v4 with: - name: ${{ matrix.artifact-name }} # Artifact name from matrix + name: ${{ matrix.artifact-name }} path: ${{ runner.temp }}/empty.txt if-no-files-found: error - overwrite: true \ No newline at end of file + overwrite: true diff --git a/eng/tools/sdk-suppressions/src/index.ts b/eng/tools/sdk-suppressions/src/index.ts index 178e269af1d7..d29dc7ff682c 100644 --- a/eng/tools/sdk-suppressions/src/index.ts +++ b/eng/tools/sdk-suppressions/src/index.ts @@ -4,7 +4,11 @@ import { updateSdkSuppressionsLabels, PullRequestContext } from "./updateSdkSupp function getUsage(): string { return ( - "parameter missing! \n" + "Parameter missing! \n" + + "\n" + + "Check GITHUB_TOKEN is setting in spec repo setting for action which named SPEC_REPO_TOKEN ! referenece https://docs.github.com/zh/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions\n" + + "Check GITHUB_PULL_REQUEST_CONTEXT where defined in step: Get GitHub PullRequest Context" + + "Check OUTPUT_FILE in step env: Run get suppressions label script " ); } diff --git a/eng/tools/sdk-suppressions/src/sdkSuppressions.ts b/eng/tools/sdk-suppressions/src/sdkSuppressions.ts index 4ad2a35ebcb3..fb98d586aebe 100644 --- a/eng/tools/sdk-suppressions/src/sdkSuppressions.ts +++ b/eng/tools/sdk-suppressions/src/sdkSuppressions.ts @@ -36,7 +36,7 @@ export function validateSdkSuppressionsFile(suppressionContent: string | object if (!suppressionContent) { return { result: false, - message: 'This suppression file is not a valid yaml.' + message: 'This suppression file is not a valid yaml. Refer to https://aka.ms/azsdk/sdk-suppression for more information.' }; } diff --git a/eng/tools/suppressions/src/index.ts b/eng/tools/suppressions/src/index.ts index d22b57c1aa9e..2a2e764184c7 100644 --- a/eng/tools/suppressions/src/index.ts +++ b/eng/tools/suppressions/src/index.ts @@ -26,7 +26,7 @@ export async function main() { } else { console.error(getUsage()); exit(1); - } + } } export { getSuppressions, Suppression }; From 16acb671afc4fca7256eee03cdaae39628aa510c Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Tue, 10 Dec 2024 22:53:44 +0800 Subject: [PATCH 093/190] add powershell script --- .github/workflows/SDK-Suppressions-Label.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index aba8c8c8cf09..04a8279341f5 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -51,6 +51,13 @@ jobs: return JSON.stringify(prContext); result-encoding: string + - name: Detect changes to protected files + shell: pwsh + run: | + . eng/scripts/ChangedFiles-Functions.ps1 + $changedFiles = @(Get-ChangedFiles) + echo "Changed files: $changedFiles" + - name: Setup Node and run `npm ci` uses: ./.github/actions/setup-node-npm-ci From 636884254c1d1d77516be25fbe8104c5d111b390 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Tue, 10 Dec 2024 23:04:52 +0800 Subject: [PATCH 094/190] add action test --- .github/workflows/SDK-Suppressions-Label.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 04a8279341f5..115797c9e8ca 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -21,6 +21,9 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v4 + with: + # Required since "HEAD^" is passed to Get-ChangedFiles + fetch-depth: 2 - name: Get GitHub PullRequest Context uses: actions/github-script@v7 From bc21cefc061954eb50941f4212a3d2eee730f5dd Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Tue, 10 Dec 2024 23:13:21 +0800 Subject: [PATCH 095/190] add action test --- .github/workflows/SDK-Suppressions-Label.yaml | 5 ++++- eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 115797c9e8ca..0d4acce63fed 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -54,12 +54,14 @@ jobs: return JSON.stringify(prContext); result-encoding: string - - name: Detect changes to protected files + - name: Get GitHub PullRequest Changed Files shell: pwsh + id: get-changedFiles run: | . eng/scripts/ChangedFiles-Functions.ps1 $changedFiles = @(Get-ChangedFiles) echo "Changed files: $changedFiles" + echo "::set-output name=changedFiles::$changedFiles" - name: Setup Node and run `npm ci` uses: ./.github/actions/setup-node-npm-ci @@ -70,6 +72,7 @@ jobs: GITHUB_PULL_REQUEST_CONTEXT: ${{ steps.fetch-pullRequest-context.outputs.result }} GITHUB_TOKEN: ${{ secrets.SPEC_REPO_TOKEN }} OUTPUT_FILE: "output.json" + GITHUB_PULL_REQUEST_CHANGE_FILES: ${{ steps.get-changedFiles.outputs.changedFiles }} run: | node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js OUTPUT=$(cat $OUTPUT_FILE) diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index 1d28530cc069..543e514f36ec 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -217,6 +217,9 @@ export async function updateSdkSuppressionsLabels(pr: PullRequestContext, github const appClient: Octokit = new Octokit({ auth: githubToken }); + console.log('process env', process.env.GITHUB_PULL_REQUEST_CHANGE_FILES); + console.log('json parse process env', JSON.parse(process.env.GITHUB_PULL_REQUEST_CHANGE_FILES as string)); + console.log('Pull Request Context', pr); const sdkNames = await getSdkSuppressionsSdkNames(appClient, pr); console.log('Changed SdkNames', sdkNames); From 71dda9db8db8e7530e53704ca3e36a947f1dbd2d Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Tue, 10 Dec 2024 23:28:13 +0800 Subject: [PATCH 096/190] fix bug --- eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index 543e514f36ec..4b80fe4597d4 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -218,7 +218,7 @@ export async function updateSdkSuppressionsLabels(pr: PullRequestContext, github auth: githubToken }); console.log('process env', process.env.GITHUB_PULL_REQUEST_CHANGE_FILES); - console.log('json parse process env', JSON.parse(process.env.GITHUB_PULL_REQUEST_CHANGE_FILES as string)); + console.log('json parse process env', JSON.parse(process.env.GITHUB_PULL_REQUEST_CHANGE_FILES as string).split(' ')); console.log('Pull Request Context', pr); const sdkNames = await getSdkSuppressionsSdkNames(appClient, pr); From 4af465fa63afc6d7ff3cb8274ad35e1c55d7dadf Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Tue, 10 Dec 2024 23:32:19 +0800 Subject: [PATCH 097/190] fix bug --- eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index 4b80fe4597d4..e9e45c06b02e 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -218,7 +218,7 @@ export async function updateSdkSuppressionsLabels(pr: PullRequestContext, github auth: githubToken }); console.log('process env', process.env.GITHUB_PULL_REQUEST_CHANGE_FILES); - console.log('json parse process env', JSON.parse(process.env.GITHUB_PULL_REQUEST_CHANGE_FILES as string).split(' ')); + console.log('json parse process env', (process.env.GITHUB_PULL_REQUEST_CHANGE_FILES as string).split(' ')); console.log('Pull Request Context', pr); const sdkNames = await getSdkSuppressionsSdkNames(appClient, pr); From ebcd3c7a1c0867267797f9125be42155780b1448 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Tue, 10 Dec 2024 23:43:03 +0800 Subject: [PATCH 098/190] fix bug --- .github/workflows/SDK-Suppressions-Label.yaml | 2 +- eng/tools/sdk-suppressions/src/index.ts | 8 +++-- .../src/updateSdkSuppressionsLabel.ts | 34 ++++--------------- 3 files changed, 13 insertions(+), 31 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 0d4acce63fed..ad23cd58018e 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -60,7 +60,7 @@ jobs: run: | . eng/scripts/ChangedFiles-Functions.ps1 $changedFiles = @(Get-ChangedFiles) - echo "Changed files: $changedFiles" + echo "PR Changed files: $changedFiles" echo "::set-output name=changedFiles::$changedFiles" - name: Setup Node and run `npm ci` diff --git a/eng/tools/sdk-suppressions/src/index.ts b/eng/tools/sdk-suppressions/src/index.ts index d29dc7ff682c..6c30e0b61b3b 100644 --- a/eng/tools/sdk-suppressions/src/index.ts +++ b/eng/tools/sdk-suppressions/src/index.ts @@ -8,7 +8,8 @@ function getUsage(): string { "\n" + "Check GITHUB_TOKEN is setting in spec repo setting for action which named SPEC_REPO_TOKEN ! referenece https://docs.github.com/zh/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions\n" + "Check GITHUB_PULL_REQUEST_CONTEXT where defined in step: Get GitHub PullRequest Context" + - "Check OUTPUT_FILE in step env: Run get suppressions label script " + "Check OUTPUT_FILE in step env: Run get suppressions label script " + + "Check The pr has change files in GITHUB_PULL_REQUEST_CHANGE_FILES " ); } @@ -16,10 +17,11 @@ export async function main() { const pullRequestContext = process.env.GITHUB_PULL_REQUEST_CONTEXT as string; const githubToken = process.env.GITHUB_TOKEN as string; const outputFile = process.env.OUTPUT_FILE as string; - if (pullRequestContext && githubToken && outputFile) { + const prChangeFiles = process.env.GITHUB_PULL_REQUEST_CHANGE_FILES as string; + if (pullRequestContext && githubToken && outputFile && prChangeFiles) { const _pullRequestContext = JSON.parse(pullRequestContext) as unknown as PullRequestContext; const _token = githubToken; - const changedLabels: {labelsToAdd: String[], labelsToRemove: String[]} = await updateSdkSuppressionsLabels(_pullRequestContext, _token, outputFile); + const changedLabels: {labelsToAdd: String[], labelsToRemove: String[]} = await updateSdkSuppressionsLabels(_pullRequestContext, _token, prChangeFiles, outputFile); console.log(JSON.stringify(changedLabels)); exit(0); } else { diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index e9e45c06b02e..3503a479d2f0 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -1,6 +1,6 @@ import _ from "lodash"; import { writeFileSync } from "fs"; -import { Octokit, RestEndpointMethodTypes } from "@octokit/rest"; +import { Octokit } from "@octokit/rest"; import { OctokitResponse, ReposGetContentResponseData } from "@octokit/types"; import { sdkLabels, SdkName } from './sdk.js'; import { @@ -43,15 +43,11 @@ export type PullRequestContext = { */ export async function getSdkSuppressionsSdkNames( appClient: Octokit, - pr: PullRequestContext + pr: PullRequestContext, + prChangeFiles: string ): Promise { - // Get changed files paths - const filesChangedPaths: string[] = await listChangedFilePaths(appClient, { - owner: pr.base.owner, - repo: pr.base.repo, - pull_number: pr.number, - }); - + + const filesChangedPaths = prChangeFiles.split(' '); // Get suppression file list let suppressionFileList = filterSuppressionList(filesChangedPaths); @@ -116,11 +112,6 @@ export async function getSdkSuppressionsSdkNames( return [...new Set(sdkNameList)]; } -export async function getSdkSuppressionsLabels(appClient: Octokit, pr: PullRequestContext): Promise { - const sdkNameList = await getSdkSuppressionsSdkNames(appClient, pr); - return sdkNameList.map((sdkName) => sdkLabels[sdkName].breakingChangeSuppression) as string[]; -} - async function getSdkSuppressionsFileContent( appClient: Octokit, owner: string, @@ -213,15 +204,13 @@ export function getSdkNamesWithChangedSuppressions( * 2. It removes the label if the PR no longer contains the suppression file. * 3. It leaves the label unchanged if the PR already has both the suppression and the suppression approved labels. */ -export async function updateSdkSuppressionsLabels(pr: PullRequestContext, githubToken: string, outputFile: string): Promise<{labelsToAdd: String[], labelsToRemove: String[]}> { +export async function updateSdkSuppressionsLabels(pr: PullRequestContext, githubToken: string, prChangeFiles:string, outputFile: string): Promise<{labelsToAdd: String[], labelsToRemove: String[]}> { const appClient: Octokit = new Octokit({ auth: githubToken }); - console.log('process env', process.env.GITHUB_PULL_REQUEST_CHANGE_FILES); - console.log('json parse process env', (process.env.GITHUB_PULL_REQUEST_CHANGE_FILES as string).split(' ')); console.log('Pull Request Context', pr); - const sdkNames = await getSdkSuppressionsSdkNames(appClient, pr); + const sdkNames = await getSdkSuppressionsSdkNames(appClient, pr, prChangeFiles); console.log('Changed SdkNames', sdkNames); console.log(`updateSdkSuppressionsLabels: PR: ${pr.html_url} Get the required suppressions label based on compared SDK List ${sdkNames.join(", ")}`); @@ -280,15 +269,6 @@ function logSuppressionFileInfo(pr: { owner: string, repo: string, ref: string, console.log(`updateSdkSuppressionsLabels: Will get suppressions content from ${pr.owner}/${pr.repo}#${pr.ref} for ${pr.path}`); } -const listChangedFilePaths = async ( - github: Octokit, - args: RestEndpointMethodTypes["pulls"]["listFiles"]["parameters"] -): Promise => { - const changedFiles = await github.paginate("GET /repos/:owner/:repo/pulls/:pull_number/files", args) as { filename: string }[]; - - return changedFiles.map(it => it.filename); -}; - /** * * @param filesChangedPaths From bbc84b5fc8c17979598e46d776b22ffb83fa0997 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 17:15:18 +0800 Subject: [PATCH 099/190] change code to fix comment --- .../add-multi-label-artifact/action.yaml | 50 +++++++++++++ .github/workflows/SDK-Suppressions-Label.yaml | 70 +++++++++++-------- 2 files changed, 89 insertions(+), 31 deletions(-) create mode 100644 .github/actions/add-multi-label-artifact/action.yaml diff --git a/.github/actions/add-multi-label-artifact/action.yaml b/.github/actions/add-multi-label-artifact/action.yaml new file mode 100644 index 000000000000..52cfc6c5634e --- /dev/null +++ b/.github/actions/add-multi-label-artifact/action.yaml @@ -0,0 +1,50 @@ +name: Add Multi Labels Artifact +description: Uploads empty artifacts for each label-value pair, consumed by the "update-labels" action. + +inputs: + labels: + description: "Comma-separated list of labels" + required: true + value: + description: "Comma-separated list of values (e.g., 'label-a=true,label-b=false')" + required: true + +runs: + using: composite + + steps: + - name: Validate input lengths + run: | + IFS=',' read -r -a label_array <<< "${{ inputs.labels }}" + IFS=',' read -r -a value_array <<< "${{ inputs.value }}" + + if [ "${#label_array[@]}" -ne "${#value_array[@]}" ]; then + echo "Error: labels and value must have the same number of elements." + exit 1 + fi + shell: bash + + - name: Process label-value pairs + shell: bash + run: | + IFS=',' read -r -a label_array <<< "${{ inputs.labels }}" + IFS=',' read -r -a value_array <<< "${{ inputs.value }}" + + for i in "${!label_array[@]}"; do + label="${label_array[i]}" + value="${value_array[i]}" + artifact_name="label-${label}=${value}" + + # Create empty file + empty_file="$RUNNER_TEMP/empty-${artifact_name}.txt" + > "$empty_file" + + # Upload artifact + echo "Uploading artifact: $artifact_name" + gh api \ + -H "Accept: application/vnd.github+json" \ + /repos/${{ github.repository }}/actions/artifacts \ + -X POST \ + -F name="$artifact_name" \ + -F file=@"$empty_file" + done diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index ad23cd58018e..1ce82bb32913 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -1,4 +1,4 @@ -name: Manage SDK Breakingchange Suppressions Labels Workflow +name: SDK Suppression Labeler on: pull_request: @@ -15,6 +15,8 @@ jobs: process-sdk-suppressions-labels: name: breakingchange suppressions label Workflow runs-on: ubuntu-latest + permissions: + contents: read outputs: process-sdk-suppressions-output: ${{ steps.run-suppressions-script.outputs.suppressions-result-output }} @@ -25,6 +27,18 @@ jobs: # Required since "HEAD^" is passed to Get-ChangedFiles fetch-depth: 2 + - name: Setup Node and run `npm ci` + uses: ./.github/actions/setup-node-npm-ci + + - name: Get GitHub PullRequest Changed Files + shell: pwsh + id: get-changedFiles + run: | + . eng/scripts/ChangedFiles-Functions.ps1 + $changedFiles = @(Get-ChangedFiles) + echo "PR Changed files: $changedFiles" + echo "::set-output name=changedFiles::$changedFiles" + - name: Get GitHub PullRequest Context uses: actions/github-script@v7 id: fetch-pullRequest-context @@ -54,23 +68,11 @@ jobs: return JSON.stringify(prContext); result-encoding: string - - name: Get GitHub PullRequest Changed Files - shell: pwsh - id: get-changedFiles - run: | - . eng/scripts/ChangedFiles-Functions.ps1 - $changedFiles = @(Get-ChangedFiles) - echo "PR Changed files: $changedFiles" - echo "::set-output name=changedFiles::$changedFiles" - - - name: Setup Node and run `npm ci` - uses: ./.github/actions/setup-node-npm-ci - - name: Run get suppressions label script id: run-suppressions-script env: GITHUB_PULL_REQUEST_CONTEXT: ${{ steps.fetch-pullRequest-context.outputs.result }} - GITHUB_TOKEN: ${{ secrets.SPEC_REPO_TOKEN }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} OUTPUT_FILE: "output.json" GITHUB_PULL_REQUEST_CHANGE_FILES: ${{ steps.get-changedFiles.outputs.changedFiles }} run: | @@ -79,21 +81,27 @@ jobs: echo "Script output labels: $OUTPUT" echo "::set-output name=suppressions-result-output::$OUTPUT" - update-sdk-suppressions-labels: - runs-on: ubuntu-latest - needs: process-sdk-suppressions-labels - strategy: - matrix: - artifact-name: ${{ fromJson(needs.process-sdk-suppressions-labels.outputs.process-sdk-suppressions-output) }} - steps: - - name: Create empty file to upload artifacts - run: "> $RUNNER_TEMP/empty.txt" - shell: bash - - - name: Upload artifact - uses: actions/upload-artifact@v4 + - uses: ./.github/actions/add-multi-label-artifact + name: Upload artifact with results with: - name: ${{ matrix.artifact-name }} - path: ${{ runner.temp }}/empty.txt - if-no-files-found: error - overwrite: true + name: "labels" + value: "${{ fromJson(steps.run-suppressions-script.outputs.suppressions-result-output) }}" + + # update-sdk-suppressions-labels: + # runs-on: ubuntu-latest + # needs: process-sdk-suppressions-labels + # strategy: + # matrix: + # artifact-name: ${{ fromJson(needs.process-sdk-suppressions-labels.outputs.process-sdk-suppressions-output) }} + # steps: + # - name: Create empty file to upload artifacts + # run: "> $RUNNER_TEMP/empty.txt" + # shell: bash + + # - name: Upload artifact + # uses: actions/upload-artifact@v4 + # with: + # name: ${{ matrix.artifact-name }} + # path: ${{ runner.temp }}/empty.txt + # if-no-files-found: error + # overwrite: true From 75768e032cea866936e906a5c0c07768cc196de8 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 17:31:04 +0800 Subject: [PATCH 100/190] change code to fix comment --- .../add-multi-label-artifact/action.yaml | 38 +++++++++---------- .github/workflows/SDK-Suppressions-Label.yaml | 3 +- 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/.github/actions/add-multi-label-artifact/action.yaml b/.github/actions/add-multi-label-artifact/action.yaml index 52cfc6c5634e..367986f2a5ad 100644 --- a/.github/actions/add-multi-label-artifact/action.yaml +++ b/.github/actions/add-multi-label-artifact/action.yaml @@ -1,45 +1,45 @@ -name: Add Multi Labels Artifact +name: Add Multi Label Artifact description: Uploads empty artifacts for each label-value pair, consumed by the "update-labels" action. inputs: labels: - description: "Comma-separated list of labels" - required: true - value: - description: "Comma-separated list of values (e.g., 'label-a=true,label-b=false')" + description: "Array of label-value pairs (e.g., ['label-a=true','label-b=false'])" required: true runs: using: composite steps: - - name: Validate input lengths + - name: Parse and validate input + shell: bash run: | - IFS=',' read -r -a label_array <<< "${{ inputs.labels }}" - IFS=',' read -r -a value_array <<< "${{ inputs.value }}" + # Convert input to array + eval "label_array=${{ inputs.labels }}" - if [ "${#label_array[@]}" -ne "${#value_array[@]}" ]; then - echo "Error: labels and value must have the same number of elements." + # Check if array is empty + if [ "${#label_array[@]}" -eq 0 ]; then + echo "Error: No labels provided." exit 1 fi - shell: bash + + # Debug: Print parsed array + echo "Parsed labels: ${label_array[@]}" - name: Process label-value pairs shell: bash run: | - IFS=',' read -r -a label_array <<< "${{ inputs.labels }}" - IFS=',' read -r -a value_array <<< "${{ inputs.value }}" + # Convert input to array + eval "label_array=${{ inputs.labels }}" - for i in "${!label_array[@]}"; do - label="${label_array[i]}" - value="${value_array[i]}" - artifact_name="label-${label}=${value}" + for label_pair in "${label_array[@]}"; do + # Replace '=' with a separator for artifact naming + artifact_name=$(echo "$label_pair" | sed 's/=/=/') - # Create empty file + # Create empty file for the artifact empty_file="$RUNNER_TEMP/empty-${artifact_name}.txt" > "$empty_file" - # Upload artifact + # Upload artifact using actions/upload-artifact echo "Uploading artifact: $artifact_name" gh api \ -H "Accept: application/vnd.github+json" \ diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 1ce82bb32913..284230d415f6 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -84,8 +84,7 @@ jobs: - uses: ./.github/actions/add-multi-label-artifact name: Upload artifact with results with: - name: "labels" - value: "${{ fromJson(steps.run-suppressions-script.outputs.suppressions-result-output) }}" + labels: "['label-aaa=true','label-bbb=true']" # update-sdk-suppressions-labels: # runs-on: ubuntu-latest From 30b5815b67e81a6d87302c0837527aa1edd0db5b Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 17:43:06 +0800 Subject: [PATCH 101/190] use bash code to upload artifact --- .github/actions/add-multi-label-artifact/action.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/actions/add-multi-label-artifact/action.yaml b/.github/actions/add-multi-label-artifact/action.yaml index 367986f2a5ad..afaf47c0906e 100644 --- a/.github/actions/add-multi-label-artifact/action.yaml +++ b/.github/actions/add-multi-label-artifact/action.yaml @@ -6,6 +6,7 @@ inputs: description: "Array of label-value pairs (e.g., ['label-a=true','label-b=false'])" required: true + runs: using: composite @@ -27,6 +28,8 @@ runs: - name: Process label-value pairs shell: bash + env: + GH_TOKEN: ${{ github.token }} run: | # Convert input to array eval "label_array=${{ inputs.labels }}" @@ -43,6 +46,7 @@ runs: echo "Uploading artifact: $artifact_name" gh api \ -H "Accept: application/vnd.github+json" \ + -H "Authorization: token $GITHUB_TOKEN" \ /repos/${{ github.repository }}/actions/artifacts \ -X POST \ -F name="$artifact_name" \ From b9291daf155638054679351b9584de5a823c37ba Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 17:53:13 +0800 Subject: [PATCH 102/190] rename token --- .github/actions/add-multi-label-artifact/action.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/add-multi-label-artifact/action.yaml b/.github/actions/add-multi-label-artifact/action.yaml index afaf47c0906e..462baa11fff9 100644 --- a/.github/actions/add-multi-label-artifact/action.yaml +++ b/.github/actions/add-multi-label-artifact/action.yaml @@ -29,7 +29,7 @@ runs: - name: Process label-value pairs shell: bash env: - GH_TOKEN: ${{ github.token }} + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | # Convert input to array eval "label_array=${{ inputs.labels }}" From dfe6e1336fac03eea07be9c0f1c02c6bca1fe2ff Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 18:03:37 +0800 Subject: [PATCH 103/190] rename token --- .github/actions/add-multi-label-artifact/action.yaml | 7 ++++--- .github/workflows/SDK-Suppressions-Label.yaml | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/actions/add-multi-label-artifact/action.yaml b/.github/actions/add-multi-label-artifact/action.yaml index 462baa11fff9..5b246a1f407f 100644 --- a/.github/actions/add-multi-label-artifact/action.yaml +++ b/.github/actions/add-multi-label-artifact/action.yaml @@ -5,6 +5,9 @@ inputs: labels: description: "Array of label-value pairs (e.g., ['label-a=true','label-b=false'])" required: true + token: + description: "GitHub token" + required: true runs: @@ -28,8 +31,6 @@ runs: - name: Process label-value pairs shell: bash - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | # Convert input to array eval "label_array=${{ inputs.labels }}" @@ -46,7 +47,7 @@ runs: echo "Uploading artifact: $artifact_name" gh api \ -H "Accept: application/vnd.github+json" \ - -H "Authorization: token $GITHUB_TOKEN" \ + -H "Authorization: token $token" \ /repos/${{ github.repository }}/actions/artifacts \ -X POST \ -F name="$artifact_name" \ diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 284230d415f6..fbd1e9530d6b 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -84,6 +84,7 @@ jobs: - uses: ./.github/actions/add-multi-label-artifact name: Upload artifact with results with: + token: ${{ secrets.GITHUB_TOKEN }} labels: "['label-aaa=true','label-bbb=true']" # update-sdk-suppressions-labels: From 00a09301fcbe89e3a62132f3216536f02bff740a Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 18:11:21 +0800 Subject: [PATCH 104/190] rename token --- .github/actions/add-multi-label-artifact/action.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/actions/add-multi-label-artifact/action.yaml b/.github/actions/add-multi-label-artifact/action.yaml index 5b246a1f407f..101c60e0276c 100644 --- a/.github/actions/add-multi-label-artifact/action.yaml +++ b/.github/actions/add-multi-label-artifact/action.yaml @@ -39,6 +39,7 @@ runs: # Replace '=' with a separator for artifact naming artifact_name=$(echo "$label_pair" | sed 's/=/=/') + token="${{ inputs.token }}" # Create empty file for the artifact empty_file="$RUNNER_TEMP/empty-${artifact_name}.txt" > "$empty_file" From ab41f98aa592f9f9a0b53f5439bc5bb44ffb7af1 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 18:24:55 +0800 Subject: [PATCH 105/190] rename token --- .github/actions/add-multi-label-artifact/action.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/actions/add-multi-label-artifact/action.yaml b/.github/actions/add-multi-label-artifact/action.yaml index 101c60e0276c..bfb113b30aae 100644 --- a/.github/actions/add-multi-label-artifact/action.yaml +++ b/.github/actions/add-multi-label-artifact/action.yaml @@ -31,6 +31,8 @@ runs: - name: Process label-value pairs shell: bash + env: + GH_TOKEN: ${{ inputs.token }} run: | # Convert input to array eval "label_array=${{ inputs.labels }}" @@ -39,7 +41,6 @@ runs: # Replace '=' with a separator for artifact naming artifact_name=$(echo "$label_pair" | sed 's/=/=/') - token="${{ inputs.token }}" # Create empty file for the artifact empty_file="$RUNNER_TEMP/empty-${artifact_name}.txt" > "$empty_file" @@ -48,7 +49,7 @@ runs: echo "Uploading artifact: $artifact_name" gh api \ -H "Accept: application/vnd.github+json" \ - -H "Authorization: token $token" \ + -H "Authorization: token $GH_TOKEN" \ /repos/${{ github.repository }}/actions/artifacts \ -X POST \ -F name="$artifact_name" \ From daa9e5e5fcb3dda56e4f4b95788c5594a5df56a3 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 19:00:16 +0800 Subject: [PATCH 106/190] rename step name --- .../add-multi-label-artifact/action.yaml | 57 ------------------- .github/workflows/SDK-Suppressions-Label.yaml | 45 +++++++-------- 2 files changed, 20 insertions(+), 82 deletions(-) delete mode 100644 .github/actions/add-multi-label-artifact/action.yaml diff --git a/.github/actions/add-multi-label-artifact/action.yaml b/.github/actions/add-multi-label-artifact/action.yaml deleted file mode 100644 index bfb113b30aae..000000000000 --- a/.github/actions/add-multi-label-artifact/action.yaml +++ /dev/null @@ -1,57 +0,0 @@ -name: Add Multi Label Artifact -description: Uploads empty artifacts for each label-value pair, consumed by the "update-labels" action. - -inputs: - labels: - description: "Array of label-value pairs (e.g., ['label-a=true','label-b=false'])" - required: true - token: - description: "GitHub token" - required: true - - -runs: - using: composite - - steps: - - name: Parse and validate input - shell: bash - run: | - # Convert input to array - eval "label_array=${{ inputs.labels }}" - - # Check if array is empty - if [ "${#label_array[@]}" -eq 0 ]; then - echo "Error: No labels provided." - exit 1 - fi - - # Debug: Print parsed array - echo "Parsed labels: ${label_array[@]}" - - - name: Process label-value pairs - shell: bash - env: - GH_TOKEN: ${{ inputs.token }} - run: | - # Convert input to array - eval "label_array=${{ inputs.labels }}" - - for label_pair in "${label_array[@]}"; do - # Replace '=' with a separator for artifact naming - artifact_name=$(echo "$label_pair" | sed 's/=/=/') - - # Create empty file for the artifact - empty_file="$RUNNER_TEMP/empty-${artifact_name}.txt" - > "$empty_file" - - # Upload artifact using actions/upload-artifact - echo "Uploading artifact: $artifact_name" - gh api \ - -H "Accept: application/vnd.github+json" \ - -H "Authorization: token $GH_TOKEN" \ - /repos/${{ github.repository }}/actions/artifacts \ - -X POST \ - -F name="$artifact_name" \ - -F file=@"$empty_file" - done diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index fbd1e9530d6b..8c3763df34d5 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -1,4 +1,4 @@ -name: SDK Suppression Labeler +name: SDK Suppression Label on: pull_request: @@ -13,7 +13,7 @@ on: jobs: process-sdk-suppressions-labels: - name: breakingchange suppressions label Workflow + name: proc-sdk-labels runs-on: ubuntu-latest permissions: contents: read @@ -81,27 +81,22 @@ jobs: echo "Script output labels: $OUTPUT" echo "::set-output name=suppressions-result-output::$OUTPUT" - - uses: ./.github/actions/add-multi-label-artifact - name: Upload artifact with results - with: - token: ${{ secrets.GITHUB_TOKEN }} - labels: "['label-aaa=true','label-bbb=true']" - - # update-sdk-suppressions-labels: - # runs-on: ubuntu-latest - # needs: process-sdk-suppressions-labels - # strategy: - # matrix: - # artifact-name: ${{ fromJson(needs.process-sdk-suppressions-labels.outputs.process-sdk-suppressions-output) }} - # steps: - # - name: Create empty file to upload artifacts - # run: "> $RUNNER_TEMP/empty.txt" - # shell: bash + update-sdk-suppressions-labels: + name: upd-sdk-labels + runs-on: ubuntu-latest + needs: process-sdk-suppressions-labels + strategy: + matrix: + artifact-name: ${{ fromJson(needs.process-sdk-suppressions-labels.outputs.process-sdk-suppressions-output) }} + steps: + - name: Create empty file to upload artifacts + run: "> $RUNNER_TEMP/empty.txt" + shell: bash - # - name: Upload artifact - # uses: actions/upload-artifact@v4 - # with: - # name: ${{ matrix.artifact-name }} - # path: ${{ runner.temp }}/empty.txt - # if-no-files-found: error - # overwrite: true + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.artifact-name }} + path: ${{ runner.temp }}/empty.txt + if-no-files-found: error + overwrite: true From 7689d3e59126de77744cd122d9a6fcdd4051fc9b Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 19:08:16 +0800 Subject: [PATCH 107/190] enhancement when the pre job is empty --- .github/workflows/SDK-Suppressions-Label.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 8c3763df34d5..1762310fa89e 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -72,9 +72,9 @@ jobs: id: run-suppressions-script env: GITHUB_PULL_REQUEST_CONTEXT: ${{ steps.fetch-pullRequest-context.outputs.result }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} OUTPUT_FILE: "output.json" GITHUB_PULL_REQUEST_CHANGE_FILES: ${{ steps.get-changedFiles.outputs.changedFiles }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js OUTPUT=$(cat $OUTPUT_FILE) @@ -85,6 +85,7 @@ jobs: name: upd-sdk-labels runs-on: ubuntu-latest needs: process-sdk-suppressions-labels + if: ${{ needs.process-sdk-suppressions-labels.outputs.process-sdk-suppressions-output && fromJson(needs.process-sdk-suppressions-labels.outputs.process-sdk-suppressions-output) != [] }} strategy: matrix: artifact-name: ${{ fromJson(needs.process-sdk-suppressions-labels.outputs.process-sdk-suppressions-output) }} From 6dba8d131cd64d932a3d62af45a9cf0960597e06 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 19:17:10 +0800 Subject: [PATCH 108/190] add new out put --- .github/workflows/SDK-Suppressions-Label.yaml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 1762310fa89e..a18a8662507c 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -79,13 +79,21 @@ jobs: node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js OUTPUT=$(cat $OUTPUT_FILE) echo "Script output labels: $OUTPUT" + + if [[ "$output" == "[]" ]]; then + echo "has-output=false" >> $GITHUB_ENV + else + echo "has-output=true" >> $GITHUB_ENV + fi + echo "::set-output name=suppressions-result-output::$OUTPUT" + echo "::set-output name=has-output::$(echo $has-output)" update-sdk-suppressions-labels: name: upd-sdk-labels runs-on: ubuntu-latest needs: process-sdk-suppressions-labels - if: ${{ needs.process-sdk-suppressions-labels.outputs.process-sdk-suppressions-output && fromJson(needs.process-sdk-suppressions-labels.outputs.process-sdk-suppressions-output) != [] }} + if: ${{ needs.process-sdk-suppressions-labels.outputs.has-output == 'true' }} strategy: matrix: artifact-name: ${{ fromJson(needs.process-sdk-suppressions-labels.outputs.process-sdk-suppressions-output) }} From 700cfefa774c39985c82c9cbb075fab5e3c15950 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 19:18:00 +0800 Subject: [PATCH 109/190] add new out put --- .github/workflows/SDK-Suppressions-Label.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index a18a8662507c..df5142f003ca 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -19,7 +19,7 @@ jobs: contents: read outputs: process-sdk-suppressions-output: ${{ steps.run-suppressions-script.outputs.suppressions-result-output }} - + has-output: ${{ steps.run-suppressions-script.outputs.has-output }} steps: - name: Checkout code uses: actions/checkout@v4 From 3eab5cf08fb942df3523ba880f4f2f1ad73e5b58 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 19:34:49 +0800 Subject: [PATCH 110/190] rename job name --- .github/workflows/SDK-Suppressions-Label.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index df5142f003ca..2d0d76b3a4e4 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -13,7 +13,7 @@ on: jobs: process-sdk-suppressions-labels: - name: proc-sdk-labels + name: Proc SDKSup labels runs-on: ubuntu-latest permissions: contents: read @@ -90,7 +90,7 @@ jobs: echo "::set-output name=has-output::$(echo $has-output)" update-sdk-suppressions-labels: - name: upd-sdk-labels + name: Upd SDKSup labels runs-on: ubuntu-latest needs: process-sdk-suppressions-labels if: ${{ needs.process-sdk-suppressions-labels.outputs.has-output == 'true' }} From 79ff2f66b10e1ccb1391850162ed0a4850a2a533 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 19:44:38 +0800 Subject: [PATCH 111/190] test has output --- .github/workflows/SDK-Suppressions-Label.yaml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 2d0d76b3a4e4..b27d7c5aa243 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -13,7 +13,7 @@ on: jobs: process-sdk-suppressions-labels: - name: Proc SDKSup labels + name: Process Sup runs-on: ubuntu-latest permissions: contents: read @@ -80,17 +80,18 @@ jobs: OUTPUT=$(cat $OUTPUT_FILE) echo "Script output labels: $OUTPUT" - if [[ "$output" == "[]" ]]; then - echo "has-output=false" >> $GITHUB_ENV + if [[ "$OUTPUT" == "[]" ]]; then + has-output=false" else - echo "has-output=true" >> $GITHUB_ENV + has-output=true fi + echo "Script output labels: $has-output" echo "::set-output name=suppressions-result-output::$OUTPUT" - echo "::set-output name=has-output::$(echo $has-output)" + echo "::set-output name=has-output::$has-output" update-sdk-suppressions-labels: - name: Upd SDKSup labels + name: Update labels runs-on: ubuntu-latest needs: process-sdk-suppressions-labels if: ${{ needs.process-sdk-suppressions-labels.outputs.has-output == 'true' }} From bf234a73b790d51251da1e05cf3acdea49b9337c Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 19:57:27 +0800 Subject: [PATCH 112/190] test has output --- .github/workflows/SDK-Suppressions-Label.yaml | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index b27d7c5aa243..289f3065aa15 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -79,15 +79,10 @@ jobs: node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js OUTPUT=$(cat $OUTPUT_FILE) echo "Script output labels: $OUTPUT" - - if [[ "$OUTPUT" == "[]" ]]; then - has-output=false" - else - has-output=true - fi - - echo "Script output labels: $has-output" echo "::set-output name=suppressions-result-output::$OUTPUT" + + has_output=$(node -e "const fs = require('fs'); const data = JSON.parse(fs.readFileSync('$OUTPUT_FILE', 'utf8')); console.log(data.length === 0 ? 'false' : 'true');") + echo "Script has-output: $has-output" echo "::set-output name=has-output::$has-output" update-sdk-suppressions-labels: From 6433ab554de26fc462056d88be204ae1bd57a6c0 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 20:17:01 +0800 Subject: [PATCH 113/190] test has output --- .github/workflows/SDK-Suppressions-Label.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 289f3065aa15..ad1eb0acea4b 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -81,7 +81,7 @@ jobs: echo "Script output labels: $OUTPUT" echo "::set-output name=suppressions-result-output::$OUTPUT" - has_output=$(node -e "const fs = require('fs'); const data = JSON.parse(fs.readFileSync('$OUTPUT_FILE', 'utf8')); console.log(data.length === 0 ? 'false' : 'true');") + has-output=$(node -e "const fs = require('fs'); const data = JSON.parse(fs.readFileSync('$', 'utf8')); console.log(data.length === 0 ? false : true);") echo "Script has-output: $has-output" echo "::set-output name=has-output::$has-output" From 4b280ce2a4b79b2ec657f43926828ef9e2681edf Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 20:19:59 +0800 Subject: [PATCH 114/190] test has output --- .github/workflows/SDK-Suppressions-Label.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index ad1eb0acea4b..8ded08ec5939 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -81,7 +81,7 @@ jobs: echo "Script output labels: $OUTPUT" echo "::set-output name=suppressions-result-output::$OUTPUT" - has-output=$(node -e "const fs = require('fs'); const data = JSON.parse(fs.readFileSync('$', 'utf8')); console.log(data.length === 0 ? false : true);") + has-output=$(node -e "const fs = require('fs'); const data = JSON.parse(fs.readFileSync('$OUTPUT_FILE', 'utf8')); console.log(data.length === 0 ? false : true);") echo "Script has-output: $has-output" echo "::set-output name=has-output::$has-output" From d1bbbb5f58e05fdad4d77de8a6820249faa0d638 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 20:23:56 +0800 Subject: [PATCH 115/190] test has output --- .github/workflows/SDK-Suppressions-Label.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 8ded08ec5939..32c2a204f3a6 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -81,9 +81,9 @@ jobs: echo "Script output labels: $OUTPUT" echo "::set-output name=suppressions-result-output::$OUTPUT" - has-output=$(node -e "const fs = require('fs'); const data = JSON.parse(fs.readFileSync('$OUTPUT_FILE', 'utf8')); console.log(data.length === 0 ? false : true);") - echo "Script has-output: $has-output" - echo "::set-output name=has-output::$has-output" + has_output=$(node -e "const fs = require('fs'); const data = JSON.parse(fs.readFileSync('$OUTPUT_FILE', 'utf8')); console.log(data.length === 0 ? 'false' : 'true');") + echo "Script has-output: $has_output" + echo "::set-output name=has-output::$has_output" update-sdk-suppressions-labels: name: Update labels From bb3e3ea2f04fa31dcb168beda4fe497791796038 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 20:48:19 +0800 Subject: [PATCH 116/190] add composite action --- .../add-multi-label-artifact/action.yaml | 30 +++++++++++++ .github/workflows/SDK-Suppressions-Label.yaml | 44 +++++++++++-------- 2 files changed, 55 insertions(+), 19 deletions(-) create mode 100644 .github/actions/add-multi-label-artifact/action.yaml diff --git a/.github/actions/add-multi-label-artifact/action.yaml b/.github/actions/add-multi-label-artifact/action.yaml new file mode 100644 index 000000000000..a94d3cbf8236 --- /dev/null +++ b/.github/actions/add-multi-label-artifact/action.yaml @@ -0,0 +1,30 @@ +name: 'Upload Artifacts Based on Labels' +description: 'Loops over a list of label=value pairs and uploads corresponding artifacts' + +inputs: + labels: + description: 'A list of label=value pairs' + required: true + +runs: + using: 'composite' + steps: + + - name: Create empty file to upload artifact + run: "> $RUNNER_TEMP/empty.txt" + shell: bash + + - name: Process each label-value pair and upload artifact + shell: bash + run: | + # Loop through each label-value pair + for label_pair in "${{ inputs.labels[@] }}"; do + # Upload the artifact using actions/upload-artifact + echo "Uploading artifact: $label=$value" + uses: actions/upload-artifact@v4 + with: + name: "$label_pair" + path: ${{ runner.temp }}/empty.txt + if-no-files-found: error + overwrite: true + done diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 32c2a204f3a6..84d41416d565 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -85,23 +85,29 @@ jobs: echo "Script has-output: $has_output" echo "::set-output name=has-output::$has_output" - update-sdk-suppressions-labels: - name: Update labels - runs-on: ubuntu-latest - needs: process-sdk-suppressions-labels - if: ${{ needs.process-sdk-suppressions-labels.outputs.has-output == 'true' }} - strategy: - matrix: - artifact-name: ${{ fromJson(needs.process-sdk-suppressions-labels.outputs.process-sdk-suppressions-output) }} - steps: - - name: Create empty file to upload artifacts - run: "> $RUNNER_TEMP/empty.txt" - shell: bash - - - name: Upload artifact - uses: actions/upload-artifact@v4 + - name: Add label artifact + uses: ./.github/actions/add-label-artifact with: - name: ${{ matrix.artifact-name }} - path: ${{ runner.temp }}/empty.txt - if-no-files-found: error - overwrite: true + labels: "['label-aaa=true', 'label-bbb=false']" + + # labels: ${{ steps.run-suppressions-script.outputs.suppressions-result-output }} + # update-sdk-suppressions-labels: + # name: Update labels + # runs-on: ubuntu-latest + # needs: process-sdk-suppressions-labels + # if: ${{ needs.process-sdk-suppressions-labels.outputs.has-output == 'true' }} + # strategy: + # matrix: + # artifact-name: ${{ fromJson(needs.process-sdk-suppressions-labels.outputs.process-sdk-suppressions-output) }} + # steps: + # - name: Create empty file to upload artifacts + # run: "> $RUNNER_TEMP/empty.txt" + # shell: bash + + # - name: Upload artifact + # uses: actions/upload-artifact@v4 + # with: + # name: ${{ matrix.artifact-name }} + # path: ${{ runner.temp }}/empty.txt + # if-no-files-found: error + # overwrite: true From 47b33812c036e92e88f209f68459ab4be625f94c Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 20:56:45 +0800 Subject: [PATCH 117/190] add composite action --- .github/actions/add-multi-label-artifact/action.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/add-multi-label-artifact/action.yaml b/.github/actions/add-multi-label-artifact/action.yaml index a94d3cbf8236..cfd8d58def80 100644 --- a/.github/actions/add-multi-label-artifact/action.yaml +++ b/.github/actions/add-multi-label-artifact/action.yaml @@ -20,7 +20,7 @@ runs: # Loop through each label-value pair for label_pair in "${{ inputs.labels[@] }}"; do # Upload the artifact using actions/upload-artifact - echo "Uploading artifact: $label=$value" + echo "Processing label pair: $label_pair" uses: actions/upload-artifact@v4 with: name: "$label_pair" From 9a9f87cf357379fa9c7b749dc377128da65a159f Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 21:00:01 +0800 Subject: [PATCH 118/190] add composite action --- .github/workflows/SDK-Suppressions-Label.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 84d41416d565..58bae20c0d49 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -86,7 +86,7 @@ jobs: echo "::set-output name=has-output::$has_output" - name: Add label artifact - uses: ./.github/actions/add-label-artifact + uses: ./.github/actions/add-multi-label-artifact with: labels: "['label-aaa=true', 'label-bbb=false']" From ac116618c813a485eed51d21f239d042c0633225 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 21:12:25 +0800 Subject: [PATCH 119/190] test composite action --- .github/actions/add-multi-label-artifact/action.yaml | 9 +++++---- .github/workflows/update-labels.yaml | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/actions/add-multi-label-artifact/action.yaml b/.github/actions/add-multi-label-artifact/action.yaml index cfd8d58def80..9f5a1ae7c76f 100644 --- a/.github/actions/add-multi-label-artifact/action.yaml +++ b/.github/actions/add-multi-label-artifact/action.yaml @@ -17,9 +17,10 @@ runs: - name: Process each label-value pair and upload artifact shell: bash run: | - # Loop through each label-value pair - for label_pair in "${{ inputs.labels[@] }}"; do - # Upload the artifact using actions/upload-artifact + label_string="${{ inputs.labels }}" + IFS=' ' read -r -a label_array <<< "$label_string" + + for label_pair in "${label_array[@]}"; do echo "Processing label pair: $label_pair" uses: actions/upload-artifact@v4 with: @@ -27,4 +28,4 @@ runs: path: ${{ runner.temp }}/empty.txt if-no-files-found: error overwrite: true - done + done \ No newline at end of file diff --git a/.github/workflows/update-labels.yaml b/.github/workflows/update-labels.yaml index 09f0b2070cca..25b0c447ddd4 100644 --- a/.github/workflows/update-labels.yaml +++ b/.github/workflows/update-labels.yaml @@ -6,7 +6,7 @@ on: # types: [labeled, unlabeled] # If an upstream workflow if completed, get only the artifacts from that workflow, and update labels workflow_run: - workflows: ["TypeSpec Requirement", "Manage SDK Breakingchange Suppressions Labels Workflow"] + workflows: ["TypeSpec Requirement", "SDK Suppression Label"] types: [completed] workflow_dispatch: inputs: From c8c092ab3034d3b1ea3926f8fe2949ef7d423638 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 21:20:46 +0800 Subject: [PATCH 120/190] test composite action --- .github/actions/add-multi-label-artifact/action.yaml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/actions/add-multi-label-artifact/action.yaml b/.github/actions/add-multi-label-artifact/action.yaml index 9f5a1ae7c76f..b6fd7604bc7c 100644 --- a/.github/actions/add-multi-label-artifact/action.yaml +++ b/.github/actions/add-multi-label-artifact/action.yaml @@ -17,9 +17,10 @@ runs: - name: Process each label-value pair and upload artifact shell: bash run: | - label_string="${{ inputs.labels }}" - IFS=' ' read -r -a label_array <<< "$label_string" + label_string="${{ inputs.labels }}" + label_string="${label_string//[\[\] ]/}" + IFS=',' read -r -a label_array <<< "$label_string for label_pair in "${label_array[@]}"; do echo "Processing label pair: $label_pair" uses: actions/upload-artifact@v4 @@ -28,4 +29,4 @@ runs: path: ${{ runner.temp }}/empty.txt if-no-files-found: error overwrite: true - done \ No newline at end of file + done From 672cbe200f6b4bde485dd664ebeb68c765862a94 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 21:28:32 +0800 Subject: [PATCH 121/190] test composite action --- .github/actions/add-multi-label-artifact/action.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/add-multi-label-artifact/action.yaml b/.github/actions/add-multi-label-artifact/action.yaml index b6fd7604bc7c..3285b6fbb2e3 100644 --- a/.github/actions/add-multi-label-artifact/action.yaml +++ b/.github/actions/add-multi-label-artifact/action.yaml @@ -20,7 +20,7 @@ runs: label_string="${{ inputs.labels }}" label_string="${label_string//[\[\] ]/}" - IFS=',' read -r -a label_array <<< "$label_string + IFS=',' read -r -a label_array <<< "$label_string" for label_pair in "${label_array[@]}"; do echo "Processing label pair: $label_pair" uses: actions/upload-artifact@v4 From 29ad2ddbfa14e8a338dbb0f6afb00022d473a685 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 21:42:36 +0800 Subject: [PATCH 122/190] revert --- .../add-multi-label-artifact/action.yaml | 32 -------------- .github/workflows/SDK-Suppressions-Label.yaml | 44 ++++++++----------- 2 files changed, 19 insertions(+), 57 deletions(-) delete mode 100644 .github/actions/add-multi-label-artifact/action.yaml diff --git a/.github/actions/add-multi-label-artifact/action.yaml b/.github/actions/add-multi-label-artifact/action.yaml deleted file mode 100644 index 3285b6fbb2e3..000000000000 --- a/.github/actions/add-multi-label-artifact/action.yaml +++ /dev/null @@ -1,32 +0,0 @@ -name: 'Upload Artifacts Based on Labels' -description: 'Loops over a list of label=value pairs and uploads corresponding artifacts' - -inputs: - labels: - description: 'A list of label=value pairs' - required: true - -runs: - using: 'composite' - steps: - - - name: Create empty file to upload artifact - run: "> $RUNNER_TEMP/empty.txt" - shell: bash - - - name: Process each label-value pair and upload artifact - shell: bash - run: | - - label_string="${{ inputs.labels }}" - label_string="${label_string//[\[\] ]/}" - IFS=',' read -r -a label_array <<< "$label_string" - for label_pair in "${label_array[@]}"; do - echo "Processing label pair: $label_pair" - uses: actions/upload-artifact@v4 - with: - name: "$label_pair" - path: ${{ runner.temp }}/empty.txt - if-no-files-found: error - overwrite: true - done diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 58bae20c0d49..60bf28164122 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -84,30 +84,24 @@ jobs: has_output=$(node -e "const fs = require('fs'); const data = JSON.parse(fs.readFileSync('$OUTPUT_FILE', 'utf8')); console.log(data.length === 0 ? 'false' : 'true');") echo "Script has-output: $has_output" echo "::set-output name=has-output::$has_output" + + update-sdk-suppressions-labels: + name: Update labels + runs-on: ubuntu-latest + needs: process-sdk-suppressions-labels + if: ${{ needs.process-sdk-suppressions-labels.outputs.has-output == 'true' }} + strategy: + matrix: + artifact-name: ${{ fromJson(needs.process-sdk-suppressions-labels.outputs.process-sdk-suppressions-output) }} + steps: + - name: Create empty file to upload artifacts + run: "> $RUNNER_TEMP/empty.txt" + shell: bash - - name: Add label artifact - uses: ./.github/actions/add-multi-label-artifact + - name: Upload artifact + uses: actions/upload-artifact@v4 with: - labels: "['label-aaa=true', 'label-bbb=false']" - - # labels: ${{ steps.run-suppressions-script.outputs.suppressions-result-output }} - # update-sdk-suppressions-labels: - # name: Update labels - # runs-on: ubuntu-latest - # needs: process-sdk-suppressions-labels - # if: ${{ needs.process-sdk-suppressions-labels.outputs.has-output == 'true' }} - # strategy: - # matrix: - # artifact-name: ${{ fromJson(needs.process-sdk-suppressions-labels.outputs.process-sdk-suppressions-output) }} - # steps: - # - name: Create empty file to upload artifacts - # run: "> $RUNNER_TEMP/empty.txt" - # shell: bash - - # - name: Upload artifact - # uses: actions/upload-artifact@v4 - # with: - # name: ${{ matrix.artifact-name }} - # path: ${{ runner.temp }}/empty.txt - # if-no-files-found: error - # overwrite: true + name: ${{ matrix.artifact-name }} + path: ${{ runner.temp }}/empty.txt + if-no-files-found: error + overwrite: true From a866d110632da3dd47229075113db3445634c594 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 22:03:50 +0800 Subject: [PATCH 123/190] add special js to resolve upload artifact --- .../add-multi-labels-artifact/action.js | 105 ++++++++++++++++++ .../add-multi-labels-artifact/action.yaml | 39 +++++++ .github/workflows/SDK-Suppressions-Label.yaml | 43 +++---- 3 files changed, 168 insertions(+), 19 deletions(-) create mode 100644 .github/actions/add-multi-labels-artifact/action.js create mode 100644 .github/actions/add-multi-labels-artifact/action.yaml diff --git a/.github/actions/add-multi-labels-artifact/action.js b/.github/actions/add-multi-labels-artifact/action.js new file mode 100644 index 000000000000..704f5218b320 --- /dev/null +++ b/.github/actions/add-multi-labels-artifact/action.js @@ -0,0 +1,105 @@ +// @ts-check + +const { extractInputs } = require("../context"); + +/** + * @param {import('github-script').AsyncFunctionArguments} AsyncFunctionArguments + */ +module.exports = async ({ github, context, core }, labels) => { + console.log('actionjs result', labels); + console.log('actionjs result', JSON.parse(labels)); +// let owner = process.env.OWNER; +// let repo = process.env.REPO; +// let issue_number = parseInt(process.env.ISSUE_NUMBER || ""); +// let run_id = parseInt(process.env.RUN_ID || ""); + +// if (!owner || !repo || !(issue_number || run_id)) { +// let inputs = await extractInputs(github, context, core); +// owner = owner || inputs.owner; +// repo = repo || inputs.repo; +// issue_number = issue_number || inputs.issue_number; +// run_id = run_id || inputs.run_id; +// } + +// /** @type {string[]} */ +// let artifactNames = []; + +// if (run_id) { +// // List artifacts from a single run_id +// core.info(`listWorkflowRunArtifacts(${owner}, ${repo}, ${run_id})`); +// const artifacts = await github.rest.actions.listWorkflowRunArtifacts({ +// owner: owner, +// repo: repo, +// run_id: run_id, +// }); + +// artifactNames = artifacts.data.artifacts.map((a) => a.name); +// } else { +// // TODO: List all artifacts of all workflows associated with issue_number +// throw new Error("Required input 'run_id' not found in env or context"); +// } + +// core.info(`artifactNames: ${JSON.stringify(artifactNames)}`); + +// /** @type {string[]} */ +// const labelsToAdd = []; + +// /** @type {string[]} */ +// const labelsToRemove = []; + +// for (const artifactName of artifactNames) { +// // If artifactName has format "label-name=true|false", add or remove the label +// // Else, if artifactName has format "label-name=other-string", throw an error +// // Else, if artifactName does not start with "label-", ignore it +// const firstEquals = artifactName.indexOf("="); +// if (firstEquals !== -1) { +// const key = artifactName.substring(0, firstEquals); +// const value = artifactName.substring(firstEquals + 1); + +// if (key.startsWith("label-")) { +// const name = key.substring("label-".length); +// if (value === "true") { +// labelsToAdd.push(name); +// } else if (value === "false") { +// labelsToRemove.push(name); +// } else { +// throw new Error( +// `Invalid value for label '${name}': ${value}. Expected "true" or "false".`, +// ); +// } +// } +// } +// } + +// core.info(`labelsToAdd: ${JSON.stringify(labelsToAdd)}`); +// core.info(`labelsToRemove: ${JSON.stringify(labelsToRemove)}`); + +// if (labelsToAdd.length > 0) { +// await github.rest.issues.addLabels({ +// owner: owner, +// repo: repo, +// issue_number: issue_number, +// labels: labelsToAdd, +// }); +// } + +// if (labelsToRemove.length > 0) { +// // Must loop over labelsToRemove ourselves, since GitHub doesn't expose a REST API to remove in bulk. +// for (const name of labelsToRemove) { +// try { +// await github.rest.issues.removeLabel({ +// owner: owner, +// repo: repo, +// issue_number: issue_number, +// name: name, +// }); +// } catch (error) { +// if (error.status === 404) { +// core.info(`Ignoring error: ${error.status} - ${error.message}`); +// } else { +// throw error; +// } +// } +// } +// } +}; diff --git a/.github/actions/add-multi-labels-artifact/action.yaml b/.github/actions/add-multi-labels-artifact/action.yaml new file mode 100644 index 000000000000..6584fb8ae9ff --- /dev/null +++ b/.github/actions/add-multi-labels-artifact/action.yaml @@ -0,0 +1,39 @@ +name: Upload Multi Artifacts Based on Labels +description: 'Loops over a list of label=value pairs and uploads corresponding artifacts' + +inputs: + labels: + description: 'A list of label=value pairs' + required: true + +runs: + using: 'composite' + steps: + + - name: update multi artifacts + uses: actions/github-script@v7 + with: + script: | + const action = require('./.github/actions/add-multi-labels-artifact/action.js') + await action({ github, context, core }, labels: ${{ inputs.labels }}); + + + # - name: Create empty file to upload artifact + # run: "> $RUNNER_TEMP/empty.txt" + # shell: bash + + # - name: Process each label-value pair and upload artifact + # shell: bash + # run: | + # label_string="${{ inputs.labels }}" + # label_string="${label_string//[\[\] ]/}" + # IFS=',' read -r -a label_array <<< "$label_string" + # for label_pair in "${label_array[@]}"; do + # echo "Processing label pair: $label_pair" + # uses: actions/upload-artifact@v4 + # with: + # name: "$label_pair" + # path: ${{ runner.temp }}/empty.txt + # if-no-files-found: error + # overwrite: true + # done \ No newline at end of file diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 60bf28164122..f61f82813837 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -85,23 +85,28 @@ jobs: echo "Script has-output: $has_output" echo "::set-output name=has-output::$has_output" - update-sdk-suppressions-labels: - name: Update labels - runs-on: ubuntu-latest - needs: process-sdk-suppressions-labels - if: ${{ needs.process-sdk-suppressions-labels.outputs.has-output == 'true' }} - strategy: - matrix: - artifact-name: ${{ fromJson(needs.process-sdk-suppressions-labels.outputs.process-sdk-suppressions-output) }} - steps: - - name: Create empty file to upload artifacts - run: "> $RUNNER_TEMP/empty.txt" - shell: bash - - - name: Upload artifact - uses: actions/upload-artifact@v4 + - name: Add label artifact + uses: ./.github/actions/add-multi-labels-artifact with: - name: ${{ matrix.artifact-name }} - path: ${{ runner.temp }}/empty.txt - if-no-files-found: error - overwrite: true + labels: "['label-aaa=true', 'label-bbb=false']" + + # update-sdk-suppressions-labels: + # name: Update labels + # runs-on: ubuntu-latest + # needs: process-sdk-suppressions-labels + # if: ${{ needs.process-sdk-suppressions-labels.outputs.has-output == 'true' }} + # strategy: + # matrix: + # artifact-name: ${{ fromJson(needs.process-sdk-suppressions-labels.outputs.process-sdk-suppressions-output) }} + # steps: + # - name: Create empty file to upload artifacts + # run: "> $RUNNER_TEMP/empty.txt" + # shell: bash + + # - name: Upload artifact + # uses: actions/upload-artifact@v4 + # with: + # name: ${{ matrix.artifact-name }} + # path: ${{ runner.temp }}/empty.txt + # if-no-files-found: error + # overwrite: true From 19cb4a29df44a9c96a5e1aa5ffd7bbfe076c5e0f Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 22:08:11 +0800 Subject: [PATCH 124/190] fix bug --- .github/actions/add-multi-labels-artifact/action.js | 6 +++--- .github/actions/add-multi-labels-artifact/action.yaml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/actions/add-multi-labels-artifact/action.js b/.github/actions/add-multi-labels-artifact/action.js index 704f5218b320..06df57fa00aa 100644 --- a/.github/actions/add-multi-labels-artifact/action.js +++ b/.github/actions/add-multi-labels-artifact/action.js @@ -5,9 +5,9 @@ const { extractInputs } = require("../context"); /** * @param {import('github-script').AsyncFunctionArguments} AsyncFunctionArguments */ -module.exports = async ({ github, context, core }, labels) => { - console.log('actionjs result', labels); - console.log('actionjs result', JSON.parse(labels)); +module.exports = async ({ github, context, core }, args) => { + console.log('actionjs result', args.labels); + console.log('actionjs result', JSON.parse(args.labels)); // let owner = process.env.OWNER; // let repo = process.env.REPO; // let issue_number = parseInt(process.env.ISSUE_NUMBER || ""); diff --git a/.github/actions/add-multi-labels-artifact/action.yaml b/.github/actions/add-multi-labels-artifact/action.yaml index 6584fb8ae9ff..fcaab4ef2840 100644 --- a/.github/actions/add-multi-labels-artifact/action.yaml +++ b/.github/actions/add-multi-labels-artifact/action.yaml @@ -15,7 +15,7 @@ runs: with: script: | const action = require('./.github/actions/add-multi-labels-artifact/action.js') - await action({ github, context, core }, labels: ${{ inputs.labels }}); + await action({ github, context, core }, {labels: ${{ inputs.labels }}}); # - name: Create empty file to upload artifact From 22bbeb47796c79be376bb1471950225d68ffd432 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 23:01:30 +0800 Subject: [PATCH 125/190] add new js to upload artifact --- .../add-multi-labels-artifact/action.js | 135 +- .github/package-lock.json | 1797 ++++++++++++++++- .github/package.json | 7 +- 3 files changed, 1786 insertions(+), 153 deletions(-) diff --git a/.github/actions/add-multi-labels-artifact/action.js b/.github/actions/add-multi-labels-artifact/action.js index 06df57fa00aa..460e59bc0a99 100644 --- a/.github/actions/add-multi-labels-artifact/action.js +++ b/.github/actions/add-multi-labels-artifact/action.js @@ -1,105 +1,40 @@ -// @ts-check - -const { extractInputs } = require("../context"); /** * @param {import('github-script').AsyncFunctionArguments} AsyncFunctionArguments */ -module.exports = async ({ github, context, core }, args) => { - console.log('actionjs result', args.labels); - console.log('actionjs result', JSON.parse(args.labels)); -// let owner = process.env.OWNER; -// let repo = process.env.REPO; -// let issue_number = parseInt(process.env.ISSUE_NUMBER || ""); -// let run_id = parseInt(process.env.RUN_ID || ""); - -// if (!owner || !repo || !(issue_number || run_id)) { -// let inputs = await extractInputs(github, context, core); -// owner = owner || inputs.owner; -// repo = repo || inputs.repo; -// issue_number = issue_number || inputs.issue_number; -// run_id = run_id || inputs.run_id; -// } - -// /** @type {string[]} */ -// let artifactNames = []; - -// if (run_id) { -// // List artifacts from a single run_id -// core.info(`listWorkflowRunArtifacts(${owner}, ${repo}, ${run_id})`); -// const artifacts = await github.rest.actions.listWorkflowRunArtifacts({ -// owner: owner, -// repo: repo, -// run_id: run_id, -// }); - -// artifactNames = artifacts.data.artifacts.map((a) => a.name); -// } else { -// // TODO: List all artifacts of all workflows associated with issue_number -// throw new Error("Required input 'run_id' not found in env or context"); -// } - -// core.info(`artifactNames: ${JSON.stringify(artifactNames)}`); - -// /** @type {string[]} */ -// const labelsToAdd = []; - -// /** @type {string[]} */ -// const labelsToRemove = []; - -// for (const artifactName of artifactNames) { -// // If artifactName has format "label-name=true|false", add or remove the label -// // Else, if artifactName has format "label-name=other-string", throw an error -// // Else, if artifactName does not start with "label-", ignore it -// const firstEquals = artifactName.indexOf("="); -// if (firstEquals !== -1) { -// const key = artifactName.substring(0, firstEquals); -// const value = artifactName.substring(firstEquals + 1); - -// if (key.startsWith("label-")) { -// const name = key.substring("label-".length); -// if (value === "true") { -// labelsToAdd.push(name); -// } else if (value === "false") { -// labelsToRemove.push(name); -// } else { -// throw new Error( -// `Invalid value for label '${name}': ${value}. Expected "true" or "false".`, -// ); -// } -// } -// } -// } - -// core.info(`labelsToAdd: ${JSON.stringify(labelsToAdd)}`); -// core.info(`labelsToRemove: ${JSON.stringify(labelsToRemove)}`); - -// if (labelsToAdd.length > 0) { -// await github.rest.issues.addLabels({ -// owner: owner, -// repo: repo, -// issue_number: issue_number, -// labels: labelsToAdd, -// }); -// } - -// if (labelsToRemove.length > 0) { -// // Must loop over labelsToRemove ourselves, since GitHub doesn't expose a REST API to remove in bulk. -// for (const name of labelsToRemove) { -// try { -// await github.rest.issues.removeLabel({ -// owner: owner, -// repo: repo, -// issue_number: issue_number, -// name: name, -// }); -// } catch (error) { -// if (error.status === 404) { -// core.info(`Ignoring error: ${error.status} - ${error.message}`); -// } else { -// throw error; -// } -// } -// } -// } +module.exports = async ({ github, context, core, artifact }, args) => { + core.info(`actionjs result: ${args.labels}`); + // core.info('actionjs result', JSON.parse(args.labels)); + + const artifact = require('@actions/artifact'); + const fs = require('fs'); + + // const path = `${process.env.RUNNER_TEMP}/test-file.txt`; + /** @type {string[]} */ + const labels = args.labels; + + try { + const artifactClient = artifact.create(); + + for (const label of labels) { + const filePath = path.join(__dirname, `empty-${label}.txt`); + + fs.writeFileSync(filePath, `Artifact for label: ${label}`); + + core.log(`Uploading artifact: ${label}`); + const uploadResponse = await artifactClient.uploadArtifact( + label, + [filePath], + __dirname, + { overwrite: true } + ); + + core.log(`Upload complete for ${label}: ${uploadResponse}`); + + fs.unlinkSync(filePath); + } + } catch (error) { + core.error('Error uploading artifact:', error); + core.setFailed(error.message); + } }; diff --git a/.github/package-lock.json b/.github/package-lock.json index 9bf44423ccfa..85da26c0e518 100644 --- a/.github/package-lock.json +++ b/.github/package-lock.json @@ -1,9 +1,12 @@ { - "name": "scripts", + "name": ".github", "lockfileVersion": 3, "requires": true, "packages": { "": { + "dependencies": { + "@actions/artifact": "^2.1.11" + }, "devDependencies": { "@octokit/webhooks-types": "^7.5.1", "@types/github-script": "github:actions/github-script", @@ -11,11 +14,184 @@ "prettier": "^3.3.3" } }, + "node_modules/@actions/artifact": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/@actions/artifact/-/artifact-2.1.11.tgz", + "integrity": "sha512-V/N/3yM3oLxozq2dpdGqbd/39UbDOR54bF25vYsvn3QZnyZERSzPjTAAwpGzdcwESye9G7vnuhPiKQACEuBQpg==", + "license": "MIT", + "dependencies": { + "@actions/core": "^1.10.0", + "@actions/github": "^5.1.1", + "@actions/http-client": "^2.1.0", + "@azure/storage-blob": "^12.15.0", + "@octokit/core": "^3.5.1", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-retry": "^3.0.9", + "@octokit/request-error": "^5.0.0", + "@protobuf-ts/plugin": "^2.2.3-alpha.1", + "archiver": "^7.0.1", + "jwt-decode": "^3.1.2", + "twirp-ts": "^2.5.0", + "unzip-stream": "^0.3.1" + } + }, + "node_modules/@actions/artifact/node_modules/@actions/github": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@actions/github/-/github-5.1.1.tgz", + "integrity": "sha512-Nk59rMDoJaV+mHCOJPXuvB1zIbomlKS0dmSIqPGxd0enAXBnOfn4VWF+CGtRCwXZG9Epa54tZA7VIRlJDS8A6g==", + "license": "MIT", + "dependencies": { + "@actions/http-client": "^2.0.1", + "@octokit/core": "^3.6.0", + "@octokit/plugin-paginate-rest": "^2.17.0", + "@octokit/plugin-rest-endpoint-methods": "^5.13.0" + } + }, + "node_modules/@actions/artifact/node_modules/@octokit/auth-token": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", + "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^6.0.3" + } + }, + "node_modules/@actions/artifact/node_modules/@octokit/core": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", + "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", + "license": "MIT", + "dependencies": { + "@octokit/auth-token": "^2.4.4", + "@octokit/graphql": "^4.5.8", + "@octokit/request": "^5.6.3", + "@octokit/request-error": "^2.0.5", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@actions/artifact/node_modules/@octokit/core/node_modules/@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "node_modules/@actions/artifact/node_modules/@octokit/endpoint": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", + "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^6.0.3", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@actions/artifact/node_modules/@octokit/graphql": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", + "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", + "license": "MIT", + "dependencies": { + "@octokit/request": "^5.6.0", + "@octokit/types": "^6.0.3", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@actions/artifact/node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", + "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==", + "license": "MIT" + }, + "node_modules/@actions/artifact/node_modules/@octokit/plugin-paginate-rest": { + "version": "2.21.3", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", + "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^6.40.0" + }, + "peerDependencies": { + "@octokit/core": ">=2" + } + }, + "node_modules/@actions/artifact/node_modules/@octokit/plugin-request-log": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", + "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", + "license": "MIT", + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@actions/artifact/node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "5.16.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", + "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^6.39.0", + "deprecation": "^2.3.1" + }, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@actions/artifact/node_modules/@octokit/plugin-retry": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-3.0.9.tgz", + "integrity": "sha512-r+fArdP5+TG6l1Rv/C9hVoty6tldw6cE2pRHNGmFPdyfrc696R6JjrQ3d7HdVqGwuzfyrcaLAKD7K8TX8aehUQ==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^6.0.3", + "bottleneck": "^2.15.3" + } + }, + "node_modules/@actions/artifact/node_modules/@octokit/request": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", + "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", + "license": "MIT", + "dependencies": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.1.0", + "@octokit/types": "^6.16.1", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" + } + }, + "node_modules/@actions/artifact/node_modules/@octokit/request/node_modules/@octokit/request-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", + "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^6.0.3", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "node_modules/@actions/artifact/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, "node_modules/@actions/core": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.11.1.tgz", "integrity": "sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==", - "dev": true, "license": "MIT", "dependencies": { "@actions/exec": "^1.1.1", @@ -26,7 +202,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz", "integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==", - "dev": true, "license": "MIT", "dependencies": { "@actions/io": "^1.0.1" @@ -60,7 +235,6 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz", "integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==", - "dev": true, "license": "MIT", "dependencies": { "tunnel": "^0.0.6", @@ -71,19 +245,212 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.3.tgz", "integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==", - "dev": true, "license": "MIT" }, + "node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-auth": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.9.0.tgz", + "integrity": "sha512-FPwHpZywuyasDSLMqJ6fhbOK3TqUdviZNF8OqRGA4W5Ewib2lEEZ+pBsYcBa88B2NGO/SEnYPGhyBqNlE8ilSw==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-util": "^1.11.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-client": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.2.tgz", + "integrity": "sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-rest-pipeline": "^1.9.1", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.6.1", + "@azure/logger": "^1.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-http-compat": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/core-http-compat/-/core-http-compat-2.1.2.tgz", + "integrity": "sha512-5MnV1yqzZwgNLLjlizsU3QqOeQChkIXw781Fwh1xdAqJR5AA32IUaq6xv1BICJvfbHoa+JYcaij2HFkhLbNTJQ==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-client": "^1.3.0", + "@azure/core-rest-pipeline": "^1.3.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-lro": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.7.2.tgz", + "integrity": "sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-util": "^1.2.0", + "@azure/logger": "^1.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-paging": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.6.2.tgz", + "integrity": "sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.18.1.tgz", + "integrity": "sha512-/wS73UEDrxroUEVywEm7J0p2c+IIiVxyfigCGfsKvCxxCET4V/Hef2aURqltrXMRjNmdmt5IuOgIpl8f6xdO5A==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.8.0", + "@azure/core-tracing": "^1.0.1", + "@azure/core-util": "^1.11.0", + "@azure/logger": "^1.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-tracing": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.2.0.tgz", + "integrity": "sha512-UKTiEJPkWcESPYJz3X5uKRYyOcJD+4nYph+KpfdPRnQJVrZfk0KJgdnaAWKfhsBBtAf/D58Az4AvCJEmWgIBAg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-util": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.11.0.tgz", + "integrity": "sha512-DxOSLua+NdpWoSqULhjDyAZTXFdP/LKkqtYuxxz1SCN289zk3OG8UOpnCQAz/tygyACBtWp/BoO72ptK7msY8g==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-xml": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/@azure/core-xml/-/core-xml-1.4.4.tgz", + "integrity": "sha512-J4FYAqakGXcbfeZjwjMzjNcpcH4E+JtEBv+xcV1yL0Ydn/6wbQfeFKTCHh9wttAi0lmajHw7yBbHPRG+YHckZQ==", + "license": "MIT", + "dependencies": { + "fast-xml-parser": "^4.4.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/logger": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.1.4.tgz", + "integrity": "sha512-4IXXzcCdLdlXuCG+8UKEwLA1T1NHqUfanhXYHiQTn+6sfWCZXduqbtXDGceg3Ce5QxTGo7EqmbV6Bi+aqKuClQ==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/storage-blob": { + "version": "12.26.0", + "resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.26.0.tgz", + "integrity": "sha512-SriLPKezypIsiZ+TtlFfE46uuBIap2HeaQVS78e1P7rz5OSbq0rsd52WE1mC5f7vAeLiXqv7I7oRhL3WFZEw3Q==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@azure/core-auth": "^1.4.0", + "@azure/core-client": "^1.6.2", + "@azure/core-http-compat": "^2.0.0", + "@azure/core-lro": "^2.2.0", + "@azure/core-paging": "^1.1.1", + "@azure/core-rest-pipeline": "^1.10.1", + "@azure/core-tracing": "^1.1.2", + "@azure/core-util": "^1.6.1", + "@azure/core-xml": "^1.4.3", + "@azure/logger": "^1.0.0", + "events": "^3.0.0", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@fastify/busboy": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", - "dev": true, "license": "MIT", "engines": { "node": ">=14" } }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@octokit/auth-token": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", @@ -146,7 +513,6 @@ "version": "22.2.0", "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz", "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==", - "dev": true, "license": "MIT" }, "node_modules/@octokit/plugin-paginate-rest": { @@ -229,38 +595,21 @@ } }, "node_modules/@octokit/plugin-retry": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-6.0.1.tgz", - "integrity": "sha512-SKs+Tz9oj0g4p28qkZwl/topGcb0k0qPNX/i7vBKmDsjoeqnVfFUquqrE/O9oJY7+oLzdCtkiWSXLpLjvl6uog==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-6.1.0.tgz", + "integrity": "sha512-WrO3bvq4E1Xh1r2mT9w6SDFg01gFmP81nIG77+p/MqW1JeXXgL++6umim3t6x0Zj5pZm3rXAN+0HEjmmdhIRig==", "dev": true, "license": "MIT", "dependencies": { "@octokit/request-error": "^5.0.0", - "@octokit/types": "^12.0.0", + "@octokit/types": "^13.0.0", "bottleneck": "^2.15.3" }, "engines": { "node": ">= 18" }, "peerDependencies": { - "@octokit/core": ">=5" - } - }, - "node_modules/@octokit/plugin-retry/node_modules/@octokit/openapi-types": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", - "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@octokit/plugin-retry/node_modules/@octokit/types": { - "version": "12.6.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", - "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^20.0.0" + "@octokit/core": "5" } }, "node_modules/@octokit/request": { @@ -283,7 +632,6 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.0.tgz", "integrity": "sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==", - "dev": true, "license": "MIT", "dependencies": { "@octokit/types": "^13.1.0", @@ -295,10 +643,9 @@ } }, "node_modules/@octokit/types": { - "version": "13.6.1", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.6.1.tgz", - "integrity": "sha512-PHZE9Z+kWXb23Ndik8MKPirBPziOc0D2/3KH1P+6jK5nGWe96kadZuE4jev2/Jq7FvIfTlT2Ltg8Fv2x1v0a5g==", - "dev": true, + "version": "13.6.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.6.2.tgz", + "integrity": "sha512-WpbZfZUcZU77DrSW4wbsSgTPfKcp286q3ItaIgvSbBpZJlu6mnYXAkjZz6LVZPXkEvLIM8McanyZejKTYUHipA==", "license": "MIT", "dependencies": { "@octokit/openapi-types": "^22.2.0" @@ -311,10 +658,71 @@ "dev": true, "license": "MIT" }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@protobuf-ts/plugin": { + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/@protobuf-ts/plugin/-/plugin-2.9.4.tgz", + "integrity": "sha512-Db5Laq5T3mc6ERZvhIhkj1rn57/p8gbWiCKxQWbZBBl20wMuqKoHbRw4tuD7FyXi+IkwTToaNVXymv5CY3E8Rw==", + "license": "Apache-2.0", + "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" + }, + "bin": { + "protoc-gen-dump": "bin/protoc-gen-dump", + "protoc-gen-ts": "bin/protoc-gen-ts" + } + }, + "node_modules/@protobuf-ts/plugin-framework": { + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/@protobuf-ts/plugin-framework/-/plugin-framework-2.9.4.tgz", + "integrity": "sha512-9nuX1kjdMliv+Pes8dQCKyVhjKgNNfwxVHg+tx3fLXSfZZRcUHMc1PMwB9/vTvc6gBKt9QGz5ERqSqZc0++E9A==", + "license": "(Apache-2.0 AND BSD-3-Clause)", + "dependencies": { + "@protobuf-ts/runtime": "^2.9.4", + "typescript": "^3.9" + } + }, + "node_modules/@protobuf-ts/protoc": { + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/@protobuf-ts/protoc/-/protoc-2.9.4.tgz", + "integrity": "sha512-hQX+nOhFtrA+YdAXsXEDrLoGJqXHpgv4+BueYF0S9hy/Jq0VRTVlJS1Etmf4qlMt/WdigEes5LOd/LDzui4GIQ==", + "license": "Apache-2.0", + "bin": { + "protoc": "protoc.js" + } + }, + "node_modules/@protobuf-ts/runtime": { + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime/-/runtime-2.9.4.tgz", + "integrity": "sha512-vHRFWtJJB/SiogWDF0ypoKfRIZ41Kq+G9cEFj6Qm1eQaAhJ1LDFvgZ7Ja4tb3iLOQhz0PaoPnnOijF1qmEqTxg==", + "license": "(Apache-2.0 AND BSD-3-Clause)" + }, + "node_modules/@protobuf-ts/runtime-rpc": { + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime-rpc/-/runtime-rpc-2.9.4.tgz", + "integrity": "sha512-y9L9JgnZxXFqH5vD4d7j9duWvIJ7AShyBRoNKJGhu9Q27qIbchfzli66H9RvrQNIFk5ER7z1Twe059WZGqERcA==", + "license": "Apache-2.0", + "dependencies": { + "@protobuf-ts/runtime": "^2.9.4" + } + }, "node_modules/@types/github-script": { "name": "github-script", "version": "7.0.1", - "resolved": "git+ssh://git@github.com/actions/github-script.git#660ec11d825b714d112a6bb9727086bc2cc500b2", + "resolved": "git+ssh://git@github.com/actions/github-script.git#4020e461acd7a80762cdfff123a1fde368246fa4", "dev": true, "license": "MIT", "dependencies": { @@ -342,57 +750,704 @@ "undici-types": "~6.19.2" } }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/archiver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", + "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", + "license": "MIT", + "dependencies": { + "archiver-utils": "^5.0.2", + "async": "^3.2.4", + "buffer-crc32": "^1.0.0", + "readable-stream": "^4.0.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^3.0.0", + "zip-stream": "^6.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/archiver-utils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz", + "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", + "license": "MIT", + "dependencies": { + "glob": "^10.0.0", + "graceful-fs": "^4.2.0", + "is-stream": "^2.0.1", + "lazystream": "^1.0.0", + "lodash": "^4.17.15", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "license": "MIT" + }, + "node_modules/b4a": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", + "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", + "license": "Apache-2.0" + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, + "license": "MIT" + }, + "node_modules/bare-events": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz", + "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==", + "license": "Apache-2.0", + "optional": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT" }, "node_modules/before-after-hook": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", - "dev": true, "license": "Apache-2.0" }, + "node_modules/binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "license": "MIT", + "dependencies": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + }, + "engines": { + "node": "*" + } + }, "node_modules/bottleneck": { "version": "2.19.5", "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", - "dev": true, "license": "MIT" }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-crc32": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", + "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", + "engines": { + "node": ">=0.2.0" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "license": "MIT", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "license": "MIT/X11", + "dependencies": { + "traverse": ">=0.3.0 <0.4" + }, + "engines": { + "node": "*" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/compress-commons": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", + "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "crc32-stream": "^6.0.0", + "is-stream": "^2.0.1", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "license": "MIT" }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", + "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/deprecation": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "dev": true, + "license": "ISC" + }, + "node_modules/dot-object": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/dot-object/-/dot-object-2.1.5.tgz", + "integrity": "sha512-xHF8EP4XH/Ba9fvAF2LDd5O3IITVolerVV6xvkxoM8zlGEiCUrggpAnHyOoKJKCrhvPcGATFAUwIujj7bRG5UA==", + "license": "MIT", + "dependencies": { + "commander": "^6.1.0", + "glob": "^7.1.6" + }, + "bin": { + "dot-object": "bin/dot-object" + } + }, + "node_modules/dot-object/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "license": "MIT" + }, + "node_modules/fast-xml-parser": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.0.tgz", + "integrity": "sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "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.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jwt-decode": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==", + "license": "MIT" + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "license": "MIT", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "license": "ISC" }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -401,16 +1456,146 @@ "node": "*" } }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "license": "ISC", "dependencies": { "wrappy": "1" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "license": "BlueOak-1.0.0" + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "license": "MIT" + }, "node_modules/prettier": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", @@ -427,21 +1612,372 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "license": "MIT" + }, + "node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/streamx": { + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.21.0.tgz", + "integrity": "sha512-Qz6MsDZXJ6ur9u+b+4xCG18TluU7PGlRfXVAAjNiGsFrBUt/ioyLkxbFaKJygoPs+/kW4VyBj0bSj89Qu0IGyg==", + "license": "MIT", + "dependencies": { + "fast-fifo": "^1.3.2", + "queue-tick": "^1.0.1", + "text-decoder": "^1.1.0" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "license": "MIT" + }, + "node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "license": "MIT", + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/text-decoder": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.2.tgz", + "integrity": "sha512-/MDslo7ZyWTA2vnk1j7XoDVfXsGk3tp+zFEJHJGm0UjIlQifonVFwlVbQDFh8KJzTBnT8ie115TYqir6bclddA==", + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", + "license": "MIT/X11", + "engines": { + "node": "*" + } + }, + "node_modules/ts-poet": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/ts-poet/-/ts-poet-4.15.0.tgz", + "integrity": "sha512-sLLR8yQBvHzi9d4R1F4pd+AzQxBfzOSSjfxiJxQhkUoH5bL7RsAC6wgvtVUQdGqiCsyS9rT6/8X2FI7ipdir5g==", + "license": "Apache-2.0", + "dependencies": { + "lodash": "^4.17.15", + "prettier": "^2.5.1" + } + }, + "node_modules/ts-poet/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, "node_modules/tunnel": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.6.11 <=0.7.0 || >=0.7.3" } }, + "node_modules/twirp-ts": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/twirp-ts/-/twirp-ts-2.5.0.tgz", + "integrity": "sha512-JTKIK5Pf/+3qCrmYDFlqcPPUx+ohEWKBaZy8GL8TmvV2VvC0SXVyNYILO39+GCRbqnuP6hBIF+BVr8ZxRz+6fw==", + "license": "MIT", + "dependencies": { + "@protobuf-ts/plugin-framework": "^2.0.7", + "camel-case": "^4.1.2", + "dot-object": "^2.1.4", + "path-to-regexp": "^6.2.0", + "ts-poet": "^4.5.0", + "yaml": "^1.10.2" + }, + "bin": { + "protoc-gen-twirp_ts": "protoc-gen-twirp_ts" + }, + "peerDependencies": { + "@protobuf-ts/plugin": "^2.5.0", + "ts-proto": "^1.81.3" + }, + "peerDependenciesMeta": { + "@protobuf-ts/plugin": { + "optional": true + }, + "ts-proto": { + "optional": true + } + } + }, + "node_modules/typescript": { + "version": "3.9.10", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", + "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, "node_modules/undici": { "version": "5.28.4", "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", - "dev": true, "license": "MIT", "dependencies": { "@fastify/busboy": "^2.0.0" @@ -461,15 +1997,174 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", - "dev": true, "license": "ISC" }, + "node_modules/unzip-stream": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/unzip-stream/-/unzip-stream-0.3.4.tgz", + "integrity": "sha512-PyofABPVv+d7fL7GOpusx7eRT9YETY2X04PhwbSipdj6bMxVCFJrr+nm0Mxqbf9hUiTin/UsnuFWBXlDZFy0Cw==", + "license": "MIT", + "dependencies": { + "binary": "^0.3.0", + "mkdirp": "^0.5.1" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, "license": "ISC" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/zip-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", + "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", + "license": "MIT", + "dependencies": { + "archiver-utils": "^5.0.0", + "compress-commons": "^6.0.2", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } } } } diff --git a/.github/package.json b/.github/package.json index 87598b90e726..6e48fbc8df6b 100644 --- a/.github/package.json +++ b/.github/package.json @@ -1,8 +1,11 @@ { "devDependencies": { - "@types/node": "^20.0.0", - "@types/github-script": "github:actions/github-script", "@octokit/webhooks-types": "^7.5.1", + "@types/github-script": "github:actions/github-script", + "@types/node": "^20.0.0", "prettier": "^3.3.3" + }, + "dependencies": { + "@actions/artifact": "^2.1.11" } } From 5938e63faaa7239b1b88cd2c129a0ead28e49364 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 23:06:08 +0800 Subject: [PATCH 126/190] test js --- .github/actions/add-multi-labels-artifact/action.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/actions/add-multi-labels-artifact/action.js b/.github/actions/add-multi-labels-artifact/action.js index 460e59bc0a99..4c45282ddd1c 100644 --- a/.github/actions/add-multi-labels-artifact/action.js +++ b/.github/actions/add-multi-labels-artifact/action.js @@ -11,7 +11,8 @@ module.exports = async ({ github, context, core, artifact }, args) => { // const path = `${process.env.RUNNER_TEMP}/test-file.txt`; /** @type {string[]} */ - const labels = args.labels; + // const labels = JSON.parse(args.labels); + const labels = ['label-aaa=true', 'label-bbb=false']; try { const artifactClient = artifact.create(); From 9d333b440e7b32d49c9717e2d96861560dd4ce53 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 23:10:34 +0800 Subject: [PATCH 127/190] fix js bug --- .github/actions/add-multi-labels-artifact/action.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/add-multi-labels-artifact/action.js b/.github/actions/add-multi-labels-artifact/action.js index 4c45282ddd1c..551b9039ba92 100644 --- a/.github/actions/add-multi-labels-artifact/action.js +++ b/.github/actions/add-multi-labels-artifact/action.js @@ -2,7 +2,7 @@ /** * @param {import('github-script').AsyncFunctionArguments} AsyncFunctionArguments */ -module.exports = async ({ github, context, core, artifact }, args) => { +module.exports = async ({ github, context, core }, args) => { core.info(`actionjs result: ${args.labels}`); // core.info('actionjs result', JSON.parse(args.labels)); From 3ad0c18a35cbd9f125d42b9413ab3bed723f9f7e Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 23:33:07 +0800 Subject: [PATCH 128/190] fix js bug --- .github/workflows/SDK-Suppressions-Label.yaml | 32 +- package-lock.json | 1456 ++++++++++++++++- package.json | 1 + 3 files changed, 1434 insertions(+), 55 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index f61f82813837..ef64d4645ad6 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -68,24 +68,24 @@ jobs: return JSON.stringify(prContext); result-encoding: string - - name: Run get suppressions label script - id: run-suppressions-script - env: - GITHUB_PULL_REQUEST_CONTEXT: ${{ steps.fetch-pullRequest-context.outputs.result }} - OUTPUT_FILE: "output.json" - GITHUB_PULL_REQUEST_CHANGE_FILES: ${{ steps.get-changedFiles.outputs.changedFiles }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js - OUTPUT=$(cat $OUTPUT_FILE) - echo "Script output labels: $OUTPUT" - echo "::set-output name=suppressions-result-output::$OUTPUT" + # - name: Run get suppressions label script + # id: run-suppressions-script + # env: + # GITHUB_PULL_REQUEST_CONTEXT: ${{ steps.fetch-pullRequest-context.outputs.result }} + # OUTPUT_FILE: "output.json" + # GITHUB_PULL_REQUEST_CHANGE_FILES: ${{ steps.get-changedFiles.outputs.changedFiles }} + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # run: | + # node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js + # OUTPUT=$(cat $OUTPUT_FILE) + # echo "Script output labels: $OUTPUT" + # echo "::set-output name=suppressions-result-output::$OUTPUT" - has_output=$(node -e "const fs = require('fs'); const data = JSON.parse(fs.readFileSync('$OUTPUT_FILE', 'utf8')); console.log(data.length === 0 ? 'false' : 'true');") - echo "Script has-output: $has_output" - echo "::set-output name=has-output::$has_output" + # has_output=$(node -e "const fs = require('fs'); const data = JSON.parse(fs.readFileSync('$OUTPUT_FILE', 'utf8')); console.log(data.length === 0 ? 'false' : 'true');") + # echo "Script has-output: $has_output" + # echo "::set-output name=has-output::$has_output" - - name: Add label artifact + - name: Upload artifact dependes on labels uses: ./.github/actions/add-multi-labels-artifact with: labels: "['label-aaa=true', 'label-bbb=false']" diff --git a/package-lock.json b/package-lock.json index 64caa96338fb..38ecd6cdfb9a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,6 +25,7 @@ "@typespec/streams": "0.63.0", "@typespec/versioning": "0.63.0", "azure-rest-api-specs-eng-tools": "file:eng/tools", + "dot-github-file": "file:.github", "oav": "^3.5.1", "prettier": "~3.3.3", "typescript": "~5.6.2" @@ -34,6 +35,35 @@ "npm": ">=9.0.0" } }, + ".github": { + "dev": true, + "dependencies": { + "@actions/artifact": "^2.1.11" + }, + "devDependencies": { + "@octokit/webhooks-types": "^7.5.1", + "@types/github-script": "github:actions/github-script", + "@types/node": "^20.0.0", + "prettier": "^3.3.3" + } + }, + ".github/node_modules/@types/node": { + "version": "20.17.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.10.tgz", + "integrity": "sha512-/jrvh5h6NXhEauFFexRin69nA0uHJ5gwk4iDivp/DeoEua3uwCUto6PC86IpRITBOs4+6i2I56K5x5b6WYGXHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + ".github/node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true, + "license": "MIT" + }, "eng/tools": { "name": "azure-rest-api-specs-eng-tools", "dev": true, @@ -426,6 +456,147 @@ "node": ">= 18.0.0" } }, + "node_modules/@actions/artifact": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/@actions/artifact/-/artifact-2.1.11.tgz", + "integrity": "sha512-V/N/3yM3oLxozq2dpdGqbd/39UbDOR54bF25vYsvn3QZnyZERSzPjTAAwpGzdcwESye9G7vnuhPiKQACEuBQpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@actions/core": "^1.10.0", + "@actions/github": "^5.1.1", + "@actions/http-client": "^2.1.0", + "@azure/storage-blob": "^12.15.0", + "@octokit/core": "^3.5.1", + "@octokit/plugin-request-log": "^1.0.4", + "@octokit/plugin-retry": "^3.0.9", + "@octokit/request-error": "^5.0.0", + "@protobuf-ts/plugin": "^2.2.3-alpha.1", + "archiver": "^7.0.1", + "jwt-decode": "^3.1.2", + "twirp-ts": "^2.5.0", + "unzip-stream": "^0.3.1" + } + }, + "node_modules/@actions/artifact/node_modules/@octokit/openapi-types": { + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz", + "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@actions/artifact/node_modules/@octokit/request-error": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.0.tgz", + "integrity": "sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^13.1.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@actions/artifact/node_modules/@octokit/types": { + "version": "13.6.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.6.2.tgz", + "integrity": "sha512-WpbZfZUcZU77DrSW4wbsSgTPfKcp286q3ItaIgvSbBpZJlu6mnYXAkjZz6LVZPXkEvLIM8McanyZejKTYUHipA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^22.2.0" + } + }, + "node_modules/@actions/core": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.11.1.tgz", + "integrity": "sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@actions/exec": "^1.1.1", + "@actions/http-client": "^2.0.1" + } + }, + "node_modules/@actions/exec": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz", + "integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@actions/io": "^1.0.1" + } + }, + "node_modules/@actions/github": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@actions/github/-/github-5.1.1.tgz", + "integrity": "sha512-Nk59rMDoJaV+mHCOJPXuvB1zIbomlKS0dmSIqPGxd0enAXBnOfn4VWF+CGtRCwXZG9Epa54tZA7VIRlJDS8A6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@actions/http-client": "^2.0.1", + "@octokit/core": "^3.6.0", + "@octokit/plugin-paginate-rest": "^2.17.0", + "@octokit/plugin-rest-endpoint-methods": "^5.13.0" + } + }, + "node_modules/@actions/github/node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "5.16.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", + "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^6.39.0", + "deprecation": "^2.3.1" + }, + "peerDependencies": { + "@octokit/core": ">=3" + } + }, + "node_modules/@actions/github/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, + "node_modules/@actions/glob": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@actions/glob/-/glob-0.4.0.tgz", + "integrity": "sha512-+eKIGFhsFa4EBwaf/GMyzCdWrXWymGXfFmZU3FHQvYS8mPcHtTtZONbkcqqUMzw9mJ/pImEBFET1JNifhqGsAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@actions/core": "^1.9.1", + "minimatch": "^3.0.4" + } + }, + "node_modules/@actions/http-client": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz", + "integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tunnel": "^0.0.6", + "undici": "^5.25.4" + } + }, + "node_modules/@actions/io": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.3.tgz", + "integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==", + "dev": true, + "license": "MIT" + }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -1356,6 +1527,25 @@ "node": ">=18.0.0" } }, + "node_modules/@azure/core-client": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.2.tgz", + "integrity": "sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-rest-pipeline": "^1.9.1", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.6.1", + "@azure/logger": "^1.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@azure/core-http": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@azure/core-http/-/core-http-3.0.5.tgz", @@ -1383,6 +1573,21 @@ "node": ">=18.0.0" } }, + "node_modules/@azure/core-http-compat": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/core-http-compat/-/core-http-compat-2.1.2.tgz", + "integrity": "sha512-5MnV1yqzZwgNLLjlizsU3QqOeQChkIXw781Fwh1xdAqJR5AA32IUaq6xv1BICJvfbHoa+JYcaij2HFkhLbNTJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-client": "^1.3.0", + "@azure/core-rest-pipeline": "^1.3.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@azure/core-http/node_modules/@azure/abort-controller": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", @@ -1431,6 +1636,35 @@ } } }, + "node_modules/@azure/core-lro": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.7.2.tgz", + "integrity": "sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-util": "^1.2.0", + "@azure/logger": "^1.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-paging": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.6.2.tgz", + "integrity": "sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@azure/core-rest-pipeline": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.18.1.tgz", @@ -1478,6 +1712,20 @@ "node": ">=18.0.0" } }, + "node_modules/@azure/core-xml": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/@azure/core-xml/-/core-xml-1.4.4.tgz", + "integrity": "sha512-J4FYAqakGXcbfeZjwjMzjNcpcH4E+JtEBv+xcV1yL0Ydn/6wbQfeFKTCHh9wttAi0lmajHw7yBbHPRG+YHckZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-xml-parser": "^4.4.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@azure/logger": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.1.4.tgz", @@ -1632,6 +1880,31 @@ "dev": true, "license": "0BSD" }, + "node_modules/@azure/storage-blob": { + "version": "12.26.0", + "resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.26.0.tgz", + "integrity": "sha512-SriLPKezypIsiZ+TtlFfE46uuBIap2HeaQVS78e1P7rz5OSbq0rsd52WE1mC5f7vAeLiXqv7I7oRhL3WFZEw3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@azure/core-auth": "^1.4.0", + "@azure/core-client": "^1.6.2", + "@azure/core-http-compat": "^2.0.0", + "@azure/core-lro": "^2.2.0", + "@azure/core-paging": "^1.1.1", + "@azure/core-rest-pipeline": "^1.10.1", + "@azure/core-tracing": "^1.1.2", + "@azure/core-util": "^1.6.1", + "@azure/core-xml": "^1.4.3", + "@azure/logger": "^1.0.0", + "events": "^3.0.0", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@azure/swagger-validation-common": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/@azure/swagger-validation-common/-/swagger-validation-common-0.0.5.tgz", @@ -2340,6 +2613,16 @@ "dev": true, "license": "MIT" }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + } + }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -2811,6 +3094,27 @@ "deprecation": "^2.3.1" } }, + "node_modules/@octokit/plugin-retry": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-3.0.9.tgz", + "integrity": "sha512-r+fArdP5+TG6l1Rv/C9hVoty6tldw6cE2pRHNGmFPdyfrc696R6JjrQ3d7HdVqGwuzfyrcaLAKD7K8TX8aehUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^6.0.3", + "bottleneck": "^2.15.3" + } + }, + "node_modules/@octokit/plugin-retry/node_modules/@octokit/types": { + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", + "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^12.11.0" + } + }, "node_modules/@octokit/request": { "version": "5.6.3", "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", @@ -2902,6 +3206,13 @@ "@types/node": ">= 8" } }, + "node_modules/@octokit/webhooks-types": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-7.6.1.tgz", + "integrity": "sha512-S8u2cJzklBC0FgTwWVLaM8tMrDuDMVE4xiTK4EYXM9GntyvrdbSoxqDQa+Fh57CCNApyIpyeqPhhFEmHPfrXgw==", + "dev": true, + "license": "MIT" + }, "node_modules/@opentelemetry/api": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", @@ -2977,6 +3288,90 @@ "node": "*" } }, + "node_modules/@protobuf-ts/plugin": { + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/@protobuf-ts/plugin/-/plugin-2.9.4.tgz", + "integrity": "sha512-Db5Laq5T3mc6ERZvhIhkj1rn57/p8gbWiCKxQWbZBBl20wMuqKoHbRw4tuD7FyXi+IkwTToaNVXymv5CY3E8Rw==", + "dev": true, + "license": "Apache-2.0", + "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" + }, + "bin": { + "protoc-gen-dump": "bin/protoc-gen-dump", + "protoc-gen-ts": "bin/protoc-gen-ts" + } + }, + "node_modules/@protobuf-ts/plugin-framework": { + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/@protobuf-ts/plugin-framework/-/plugin-framework-2.9.4.tgz", + "integrity": "sha512-9nuX1kjdMliv+Pes8dQCKyVhjKgNNfwxVHg+tx3fLXSfZZRcUHMc1PMwB9/vTvc6gBKt9QGz5ERqSqZc0++E9A==", + "dev": true, + "license": "(Apache-2.0 AND BSD-3-Clause)", + "dependencies": { + "@protobuf-ts/runtime": "^2.9.4", + "typescript": "^3.9" + } + }, + "node_modules/@protobuf-ts/plugin-framework/node_modules/typescript": { + "version": "3.9.10", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", + "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/@protobuf-ts/plugin/node_modules/typescript": { + "version": "3.9.10", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", + "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/@protobuf-ts/protoc": { + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/@protobuf-ts/protoc/-/protoc-2.9.4.tgz", + "integrity": "sha512-hQX+nOhFtrA+YdAXsXEDrLoGJqXHpgv4+BueYF0S9hy/Jq0VRTVlJS1Etmf4qlMt/WdigEes5LOd/LDzui4GIQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "protoc": "protoc.js" + } + }, + "node_modules/@protobuf-ts/runtime": { + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime/-/runtime-2.9.4.tgz", + "integrity": "sha512-vHRFWtJJB/SiogWDF0ypoKfRIZ41Kq+G9cEFj6Qm1eQaAhJ1LDFvgZ7Ja4tb3iLOQhz0PaoPnnOijF1qmEqTxg==", + "dev": true, + "license": "(Apache-2.0 AND BSD-3-Clause)" + }, + "node_modules/@protobuf-ts/runtime-rpc": { + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime-rpc/-/runtime-rpc-2.9.4.tgz", + "integrity": "sha512-y9L9JgnZxXFqH5vD4d7j9duWvIJ7AShyBRoNKJGhu9Q27qIbchfzli66H9RvrQNIFk5ER7z1Twe059WZGqERcA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@protobuf-ts/runtime": "^2.9.4" + } + }, "node_modules/@readme/better-ajv-errors": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/@readme/better-ajv-errors/-/better-ajv-errors-1.6.0.tgz", @@ -3667,46 +4062,300 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/js-yaml": { - "version": "3.12.10", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.10.tgz", - "integrity": "sha512-/Mtaq/wf+HxXpvhzFYzrzCqNRcA958sW++7JOFC8nPrZcvfi/TrzOaaGbvt27ltJB2NQbHVAg5a1wUCsyMH7NA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/lodash": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.13.tgz", - "integrity": "sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", + "node_modules/@types/github-script": { + "name": "github-script", + "version": "7.0.1", + "resolved": "git+ssh://git@github.com/actions/github-script.git#4020e461acd7a80762cdfff123a1fde368246fa4", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@actions/core": "^1.10.1", + "@actions/exec": "^1.1.1", + "@actions/github": "^6.0.0", + "@actions/glob": "^0.4.0", + "@actions/io": "^1.1.3", + "@octokit/core": "^5.0.1", + "@octokit/plugin-request-log": "^4.0.0", + "@octokit/plugin-retry": "^6.0.1", + "@types/node": "^20.9.0" + }, + "engines": { + "node": ">=20.0.0 <21.0.0" + } }, - "node_modules/@types/node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==", + "node_modules/@types/github-script/node_modules/@actions/github": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@actions/github/-/github-6.0.0.tgz", + "integrity": "sha512-alScpSVnYmjNEXboZjarjukQEzgCRmjMv6Xj47fsdnqGS73bjJNDpiiXmp8jr0UZLdUB6d9jW63IcmddUP+l0g==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "form-data": "^4.0.0" + "@actions/http-client": "^2.2.0", + "@octokit/core": "^5.0.1", + "@octokit/plugin-paginate-rest": "^9.0.0", + "@octokit/plugin-rest-endpoint-methods": "^10.0.0" } }, - "node_modules/@types/normalize-package-data": { + "node_modules/@types/github-script/node_modules/@octokit/auth-token": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", + "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + } + }, + "node_modules/@types/github-script/node_modules/@octokit/core": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz", + "integrity": "sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/auth-token": "^4.0.0", + "@octokit/graphql": "^7.1.0", + "@octokit/request": "^8.3.1", + "@octokit/request-error": "^5.1.0", + "@octokit/types": "^13.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@types/github-script/node_modules/@octokit/endpoint": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.5.tgz", + "integrity": "sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^13.1.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@types/github-script/node_modules/@octokit/graphql": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.0.tgz", + "integrity": "sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/request": "^8.3.0", + "@octokit/types": "^13.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@types/github-script/node_modules/@octokit/openapi-types": { + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz", + "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/github-script/node_modules/@octokit/plugin-paginate-rest": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.1.tgz", + "integrity": "sha512-wfGhE/TAkXZRLjksFXuDZdmGnJQHvtU/joFQdweXUgzo1XwvBCD4o4+75NtFfjfLK5IwLf9vHTfSiU3sLRYpRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^12.6.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "5" + } + }, + "node_modules/@types/github-script/node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/github-script/node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^20.0.0" + } + }, + "node_modules/@types/github-script/node_modules/@octokit/plugin-request-log": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-4.0.1.tgz", + "integrity": "sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "5" + } + }, + "node_modules/@types/github-script/node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.4.1.tgz", + "integrity": "sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^12.6.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "5" + } + }, + "node_modules/@types/github-script/node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/github-script/node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^20.0.0" + } + }, + "node_modules/@types/github-script/node_modules/@octokit/plugin-retry": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-6.1.0.tgz", + "integrity": "sha512-WrO3bvq4E1Xh1r2mT9w6SDFg01gFmP81nIG77+p/MqW1JeXXgL++6umim3t6x0Zj5pZm3rXAN+0HEjmmdhIRig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^13.0.0", + "bottleneck": "^2.15.3" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "5" + } + }, + "node_modules/@types/github-script/node_modules/@octokit/request": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.0.tgz", + "integrity": "sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/endpoint": "^9.0.1", + "@octokit/request-error": "^5.1.0", + "@octokit/types": "^13.1.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@types/github-script/node_modules/@octokit/request-error": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.0.tgz", + "integrity": "sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^13.1.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@types/github-script/node_modules/@octokit/types": { + "version": "13.6.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.6.2.tgz", + "integrity": "sha512-WpbZfZUcZU77DrSW4wbsSgTPfKcp286q3ItaIgvSbBpZJlu6mnYXAkjZz6LVZPXkEvLIM8McanyZejKTYUHipA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^22.2.0" + } + }, + "node_modules/@types/github-script/node_modules/@types/node": { + "version": "20.17.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.10.tgz", + "integrity": "sha512-/jrvh5h6NXhEauFFexRin69nA0uHJ5gwk4iDivp/DeoEua3uwCUto6PC86IpRITBOs4+6i2I56K5x5b6WYGXHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/github-script/node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/js-yaml": { + "version": "3.12.10", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.10.tgz", + "integrity": "sha512-/Mtaq/wf+HxXpvhzFYzrzCqNRcA958sW++7JOFC8nPrZcvfi/TrzOaaGbvt27ltJB2NQbHVAg5a1wUCsyMH7NA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/lodash": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.13.tgz", + "integrity": "sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node-fetch": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "form-data": "^4.0.0" + } + }, + "node_modules/@types/normalize-package-data": { "version": "2.4.4", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", @@ -4456,6 +5105,125 @@ "dev": true, "license": "MIT" }, + "node_modules/archiver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", + "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "archiver-utils": "^5.0.2", + "async": "^3.2.4", + "buffer-crc32": "^1.0.0", + "readable-stream": "^4.0.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^3.0.0", + "zip-stream": "^6.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/archiver-utils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz", + "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob": "^10.0.0", + "graceful-fs": "^4.2.0", + "is-stream": "^2.0.1", + "lazystream": "^1.0.0", + "lodash": "^4.17.15", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/archiver-utils/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/archiver-utils/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/archiver-utils/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/archiver-utils/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/archiver/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -4559,6 +5327,13 @@ "resolved": "eng/tools", "link": true }, + "node_modules/b4a": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", + "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -4566,6 +5341,14 @@ "dev": true, "license": "MIT" }, + "node_modules/bare-events": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz", + "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==", + "dev": true, + "license": "Apache-2.0", + "optional": true + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -4604,6 +5387,20 @@ "dev": true, "license": "Apache-2.0" }, + "node_modules/binary": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", + "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffers": "~0.1.1", + "chainsaw": "~0.1.0" + }, + "engines": { + "node": "*" + } + }, "node_modules/bluebird": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", @@ -4611,6 +5408,13 @@ "dev": true, "license": "MIT" }, + "node_modules/bottleneck": { + "version": "2.19.5", + "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", + "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", + "dev": true, + "license": "MIT" + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -4678,6 +5482,50 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-crc32": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", + "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/buffers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", + "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", + "dev": true, + "engines": { + "node": ">=0.2.0" + } + }, "node_modules/builtin-modules": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", @@ -4718,6 +5566,17 @@ "node": ">=6" } }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, "node_modules/camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", @@ -4773,6 +5632,19 @@ "node": ">=12" } }, + "node_modules/chainsaw": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", + "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", + "dev": true, + "license": "MIT/X11", + "dependencies": { + "traverse": ">=0.3.0 <0.4" + }, + "engines": { + "node": "*" + } + }, "node_modules/chalk": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", @@ -5041,6 +5913,40 @@ "node": "*" } }, + "node_modules/compress-commons": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", + "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "crc32-stream": "^6.0.0", + "is-stream": "^2.0.1", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/compress-commons/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -5069,6 +5975,50 @@ "dev": true, "license": "MIT" }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", + "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", + "dev": true, + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/crc32-stream/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -5232,16 +6182,44 @@ "node": ">=0.3.1" } }, - "node_modules/difflib": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz", - "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==", + "node_modules/difflib": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz", + "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==", + "dev": true, + "dependencies": { + "heap": ">= 0.2.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/dot-github-file": { + "resolved": ".github", + "link": true + }, + "node_modules/dot-object": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/dot-object/-/dot-object-2.1.5.tgz", + "integrity": "sha512-xHF8EP4XH/Ba9fvAF2LDd5O3IITVolerVV6xvkxoM8zlGEiCUrggpAnHyOoKJKCrhvPcGATFAUwIujj7bRG5UA==", "dev": true, + "license": "MIT", "dependencies": { - "heap": ">= 0.2.0" + "commander": "^6.1.0", + "glob": "^7.1.6" }, + "bin": { + "dot-object": "bin/dot-object" + } + }, + "node_modules/dot-object/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "license": "MIT", "engines": { - "node": "*" + "node": ">= 6" } }, "node_modules/dotenv": { @@ -5782,6 +6760,16 @@ "node": ">=6" } }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, "node_modules/execa": { "version": "9.5.2", "resolved": "https://registry.npmjs.org/execa/-/execa-9.5.2.tgz", @@ -5898,6 +6886,13 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true, + "license": "MIT" + }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", @@ -5936,6 +6931,29 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/fast-xml-parser": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.0.tgz", + "integrity": "sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", @@ -6608,6 +7626,27 @@ "node": ">=0.10.0" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -6848,6 +7887,13 @@ "node": ">=8" } }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -7195,6 +8241,13 @@ "node": ">=8" } }, + "node_modules/jwt-decode": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==", + "dev": true, + "license": "MIT" + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -7222,6 +8275,52 @@ "dev": true, "license": "MIT" }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -7346,6 +8445,16 @@ "dev": true, "license": "MIT" }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -7711,6 +8820,17 @@ "node": ">=10" } }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, "node_modules/node-domexception": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", @@ -7822,6 +8942,16 @@ "semver": "bin/semver" } }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/npm-run-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", @@ -8227,6 +9357,17 @@ "node": ">=6" } }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -8691,6 +9832,13 @@ "node": ">= 0.6.0" } }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "license": "MIT" + }, "node_modules/prompt-sync": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/prompt-sync/-/prompt-sync-4.2.0.tgz", @@ -8800,6 +9948,13 @@ ], "license": "MIT" }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "dev": true, + "license": "MIT" + }, "node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -8859,6 +10014,39 @@ "node": ">= 6" } }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/reflect-metadata": { "version": "0.1.14", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz", @@ -9364,6 +10552,21 @@ "bluebird": "^2.6.2" } }, + "node_modules/streamx": { + "version": "2.21.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.21.0.tgz", + "integrity": "sha512-Qz6MsDZXJ6ur9u+b+4xCG18TluU7PGlRfXVAAjNiGsFrBUt/ioyLkxbFaKJygoPs+/kW4VyBj0bSj89Qu0IGyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-fifo": "^1.3.2", + "queue-tick": "^1.0.1", + "text-decoder": "^1.1.0" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -9533,6 +10736,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "dev": true, + "license": "MIT" + }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -9570,6 +10780,18 @@ "dev": true, "license": "MIT" }, + "node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, "node_modules/teleport-javascript": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/teleport-javascript/-/teleport-javascript-1.0.0.tgz", @@ -9656,6 +10878,16 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/text-decoder": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.2.tgz", + "integrity": "sha512-/MDslo7ZyWTA2vnk1j7XoDVfXsGk3tp+zFEJHJGm0UjIlQifonVFwlVbQDFh8KJzTBnT8ie115TYqir6bclddA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } + }, "node_modules/text-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", @@ -9744,6 +10976,16 @@ "dev": true, "license": "MIT" }, + "node_modules/traverse": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", + "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", + "dev": true, + "license": "MIT/X11", + "engines": { + "node": "*" + } + }, "node_modules/triple-beam": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", @@ -9767,6 +11009,33 @@ "typescript": ">=4.2.0" } }, + "node_modules/ts-poet": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/ts-poet/-/ts-poet-4.15.0.tgz", + "integrity": "sha512-sLLR8yQBvHzi9d4R1F4pd+AzQxBfzOSSjfxiJxQhkUoH5bL7RsAC6wgvtVUQdGqiCsyS9rT6/8X2FI7ipdir5g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "lodash": "^4.17.15", + "prettier": "^2.5.1" + } + }, + "node_modules/ts-poet/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", @@ -9791,6 +11060,46 @@ "dev": true, "license": "Unlicense" }, + "node_modules/twirp-ts": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/twirp-ts/-/twirp-ts-2.5.0.tgz", + "integrity": "sha512-JTKIK5Pf/+3qCrmYDFlqcPPUx+ohEWKBaZy8GL8TmvV2VvC0SXVyNYILO39+GCRbqnuP6hBIF+BVr8ZxRz+6fw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@protobuf-ts/plugin-framework": "^2.0.7", + "camel-case": "^4.1.2", + "dot-object": "^2.1.4", + "path-to-regexp": "^6.2.0", + "ts-poet": "^4.5.0", + "yaml": "^1.10.2" + }, + "bin": { + "protoc-gen-twirp_ts": "protoc-gen-twirp_ts" + }, + "peerDependencies": { + "@protobuf-ts/plugin": "^2.5.0", + "ts-proto": "^1.81.3" + }, + "peerDependenciesMeta": { + "@protobuf-ts/plugin": { + "optional": true + }, + "ts-proto": { + "optional": true + } + } + }, + "node_modules/twirp-ts/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -9893,6 +11202,19 @@ "dev": true, "license": "MIT" }, + "node_modules/undici": { + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, "node_modules/undici-types": { "version": "5.28.4", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.28.4.tgz", @@ -9930,6 +11252,30 @@ "node": ">= 10.0.0" } }, + "node_modules/unzip-stream": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/unzip-stream/-/unzip-stream-0.3.4.tgz", + "integrity": "sha512-PyofABPVv+d7fL7GOpusx7eRT9YETY2X04PhwbSipdj6bMxVCFJrr+nm0Mxqbf9hUiTin/UsnuFWBXlDZFy0Cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary": "^0.3.0", + "mkdirp": "^0.5.1" + } + }, + "node_modules/unzip-stream/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "node_modules/update-browserslist-db": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", @@ -10607,6 +11953,38 @@ "node": "^12.20.0 || >=14" } }, + "node_modules/zip-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", + "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "archiver-utils": "^5.0.0", + "compress-commons": "^6.0.2", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/zip-stream/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/zod": { "version": "3.24.1", "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz", diff --git a/package.json b/package.json index d40b511e7e4f..b5061fb43288 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "@typespec/streams": "0.63.0", "@typespec/versioning": "0.63.0", "azure-rest-api-specs-eng-tools": "file:eng/tools", + "dot-github-file": "file:.github", "oav": "^3.5.1", "prettier": "~3.3.3", "typescript": "~5.6.2" From 789839c41558b2643e17c95229111a0e52760d7c Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 23:39:01 +0800 Subject: [PATCH 129/190] fix js bug --- .github/actions/add-multi-labels-artifact/action.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/actions/add-multi-labels-artifact/action.js b/.github/actions/add-multi-labels-artifact/action.js index 551b9039ba92..faee07a9a97c 100644 --- a/.github/actions/add-multi-labels-artifact/action.js +++ b/.github/actions/add-multi-labels-artifact/action.js @@ -15,7 +15,8 @@ module.exports = async ({ github, context, core }, args) => { const labels = ['label-aaa=true', 'label-bbb=false']; try { - const artifactClient = artifact.create(); + const artifactClient = new DefaultArtifactClient() + // const artifactClient = artifact.create(); for (const label of labels) { const filePath = path.join(__dirname, `empty-${label}.txt`); From f48943ff7bdafaf7b04020eb2a51481f655d7847 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 23:46:27 +0800 Subject: [PATCH 130/190] fix js bug --- .github/actions/add-multi-labels-artifact/action.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/add-multi-labels-artifact/action.js b/.github/actions/add-multi-labels-artifact/action.js index faee07a9a97c..9b23368a3bc7 100644 --- a/.github/actions/add-multi-labels-artifact/action.js +++ b/.github/actions/add-multi-labels-artifact/action.js @@ -6,7 +6,7 @@ module.exports = async ({ github, context, core }, args) => { core.info(`actionjs result: ${args.labels}`); // core.info('actionjs result', JSON.parse(args.labels)); - const artifact = require('@actions/artifact'); + const { DefaultArtifactClient } = require('@actions/artifact') const fs = require('fs'); // const path = `${process.env.RUNNER_TEMP}/test-file.txt`; From 5e06e19f628878564bc962d206153738c2cbadd5 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 23:51:33 +0800 Subject: [PATCH 131/190] fix js bug --- .github/actions/add-multi-labels-artifact/action.js | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/actions/add-multi-labels-artifact/action.js b/.github/actions/add-multi-labels-artifact/action.js index 9b23368a3bc7..4e3f380d00d5 100644 --- a/.github/actions/add-multi-labels-artifact/action.js +++ b/.github/actions/add-multi-labels-artifact/action.js @@ -8,6 +8,7 @@ module.exports = async ({ github, context, core }, args) => { const { DefaultArtifactClient } = require('@actions/artifact') const fs = require('fs'); + const path = require('path'); // const path = `${process.env.RUNNER_TEMP}/test-file.txt`; /** @type {string[]} */ From 718a06f02fb2e2b5a603391d2821601b0e10d370 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 11 Dec 2024 23:59:07 +0800 Subject: [PATCH 132/190] fix core.log --- .github/actions/add-multi-labels-artifact/action.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/add-multi-labels-artifact/action.js b/.github/actions/add-multi-labels-artifact/action.js index 4e3f380d00d5..a2313d98d154 100644 --- a/.github/actions/add-multi-labels-artifact/action.js +++ b/.github/actions/add-multi-labels-artifact/action.js @@ -24,7 +24,7 @@ module.exports = async ({ github, context, core }, args) => { fs.writeFileSync(filePath, `Artifact for label: ${label}`); - core.log(`Uploading artifact: ${label}`); + core.info(`Uploading artifact: ${label}`); const uploadResponse = await artifactClient.uploadArtifact( label, [filePath], @@ -32,7 +32,7 @@ module.exports = async ({ github, context, core }, args) => { { overwrite: true } ); - core.log(`Upload complete for ${label}: ${uploadResponse}`); + core.info(`Upload complete for ${label}: ${uploadResponse}`); fs.unlinkSync(filePath); } From d55dd44c371bdf3e2694d463483c372848953680 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 12 Dec 2024 00:07:20 +0800 Subject: [PATCH 133/190] finsihed --- .../add-multi-labels-artifact/action.js | 2 - .../add-multi-labels-artifact/action.yaml | 21 ------- .github/workflows/SDK-Suppressions-Label.yaml | 60 +++++++------------ 3 files changed, 20 insertions(+), 63 deletions(-) diff --git a/.github/actions/add-multi-labels-artifact/action.js b/.github/actions/add-multi-labels-artifact/action.js index a2313d98d154..0009349694fd 100644 --- a/.github/actions/add-multi-labels-artifact/action.js +++ b/.github/actions/add-multi-labels-artifact/action.js @@ -4,13 +4,11 @@ */ module.exports = async ({ github, context, core }, args) => { core.info(`actionjs result: ${args.labels}`); - // core.info('actionjs result', JSON.parse(args.labels)); const { DefaultArtifactClient } = require('@actions/artifact') const fs = require('fs'); const path = require('path'); - // const path = `${process.env.RUNNER_TEMP}/test-file.txt`; /** @type {string[]} */ // const labels = JSON.parse(args.labels); const labels = ['label-aaa=true', 'label-bbb=false']; diff --git a/.github/actions/add-multi-labels-artifact/action.yaml b/.github/actions/add-multi-labels-artifact/action.yaml index fcaab4ef2840..2e27d2b78aa8 100644 --- a/.github/actions/add-multi-labels-artifact/action.yaml +++ b/.github/actions/add-multi-labels-artifact/action.yaml @@ -16,24 +16,3 @@ runs: script: | const action = require('./.github/actions/add-multi-labels-artifact/action.js') await action({ github, context, core }, {labels: ${{ inputs.labels }}}); - - - # - name: Create empty file to upload artifact - # run: "> $RUNNER_TEMP/empty.txt" - # shell: bash - - # - name: Process each label-value pair and upload artifact - # shell: bash - # run: | - # label_string="${{ inputs.labels }}" - # label_string="${label_string//[\[\] ]/}" - # IFS=',' read -r -a label_array <<< "$label_string" - # for label_pair in "${label_array[@]}"; do - # echo "Processing label pair: $label_pair" - # uses: actions/upload-artifact@v4 - # with: - # name: "$label_pair" - # path: ${{ runner.temp }}/empty.txt - # if-no-files-found: error - # overwrite: true - # done \ No newline at end of file diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index ef64d4645ad6..6a1efbb38036 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -17,9 +17,9 @@ jobs: runs-on: ubuntu-latest permissions: contents: read - outputs: - process-sdk-suppressions-output: ${{ steps.run-suppressions-script.outputs.suppressions-result-output }} - has-output: ${{ steps.run-suppressions-script.outputs.has-output }} + # outputs: + # process-sdk-suppressions-output: ${{ steps.run-suppressions-script.outputs.suppressions-result-output }} + # has-output: ${{ steps.run-suppressions-script.outputs.has-output }} steps: - name: Checkout code uses: actions/checkout@v4 @@ -68,45 +68,25 @@ jobs: return JSON.stringify(prContext); result-encoding: string - # - name: Run get suppressions label script - # id: run-suppressions-script - # env: - # GITHUB_PULL_REQUEST_CONTEXT: ${{ steps.fetch-pullRequest-context.outputs.result }} - # OUTPUT_FILE: "output.json" - # GITHUB_PULL_REQUEST_CHANGE_FILES: ${{ steps.get-changedFiles.outputs.changedFiles }} - # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # run: | - # node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js - # OUTPUT=$(cat $OUTPUT_FILE) - # echo "Script output labels: $OUTPUT" - # echo "::set-output name=suppressions-result-output::$OUTPUT" + - name: Run get suppressions label script + id: run-suppressions-script + env: + GITHUB_PULL_REQUEST_CONTEXT: ${{ steps.fetch-pullRequest-context.outputs.result }} + OUTPUT_FILE: "output.json" + GITHUB_PULL_REQUEST_CHANGE_FILES: ${{ steps.get-changedFiles.outputs.changedFiles }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js + OUTPUT=$(cat $OUTPUT_FILE) + echo "Script output labels: $OUTPUT" + echo "::set-output name=suppressions-result-output::$OUTPUT" - # has_output=$(node -e "const fs = require('fs'); const data = JSON.parse(fs.readFileSync('$OUTPUT_FILE', 'utf8')); console.log(data.length === 0 ? 'false' : 'true');") - # echo "Script has-output: $has_output" - # echo "::set-output name=has-output::$has_output" + has_output=$(node -e "const fs = require('fs'); const data = JSON.parse(fs.readFileSync('$OUTPUT_FILE', 'utf8')); console.log(data.length === 0 ? 'false' : 'true');") + echo "Script has-output: $has_output" + echo "::set-output name=has-output::$has_output" - name: Upload artifact dependes on labels uses: ./.github/actions/add-multi-labels-artifact + if: ${{ steps.run-suppressions-script.outputs.has-output == 'true' }} with: - labels: "['label-aaa=true', 'label-bbb=false']" - - # update-sdk-suppressions-labels: - # name: Update labels - # runs-on: ubuntu-latest - # needs: process-sdk-suppressions-labels - # if: ${{ needs.process-sdk-suppressions-labels.outputs.has-output == 'true' }} - # strategy: - # matrix: - # artifact-name: ${{ fromJson(needs.process-sdk-suppressions-labels.outputs.process-sdk-suppressions-output) }} - # steps: - # - name: Create empty file to upload artifacts - # run: "> $RUNNER_TEMP/empty.txt" - # shell: bash - - # - name: Upload artifact - # uses: actions/upload-artifact@v4 - # with: - # name: ${{ matrix.artifact-name }} - # path: ${{ runner.temp }}/empty.txt - # if-no-files-found: error - # overwrite: true + labels: ${{ steps.run-suppressions-script.outputs.suppressions-result-output }} From 1011648bbc31ea84a9470fcb0b01674fc20d5b85 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 12 Dec 2024 00:12:52 +0800 Subject: [PATCH 134/190] add test --- .github/actions/add-multi-labels-artifact/action.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/actions/add-multi-labels-artifact/action.js b/.github/actions/add-multi-labels-artifact/action.js index 0009349694fd..914efc50545c 100644 --- a/.github/actions/add-multi-labels-artifact/action.js +++ b/.github/actions/add-multi-labels-artifact/action.js @@ -10,8 +10,7 @@ module.exports = async ({ github, context, core }, args) => { const path = require('path'); /** @type {string[]} */ - // const labels = JSON.parse(args.labels); - const labels = ['label-aaa=true', 'label-bbb=false']; + const labels = JSON.parse(args.labels); try { const artifactClient = new DefaultArtifactClient() From 668cbc40c0535747d4e495cf72850b68ea25efce Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 12 Dec 2024 00:22:40 +0800 Subject: [PATCH 135/190] fix parse --- .github/actions/add-multi-labels-artifact/action.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/actions/add-multi-labels-artifact/action.js b/.github/actions/add-multi-labels-artifact/action.js index 914efc50545c..6d3ba65fab43 100644 --- a/.github/actions/add-multi-labels-artifact/action.js +++ b/.github/actions/add-multi-labels-artifact/action.js @@ -10,11 +10,10 @@ module.exports = async ({ github, context, core }, args) => { const path = require('path'); /** @type {string[]} */ - const labels = JSON.parse(args.labels); + const labels = args.labels; try { const artifactClient = new DefaultArtifactClient() - // const artifactClient = artifact.create(); for (const label of labels) { const filePath = path.join(__dirname, `empty-${label}.txt`); From fec55bcfff9ecaa6d75c2563577d2778b08e9a84 Mon Sep 17 00:00:00 2001 From: Tianen <347142915@qq.com> Date: Thu, 12 Dec 2024 21:08:02 +0800 Subject: [PATCH 136/190] Update eng/tools/suppressions/src/index.ts Co-authored-by: Mike Harder --- eng/tools/suppressions/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/tools/suppressions/src/index.ts b/eng/tools/suppressions/src/index.ts index 2a2e764184c7..d22b57c1aa9e 100644 --- a/eng/tools/suppressions/src/index.ts +++ b/eng/tools/suppressions/src/index.ts @@ -26,7 +26,7 @@ export async function main() { } else { console.error(getUsage()); exit(1); - } + } } export { getSuppressions, Suppression }; From e16bbe9778dd493fc5ec28769ae3eb744eb8d18e Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 12 Dec 2024 21:33:04 +0800 Subject: [PATCH 137/190] using git command --- .../src/updateSdkSuppressionsLabel.ts | 311 +++++++++++------- 1 file changed, 195 insertions(+), 116 deletions(-) diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index 3503a479d2f0..f3c3da11c646 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -2,41 +2,40 @@ import _ from "lodash"; import { writeFileSync } from "fs"; import { Octokit } from "@octokit/rest"; import { OctokitResponse, ReposGetContentResponseData } from "@octokit/types"; -import { sdkLabels, SdkName } from './sdk.js'; -import { - SdkSuppressionsYml, - SdkSuppressionsSection, - sdkSuppressionsFileName, - SdkPackageSuppressionsEntry, - validateSdkSuppressionsFile -} from './sdkSuppressions.js'; +import { sdkLabels, SdkName } from "./sdk.js"; +import { exec } from "child_process"; +import { promisify } from "util"; import { - base64ToString, - parseYamlContent, -} from "./common.js"; + SdkSuppressionsYml, + SdkSuppressionsSection, + sdkSuppressionsFileName, + SdkPackageSuppressionsEntry, + validateSdkSuppressionsFile, +} from "./sdkSuppressions.js"; +import { base64ToString, parseYamlContent } from "./common.js"; export type PullRequestContext = { - labels: string[]; - number: number; - html_url: string; - head: { - owner: string, - repo: string, - ref: string - }; - base: { - owner: string, - repo: string, - ref: string - }; -} + labels: string[]; + number: number; + html_url: string; + head: { + owner: string; + repo: string; + ref: string; + }; + base: { + owner: string; + repo: string; + ref: string; + }; +}; /** - * - * @param appClient - * @param pr + * + * @param appClient + * @param pr * @returns SdkName list - * This part compares the suppression files of the head branch and the base branch. + * This part compares the suppression files of the head branch and the base branch. * To get the SDK, we need to identify which package name, SDK name, or breaking changes are different and apply the SDK suppression label accordingly in the next step. * change details can see at getSdkNamesWithChangedSuppressions function * on the other hand that the sdkName list will return an empty array if it does not have a suppression file or if the file is blank. @@ -44,10 +43,9 @@ export type PullRequestContext = { export async function getSdkSuppressionsSdkNames( appClient: Octokit, pr: PullRequestContext, - prChangeFiles: string + prChangeFiles: string, ): Promise { - - const filesChangedPaths = prChangeFiles.split(' '); + const filesChangedPaths = prChangeFiles.split(" "); // Get suppression file list let suppressionFileList = filterSuppressionList(filesChangedPaths); @@ -55,39 +53,36 @@ export async function getSdkSuppressionsSdkNames( // Get suppression file Content if (suppressionFileList.length > 0) { for (const suppressionFile of suppressionFileList) { - logSuppressionFileInfo( - { - owner: pr.base.owner, - repo: pr.base.repo, - ref: pr.base.ref, - path: suppressionFile, - } - ); + logSuppressionFileInfo({ + owner: pr.base.owner, + repo: pr.base.repo, + ref: pr.base.ref, + path: suppressionFile, + }); let baseSuppressionContent = await getSdkSuppressionsFileContent( appClient, pr.base.owner, pr.base.repo, pr.base.ref, - suppressionFile - ); - logSuppressionFileInfo( - { - owner: pr.head.owner, - repo: pr.head.repo, - ref: pr.head.ref, - path: suppressionFile, - } + suppressionFile, ); + logSuppressionFileInfo({ + owner: pr.head.owner, + repo: pr.head.repo, + ref: pr.head.ref, + path: suppressionFile, + }); const headSuppressionContent = await getSdkSuppressionsFileContent( appClient, pr.head.owner, pr.head.repo, pr.head.ref, - suppressionFile + suppressionFile, ); // if the head suppression file is present but anything is wrong like schema error with it return - const validateSdkSuppressionsFileResult = validateSdkSuppressionsFile(headSuppressionContent).result; + const validateSdkSuppressionsFileResult = + validateSdkSuppressionsFile(headSuppressionContent).result; if (!validateSdkSuppressionsFileResult) { return []; } @@ -98,13 +93,13 @@ export async function getSdkSuppressionsSdkNames( console.log( `updateSdkSuppressionsLabels: PR: ${pr.html_url} Will compare base suppressions content: ${JSON.stringify( - baseSuppressionContent - )} and head suppressions content: ${JSON.stringify(headSuppressionContent)} to get different SDK.` + baseSuppressionContent, + )} and head suppressions content: ${JSON.stringify(headSuppressionContent)} to get different SDK.`, ); sdkNameList = getSdkNamesWithChangedSuppressions( headSuppressionContent as SdkSuppressionsYml, - baseSuppressionContent as SdkSuppressionsYml + baseSuppressionContent as SdkSuppressionsYml, ); } } @@ -117,19 +112,20 @@ async function getSdkSuppressionsFileContent( owner: string, repo: string, ref: string, - path: string + path: string, ): Promise { try { - const { data: suppressionFileContent }: OctokitResponse = await appClient.repos.getContent({ - repo, - owner, - ref, - path - }); + const { data: suppressionFileContent }: OctokitResponse = + await appClient.repos.getContent({ + repo, + owner, + ref, + path, + }); const suppressionContentString = base64ToString(suppressionFileContent.content); - return parseYamlContent(suppressionContentString, path).result;; + return parseYamlContent(suppressionContentString, path).result; } catch (error) { - console.log(`Not found ${path} in ${owner}/${repo}#${ref}`) + console.log(`Not found ${path} in ${owner}/${repo}#${ref}`); return null; } } @@ -140,39 +136,60 @@ function getSdksWithSuppressionsDefined(suppressions: SdkSuppressionsSection): S export function getSdkNamesWithChangedSuppressions( headSuppressionFile: SdkSuppressionsYml, - baseSuppressionFile: SdkSuppressionsYml + baseSuppressionFile: SdkSuppressionsYml, ): SdkName[] { let sdkNamesWithChangedSuppressions: SdkName[] = []; const headSdkSuppressionsSection: SdkSuppressionsSection = headSuppressionFile.suppressions; const baseSdkSuppressionsSection: SdkSuppressionsSection = baseSuppressionFile.suppressions; - const headSdksWithSuppressions: SdkName[] = getSdksWithSuppressionsDefined(headSdkSuppressionsSection); - const baseSdksWithSuppressions: SdkName[] = getSdksWithSuppressionsDefined(baseSdkSuppressionsSection); + const headSdksWithSuppressions: SdkName[] = getSdksWithSuppressionsDefined( + headSdkSuppressionsSection, + ); + const baseSdksWithSuppressions: SdkName[] = getSdksWithSuppressionsDefined( + baseSdkSuppressionsSection, + ); if (headSdksWithSuppressions.length === 0) { if (baseSdksWithSuppressions.length > 0) { - sdkNamesWithChangedSuppressions = [...sdkNamesWithChangedSuppressions, ...baseSdksWithSuppressions]; + sdkNamesWithChangedSuppressions = [ + ...sdkNamesWithChangedSuppressions, + ...baseSdksWithSuppressions, + ]; } } // 1. If modify Sdk in SdkSuppressionsSection, add SdkName to sdkNamesWithChangedSuppressions - const differentSdkNamesWithChangedSuppressions = _.xorWith(headSdksWithSuppressions, baseSdksWithSuppressions, _.isEqual); + const differentSdkNamesWithChangedSuppressions = _.xorWith( + headSdksWithSuppressions, + baseSdksWithSuppressions, + _.isEqual, + ); if (differentSdkNamesWithChangedSuppressions.length > 0) { - sdkNamesWithChangedSuppressions = [...sdkNamesWithChangedSuppressions, ...differentSdkNamesWithChangedSuppressions]; + sdkNamesWithChangedSuppressions = [ + ...sdkNamesWithChangedSuppressions, + ...differentSdkNamesWithChangedSuppressions, + ]; } // 2. If modify SdkPackageSuppressionsEntry in SdkSuppressionsSection include package name and breaking changes // add SdkName to sdkNamesWithChangedSuppressions - const similarSdkNamesWithChangedSuppressions = _.intersectionWith(headSdksWithSuppressions, baseSdksWithSuppressions); + const similarSdkNamesWithChangedSuppressions = _.intersectionWith( + headSdksWithSuppressions, + baseSdksWithSuppressions, + ); similarSdkNamesWithChangedSuppressions.forEach((sdkName: SdkName) => { - const headSdkPackageSuppressionsEntry = headSdkSuppressionsSection[sdkName] as SdkPackageSuppressionsEntry[]; - const baseSdkPackageSuppressionsEntry = baseSdkSuppressionsSection[sdkName] as SdkPackageSuppressionsEntry[]; + const headSdkPackageSuppressionsEntry = headSdkSuppressionsSection[ + sdkName + ] as SdkPackageSuppressionsEntry[]; + const baseSdkPackageSuppressionsEntry = baseSdkSuppressionsSection[ + sdkName + ] as SdkPackageSuppressionsEntry[]; // Determine whether packageName has changed const differentPackageNamesWithChangedSuppressions = _.xorWith( headSdkPackageSuppressionsEntry.map((entry) => entry.package), baseSdkPackageSuppressionsEntry.map((entry) => entry.package), - _.isEqual + _.isEqual, ); if (differentPackageNamesWithChangedSuppressions.length > 0) { sdkNamesWithChangedSuppressions = [...sdkNamesWithChangedSuppressions, sdkName]; @@ -180,7 +197,9 @@ export function getSdkNamesWithChangedSuppressions( } // Determine whether breaking-changes has changed headSdkPackageSuppressionsEntry.forEach((headEntry) => { - const baseEntry = baseSdkPackageSuppressionsEntry.find((entry) => entry.package === headEntry.package); + const baseEntry = baseSdkPackageSuppressionsEntry.find( + (entry) => entry.package === headEntry.package, + ); if (!baseEntry) { sdkNamesWithChangedSuppressions = [...sdkNamesWithChangedSuppressions, sdkName]; return; @@ -190,62 +209,105 @@ export function getSdkNamesWithChangedSuppressions( return; } }); - }) + }); return [...new Set(sdkNamesWithChangedSuppressions)]; } +// Promisify the exec function +const execAsync = promisify(exec); + +async function runGitCommand(command: string): Promise { + try { + const { stdout, stderr } = await execAsync(command); + + if (stderr) { + console.error("Error Output:", stderr); + throw new Error(stderr); + } + + return stdout.trim(); + } catch (error) { + console.error("Failed to execute Git command:", error); + throw error; + } +} + /** - * - * @param appClient - * @param pr + * + * @param appClient + * @param pr * This code segment is responsible for managing the sdk suppression label (e.g. BreakingChange-Go-Sdk-Suppression) for PRs. * 1. It applies the label automatically when a PR includes a new suppression file. * 2. It removes the label if the PR no longer contains the suppression file. * 3. It leaves the label unchanged if the PR already has both the suppression and the suppression approved labels. */ -export async function updateSdkSuppressionsLabels(pr: PullRequestContext, githubToken: string, prChangeFiles:string, outputFile: string): Promise<{labelsToAdd: String[], labelsToRemove: String[]}> { +export async function updateSdkSuppressionsLabels( + pr: PullRequestContext, + githubToken: string, + prChangeFiles: string, + outputFile: string, +): Promise<{ labelsToAdd: String[]; labelsToRemove: String[] }> { + try { + const status = await runGitCommand("git status"); + console.log("Git Status:", status); + } catch (err) { + console.error("Error running git command:", err); + } + const appClient: Octokit = new Octokit({ - auth: githubToken + auth: githubToken, }); - console.log('Pull Request Context', pr); + console.log("Pull Request Context", pr); const sdkNames = await getSdkSuppressionsSdkNames(appClient, pr, prChangeFiles); - console.log('Changed SdkNames', sdkNames); - - console.log(`updateSdkSuppressionsLabels: PR: ${pr.html_url} Get the required suppressions label based on compared SDK List ${sdkNames.join(", ")}`); + console.log("Changed SdkNames", sdkNames); + + console.log( + `updateSdkSuppressionsLabels: PR: ${pr.html_url} Get the required suppressions label based on compared SDK List ${sdkNames.join(", ")}`, + ); let addSdkSuppressionsLabels: string[] = []; let removeSdkSuppressionsLabels: string[] = []; const presentLabels = pr.labels; // The sdkNames indicates whether any suppression files have been modified. If it is empty // then check if the suppression label was previously applied and remove it if so. Otherwise, no action is needed. if (sdkNames.length === 0) { - const sdkSuppressionsLabels = Object.values(sdkLabels).map(sdkName => sdkName.breakingChangeSuppression).filter(breakingChangeSuppressionLabel => breakingChangeSuppressionLabel !== undefined); + const sdkSuppressionsLabels = Object.values(sdkLabels) + .map((sdkName) => sdkName.breakingChangeSuppression) + .filter((breakingChangeSuppressionLabel) => breakingChangeSuppressionLabel !== undefined); for (let prLabel of presentLabels) { if (sdkSuppressionsLabels.includes(prLabel)) { - const sdkSuppressionsApprovedLabel = Object.values(sdkLabels).find(sdkName => sdkName.breakingChangeSuppression === prLabel)?.breakingChangeSuppressionApproved || ''; + const sdkSuppressionsApprovedLabel = + Object.values(sdkLabels).find((sdkName) => sdkName.breakingChangeSuppression === prLabel) + ?.breakingChangeSuppressionApproved || ""; if (!presentLabels.includes(sdkSuppressionsApprovedLabel)) { - console.log(`updateSdkSuppressionsLabels: PR: ${pr.html_url} To remove the existed suppression label if there are no difference between head commit and base commit for the suppression content.`); + console.log( + `updateSdkSuppressionsLabels: PR: ${pr.html_url} To remove the existed suppression label if there are no difference between head commit and base commit for the suppression content.`, + ); removeSdkSuppressionsLabels.push(prLabel); } } } if (removeSdkSuppressionsLabels.length > 0) { - console.log(`updateSdkSuppressionsLabels: PR: ${pr.html_url} Remove label: ${removeSdkSuppressionsLabels.join(", ")}`); + console.log( + `updateSdkSuppressionsLabels: PR: ${pr.html_url} Remove label: ${removeSdkSuppressionsLabels.join(", ")}`, + ); } else { console.log(`updateSdkSuppressionsLabels: PR: ${pr.html_url} No Remove label`); } } else { // The presence of sdkNames indicates that the suppression file has changed between the head and base branch. The suppression label should be added if it is missing. - + for (let sdkName of sdkNames) { - const sdkSuppressionsLabel = sdkLabels[sdkName].breakingChangeSuppression || ''; + const sdkSuppressionsLabel = sdkLabels[sdkName].breakingChangeSuppression || ""; if (!presentLabels.includes(sdkSuppressionsLabel)) { addSdkSuppressionsLabels.push(sdkSuppressionsLabel); } } if (addSdkSuppressionsLabels.length > 0) { - console.log(`updateSdkSuppressionsLabels: PR: ${pr.html_url} add label: ${addSdkSuppressionsLabels.join(", ")}`); + console.log( + `updateSdkSuppressionsLabels: PR: ${pr.html_url} add label: ${addSdkSuppressionsLabels.join(", ")}`, + ); } else { console.log(`updateSdkSuppressionsLabels: PR: ${pr.html_url} no add label`); } @@ -253,11 +315,11 @@ export async function updateSdkSuppressionsLabels(pr: PullRequestContext, github const result = { labelsToAdd: addSdkSuppressionsLabels, - labelsToRemove: removeSdkSuppressionsLabels + labelsToRemove: removeSdkSuppressionsLabels, }; const willSaveOutput = [ - ...result.labelsToAdd.map(label => `label-${label}=true`), - ...result.labelsToRemove.map(label => `label-${label}=false`) + ...result.labelsToAdd.map((label) => `label-${label}=true`), + ...result.labelsToRemove.map((label) => `label-${label}=false`), ]; writeFileSync(outputFile, JSON.stringify(willSaveOutput)); console.log("JSON output saved to output.json"); @@ -265,51 +327,68 @@ export async function updateSdkSuppressionsLabels(pr: PullRequestContext, github return result; } -function logSuppressionFileInfo(pr: { owner: string, repo: string, ref: string, path: string }) { - console.log(`updateSdkSuppressionsLabels: Will get suppressions content from ${pr.owner}/${pr.repo}#${pr.ref} for ${pr.path}`); +function logSuppressionFileInfo(pr: { owner: string; repo: string; ref: string; path: string }) { + console.log( + `updateSdkSuppressionsLabels: Will get suppressions content from ${pr.owner}/${pr.repo}#${pr.ref} for ${pr.path}`, + ); } /** - * - * @param filesChangedPaths - * @returns string[] + * + * @param filesChangedPaths + * @returns string[] * check suppressionFileList is swagger suppression or tsp suppression * if the change includes both swagger suppression and tsp suppression, only handle the tsp suppression * others keep swagger suppression - * + * * filter data-plane for swagger suppression and tsp suppression for each service */ export function filterSuppressionList(filesChangedPaths: string[]): string[] { let initialSuppressionFiles = filesChangedPaths.filter((suppressionFile) => - suppressionFile.split("/").includes(sdkSuppressionsFileName) + suppressionFile.split("/").includes(sdkSuppressionsFileName), ); - let tspSuppressionFileList = initialSuppressionFiles.filter( - suppressionFile => suppressionFile.split('/').some(suppressionFile => suppressionFile.endsWith('.Management')) + let tspSuppressionFileList = initialSuppressionFiles.filter((suppressionFile) => + suppressionFile.split("/").some((suppressionFile) => suppressionFile.endsWith(".Management")), ); - let swaggerSuppressionFileList = initialSuppressionFiles.filter( - suppressionFile => suppressionFile.split('/').includes('resource-manager') + let swaggerSuppressionFileList = initialSuppressionFiles.filter((suppressionFile) => + suppressionFile.split("/").includes("resource-manager"), ); let filterSuppressionFileList = [...tspSuppressionFileList, ...swaggerSuppressionFileList]; - const groupedSuppressionFileList = filterSuppressionFileList.reduce((acc: {[key: string]: string[]}, path) => { - const key = path.split('/')[1]; - if (!acc[key]) { + const groupedSuppressionFileList = filterSuppressionFileList.reduce( + (acc: { [key: string]: string[] }, path) => { + const key = path.split("/")[1]; + if (!acc[key]) { acc[key] = []; - } - acc[key].push(path); + } + acc[key].push(path); - return acc; - }, {}); + return acc; + }, + {}, + ); - let suppressionFileList: string[] = [] + let suppressionFileList: string[] = []; for (const serviceName in groupedSuppressionFileList) { if (groupedSuppressionFileList.hasOwnProperty(serviceName)) { let serviceSuppressionList = groupedSuppressionFileList[serviceName]; - if(serviceSuppressionList.some(suppressionFile => suppressionFile.split('/').some(suppressionFile => suppressionFile.endsWith('.Management')))) { - suppressionFileList = suppressionFileList.concat(serviceSuppressionList.filter(suppressionFile => suppressionFile.split('/').some(suppressionFile => suppressionFile.endsWith('.Management')))); + if ( + serviceSuppressionList.some((suppressionFile) => + suppressionFile + .split("/") + .some((suppressionFile) => suppressionFile.endsWith(".Management")), + ) + ) { + suppressionFileList = suppressionFileList.concat( + serviceSuppressionList.filter((suppressionFile) => + suppressionFile + .split("/") + .some((suppressionFile) => suppressionFile.endsWith(".Management")), + ), + ); } else { - suppressionFileList = suppressionFileList.concat(serviceSuppressionList) + suppressionFileList = suppressionFileList.concat(serviceSuppressionList); } } } From 0780ff30ecf4595ed8f963c1d60ceea74a8847bb Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 12 Dec 2024 22:23:55 +0800 Subject: [PATCH 138/190] using git command add content --- eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index f3c3da11c646..3c98d1a4ada2 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -251,6 +251,10 @@ export async function updateSdkSuppressionsLabels( try { const status = await runGitCommand("git status"); console.log("Git Status:", status); + const HEADContent = await runGitCommand("git show HEAD^:specification/datafactory/resource-manager/Microsoft.DataFactory/stable/2018-06-01/datafactory.json"); + console.log("Git HEADContent:", HEADContent); + const baseContent = await runGitCommand("git show HEAD:specification/datafactory/resource-manager/Microsoft.DataFactory/stable/2018-06-01/datafactory.json"); + console.log("Git BASEContent:", baseContent); } catch (err) { console.error("Error running git command:", err); } From 4164c1c93829bf36b01b0922b56e45990847c247 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 12 Dec 2024 22:40:08 +0800 Subject: [PATCH 139/190] change code to support git command --- .../src/updateSdkSuppressionsLabel.ts | 72 ++++--------------- 1 file changed, 15 insertions(+), 57 deletions(-) diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index 3c98d1a4ada2..b8554aa0d7c0 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -32,7 +32,6 @@ export type PullRequestContext = { /** * - * @param appClient * @param pr * @returns SdkName list * This part compares the suppression files of the head branch and the base branch. @@ -41,7 +40,6 @@ export type PullRequestContext = { * on the other hand that the sdkName list will return an empty array if it does not have a suppression file or if the file is blank. */ export async function getSdkSuppressionsSdkNames( - appClient: Octokit, pr: PullRequestContext, prChangeFiles: string, ): Promise { @@ -53,32 +51,8 @@ export async function getSdkSuppressionsSdkNames( // Get suppression file Content if (suppressionFileList.length > 0) { for (const suppressionFile of suppressionFileList) { - logSuppressionFileInfo({ - owner: pr.base.owner, - repo: pr.base.repo, - ref: pr.base.ref, - path: suppressionFile, - }); - let baseSuppressionContent = await getSdkSuppressionsFileContent( - appClient, - pr.base.owner, - pr.base.repo, - pr.base.ref, - suppressionFile, - ); - logSuppressionFileInfo({ - owner: pr.head.owner, - repo: pr.head.repo, - ref: pr.head.ref, - path: suppressionFile, - }); - const headSuppressionContent = await getSdkSuppressionsFileContent( - appClient, - pr.head.owner, - pr.head.repo, - pr.head.ref, - suppressionFile, - ); + let baseSuppressionContent = await getSdkSuppressionsFileContent("HEAD^", suppressionFile); + const headSuppressionContent = await getSdkSuppressionsFileContent("HEAD", suppressionFile); // if the head suppression file is present but anything is wrong like schema error with it return const validateSdkSuppressionsFileResult = @@ -108,24 +82,17 @@ export async function getSdkSuppressionsSdkNames( } async function getSdkSuppressionsFileContent( - appClient: Octokit, - owner: string, - repo: string, ref: string, path: string, ): Promise { try { - const { data: suppressionFileContent }: OctokitResponse = - await appClient.repos.getContent({ - repo, - owner, - ref, - path, - }); - const suppressionContentString = base64ToString(suppressionFileContent.content); + const suppressionFileContent = await runGitCommand(`git show ${ref}:${path}`); + console.log("suppressionFileContent", suppressionFileContent); + const suppressionContentString = base64ToString(suppressionFileContent); + console.log("suppressionContentString", suppressionContentString); return parseYamlContent(suppressionContentString, path).result; } catch (error) { - console.log(`Not found ${path} in ${owner}/${repo}#${ref}`); + console.log(`Not found content in ${ref}#${path}`); return null; } } @@ -235,7 +202,6 @@ async function runGitCommand(command: string): Promise { /** * - * @param appClient * @param pr * This code segment is responsible for managing the sdk suppression label (e.g. BreakingChange-Go-Sdk-Suppression) for PRs. * 1. It applies the label automatically when a PR includes a new suppression file. @@ -244,27 +210,25 @@ async function runGitCommand(command: string): Promise { */ export async function updateSdkSuppressionsLabels( pr: PullRequestContext, - githubToken: string, prChangeFiles: string, outputFile: string, ): Promise<{ labelsToAdd: String[]; labelsToRemove: String[] }> { try { const status = await runGitCommand("git status"); console.log("Git Status:", status); - const HEADContent = await runGitCommand("git show HEAD^:specification/datafactory/resource-manager/Microsoft.DataFactory/stable/2018-06-01/datafactory.json"); + const baseContent = await runGitCommand( + "git show HEAD^:specification/datafactory/resource-manager/Microsoft.DataFactory/stable/2018-06-01/datafactory.json", + ); + console.log("Git baseContent:", baseContent); + const HEADContent = await runGitCommand( + "git show HEAD:specification/datafactory/resource-manager/Microsoft.DataFactory/stable/2018-06-01/datafactory.json", + ); console.log("Git HEADContent:", HEADContent); - const baseContent = await runGitCommand("git show HEAD:specification/datafactory/resource-manager/Microsoft.DataFactory/stable/2018-06-01/datafactory.json"); - console.log("Git BASEContent:", baseContent); } catch (err) { console.error("Error running git command:", err); } - const appClient: Octokit = new Octokit({ - auth: githubToken, - }); - - console.log("Pull Request Context", pr); - const sdkNames = await getSdkSuppressionsSdkNames(appClient, pr, prChangeFiles); + const sdkNames = await getSdkSuppressionsSdkNames(pr, prChangeFiles); console.log("Changed SdkNames", sdkNames); console.log( @@ -331,12 +295,6 @@ export async function updateSdkSuppressionsLabels( return result; } -function logSuppressionFileInfo(pr: { owner: string; repo: string; ref: string; path: string }) { - console.log( - `updateSdkSuppressionsLabels: Will get suppressions content from ${pr.owner}/${pr.repo}#${pr.ref} for ${pr.path}`, - ); -} - /** * * @param filesChangedPaths From ff378b1b38a588f93f4aa04e5c45c3fc3cfb382e Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 12 Dec 2024 22:45:35 +0800 Subject: [PATCH 140/190] fix bug --- eng/tools/sdk-suppressions/src/index.ts | 7 ++----- .../sdk-suppressions/src/updateSdkSuppressionsLabel.ts | 2 -- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/eng/tools/sdk-suppressions/src/index.ts b/eng/tools/sdk-suppressions/src/index.ts index 6c30e0b61b3b..bec9c92d4320 100644 --- a/eng/tools/sdk-suppressions/src/index.ts +++ b/eng/tools/sdk-suppressions/src/index.ts @@ -6,7 +6,6 @@ function getUsage(): string { return ( "Parameter missing! \n" + "\n" + - "Check GITHUB_TOKEN is setting in spec repo setting for action which named SPEC_REPO_TOKEN ! referenece https://docs.github.com/zh/actions/security-for-github-actions/security-guides/using-secrets-in-github-actions\n" + "Check GITHUB_PULL_REQUEST_CONTEXT where defined in step: Get GitHub PullRequest Context" + "Check OUTPUT_FILE in step env: Run get suppressions label script " + "Check The pr has change files in GITHUB_PULL_REQUEST_CHANGE_FILES " @@ -15,13 +14,11 @@ function getUsage(): string { export async function main() { const pullRequestContext = process.env.GITHUB_PULL_REQUEST_CONTEXT as string; - const githubToken = process.env.GITHUB_TOKEN as string; const outputFile = process.env.OUTPUT_FILE as string; const prChangeFiles = process.env.GITHUB_PULL_REQUEST_CHANGE_FILES as string; - if (pullRequestContext && githubToken && outputFile && prChangeFiles) { + if (pullRequestContext && outputFile && prChangeFiles) { const _pullRequestContext = JSON.parse(pullRequestContext) as unknown as PullRequestContext; - const _token = githubToken; - const changedLabels: {labelsToAdd: String[], labelsToRemove: String[]} = await updateSdkSuppressionsLabels(_pullRequestContext, _token, prChangeFiles, outputFile); + const changedLabels: {labelsToAdd: String[], labelsToRemove: String[]} = await updateSdkSuppressionsLabels(_pullRequestContext, prChangeFiles, outputFile); console.log(JSON.stringify(changedLabels)); exit(0); } else { diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index b8554aa0d7c0..9ed96f30d64e 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -1,7 +1,5 @@ import _ from "lodash"; import { writeFileSync } from "fs"; -import { Octokit } from "@octokit/rest"; -import { OctokitResponse, ReposGetContentResponseData } from "@octokit/types"; import { sdkLabels, SdkName } from "./sdk.js"; import { exec } from "child_process"; import { promisify } from "util"; From 4e7bcc01bdd582716455fbeb82398a97635c8729 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 12 Dec 2024 22:50:54 +0800 Subject: [PATCH 141/190] remove log --- .../sdk-suppressions/src/updateSdkSuppressionsLabel.ts | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index 9ed96f30d64e..53de6365679a 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -213,15 +213,7 @@ export async function updateSdkSuppressionsLabels( ): Promise<{ labelsToAdd: String[]; labelsToRemove: String[] }> { try { const status = await runGitCommand("git status"); - console.log("Git Status:", status); - const baseContent = await runGitCommand( - "git show HEAD^:specification/datafactory/resource-manager/Microsoft.DataFactory/stable/2018-06-01/datafactory.json", - ); - console.log("Git baseContent:", baseContent); - const HEADContent = await runGitCommand( - "git show HEAD:specification/datafactory/resource-manager/Microsoft.DataFactory/stable/2018-06-01/datafactory.json", - ); - console.log("Git HEADContent:", HEADContent); + console.log("Git status:", status); } catch (err) { console.error("Error running git command:", err); } From 1f6dbff0a9fece1994696011baaa232fef9fa39b Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 12 Dec 2024 22:56:10 +0800 Subject: [PATCH 142/190] remove base264 function --- .../sdk-suppressions/src/updateSdkSuppressionsLabel.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index 53de6365679a..323ec8563b8f 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -10,7 +10,7 @@ import { SdkPackageSuppressionsEntry, validateSdkSuppressionsFile, } from "./sdkSuppressions.js"; -import { base64ToString, parseYamlContent } from "./common.js"; +import { parseYamlContent } from "./common.js"; export type PullRequestContext = { labels: string[]; @@ -86,9 +86,9 @@ async function getSdkSuppressionsFileContent( try { const suppressionFileContent = await runGitCommand(`git show ${ref}:${path}`); console.log("suppressionFileContent", suppressionFileContent); - const suppressionContentString = base64ToString(suppressionFileContent); - console.log("suppressionContentString", suppressionContentString); - return parseYamlContent(suppressionContentString, path).result; + // const suppressionContentString = base64ToString(suppressionFileContent); + // console.log("suppressionContentString", suppressionContentString); + return parseYamlContent(suppressionFileContent, path).result; } catch (error) { console.log(`Not found content in ${ref}#${path}`); return null; From d3ca09e0d4abe7326dc690b719f07559f5c8063e Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 12 Dec 2024 23:36:59 +0800 Subject: [PATCH 143/190] test output --- .github/workflows/SDK-Suppressions-Label.yaml | 37 +++++++------ eng/tools/sdk-suppressions/package.json | 2 - eng/tools/sdk-suppressions/src/common.ts | 28 +++++++--- .../src/updateSdkSuppressionsLabel.ts | 53 ++++--------------- package-lock.json | 36 ------------- 5 files changed, 52 insertions(+), 104 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 6a1efbb38036..258d52e28f58 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -53,16 +53,6 @@ jobs: number: pr.number, title: pr.title, html_url: pr.html_url, - base: { - owner: pr.base.repo.owner.login, - repo: pr.base.repo.name, - ref: pr.base.ref - }, - head: { - owner: pr.head.repo.owner.login, - repo: pr.head.repo.name, - ref: pr.head.ref - }, labels: pr.labels.map(label => label.name) }; return JSON.stringify(prContext); @@ -74,7 +64,6 @@ jobs: GITHUB_PULL_REQUEST_CONTEXT: ${{ steps.fetch-pullRequest-context.outputs.result }} OUTPUT_FILE: "output.json" GITHUB_PULL_REQUEST_CHANGE_FILES: ${{ steps.get-changedFiles.outputs.changedFiles }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js OUTPUT=$(cat $OUTPUT_FILE) @@ -84,9 +73,25 @@ jobs: has_output=$(node -e "const fs = require('fs'); const data = JSON.parse(fs.readFileSync('$OUTPUT_FILE', 'utf8')); console.log(data.length === 0 ? 'false' : 'true');") echo "Script has-output: $has_output" echo "::set-output name=has-output::$has_output" + + labelsToAdd=$(echo "$OUTPUT" | grep -oP '"labelsToAdd":\s*\[\K[^\]]+' | tr -d '" ,') + labelsToRemove=$(echo "$OUTPUT" | grep -oP '"labelsToRemove":\s*\[\K[^\]]+' | tr -d '" ,') + + for label in $labelsToAdd; do + echo "::set-output name=$label::true" + done + + for label in $labelsToRemove; do + echo "::set-output name=$label::false" + done - - name: Upload artifact dependes on labels - uses: ./.github/actions/add-multi-labels-artifact - if: ${{ steps.run-suppressions-script.outputs.has-output == 'true' }} - with: - labels: ${{ steps.run-suppressions-script.outputs.suppressions-result-output }} + # - name: Use outputs from previous step + # run: | + # echo "Labels to Add: ${{ steps.run-suppressions-script.outputs.labelsToAdd }}" + # echo "Labels to Remove: ${{ steps.run-suppressions-script.outputs.labelsToRemove }}" + + # - name: Upload artifact dependes on labels + # uses: ./.github/actions/add-multi-labels-artifact + # if: ${{ steps.run-suppressions-script.outputs.has-output == 'true' }} + # with: + # labels: ${{ steps.run-suppressions-script.outputs.suppressions-result-output }} diff --git a/eng/tools/sdk-suppressions/package.json b/eng/tools/sdk-suppressions/package.json index e5b28364f850..ba2ccd6ea73e 100644 --- a/eng/tools/sdk-suppressions/package.json +++ b/eng/tools/sdk-suppressions/package.json @@ -15,8 +15,6 @@ "node": ">= 18.0.0" }, "dependencies": { - "@octokit/rest": "18.0.3", - "@octokit/types": "^5.4.0", "ajv": "^6.12.6", "js-yaml": "^3.14.0", "lodash": "^4.17.20" diff --git a/eng/tools/sdk-suppressions/src/common.ts b/eng/tools/sdk-suppressions/src/common.ts index f56c21ae1939..9ebfc07b670e 100644 --- a/eng/tools/sdk-suppressions/src/common.ts +++ b/eng/tools/sdk-suppressions/src/common.ts @@ -2,6 +2,8 @@ import pkg from 'js-yaml'; const { load } = pkg; +import { exec } from "child_process"; +import { promisify } from "util"; /** * @param yamlContent @@ -43,10 +45,22 @@ export function parseYamlContent(yamlContent: string, path: string): { } - export function base64ToString(base64: string): string { - return Buffer.from(base64, "base64").toString(); - }; - - export function stringToBase64(base: string): string { - return Buffer.from(base).toString("base64"); - }; + +// Promisify the exec function +const execAsync = promisify(exec); + +export async function runGitCommand(command: string): Promise { + try { + const { stdout, stderr } = await execAsync(command); + + if (stderr) { + console.error("Error Output:", stderr); + throw new Error(stderr); + } + + return stdout.trim(); + } catch (error) { + console.error("Failed to execute Git command:", error); + throw error; + } +} \ No newline at end of file diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index 323ec8563b8f..179e021f2988 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -1,8 +1,6 @@ import _ from "lodash"; import { writeFileSync } from "fs"; import { sdkLabels, SdkName } from "./sdk.js"; -import { exec } from "child_process"; -import { promisify } from "util"; import { SdkSuppressionsYml, SdkSuppressionsSection, @@ -10,22 +8,12 @@ import { SdkPackageSuppressionsEntry, validateSdkSuppressionsFile, } from "./sdkSuppressions.js"; -import { parseYamlContent } from "./common.js"; +import { parseYamlContent, runGitCommand } from "./common.js"; export type PullRequestContext = { labels: string[]; number: number; html_url: string; - head: { - owner: string; - repo: string; - ref: string; - }; - base: { - owner: string; - repo: string; - ref: string; - }; }; /** @@ -42,11 +30,8 @@ export async function getSdkSuppressionsSdkNames( prChangeFiles: string, ): Promise { const filesChangedPaths = prChangeFiles.split(" "); - // Get suppression file list let suppressionFileList = filterSuppressionList(filesChangedPaths); - let sdkNameList: SdkName[] = []; - // Get suppression file Content if (suppressionFileList.length > 0) { for (const suppressionFile of suppressionFileList) { let baseSuppressionContent = await getSdkSuppressionsFileContent("HEAD^", suppressionFile); @@ -85,9 +70,6 @@ async function getSdkSuppressionsFileContent( ): Promise { try { const suppressionFileContent = await runGitCommand(`git show ${ref}:${path}`); - console.log("suppressionFileContent", suppressionFileContent); - // const suppressionContentString = base64ToString(suppressionFileContent); - // console.log("suppressionContentString", suppressionContentString); return parseYamlContent(suppressionFileContent, path).result; } catch (error) { console.log(`Not found content in ${ref}#${path}`); @@ -179,25 +161,6 @@ export function getSdkNamesWithChangedSuppressions( return [...new Set(sdkNamesWithChangedSuppressions)]; } -// Promisify the exec function -const execAsync = promisify(exec); - -async function runGitCommand(command: string): Promise { - try { - const { stdout, stderr } = await execAsync(command); - - if (stderr) { - console.error("Error Output:", stderr); - throw new Error(stderr); - } - - return stdout.trim(); - } catch (error) { - console.error("Failed to execute Git command:", error); - throw error; - } -} - /** * * @param pr @@ -275,11 +238,15 @@ export async function updateSdkSuppressionsLabels( labelsToAdd: addSdkSuppressionsLabels, labelsToRemove: removeSdkSuppressionsLabels, }; - const willSaveOutput = [ - ...result.labelsToAdd.map((label) => `label-${label}=true`), - ...result.labelsToRemove.map((label) => `label-${label}=false`), - ]; - writeFileSync(outputFile, JSON.stringify(willSaveOutput)); + writeFileSync(outputFile, JSON.stringify({ + labelsToAdd: ['aaa'], + labelsToRemove: ['bbbb'], + })); + // const willSaveOutput = [ + // ...result.labelsToAdd.map((label) => `label-${label}=true`), + // ...result.labelsToRemove.map((label) => `label-${label}=false`), + // ]; + // writeFileSync(outputFile, JSON.stringify(willSaveOutput)); console.log("JSON output saved to output.json"); return result; diff --git a/package-lock.json b/package-lock.json index 38ecd6cdfb9a..b52c3b0dd77d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -346,8 +346,6 @@ "version": "1.0.0", "dev": true, "dependencies": { - "@octokit/rest": "18.0.3", - "@octokit/types": "^5.4.0", "ajv": "^6.12.6", "js-yaml": "^3.14.0", "lodash": "^4.17.20" @@ -3083,17 +3081,6 @@ "@octokit/core": ">=3" } }, - "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-4.1.2.tgz", - "integrity": "sha512-PTI7wpbGEZ2IR87TVh+TNWaLcgX/RsZQalFbQCq8XxYUrQ36RHyERrHSNXFy5gkWpspUAOYRSV707JJv6BhqJA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^5.1.1", - "deprecation": "^2.3.1" - } - }, "node_modules/@octokit/plugin-retry": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-3.0.9.tgz", @@ -3183,29 +3170,6 @@ } } }, - "node_modules/@octokit/rest": { - "version": "18.0.3", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.0.3.tgz", - "integrity": "sha512-GubgemnLvUJlkhouTM2BtX+g/voYT/Mqh0SASGwTnLvSkW1irjt14N911/ABb6m1Hru0TwScOgFgMFggp3igfQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/core": "^3.0.0", - "@octokit/plugin-paginate-rest": "^2.2.0", - "@octokit/plugin-request-log": "^1.0.0", - "@octokit/plugin-rest-endpoint-methods": "4.1.2" - } - }, - "node_modules/@octokit/types": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-5.5.0.tgz", - "integrity": "sha512-UZ1pErDue6bZNjYOotCNveTXArOMZQFG6hKJfOnGnulVCMcVVi7YIIuuR4WfBhjo7zgpmzn/BkPDnUXtNx+PcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": ">= 8" - } - }, "node_modules/@octokit/webhooks-types": { "version": "7.6.1", "resolved": "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-7.6.1.tgz", From d340fcad70472dc916611f56782b0efbb4fdcc7e Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 12 Dec 2024 23:55:23 +0800 Subject: [PATCH 144/190] test add label --- .github/workflows/SDK-Suppressions-Label.yaml | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 258d52e28f58..f234ee9c99e7 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -78,13 +78,47 @@ jobs: labelsToRemove=$(echo "$OUTPUT" | grep -oP '"labelsToRemove":\s*\[\K[^\]]+' | tr -d '" ,') for label in $labelsToAdd; do + echo "Label to add: $label" + echo "::set-output name=has-$label::true" echo "::set-output name=$label::true" done for label in $labelsToRemove; do + echo "Label to remove: $label" + echo "::set-output name=has-$label::true" echo "::set-output name=$label::false" done + + - uses: ./.github/actions/add-label-artifact + name: Upload artifact with results-go + if: ${{ steps.run-suppressions-script.outputs.has-BreakingChange-Go-Sdk-Suppression == 'true' }} + with: + name: "BreakingChange-Go-Sdk-Suppression" + value: "${{ steps.run-suppressions-script.outputs.BreakingChange-Go-Sdk-Suppression }}" + + - uses: ./.github/actions/add-label-artifact + name: Upload artifact with results java + if: ${{ steps.run-suppressions-script.outputs.has-BreakingChange-Java-Sdk-Suppression == 'true' }} + with: + name: "BreakingChange-Java-Sdk-Suppression" + value: "${{ steps.run-suppressions-script.outputs.BreakingChange-Java-Sdk-Suppression }}" + + - uses: ./.github/actions/add-label-artifact + name: Upload artifact with results js + if: ${{ steps.run-suppressions-script.outputs.has-BreakingChange-JavaScript-Sdk-Suppression == 'true' }} + with: + name: "BreakingChange-JavaScript-Sdk-Suppression" + value: "${{ steps.run-suppressions-script.outputs.BreakingChange-JavaScript-Sdk-Suppression }}" + - uses: ./.github/actions/add-label-artifact + name: Upload artifact with results python + if: ${{ steps.run-suppressions-script.outputs.has-BreakingChange-Python-Sdk-Suppression == 'true' }} + with: + name: "BreakingChange-Python-Sdk-Suppression" + value: "${{ steps.run-suppressions-script.outputs.BreakingChange-Python-Sdk-Suppression }}" + + + # - name: Use outputs from previous step # run: | # echo "Labels to Add: ${{ steps.run-suppressions-script.outputs.labelsToAdd }}" From c96529d1945ca4016a29a51cabfaa844f9150537 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 13 Dec 2024 00:02:09 +0800 Subject: [PATCH 145/190] test add label --- .github/workflows/SDK-Suppressions-Label.yaml | 14 ++++++++++++++ .../src/updateSdkSuppressionsLabel.ts | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index f234ee9c99e7..62441d64e500 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -89,6 +89,20 @@ jobs: echo "::set-output name=$label::false" done + - uses: ./.github/actions/add-label-artifact + name: Upload artifact with results-aaa + if: ${{ steps.run-suppressions-script.outputs.has-aaa == 'true' }} + with: + name: "aaa" + value: "${{ steps.run-suppressions-script.outputs.aaa }}" + + - uses: ./.github/actions/add-label-artifact + name: Upload artifact with results-bbb + if: ${{ steps.run-suppressions-script.outputs.has-bbb == 'true' }} + with: + name: "bbb" + value: "${{ steps.run-suppressions-script.outputs.bbb }}" + - uses: ./.github/actions/add-label-artifact name: Upload artifact with results-go if: ${{ steps.run-suppressions-script.outputs.has-BreakingChange-Go-Sdk-Suppression == 'true' }} diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index 179e021f2988..1472c91f10b5 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -239,7 +239,7 @@ export async function updateSdkSuppressionsLabels( labelsToRemove: removeSdkSuppressionsLabels, }; writeFileSync(outputFile, JSON.stringify({ - labelsToAdd: ['aaa'], + labelsToAdd: ['aaa', 'bbb'], labelsToRemove: ['bbbb'], })); // const willSaveOutput = [ From 3373c3103ffdbae064de487b32e2c464763ed2e3 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 13 Dec 2024 00:08:18 +0800 Subject: [PATCH 146/190] test add label --- .github/workflows/SDK-Suppressions-Label.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 62441d64e500..f8e5f3136ed3 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -74,8 +74,8 @@ jobs: echo "Script has-output: $has_output" echo "::set-output name=has-output::$has_output" - labelsToAdd=$(echo "$OUTPUT" | grep -oP '"labelsToAdd":\s*\[\K[^\]]+' | tr -d '" ,') - labelsToRemove=$(echo "$OUTPUT" | grep -oP '"labelsToRemove":\s*\[\K[^\]]+' | tr -d '" ,') + labelsToAdd=$(echo "$OUTPUT" | grep -oP '"labelsToAdd":\s*\[\K[^\]]+' | tr -d '", ' | tr '\n' ' ') + labelsToRemove=$(echo "$OUTPUT" | grep -oP '"labelsToRemove":\s*\[\K[^\]]+' | tr -d '", ' | tr '\n' ' ') for label in $labelsToAdd; do echo "Label to add: $label" @@ -90,14 +90,14 @@ jobs: done - uses: ./.github/actions/add-label-artifact - name: Upload artifact with results-aaa + name: Upload artifact with results aaa if: ${{ steps.run-suppressions-script.outputs.has-aaa == 'true' }} with: name: "aaa" value: "${{ steps.run-suppressions-script.outputs.aaa }}" - uses: ./.github/actions/add-label-artifact - name: Upload artifact with results-bbb + name: Upload artifact with results bbb if: ${{ steps.run-suppressions-script.outputs.has-bbb == 'true' }} with: name: "bbb" From 2c01e2213deabbcb892676b4c647266637b867f0 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 13 Dec 2024 00:20:16 +0800 Subject: [PATCH 147/190] test add label --- .github/workflows/SDK-Suppressions-Label.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index f8e5f3136ed3..c1210fccd801 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -74,8 +74,8 @@ jobs: echo "Script has-output: $has_output" echo "::set-output name=has-output::$has_output" - labelsToAdd=$(echo "$OUTPUT" | grep -oP '"labelsToAdd":\s*\[\K[^\]]+' | tr -d '", ' | tr '\n' ' ') - labelsToRemove=$(echo "$OUTPUT" | grep -oP '"labelsToRemove":\s*\[\K[^\]]+' | tr -d '", ' | tr '\n' ' ') + labelsToAdd=$(echo "$OUTPUT" | sed -n 's/.*"labelsToAdd": \[\([^]]*\)\].*/\1/p' | tr -d '" ' | tr ',' '\n') + labelsToRemove=$(echo "$OUTPUT" | sed -n 's/.*"labelsToRemove": \[\([^]]*\)\].*/\1/p' | tr -d '" ' | tr ',' '\n') for label in $labelsToAdd; do echo "Label to add: $label" From 4a1e0aba7a1b3e647cdbae6237bfe0c91c042f41 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 13 Dec 2024 00:25:20 +0800 Subject: [PATCH 148/190] test add label --- .github/workflows/SDK-Suppressions-Label.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index c1210fccd801..761678c4fc8c 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -74,8 +74,8 @@ jobs: echo "Script has-output: $has_output" echo "::set-output name=has-output::$has_output" - labelsToAdd=$(echo "$OUTPUT" | sed -n 's/.*"labelsToAdd": \[\([^]]*\)\].*/\1/p' | tr -d '" ' | tr ',' '\n') - labelsToRemove=$(echo "$OUTPUT" | sed -n 's/.*"labelsToRemove": \[\([^]]*\)\].*/\1/p' | tr -d '" ' | tr ',' '\n') + labelsToAdd=$(echo "$OUTPUT" | sed -n 's/.*"labelsToAdd":\[\([^]]*\)\].*/\1/p' | tr -d '" ') + labelsToRemove=$(echo "$OUTPUT" | sed -n 's/.*"labelsToRemove":\[\([^]]*\)\].*/\1/p' | tr -d '" ') for label in $labelsToAdd; do echo "Label to add: $label" From 87ba0f95f7a57b76ae52664dc3fa9db16af682c0 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 13 Dec 2024 00:29:13 +0800 Subject: [PATCH 149/190] test add label --- .github/workflows/SDK-Suppressions-Label.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 761678c4fc8c..1e69933ede8d 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -77,13 +77,13 @@ jobs: labelsToAdd=$(echo "$OUTPUT" | sed -n 's/.*"labelsToAdd":\[\([^]]*\)\].*/\1/p' | tr -d '" ') labelsToRemove=$(echo "$OUTPUT" | sed -n 's/.*"labelsToRemove":\[\([^]]*\)\].*/\1/p' | tr -d '" ') - for label in $labelsToAdd; do + for label in $(echo $labelsToAdd | tr ',' '\n'); do echo "Label to add: $label" echo "::set-output name=has-$label::true" echo "::set-output name=$label::true" done - for label in $labelsToRemove; do + for label in $(echo $labelsToRemove | tr ',' '\n'); do echo "Label to remove: $label" echo "::set-output name=has-$label::true" echo "::set-output name=$label::false" From 04466862d73e5dc73b15554e481881972bb72d2b Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 13 Dec 2024 00:36:38 +0800 Subject: [PATCH 150/190] test add label --- .../sdk-suppressions/src/updateSdkSuppressionsLabel.ts | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index 1472c91f10b5..d92268798cc0 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -239,14 +239,9 @@ export async function updateSdkSuppressionsLabels( labelsToRemove: removeSdkSuppressionsLabels, }; writeFileSync(outputFile, JSON.stringify({ - labelsToAdd: ['aaa', 'bbb'], - labelsToRemove: ['bbbb'], + labelsToAdd: [], + labelsToRemove: ['aaa', 'bbb'], })); - // const willSaveOutput = [ - // ...result.labelsToAdd.map((label) => `label-${label}=true`), - // ...result.labelsToRemove.map((label) => `label-${label}=false`), - // ]; - // writeFileSync(outputFile, JSON.stringify(willSaveOutput)); console.log("JSON output saved to output.json"); return result; From 57cba713120330ba3b13a175feb6d35541a55b5c Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 13 Dec 2024 00:44:53 +0800 Subject: [PATCH 151/190] remove test and unused code --- .../add-multi-labels-artifact/action.js | 39 - .../add-multi-labels-artifact/action.yaml | 18 - .github/package-lock.json | 1789 +----------- .github/package.json | 7 +- .github/workflows/SDK-Suppressions-Label.yaml | 30 - package-lock.json | 2463 ++++------------- package.json | 1 - 7 files changed, 579 insertions(+), 3768 deletions(-) delete mode 100644 .github/actions/add-multi-labels-artifact/action.js delete mode 100644 .github/actions/add-multi-labels-artifact/action.yaml diff --git a/.github/actions/add-multi-labels-artifact/action.js b/.github/actions/add-multi-labels-artifact/action.js deleted file mode 100644 index 6d3ba65fab43..000000000000 --- a/.github/actions/add-multi-labels-artifact/action.js +++ /dev/null @@ -1,39 +0,0 @@ - -/** - * @param {import('github-script').AsyncFunctionArguments} AsyncFunctionArguments - */ -module.exports = async ({ github, context, core }, args) => { - core.info(`actionjs result: ${args.labels}`); - - const { DefaultArtifactClient } = require('@actions/artifact') - const fs = require('fs'); - const path = require('path'); - - /** @type {string[]} */ - const labels = args.labels; - - try { - const artifactClient = new DefaultArtifactClient() - - for (const label of labels) { - const filePath = path.join(__dirname, `empty-${label}.txt`); - - fs.writeFileSync(filePath, `Artifact for label: ${label}`); - - core.info(`Uploading artifact: ${label}`); - const uploadResponse = await artifactClient.uploadArtifact( - label, - [filePath], - __dirname, - { overwrite: true } - ); - - core.info(`Upload complete for ${label}: ${uploadResponse}`); - - fs.unlinkSync(filePath); - } - } catch (error) { - core.error('Error uploading artifact:', error); - core.setFailed(error.message); - } -}; diff --git a/.github/actions/add-multi-labels-artifact/action.yaml b/.github/actions/add-multi-labels-artifact/action.yaml deleted file mode 100644 index 2e27d2b78aa8..000000000000 --- a/.github/actions/add-multi-labels-artifact/action.yaml +++ /dev/null @@ -1,18 +0,0 @@ -name: Upload Multi Artifacts Based on Labels -description: 'Loops over a list of label=value pairs and uploads corresponding artifacts' - -inputs: - labels: - description: 'A list of label=value pairs' - required: true - -runs: - using: 'composite' - steps: - - - name: update multi artifacts - uses: actions/github-script@v7 - with: - script: | - const action = require('./.github/actions/add-multi-labels-artifact/action.js') - await action({ github, context, core }, {labels: ${{ inputs.labels }}}); diff --git a/.github/package-lock.json b/.github/package-lock.json index 85da26c0e518..9bf44423ccfa 100644 --- a/.github/package-lock.json +++ b/.github/package-lock.json @@ -1,12 +1,9 @@ { - "name": ".github", + "name": "scripts", "lockfileVersion": 3, "requires": true, "packages": { "": { - "dependencies": { - "@actions/artifact": "^2.1.11" - }, "devDependencies": { "@octokit/webhooks-types": "^7.5.1", "@types/github-script": "github:actions/github-script", @@ -14,184 +11,11 @@ "prettier": "^3.3.3" } }, - "node_modules/@actions/artifact": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@actions/artifact/-/artifact-2.1.11.tgz", - "integrity": "sha512-V/N/3yM3oLxozq2dpdGqbd/39UbDOR54bF25vYsvn3QZnyZERSzPjTAAwpGzdcwESye9G7vnuhPiKQACEuBQpg==", - "license": "MIT", - "dependencies": { - "@actions/core": "^1.10.0", - "@actions/github": "^5.1.1", - "@actions/http-client": "^2.1.0", - "@azure/storage-blob": "^12.15.0", - "@octokit/core": "^3.5.1", - "@octokit/plugin-request-log": "^1.0.4", - "@octokit/plugin-retry": "^3.0.9", - "@octokit/request-error": "^5.0.0", - "@protobuf-ts/plugin": "^2.2.3-alpha.1", - "archiver": "^7.0.1", - "jwt-decode": "^3.1.2", - "twirp-ts": "^2.5.0", - "unzip-stream": "^0.3.1" - } - }, - "node_modules/@actions/artifact/node_modules/@actions/github": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@actions/github/-/github-5.1.1.tgz", - "integrity": "sha512-Nk59rMDoJaV+mHCOJPXuvB1zIbomlKS0dmSIqPGxd0enAXBnOfn4VWF+CGtRCwXZG9Epa54tZA7VIRlJDS8A6g==", - "license": "MIT", - "dependencies": { - "@actions/http-client": "^2.0.1", - "@octokit/core": "^3.6.0", - "@octokit/plugin-paginate-rest": "^2.17.0", - "@octokit/plugin-rest-endpoint-methods": "^5.13.0" - } - }, - "node_modules/@actions/artifact/node_modules/@octokit/auth-token": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", - "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.0.3" - } - }, - "node_modules/@actions/artifact/node_modules/@octokit/core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", - "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", - "license": "MIT", - "dependencies": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.6.3", - "@octokit/request-error": "^2.0.5", - "@octokit/types": "^6.0.3", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@actions/artifact/node_modules/@octokit/core/node_modules/@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "node_modules/@actions/artifact/node_modules/@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.0.3", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@actions/artifact/node_modules/@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", - "license": "MIT", - "dependencies": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@actions/artifact/node_modules/@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==", - "license": "MIT" - }, - "node_modules/@actions/artifact/node_modules/@octokit/plugin-paginate-rest": { - "version": "2.21.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", - "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.40.0" - }, - "peerDependencies": { - "@octokit/core": ">=2" - } - }, - "node_modules/@actions/artifact/node_modules/@octokit/plugin-request-log": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", - "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", - "license": "MIT", - "peerDependencies": { - "@octokit/core": ">=3" - } - }, - "node_modules/@actions/artifact/node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "5.16.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", - "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.39.0", - "deprecation": "^2.3.1" - }, - "peerDependencies": { - "@octokit/core": ">=3" - } - }, - "node_modules/@actions/artifact/node_modules/@octokit/plugin-retry": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-3.0.9.tgz", - "integrity": "sha512-r+fArdP5+TG6l1Rv/C9hVoty6tldw6cE2pRHNGmFPdyfrc696R6JjrQ3d7HdVqGwuzfyrcaLAKD7K8TX8aehUQ==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.0.3", - "bottleneck": "^2.15.3" - } - }, - "node_modules/@actions/artifact/node_modules/@octokit/request": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", - "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", - "license": "MIT", - "dependencies": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@actions/artifact/node_modules/@octokit/request/node_modules/@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "node_modules/@actions/artifact/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, "node_modules/@actions/core": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.11.1.tgz", "integrity": "sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==", + "dev": true, "license": "MIT", "dependencies": { "@actions/exec": "^1.1.1", @@ -202,6 +26,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz", "integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==", + "dev": true, "license": "MIT", "dependencies": { "@actions/io": "^1.0.1" @@ -235,6 +60,7 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz", "integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==", + "dev": true, "license": "MIT", "dependencies": { "tunnel": "^0.0.6", @@ -245,212 +71,19 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.3.tgz", "integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==", + "dev": true, "license": "MIT" }, - "node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", - "license": "MIT", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-auth": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.9.0.tgz", - "integrity": "sha512-FPwHpZywuyasDSLMqJ6fhbOK3TqUdviZNF8OqRGA4W5Ewib2lEEZ+pBsYcBa88B2NGO/SEnYPGhyBqNlE8ilSw==", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-util": "^1.11.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-client": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.2.tgz", - "integrity": "sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.4.0", - "@azure/core-rest-pipeline": "^1.9.1", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.6.1", - "@azure/logger": "^1.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-http-compat": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/core-http-compat/-/core-http-compat-2.1.2.tgz", - "integrity": "sha512-5MnV1yqzZwgNLLjlizsU3QqOeQChkIXw781Fwh1xdAqJR5AA32IUaq6xv1BICJvfbHoa+JYcaij2HFkhLbNTJQ==", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-client": "^1.3.0", - "@azure/core-rest-pipeline": "^1.3.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-lro": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.7.2.tgz", - "integrity": "sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-util": "^1.2.0", - "@azure/logger": "^1.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-paging": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.6.2.tgz", - "integrity": "sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==", - "license": "MIT", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-rest-pipeline": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.18.1.tgz", - "integrity": "sha512-/wS73UEDrxroUEVywEm7J0p2c+IIiVxyfigCGfsKvCxxCET4V/Hef2aURqltrXMRjNmdmt5IuOgIpl8f6xdO5A==", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.8.0", - "@azure/core-tracing": "^1.0.1", - "@azure/core-util": "^1.11.0", - "@azure/logger": "^1.0.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-tracing": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.2.0.tgz", - "integrity": "sha512-UKTiEJPkWcESPYJz3X5uKRYyOcJD+4nYph+KpfdPRnQJVrZfk0KJgdnaAWKfhsBBtAf/D58Az4AvCJEmWgIBAg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-util": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.11.0.tgz", - "integrity": "sha512-DxOSLua+NdpWoSqULhjDyAZTXFdP/LKkqtYuxxz1SCN289zk3OG8UOpnCQAz/tygyACBtWp/BoO72ptK7msY8g==", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-xml": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/@azure/core-xml/-/core-xml-1.4.4.tgz", - "integrity": "sha512-J4FYAqakGXcbfeZjwjMzjNcpcH4E+JtEBv+xcV1yL0Ydn/6wbQfeFKTCHh9wttAi0lmajHw7yBbHPRG+YHckZQ==", - "license": "MIT", - "dependencies": { - "fast-xml-parser": "^4.4.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/logger": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.1.4.tgz", - "integrity": "sha512-4IXXzcCdLdlXuCG+8UKEwLA1T1NHqUfanhXYHiQTn+6sfWCZXduqbtXDGceg3Ce5QxTGo7EqmbV6Bi+aqKuClQ==", - "license": "MIT", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/storage-blob": { - "version": "12.26.0", - "resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.26.0.tgz", - "integrity": "sha512-SriLPKezypIsiZ+TtlFfE46uuBIap2HeaQVS78e1P7rz5OSbq0rsd52WE1mC5f7vAeLiXqv7I7oRhL3WFZEw3Q==", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.1.2", - "@azure/core-auth": "^1.4.0", - "@azure/core-client": "^1.6.2", - "@azure/core-http-compat": "^2.0.0", - "@azure/core-lro": "^2.2.0", - "@azure/core-paging": "^1.1.1", - "@azure/core-rest-pipeline": "^1.10.1", - "@azure/core-tracing": "^1.1.2", - "@azure/core-util": "^1.6.1", - "@azure/core-xml": "^1.4.3", - "@azure/logger": "^1.0.0", - "events": "^3.0.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/@fastify/busboy": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "dev": true, "license": "MIT", "engines": { "node": ">=14" } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@octokit/auth-token": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", @@ -513,6 +146,7 @@ "version": "22.2.0", "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz", "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==", + "dev": true, "license": "MIT" }, "node_modules/@octokit/plugin-paginate-rest": { @@ -595,21 +229,38 @@ } }, "node_modules/@octokit/plugin-retry": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-6.1.0.tgz", - "integrity": "sha512-WrO3bvq4E1Xh1r2mT9w6SDFg01gFmP81nIG77+p/MqW1JeXXgL++6umim3t6x0Zj5pZm3rXAN+0HEjmmdhIRig==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-6.0.1.tgz", + "integrity": "sha512-SKs+Tz9oj0g4p28qkZwl/topGcb0k0qPNX/i7vBKmDsjoeqnVfFUquqrE/O9oJY7+oLzdCtkiWSXLpLjvl6uog==", "dev": true, "license": "MIT", "dependencies": { "@octokit/request-error": "^5.0.0", - "@octokit/types": "^13.0.0", + "@octokit/types": "^12.0.0", "bottleneck": "^2.15.3" }, "engines": { "node": ">= 18" }, "peerDependencies": { - "@octokit/core": "5" + "@octokit/core": ">=5" + } + }, + "node_modules/@octokit/plugin-retry/node_modules/@octokit/openapi-types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/plugin-retry/node_modules/@octokit/types": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^20.0.0" } }, "node_modules/@octokit/request": { @@ -632,6 +283,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.0.tgz", "integrity": "sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==", + "dev": true, "license": "MIT", "dependencies": { "@octokit/types": "^13.1.0", @@ -643,9 +295,10 @@ } }, "node_modules/@octokit/types": { - "version": "13.6.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.6.2.tgz", - "integrity": "sha512-WpbZfZUcZU77DrSW4wbsSgTPfKcp286q3ItaIgvSbBpZJlu6mnYXAkjZz6LVZPXkEvLIM8McanyZejKTYUHipA==", + "version": "13.6.1", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.6.1.tgz", + "integrity": "sha512-PHZE9Z+kWXb23Ndik8MKPirBPziOc0D2/3KH1P+6jK5nGWe96kadZuE4jev2/Jq7FvIfTlT2Ltg8Fv2x1v0a5g==", + "dev": true, "license": "MIT", "dependencies": { "@octokit/openapi-types": "^22.2.0" @@ -658,71 +311,10 @@ "dev": true, "license": "MIT" }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@protobuf-ts/plugin": { - "version": "2.9.4", - "resolved": "https://registry.npmjs.org/@protobuf-ts/plugin/-/plugin-2.9.4.tgz", - "integrity": "sha512-Db5Laq5T3mc6ERZvhIhkj1rn57/p8gbWiCKxQWbZBBl20wMuqKoHbRw4tuD7FyXi+IkwTToaNVXymv5CY3E8Rw==", - "license": "Apache-2.0", - "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" - }, - "bin": { - "protoc-gen-dump": "bin/protoc-gen-dump", - "protoc-gen-ts": "bin/protoc-gen-ts" - } - }, - "node_modules/@protobuf-ts/plugin-framework": { - "version": "2.9.4", - "resolved": "https://registry.npmjs.org/@protobuf-ts/plugin-framework/-/plugin-framework-2.9.4.tgz", - "integrity": "sha512-9nuX1kjdMliv+Pes8dQCKyVhjKgNNfwxVHg+tx3fLXSfZZRcUHMc1PMwB9/vTvc6gBKt9QGz5ERqSqZc0++E9A==", - "license": "(Apache-2.0 AND BSD-3-Clause)", - "dependencies": { - "@protobuf-ts/runtime": "^2.9.4", - "typescript": "^3.9" - } - }, - "node_modules/@protobuf-ts/protoc": { - "version": "2.9.4", - "resolved": "https://registry.npmjs.org/@protobuf-ts/protoc/-/protoc-2.9.4.tgz", - "integrity": "sha512-hQX+nOhFtrA+YdAXsXEDrLoGJqXHpgv4+BueYF0S9hy/Jq0VRTVlJS1Etmf4qlMt/WdigEes5LOd/LDzui4GIQ==", - "license": "Apache-2.0", - "bin": { - "protoc": "protoc.js" - } - }, - "node_modules/@protobuf-ts/runtime": { - "version": "2.9.4", - "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime/-/runtime-2.9.4.tgz", - "integrity": "sha512-vHRFWtJJB/SiogWDF0ypoKfRIZ41Kq+G9cEFj6Qm1eQaAhJ1LDFvgZ7Ja4tb3iLOQhz0PaoPnnOijF1qmEqTxg==", - "license": "(Apache-2.0 AND BSD-3-Clause)" - }, - "node_modules/@protobuf-ts/runtime-rpc": { - "version": "2.9.4", - "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime-rpc/-/runtime-rpc-2.9.4.tgz", - "integrity": "sha512-y9L9JgnZxXFqH5vD4d7j9duWvIJ7AShyBRoNKJGhu9Q27qIbchfzli66H9RvrQNIFk5ER7z1Twe059WZGqERcA==", - "license": "Apache-2.0", - "dependencies": { - "@protobuf-ts/runtime": "^2.9.4" - } - }, "node_modules/@types/github-script": { "name": "github-script", "version": "7.0.1", - "resolved": "git+ssh://git@github.com/actions/github-script.git#4020e461acd7a80762cdfff123a1fde368246fa4", + "resolved": "git+ssh://git@github.com/actions/github-script.git#660ec11d825b714d112a6bb9727086bc2cc500b2", "dev": true, "license": "MIT", "dependencies": { @@ -750,704 +342,57 @@ "undici-types": "~6.19.2" } }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/agent-base": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", - "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/archiver": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", - "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", - "license": "MIT", - "dependencies": { - "archiver-utils": "^5.0.2", - "async": "^3.2.4", - "buffer-crc32": "^1.0.0", - "readable-stream": "^4.0.0", - "readdir-glob": "^1.1.2", - "tar-stream": "^3.0.0", - "zip-stream": "^6.0.1" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/archiver-utils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz", - "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", - "license": "MIT", - "dependencies": { - "glob": "^10.0.0", - "graceful-fs": "^4.2.0", - "is-stream": "^2.0.1", - "lazystream": "^1.0.0", - "lodash": "^4.17.15", - "normalize-path": "^3.0.0", - "readable-stream": "^4.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "license": "MIT" - }, - "node_modules/b4a": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", - "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", - "license": "Apache-2.0" - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/bare-events": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz", - "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==", - "license": "Apache-2.0", - "optional": true - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "dev": true, "license": "MIT" }, "node_modules/before-after-hook": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "dev": true, "license": "Apache-2.0" }, - "node_modules/binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", - "license": "MIT", - "dependencies": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - }, - "engines": { - "node": "*" - } - }, "node_modules/bottleneck": { "version": "2.19.5", "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", + "dev": true, "license": "MIT" }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/buffer-crc32": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", - "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", - "engines": { - "node": ">=0.2.0" - } - }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "license": "MIT", - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", - "license": "MIT/X11", - "dependencies": { - "traverse": ">=0.3.0 <0.4" - }, - "engines": { - "node": "*" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/compress-commons": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", - "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", - "license": "MIT", - "dependencies": { - "crc-32": "^1.2.0", - "crc32-stream": "^6.0.0", - "is-stream": "^2.0.1", - "normalize-path": "^3.0.0", - "readable-stream": "^4.0.0" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, "license": "MIT" }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "license": "MIT" - }, - "node_modules/crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "license": "Apache-2.0", - "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/crc32-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", - "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", - "license": "MIT", - "dependencies": { - "crc-32": "^1.2.0", - "readable-stream": "^4.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/deprecation": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "license": "ISC" - }, - "node_modules/dot-object": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/dot-object/-/dot-object-2.1.5.tgz", - "integrity": "sha512-xHF8EP4XH/Ba9fvAF2LDd5O3IITVolerVV6xvkxoM8zlGEiCUrggpAnHyOoKJKCrhvPcGATFAUwIujj7bRG5UA==", - "license": "MIT", - "dependencies": { - "commander": "^6.1.0", - "glob": "^7.1.6" - }, - "bin": { - "dot-object": "bin/dot-object" - } - }, - "node_modules/dot-object/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "license": "MIT" - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "license": "MIT" - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", - "license": "MIT" - }, - "node_modules/fast-xml-parser": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.0.tgz", - "integrity": "sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - }, - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - } - ], - "license": "MIT", - "dependencies": { - "strnum": "^1.0.5" - }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, - "node_modules/foreground-child": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", - "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "license": "ISC" - }, - "node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC" - }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "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.", - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/jwt-decode": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", - "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==", - "license": "MIT" - }, - "node_modules/lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "license": "MIT", - "dependencies": { - "readable-stream": "^2.0.5" - }, - "engines": { - "node": ">= 0.6.3" - } - }, - "node_modules/lazystream/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/lazystream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT" - }, - "node_modules/lazystream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "license": "MIT" - }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, "license": "ISC" }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -1456,146 +401,16 @@ "node": "*" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "license": "MIT", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, "license": "ISC", "dependencies": { "wrappy": "1" } }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "license": "BlueOak-1.0.0" - }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-to-regexp": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", - "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", - "license": "MIT" - }, "node_modules/prettier": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", @@ -1612,372 +427,21 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "license": "MIT" - }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", - "license": "MIT" - }, - "node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/readdir-glob": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", - "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", - "license": "Apache-2.0", - "dependencies": { - "minimatch": "^5.1.0" - } - }, - "node_modules/readdir-glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/readdir-glob/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/streamx": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.21.0.tgz", - "integrity": "sha512-Qz6MsDZXJ6ur9u+b+4xCG18TluU7PGlRfXVAAjNiGsFrBUt/ioyLkxbFaKJygoPs+/kW4VyBj0bSj89Qu0IGyg==", - "license": "MIT", - "dependencies": { - "fast-fifo": "^1.3.2", - "queue-tick": "^1.0.1", - "text-decoder": "^1.1.0" - }, - "optionalDependencies": { - "bare-events": "^2.2.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/strnum": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", - "license": "MIT" - }, - "node_modules/tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", - "license": "MIT", - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, - "node_modules/text-decoder": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.2.tgz", - "integrity": "sha512-/MDslo7ZyWTA2vnk1j7XoDVfXsGk3tp+zFEJHJGm0UjIlQifonVFwlVbQDFh8KJzTBnT8ie115TYqir6bclddA==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.4" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" - }, - "node_modules/traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", - "license": "MIT/X11", - "engines": { - "node": "*" - } - }, - "node_modules/ts-poet": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/ts-poet/-/ts-poet-4.15.0.tgz", - "integrity": "sha512-sLLR8yQBvHzi9d4R1F4pd+AzQxBfzOSSjfxiJxQhkUoH5bL7RsAC6wgvtVUQdGqiCsyS9rT6/8X2FI7ipdir5g==", - "license": "Apache-2.0", - "dependencies": { - "lodash": "^4.17.15", - "prettier": "^2.5.1" - } - }, - "node_modules/ts-poet/node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "license": "MIT", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, "node_modules/tunnel": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.6.11 <=0.7.0 || >=0.7.3" } }, - "node_modules/twirp-ts": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/twirp-ts/-/twirp-ts-2.5.0.tgz", - "integrity": "sha512-JTKIK5Pf/+3qCrmYDFlqcPPUx+ohEWKBaZy8GL8TmvV2VvC0SXVyNYILO39+GCRbqnuP6hBIF+BVr8ZxRz+6fw==", - "license": "MIT", - "dependencies": { - "@protobuf-ts/plugin-framework": "^2.0.7", - "camel-case": "^4.1.2", - "dot-object": "^2.1.4", - "path-to-regexp": "^6.2.0", - "ts-poet": "^4.5.0", - "yaml": "^1.10.2" - }, - "bin": { - "protoc-gen-twirp_ts": "protoc-gen-twirp_ts" - }, - "peerDependencies": { - "@protobuf-ts/plugin": "^2.5.0", - "ts-proto": "^1.81.3" - }, - "peerDependenciesMeta": { - "@protobuf-ts/plugin": { - "optional": true - }, - "ts-proto": { - "optional": true - } - } - }, - "node_modules/typescript": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "node_modules/undici": { "version": "5.28.4", "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", + "dev": true, "license": "MIT", "dependencies": { "@fastify/busboy": "^2.0.0" @@ -1997,174 +461,15 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", + "dev": true, "license": "ISC" }, - "node_modules/unzip-stream": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/unzip-stream/-/unzip-stream-0.3.4.tgz", - "integrity": "sha512-PyofABPVv+d7fL7GOpusx7eRT9YETY2X04PhwbSipdj6bMxVCFJrr+nm0Mxqbf9hUiTin/UsnuFWBXlDZFy0Cw==", - "license": "MIT", - "dependencies": { - "binary": "^0.3.0", - "mkdirp": "^0.5.1" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT" - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, "license": "ISC" - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, - "node_modules/zip-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", - "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", - "license": "MIT", - "dependencies": { - "archiver-utils": "^5.0.0", - "compress-commons": "^6.0.2", - "readable-stream": "^4.0.0" - }, - "engines": { - "node": ">= 14" - } } } } diff --git a/.github/package.json b/.github/package.json index 6e48fbc8df6b..87598b90e726 100644 --- a/.github/package.json +++ b/.github/package.json @@ -1,11 +1,8 @@ { "devDependencies": { - "@octokit/webhooks-types": "^7.5.1", - "@types/github-script": "github:actions/github-script", "@types/node": "^20.0.0", + "@types/github-script": "github:actions/github-script", + "@octokit/webhooks-types": "^7.5.1", "prettier": "^3.3.3" - }, - "dependencies": { - "@actions/artifact": "^2.1.11" } } diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 1e69933ede8d..ca689af58b32 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -17,9 +17,6 @@ jobs: runs-on: ubuntu-latest permissions: contents: read - # outputs: - # process-sdk-suppressions-output: ${{ steps.run-suppressions-script.outputs.suppressions-result-output }} - # has-output: ${{ steps.run-suppressions-script.outputs.has-output }} steps: - name: Checkout code uses: actions/checkout@v4 @@ -88,20 +85,6 @@ jobs: echo "::set-output name=has-$label::true" echo "::set-output name=$label::false" done - - - uses: ./.github/actions/add-label-artifact - name: Upload artifact with results aaa - if: ${{ steps.run-suppressions-script.outputs.has-aaa == 'true' }} - with: - name: "aaa" - value: "${{ steps.run-suppressions-script.outputs.aaa }}" - - - uses: ./.github/actions/add-label-artifact - name: Upload artifact with results bbb - if: ${{ steps.run-suppressions-script.outputs.has-bbb == 'true' }} - with: - name: "bbb" - value: "${{ steps.run-suppressions-script.outputs.bbb }}" - uses: ./.github/actions/add-label-artifact name: Upload artifact with results-go @@ -130,16 +113,3 @@ jobs: with: name: "BreakingChange-Python-Sdk-Suppression" value: "${{ steps.run-suppressions-script.outputs.BreakingChange-Python-Sdk-Suppression }}" - - - - # - name: Use outputs from previous step - # run: | - # echo "Labels to Add: ${{ steps.run-suppressions-script.outputs.labelsToAdd }}" - # echo "Labels to Remove: ${{ steps.run-suppressions-script.outputs.labelsToRemove }}" - - # - name: Upload artifact dependes on labels - # uses: ./.github/actions/add-multi-labels-artifact - # if: ${{ steps.run-suppressions-script.outputs.has-output == 'true' }} - # with: - # labels: ${{ steps.run-suppressions-script.outputs.suppressions-result-output }} diff --git a/package-lock.json b/package-lock.json index b52c3b0dd77d..d03370d1c4cc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,7 +25,6 @@ "@typespec/streams": "0.63.0", "@typespec/versioning": "0.63.0", "azure-rest-api-specs-eng-tools": "file:eng/tools", - "dot-github-file": "file:.github", "oav": "^3.5.1", "prettier": "~3.3.3", "typescript": "~5.6.2" @@ -35,35 +34,6 @@ "npm": ">=9.0.0" } }, - ".github": { - "dev": true, - "dependencies": { - "@actions/artifact": "^2.1.11" - }, - "devDependencies": { - "@octokit/webhooks-types": "^7.5.1", - "@types/github-script": "github:actions/github-script", - "@types/node": "^20.0.0", - "prettier": "^3.3.3" - } - }, - ".github/node_modules/@types/node": { - "version": "20.17.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.10.tgz", - "integrity": "sha512-/jrvh5h6NXhEauFFexRin69nA0uHJ5gwk4iDivp/DeoEua3uwCUto6PC86IpRITBOs4+6i2I56K5x5b6WYGXHA==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.2" - } - }, - ".github/node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "dev": true, - "license": "MIT" - }, "eng/tools": { "name": "azure-rest-api-specs-eng-tools", "dev": true, @@ -78,15 +48,9 @@ } }, "eng/tools/node_modules/@types/node": { -<<<<<<< HEAD "version": "18.19.68", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.68.tgz", "integrity": "sha512-QGtpFH1vB99ZmTa63K4/FU8twThj4fuVSBkGddTp7uIL/cuoLWIUSL2RcOaigBhfR+hg5pgGkBnkoOxrTVBMKw==", -======= - "version": "18.19.67", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.67.tgz", - "integrity": "sha512-wI8uHusga+0ZugNp0Ol/3BqQfEcCCNfojtO6Oou9iVNGPTL6QNSdnUdqq85fRgIorLhLMuPIKpsN98QE9Nh+KQ==", ->>>>>>> c4622c1c04 (fix process env error) "dev": true, "license": "MIT", "dependencies": { @@ -94,9 +58,9 @@ } }, "eng/tools/node_modules/@vitest/coverage-v8": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-2.1.8.tgz", - "integrity": "sha512-2Y7BPlKH18mAZYAW1tYByudlCYrQyl5RGvnnDYJKW5tCiO5qg3KSAy3XAxcxKz900a0ZXxWtKrMuZLe3lKBpJw==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-2.1.4.tgz", + "integrity": "sha512-FPKQuJfR6VTfcNMcGpqInmtJuVXFSCd9HQltYncfR01AzXhLucMEtQ5SinPdZxsT5x/5BK7I5qFJ5/ApGCmyTQ==", "dev": true, "license": "MIT", "dependencies": { @@ -109,7 +73,7 @@ "istanbul-reports": "^3.1.7", "magic-string": "^0.30.12", "magicast": "^0.3.5", - "std-env": "^3.8.0", + "std-env": "^3.7.0", "test-exclude": "^7.0.1", "tinyrainbow": "^1.2.0" }, @@ -117,8 +81,8 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "2.1.8", - "vitest": "2.1.8" + "@vitest/browser": "2.1.4", + "vitest": "2.1.4" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -126,6 +90,60 @@ } } }, + "eng/tools/node_modules/@vitest/mocker": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.4.tgz", + "integrity": "sha512-Ky/O1Lc0QBbutJdW0rqLeFNbuLEyS+mIPiNdlVlp2/yhJ0SbyYqObS5IHdhferJud8MbbwMnexg4jordE5cCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "2.1.4", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.12" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "eng/tools/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "eng/tools/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, "eng/tools/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -181,9 +199,9 @@ "license": "MIT" }, "eng/tools/node_modules/vite": { - "version": "5.4.11", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz", - "integrity": "sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==", + "version": "5.4.10", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.10.tgz", + "integrity": "sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==", "dev": true, "license": "MIT", "dependencies": { @@ -241,31 +259,31 @@ } }, "eng/tools/node_modules/vitest": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.8.tgz", - "integrity": "sha512-1vBKTZskHw/aosXqQUlVWWlGUxSJR8YtiyZDJAFeW2kPAeX6S3Sool0mjspO+kXLuxVWlEDDowBAeqeAQefqLQ==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.4.tgz", + "integrity": "sha512-eDjxbVAJw1UJJCHr5xr/xM86Zx+YxIEXGAR+bmnEID7z9qWfoxpHw0zdobz+TQAFOLT+nEXz3+gx6nUJ7RgmlQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "2.1.8", - "@vitest/mocker": "2.1.8", - "@vitest/pretty-format": "^2.1.8", - "@vitest/runner": "2.1.8", - "@vitest/snapshot": "2.1.8", - "@vitest/spy": "2.1.8", - "@vitest/utils": "2.1.8", + "@vitest/expect": "2.1.4", + "@vitest/mocker": "2.1.4", + "@vitest/pretty-format": "^2.1.4", + "@vitest/runner": "2.1.4", + "@vitest/snapshot": "2.1.4", + "@vitest/spy": "2.1.4", + "@vitest/utils": "2.1.4", "chai": "^5.1.2", "debug": "^4.3.7", "expect-type": "^1.1.0", "magic-string": "^0.30.12", "pathe": "^1.1.2", - "std-env": "^3.8.0", + "std-env": "^3.7.0", "tinybench": "^2.9.0", "tinyexec": "^0.3.1", "tinypool": "^1.0.1", "tinyrainbow": "^1.2.0", "vite": "^5.0.0", - "vite-node": "2.1.8", + "vite-node": "2.1.4", "why-is-node-running": "^2.3.0" }, "bin": { @@ -280,8 +298,8 @@ "peerDependencies": { "@edge-runtime/vm": "*", "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "2.1.8", - "@vitest/ui": "2.1.8", + "@vitest/browser": "2.1.4", + "@vitest/ui": "2.1.4", "happy-dom": "*", "jsdom": "*" }, @@ -308,6 +326,7 @@ }, <<<<<<< HEAD <<<<<<< HEAD +<<<<<<< HEAD ======= >>>>>>> c4622c1c04 (fix process env error) "eng/tools/node_modules/vitest/node_modules/@vitest/mocker": { @@ -335,12 +354,6 @@ "vite": { "optional": true } -<<<<<<< HEAD -======= -======= - } - }, ->>>>>>> c4622c1c04 (fix process env error) "eng/tools/sdk-suppressions": { "name": "@azure-tools/sdk-suppressions", "version": "1.0.0", @@ -359,7 +372,6 @@ }, "engines": { "node": ">= 18.0.0" ->>>>>>> aa0f6a308c (fix npm ci error) } }, "eng/tools/specs-model": { @@ -454,147 +466,6 @@ "node": ">= 18.0.0" } }, - "node_modules/@actions/artifact": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/@actions/artifact/-/artifact-2.1.11.tgz", - "integrity": "sha512-V/N/3yM3oLxozq2dpdGqbd/39UbDOR54bF25vYsvn3QZnyZERSzPjTAAwpGzdcwESye9G7vnuhPiKQACEuBQpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@actions/core": "^1.10.0", - "@actions/github": "^5.1.1", - "@actions/http-client": "^2.1.0", - "@azure/storage-blob": "^12.15.0", - "@octokit/core": "^3.5.1", - "@octokit/plugin-request-log": "^1.0.4", - "@octokit/plugin-retry": "^3.0.9", - "@octokit/request-error": "^5.0.0", - "@protobuf-ts/plugin": "^2.2.3-alpha.1", - "archiver": "^7.0.1", - "jwt-decode": "^3.1.2", - "twirp-ts": "^2.5.0", - "unzip-stream": "^0.3.1" - } - }, - "node_modules/@actions/artifact/node_modules/@octokit/openapi-types": { - "version": "22.2.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz", - "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@actions/artifact/node_modules/@octokit/request-error": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.0.tgz", - "integrity": "sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^13.1.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@actions/artifact/node_modules/@octokit/types": { - "version": "13.6.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.6.2.tgz", - "integrity": "sha512-WpbZfZUcZU77DrSW4wbsSgTPfKcp286q3ItaIgvSbBpZJlu6mnYXAkjZz6LVZPXkEvLIM8McanyZejKTYUHipA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^22.2.0" - } - }, - "node_modules/@actions/core": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.11.1.tgz", - "integrity": "sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@actions/exec": "^1.1.1", - "@actions/http-client": "^2.0.1" - } - }, - "node_modules/@actions/exec": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz", - "integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@actions/io": "^1.0.1" - } - }, - "node_modules/@actions/github": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@actions/github/-/github-5.1.1.tgz", - "integrity": "sha512-Nk59rMDoJaV+mHCOJPXuvB1zIbomlKS0dmSIqPGxd0enAXBnOfn4VWF+CGtRCwXZG9Epa54tZA7VIRlJDS8A6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@actions/http-client": "^2.0.1", - "@octokit/core": "^3.6.0", - "@octokit/plugin-paginate-rest": "^2.17.0", - "@octokit/plugin-rest-endpoint-methods": "^5.13.0" - } - }, - "node_modules/@actions/github/node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "5.16.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", - "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.39.0", - "deprecation": "^2.3.1" - }, - "peerDependencies": { - "@octokit/core": ">=3" - } - }, - "node_modules/@actions/github/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@actions/glob": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@actions/glob/-/glob-0.4.0.tgz", - "integrity": "sha512-+eKIGFhsFa4EBwaf/GMyzCdWrXWymGXfFmZU3FHQvYS8mPcHtTtZONbkcqqUMzw9mJ/pImEBFET1JNifhqGsAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@actions/core": "^1.9.1", - "minimatch": "^3.0.4" - } - }, - "node_modules/@actions/http-client": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz", - "integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tunnel": "^0.0.6", - "undici": "^5.25.4" - } - }, - "node_modules/@actions/io": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.3.tgz", - "integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==", - "dev": true, - "license": "MIT" - }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -662,7 +533,6 @@ "resolved": "https://registry.npmjs.org/@autorest/codemodel/-/codemodel-4.20.0.tgz", "integrity": "sha512-Z2GwVwAGNTcfGUmrWT5LJqZv/WDXKBBpxhZrHu6zco/HrEGrqKQcKx5whlLX/GmAB/KmhcOWYr6aIyWomcoisQ==", "dev": true, - "license": "MIT", "dependencies": { "@azure-tools/codegen": "~2.10.0", "js-yaml": "~4.1.0" @@ -690,7 +560,6 @@ "resolved": "https://registry.npmjs.org/@autorest/extension-base/-/extension-base-3.6.0.tgz", "integrity": "sha512-hE6nmdYu2SA6xlG46lM+/njtz0yNEkhzfkOs7PjrYulnXuBWHo08RdbXHGcecypgNhV2QAQcbV6ar5f1UGX6xQ==", "dev": true, - "license": "MIT", "dependencies": { "@azure-tools/codegen": "~2.10.0", "js-yaml": "~4.1.0", @@ -705,7 +574,6 @@ "resolved": "https://registry.npmjs.org/@autorest/openapi-to-typespec/-/openapi-to-typespec-0.10.4.tgz", "integrity": "sha512-FvT448S4DCmGNgDEdGp9kL8bJE6m9QiLgw1N8YGuEmDCYoliC0RB1NQaFhOt9tTAZ3GGDKpZdqeYw/3l1mVIJA==", "dev": true, - "license": "MIT", "dependencies": { "@autorest/codemodel": "~4.20.0", "@autorest/extension-base": "~3.6.0", @@ -989,7 +857,6 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz", "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==", "dev": true, - "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -1025,7 +892,6 @@ "resolved": "https://registry.npmjs.org/@azure-tools/async-io/-/async-io-3.0.254.tgz", "integrity": "sha512-X1C7XdyCuo50ch9FzKtTvmK18FgDxxf1Bbt3cSoknQqeDaRegHSSCO+zByq2YA4NvUzKXeZ1engh29IDxZXgpQ==", "dev": true, - "license": "MIT", "dependencies": { "@azure-tools/tasks": "~3.0.255", "proper-lockfile": "~2.0.1" @@ -1039,7 +905,6 @@ "resolved": "https://registry.npmjs.org/@azure-tools/codegen/-/codegen-2.10.0.tgz", "integrity": "sha512-gdy0at3BUZAAARgiX9Ye6SNCKhcjLs5FNUewa/KV/dMGcPv7mBvbslt5VO3W8wj0n96ifk970aIFaivjacBxeQ==", "dev": true, - "license": "MIT", "dependencies": { "@azure-tools/async-io": "~3.0.0", "js-yaml": "~4.1.0", @@ -1114,9 +979,9 @@ } }, "node_modules/@azure-tools/rest-api-diff": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/@azure-tools/rest-api-diff/-/rest-api-diff-0.1.7.tgz", - "integrity": "sha512-RJ4JHGpBlFnpQAOHTtyvXz01PPwd0LHXvrujIhl9vvCqcbWMx9GeiSLAxWVWsvw52im26wgSb9oXaMrgt2NFbg==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@azure-tools/rest-api-diff/-/rest-api-diff-0.1.4.tgz", + "integrity": "sha512-zXQ0xRKDzQvJlhJ/k3RZBqzitXYpjOdR3ighNh5ri4c0mu0faH3eGrgmd9Utqc7yxNdYKZ/71zhLACPzDchiRA==", "dev": true, "license": "MIT", "dependencies": { @@ -1159,7 +1024,6 @@ "resolved": "https://registry.npmjs.org/@azure-tools/tasks/-/tasks-3.0.255.tgz", "integrity": "sha512-GjALNLz7kWMEdRVbaN5g0cJHNAr3XVTbP0611Mv2UzMgGL6FOhNZJK+oPHJKLDR8EEDZNnkwPlyi7B+INXUSQA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10.12.0" } @@ -1271,7 +1135,6 @@ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-cli/-/typespec-client-generator-cli-0.14.2.tgz", "integrity": "sha512-tSwCQpBcnsqFdIpMbiookmMFzG/OYggTyG5UPeScPeqpLTA4bkGBbDoZ7reJh/V02J4AW0pul57khwTq9DNbRA==", "dev": true, - "license": "MIT", "dependencies": { "@autorest/core": "^3.10.2", "@autorest/openapi-to-typespec": "0.10.4", @@ -1302,7 +1165,6 @@ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.49.0.tgz", "integrity": "sha512-inFLRIeTU0mQg4PT19O3YwT/4YODLuTgIsXuhKDdG/sEsx8PG8AEFTabtnZJ0w3Lc4xuxKFJrzZ2ZH2iiAAbig==", "dev": true, - "license": "MIT", "dependencies": { "change-case": "~5.4.4", "pluralize": "^8.0.0", @@ -1525,30 +1387,11 @@ "node": ">=18.0.0" } }, - "node_modules/@azure/core-client": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.2.tgz", - "integrity": "sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.4.0", - "@azure/core-rest-pipeline": "^1.9.1", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.6.1", - "@azure/logger": "^1.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/@azure/core-http": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@azure/core-http/-/core-http-3.0.5.tgz", - "integrity": "sha512-T8r2q/c3DxNu6mEJfPuJtptUVqwchxzjj32gKcnMi06rdiVONS9rar7kT9T2Am+XvER7uOzpsP79WsqNbdgdWg==", - "deprecated": "This package is no longer supported. Please refer to https://github.com/Azure/azure-sdk-for-js/blob/490ce4dfc5b98ba290dee3b33a6d0876c5f138e2/sdk/core/README.md", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@azure/core-http/-/core-http-3.0.4.tgz", + "integrity": "sha512-Fok9VVhMdxAFOtqiiAtg74fL0UJkt0z3D+ouUUxcRLzZNBioPRAMJFVxiWoJljYpXsRi4GDQHzQHDc9AiYaIUQ==", + "deprecated": "This package is no longer supported. Please migrate to use @azure/core-rest-pipeline", "dev": true, "license": "MIT", "dependencies": { @@ -1568,22 +1411,7 @@ "xml2js": "^0.5.0" }, "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-http-compat": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/core-http-compat/-/core-http-compat-2.1.2.tgz", - "integrity": "sha512-5MnV1yqzZwgNLLjlizsU3QqOeQChkIXw781Fwh1xdAqJR5AA32IUaq6xv1BICJvfbHoa+JYcaij2HFkhLbNTJQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-client": "^1.3.0", - "@azure/core-rest-pipeline": "^1.3.0" - }, - "engines": { - "node": ">=18.0.0" + "node": ">=14.0.0" } }, "node_modules/@azure/core-http/node_modules/@azure/abort-controller": { @@ -1634,46 +1462,17 @@ } } }, - "node_modules/@azure/core-lro": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.7.2.tgz", - "integrity": "sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-util": "^1.2.0", - "@azure/logger": "^1.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-paging": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.6.2.tgz", - "integrity": "sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/@azure/core-rest-pipeline": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.18.1.tgz", - "integrity": "sha512-/wS73UEDrxroUEVywEm7J0p2c+IIiVxyfigCGfsKvCxxCET4V/Hef2aURqltrXMRjNmdmt5IuOgIpl8f6xdO5A==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.17.0.tgz", + "integrity": "sha512-62Vv8nC+uPId3j86XJ0WI+sBf0jlqTqPUFCBNrGtlaUeQUIXWV/D8GE5A1d+Qx8H7OQojn2WguC8kChD6v0shA==", "dev": true, "license": "MIT", "dependencies": { "@azure/abort-controller": "^2.0.0", "@azure/core-auth": "^1.8.0", "@azure/core-tracing": "^1.0.1", - "@azure/core-util": "^1.11.0", + "@azure/core-util": "^1.9.0", "@azure/logger": "^1.0.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.0", @@ -1710,20 +1509,6 @@ "node": ">=18.0.0" } }, - "node_modules/@azure/core-xml": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/@azure/core-xml/-/core-xml-1.4.4.tgz", - "integrity": "sha512-J4FYAqakGXcbfeZjwjMzjNcpcH4E+JtEBv+xcV1yL0Ydn/6wbQfeFKTCHh9wttAi0lmajHw7yBbHPRG+YHckZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-xml-parser": "^4.4.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/@azure/logger": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.1.4.tgz", @@ -1878,31 +1663,6 @@ "dev": true, "license": "0BSD" }, - "node_modules/@azure/storage-blob": { - "version": "12.26.0", - "resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.26.0.tgz", - "integrity": "sha512-SriLPKezypIsiZ+TtlFfE46uuBIap2HeaQVS78e1P7rz5OSbq0rsd52WE1mC5f7vAeLiXqv7I7oRhL3WFZEw3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.1.2", - "@azure/core-auth": "^1.4.0", - "@azure/core-client": "^1.6.2", - "@azure/core-http-compat": "^2.0.0", - "@azure/core-lro": "^2.2.0", - "@azure/core-paging": "^1.1.1", - "@azure/core-rest-pipeline": "^1.10.1", - "@azure/core-tracing": "^1.1.2", - "@azure/core-util": "^1.6.1", - "@azure/core-xml": "^1.4.3", - "@azure/logger": "^1.0.0", - "events": "^3.0.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/@azure/swagger-validation-common": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/@azure/swagger-validation-common/-/swagger-validation-common-0.0.5.tgz", @@ -1989,13 +1749,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", - "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", + "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.26.3" + "@babel/types": "^7.26.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -2018,9 +1778,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", - "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", "dev": true, "license": "MIT", "dependencies": { @@ -2495,13 +2255,13 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.1.tgz", - "integrity": "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", + "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^2.1.5", + "@eslint/object-schema": "^2.1.4", "debug": "^4.3.1", "minimatch": "^3.1.2" }, @@ -2510,22 +2270,19 @@ } }, "node_modules/@eslint/core": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.1.tgz", - "integrity": "sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz", + "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==", "dev": true, "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/eslintrc": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", - "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", + "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2571,9 +2328,9 @@ "license": "MIT" }, "node_modules/@eslint/js": { - "version": "9.16.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.16.0.tgz", - "integrity": "sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==", + "version": "9.14.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.14.0.tgz", + "integrity": "sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==", "dev": true, "license": "MIT", "engines": { @@ -2581,9 +2338,9 @@ } }, "node_modules/@eslint/object-schema": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.5.tgz", - "integrity": "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -2591,9 +2348,9 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.4.tgz", - "integrity": "sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.2.tgz", + "integrity": "sha512-CXtq5nR4Su+2I47WPOlWud98Y5Lv8Kyxp2ukhgFx/eW6Blm18VXJO5WuQylPugRo8nbluoi6GvvxBLqHcvqUUw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2611,16 +2368,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@fastify/busboy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", - "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - } - }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -2951,251 +2698,25 @@ "node": ">= 8" } }, - "node_modules/@octokit/auth-token": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", - "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.0.3" + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" } }, - "node_modules/@octokit/auth-token/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@octokit/core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", - "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.6.3", - "@octokit/request-error": "^2.0.5", - "@octokit/types": "^6.0.3", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@octokit/core/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.0.3", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@octokit/endpoint/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@octokit/graphql/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@octokit/plugin-paginate-rest": { - "version": "2.21.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", - "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.40.0" - }, - "peerDependencies": { - "@octokit/core": ">=2" - } - }, - "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@octokit/plugin-request-log": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", - "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@octokit/core": ">=3" - } - }, - "node_modules/@octokit/plugin-retry": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-3.0.9.tgz", - "integrity": "sha512-r+fArdP5+TG6l1Rv/C9hVoty6tldw6cE2pRHNGmFPdyfrc696R6JjrQ3d7HdVqGwuzfyrcaLAKD7K8TX8aehUQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.0.3", - "bottleneck": "^2.15.3" - } - }, - "node_modules/@octokit/plugin-retry/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@octokit/request": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", - "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "node_modules/@octokit/request-error/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@octokit/request/node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@octokit/request/node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/@octokit/webhooks-types": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-7.6.1.tgz", - "integrity": "sha512-S8u2cJzklBC0FgTwWVLaM8tMrDuDMVE4xiTK4EYXM9GntyvrdbSoxqDQa+Fh57CCNApyIpyeqPhhFEmHPfrXgw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@opentelemetry/api": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", - "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" + "optional": true, + "engines": { + "node": ">=14" } }, "node_modules/@postman/form-data": { @@ -3252,90 +2773,6 @@ "node": "*" } }, - "node_modules/@protobuf-ts/plugin": { - "version": "2.9.4", - "resolved": "https://registry.npmjs.org/@protobuf-ts/plugin/-/plugin-2.9.4.tgz", - "integrity": "sha512-Db5Laq5T3mc6ERZvhIhkj1rn57/p8gbWiCKxQWbZBBl20wMuqKoHbRw4tuD7FyXi+IkwTToaNVXymv5CY3E8Rw==", - "dev": true, - "license": "Apache-2.0", - "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" - }, - "bin": { - "protoc-gen-dump": "bin/protoc-gen-dump", - "protoc-gen-ts": "bin/protoc-gen-ts" - } - }, - "node_modules/@protobuf-ts/plugin-framework": { - "version": "2.9.4", - "resolved": "https://registry.npmjs.org/@protobuf-ts/plugin-framework/-/plugin-framework-2.9.4.tgz", - "integrity": "sha512-9nuX1kjdMliv+Pes8dQCKyVhjKgNNfwxVHg+tx3fLXSfZZRcUHMc1PMwB9/vTvc6gBKt9QGz5ERqSqZc0++E9A==", - "dev": true, - "license": "(Apache-2.0 AND BSD-3-Clause)", - "dependencies": { - "@protobuf-ts/runtime": "^2.9.4", - "typescript": "^3.9" - } - }, - "node_modules/@protobuf-ts/plugin-framework/node_modules/typescript": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/@protobuf-ts/plugin/node_modules/typescript": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/@protobuf-ts/protoc": { - "version": "2.9.4", - "resolved": "https://registry.npmjs.org/@protobuf-ts/protoc/-/protoc-2.9.4.tgz", - "integrity": "sha512-hQX+nOhFtrA+YdAXsXEDrLoGJqXHpgv4+BueYF0S9hy/Jq0VRTVlJS1Etmf4qlMt/WdigEes5LOd/LDzui4GIQ==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "protoc": "protoc.js" - } - }, - "node_modules/@protobuf-ts/runtime": { - "version": "2.9.4", - "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime/-/runtime-2.9.4.tgz", - "integrity": "sha512-vHRFWtJJB/SiogWDF0ypoKfRIZ41Kq+G9cEFj6Qm1eQaAhJ1LDFvgZ7Ja4tb3iLOQhz0PaoPnnOijF1qmEqTxg==", - "dev": true, - "license": "(Apache-2.0 AND BSD-3-Clause)" - }, - "node_modules/@protobuf-ts/runtime-rpc": { - "version": "2.9.4", - "resolved": "https://registry.npmjs.org/@protobuf-ts/runtime-rpc/-/runtime-rpc-2.9.4.tgz", - "integrity": "sha512-y9L9JgnZxXFqH5vD4d7j9duWvIJ7AShyBRoNKJGhu9Q27qIbchfzli66H9RvrQNIFk5ER7z1Twe059WZGqERcA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@protobuf-ts/runtime": "^2.9.4" - } - }, "node_modules/@readme/better-ajv-errors": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/@readme/better-ajv-errors/-/better-ajv-errors-1.6.0.tgz", @@ -3445,9 +2882,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.28.1.tgz", - "integrity": "sha512-2aZp8AES04KI2dy3Ss6/MDjXbwBzj+i0GqKtWXgw2/Ma6E4jJvujryO6gJAghIRVz7Vwr9Gtl/8na3nDUKpraQ==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.4.tgz", + "integrity": "sha512-jfUJrFct/hTA0XDM5p/htWKoNNTbDLY0KRwEt6pyOA6k2fmk0WVwl65PdUdJZgzGEHWx+49LilkcSaumQRyNQw==", "cpu": [ "arm" ], @@ -3459,9 +2896,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.28.1.tgz", - "integrity": "sha512-EbkK285O+1YMrg57xVA+Dp0tDBRB93/BZKph9XhMjezf6F4TpYjaUSuPt5J0fZXlSag0LmZAsTmdGGqPp4pQFA==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.4.tgz", + "integrity": "sha512-j4nrEO6nHU1nZUuCfRKoCcvh7PIywQPUCBa2UsootTHvTHIoIu2BzueInGJhhvQO/2FTRdNYpf63xsgEqH9IhA==", "cpu": [ "arm64" ], @@ -3473,9 +2910,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.28.1.tgz", - "integrity": "sha512-prduvrMKU6NzMq6nxzQw445zXgaDBbMQvmKSJaxpaZ5R1QDM8w+eGxo6Y/jhT/cLoCvnZI42oEqf9KQNYz1fqQ==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.4.tgz", + "integrity": "sha512-GmU/QgGtBTeraKyldC7cDVVvAJEOr3dFLKneez/n7BvX57UdhOqDsVwzU7UOnYA7AAOt+Xb26lk79PldDHgMIQ==", "cpu": [ "arm64" ], @@ -3487,9 +2924,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.28.1.tgz", - "integrity": "sha512-WsvbOunsUk0wccO/TV4o7IKgloJ942hVFK1CLatwv6TJspcCZb9umQkPdvB7FihmdxgaKR5JyxDjWpCOp4uZlQ==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.4.tgz", + "integrity": "sha512-N6oDBiZCBKlwYcsEPXGDE4g9RoxZLK6vT98M8111cW7VsVJFpNEqvJeIPfsCzbf0XEakPslh72X0gnlMi4Ddgg==", "cpu": [ "x64" ], @@ -3501,9 +2938,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.28.1.tgz", - "integrity": "sha512-HTDPdY1caUcU4qK23FeeGxCdJF64cKkqajU0iBnTVxS8F7H/7BewvYoG+va1KPSL63kQ1PGNyiwKOfReavzvNA==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.24.4.tgz", + "integrity": "sha512-py5oNShCCjCyjWXCZNrRGRpjWsF0ic8f4ieBNra5buQz0O/U6mMXCpC1LvrHuhJsNPgRt36tSYMidGzZiJF6mw==", "cpu": [ "arm64" ], @@ -3515,9 +2952,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.28.1.tgz", - "integrity": "sha512-m/uYasxkUevcFTeRSM9TeLyPe2QDuqtjkeoTpP9SW0XxUWfcYrGDMkO/m2tTw+4NMAF9P2fU3Mw4ahNvo7QmsQ==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.24.4.tgz", + "integrity": "sha512-L7VVVW9FCnTTp4i7KrmHeDsDvjB4++KOBENYtNYAiYl96jeBThFfhP6HVxL74v4SiZEVDH/1ILscR5U9S4ms4g==", "cpu": [ "x64" ], @@ -3529,9 +2966,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.28.1.tgz", - "integrity": "sha512-QAg11ZIt6mcmzpNE6JZBpKfJaKkqTm1A9+y9O+frdZJEuhQxiugM05gnCWiANHj4RmbgeVJpTdmKRmH/a+0QbA==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.4.tgz", + "integrity": "sha512-10ICosOwYChROdQoQo589N5idQIisxjaFE/PAnX2i0Zr84mY0k9zul1ArH0rnJ/fpgiqfu13TFZR5A5YJLOYZA==", "cpu": [ "arm" ], @@ -3543,9 +2980,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.28.1.tgz", - "integrity": "sha512-dRP9PEBfolq1dmMcFqbEPSd9VlRuVWEGSmbxVEfiq2cs2jlZAl0YNxFzAQS2OrQmsLBLAATDMb3Z6MFv5vOcXg==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.4.tgz", + "integrity": "sha512-ySAfWs69LYC7QhRDZNKqNhz2UKN8LDfbKSMAEtoEI0jitwfAG2iZwVqGACJT+kfYvvz3/JgsLlcBP+WWoKCLcw==", "cpu": [ "arm" ], @@ -3557,9 +2994,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.28.1.tgz", - "integrity": "sha512-uGr8khxO+CKT4XU8ZUH1TTEUtlktK6Kgtv0+6bIFSeiSlnGJHG1tSFSjm41uQ9sAO/5ULx9mWOz70jYLyv1QkA==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.4.tgz", + "integrity": "sha512-uHYJ0HNOI6pGEeZ/5mgm5arNVTI0nLlmrbdph+pGXpC9tFHFDQmDMOEqkmUObRfosJqpU8RliYoGz06qSdtcjg==", "cpu": [ "arm64" ], @@ -3571,9 +3008,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.28.1.tgz", - "integrity": "sha512-QF54q8MYGAqMLrX2t7tNpi01nvq5RI59UBNx+3+37zoKX5KViPo/gk2QLhsuqok05sSCRluj0D00LzCwBikb0A==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.4.tgz", + "integrity": "sha512-38yiWLemQf7aLHDgTg85fh3hW9stJ0Muk7+s6tIkSUOMmi4Xbv5pH/5Bofnsb6spIwD5FJiR+jg71f0CH5OzoA==", "cpu": [ "arm64" ], @@ -3584,24 +3021,10 @@ "linux" ] }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.28.1.tgz", - "integrity": "sha512-vPul4uodvWvLhRco2w0GcyZcdyBfpfDRgNKU+p35AWEbJ/HPs1tOUrkSueVbBS0RQHAf/A+nNtDpvw95PeVKOA==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.28.1.tgz", - "integrity": "sha512-pTnTdBuC2+pt1Rmm2SV7JWRqzhYpEILML4PKODqLz+C7Ou2apEV52h19CR7es+u04KlqplggmN9sqZlekg3R1A==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.4.tgz", + "integrity": "sha512-q73XUPnkwt9ZNF2xRS4fvneSuaHw2BXuV5rI4cw0fWYVIWIBeDZX7c7FWhFQPNTnE24172K30I+dViWRVD9TwA==", "cpu": [ "ppc64" ], @@ -3613,9 +3036,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.28.1.tgz", - "integrity": "sha512-vWXy1Nfg7TPBSuAncfInmAI/WZDd5vOklyLJDdIRKABcZWojNDY0NJwruY2AcnCLnRJKSaBgf/GiJfauu8cQZA==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.4.tgz", + "integrity": "sha512-Aie/TbmQi6UXokJqDZdmTJuZBCU3QBDA8oTKRGtd4ABi/nHgXICulfg1KI6n9/koDsiDbvHAiQO3YAUNa/7BCw==", "cpu": [ "riscv64" ], @@ -3627,9 +3050,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.28.1.tgz", - "integrity": "sha512-/yqC2Y53oZjb0yz8PVuGOQQNOTwxcizudunl/tFs1aLvObTclTwZ0JhXF2XcPT/zuaymemCDSuuUPXJJyqeDOg==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.4.tgz", + "integrity": "sha512-P8MPErVO/y8ohWSP9JY7lLQ8+YMHfTI4bAdtCi3pC2hTeqFJco2jYspzOzTUB8hwUWIIu1xwOrJE11nP+0JFAQ==", "cpu": [ "s390x" ], @@ -3641,9 +3064,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.28.1.tgz", - "integrity": "sha512-fzgeABz7rrAlKYB0y2kSEiURrI0691CSL0+KXwKwhxvj92VULEDQLpBYLHpF49MSiPG4sq5CK3qHMnb9tlCjBw==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.4.tgz", + "integrity": "sha512-K03TljaaoPK5FOyNMZAAEmhlyO49LaE4qCsr0lYHUKyb6QacTNF9pnfPpXnFlFD3TXuFbFbz7tJ51FujUXkXYA==", "cpu": [ "x64" ], @@ -3655,9 +3078,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.28.1.tgz", - "integrity": "sha512-xQTDVzSGiMlSshpJCtudbWyRfLaNiVPXt1WgdWTwWz9n0U12cI2ZVtWe/Jgwyv/6wjL7b66uu61Vg0POWVfz4g==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.4.tgz", + "integrity": "sha512-VJYl4xSl/wqG2D5xTYncVWW+26ICV4wubwN9Gs5NrqhJtayikwCXzPL8GDsLnaLU3WwhQ8W02IinYSFJfyo34Q==", "cpu": [ "x64" ], @@ -3669,9 +3092,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.28.1.tgz", - "integrity": "sha512-wSXmDRVupJstFP7elGMgv+2HqXelQhuNf+IS4V+nUpNVi/GUiBgDmfwD0UGN3pcAnWsgKG3I52wMOBnk1VHr/A==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.4.tgz", + "integrity": "sha512-ku2GvtPwQfCqoPFIJCqZ8o7bJcj+Y54cZSr43hHca6jLwAiCbZdBUOrqE6y29QFajNAzzpIOwsckaTFmN6/8TA==", "cpu": [ "arm64" ], @@ -3683,9 +3106,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.28.1.tgz", - "integrity": "sha512-ZkyTJ/9vkgrE/Rk9vhMXhf8l9D+eAhbAVbsGsXKy2ohmJaWg0LPQLnIxRdRp/bKyr8tXuPlXhIoGlEB5XpJnGA==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.4.tgz", + "integrity": "sha512-V3nCe+eTt/W6UYNr/wGvO1fLpHUrnlirlypZfKCT1fG6hWfqhPgQV/K/mRBXBpxc0eKLIF18pIOFVPh0mqHjlg==", "cpu": [ "ia32" ], @@ -3697,9 +3120,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.28.1.tgz", - "integrity": "sha512-ZvK2jBafvttJjoIdKm/Q/Bh7IJ1Ose9IBOwpOXcOvW3ikGTQGmKDgxTC6oCAzW6PynbkKP8+um1du81XJHZ0JA==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.4.tgz", + "integrity": "sha512-LTw1Dfd0mBIEqUVCxbvTE/LLo+9ZxVC9k99v1v4ahg9Aak6FpqOfNu5kRkeTAn0wphoC4JU7No1/rL+bBCEwhg==", "cpu": [ "x64" ], @@ -4026,260 +3449,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/github-script": { - "name": "github-script", - "version": "7.0.1", - "resolved": "git+ssh://git@github.com/actions/github-script.git#4020e461acd7a80762cdfff123a1fde368246fa4", - "dev": true, - "license": "MIT", - "dependencies": { - "@actions/core": "^1.10.1", - "@actions/exec": "^1.1.1", - "@actions/github": "^6.0.0", - "@actions/glob": "^0.4.0", - "@actions/io": "^1.1.3", - "@octokit/core": "^5.0.1", - "@octokit/plugin-request-log": "^4.0.0", - "@octokit/plugin-retry": "^6.0.1", - "@types/node": "^20.9.0" - }, - "engines": { - "node": ">=20.0.0 <21.0.0" - } - }, - "node_modules/@types/github-script/node_modules/@actions/github": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@actions/github/-/github-6.0.0.tgz", - "integrity": "sha512-alScpSVnYmjNEXboZjarjukQEzgCRmjMv6Xj47fsdnqGS73bjJNDpiiXmp8jr0UZLdUB6d9jW63IcmddUP+l0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@actions/http-client": "^2.2.0", - "@octokit/core": "^5.0.1", - "@octokit/plugin-paginate-rest": "^9.0.0", - "@octokit/plugin-rest-endpoint-methods": "^10.0.0" - } - }, - "node_modules/@types/github-script/node_modules/@octokit/auth-token": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", - "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 18" - } - }, - "node_modules/@types/github-script/node_modules/@octokit/core": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz", - "integrity": "sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/auth-token": "^4.0.0", - "@octokit/graphql": "^7.1.0", - "@octokit/request": "^8.3.1", - "@octokit/request-error": "^5.1.0", - "@octokit/types": "^13.0.0", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@types/github-script/node_modules/@octokit/endpoint": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.5.tgz", - "integrity": "sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^13.1.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@types/github-script/node_modules/@octokit/graphql": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.0.tgz", - "integrity": "sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/request": "^8.3.0", - "@octokit/types": "^13.0.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@types/github-script/node_modules/@octokit/openapi-types": { - "version": "22.2.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz", - "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/github-script/node_modules/@octokit/plugin-paginate-rest": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.1.tgz", - "integrity": "sha512-wfGhE/TAkXZRLjksFXuDZdmGnJQHvtU/joFQdweXUgzo1XwvBCD4o4+75NtFfjfLK5IwLf9vHTfSiU3sLRYpRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^12.6.0" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@octokit/core": "5" - } - }, - "node_modules/@types/github-script/node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", - "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/github-script/node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { - "version": "12.6.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", - "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^20.0.0" - } - }, - "node_modules/@types/github-script/node_modules/@octokit/plugin-request-log": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-4.0.1.tgz", - "integrity": "sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@octokit/core": "5" - } - }, - "node_modules/@types/github-script/node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.4.1.tgz", - "integrity": "sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^12.6.0" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@octokit/core": "5" - } - }, - "node_modules/@types/github-script/node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", - "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/github-script/node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": { - "version": "12.6.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", - "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^20.0.0" - } - }, - "node_modules/@types/github-script/node_modules/@octokit/plugin-retry": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-6.1.0.tgz", - "integrity": "sha512-WrO3bvq4E1Xh1r2mT9w6SDFg01gFmP81nIG77+p/MqW1JeXXgL++6umim3t6x0Zj5pZm3rXAN+0HEjmmdhIRig==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/request-error": "^5.0.0", - "@octokit/types": "^13.0.0", - "bottleneck": "^2.15.3" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@octokit/core": "5" - } - }, - "node_modules/@types/github-script/node_modules/@octokit/request": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.0.tgz", - "integrity": "sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/endpoint": "^9.0.1", - "@octokit/request-error": "^5.1.0", - "@octokit/types": "^13.1.0", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@types/github-script/node_modules/@octokit/request-error": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.0.tgz", - "integrity": "sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/types": "^13.1.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@types/github-script/node_modules/@octokit/types": { - "version": "13.6.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.6.2.tgz", - "integrity": "sha512-WpbZfZUcZU77DrSW4wbsSgTPfKcp286q3ItaIgvSbBpZJlu6mnYXAkjZz6LVZPXkEvLIM8McanyZejKTYUHipA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^22.2.0" - } - }, - "node_modules/@types/github-script/node_modules/@types/node": { - "version": "20.17.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.10.tgz", - "integrity": "sha512-/jrvh5h6NXhEauFFexRin69nA0uHJ5gwk4iDivp/DeoEua3uwCUto6PC86IpRITBOs4+6i2I56K5x5b6WYGXHA==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "node_modules/@types/github-script/node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/js-yaml": { "version": "3.12.10", "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.10.tgz", @@ -4309,9 +3478,9 @@ "license": "MIT" }, "node_modules/@types/node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==", + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", "dev": true, "license": "MIT", "dependencies": { @@ -4368,6 +3537,7 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { +<<<<<<< HEAD <<<<<<< HEAD "version": "8.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.18.0.tgz", @@ -4377,10 +3547,16 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.17.0.tgz", "integrity": "sha512-HU1KAdW3Tt8zQkdvNoIijfWDMvdSweFYm4hWh+KwhPstv+sCmWb89hCIP8msFm9N1R/ooh9honpSuvqKWlYy3w==", >>>>>>> c4622c1c04 (fix process env error) +======= + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.13.0.tgz", + "integrity": "sha512-nQtBLiZYMUPkclSeC3id+x4uVd1SGtHuElTxL++SfP47jR0zfkZBJHc+gL4qPsgTuypz0k8Y2GheaDYn6Gy3rg==", +>>>>>>> 0462109c0d (remove test and unused code) "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", +<<<<<<< HEAD <<<<<<< HEAD "@typescript-eslint/scope-manager": "8.18.0", "@typescript-eslint/type-utils": "8.18.0", @@ -4392,6 +3568,12 @@ "@typescript-eslint/utils": "8.17.0", "@typescript-eslint/visitor-keys": "8.17.0", >>>>>>> c4622c1c04 (fix process env error) +======= + "@typescript-eslint/scope-manager": "8.13.0", + "@typescript-eslint/type-utils": "8.13.0", + "@typescript-eslint/utils": "8.13.0", + "@typescript-eslint/visitor-keys": "8.13.0", +>>>>>>> 0462109c0d (remove test and unused code) "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -4411,6 +3593,7 @@ } }, "node_modules/@typescript-eslint/parser": { +<<<<<<< HEAD <<<<<<< HEAD "version": "8.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.18.0.tgz", @@ -4420,9 +3603,15 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.17.0.tgz", "integrity": "sha512-Drp39TXuUlD49F7ilHHCG7TTg8IkA+hxCuULdmzWYICxGXvDXmDmWEjJYZQYgf6l/TFfYNE167m7isnc3xlIEg==", >>>>>>> c4622c1c04 (fix process env error) +======= + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.13.0.tgz", + "integrity": "sha512-w0xp+xGg8u/nONcGw1UXAr6cjCPU1w0XVyBs6Zqaj5eLmxkKQAByTdV/uGgNN5tVvN/kKpoQlP2cL7R+ajZZIQ==", +>>>>>>> 0462109c0d (remove test and unused code) "dev": true, "license": "MITClause", "dependencies": { +<<<<<<< HEAD <<<<<<< HEAD "@typescript-eslint/scope-manager": "8.18.0", "@typescript-eslint/types": "8.18.0", @@ -4434,6 +3623,12 @@ "@typescript-eslint/typescript-estree": "8.17.0", "@typescript-eslint/visitor-keys": "8.17.0", >>>>>>> c4622c1c04 (fix process env error) +======= + "@typescript-eslint/scope-manager": "8.13.0", + "@typescript-eslint/types": "8.13.0", + "@typescript-eslint/typescript-estree": "8.13.0", + "@typescript-eslint/visitor-keys": "8.13.0", +>>>>>>> 0462109c0d (remove test and unused code) "debug": "^4.3.4" }, "engines": { @@ -4449,6 +3644,7 @@ } }, "node_modules/@typescript-eslint/scope-manager": { +<<<<<<< HEAD <<<<<<< HEAD "version": "8.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.18.0.tgz", @@ -4468,6 +3664,16 @@ "@typescript-eslint/types": "8.17.0", "@typescript-eslint/visitor-keys": "8.17.0" >>>>>>> c4622c1c04 (fix process env error) +======= + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.13.0.tgz", + "integrity": "sha512-XsGWww0odcUT0gJoBZ1DeulY1+jkaHUciUq4jKNv4cpInbvvrtDoyBH9rE/n2V29wQJPk8iCH1wipra9BhmiMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.13.0", + "@typescript-eslint/visitor-keys": "8.13.0" +>>>>>>> 0462109c0d (remove test and unused code) }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4478,6 +3684,7 @@ } }, "node_modules/@typescript-eslint/type-utils": { +<<<<<<< HEAD <<<<<<< HEAD "version": "8.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.18.0.tgz", @@ -4497,6 +3704,16 @@ "@typescript-eslint/typescript-estree": "8.17.0", "@typescript-eslint/utils": "8.17.0", >>>>>>> c4622c1c04 (fix process env error) +======= + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.13.0.tgz", + "integrity": "sha512-Rqnn6xXTR316fP4D2pohZenJnp+NwQ1mo7/JM+J1LWZENSLkJI8ID8QNtlvFeb0HnFSK94D6q0cnMX6SbE5/vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.13.0", + "@typescript-eslint/utils": "8.13.0", +>>>>>>> 0462109c0d (remove test and unused code) "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -4507,6 +3724,7 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, +<<<<<<< HEAD "peerDependencies": { <<<<<<< HEAD "eslint": "^8.57.0 || ^9.0.0", @@ -4520,6 +3738,8 @@ ======= "eslint": "^8.57.0 || ^9.0.0" }, +======= +>>>>>>> 0462109c0d (remove test and unused code) "peerDependenciesMeta": { "typescript": { "optional": true @@ -4527,10 +3747,16 @@ } }, "node_modules/@typescript-eslint/types": { +<<<<<<< HEAD "version": "8.17.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.17.0.tgz", "integrity": "sha512-gY2TVzeve3z6crqh2Ic7Cr+CAv6pfb0Egee7J5UAVWCpVvDI/F71wNfolIim4FE6hT15EbpZFVUj9j5i38jYXA==", >>>>>>> c4622c1c04 (fix process env error) +======= + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.13.0.tgz", + "integrity": "sha512-4cyFErJetFLckcThRUFdReWJjVsPCqyBlJTi6IDEpc1GWCIIZRFxVppjWLIMcQhNGhdWJJRYFHpHoDWvMlDzng==", +>>>>>>> 0462109c0d (remove test and unused code) "dev": true, "license": "MIT", "engines": { @@ -4542,6 +3768,7 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { +<<<<<<< HEAD <<<<<<< HEAD "version": "8.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.0.tgz", @@ -4551,9 +3778,15 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.17.0.tgz", "integrity": "sha512-JqkOopc1nRKZpX+opvKqnM3XUlM7LpFMD0lYxTqOTKQfCWAmxw45e3qlOCsEqEB2yuacujivudOFpCnqkBDNMw==", >>>>>>> c4622c1c04 (fix process env error) +======= + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.13.0.tgz", + "integrity": "sha512-v7SCIGmVsRK2Cy/LTLGN22uea6SaUIlpBcO/gnMGT/7zPtxp90bphcGf4fyrCQl3ZtiBKqVTG32hb668oIYy1g==", +>>>>>>> 0462109c0d (remove test and unused code) "dev": true, "license": "MIT", "dependencies": { +<<<<<<< HEAD <<<<<<< HEAD "@typescript-eslint/types": "8.18.0", "@typescript-eslint/visitor-keys": "8.18.0", @@ -4561,6 +3794,10 @@ "@typescript-eslint/types": "8.17.0", "@typescript-eslint/visitor-keys": "8.17.0", >>>>>>> c4622c1c04 (fix process env error) +======= + "@typescript-eslint/types": "8.13.0", + "@typescript-eslint/visitor-keys": "8.13.0", +>>>>>>> 0462109c0d (remove test and unused code) "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -4606,6 +3843,7 @@ } }, "node_modules/@typescript-eslint/utils": { +<<<<<<< HEAD <<<<<<< HEAD "version": "8.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.18.0.tgz", @@ -4615,10 +3853,16 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.17.0.tgz", "integrity": "sha512-bQC8BnEkxqG8HBGKwG9wXlZqg37RKSMY7v/X8VEWD8JG2JuTHuNK0VFvMPMUKQcbk6B+tf05k+4AShAEtCtJ/w==", >>>>>>> c4622c1c04 (fix process env error) +======= + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.13.0.tgz", + "integrity": "sha512-A1EeYOND6Uv250nybnLZapeXpYMl8tkzYUxqmoKAWnI4sei3ihf2XdZVd+vVOmHGcp3t+P7yRrNsyyiXTvShFQ==", +>>>>>>> 0462109c0d (remove test and unused code) "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", +<<<<<<< HEAD <<<<<<< HEAD "@typescript-eslint/scope-manager": "8.18.0", "@typescript-eslint/types": "8.18.0", @@ -4628,6 +3872,11 @@ "@typescript-eslint/types": "8.17.0", "@typescript-eslint/typescript-estree": "8.17.0" >>>>>>> c4622c1c04 (fix process env error) +======= + "@typescript-eslint/scope-manager": "8.13.0", + "@typescript-eslint/types": "8.13.0", + "@typescript-eslint/typescript-estree": "8.13.0" +>>>>>>> 0462109c0d (remove test and unused code) }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4652,23 +3901,23 @@ "@typescript-eslint/types": "8.18.0", ======= "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.17.0.tgz", - "integrity": "sha512-1Hm7THLpO6ww5QU6H/Qp+AusUUl+z/CAm3cNZZ0jQvon9yicgO7Rwd+/WWRpMKLYV6p2UvdbR27c86rzCPpreg==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.13.0.tgz", + "integrity": "sha512-7N/+lztJqH4Mrf0lb10R/CbI1EaAMMGyF5y0oJvFoAhafwgiRA7TXyd8TFn8FC8k5y2dTsYogg238qavRGNnlw==", "dev": true, "license": "MIT", "dependencies": { +<<<<<<< HEAD "@typescript-eslint/types": "8.17.0", >>>>>>> c4622c1c04 (fix process env error) "eslint-visitor-keys": "^4.2.0" +======= + "@typescript-eslint/types": "8.13.0", + "eslint-visitor-keys": "^3.4.3" +>>>>>>> 0462109c0d (remove test and unused code) }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4678,6 +3927,19 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@typespec/compiler": { "version": "0.63.0", "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-0.63.0.tgz", @@ -4847,14 +4109,14 @@ } }, "node_modules/@vitest/expect": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.8.tgz", - "integrity": "sha512-8ytZ/fFHq2g4PJVAtDX57mayemKgDR6X3Oa2Foro+EygiOJHUXhCqBAAKQYYajZpFoIfvBCF1j6R6IYRSIUFuw==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.4.tgz", + "integrity": "sha512-DOETT0Oh1avie/D/o2sgMHGrzYUFFo3zqESB2Hn70z6QB1HrS2IQ9z5DfyTqU8sg4Bpu13zZe9V4+UTNQlUeQA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "2.1.8", - "@vitest/utils": "2.1.8", + "@vitest/spy": "2.1.4", + "@vitest/utils": "2.1.4", "chai": "^5.1.2", "tinyrainbow": "^1.2.0" }, @@ -4863,9 +4125,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.8.tgz", - "integrity": "sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.4.tgz", + "integrity": "sha512-L95zIAkEuTDbUX1IsjRl+vyBSLh3PwLLgKpghl37aCK9Jvw0iP+wKwIFhfjdUtA2myLgjrG6VU6JCFLv8q/3Ww==", "dev": true, "license": "MIT", "dependencies": { @@ -4876,13 +4138,13 @@ } }, "node_modules/@vitest/runner": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.8.tgz", - "integrity": "sha512-17ub8vQstRnRlIU5k50bG+QOMLHRhYPAna5tw8tYbj+jzjcspnwnwtPtiOlkuKC4+ixDPTuLZiqiWWQ2PSXHVg==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.4.tgz", + "integrity": "sha512-sKRautINI9XICAMl2bjxQM8VfCMTB0EbsBc/EDFA57V6UQevEKY/TOPOF5nzcvCALltiLfXWbq4MaAwWx/YxIA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "2.1.8", + "@vitest/utils": "2.1.4", "pathe": "^1.1.2" }, "funding": { @@ -4890,13 +4152,13 @@ } }, "node_modules/@vitest/snapshot": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.8.tgz", - "integrity": "sha512-20T7xRFbmnkfcmgVEz+z3AU/3b0cEzZOt/zmnvZEctg64/QZbSDJEVm9fLnnlSi74KibmRsO9/Qabi+t0vCRPg==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.4.tgz", + "integrity": "sha512-3Kab14fn/5QZRog5BPj6Rs8dc4B+mim27XaKWFWHWA87R56AKjHTGcBFKpvZKDzC4u5Wd0w/qKsUIio3KzWW4Q==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.1.8", + "@vitest/pretty-format": "2.1.4", "magic-string": "^0.30.12", "pathe": "^1.1.2" }, @@ -4905,9 +4167,9 @@ } }, "node_modules/@vitest/spy": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.8.tgz", - "integrity": "sha512-5swjf2q95gXeYPevtW0BLk6H8+bPlMb4Vw/9Em4hFxDcaOxS+e0LOX4yqNxoHzMR2akEB2xfpnWUzkZokmgWDg==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.4.tgz", + "integrity": "sha512-4JOxa+UAizJgpZfaCPKK2smq9d8mmjZVPMt2kOsg/R8QkoRzydHH1qHxIYNvr1zlEaFj4SXiaaJWxq/LPLKaLg==", "dev": true, "license": "MIT", "dependencies": { @@ -4918,13 +4180,13 @@ } }, "node_modules/@vitest/utils": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.8.tgz", - "integrity": "sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.4.tgz", + "integrity": "sha512-MXDnZn0Awl2S86PSNIim5PWXgIAx8CIkzu35mBdSApUip6RFOGXBCf3YFyeEu8n1IHk4bWD46DeYFu9mQlFIRg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.1.8", + "@vitest/pretty-format": "2.1.4", "loupe": "^3.1.2", "tinyrainbow": "^1.2.0" }, @@ -4995,199 +4257,80 @@ "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-draft-04": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", - "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^8.5.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ansi-styles/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/ansi-styles/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/archiver": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", - "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "archiver-utils": "^5.0.2", - "async": "^3.2.4", - "buffer-crc32": "^1.0.0", - "readable-stream": "^4.0.0", - "readdir-glob": "^1.1.2", - "tar-stream": "^3.0.0", - "zip-stream": "^6.0.1" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/archiver-utils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz", - "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob": "^10.0.0", - "graceful-fs": "^4.2.0", - "is-stream": "^2.0.1", - "lazystream": "^1.0.0", - "lodash": "^4.17.15", - "normalize-path": "^3.0.0", - "readable-stream": "^4.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/archiver-utils/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/archiver-utils/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/archiver-utils/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "node_modules/ajv-draft-04": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", + "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" + "license": "MIT", + "peerDependencies": { + "ajv": "^8.5.0" }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=6" } }, - "node_modules/archiver-utils/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" + "color-convert": "^2.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/archiver/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "node_modules/ansi-styles/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" + "color-name": "~1.1.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=7.0.0" } }, + "node_modules/ansi-styles/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -5291,13 +4434,6 @@ "resolved": "eng/tools", "link": true }, - "node_modules/b4a": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", - "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", - "dev": true, - "license": "Apache-2.0" - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -5305,14 +4441,6 @@ "dev": true, "license": "MIT" }, - "node_modules/bare-events": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz", - "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==", - "dev": true, - "license": "Apache-2.0", - "optional": true - }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -5344,27 +4472,6 @@ "tweetnacl": "^0.14.3" } }, - "node_modules/before-after-hook": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", - "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - }, - "engines": { - "node": "*" - } - }, "node_modules/bluebird": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", @@ -5372,13 +4479,6 @@ "dev": true, "license": "MIT" }, - "node_modules/bottleneck": { - "version": "2.19.5", - "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", - "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", - "dev": true, - "license": "MIT" - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -5471,25 +4571,6 @@ "ieee754": "^1.2.1" } }, - "node_modules/buffer-crc32": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", - "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", - "dev": true, - "engines": { - "node": ">=0.2.0" - } - }, "node_modules/builtin-modules": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", @@ -5530,17 +4611,6 @@ "node": ">=6" } }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, "node_modules/camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", @@ -5552,9 +4622,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001687", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001687.tgz", - "integrity": "sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ==", + "version": "1.0.30001678", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001678.tgz", + "integrity": "sha512-RR+4U/05gNtps58PEBDZcPWTgEO2MBeoPZ96aQcjmfkBWRIDfN451fW2qyDA9/+HohLLIL5GqiMwA+IB1pWarw==", "dev": true, "funding": [ { @@ -5596,19 +4666,6 @@ "node": ">=12" } }, - "node_modules/chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", - "dev": true, - "license": "MIT/X11", - "dependencies": { - "traverse": ">=0.3.0 <0.4" - }, - "engines": { - "node": "*" - } - }, "node_modules/chalk": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", @@ -5634,7 +4691,6 @@ "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-2.1.0.tgz", "integrity": "sha512-v6b0WWWkZUMHVuYk82l+WROgkUm4qEN2w5hKRNWtEOYwWqUGoi8C6xH0l1RLF1EoWqDFK6MFclmN3od6ws3/uw==", "dev": true, - "license": "MIT", "dependencies": { "change-case": "^5.2.0", "sponge-case": "^2.0.2", @@ -5670,9 +4726,9 @@ } }, "node_modules/ci-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.1.0.tgz", - "integrity": "sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz", + "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==", "dev": true, "funding": [ { @@ -5877,40 +4933,6 @@ "node": "*" } }, - "node_modules/compress-commons": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", - "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "crc-32": "^1.2.0", - "crc32-stream": "^6.0.0", - "is-stream": "^2.0.1", - "normalize-path": "^3.0.0", - "readable-stream": "^4.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/compress-commons/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -5939,50 +4961,6 @@ "dev": true, "license": "MIT" }, - "node_modules/crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/crc32-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", - "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", - "dev": true, - "license": "MIT", - "dependencies": { - "crc-32": "^1.2.0", - "readable-stream": "^4.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/crc32-stream/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -5991,9 +4969,9 @@ "license": "MIT" }, "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz", + "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==", "dev": true, "license": "MIT", "dependencies": { @@ -6118,13 +5096,6 @@ "node": ">=0.4.0" } }, - "node_modules/deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "dev": true, - "license": "ISC" - }, "node_modules/des.js": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", @@ -6158,38 +5129,10 @@ "node": "*" } }, - "node_modules/dot-github-file": { - "resolved": ".github", - "link": true - }, - "node_modules/dot-object": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/dot-object/-/dot-object-2.1.5.tgz", - "integrity": "sha512-xHF8EP4XH/Ba9fvAF2LDd5O3IITVolerVV6xvkxoM8zlGEiCUrggpAnHyOoKJKCrhvPcGATFAUwIujj7bRG5UA==", - "dev": true, - "license": "MIT", - "dependencies": { - "commander": "^6.1.0", - "glob": "^7.1.6" - }, - "bin": { - "dot-object": "bin/dot-object" - } - }, - "node_modules/dot-object/node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, "node_modules/dotenv": { - "version": "16.4.7", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", - "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -6218,6 +5161,7 @@ } }, "node_modules/electron-to-chromium": { +<<<<<<< HEAD <<<<<<< HEAD "version": "1.5.72", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.72.tgz", @@ -6227,6 +5171,11 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.71.tgz", "integrity": "sha512-dB68l59BI75W1BUGVTAEJy45CEVuEGy9qPVVQ8pnHyHMn36PLPPoE1mjLH+lo9rKulO3HC2OhbACI/8tCqJBcA==", >>>>>>> c4622c1c04 (fix process env error) +======= + "version": "1.5.55", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.55.tgz", + "integrity": "sha512-6maZ2ASDOTBtjt9FhqYPRnbvKU5tjG0IN9SztUOWYw2AzNDNpKJYLJmlK0/En4Hs/aiWnB+JZ+gW19PIGszgKg==", +>>>>>>> 0462109c0d (remove test and unused code) "dev": true, "license": "ISC" }, @@ -6268,13 +5217,6 @@ "dev": true, "license": "MIT" }, - "node_modules/es-module-lexer": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", - "dev": true, - "license": "MIT" - }, "node_modules/esbuild": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", @@ -6335,27 +5277,27 @@ } }, "node_modules/eslint": { - "version": "9.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.16.0.tgz", - "integrity": "sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA==", + "version": "9.14.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.14.0.tgz", + "integrity": "sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.19.0", - "@eslint/core": "^0.9.0", - "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.16.0", - "@eslint/plugin-kit": "^0.2.3", + "@eslint/config-array": "^0.18.0", + "@eslint/core": "^0.7.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.14.0", + "@eslint/plugin-kit": "^0.2.0", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.1", + "@humanwhocodes/retry": "^0.4.0", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.5", + "cross-spawn": "^7.0.2", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.2.0", @@ -6374,7 +5316,8 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3" + "optionator": "^0.9.3", + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" @@ -6395,9 +5338,9 @@ } }, "node_modules/eslint-plugin-unicorn": { - "version": "56.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-56.0.1.tgz", - "integrity": "sha512-FwVV0Uwf8XPfVnKSGpMg7NtlZh0G0gBarCaFcMUOoqPxXryxdYxTRRv4kH6B9TFCVIrjRXG+emcxIk2ayZilog==", + "version": "56.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-56.0.0.tgz", + "integrity": "sha512-aXpddVz/PQMmd69uxO98PA4iidiVNvA0xOtbpUoz1WhBd4RxOQQYqN618v68drY0hmy5uU2jy1bheKEVWBjlPw==", "dev": true, "license": "MIT", "dependencies": { @@ -6429,9 +5372,9 @@ } }, "node_modules/eslint-plugin-unicorn/node_modules/globals": { - "version": "15.13.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.13.0.tgz", - "integrity": "sha512-49TewVEz0UxZjr1WYYsWpPrhyC/B/pA8Bq0fUmet2n+eR7yn0IvNzNaoBwnK6mdkzcN+se7Ez9zUgULTz2QH4g==", + "version": "15.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.12.0.tgz", + "integrity": "sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==", "dev": true, "license": "MIT", "engines": { @@ -6801,9 +5744,9 @@ } }, "node_modules/execa/node_modules/pretty-ms": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz", - "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.1.0.tgz", + "integrity": "sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==", "dev": true, "license": "MIT", "dependencies": { @@ -6850,13 +5793,6 @@ "dev": true, "license": "MIT" }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", - "dev": true, - "license": "MIT" - }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", @@ -6895,29 +5831,6 @@ "dev": true, "license": "BSD-3-Clause" }, - "node_modules/fast-xml-parser": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.0.tgz", - "integrity": "sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - }, - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - } - ], - "license": "MIT", - "dependencies": { - "strnum": "^1.0.5" - }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", @@ -7050,9 +5963,9 @@ } }, "node_modules/flat-cache/node_modules/flatted": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", - "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true, "license": "ISC" }, @@ -7795,16 +6708,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -7851,13 +6754,6 @@ "node": ">=8" } }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -8145,15 +7041,15 @@ } }, "node_modules/jsonpath-plus": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-10.2.0.tgz", - "integrity": "sha512-T9V+8iNYKFL2n2rF+w02LBOT2JjDnTjioaNFrxRy0Bv1y/hNsqR/EBK7Ojy2ythRHwmz2cRIls+9JitQGZC/sw==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-10.1.0.tgz", + "integrity": "sha512-gHfV1IYqH8uJHYVTs8BJX1XKy2/rR93+f8QQi0xhx95aCiXn1ettYAd5T+7FU6wfqyDoX/wy0pm/fL3jOKJ9Lg==", "dev": true, "license": "MIT", "dependencies": { - "@jsep-plugin/assignment": "^1.3.0", - "@jsep-plugin/regex": "^1.0.4", - "jsep": "^1.4.0" + "@jsep-plugin/assignment": "^1.2.1", + "@jsep-plugin/regex": "^1.0.3", + "jsep": "^1.3.9" }, "bin": { "jsonpath": "bin/jsonpath-cli.js", @@ -8203,14 +7099,7 @@ }, "engines": { "node": ">=8" - } - }, - "node_modules/jwt-decode": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", - "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==", - "dev": true, - "license": "MIT" + } }, "node_modules/keyv": { "version": "4.5.4", @@ -8239,52 +7128,6 @@ "dev": true, "license": "MIT" }, - "node_modules/lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "readable-stream": "^2.0.5" - }, - "engines": { - "node": ">= 0.6.3" - } - }, - "node_modules/lazystream/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/lazystream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/lazystream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -8375,9 +7218,9 @@ "license": "MIT" }, "node_modules/logform": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.7.0.tgz", - "integrity": "sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.1.tgz", + "integrity": "sha512-CdaO738xRapbKIMVn2m4F6KTj4j7ooJ8POVnebSgKo3KBz5axNXRAL7ZdRjIV6NOr2Uf4vjtRkxrFETOioCqSA==", "dev": true, "license": "MIT", "dependencies": { @@ -8409,16 +7252,6 @@ "dev": true, "license": "MIT" }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } - }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -8433,6 +7266,7 @@ } }, "node_modules/magic-string": { +<<<<<<< HEAD <<<<<<< HEAD "version": "0.30.15", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.15.tgz", @@ -8442,6 +7276,11 @@ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.14.tgz", "integrity": "sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==", >>>>>>> c4622c1c04 (fix process env error) +======= + "version": "0.30.12", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz", + "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==", +>>>>>>> 0462109c0d (remove test and unused code) "dev": true, "license": "MIT", "dependencies": { @@ -8661,9 +7500,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true, "funding": [ { @@ -8784,17 +7623,6 @@ "node": ">=10" } }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, "node_modules/node-domexception": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", @@ -8906,16 +7734,6 @@ "semver": "bin/semver" } }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/npm-run-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", @@ -9321,17 +8139,6 @@ "node": ">=6" } }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -9468,9 +8275,9 @@ } }, "node_modules/postcss": { - "version": "8.4.49", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", - "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", "dev": true, "funding": [ { @@ -9489,7 +8296,7 @@ "license": "MIT", "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.1.1", + "picocolors": "^1.1.0", "source-map-js": "^1.2.1" }, "engines": { @@ -9796,13 +8603,6 @@ "node": ">= 0.6.0" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true, - "license": "MIT" - }, "node_modules/prompt-sync": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/prompt-sync/-/prompt-sync-4.2.0.tgz", @@ -9832,7 +8632,6 @@ "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-2.0.1.tgz", "integrity": "sha512-rjaeGbsmhNDcDInmwi4MuI6mRwJu6zq8GjYCLuSuE7GF+4UjgzkL69sVKKJ2T2xH61kK7rXvGYpvaTu909oXaQ==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", "retry": "^0.10.0" @@ -9846,22 +8645,18 @@ "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", "integrity": "sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==", "dev": true, - "license": "MIT", "engines": { "node": "*" } }, "node_modules/psl": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", - "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.10.0.tgz", + "integrity": "sha512-KSKHEbjAnpUuAUserOq0FxGXCUrzC3WniuSJhvdbs102rL55266ZcHBqLWOsG30spQMlPdpy7icATiAQehg/iA==", "dev": true, "license": "MIT", "dependencies": { "punycode": "^2.3.1" - }, - "funding": { - "url": "https://github.com/sponsors/lupomontero" } }, "node_modules/punycode": { @@ -9912,13 +8707,6 @@ ], "license": "MIT" }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", - "dev": true, - "license": "MIT" - }, "node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -9978,39 +8766,6 @@ "node": ">= 6" } }, - "node_modules/readdir-glob": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", - "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "minimatch": "^5.1.0" - } - }, - "node_modules/readdir-glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/readdir-glob/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/reflect-metadata": { "version": "0.1.14", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz", @@ -10141,9 +8896,9 @@ } }, "node_modules/rollup": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.28.1.tgz", - "integrity": "sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.4.tgz", + "integrity": "sha512-vGorVWIsWfX3xbcyAS+I047kFKapHYivmkaT63Smj77XwvLSJos6M1xGqZnBPFQFBRZDOcG1QnYEIxAvTr/HjA==", "dev": true, "license": "MIT", "dependencies": { @@ -10157,25 +8912,24 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.28.1", - "@rollup/rollup-android-arm64": "4.28.1", - "@rollup/rollup-darwin-arm64": "4.28.1", - "@rollup/rollup-darwin-x64": "4.28.1", - "@rollup/rollup-freebsd-arm64": "4.28.1", - "@rollup/rollup-freebsd-x64": "4.28.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.28.1", - "@rollup/rollup-linux-arm-musleabihf": "4.28.1", - "@rollup/rollup-linux-arm64-gnu": "4.28.1", - "@rollup/rollup-linux-arm64-musl": "4.28.1", - "@rollup/rollup-linux-loongarch64-gnu": "4.28.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.28.1", - "@rollup/rollup-linux-riscv64-gnu": "4.28.1", - "@rollup/rollup-linux-s390x-gnu": "4.28.1", - "@rollup/rollup-linux-x64-gnu": "4.28.1", - "@rollup/rollup-linux-x64-musl": "4.28.1", - "@rollup/rollup-win32-arm64-msvc": "4.28.1", - "@rollup/rollup-win32-ia32-msvc": "4.28.1", - "@rollup/rollup-win32-x64-msvc": "4.28.1", + "@rollup/rollup-android-arm-eabi": "4.24.4", + "@rollup/rollup-android-arm64": "4.24.4", + "@rollup/rollup-darwin-arm64": "4.24.4", + "@rollup/rollup-darwin-x64": "4.24.4", + "@rollup/rollup-freebsd-arm64": "4.24.4", + "@rollup/rollup-freebsd-x64": "4.24.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.24.4", + "@rollup/rollup-linux-arm-musleabihf": "4.24.4", + "@rollup/rollup-linux-arm64-gnu": "4.24.4", + "@rollup/rollup-linux-arm64-musl": "4.24.4", + "@rollup/rollup-linux-powerpc64le-gnu": "4.24.4", + "@rollup/rollup-linux-riscv64-gnu": "4.24.4", + "@rollup/rollup-linux-s390x-gnu": "4.24.4", + "@rollup/rollup-linux-x64-gnu": "4.24.4", + "@rollup/rollup-linux-x64-musl": "4.24.4", + "@rollup/rollup-win32-arm64-msvc": "4.24.4", + "@rollup/rollup-win32-ia32-msvc": "4.24.4", + "@rollup/rollup-win32-x64-msvc": "4.24.4", "fsevents": "~2.3.2" } }, @@ -10447,8 +9201,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/sponge-case/-/sponge-case-2.0.3.tgz", "integrity": "sha512-i4h9ZGRfxV6Xw3mpZSFOfbXjf0cQcYmssGWutgNIfFZ2VM+YIWfD71N/kjjwK6X/AAHzBr+rciEcn/L34S8TGw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/sprintf-js": { "version": "1.0.3", @@ -10500,9 +9253,9 @@ "license": "MIT" }, "node_modules/std-env": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz", - "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", "dev": true, "license": "MIT" }, @@ -10516,21 +9269,6 @@ "bluebird": "^2.6.2" } }, - "node_modules/streamx": { - "version": "2.21.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.21.0.tgz", - "integrity": "sha512-Qz6MsDZXJ6ur9u+b+4xCG18TluU7PGlRfXVAAjNiGsFrBUt/ioyLkxbFaKJygoPs+/kW4VyBj0bSj89Qu0IGyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-fifo": "^1.3.2", - "queue-tick": "^1.0.1", - "text-decoder": "^1.1.0" - }, - "optionalDependencies": { - "bare-events": "^2.2.0" - } - }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -10700,13 +9438,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strnum": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", - "dev": true, - "license": "MIT" - }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -10741,20 +9472,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-3.0.3.tgz", "integrity": "sha512-6p4op8wE9CQv7uDFzulI6YXUw4lD9n4oQierdbFThEKVWVQcbQcUjdP27W8XE7V4QnWmnq9jueSHceyyQnqQVA==", - "dev": true, - "license": "MIT" - }, - "node_modules/tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } + "dev": true }, "node_modules/teleport-javascript": { "version": "1.0.0", @@ -10842,16 +9560,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/text-decoder": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.2.tgz", - "integrity": "sha512-/MDslo7ZyWTA2vnk1j7XoDVfXsGk3tp+zFEJHJGm0UjIlQifonVFwlVbQDFh8KJzTBnT8ie115TYqir6bclddA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.4" - } - }, "node_modules/text-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", @@ -10859,6 +9567,13 @@ "dev": true, "license": "MIT" }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, "node_modules/tinybench": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", @@ -10874,9 +9589,9 @@ "license": "MIT" }, "node_modules/tinypool": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz", - "integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.1.tgz", + "integrity": "sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==", "dev": true, "license": "MIT", "engines": { @@ -10908,7 +9623,6 @@ "resolved": "https://registry.npmjs.org/title-case/-/title-case-3.0.3.tgz", "integrity": "sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==", "dev": true, - "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -10940,16 +9654,6 @@ "dev": true, "license": "MIT" }, - "node_modules/traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", - "dev": true, - "license": "MIT/X11", - "engines": { - "node": "*" - } - }, "node_modules/triple-beam": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", @@ -10961,9 +9665,9 @@ } }, "node_modules/ts-api-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", - "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.0.tgz", + "integrity": "sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==", "dev": true, "license": "MIT", "engines": { @@ -10973,33 +9677,6 @@ "typescript": ">=4.2.0" } }, - "node_modules/ts-poet": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/ts-poet/-/ts-poet-4.15.0.tgz", - "integrity": "sha512-sLLR8yQBvHzi9d4R1F4pd+AzQxBfzOSSjfxiJxQhkUoH5bL7RsAC6wgvtVUQdGqiCsyS9rT6/8X2FI7ipdir5g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "lodash": "^4.17.15", - "prettier": "^2.5.1" - } - }, - "node_modules/ts-poet/node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", @@ -11024,46 +9701,6 @@ "dev": true, "license": "Unlicense" }, - "node_modules/twirp-ts": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/twirp-ts/-/twirp-ts-2.5.0.tgz", - "integrity": "sha512-JTKIK5Pf/+3qCrmYDFlqcPPUx+ohEWKBaZy8GL8TmvV2VvC0SXVyNYILO39+GCRbqnuP6hBIF+BVr8ZxRz+6fw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@protobuf-ts/plugin-framework": "^2.0.7", - "camel-case": "^4.1.2", - "dot-object": "^2.1.4", - "path-to-regexp": "^6.2.0", - "ts-poet": "^4.5.0", - "yaml": "^1.10.2" - }, - "bin": { - "protoc-gen-twirp_ts": "protoc-gen-twirp_ts" - }, - "peerDependencies": { - "@protobuf-ts/plugin": "^2.5.0", - "ts-proto": "^1.81.3" - }, - "peerDependenciesMeta": { - "@protobuf-ts/plugin": { - "optional": true - }, - "ts-proto": { - "optional": true - } - } - }, - "node_modules/twirp-ts/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -11102,6 +9739,7 @@ } }, "node_modules/typescript-eslint": { +<<<<<<< HEAD <<<<<<< HEAD "version": "8.18.0", "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.18.0.tgz", @@ -11123,6 +9761,17 @@ "@typescript-eslint/parser": "8.17.0", "@typescript-eslint/utils": "8.17.0" >>>>>>> c4622c1c04 (fix process env error) +======= + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.13.0.tgz", + "integrity": "sha512-vIMpDRJrQd70au2G8w34mPps0ezFSPMEX4pXkTzUkrNbRX+36ais2ksGWN0esZL+ZMaFJEneOBHzCgSqle7DHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.13.0", + "@typescript-eslint/parser": "8.13.0", + "@typescript-eslint/utils": "8.13.0" +>>>>>>> 0462109c0d (remove test and unused code) }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11131,6 +9780,7 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, +<<<<<<< HEAD "peerDependencies": { <<<<<<< HEAD "eslint": "^8.57.0 || ^9.0.0", @@ -11138,6 +9788,8 @@ ======= "eslint": "^8.57.0 || ^9.0.0" }, +======= +>>>>>>> 0462109c0d (remove test and unused code) "peerDependenciesMeta": { "typescript": { "optional": true @@ -11166,19 +9818,6 @@ "dev": true, "license": "MIT" }, - "node_modules/undici": { - "version": "5.28.4", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", - "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fastify/busboy": "^2.0.0" - }, - "engines": { - "node": ">=14.0" - } - }, "node_modules/undici-types": { "version": "5.28.4", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.28.4.tgz", @@ -11199,13 +9838,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/universal-user-agent": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", - "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", - "dev": true, - "license": "ISC" - }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -11216,30 +9848,6 @@ "node": ">= 10.0.0" } }, - "node_modules/unzip-stream": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/unzip-stream/-/unzip-stream-0.3.4.tgz", - "integrity": "sha512-PyofABPVv+d7fL7GOpusx7eRT9YETY2X04PhwbSipdj6bMxVCFJrr+nm0Mxqbf9hUiTin/UsnuFWBXlDZFy0Cw==", - "dev": true, - "license": "MIT", - "dependencies": { - "binary": "^0.3.0", - "mkdirp": "^0.5.1" - } - }, - "node_modules/unzip-stream/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, "node_modules/update-browserslist-db": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", @@ -11366,15 +9974,14 @@ } }, "node_modules/vite-node": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.8.tgz", - "integrity": "sha512-uPAwSr57kYjAUux+8E2j0q0Fxpn8M9VoyfGiRI8Kfktz9NcYMCenwY5RnZxnF1WTu3TGiYipirIzacLL3VVGFg==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.4.tgz", + "integrity": "sha512-kqa9v+oi4HwkG6g8ufRnb5AeplcRw8jUF6/7/Qz1qRQOXHImG8YnLbB+LLszENwFnoBl9xIf9nVdCFzNd7GQEg==", "dev": true, "license": "MIT", "dependencies": { "cac": "^6.7.14", "debug": "^4.3.7", - "es-module-lexer": "^1.5.4", "pathe": "^1.1.2", "vite": "^5.0.0" }, @@ -11389,6 +9996,7 @@ } }, "node_modules/vite-node/node_modules/@types/node": { +<<<<<<< HEAD <<<<<<< HEAD "version": "22.10.2", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", @@ -11398,27 +10006,32 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz", "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==", >>>>>>> c4622c1c04 (fix process env error) +======= + "version": "22.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz", + "integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==", +>>>>>>> 0462109c0d (remove test and unused code) "dev": true, "license": "MIT", "optional": true, "peer": true, "dependencies": { - "undici-types": "~6.20.0" + "undici-types": "~6.19.8" } }, "node_modules/vite-node/node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", "dev": true, "license": "MIT", "optional": true, "peer": true }, "node_modules/vite-node/node_modules/vite": { - "version": "5.4.11", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz", - "integrity": "sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==", + "version": "5.4.10", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.10.tgz", + "integrity": "sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11480,7 +10093,6 @@ "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-3.6.2.tgz", "integrity": "sha512-T24Jb5V48e4VgYliUXMnZ379ItbrXgOimweKaJshD84z+8q7ZOZjJan0MeDe+Ugb+uqERDVV8SBmemaGMSMugA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4.0.0 || >=6.0.0" } @@ -11602,9 +10214,9 @@ } }, "node_modules/winston": { - "version": "3.17.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.17.0.tgz", - "integrity": "sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw==", + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.16.0.tgz", + "integrity": "sha512-xz7+cyGN5M+4CmmD4Npq1/4T+UZaz7HaeTlAruFUTjk79CNMq+P6H30vlE4z0qfqJ01VHYQwd7OZo03nYm/+lg==", "dev": true, "license": "MIT", "dependencies": { @@ -11612,33 +10224,50 @@ "@dabh/diagnostics": "^2.0.2", "async": "^3.2.3", "is-stream": "^2.0.0", - "logform": "^2.7.0", + "logform": "^2.6.0", "one-time": "^1.0.0", "readable-stream": "^3.4.0", "safe-stable-stringify": "^2.3.1", "stack-trace": "0.0.x", "triple-beam": "^1.3.0", - "winston-transport": "^4.9.0" + "winston-transport": "^4.7.0" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/winston-transport": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.9.0.tgz", - "integrity": "sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.8.0.tgz", + "integrity": "sha512-qxSTKswC6llEMZKgCQdaWgDuMJQnhuvF5f2Nk3SNXc4byfQ+voo2mX1Px9dkNOuR8p0KAjfPG29PuYUSIb+vSA==", "dev": true, "license": "MIT", "dependencies": { - "logform": "^2.7.0", - "readable-stream": "^3.6.2", + "logform": "^2.6.1", + "readable-stream": "^4.5.2", "triple-beam": "^1.3.0" }, "engines": { "node": ">= 12.0.0" } }, + "node_modules/winston-transport/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/winston/node_modules/@colors/colors": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", @@ -11808,9 +10437,9 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", - "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.0.tgz", + "integrity": "sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==", "dev": true, "license": "ISC", "bin": { @@ -11917,38 +10546,6 @@ "node": "^12.20.0 || >=14" } }, - "node_modules/zip-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", - "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "archiver-utils": "^5.0.0", - "compress-commons": "^6.0.2", - "readable-stream": "^4.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/zip-stream/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, "node_modules/zod": { "version": "3.24.1", "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz", diff --git a/package.json b/package.json index b5061fb43288..d40b511e7e4f 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,6 @@ "@typespec/streams": "0.63.0", "@typespec/versioning": "0.63.0", "azure-rest-api-specs-eng-tools": "file:eng/tools", - "dot-github-file": "file:.github", "oav": "^3.5.1", "prettier": "~3.3.3", "typescript": "~5.6.2" From b614a17c1bd565749ee2a8a117c2c386b06d3f05 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 13 Dec 2024 00:50:42 +0800 Subject: [PATCH 152/190] remove test --- eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index d92268798cc0..8de3cf887fbb 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -238,10 +238,7 @@ export async function updateSdkSuppressionsLabels( labelsToAdd: addSdkSuppressionsLabels, labelsToRemove: removeSdkSuppressionsLabels, }; - writeFileSync(outputFile, JSON.stringify({ - labelsToAdd: [], - labelsToRemove: ['aaa', 'bbb'], - })); + writeFileSync(outputFile, JSON.stringify(result)); console.log("JSON output saved to output.json"); return result; From ee68c2106ccb9b72fe3b0f2baa0407955ee04192 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 13 Dec 2024 01:04:14 +0800 Subject: [PATCH 153/190] try to use git output instead of set output --- .github/workflows/SDK-Suppressions-Label.yaml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index ca689af58b32..4cd30ad6e95c 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -34,7 +34,7 @@ jobs: . eng/scripts/ChangedFiles-Functions.ps1 $changedFiles = @(Get-ChangedFiles) echo "PR Changed files: $changedFiles" - echo "::set-output name=changedFiles::$changedFiles" + echo "changedFiles=$changedFiles" >> $GITHUB_OUTPUT - name: Get GitHub PullRequest Context uses: actions/github-script@v7 @@ -65,25 +65,25 @@ jobs: node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js OUTPUT=$(cat $OUTPUT_FILE) echo "Script output labels: $OUTPUT" - echo "::set-output name=suppressions-result-output::$OUTPUT" + echo "changedFiles=$suppressions-result-output" >> $GITHUB_OUTPUT has_output=$(node -e "const fs = require('fs'); const data = JSON.parse(fs.readFileSync('$OUTPUT_FILE', 'utf8')); console.log(data.length === 0 ? 'false' : 'true');") echo "Script has-output: $has_output" - echo "::set-output name=has-output::$has_output" + echo "has-output=$has_output" >> $GITHUB_OUTPUT labelsToAdd=$(echo "$OUTPUT" | sed -n 's/.*"labelsToAdd":\[\([^]]*\)\].*/\1/p' | tr -d '" ') labelsToRemove=$(echo "$OUTPUT" | sed -n 's/.*"labelsToRemove":\[\([^]]*\)\].*/\1/p' | tr -d '" ') for label in $(echo $labelsToAdd | tr ',' '\n'); do echo "Label to add: $label" - echo "::set-output name=has-$label::true" - echo "::set-output name=$label::true" + echo "has-$label=true" >> $GITHUB_OUTPUT + echo "$label=true" >> $GITHUB_OUTPUT done for label in $(echo $labelsToRemove | tr ',' '\n'); do echo "Label to remove: $label" - echo "::set-output name=has-$label::true" - echo "::set-output name=$label::false" + echo "has-$label=true" >> $GITHUB_OUTPUT + echo "$label=false" >> $GITHUB_OUTPUT done - uses: ./.github/actions/add-label-artifact From 381ebbe12e5d9f048b0f003a47aa180e9996d11e Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 13 Dec 2024 01:12:16 +0800 Subject: [PATCH 154/190] output script result --- .github/workflows/SDK-Suppressions-Label.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 4cd30ad6e95c..7568c975a8de 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -52,20 +52,19 @@ jobs: html_url: pr.html_url, labels: pr.labels.map(label => label.name) }; - return JSON.stringify(prContext); + echo "prContext=${prContextStr}" >> $GITHUB_OUTPUT; result-encoding: string - name: Run get suppressions label script id: run-suppressions-script env: - GITHUB_PULL_REQUEST_CONTEXT: ${{ steps.fetch-pullRequest-context.outputs.result }} + GITHUB_PULL_REQUEST_CONTEXT: ${{ steps.fetch-pullRequest-context.outputs.prContext }} OUTPUT_FILE: "output.json" GITHUB_PULL_REQUEST_CHANGE_FILES: ${{ steps.get-changedFiles.outputs.changedFiles }} run: | node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js OUTPUT=$(cat $OUTPUT_FILE) echo "Script output labels: $OUTPUT" - echo "changedFiles=$suppressions-result-output" >> $GITHUB_OUTPUT has_output=$(node -e "const fs = require('fs'); const data = JSON.parse(fs.readFileSync('$OUTPUT_FILE', 'utf8')); console.log(data.length === 0 ? 'false' : 'true');") echo "Script has-output: $has_output" From bc51375f4a731bfc74ae043aad21417ecf0e2778 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 13 Dec 2024 01:18:08 +0800 Subject: [PATCH 155/190] output script result --- .github/workflows/SDK-Suppressions-Label.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 7568c975a8de..682c6ed63596 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -41,6 +41,7 @@ jobs: id: fetch-pullRequest-context with: script: | + const core = require('@actions/core'); const pr = context.payload.pull_request; if (!pr) { throw new Error("This workflow must run in the context of a pull request."); @@ -52,7 +53,9 @@ jobs: html_url: pr.html_url, labels: pr.labels.map(label => label.name) }; - echo "prContext=${prContextStr}" >> $GITHUB_OUTPUT; + const prContextStr = JSON.stringify(prContext); + console.log("PR Context:", prContextStr); + core.setOutput("prContext", prContextStr); result-encoding: string - name: Run get suppressions label script From 66b0514a93f49f15d44e49571e310ba20a2034df Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 13 Dec 2024 01:24:19 +0800 Subject: [PATCH 156/190] output script result --- .github/workflows/SDK-Suppressions-Label.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 682c6ed63596..e45bdd03b3f5 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -41,7 +41,6 @@ jobs: id: fetch-pullRequest-context with: script: | - const core = require('@actions/core'); const pr = context.payload.pull_request; if (!pr) { throw new Error("This workflow must run in the context of a pull request."); From bc74a112cf799e1fe995cd423f2cde60e0abc3ef Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 13 Dec 2024 01:38:51 +0800 Subject: [PATCH 157/190] output script result 2 --- .github/workflows/SDK-Suppressions-Label.yaml | 1 + eng/tools/sdk-suppressions/src/index.ts | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index e45bdd03b3f5..eacc841ff067 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -64,6 +64,7 @@ jobs: OUTPUT_FILE: "output.json" GITHUB_PULL_REQUEST_CHANGE_FILES: ${{ steps.get-changedFiles.outputs.changedFiles }} run: | + echo "Pull Request Context: $GITHUB_PULL_REQUEST_CONTEXT" node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js OUTPUT=$(cat $OUTPUT_FILE) echo "Script output labels: $OUTPUT" diff --git a/eng/tools/sdk-suppressions/src/index.ts b/eng/tools/sdk-suppressions/src/index.ts index bec9c92d4320..b2e889348918 100644 --- a/eng/tools/sdk-suppressions/src/index.ts +++ b/eng/tools/sdk-suppressions/src/index.ts @@ -5,7 +5,6 @@ import { updateSdkSuppressionsLabels, PullRequestContext } from "./updateSdkSupp function getUsage(): string { return ( "Parameter missing! \n" + - "\n" + "Check GITHUB_PULL_REQUEST_CONTEXT where defined in step: Get GitHub PullRequest Context" + "Check OUTPUT_FILE in step env: Run get suppressions label script " + "Check The pr has change files in GITHUB_PULL_REQUEST_CHANGE_FILES " From 1cfac5b9b2e09766faf75a2393ba6dec6fbcd099 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 13 Dec 2024 01:47:13 +0800 Subject: [PATCH 158/190] output script result 3 --- .github/workflows/SDK-Suppressions-Label.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index eacc841ff067..230ec729518e 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -65,6 +65,7 @@ jobs: GITHUB_PULL_REQUEST_CHANGE_FILES: ${{ steps.get-changedFiles.outputs.changedFiles }} run: | echo "Pull Request Context: $GITHUB_PULL_REQUEST_CONTEXT" + echo "Pull Request CHANGE_FILES: $GITHUB_PULL_REQUEST_CHANGE_FILES" node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js OUTPUT=$(cat $OUTPUT_FILE) echo "Script output labels: $OUTPUT" From f2a197deb114df27cfc20d705022b591761dd575 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 13 Dec 2024 01:54:06 +0800 Subject: [PATCH 159/190] output script result 4 --- .github/workflows/SDK-Suppressions-Label.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 230ec729518e..cf628ba8eb5d 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -34,7 +34,9 @@ jobs: . eng/scripts/ChangedFiles-Functions.ps1 $changedFiles = @(Get-ChangedFiles) echo "PR Changed files: $changedFiles" - echo "changedFiles=$changedFiles" >> $GITHUB_OUTPUT + Add-Content -Path $env:GITHUB_OUTPUT -Value "changedFiles=$changedFiles" + # echo "changedFiles=$changedFiles" >> $GITHUB_OUTPUT + # echo "::set-output name=changedFiles::$changedFiles" - name: Get GitHub PullRequest Context uses: actions/github-script@v7 From c8de5e8af63649683f0c1d7d9be4e2181e966a4c Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 13 Dec 2024 02:00:16 +0800 Subject: [PATCH 160/190] remove code --- .github/workflows/SDK-Suppressions-Label.yaml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index cf628ba8eb5d..652ac91a9bca 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -35,8 +35,6 @@ jobs: $changedFiles = @(Get-ChangedFiles) echo "PR Changed files: $changedFiles" Add-Content -Path $env:GITHUB_OUTPUT -Value "changedFiles=$changedFiles" - # echo "changedFiles=$changedFiles" >> $GITHUB_OUTPUT - # echo "::set-output name=changedFiles::$changedFiles" - name: Get GitHub PullRequest Context uses: actions/github-script@v7 @@ -66,8 +64,6 @@ jobs: OUTPUT_FILE: "output.json" GITHUB_PULL_REQUEST_CHANGE_FILES: ${{ steps.get-changedFiles.outputs.changedFiles }} run: | - echo "Pull Request Context: $GITHUB_PULL_REQUEST_CONTEXT" - echo "Pull Request CHANGE_FILES: $GITHUB_PULL_REQUEST_CHANGE_FILES" node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js OUTPUT=$(cat $OUTPUT_FILE) echo "Script output labels: $OUTPUT" From 95289c965812533cfc7b3c139563ea08191d69e3 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 13 Dec 2024 14:12:25 +0800 Subject: [PATCH 161/190] regen package-lock.json file --- package-lock.json | 933 +++++++++++++++------------------------------- 1 file changed, 297 insertions(+), 636 deletions(-) diff --git a/package-lock.json b/package-lock.json index d03370d1c4cc..256e85a67620 100644 --- a/package-lock.json +++ b/package-lock.json @@ -58,9 +58,9 @@ } }, "eng/tools/node_modules/@vitest/coverage-v8": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-2.1.4.tgz", - "integrity": "sha512-FPKQuJfR6VTfcNMcGpqInmtJuVXFSCd9HQltYncfR01AzXhLucMEtQ5SinPdZxsT5x/5BK7I5qFJ5/ApGCmyTQ==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-2.1.8.tgz", + "integrity": "sha512-2Y7BPlKH18mAZYAW1tYByudlCYrQyl5RGvnnDYJKW5tCiO5qg3KSAy3XAxcxKz900a0ZXxWtKrMuZLe3lKBpJw==", "dev": true, "license": "MIT", "dependencies": { @@ -73,7 +73,7 @@ "istanbul-reports": "^3.1.7", "magic-string": "^0.30.12", "magicast": "^0.3.5", - "std-env": "^3.7.0", + "std-env": "^3.8.0", "test-exclude": "^7.0.1", "tinyrainbow": "^1.2.0" }, @@ -81,8 +81,8 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "2.1.4", - "vitest": "2.1.4" + "@vitest/browser": "2.1.8", + "vitest": "2.1.8" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -90,33 +90,6 @@ } } }, - "eng/tools/node_modules/@vitest/mocker": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.4.tgz", - "integrity": "sha512-Ky/O1Lc0QBbutJdW0rqLeFNbuLEyS+mIPiNdlVlp2/yhJ0SbyYqObS5IHdhferJud8MbbwMnexg4jordE5cCoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "2.1.4", - "estree-walker": "^3.0.3", - "magic-string": "^0.30.12" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "msw": "^2.4.9", - "vite": "^5.0.0" - }, - "peerDependenciesMeta": { - "msw": { - "optional": true - }, - "vite": { - "optional": true - } - } - }, "eng/tools/node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -199,9 +172,9 @@ "license": "MIT" }, "eng/tools/node_modules/vite": { - "version": "5.4.10", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.10.tgz", - "integrity": "sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==", + "version": "5.4.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz", + "integrity": "sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==", "dev": true, "license": "MIT", "dependencies": { @@ -259,31 +232,31 @@ } }, "eng/tools/node_modules/vitest": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.4.tgz", - "integrity": "sha512-eDjxbVAJw1UJJCHr5xr/xM86Zx+YxIEXGAR+bmnEID7z9qWfoxpHw0zdobz+TQAFOLT+nEXz3+gx6nUJ7RgmlQ==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.8.tgz", + "integrity": "sha512-1vBKTZskHw/aosXqQUlVWWlGUxSJR8YtiyZDJAFeW2kPAeX6S3Sool0mjspO+kXLuxVWlEDDowBAeqeAQefqLQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "2.1.4", - "@vitest/mocker": "2.1.4", - "@vitest/pretty-format": "^2.1.4", - "@vitest/runner": "2.1.4", - "@vitest/snapshot": "2.1.4", - "@vitest/spy": "2.1.4", - "@vitest/utils": "2.1.4", + "@vitest/expect": "2.1.8", + "@vitest/mocker": "2.1.8", + "@vitest/pretty-format": "^2.1.8", + "@vitest/runner": "2.1.8", + "@vitest/snapshot": "2.1.8", + "@vitest/spy": "2.1.8", + "@vitest/utils": "2.1.8", "chai": "^5.1.2", "debug": "^4.3.7", "expect-type": "^1.1.0", "magic-string": "^0.30.12", "pathe": "^1.1.2", - "std-env": "^3.7.0", + "std-env": "^3.8.0", "tinybench": "^2.9.0", "tinyexec": "^0.3.1", "tinypool": "^1.0.1", "tinyrainbow": "^1.2.0", "vite": "^5.0.0", - "vite-node": "2.1.4", + "vite-node": "2.1.8", "why-is-node-running": "^2.3.0" }, "bin": { @@ -298,8 +271,8 @@ "peerDependencies": { "@edge-runtime/vm": "*", "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "2.1.4", - "@vitest/ui": "2.1.4", + "@vitest/browser": "2.1.8", + "@vitest/ui": "2.1.8", "happy-dom": "*", "jsdom": "*" }, @@ -324,11 +297,6 @@ } } }, -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD -======= ->>>>>>> c4622c1c04 (fix process env error) "eng/tools/node_modules/vitest/node_modules/@vitest/mocker": { "version": "2.1.8", "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.8.tgz", @@ -354,6 +322,8 @@ "vite": { "optional": true } + } + }, "eng/tools/sdk-suppressions": { "name": "@azure-tools/sdk-suppressions", "version": "1.0.0", @@ -533,6 +503,7 @@ "resolved": "https://registry.npmjs.org/@autorest/codemodel/-/codemodel-4.20.0.tgz", "integrity": "sha512-Z2GwVwAGNTcfGUmrWT5LJqZv/WDXKBBpxhZrHu6zco/HrEGrqKQcKx5whlLX/GmAB/KmhcOWYr6aIyWomcoisQ==", "dev": true, + "license": "MIT", "dependencies": { "@azure-tools/codegen": "~2.10.0", "js-yaml": "~4.1.0" @@ -560,6 +531,7 @@ "resolved": "https://registry.npmjs.org/@autorest/extension-base/-/extension-base-3.6.0.tgz", "integrity": "sha512-hE6nmdYu2SA6xlG46lM+/njtz0yNEkhzfkOs7PjrYulnXuBWHo08RdbXHGcecypgNhV2QAQcbV6ar5f1UGX6xQ==", "dev": true, + "license": "MIT", "dependencies": { "@azure-tools/codegen": "~2.10.0", "js-yaml": "~4.1.0", @@ -574,6 +546,7 @@ "resolved": "https://registry.npmjs.org/@autorest/openapi-to-typespec/-/openapi-to-typespec-0.10.4.tgz", "integrity": "sha512-FvT448S4DCmGNgDEdGp9kL8bJE6m9QiLgw1N8YGuEmDCYoliC0RB1NQaFhOt9tTAZ3GGDKpZdqeYw/3l1mVIJA==", "dev": true, + "license": "MIT", "dependencies": { "@autorest/codemodel": "~4.20.0", "@autorest/extension-base": "~3.6.0", @@ -600,7 +573,6 @@ "integrity": "sha512-AyoNMq3EORugHynFF8bN0TJh+zYxui/ApU5DoVEL7Xr1yMD6k9p5b90VD4HiCsP0dz8470ApFnjt5Vl6xCSzig==", "dev": true, "license": "MIT", -<<<<<<< HEAD "engines": { "node": ">=18.0.0" }, @@ -711,8 +683,6 @@ "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, "license": "MIT", -======= ->>>>>>> c4622c1c04 (fix process env error) "bin": { "prettier": "bin/prettier.cjs" }, @@ -857,6 +827,7 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz", "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -892,6 +863,7 @@ "resolved": "https://registry.npmjs.org/@azure-tools/async-io/-/async-io-3.0.254.tgz", "integrity": "sha512-X1C7XdyCuo50ch9FzKtTvmK18FgDxxf1Bbt3cSoknQqeDaRegHSSCO+zByq2YA4NvUzKXeZ1engh29IDxZXgpQ==", "dev": true, + "license": "MIT", "dependencies": { "@azure-tools/tasks": "~3.0.255", "proper-lockfile": "~2.0.1" @@ -905,6 +877,7 @@ "resolved": "https://registry.npmjs.org/@azure-tools/codegen/-/codegen-2.10.0.tgz", "integrity": "sha512-gdy0at3BUZAAARgiX9Ye6SNCKhcjLs5FNUewa/KV/dMGcPv7mBvbslt5VO3W8wj0n96ifk970aIFaivjacBxeQ==", "dev": true, + "license": "MIT", "dependencies": { "@azure-tools/async-io": "~3.0.0", "js-yaml": "~4.1.0", @@ -979,9 +952,9 @@ } }, "node_modules/@azure-tools/rest-api-diff": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@azure-tools/rest-api-diff/-/rest-api-diff-0.1.4.tgz", - "integrity": "sha512-zXQ0xRKDzQvJlhJ/k3RZBqzitXYpjOdR3ighNh5ri4c0mu0faH3eGrgmd9Utqc7yxNdYKZ/71zhLACPzDchiRA==", + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/@azure-tools/rest-api-diff/-/rest-api-diff-0.1.7.tgz", + "integrity": "sha512-RJ4JHGpBlFnpQAOHTtyvXz01PPwd0LHXvrujIhl9vvCqcbWMx9GeiSLAxWVWsvw52im26wgSb9oXaMrgt2NFbg==", "dev": true, "license": "MIT", "dependencies": { @@ -1024,6 +997,7 @@ "resolved": "https://registry.npmjs.org/@azure-tools/tasks/-/tasks-3.0.255.tgz", "integrity": "sha512-GjALNLz7kWMEdRVbaN5g0cJHNAr3XVTbP0611Mv2UzMgGL6FOhNZJK+oPHJKLDR8EEDZNnkwPlyi7B+INXUSQA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.12.0" } @@ -1135,6 +1109,7 @@ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-cli/-/typespec-client-generator-cli-0.14.2.tgz", "integrity": "sha512-tSwCQpBcnsqFdIpMbiookmMFzG/OYggTyG5UPeScPeqpLTA4bkGBbDoZ7reJh/V02J4AW0pul57khwTq9DNbRA==", "dev": true, + "license": "MIT", "dependencies": { "@autorest/core": "^3.10.2", "@autorest/openapi-to-typespec": "0.10.4", @@ -1165,6 +1140,7 @@ "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.49.0.tgz", "integrity": "sha512-inFLRIeTU0mQg4PT19O3YwT/4YODLuTgIsXuhKDdG/sEsx8PG8AEFTabtnZJ0w3Lc4xuxKFJrzZ2ZH2iiAAbig==", "dev": true, + "license": "MIT", "dependencies": { "change-case": "~5.4.4", "pluralize": "^8.0.0", @@ -1388,10 +1364,10 @@ } }, "node_modules/@azure/core-http": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@azure/core-http/-/core-http-3.0.4.tgz", - "integrity": "sha512-Fok9VVhMdxAFOtqiiAtg74fL0UJkt0z3D+ouUUxcRLzZNBioPRAMJFVxiWoJljYpXsRi4GDQHzQHDc9AiYaIUQ==", - "deprecated": "This package is no longer supported. Please migrate to use @azure/core-rest-pipeline", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@azure/core-http/-/core-http-3.0.5.tgz", + "integrity": "sha512-T8r2q/c3DxNu6mEJfPuJtptUVqwchxzjj32gKcnMi06rdiVONS9rar7kT9T2Am+XvER7uOzpsP79WsqNbdgdWg==", + "deprecated": "This package is no longer supported. Please refer to https://github.com/Azure/azure-sdk-for-js/blob/490ce4dfc5b98ba290dee3b33a6d0876c5f138e2/sdk/core/README.md", "dev": true, "license": "MIT", "dependencies": { @@ -1411,7 +1387,7 @@ "xml2js": "^0.5.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@azure/core-http/node_modules/@azure/abort-controller": { @@ -1463,16 +1439,16 @@ } }, "node_modules/@azure/core-rest-pipeline": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.17.0.tgz", - "integrity": "sha512-62Vv8nC+uPId3j86XJ0WI+sBf0jlqTqPUFCBNrGtlaUeQUIXWV/D8GE5A1d+Qx8H7OQojn2WguC8kChD6v0shA==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.18.1.tgz", + "integrity": "sha512-/wS73UEDrxroUEVywEm7J0p2c+IIiVxyfigCGfsKvCxxCET4V/Hef2aURqltrXMRjNmdmt5IuOgIpl8f6xdO5A==", "dev": true, "license": "MIT", "dependencies": { "@azure/abort-controller": "^2.0.0", "@azure/core-auth": "^1.8.0", "@azure/core-tracing": "^1.0.1", - "@azure/core-util": "^1.9.0", + "@azure/core-util": "^1.11.0", "@azure/logger": "^1.0.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.0", @@ -1749,13 +1725,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", - "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", + "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.26.0" + "@babel/types": "^7.26.3" }, "bin": { "parser": "bin/babel-parser.js" @@ -1778,9 +1754,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", - "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", + "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", "dev": true, "license": "MIT", "dependencies": { @@ -2255,13 +2231,13 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", - "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.1.tgz", + "integrity": "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^2.1.4", + "@eslint/object-schema": "^2.1.5", "debug": "^4.3.1", "minimatch": "^3.1.2" }, @@ -2270,19 +2246,22 @@ } }, "node_modules/@eslint/core": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz", - "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.1.tgz", + "integrity": "sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==", "dev": true, "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/eslintrc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", - "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", "dev": true, "license": "MIT", "dependencies": { @@ -2328,9 +2307,9 @@ "license": "MIT" }, "node_modules/@eslint/js": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.14.0.tgz", - "integrity": "sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==", + "version": "9.16.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.16.0.tgz", + "integrity": "sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==", "dev": true, "license": "MIT", "engines": { @@ -2338,9 +2317,9 @@ } }, "node_modules/@eslint/object-schema": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", - "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.5.tgz", + "integrity": "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -2348,9 +2327,9 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.2.tgz", - "integrity": "sha512-CXtq5nR4Su+2I47WPOlWud98Y5Lv8Kyxp2ukhgFx/eW6Blm18VXJO5WuQylPugRo8nbluoi6GvvxBLqHcvqUUw==", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.4.tgz", + "integrity": "sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2882,9 +2861,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.4.tgz", - "integrity": "sha512-jfUJrFct/hTA0XDM5p/htWKoNNTbDLY0KRwEt6pyOA6k2fmk0WVwl65PdUdJZgzGEHWx+49LilkcSaumQRyNQw==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.28.1.tgz", + "integrity": "sha512-2aZp8AES04KI2dy3Ss6/MDjXbwBzj+i0GqKtWXgw2/Ma6E4jJvujryO6gJAghIRVz7Vwr9Gtl/8na3nDUKpraQ==", "cpu": [ "arm" ], @@ -2896,9 +2875,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.4.tgz", - "integrity": "sha512-j4nrEO6nHU1nZUuCfRKoCcvh7PIywQPUCBa2UsootTHvTHIoIu2BzueInGJhhvQO/2FTRdNYpf63xsgEqH9IhA==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.28.1.tgz", + "integrity": "sha512-EbkK285O+1YMrg57xVA+Dp0tDBRB93/BZKph9XhMjezf6F4TpYjaUSuPt5J0fZXlSag0LmZAsTmdGGqPp4pQFA==", "cpu": [ "arm64" ], @@ -2910,9 +2889,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.4.tgz", - "integrity": "sha512-GmU/QgGtBTeraKyldC7cDVVvAJEOr3dFLKneez/n7BvX57UdhOqDsVwzU7UOnYA7AAOt+Xb26lk79PldDHgMIQ==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.28.1.tgz", + "integrity": "sha512-prduvrMKU6NzMq6nxzQw445zXgaDBbMQvmKSJaxpaZ5R1QDM8w+eGxo6Y/jhT/cLoCvnZI42oEqf9KQNYz1fqQ==", "cpu": [ "arm64" ], @@ -2924,9 +2903,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.4.tgz", - "integrity": "sha512-N6oDBiZCBKlwYcsEPXGDE4g9RoxZLK6vT98M8111cW7VsVJFpNEqvJeIPfsCzbf0XEakPslh72X0gnlMi4Ddgg==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.28.1.tgz", + "integrity": "sha512-WsvbOunsUk0wccO/TV4o7IKgloJ942hVFK1CLatwv6TJspcCZb9umQkPdvB7FihmdxgaKR5JyxDjWpCOp4uZlQ==", "cpu": [ "x64" ], @@ -2938,9 +2917,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.24.4.tgz", - "integrity": "sha512-py5oNShCCjCyjWXCZNrRGRpjWsF0ic8f4ieBNra5buQz0O/U6mMXCpC1LvrHuhJsNPgRt36tSYMidGzZiJF6mw==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.28.1.tgz", + "integrity": "sha512-HTDPdY1caUcU4qK23FeeGxCdJF64cKkqajU0iBnTVxS8F7H/7BewvYoG+va1KPSL63kQ1PGNyiwKOfReavzvNA==", "cpu": [ "arm64" ], @@ -2952,9 +2931,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.24.4.tgz", - "integrity": "sha512-L7VVVW9FCnTTp4i7KrmHeDsDvjB4++KOBENYtNYAiYl96jeBThFfhP6HVxL74v4SiZEVDH/1ILscR5U9S4ms4g==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.28.1.tgz", + "integrity": "sha512-m/uYasxkUevcFTeRSM9TeLyPe2QDuqtjkeoTpP9SW0XxUWfcYrGDMkO/m2tTw+4NMAF9P2fU3Mw4ahNvo7QmsQ==", "cpu": [ "x64" ], @@ -2966,9 +2945,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.4.tgz", - "integrity": "sha512-10ICosOwYChROdQoQo589N5idQIisxjaFE/PAnX2i0Zr84mY0k9zul1ArH0rnJ/fpgiqfu13TFZR5A5YJLOYZA==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.28.1.tgz", + "integrity": "sha512-QAg11ZIt6mcmzpNE6JZBpKfJaKkqTm1A9+y9O+frdZJEuhQxiugM05gnCWiANHj4RmbgeVJpTdmKRmH/a+0QbA==", "cpu": [ "arm" ], @@ -2980,9 +2959,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.4.tgz", - "integrity": "sha512-ySAfWs69LYC7QhRDZNKqNhz2UKN8LDfbKSMAEtoEI0jitwfAG2iZwVqGACJT+kfYvvz3/JgsLlcBP+WWoKCLcw==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.28.1.tgz", + "integrity": "sha512-dRP9PEBfolq1dmMcFqbEPSd9VlRuVWEGSmbxVEfiq2cs2jlZAl0YNxFzAQS2OrQmsLBLAATDMb3Z6MFv5vOcXg==", "cpu": [ "arm" ], @@ -2994,9 +2973,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.4.tgz", - "integrity": "sha512-uHYJ0HNOI6pGEeZ/5mgm5arNVTI0nLlmrbdph+pGXpC9tFHFDQmDMOEqkmUObRfosJqpU8RliYoGz06qSdtcjg==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.28.1.tgz", + "integrity": "sha512-uGr8khxO+CKT4XU8ZUH1TTEUtlktK6Kgtv0+6bIFSeiSlnGJHG1tSFSjm41uQ9sAO/5ULx9mWOz70jYLyv1QkA==", "cpu": [ "arm64" ], @@ -3008,9 +2987,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.4.tgz", - "integrity": "sha512-38yiWLemQf7aLHDgTg85fh3hW9stJ0Muk7+s6tIkSUOMmi4Xbv5pH/5Bofnsb6spIwD5FJiR+jg71f0CH5OzoA==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.28.1.tgz", + "integrity": "sha512-QF54q8MYGAqMLrX2t7tNpi01nvq5RI59UBNx+3+37zoKX5KViPo/gk2QLhsuqok05sSCRluj0D00LzCwBikb0A==", "cpu": [ "arm64" ], @@ -3021,10 +3000,24 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.28.1.tgz", + "integrity": "sha512-vPul4uodvWvLhRco2w0GcyZcdyBfpfDRgNKU+p35AWEbJ/HPs1tOUrkSueVbBS0RQHAf/A+nNtDpvw95PeVKOA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.4.tgz", - "integrity": "sha512-q73XUPnkwt9ZNF2xRS4fvneSuaHw2BXuV5rI4cw0fWYVIWIBeDZX7c7FWhFQPNTnE24172K30I+dViWRVD9TwA==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.28.1.tgz", + "integrity": "sha512-pTnTdBuC2+pt1Rmm2SV7JWRqzhYpEILML4PKODqLz+C7Ou2apEV52h19CR7es+u04KlqplggmN9sqZlekg3R1A==", "cpu": [ "ppc64" ], @@ -3036,9 +3029,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.4.tgz", - "integrity": "sha512-Aie/TbmQi6UXokJqDZdmTJuZBCU3QBDA8oTKRGtd4ABi/nHgXICulfg1KI6n9/koDsiDbvHAiQO3YAUNa/7BCw==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.28.1.tgz", + "integrity": "sha512-vWXy1Nfg7TPBSuAncfInmAI/WZDd5vOklyLJDdIRKABcZWojNDY0NJwruY2AcnCLnRJKSaBgf/GiJfauu8cQZA==", "cpu": [ "riscv64" ], @@ -3050,9 +3043,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.4.tgz", - "integrity": "sha512-P8MPErVO/y8ohWSP9JY7lLQ8+YMHfTI4bAdtCi3pC2hTeqFJco2jYspzOzTUB8hwUWIIu1xwOrJE11nP+0JFAQ==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.28.1.tgz", + "integrity": "sha512-/yqC2Y53oZjb0yz8PVuGOQQNOTwxcizudunl/tFs1aLvObTclTwZ0JhXF2XcPT/zuaymemCDSuuUPXJJyqeDOg==", "cpu": [ "s390x" ], @@ -3064,9 +3057,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.4.tgz", - "integrity": "sha512-K03TljaaoPK5FOyNMZAAEmhlyO49LaE4qCsr0lYHUKyb6QacTNF9pnfPpXnFlFD3TXuFbFbz7tJ51FujUXkXYA==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.28.1.tgz", + "integrity": "sha512-fzgeABz7rrAlKYB0y2kSEiURrI0691CSL0+KXwKwhxvj92VULEDQLpBYLHpF49MSiPG4sq5CK3qHMnb9tlCjBw==", "cpu": [ "x64" ], @@ -3078,9 +3071,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.4.tgz", - "integrity": "sha512-VJYl4xSl/wqG2D5xTYncVWW+26ICV4wubwN9Gs5NrqhJtayikwCXzPL8GDsLnaLU3WwhQ8W02IinYSFJfyo34Q==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.28.1.tgz", + "integrity": "sha512-xQTDVzSGiMlSshpJCtudbWyRfLaNiVPXt1WgdWTwWz9n0U12cI2ZVtWe/Jgwyv/6wjL7b66uu61Vg0POWVfz4g==", "cpu": [ "x64" ], @@ -3092,9 +3085,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.4.tgz", - "integrity": "sha512-ku2GvtPwQfCqoPFIJCqZ8o7bJcj+Y54cZSr43hHca6jLwAiCbZdBUOrqE6y29QFajNAzzpIOwsckaTFmN6/8TA==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.28.1.tgz", + "integrity": "sha512-wSXmDRVupJstFP7elGMgv+2HqXelQhuNf+IS4V+nUpNVi/GUiBgDmfwD0UGN3pcAnWsgKG3I52wMOBnk1VHr/A==", "cpu": [ "arm64" ], @@ -3106,9 +3099,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.4.tgz", - "integrity": "sha512-V3nCe+eTt/W6UYNr/wGvO1fLpHUrnlirlypZfKCT1fG6hWfqhPgQV/K/mRBXBpxc0eKLIF18pIOFVPh0mqHjlg==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.28.1.tgz", + "integrity": "sha512-ZkyTJ/9vkgrE/Rk9vhMXhf8l9D+eAhbAVbsGsXKy2ohmJaWg0LPQLnIxRdRp/bKyr8tXuPlXhIoGlEB5XpJnGA==", "cpu": [ "ia32" ], @@ -3120,9 +3113,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.4.tgz", - "integrity": "sha512-LTw1Dfd0mBIEqUVCxbvTE/LLo+9ZxVC9k99v1v4ahg9Aak6FpqOfNu5kRkeTAn0wphoC4JU7No1/rL+bBCEwhg==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.28.1.tgz", + "integrity": "sha512-ZvK2jBafvttJjoIdKm/Q/Bh7IJ1Ose9IBOwpOXcOvW3ikGTQGmKDgxTC6oCAzW6PynbkKP8+um1du81XJHZ0JA==", "cpu": [ "x64" ], @@ -3478,9 +3471,9 @@ "license": "MIT" }, "node_modules/@types/node-fetch": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", - "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==", "dev": true, "license": "MIT", "dependencies": { @@ -3537,43 +3530,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { -<<<<<<< HEAD -<<<<<<< HEAD "version": "8.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.18.0.tgz", "integrity": "sha512-NR2yS7qUqCL7AIxdJUQf2MKKNDVNaig/dEB0GBLU7D+ZdHgK1NoH/3wsgO3OnPVipn51tG3MAwaODEGil70WEw==", -======= - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.17.0.tgz", - "integrity": "sha512-HU1KAdW3Tt8zQkdvNoIijfWDMvdSweFYm4hWh+KwhPstv+sCmWb89hCIP8msFm9N1R/ooh9honpSuvqKWlYy3w==", ->>>>>>> c4622c1c04 (fix process env error) -======= - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.13.0.tgz", - "integrity": "sha512-nQtBLiZYMUPkclSeC3id+x4uVd1SGtHuElTxL++SfP47jR0zfkZBJHc+gL4qPsgTuypz0k8Y2GheaDYn6Gy3rg==", ->>>>>>> 0462109c0d (remove test and unused code) "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", -<<<<<<< HEAD -<<<<<<< HEAD "@typescript-eslint/scope-manager": "8.18.0", "@typescript-eslint/type-utils": "8.18.0", "@typescript-eslint/utils": "8.18.0", "@typescript-eslint/visitor-keys": "8.18.0", -======= - "@typescript-eslint/scope-manager": "8.17.0", - "@typescript-eslint/type-utils": "8.17.0", - "@typescript-eslint/utils": "8.17.0", - "@typescript-eslint/visitor-keys": "8.17.0", ->>>>>>> c4622c1c04 (fix process env error) -======= - "@typescript-eslint/scope-manager": "8.13.0", - "@typescript-eslint/type-utils": "8.13.0", - "@typescript-eslint/utils": "8.13.0", - "@typescript-eslint/visitor-keys": "8.13.0", ->>>>>>> 0462109c0d (remove test and unused code) "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -3593,42 +3560,16 @@ } }, "node_modules/@typescript-eslint/parser": { -<<<<<<< HEAD -<<<<<<< HEAD "version": "8.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.18.0.tgz", "integrity": "sha512-hgUZ3kTEpVzKaK3uNibExUYm6SKKOmTU2BOxBSvOYwtJEPdVQ70kZJpPjstlnhCHcuc2WGfSbpKlb/69ttyN5Q==", -======= - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.17.0.tgz", - "integrity": "sha512-Drp39TXuUlD49F7ilHHCG7TTg8IkA+hxCuULdmzWYICxGXvDXmDmWEjJYZQYgf6l/TFfYNE167m7isnc3xlIEg==", ->>>>>>> c4622c1c04 (fix process env error) -======= - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.13.0.tgz", - "integrity": "sha512-w0xp+xGg8u/nONcGw1UXAr6cjCPU1w0XVyBs6Zqaj5eLmxkKQAByTdV/uGgNN5tVvN/kKpoQlP2cL7R+ajZZIQ==", ->>>>>>> 0462109c0d (remove test and unused code) "dev": true, "license": "MITClause", "dependencies": { -<<<<<<< HEAD -<<<<<<< HEAD "@typescript-eslint/scope-manager": "8.18.0", "@typescript-eslint/types": "8.18.0", "@typescript-eslint/typescript-estree": "8.18.0", "@typescript-eslint/visitor-keys": "8.18.0", -======= - "@typescript-eslint/scope-manager": "8.17.0", - "@typescript-eslint/types": "8.17.0", - "@typescript-eslint/typescript-estree": "8.17.0", - "@typescript-eslint/visitor-keys": "8.17.0", ->>>>>>> c4622c1c04 (fix process env error) -======= - "@typescript-eslint/scope-manager": "8.13.0", - "@typescript-eslint/types": "8.13.0", - "@typescript-eslint/typescript-estree": "8.13.0", - "@typescript-eslint/visitor-keys": "8.13.0", ->>>>>>> 0462109c0d (remove test and unused code) "debug": "^4.3.4" }, "engines": { @@ -3644,8 +3585,6 @@ } }, "node_modules/@typescript-eslint/scope-manager": { -<<<<<<< HEAD -<<<<<<< HEAD "version": "8.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.18.0.tgz", "integrity": "sha512-PNGcHop0jkK2WVYGotk/hxj+UFLhXtGPiGtiaWgVBVP1jhMoMCHlTyJA+hEj4rszoSdLTK3fN4oOatrL0Cp+Xw==", @@ -3654,26 +3593,6 @@ "dependencies": { "@typescript-eslint/types": "8.18.0", "@typescript-eslint/visitor-keys": "8.18.0" -======= - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.17.0.tgz", - "integrity": "sha512-/ewp4XjvnxaREtqsZjF4Mfn078RD/9GmiEAtTeLQ7yFdKnqwTOgRMSvFz4et9U5RiJQ15WTGXPLj89zGusvxBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.17.0", - "@typescript-eslint/visitor-keys": "8.17.0" ->>>>>>> c4622c1c04 (fix process env error) -======= - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.13.0.tgz", - "integrity": "sha512-XsGWww0odcUT0gJoBZ1DeulY1+jkaHUciUq4jKNv4cpInbvvrtDoyBH9rE/n2V29wQJPk8iCH1wipra9BhmiMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.13.0", - "@typescript-eslint/visitor-keys": "8.13.0" ->>>>>>> 0462109c0d (remove test and unused code) }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3684,8 +3603,6 @@ } }, "node_modules/@typescript-eslint/type-utils": { -<<<<<<< HEAD -<<<<<<< HEAD "version": "8.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.18.0.tgz", "integrity": "sha512-er224jRepVAVLnMF2Q7MZJCq5CsdH2oqjP4dT7K6ij09Kyd+R21r7UVJrF0buMVdZS5QRhDzpvzAxHxabQadow==", @@ -3694,26 +3611,6 @@ "dependencies": { "@typescript-eslint/typescript-estree": "8.18.0", "@typescript-eslint/utils": "8.18.0", -======= - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.17.0.tgz", - "integrity": "sha512-q38llWJYPd63rRnJ6wY/ZQqIzPrBCkPdpIsaCfkR3Q4t3p6sb422zougfad4TFW9+ElIFLVDzWGiGAfbb/v2qw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "8.17.0", - "@typescript-eslint/utils": "8.17.0", ->>>>>>> c4622c1c04 (fix process env error) -======= - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.13.0.tgz", - "integrity": "sha512-Rqnn6xXTR316fP4D2pohZenJnp+NwQ1mo7/JM+J1LWZENSLkJI8ID8QNtlvFeb0HnFSK94D6q0cnMX6SbE5/vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "8.13.0", - "@typescript-eslint/utils": "8.13.0", ->>>>>>> 0462109c0d (remove test and unused code) "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -3724,9 +3621,7 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, -<<<<<<< HEAD "peerDependencies": { -<<<<<<< HEAD "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" } @@ -3735,28 +3630,6 @@ "version": "8.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.18.0.tgz", "integrity": "sha512-FNYxgyTCAnFwTrzpBGq+zrnoTO4x0c1CKYY5MuUTzpScqmY5fmsh2o3+57lqdI3NZucBDCzDgdEbIaNfAjAHQA==", -======= - "eslint": "^8.57.0 || ^9.0.0" - }, -======= ->>>>>>> 0462109c0d (remove test and unused code) - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { -<<<<<<< HEAD - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.17.0.tgz", - "integrity": "sha512-gY2TVzeve3z6crqh2Ic7Cr+CAv6pfb0Egee7J5UAVWCpVvDI/F71wNfolIim4FE6hT15EbpZFVUj9j5i38jYXA==", ->>>>>>> c4622c1c04 (fix process env error) -======= - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.13.0.tgz", - "integrity": "sha512-4cyFErJetFLckcThRUFdReWJjVsPCqyBlJTi6IDEpc1GWCIIZRFxVppjWLIMcQhNGhdWJJRYFHpHoDWvMlDzng==", ->>>>>>> 0462109c0d (remove test and unused code) "dev": true, "license": "MIT", "engines": { @@ -3768,36 +3641,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { -<<<<<<< HEAD -<<<<<<< HEAD "version": "8.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.0.tgz", "integrity": "sha512-rqQgFRu6yPkauz+ms3nQpohwejS8bvgbPyIDq13cgEDbkXt4LH4OkDMT0/fN1RUtzG8e8AKJyDBoocuQh8qNeg==", -======= - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.17.0.tgz", - "integrity": "sha512-JqkOopc1nRKZpX+opvKqnM3XUlM7LpFMD0lYxTqOTKQfCWAmxw45e3qlOCsEqEB2yuacujivudOFpCnqkBDNMw==", ->>>>>>> c4622c1c04 (fix process env error) -======= - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.13.0.tgz", - "integrity": "sha512-v7SCIGmVsRK2Cy/LTLGN22uea6SaUIlpBcO/gnMGT/7zPtxp90bphcGf4fyrCQl3ZtiBKqVTG32hb668oIYy1g==", ->>>>>>> 0462109c0d (remove test and unused code) "dev": true, "license": "MIT", "dependencies": { -<<<<<<< HEAD -<<<<<<< HEAD "@typescript-eslint/types": "8.18.0", "@typescript-eslint/visitor-keys": "8.18.0", -======= - "@typescript-eslint/types": "8.17.0", - "@typescript-eslint/visitor-keys": "8.17.0", ->>>>>>> c4622c1c04 (fix process env error) -======= - "@typescript-eslint/types": "8.13.0", - "@typescript-eslint/visitor-keys": "8.13.0", ->>>>>>> 0462109c0d (remove test and unused code) "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -3843,40 +3694,16 @@ } }, "node_modules/@typescript-eslint/utils": { -<<<<<<< HEAD -<<<<<<< HEAD "version": "8.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.18.0.tgz", "integrity": "sha512-p6GLdY383i7h5b0Qrfbix3Vc3+J2k6QWw6UMUeY5JGfm3C5LbZ4QIZzJNoNOfgyRe0uuYKjvVOsO/jD4SJO+xg==", -======= - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.17.0.tgz", - "integrity": "sha512-bQC8BnEkxqG8HBGKwG9wXlZqg37RKSMY7v/X8VEWD8JG2JuTHuNK0VFvMPMUKQcbk6B+tf05k+4AShAEtCtJ/w==", ->>>>>>> c4622c1c04 (fix process env error) -======= - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.13.0.tgz", - "integrity": "sha512-A1EeYOND6Uv250nybnLZapeXpYMl8tkzYUxqmoKAWnI4sei3ihf2XdZVd+vVOmHGcp3t+P7yRrNsyyiXTvShFQ==", ->>>>>>> 0462109c0d (remove test and unused code) "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", -<<<<<<< HEAD -<<<<<<< HEAD "@typescript-eslint/scope-manager": "8.18.0", "@typescript-eslint/types": "8.18.0", "@typescript-eslint/typescript-estree": "8.18.0" -======= - "@typescript-eslint/scope-manager": "8.17.0", - "@typescript-eslint/types": "8.17.0", - "@typescript-eslint/typescript-estree": "8.17.0" ->>>>>>> c4622c1c04 (fix process env error) -======= - "@typescript-eslint/scope-manager": "8.13.0", - "@typescript-eslint/types": "8.13.0", - "@typescript-eslint/typescript-estree": "8.13.0" ->>>>>>> 0462109c0d (remove test and unused code) }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3886,7 +3713,6 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { -<<<<<<< HEAD "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" } @@ -3899,25 +3725,7 @@ "license": "MIT", "dependencies": { "@typescript-eslint/types": "8.18.0", -======= - "eslint": "^8.57.0 || ^9.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.13.0.tgz", - "integrity": "sha512-7N/+lztJqH4Mrf0lb10R/CbI1EaAMMGyF5y0oJvFoAhafwgiRA7TXyd8TFn8FC8k5y2dTsYogg238qavRGNnlw==", - "dev": true, - "license": "MIT", - "dependencies": { -<<<<<<< HEAD - "@typescript-eslint/types": "8.17.0", ->>>>>>> c4622c1c04 (fix process env error) "eslint-visitor-keys": "^4.2.0" -======= - "@typescript-eslint/types": "8.13.0", - "eslint-visitor-keys": "^3.4.3" ->>>>>>> 0462109c0d (remove test and unused code) }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3927,19 +3735,6 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/@typespec/compiler": { "version": "0.63.0", "resolved": "https://registry.npmjs.org/@typespec/compiler/-/compiler-0.63.0.tgz", @@ -4109,14 +3904,14 @@ } }, "node_modules/@vitest/expect": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.4.tgz", - "integrity": "sha512-DOETT0Oh1avie/D/o2sgMHGrzYUFFo3zqESB2Hn70z6QB1HrS2IQ9z5DfyTqU8sg4Bpu13zZe9V4+UTNQlUeQA==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.8.tgz", + "integrity": "sha512-8ytZ/fFHq2g4PJVAtDX57mayemKgDR6X3Oa2Foro+EygiOJHUXhCqBAAKQYYajZpFoIfvBCF1j6R6IYRSIUFuw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "2.1.4", - "@vitest/utils": "2.1.4", + "@vitest/spy": "2.1.8", + "@vitest/utils": "2.1.8", "chai": "^5.1.2", "tinyrainbow": "^1.2.0" }, @@ -4125,9 +3920,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.4.tgz", - "integrity": "sha512-L95zIAkEuTDbUX1IsjRl+vyBSLh3PwLLgKpghl37aCK9Jvw0iP+wKwIFhfjdUtA2myLgjrG6VU6JCFLv8q/3Ww==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.8.tgz", + "integrity": "sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4138,13 +3933,13 @@ } }, "node_modules/@vitest/runner": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.4.tgz", - "integrity": "sha512-sKRautINI9XICAMl2bjxQM8VfCMTB0EbsBc/EDFA57V6UQevEKY/TOPOF5nzcvCALltiLfXWbq4MaAwWx/YxIA==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.8.tgz", + "integrity": "sha512-17ub8vQstRnRlIU5k50bG+QOMLHRhYPAna5tw8tYbj+jzjcspnwnwtPtiOlkuKC4+ixDPTuLZiqiWWQ2PSXHVg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "2.1.4", + "@vitest/utils": "2.1.8", "pathe": "^1.1.2" }, "funding": { @@ -4152,13 +3947,13 @@ } }, "node_modules/@vitest/snapshot": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.4.tgz", - "integrity": "sha512-3Kab14fn/5QZRog5BPj6Rs8dc4B+mim27XaKWFWHWA87R56AKjHTGcBFKpvZKDzC4u5Wd0w/qKsUIio3KzWW4Q==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.8.tgz", + "integrity": "sha512-20T7xRFbmnkfcmgVEz+z3AU/3b0cEzZOt/zmnvZEctg64/QZbSDJEVm9fLnnlSi74KibmRsO9/Qabi+t0vCRPg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.1.4", + "@vitest/pretty-format": "2.1.8", "magic-string": "^0.30.12", "pathe": "^1.1.2" }, @@ -4167,9 +3962,9 @@ } }, "node_modules/@vitest/spy": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.4.tgz", - "integrity": "sha512-4JOxa+UAizJgpZfaCPKK2smq9d8mmjZVPMt2kOsg/R8QkoRzydHH1qHxIYNvr1zlEaFj4SXiaaJWxq/LPLKaLg==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.8.tgz", + "integrity": "sha512-5swjf2q95gXeYPevtW0BLk6H8+bPlMb4Vw/9Em4hFxDcaOxS+e0LOX4yqNxoHzMR2akEB2xfpnWUzkZokmgWDg==", "dev": true, "license": "MIT", "dependencies": { @@ -4180,13 +3975,13 @@ } }, "node_modules/@vitest/utils": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.4.tgz", - "integrity": "sha512-MXDnZn0Awl2S86PSNIim5PWXgIAx8CIkzu35mBdSApUip6RFOGXBCf3YFyeEu8n1IHk4bWD46DeYFu9mQlFIRg==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.8.tgz", + "integrity": "sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.1.4", + "@vitest/pretty-format": "2.1.8", "loupe": "^3.1.2", "tinyrainbow": "^1.2.0" }, @@ -4546,31 +4341,6 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "node_modules/builtin-modules": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", @@ -4622,9 +4392,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001678", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001678.tgz", - "integrity": "sha512-RR+4U/05gNtps58PEBDZcPWTgEO2MBeoPZ96aQcjmfkBWRIDfN451fW2qyDA9/+HohLLIL5GqiMwA+IB1pWarw==", + "version": "1.0.30001687", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001687.tgz", + "integrity": "sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ==", "dev": true, "funding": [ { @@ -4691,6 +4461,7 @@ "resolved": "https://registry.npmjs.org/change-case-all/-/change-case-all-2.1.0.tgz", "integrity": "sha512-v6b0WWWkZUMHVuYk82l+WROgkUm4qEN2w5hKRNWtEOYwWqUGoi8C6xH0l1RLF1EoWqDFK6MFclmN3od6ws3/uw==", "dev": true, + "license": "MIT", "dependencies": { "change-case": "^5.2.0", "sponge-case": "^2.0.2", @@ -4726,9 +4497,9 @@ } }, "node_modules/ci-info": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz", - "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.1.0.tgz", + "integrity": "sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==", "dev": true, "funding": [ { @@ -4969,9 +4740,9 @@ "license": "MIT" }, "node_modules/cross-spawn": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz", - "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { @@ -5130,9 +4901,9 @@ } }, "node_modules/dotenv": { - "version": "16.4.5", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -5161,21 +4932,9 @@ } }, "node_modules/electron-to-chromium": { -<<<<<<< HEAD -<<<<<<< HEAD "version": "1.5.72", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.72.tgz", "integrity": "sha512-ZpSAUOZ2Izby7qnZluSrAlGgGQzucmFbN0n64dYzocYxnxV5ufurpj3VgEe4cUp7ir9LmeLxNYo8bVnlM8bQHw==", -======= - "version": "1.5.71", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.71.tgz", - "integrity": "sha512-dB68l59BI75W1BUGVTAEJy45CEVuEGy9qPVVQ8pnHyHMn36PLPPoE1mjLH+lo9rKulO3HC2OhbACI/8tCqJBcA==", ->>>>>>> c4622c1c04 (fix process env error) -======= - "version": "1.5.55", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.55.tgz", - "integrity": "sha512-6maZ2ASDOTBtjt9FhqYPRnbvKU5tjG0IN9SztUOWYw2AzNDNpKJYLJmlK0/En4Hs/aiWnB+JZ+gW19PIGszgKg==", ->>>>>>> 0462109c0d (remove test and unused code) "dev": true, "license": "ISC" }, @@ -5217,6 +4976,13 @@ "dev": true, "license": "MIT" }, + "node_modules/es-module-lexer": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "dev": true, + "license": "MIT" + }, "node_modules/esbuild": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", @@ -5277,27 +5043,27 @@ } }, "node_modules/eslint": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.14.0.tgz", - "integrity": "sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==", + "version": "9.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.16.0.tgz", + "integrity": "sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.18.0", - "@eslint/core": "^0.7.0", - "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.14.0", - "@eslint/plugin-kit": "^0.2.0", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.9.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.16.0", + "@eslint/plugin-kit": "^0.2.3", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.0", + "@humanwhocodes/retry": "^0.4.1", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.5", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.2.0", @@ -5316,8 +5082,7 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" @@ -5338,9 +5103,9 @@ } }, "node_modules/eslint-plugin-unicorn": { - "version": "56.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-56.0.0.tgz", - "integrity": "sha512-aXpddVz/PQMmd69uxO98PA4iidiVNvA0xOtbpUoz1WhBd4RxOQQYqN618v68drY0hmy5uU2jy1bheKEVWBjlPw==", + "version": "56.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-56.0.1.tgz", + "integrity": "sha512-FwVV0Uwf8XPfVnKSGpMg7NtlZh0G0gBarCaFcMUOoqPxXryxdYxTRRv4kH6B9TFCVIrjRXG+emcxIk2ayZilog==", "dev": true, "license": "MIT", "dependencies": { @@ -5372,9 +5137,9 @@ } }, "node_modules/eslint-plugin-unicorn/node_modules/globals": { - "version": "15.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.12.0.tgz", - "integrity": "sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==", + "version": "15.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.13.0.tgz", + "integrity": "sha512-49TewVEz0UxZjr1WYYsWpPrhyC/B/pA8Bq0fUmet2n+eR7yn0IvNzNaoBwnK6mdkzcN+se7Ez9zUgULTz2QH4g==", "dev": true, "license": "MIT", "engines": { @@ -5667,16 +5432,6 @@ "node": ">=6" } }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, "node_modules/execa": { "version": "9.5.2", "resolved": "https://registry.npmjs.org/execa/-/execa-9.5.2.tgz", @@ -5744,9 +5499,9 @@ } }, "node_modules/execa/node_modules/pretty-ms": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.1.0.tgz", - "integrity": "sha512-o1piW0n3tgKIKCwk2vpM/vOV13zjJzvP37Ioze54YlTHE06m4tjEbzg9WsKkvTuyYln2DHjo5pY4qrZGI0otpw==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz", + "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==", "dev": true, "license": "MIT", "dependencies": { @@ -5963,9 +5718,9 @@ } }, "node_modules/flat-cache/node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", "dev": true, "license": "ISC" }, @@ -6503,27 +6258,6 @@ "node": ">=0.10.0" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -7041,15 +6775,15 @@ } }, "node_modules/jsonpath-plus": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-10.1.0.tgz", - "integrity": "sha512-gHfV1IYqH8uJHYVTs8BJX1XKy2/rR93+f8QQi0xhx95aCiXn1ettYAd5T+7FU6wfqyDoX/wy0pm/fL3jOKJ9Lg==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-10.2.0.tgz", + "integrity": "sha512-T9V+8iNYKFL2n2rF+w02LBOT2JjDnTjioaNFrxRy0Bv1y/hNsqR/EBK7Ojy2ythRHwmz2cRIls+9JitQGZC/sw==", "dev": true, "license": "MIT", "dependencies": { - "@jsep-plugin/assignment": "^1.2.1", - "@jsep-plugin/regex": "^1.0.3", - "jsep": "^1.3.9" + "@jsep-plugin/assignment": "^1.3.0", + "@jsep-plugin/regex": "^1.0.4", + "jsep": "^1.4.0" }, "bin": { "jsonpath": "bin/jsonpath-cli.js", @@ -7218,9 +6952,9 @@ "license": "MIT" }, "node_modules/logform": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.1.tgz", - "integrity": "sha512-CdaO738xRapbKIMVn2m4F6KTj4j7ooJ8POVnebSgKo3KBz5axNXRAL7ZdRjIV6NOr2Uf4vjtRkxrFETOioCqSA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.7.0.tgz", + "integrity": "sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7266,21 +7000,9 @@ } }, "node_modules/magic-string": { -<<<<<<< HEAD -<<<<<<< HEAD "version": "0.30.15", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.15.tgz", "integrity": "sha512-zXeaYRgZ6ldS1RJJUrMrYgNJ4fdwnyI6tVqoiIhyCyv5IVTK9BU8Ic2l253GGETQHxI4HNUwhJ3fjDhKqEoaAw==", -======= - "version": "0.30.14", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.14.tgz", - "integrity": "sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==", ->>>>>>> c4622c1c04 (fix process env error) -======= - "version": "0.30.12", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz", - "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==", ->>>>>>> 0462109c0d (remove test and unused code) "dev": true, "license": "MIT", "dependencies": { @@ -7500,9 +7222,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "dev": true, "funding": [ { @@ -8275,9 +7997,9 @@ } }, "node_modules/postcss": { - "version": "8.4.47", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", "dev": true, "funding": [ { @@ -8296,7 +8018,7 @@ "license": "MIT", "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.1.0", + "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, "engines": { @@ -8632,6 +8354,7 @@ "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-2.0.1.tgz", "integrity": "sha512-rjaeGbsmhNDcDInmwi4MuI6mRwJu6zq8GjYCLuSuE7GF+4UjgzkL69sVKKJ2T2xH61kK7rXvGYpvaTu909oXaQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.1.2", "retry": "^0.10.0" @@ -8645,18 +8368,22 @@ "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", "integrity": "sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, "node_modules/psl": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.10.0.tgz", - "integrity": "sha512-KSKHEbjAnpUuAUserOq0FxGXCUrzC3WniuSJhvdbs102rL55266ZcHBqLWOsG30spQMlPdpy7icATiAQehg/iA==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", "dev": true, "license": "MIT", "dependencies": { "punycode": "^2.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/lupomontero" } }, "node_modules/punycode": { @@ -8896,9 +8623,9 @@ } }, "node_modules/rollup": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.4.tgz", - "integrity": "sha512-vGorVWIsWfX3xbcyAS+I047kFKapHYivmkaT63Smj77XwvLSJos6M1xGqZnBPFQFBRZDOcG1QnYEIxAvTr/HjA==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.28.1.tgz", + "integrity": "sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg==", "dev": true, "license": "MIT", "dependencies": { @@ -8912,24 +8639,25 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.24.4", - "@rollup/rollup-android-arm64": "4.24.4", - "@rollup/rollup-darwin-arm64": "4.24.4", - "@rollup/rollup-darwin-x64": "4.24.4", - "@rollup/rollup-freebsd-arm64": "4.24.4", - "@rollup/rollup-freebsd-x64": "4.24.4", - "@rollup/rollup-linux-arm-gnueabihf": "4.24.4", - "@rollup/rollup-linux-arm-musleabihf": "4.24.4", - "@rollup/rollup-linux-arm64-gnu": "4.24.4", - "@rollup/rollup-linux-arm64-musl": "4.24.4", - "@rollup/rollup-linux-powerpc64le-gnu": "4.24.4", - "@rollup/rollup-linux-riscv64-gnu": "4.24.4", - "@rollup/rollup-linux-s390x-gnu": "4.24.4", - "@rollup/rollup-linux-x64-gnu": "4.24.4", - "@rollup/rollup-linux-x64-musl": "4.24.4", - "@rollup/rollup-win32-arm64-msvc": "4.24.4", - "@rollup/rollup-win32-ia32-msvc": "4.24.4", - "@rollup/rollup-win32-x64-msvc": "4.24.4", + "@rollup/rollup-android-arm-eabi": "4.28.1", + "@rollup/rollup-android-arm64": "4.28.1", + "@rollup/rollup-darwin-arm64": "4.28.1", + "@rollup/rollup-darwin-x64": "4.28.1", + "@rollup/rollup-freebsd-arm64": "4.28.1", + "@rollup/rollup-freebsd-x64": "4.28.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.28.1", + "@rollup/rollup-linux-arm-musleabihf": "4.28.1", + "@rollup/rollup-linux-arm64-gnu": "4.28.1", + "@rollup/rollup-linux-arm64-musl": "4.28.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.28.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.28.1", + "@rollup/rollup-linux-riscv64-gnu": "4.28.1", + "@rollup/rollup-linux-s390x-gnu": "4.28.1", + "@rollup/rollup-linux-x64-gnu": "4.28.1", + "@rollup/rollup-linux-x64-musl": "4.28.1", + "@rollup/rollup-win32-arm64-msvc": "4.28.1", + "@rollup/rollup-win32-ia32-msvc": "4.28.1", + "@rollup/rollup-win32-x64-msvc": "4.28.1", "fsevents": "~2.3.2" } }, @@ -9201,7 +8929,8 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/sponge-case/-/sponge-case-2.0.3.tgz", "integrity": "sha512-i4h9ZGRfxV6Xw3mpZSFOfbXjf0cQcYmssGWutgNIfFZ2VM+YIWfD71N/kjjwK6X/AAHzBr+rciEcn/L34S8TGw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/sprintf-js": { "version": "1.0.3", @@ -9253,9 +8982,9 @@ "license": "MIT" }, "node_modules/std-env": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", - "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz", + "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==", "dev": true, "license": "MIT" }, @@ -9472,7 +9201,8 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-3.0.3.tgz", "integrity": "sha512-6p4op8wE9CQv7uDFzulI6YXUw4lD9n4oQierdbFThEKVWVQcbQcUjdP27W8XE7V4QnWmnq9jueSHceyyQnqQVA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/teleport-javascript": { "version": "1.0.0", @@ -9567,13 +9297,6 @@ "dev": true, "license": "MIT" }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, "node_modules/tinybench": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", @@ -9589,9 +9312,9 @@ "license": "MIT" }, "node_modules/tinypool": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.1.tgz", - "integrity": "sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz", + "integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==", "dev": true, "license": "MIT", "engines": { @@ -9623,6 +9346,7 @@ "resolved": "https://registry.npmjs.org/title-case/-/title-case-3.0.3.tgz", "integrity": "sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -9665,9 +9389,9 @@ } }, "node_modules/ts-api-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.0.tgz", - "integrity": "sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", "dev": true, "license": "MIT", "engines": { @@ -9739,8 +9463,6 @@ } }, "node_modules/typescript-eslint": { -<<<<<<< HEAD -<<<<<<< HEAD "version": "8.18.0", "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.18.0.tgz", "integrity": "sha512-Xq2rRjn6tzVpAyHr3+nmSg1/9k9aIHnJ2iZeOH7cfGOWqTkXTm3kwpQglEuLGdNrYvPF+2gtAs+/KF5rjVo+WQ==", @@ -9750,28 +9472,6 @@ "@typescript-eslint/eslint-plugin": "8.18.0", "@typescript-eslint/parser": "8.18.0", "@typescript-eslint/utils": "8.18.0" -======= - "version": "8.17.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.17.0.tgz", - "integrity": "sha512-409VXvFd/f1br1DCbuKNFqQpXICoTB+V51afcwG1pn1a3Cp92MqAUges3YjwEdQ0cMUoCIodjVDAYzyD8h3SYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.17.0", - "@typescript-eslint/parser": "8.17.0", - "@typescript-eslint/utils": "8.17.0" ->>>>>>> c4622c1c04 (fix process env error) -======= - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.13.0.tgz", - "integrity": "sha512-vIMpDRJrQd70au2G8w34mPps0ezFSPMEX4pXkTzUkrNbRX+36ais2ksGWN0esZL+ZMaFJEneOBHzCgSqle7DHw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.13.0", - "@typescript-eslint/parser": "8.13.0", - "@typescript-eslint/utils": "8.13.0" ->>>>>>> 0462109c0d (remove test and unused code) }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -9780,21 +9480,9 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, -<<<<<<< HEAD "peerDependencies": { -<<<<<<< HEAD "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" -======= - "eslint": "^8.57.0 || ^9.0.0" - }, -======= ->>>>>>> 0462109c0d (remove test and unused code) - "peerDependenciesMeta": { - "typescript": { - "optional": true - } ->>>>>>> c4622c1c04 (fix process env error) } }, "node_modules/uglify-js": { @@ -9974,14 +9662,15 @@ } }, "node_modules/vite-node": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.4.tgz", - "integrity": "sha512-kqa9v+oi4HwkG6g8ufRnb5AeplcRw8jUF6/7/Qz1qRQOXHImG8YnLbB+LLszENwFnoBl9xIf9nVdCFzNd7GQEg==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.8.tgz", + "integrity": "sha512-uPAwSr57kYjAUux+8E2j0q0Fxpn8M9VoyfGiRI8Kfktz9NcYMCenwY5RnZxnF1WTu3TGiYipirIzacLL3VVGFg==", "dev": true, "license": "MIT", "dependencies": { "cac": "^6.7.14", "debug": "^4.3.7", + "es-module-lexer": "^1.5.4", "pathe": "^1.1.2", "vite": "^5.0.0" }, @@ -9996,42 +9685,30 @@ } }, "node_modules/vite-node/node_modules/@types/node": { -<<<<<<< HEAD -<<<<<<< HEAD "version": "22.10.2", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", -======= - "version": "22.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz", - "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==", ->>>>>>> c4622c1c04 (fix process env error) -======= - "version": "22.9.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz", - "integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==", ->>>>>>> 0462109c0d (remove test and unused code) "dev": true, "license": "MIT", "optional": true, "peer": true, "dependencies": { - "undici-types": "~6.19.8" + "undici-types": "~6.20.0" } }, "node_modules/vite-node/node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", "dev": true, "license": "MIT", "optional": true, "peer": true }, "node_modules/vite-node/node_modules/vite": { - "version": "5.4.10", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.10.tgz", - "integrity": "sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==", + "version": "5.4.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz", + "integrity": "sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==", "dev": true, "license": "MIT", "dependencies": { @@ -10093,6 +9770,7 @@ "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-3.6.2.tgz", "integrity": "sha512-T24Jb5V48e4VgYliUXMnZ379ItbrXgOimweKaJshD84z+8q7ZOZjJan0MeDe+Ugb+uqERDVV8SBmemaGMSMugA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4.0.0 || >=6.0.0" } @@ -10214,9 +9892,9 @@ } }, "node_modules/winston": { - "version": "3.16.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.16.0.tgz", - "integrity": "sha512-xz7+cyGN5M+4CmmD4Npq1/4T+UZaz7HaeTlAruFUTjk79CNMq+P6H30vlE4z0qfqJ01VHYQwd7OZo03nYm/+lg==", + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.17.0.tgz", + "integrity": "sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw==", "dev": true, "license": "MIT", "dependencies": { @@ -10224,50 +9902,33 @@ "@dabh/diagnostics": "^2.0.2", "async": "^3.2.3", "is-stream": "^2.0.0", - "logform": "^2.6.0", + "logform": "^2.7.0", "one-time": "^1.0.0", "readable-stream": "^3.4.0", "safe-stable-stringify": "^2.3.1", "stack-trace": "0.0.x", "triple-beam": "^1.3.0", - "winston-transport": "^4.7.0" + "winston-transport": "^4.9.0" }, "engines": { "node": ">= 12.0.0" } }, "node_modules/winston-transport": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.8.0.tgz", - "integrity": "sha512-qxSTKswC6llEMZKgCQdaWgDuMJQnhuvF5f2Nk3SNXc4byfQ+voo2mX1Px9dkNOuR8p0KAjfPG29PuYUSIb+vSA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.9.0.tgz", + "integrity": "sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==", "dev": true, "license": "MIT", "dependencies": { - "logform": "^2.6.1", - "readable-stream": "^4.5.2", + "logform": "^2.7.0", + "readable-stream": "^3.6.2", "triple-beam": "^1.3.0" }, "engines": { "node": ">= 12.0.0" } }, - "node_modules/winston-transport/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, "node_modules/winston/node_modules/@colors/colors": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", @@ -10437,9 +10098,9 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.0.tgz", - "integrity": "sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", + "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", "dev": true, "license": "ISC", "bin": { From 196850e199788ae64a8f5e29d6c02efe12e206e4 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Tue, 17 Dec 2024 19:52:59 +0800 Subject: [PATCH 162/190] fix comment & remove unused code --- .github/workflows/SDK-Suppressions-Label.yaml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 652ac91a9bca..9afbe870e758 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -13,7 +13,7 @@ on: jobs: process-sdk-suppressions-labels: - name: Process Sup + name: Sdk Suppression Labeling runs-on: ubuntu-latest permissions: contents: read @@ -67,10 +67,6 @@ jobs: node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js OUTPUT=$(cat $OUTPUT_FILE) echo "Script output labels: $OUTPUT" - - has_output=$(node -e "const fs = require('fs'); const data = JSON.parse(fs.readFileSync('$OUTPUT_FILE', 'utf8')); console.log(data.length === 0 ? 'false' : 'true');") - echo "Script has-output: $has_output" - echo "has-output=$has_output" >> $GITHUB_OUTPUT labelsToAdd=$(echo "$OUTPUT" | sed -n 's/.*"labelsToAdd":\[\([^]]*\)\].*/\1/p' | tr -d '" ') labelsToRemove=$(echo "$OUTPUT" | sed -n 's/.*"labelsToRemove":\[\([^]]*\)\].*/\1/p' | tr -d '" ') From b448bc387335eaed4b03215cb40fa606ba2d0de3 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Tue, 17 Dec 2024 20:15:08 +0800 Subject: [PATCH 163/190] console ajv error --- eng/tools/sdk-suppressions/src/sdkSuppressions.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/eng/tools/sdk-suppressions/src/sdkSuppressions.ts b/eng/tools/sdk-suppressions/src/sdkSuppressions.ts index fb98d586aebe..08801072c3cb 100644 --- a/eng/tools/sdk-suppressions/src/sdkSuppressions.ts +++ b/eng/tools/sdk-suppressions/src/sdkSuppressions.ts @@ -79,9 +79,11 @@ export function validateSdkSuppressionsFile(suppressionContent: string | object message: 'This suppression file is a valid yaml.' }; } else { + const message = 'This suppression file is a valid yaml but the schema is wrong: ' + suppressionAjv.errorsText(suppressionAjvCompile.errors, { separator: '\n' }); + console.error(message) return { result: false, - message: 'This suppression file is a valid yaml but the schema is wrong: ' + suppressionAjv.errorsText(suppressionAjvCompile.errors, { separator: '\n' }) + message: message }; } } From 23541cd3521d65e692a22238e2fe7cb55d7298ff Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Tue, 17 Dec 2024 20:29:25 +0800 Subject: [PATCH 164/190] bug fix --- eng/tools/sdk-suppressions/src/common.ts | 6 +- .../sdk-suppressions/src/sdkSuppressions.ts | 60 +++++++++++-------- .../src/updateSdkSuppressionsLabel.ts | 1 + 3 files changed, 39 insertions(+), 28 deletions(-) diff --git a/eng/tools/sdk-suppressions/src/common.ts b/eng/tools/sdk-suppressions/src/common.ts index 9ebfc07b670e..5603c7122e77 100644 --- a/eng/tools/sdk-suppressions/src/common.ts +++ b/eng/tools/sdk-suppressions/src/common.ts @@ -55,11 +55,13 @@ export async function runGitCommand(command: string): Promise { if (stderr) { console.error("Error Output:", stderr); - throw new Error(stderr); + // throw new Error(stderr); } return stdout.trim(); - } catch (error) { + } catch (error:any) { + console.error("Command failed:", error.message); + console.error("Error details:", error.stderr || error); console.error("Failed to execute Git command:", error); throw error; } diff --git a/eng/tools/sdk-suppressions/src/sdkSuppressions.ts b/eng/tools/sdk-suppressions/src/sdkSuppressions.ts index 08801072c3cb..985323c1f83b 100644 --- a/eng/tools/sdk-suppressions/src/sdkSuppressions.ts +++ b/eng/tools/sdk-suppressions/src/sdkSuppressions.ts @@ -1,10 +1,10 @@ /** * This file contains types for the contents of the SDK suppressions file, sdk-suppressions.yml. - * For details, see: + * For details, see: * - https://microsoftapc-my.sharepoint.com/:w:/g/personal/raychen_microsoft_com/EbOAA9SkhQhGlgxtf7mc0kUB-25bFue0EFbXKXS3TFLTQA */ -import Ajv from 'ajv'; +import Ajv from "ajv"; import { SdkName, sdkLabels } from "./sdk.js"; export const sdkSuppressionsFileName = "sdk-suppressions.yaml"; @@ -22,50 +22,56 @@ export type SdkPackageSuppressionsEntry = { "breaking-changes": string[]; }; -export function validateSdkSuppressionsFile(suppressionContent: string | object | undefined | null): { - result: boolean, - message: string +export function validateSdkSuppressionsFile( + suppressionContent: string | object | undefined | null, +): { + result: boolean; + message: string; } { if (suppressionContent === null) { + const message = "This suppression file is a empty file"; + console.error(message); return { result: false, - message: 'This suppression file is a empty file' + message: message, }; } if (!suppressionContent) { + const message = + "This suppression file is not a valid yaml. Refer to https://aka.ms/azsdk/sdk-suppression for more information."; return { result: false, - message: 'This suppression file is not a valid yaml. Refer to https://aka.ms/azsdk/sdk-suppression for more information.' + message: message, }; } const suppressionFileSchema = { - type: 'object', + type: "object", properties: { suppressions: { - type: 'object', + type: "object", propertyNames: { - enum: Object.keys(sdkLabels) + enum: Object.keys(sdkLabels), }, patternProperties: { "^.*$": { - type: 'array', + type: "array", items: { - type: 'object', + type: "object", properties: { - package: { type: 'string' }, - "breaking-changes": { type: 'array', items: { type: 'string' } } + package: { type: "string" }, + "breaking-changes": { type: "array", items: { type: "string" } }, }, - required: ['package', 'breaking-changes'], - additionalProperties: false - } - } - } - } + required: ["package", "breaking-changes"], + additionalProperties: false, + }, + }, + }, + }, }, - required: ['suppressions'], - additionalProperties: false + required: ["suppressions"], + additionalProperties: false, }; const suppressionAjv = new Ajv({ allErrors: true }); @@ -76,14 +82,16 @@ export function validateSdkSuppressionsFile(suppressionContent: string | object if (isValid) { return { result: true, - message: 'This suppression file is a valid yaml.' + message: "This suppression file is a valid yaml.", }; } else { - const message = 'This suppression file is a valid yaml but the schema is wrong: ' + suppressionAjv.errorsText(suppressionAjvCompile.errors, { separator: '\n' }); - console.error(message) + const message = + "This suppression file is a valid yaml but the schema is wrong: " + + suppressionAjv.errorsText(suppressionAjvCompile.errors, { separator: "\n" }); + console.error(message); return { result: false, - message: message + message: message, }; } } diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index 8de3cf887fbb..05510d4473e1 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -70,6 +70,7 @@ async function getSdkSuppressionsFileContent( ): Promise { try { const suppressionFileContent = await runGitCommand(`git show ${ref}:${path}`); + console.log(`Found content in ${ref}#${path}`); return parseYamlContent(suppressionFileContent, path).result; } catch (error) { console.log(`Not found content in ${ref}#${path}`); From d9d558f650d23b659e790a4de81317b01f0f8040 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Tue, 17 Dec 2024 20:41:38 +0800 Subject: [PATCH 165/190] bug fix --- .github/workflows/SDK-Suppressions-Label.yaml | 2 +- .../sdk-suppressions/src/sdkSuppressions.ts | 28 ++++++------------- 2 files changed, 9 insertions(+), 21 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 9afbe870e758..530112c423a3 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -57,7 +57,7 @@ jobs: core.setOutput("prContext", prContextStr); result-encoding: string - - name: Run get suppressions label script + - name: Run Get suppressions label script id: run-suppressions-script env: GITHUB_PULL_REQUEST_CONTEXT: ${{ steps.fetch-pullRequest-context.outputs.prContext }} diff --git a/eng/tools/sdk-suppressions/src/sdkSuppressions.ts b/eng/tools/sdk-suppressions/src/sdkSuppressions.ts index 985323c1f83b..fba2341bebd9 100644 --- a/eng/tools/sdk-suppressions/src/sdkSuppressions.ts +++ b/eng/tools/sdk-suppressions/src/sdkSuppressions.ts @@ -22,6 +22,11 @@ export type SdkPackageSuppressionsEntry = { "breaking-changes": string[]; }; +function errorAndExist(error: string): never { + console.error("Error:", error); + process.exit(1); +} + export function validateSdkSuppressionsFile( suppressionContent: string | object | undefined | null, ): { @@ -29,21 +34,11 @@ export function validateSdkSuppressionsFile( message: string; } { if (suppressionContent === null) { - const message = "This suppression file is a empty file"; - console.error(message); - return { - result: false, - message: message, - }; + errorAndExist("This suppression file is a empty file"); } if (!suppressionContent) { - const message = - "This suppression file is not a valid yaml. Refer to https://aka.ms/azsdk/sdk-suppression for more information."; - return { - result: false, - message: message, - }; + errorAndExist("This suppression file is not a valid yaml. Refer to https://aka.ms/azsdk/sdk-suppression for more information."); } const suppressionFileSchema = { @@ -85,13 +80,6 @@ export function validateSdkSuppressionsFile( message: "This suppression file is a valid yaml.", }; } else { - const message = - "This suppression file is a valid yaml but the schema is wrong: " + - suppressionAjv.errorsText(suppressionAjvCompile.errors, { separator: "\n" }); - console.error(message); - return { - result: false, - message: message, - }; + errorAndExist("This suppression file is a valid yaml but the schema is wrong: " + suppressionAjv.errorsText(suppressionAjvCompile.errors, { separator: "\n" })); } } From 36456c4a3bfab9aea92adc96698027d0a4887531 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Tue, 17 Dec 2024 20:55:26 +0800 Subject: [PATCH 166/190] bug fix --- eng/tools/sdk-suppressions/src/common.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/eng/tools/sdk-suppressions/src/common.ts b/eng/tools/sdk-suppressions/src/common.ts index 5603c7122e77..fa57777c1fbf 100644 --- a/eng/tools/sdk-suppressions/src/common.ts +++ b/eng/tools/sdk-suppressions/src/common.ts @@ -62,7 +62,6 @@ export async function runGitCommand(command: string): Promise { } catch (error:any) { console.error("Command failed:", error.message); console.error("Error details:", error.stderr || error); - console.error("Failed to execute Git command:", error); throw error; } } \ No newline at end of file From b85a0c5a341e31c1c5943df6cbd1e97007e56404 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Tue, 17 Dec 2024 21:02:18 +0800 Subject: [PATCH 167/190] bug fix --- eng/tools/sdk-suppressions/src/common.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/eng/tools/sdk-suppressions/src/common.ts b/eng/tools/sdk-suppressions/src/common.ts index fa57777c1fbf..59f9f29a3a8a 100644 --- a/eng/tools/sdk-suppressions/src/common.ts +++ b/eng/tools/sdk-suppressions/src/common.ts @@ -60,7 +60,6 @@ export async function runGitCommand(command: string): Promise { return stdout.trim(); } catch (error:any) { - console.error("Command failed:", error.message); console.error("Error details:", error.stderr || error); throw error; } From 0b357e8f3f8cde97c0c70f5d83e77fd4aff9b4e4 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Tue, 17 Dec 2024 21:04:41 +0800 Subject: [PATCH 168/190] fix comment --- .github/workflows/SDK-Suppressions-Label.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 530112c423a3..c4e92b368581 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -3,7 +3,9 @@ name: SDK Suppression Label on: pull_request: branches: - - jacktn/suppression-action + - main + - RPSaaSMaster + - release* types: - opened - synchronize From f82256e6230a970c292119af37f1ce1a31575176 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 19 Dec 2024 15:21:30 +0800 Subject: [PATCH 169/190] fix comment 1 --- .github/workflows/SDK-Suppressions-Label.yaml | 24 +++++-------------- 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index c4e92b368581..e4b8909f99cf 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -1,4 +1,4 @@ -name: SDK Suppression Label +name: SDK Suppressions on: pull_request: @@ -6,16 +6,10 @@ on: - main - RPSaaSMaster - release* - types: - - opened - - synchronize - - reopened - - workflow_dispatch: jobs: process-sdk-suppressions-labels: - name: Sdk Suppression Labeling + name: Sdk Suppressions runs-on: ubuntu-latest permissions: contents: read @@ -75,40 +69,34 @@ jobs: for label in $(echo $labelsToAdd | tr ',' '\n'); do echo "Label to add: $label" - echo "has-$label=true" >> $GITHUB_OUTPUT echo "$label=true" >> $GITHUB_OUTPUT done for label in $(echo $labelsToRemove | tr ',' '\n'); do echo "Label to remove: $label" - echo "has-$label=true" >> $GITHUB_OUTPUT echo "$label=false" >> $GITHUB_OUTPUT done - uses: ./.github/actions/add-label-artifact name: Upload artifact with results-go - if: ${{ steps.run-suppressions-script.outputs.has-BreakingChange-Go-Sdk-Suppression == 'true' }} with: name: "BreakingChange-Go-Sdk-Suppression" - value: "${{ steps.run-suppressions-script.outputs.BreakingChange-Go-Sdk-Suppression }}" + value: "${{ steps.run-suppressions-script.outputs.BreakingChange-Go-Sdk-Suppression == 'true' }}" - uses: ./.github/actions/add-label-artifact name: Upload artifact with results java - if: ${{ steps.run-suppressions-script.outputs.has-BreakingChange-Java-Sdk-Suppression == 'true' }} with: name: "BreakingChange-Java-Sdk-Suppression" - value: "${{ steps.run-suppressions-script.outputs.BreakingChange-Java-Sdk-Suppression }}" + value: "${{ steps.run-suppressions-script.outputs.BreakingChange-Java-Sdk-Suppression == 'true' }}" - uses: ./.github/actions/add-label-artifact name: Upload artifact with results js - if: ${{ steps.run-suppressions-script.outputs.has-BreakingChange-JavaScript-Sdk-Suppression == 'true' }} with: name: "BreakingChange-JavaScript-Sdk-Suppression" - value: "${{ steps.run-suppressions-script.outputs.BreakingChange-JavaScript-Sdk-Suppression }}" + value: "${{ steps.run-suppressions-script.outputs.BreakingChange-JavaScript-Sdk-Suppression == 'true' }}" - uses: ./.github/actions/add-label-artifact name: Upload artifact with results python - if: ${{ steps.run-suppressions-script.outputs.has-BreakingChange-Python-Sdk-Suppression == 'true' }} with: name: "BreakingChange-Python-Sdk-Suppression" - value: "${{ steps.run-suppressions-script.outputs.BreakingChange-Python-Sdk-Suppression }}" + value: "${{ steps.run-suppressions-script.outputs.BreakingChange-Python-Sdk-Suppression == 'true' }}" From 418f1016092b5588aff8b734f6beab4fe529c34c Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 19 Dec 2024 15:25:49 +0800 Subject: [PATCH 170/190] fix comment 1 --- .github/workflows/SDK-Suppressions-Label.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index e4b8909f99cf..be7e79d7d14d 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -6,6 +6,7 @@ on: - main - RPSaaSMaster - release* + - jacktn/suppression-action jobs: process-sdk-suppressions-labels: From 50de2310bf2b00ce5c536e1ff1d77437f1aa253e Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 19 Dec 2024 15:43:50 +0800 Subject: [PATCH 171/190] trigger to update label setting --- .github/workflows/update-labels.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-labels.yaml b/.github/workflows/update-labels.yaml index 25b0c447ddd4..5fd9c8d151d7 100644 --- a/.github/workflows/update-labels.yaml +++ b/.github/workflows/update-labels.yaml @@ -6,7 +6,7 @@ on: # types: [labeled, unlabeled] # If an upstream workflow if completed, get only the artifacts from that workflow, and update labels workflow_run: - workflows: ["TypeSpec Requirement", "SDK Suppression Label"] + workflows: ["TypeSpec Requirement", "SDK Suppressions"] types: [completed] workflow_dispatch: inputs: From be41133c1208a129ed2d18225e44104c258ca056 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 19 Dec 2024 16:21:28 +0800 Subject: [PATCH 172/190] add args for node script --- .github/workflows/SDK-Suppressions-Label.yaml | 2 +- eng/tools/sdk-suppressions/src/index.ts | 36 ++++++++++--------- .../src/updateSdkSuppressionsLabel.ts | 11 ++++-- 3 files changed, 28 insertions(+), 21 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index be7e79d7d14d..6d4118307117 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -61,7 +61,7 @@ jobs: OUTPUT_FILE: "output.json" GITHUB_PULL_REQUEST_CHANGE_FILES: ${{ steps.get-changedFiles.outputs.changedFiles }} run: | - node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js + node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js HEAD^ HEAD OUTPUT=$(cat $OUTPUT_FILE) echo "Script output labels: $OUTPUT" diff --git a/eng/tools/sdk-suppressions/src/index.ts b/eng/tools/sdk-suppressions/src/index.ts index b2e889348918..1b9094015d81 100644 --- a/eng/tools/sdk-suppressions/src/index.ts +++ b/eng/tools/sdk-suppressions/src/index.ts @@ -2,28 +2,30 @@ import { exit } from "process"; import { updateSdkSuppressionsLabels, PullRequestContext } from "./updateSdkSuppressionsLabel.js"; -function getUsage(): string { - return ( - "Parameter missing! \n" + - "Check GITHUB_PULL_REQUEST_CONTEXT where defined in step: Get GitHub PullRequest Context" + - "Check OUTPUT_FILE in step env: Run get suppressions label script " + - "Check The pr has change files in GITHUB_PULL_REQUEST_CHANGE_FILES " - ); - } +function getArgsError(): string { + return ( + "Usage: node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js baseCommitHash headCommitHash\n" + + "Returns: {labelsToAdd: [label1, label2],labelsToRemove: [lable3, label4]}\n" + ); +} export async function main() { + const args: string[] = process.argv.slice(2); + if (args.length === 2) { + const baseCommitHash: string = args[0]; + const headCommitHash: string = args[1]; const pullRequestContext = process.env.GITHUB_PULL_REQUEST_CONTEXT as string; const outputFile = process.env.OUTPUT_FILE as string; const prChangeFiles = process.env.GITHUB_PULL_REQUEST_CHANGE_FILES as string; - if (pullRequestContext && outputFile && prChangeFiles) { - const _pullRequestContext = JSON.parse(pullRequestContext) as unknown as PullRequestContext; - const changedLabels: {labelsToAdd: String[], labelsToRemove: String[]} = await updateSdkSuppressionsLabels(_pullRequestContext, prChangeFiles, outputFile); - console.log(JSON.stringify(changedLabels)); - exit(0); - } else { - console.error(getUsage()); - exit(1); - } + const _pullRequestContext = JSON.parse(pullRequestContext) as unknown as PullRequestContext; + const changedLabels: {labelsToAdd: String[], labelsToRemove: String[]} = await updateSdkSuppressionsLabels(_pullRequestContext, prChangeFiles, outputFile, baseCommitHash, headCommitHash); + console.log(JSON.stringify(changedLabels)); + exit(0); + } else { + console.error(getArgsError()); + exit(1); + } + } export { updateSdkSuppressionsLabels }; diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index 05510d4473e1..d9533ea32d11 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -28,14 +28,17 @@ export type PullRequestContext = { export async function getSdkSuppressionsSdkNames( pr: PullRequestContext, prChangeFiles: string, + baseCommitHash: string, + headCommitHash: string ): Promise { + console.log(`Will compare base commit: ${baseCommitHash} and head commit: ${headCommitHash} to get different SDK.`); const filesChangedPaths = prChangeFiles.split(" "); let suppressionFileList = filterSuppressionList(filesChangedPaths); let sdkNameList: SdkName[] = []; if (suppressionFileList.length > 0) { for (const suppressionFile of suppressionFileList) { - let baseSuppressionContent = await getSdkSuppressionsFileContent("HEAD^", suppressionFile); - const headSuppressionContent = await getSdkSuppressionsFileContent("HEAD", suppressionFile); + let baseSuppressionContent = await getSdkSuppressionsFileContent(baseCommitHash, suppressionFile); + const headSuppressionContent = await getSdkSuppressionsFileContent(headCommitHash, suppressionFile); // if the head suppression file is present but anything is wrong like schema error with it return const validateSdkSuppressionsFileResult = @@ -174,6 +177,8 @@ export async function updateSdkSuppressionsLabels( pr: PullRequestContext, prChangeFiles: string, outputFile: string, + baseCommitHash: string, + headCommitHash: string, ): Promise<{ labelsToAdd: String[]; labelsToRemove: String[] }> { try { const status = await runGitCommand("git status"); @@ -182,7 +187,7 @@ export async function updateSdkSuppressionsLabels( console.error("Error running git command:", err); } - const sdkNames = await getSdkSuppressionsSdkNames(pr, prChangeFiles); + const sdkNames = await getSdkSuppressionsSdkNames(pr, prChangeFiles, baseCommitHash, headCommitHash); console.log("Changed SdkNames", sdkNames); console.log( From 8d5ae35c0e55a026c38a6fd67288cc6d2904a3e9 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 19 Dec 2024 16:48:58 +0800 Subject: [PATCH 173/190] add condition for add label artificate --- .github/workflows/SDK-Suppressions-Label.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 6d4118307117..b7acf028ed5d 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -80,24 +80,28 @@ jobs: - uses: ./.github/actions/add-label-artifact name: Upload artifact with results-go + if: ${{ steps.run-suppressions-script.outputs.BreakingChange-Go-Sdk-Suppression }} with: name: "BreakingChange-Go-Sdk-Suppression" value: "${{ steps.run-suppressions-script.outputs.BreakingChange-Go-Sdk-Suppression == 'true' }}" - uses: ./.github/actions/add-label-artifact name: Upload artifact with results java + if: ${{ steps.run-suppressions-script.outputs.BreakingChange-Java-Sdk-Suppression }} with: name: "BreakingChange-Java-Sdk-Suppression" value: "${{ steps.run-suppressions-script.outputs.BreakingChange-Java-Sdk-Suppression == 'true' }}" - uses: ./.github/actions/add-label-artifact name: Upload artifact with results js + if: ${{ steps.run-suppressions-script.outputs.BreakingChange-JavaScript-Sdk-Suppression }} with: name: "BreakingChange-JavaScript-Sdk-Suppression" value: "${{ steps.run-suppressions-script.outputs.BreakingChange-JavaScript-Sdk-Suppression == 'true' }}" - uses: ./.github/actions/add-label-artifact name: Upload artifact with results python + if: ${{ steps.run-suppressions-script.outputs.BreakingChange-Python-Sdk-Suppression }} with: name: "BreakingChange-Python-Sdk-Suppression" value: "${{ steps.run-suppressions-script.outputs.BreakingChange-Python-Sdk-Suppression == 'true' }}" From abd7610923c0b2c4b4958e8178910adc43a51651 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 19 Dec 2024 17:05:42 +0800 Subject: [PATCH 174/190] add new args without env --- .github/workflows/SDK-Suppressions-Label.yaml | 4 ++- eng/tools/sdk-suppressions/src/index.ts | 12 ++++--- .../src/updateSdkSuppressionsLabel.ts | 32 +++++++++---------- 3 files changed, 26 insertions(+), 22 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index b7acf028ed5d..036fd46f559e 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -52,6 +52,7 @@ jobs: const prContextStr = JSON.stringify(prContext); console.log("PR Context:", prContextStr); core.setOutput("prContext", prContextStr); + core.setOutput("prLabels", pr.labels.map(label => label.name)); result-encoding: string - name: Run Get suppressions label script @@ -60,8 +61,9 @@ jobs: GITHUB_PULL_REQUEST_CONTEXT: ${{ steps.fetch-pullRequest-context.outputs.prContext }} OUTPUT_FILE: "output.json" GITHUB_PULL_REQUEST_CHANGE_FILES: ${{ steps.get-changedFiles.outputs.changedFiles }} + GITHUB_PULL_REQUEST_Labels: ${{ steps.fetch-pullRequest-context.outputs.prLabels }} run: | - node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js HEAD^ HEAD + node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js HEAD^ HEAD $GITHUB_PULL_REQUEST_CHANGE_FILES $GITHUB_PULL_REQUEST_Labels OUTPUT=$(cat $OUTPUT_FILE) echo "Script output labels: $OUTPUT" diff --git a/eng/tools/sdk-suppressions/src/index.ts b/eng/tools/sdk-suppressions/src/index.ts index 1b9094015d81..d642cd7ad7e8 100644 --- a/eng/tools/sdk-suppressions/src/index.ts +++ b/eng/tools/sdk-suppressions/src/index.ts @@ -1,6 +1,6 @@ import { exit } from "process"; -import { updateSdkSuppressionsLabels, PullRequestContext } from "./updateSdkSuppressionsLabel.js"; +import { updateSdkSuppressionsLabels } from "./updateSdkSuppressionsLabel.js"; function getArgsError(): string { return ( @@ -14,11 +14,13 @@ export async function main() { if (args.length === 2) { const baseCommitHash: string = args[0]; const headCommitHash: string = args[1]; - const pullRequestContext = process.env.GITHUB_PULL_REQUEST_CONTEXT as string; + const changeFiles: string = args[3]; + const lables: string[] = args[4] as unknown as string[]; const outputFile = process.env.OUTPUT_FILE as string; - const prChangeFiles = process.env.GITHUB_PULL_REQUEST_CHANGE_FILES as string; - const _pullRequestContext = JSON.parse(pullRequestContext) as unknown as PullRequestContext; - const changedLabels: {labelsToAdd: String[], labelsToRemove: String[]} = await updateSdkSuppressionsLabels(_pullRequestContext, prChangeFiles, outputFile, baseCommitHash, headCommitHash); + // const prChangeFiles = process.env.GITHUB_PULL_REQUEST_CHANGE_FILES as string; + // const pullRequestContext = process.env.GITHUB_PULL_REQUEST_CONTEXT as string; + // const _pullRequestContext = JSON.parse(pullRequestContext) as unknown as PullRequestContext; + const changedLabels: {labelsToAdd: String[], labelsToRemove: String[]} = await updateSdkSuppressionsLabels(lables, changeFiles, outputFile, baseCommitHash, headCommitHash); console.log(JSON.stringify(changedLabels)); exit(0); } else { diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index d9533ea32d11..cd03b6b4f1b0 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -10,11 +10,11 @@ import { } from "./sdkSuppressions.js"; import { parseYamlContent, runGitCommand } from "./common.js"; -export type PullRequestContext = { - labels: string[]; - number: number; - html_url: string; -}; +// export type PullRequestContext = { +// labels: string[]; +// number: number; +// html_url: string; +// }; /** * @@ -26,7 +26,6 @@ export type PullRequestContext = { * on the other hand that the sdkName list will return an empty array if it does not have a suppression file or if the file is blank. */ export async function getSdkSuppressionsSdkNames( - pr: PullRequestContext, prChangeFiles: string, baseCommitHash: string, headCommitHash: string @@ -52,7 +51,7 @@ export async function getSdkSuppressionsSdkNames( } console.log( - `updateSdkSuppressionsLabels: PR: ${pr.html_url} Will compare base suppressions content: ${JSON.stringify( + `updateSdkSuppressionsLabels: Will compare base suppressions content: ${JSON.stringify( baseSuppressionContent, )} and head suppressions content: ${JSON.stringify(headSuppressionContent)} to get different SDK.`, ); @@ -174,7 +173,7 @@ export function getSdkNamesWithChangedSuppressions( * 3. It leaves the label unchanged if the PR already has both the suppression and the suppression approved labels. */ export async function updateSdkSuppressionsLabels( - pr: PullRequestContext, + prLabels: string[], prChangeFiles: string, outputFile: string, baseCommitHash: string, @@ -187,15 +186,16 @@ export async function updateSdkSuppressionsLabels( console.error("Error running git command:", err); } - const sdkNames = await getSdkSuppressionsSdkNames(pr, prChangeFiles, baseCommitHash, headCommitHash); + const sdkNames = await getSdkSuppressionsSdkNames(prChangeFiles, baseCommitHash, headCommitHash); console.log("Changed SdkNames", sdkNames); console.log( - `updateSdkSuppressionsLabels: PR: ${pr.html_url} Get the required suppressions label based on compared SDK List ${sdkNames.join(", ")}`, + `updateSdkSuppressionsLabels: Get the required suppressions label based on compared SDK List ${sdkNames.join(", ")}`, ); let addSdkSuppressionsLabels: string[] = []; let removeSdkSuppressionsLabels: string[] = []; - const presentLabels = pr.labels; + console.log(`updateSdkSuppressionsLabels: Present labels: ${prLabels.join(", ")}`); + const presentLabels = [...prLabels]; // The sdkNames indicates whether any suppression files have been modified. If it is empty // then check if the suppression label was previously applied and remove it if so. Otherwise, no action is needed. if (sdkNames.length === 0) { @@ -209,7 +209,7 @@ export async function updateSdkSuppressionsLabels( ?.breakingChangeSuppressionApproved || ""; if (!presentLabels.includes(sdkSuppressionsApprovedLabel)) { console.log( - `updateSdkSuppressionsLabels: PR: ${pr.html_url} To remove the existed suppression label if there are no difference between head commit and base commit for the suppression content.`, + `updateSdkSuppressionsLabels: To remove the existed suppression label if there are no difference between head commit and base commit for the suppression content.`, ); removeSdkSuppressionsLabels.push(prLabel); } @@ -217,10 +217,10 @@ export async function updateSdkSuppressionsLabels( } if (removeSdkSuppressionsLabels.length > 0) { console.log( - `updateSdkSuppressionsLabels: PR: ${pr.html_url} Remove label: ${removeSdkSuppressionsLabels.join(", ")}`, + `updateSdkSuppressionsLabels: Remove label: ${removeSdkSuppressionsLabels.join(", ")}`, ); } else { - console.log(`updateSdkSuppressionsLabels: PR: ${pr.html_url} No Remove label`); + console.log(`updateSdkSuppressionsLabels: No Remove label`); } } else { // The presence of sdkNames indicates that the suppression file has changed between the head and base branch. The suppression label should be added if it is missing. @@ -233,10 +233,10 @@ export async function updateSdkSuppressionsLabels( } if (addSdkSuppressionsLabels.length > 0) { console.log( - `updateSdkSuppressionsLabels: PR: ${pr.html_url} add label: ${addSdkSuppressionsLabels.join(", ")}`, + `updateSdkSuppressionsLabels: add label: ${addSdkSuppressionsLabels.join(", ")}`, ); } else { - console.log(`updateSdkSuppressionsLabels: PR: ${pr.html_url} no add label`); + console.log(`updateSdkSuppressionsLabels: no add label`); } } From f485568bb9a3b7abd4be40aef842d584672a4829 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 19 Dec 2024 17:18:31 +0800 Subject: [PATCH 175/190] fix bug for args --- .github/workflows/SDK-Suppressions-Label.yaml | 4 ++-- eng/tools/sdk-suppressions/src/index.ts | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 036fd46f559e..c7a50da1a992 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -61,9 +61,9 @@ jobs: GITHUB_PULL_REQUEST_CONTEXT: ${{ steps.fetch-pullRequest-context.outputs.prContext }} OUTPUT_FILE: "output.json" GITHUB_PULL_REQUEST_CHANGE_FILES: ${{ steps.get-changedFiles.outputs.changedFiles }} - GITHUB_PULL_REQUEST_Labels: ${{ steps.fetch-pullRequest-context.outputs.prLabels }} + GITHUB_PULL_REQUEST_LABELS: ${{ steps.fetch-pullRequest-context.outputs.prLabels }} run: | - node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js HEAD^ HEAD $GITHUB_PULL_REQUEST_CHANGE_FILES $GITHUB_PULL_REQUEST_Labels + node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js HEAD^ HEAD $GITHUB_PULL_REQUEST_CHANGE_FILES $GITHUB_PULL_REQUEST_LABELS OUTPUT=$(cat $OUTPUT_FILE) echo "Script output labels: $OUTPUT" diff --git a/eng/tools/sdk-suppressions/src/index.ts b/eng/tools/sdk-suppressions/src/index.ts index d642cd7ad7e8..3bc9740cb509 100644 --- a/eng/tools/sdk-suppressions/src/index.ts +++ b/eng/tools/sdk-suppressions/src/index.ts @@ -10,12 +10,12 @@ function getArgsError(): string { } export async function main() { - const args: string[] = process.argv.slice(2); - if (args.length === 2) { + const args: string[] = process.argv.slice(4); + if (args.length === 4) { const baseCommitHash: string = args[0]; const headCommitHash: string = args[1]; - const changeFiles: string = args[3]; - const lables: string[] = args[4] as unknown as string[]; + const changeFiles: string = args[2]; + const lables: string[] = args[3] as unknown as string[]; const outputFile = process.env.OUTPUT_FILE as string; // const prChangeFiles = process.env.GITHUB_PULL_REQUEST_CHANGE_FILES as string; // const pullRequestContext = process.env.GITHUB_PULL_REQUEST_CONTEXT as string; From 4b1fcdcf7ba82600a6ac49ebe67b77303944ef88 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 19 Dec 2024 17:25:49 +0800 Subject: [PATCH 176/190] fix bug for args --- eng/tools/sdk-suppressions/src/index.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/eng/tools/sdk-suppressions/src/index.ts b/eng/tools/sdk-suppressions/src/index.ts index 3bc9740cb509..f33efa6740e4 100644 --- a/eng/tools/sdk-suppressions/src/index.ts +++ b/eng/tools/sdk-suppressions/src/index.ts @@ -2,8 +2,9 @@ import { exit } from "process"; import { updateSdkSuppressionsLabels } from "./updateSdkSuppressionsLabel.js"; -function getArgsError(): string { +function getArgsError(argsLen: number): string { return ( + "Get args lengths: " + argsLen + "\n" + "Usage: node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js baseCommitHash headCommitHash\n" + "Returns: {labelsToAdd: [label1, label2],labelsToRemove: [lable3, label4]}\n" ); @@ -24,7 +25,7 @@ export async function main() { console.log(JSON.stringify(changedLabels)); exit(0); } else { - console.error(getArgsError()); + console.error(getArgsError(args.length)); exit(1); } From 92f47620c1f447a8dcab178c67ee1d6d11a5b926 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 19 Dec 2024 18:15:23 +0800 Subject: [PATCH 177/190] fix bug for args --- eng/tools/sdk-suppressions/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/tools/sdk-suppressions/src/index.ts b/eng/tools/sdk-suppressions/src/index.ts index f33efa6740e4..0218fd6b3044 100644 --- a/eng/tools/sdk-suppressions/src/index.ts +++ b/eng/tools/sdk-suppressions/src/index.ts @@ -11,7 +11,7 @@ function getArgsError(argsLen: number): string { } export async function main() { - const args: string[] = process.argv.slice(4); + const args: string[] = process.argv.slice(2); if (args.length === 4) { const baseCommitHash: string = args[0]; const headCommitHash: string = args[1]; From adf88c701ccb93f6da63e0c8860036dbb3478bcb Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 19 Dec 2024 18:22:19 +0800 Subject: [PATCH 178/190] fix bug for args --- .github/workflows/SDK-Suppressions-Label.yaml | 1 + eng/tools/sdk-suppressions/src/index.ts | 12 +++++------- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index c7a50da1a992..cf30680bffa3 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -64,6 +64,7 @@ jobs: GITHUB_PULL_REQUEST_LABELS: ${{ steps.fetch-pullRequest-context.outputs.prLabels }} run: | node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js HEAD^ HEAD $GITHUB_PULL_REQUEST_CHANGE_FILES $GITHUB_PULL_REQUEST_LABELS + OUTPUT=$(cat $OUTPUT_FILE) echo "Script output labels: $OUTPUT" diff --git a/eng/tools/sdk-suppressions/src/index.ts b/eng/tools/sdk-suppressions/src/index.ts index 0218fd6b3044..42e0b1cca37d 100644 --- a/eng/tools/sdk-suppressions/src/index.ts +++ b/eng/tools/sdk-suppressions/src/index.ts @@ -2,9 +2,10 @@ import { exit } from "process"; import { updateSdkSuppressionsLabels } from "./updateSdkSuppressionsLabel.js"; -function getArgsError(argsLen: number): string { +function getArgsError(args: string[]): string { return ( - "Get args lengths: " + argsLen + "\n" + + "Get args lengths: " + args.length + "\n" + + "Details: " + args.join(', ') + "\n" + "Usage: node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js baseCommitHash headCommitHash\n" + "Returns: {labelsToAdd: [label1, label2],labelsToRemove: [lable3, label4]}\n" ); @@ -12,20 +13,17 @@ function getArgsError(argsLen: number): string { export async function main() { const args: string[] = process.argv.slice(2); - if (args.length === 4) { + if (args.length > 0) { const baseCommitHash: string = args[0]; const headCommitHash: string = args[1]; const changeFiles: string = args[2]; const lables: string[] = args[3] as unknown as string[]; const outputFile = process.env.OUTPUT_FILE as string; - // const prChangeFiles = process.env.GITHUB_PULL_REQUEST_CHANGE_FILES as string; - // const pullRequestContext = process.env.GITHUB_PULL_REQUEST_CONTEXT as string; - // const _pullRequestContext = JSON.parse(pullRequestContext) as unknown as PullRequestContext; const changedLabels: {labelsToAdd: String[], labelsToRemove: String[]} = await updateSdkSuppressionsLabels(lables, changeFiles, outputFile, baseCommitHash, headCommitHash); console.log(JSON.stringify(changedLabels)); exit(0); } else { - console.error(getArgsError(args.length)); + console.error(getArgsError(args)); exit(1); } From 37585a02e2957546a4929a4b362c011d9682c2e6 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 19 Dec 2024 18:32:44 +0800 Subject: [PATCH 179/190] fix bug for args --- .github/workflows/SDK-Suppressions-Label.yaml | 2 +- eng/tools/sdk-suppressions/src/index.ts | 4 ++-- .../src/updateSdkSuppressionsLabel.ts | 14 +++++--------- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index cf30680bffa3..8a1b20e4a545 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -63,7 +63,7 @@ jobs: GITHUB_PULL_REQUEST_CHANGE_FILES: ${{ steps.get-changedFiles.outputs.changedFiles }} GITHUB_PULL_REQUEST_LABELS: ${{ steps.fetch-pullRequest-context.outputs.prLabels }} run: | - node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js HEAD^ HEAD $GITHUB_PULL_REQUEST_CHANGE_FILES $GITHUB_PULL_REQUEST_LABELS + node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js HEAD^ HEAD "$GITHUB_PULL_REQUEST_CHANGE_FILES" "$GITHUB_PULL_REQUEST_LABELS" OUTPUT=$(cat $OUTPUT_FILE) echo "Script output labels: $OUTPUT" diff --git a/eng/tools/sdk-suppressions/src/index.ts b/eng/tools/sdk-suppressions/src/index.ts index 42e0b1cca37d..6f7cbb8cc9a6 100644 --- a/eng/tools/sdk-suppressions/src/index.ts +++ b/eng/tools/sdk-suppressions/src/index.ts @@ -13,11 +13,11 @@ function getArgsError(args: string[]): string { export async function main() { const args: string[] = process.argv.slice(2); - if (args.length > 0) { + if (args.length === 4) { const baseCommitHash: string = args[0]; const headCommitHash: string = args[1]; const changeFiles: string = args[2]; - const lables: string[] = args[3] as unknown as string[]; + const lables: string = args[3]; const outputFile = process.env.OUTPUT_FILE as string; const changedLabels: {labelsToAdd: String[], labelsToRemove: String[]} = await updateSdkSuppressionsLabels(lables, changeFiles, outputFile, baseCommitHash, headCommitHash); console.log(JSON.stringify(changedLabels)); diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index cd03b6b4f1b0..c629734f4505 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -10,12 +10,6 @@ import { } from "./sdkSuppressions.js"; import { parseYamlContent, runGitCommand } from "./common.js"; -// export type PullRequestContext = { -// labels: string[]; -// number: number; -// html_url: string; -// }; - /** * * @param pr @@ -32,7 +26,9 @@ export async function getSdkSuppressionsSdkNames( ): Promise { console.log(`Will compare base commit: ${baseCommitHash} and head commit: ${headCommitHash} to get different SDK.`); const filesChangedPaths = prChangeFiles.split(" "); + console.log(`The pr origin changed files: ${filesChangedPaths.join(", ")}`); let suppressionFileList = filterSuppressionList(filesChangedPaths); + console.log(`Will compare sdk-suppression.yaml files: ${suppressionFileList.join(", ")}`); let sdkNameList: SdkName[] = []; if (suppressionFileList.length > 0) { for (const suppressionFile of suppressionFileList) { @@ -173,7 +169,7 @@ export function getSdkNamesWithChangedSuppressions( * 3. It leaves the label unchanged if the PR already has both the suppression and the suppression approved labels. */ export async function updateSdkSuppressionsLabels( - prLabels: string[], + prLabels: string, prChangeFiles: string, outputFile: string, baseCommitHash: string, @@ -194,8 +190,8 @@ export async function updateSdkSuppressionsLabels( ); let addSdkSuppressionsLabels: string[] = []; let removeSdkSuppressionsLabels: string[] = []; - console.log(`updateSdkSuppressionsLabels: Present labels: ${prLabels.join(", ")}`); - const presentLabels = [...prLabels]; + const presentLabels = JSON.parse(prLabels); + console.log(`updateSdkSuppressionsLabels: Present labels: ${presentLabels.join(", ")}`); // The sdkNames indicates whether any suppression files have been modified. If it is empty // then check if the suppression label was previously applied and remove it if so. Otherwise, no action is needed. if (sdkNames.length === 0) { From 8f7f4a2de12a7161af652b0c8401ffe8080e7fd7 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 19 Dec 2024 18:40:17 +0800 Subject: [PATCH 180/190] change comment --- .../sdk-suppressions/src/updateSdkSuppressionsLabel.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index c629734f4505..1ec215343da9 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -47,9 +47,10 @@ export async function getSdkSuppressionsSdkNames( } console.log( - `updateSdkSuppressionsLabels: Will compare base suppressions content: ${JSON.stringify( - baseSuppressionContent, - )} and head suppressions content: ${JSON.stringify(headSuppressionContent)} to get different SDK.`, + `updateSdkSuppressionsLabels: Will compare base suppressions content : \n + ${JSON.stringify(baseSuppressionContent)} \n + and head suppressions content: \n + ${JSON.stringify(headSuppressionContent)} to get different SDK. \n`, ); sdkNameList = getSdkNamesWithChangedSuppressions( From b72f42368c1e1c7aa8e66888990ab0b78032f1c6 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 19 Dec 2024 20:17:15 +0800 Subject: [PATCH 181/190] refactor process label --- .../src/updateSdkSuppressionsLabel.ts | 110 +++++++++--------- 1 file changed, 58 insertions(+), 52 deletions(-) diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index 1ec215343da9..54fdf4358a85 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -47,10 +47,10 @@ export async function getSdkSuppressionsSdkNames( } console.log( - `updateSdkSuppressionsLabels: Will compare base suppressions content : \n - ${JSON.stringify(baseSuppressionContent)} \n - and head suppressions content: \n - ${JSON.stringify(headSuppressionContent)} to get different SDK. \n`, + `updateSdkSuppressionsLabels: Will compare base suppressions content:\n ` + + `${JSON.stringify(baseSuppressionContent)}\n ` + + `and head suppressions content:\n ` + + `${JSON.stringify(headSuppressionContent)} to get different SDK.`, ); sdkNameList = getSdkNamesWithChangedSuppressions( @@ -184,67 +184,73 @@ export async function updateSdkSuppressionsLabels( } const sdkNames = await getSdkSuppressionsSdkNames(prChangeFiles, baseCommitHash, headCommitHash); - console.log("Changed SdkNames", sdkNames); console.log( `updateSdkSuppressionsLabels: Get the required suppressions label based on compared SDK List ${sdkNames.join(", ")}`, ); - let addSdkSuppressionsLabels: string[] = []; - let removeSdkSuppressionsLabels: string[] = []; - const presentLabels = JSON.parse(prLabels); + + const presentLabels = JSON.parse(prLabels) as string[]; console.log(`updateSdkSuppressionsLabels: Present labels: ${presentLabels.join(", ")}`); + + const result = processLabels(presentLabels, sdkNames); + + writeFileSync(outputFile, JSON.stringify(result)); + console.log(`😊 JSON output saved to ${outputFile}`); + + return result; +} +/** + * + * @param presentLabels + * @param sdkNames + * @returns {labelsToAdd: String[], labelsToRemove: String[]} + * + * Add logic: If the breakingChangeSuppression label corresponding to an SDK in sdkNames is not in the current presentLabels list, + * add the label to labelsToAdd. + * Remove logic: If a label is in presentLabels and the corresponding breakingChangeSuppression is not in sdkNames + * and there is no corresponding breakingChangeSuppressionApproved label, then the label is deleted. + * Otherwise, the label is not deleted. + */ +export function processLabels(presentLabels: string[], sdkNames: string[]): { labelsToAdd: String[]; labelsToRemove: String[] } { // The sdkNames indicates whether any suppression files have been modified. If it is empty // then check if the suppression label was previously applied and remove it if so. Otherwise, no action is needed. - if (sdkNames.length === 0) { - const sdkSuppressionsLabels = Object.values(sdkLabels) - .map((sdkName) => sdkName.breakingChangeSuppression) - .filter((breakingChangeSuppressionLabel) => breakingChangeSuppressionLabel !== undefined); - for (let prLabel of presentLabels) { - if (sdkSuppressionsLabels.includes(prLabel)) { - const sdkSuppressionsApprovedLabel = - Object.values(sdkLabels).find((sdkName) => sdkName.breakingChangeSuppression === prLabel) - ?.breakingChangeSuppressionApproved || ""; - if (!presentLabels.includes(sdkSuppressionsApprovedLabel)) { - console.log( - `updateSdkSuppressionsLabels: To remove the existed suppression label if there are no difference between head commit and base commit for the suppression content.`, - ); - removeSdkSuppressionsLabels.push(prLabel); - } - } - } - if (removeSdkSuppressionsLabels.length > 0) { - console.log( - `updateSdkSuppressionsLabels: Remove label: ${removeSdkSuppressionsLabels.join(", ")}`, - ); - } else { - console.log(`updateSdkSuppressionsLabels: No Remove label`); + let addSdkSuppressionsLabels: string[] = []; + let removeSdkSuppressionsLabels: string[] = []; + sdkNames.forEach((sdkName) => { + const sdk = sdkLabels[sdkName as SdkName]; + const breakingChangeSuppression = sdk.breakingChangeSuppression; + // If breakingChangeSuppression is not in the existing labels, add it to labelsToAdd + if ( + breakingChangeSuppression && + !presentLabels.includes(breakingChangeSuppression) + ) { + addSdkSuppressionsLabels.push(breakingChangeSuppression); } - } else { - // The presence of sdkNames indicates that the suppression file has changed between the head and base branch. The suppression label should be added if it is missing. - - for (let sdkName of sdkNames) { - const sdkSuppressionsLabel = sdkLabels[sdkName].breakingChangeSuppression || ""; - if (!presentLabels.includes(sdkSuppressionsLabel)) { - addSdkSuppressionsLabels.push(sdkSuppressionsLabel); + }); + + presentLabels.forEach(label => { + // Check if it is a suppression label + const suppressionLabelExists = Object.values(sdkLabels).some(sdk => { + return sdk.breakingChangeSuppression === label; + }); + + // If it is a suppression label + if (suppressionLabelExists) { + // Check if there is a corresponding approved label + const hasApprovedLabel = Object.values(sdkLabels).some(sdk => { + return sdk.breakingChangeSuppression === label && sdk.breakingChangeSuppressionApproved && presentLabels.includes(sdk.breakingChangeSuppressionApproved); + }); + // If there is no corresponding approved label and there is no suppression label in sdkNames, delete it. + if (!hasApprovedLabel && !sdkNames.some(sdkName => sdkLabels[sdkName as SdkName].breakingChangeSuppression === label)) { + removeSdkSuppressionsLabels.push(label); } } - if (addSdkSuppressionsLabels.length > 0) { - console.log( - `updateSdkSuppressionsLabels: add label: ${addSdkSuppressionsLabels.join(", ")}`, - ); - } else { - console.log(`updateSdkSuppressionsLabels: no add label`); - } - } - - const result = { + }); + + return { labelsToAdd: addSdkSuppressionsLabels, labelsToRemove: removeSdkSuppressionsLabels, }; - writeFileSync(outputFile, JSON.stringify(result)); - console.log("JSON output saved to output.json"); - - return result; } /** From b1d941811583667c9b8bb84109d240ea063f71cb Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 19 Dec 2024 22:24:01 +0800 Subject: [PATCH 182/190] add test --- eng/tools/sdk-suppressions/package.json | 9 +- eng/tools/sdk-suppressions/src/common.ts | 53 +++-- eng/tools/sdk-suppressions/src/index.ts | 9 +- .../src/updateSdkSuppressionsLabel.ts | 3 +- .../test/updateSdkSuppressionsLabel.test.ts | 184 ++++++++++++++++++ package-lock.json | 6 +- 6 files changed, 231 insertions(+), 33 deletions(-) create mode 100644 eng/tools/sdk-suppressions/test/updateSdkSuppressionsLabel.test.ts diff --git a/eng/tools/sdk-suppressions/package.json b/eng/tools/sdk-suppressions/package.json index ba2ccd6ea73e..347a649a4394 100644 --- a/eng/tools/sdk-suppressions/package.json +++ b/eng/tools/sdk-suppressions/package.json @@ -9,7 +9,8 @@ }, "scripts": { "build": "tsc --build", - "start": "npm run build && node cmd/sdk-suppressions-label.js" + "test": "vitest", + "test:ci": "vitest run --coverage --reporter=verbose" }, "engines": { "node": ">= 18.0.0" @@ -21,6 +22,10 @@ }, "devDependencies": { "@types/js-yaml": "^3.12.5", - "@types/lodash": "^4.14.161" + "@types/lodash": "^4.14.161", + "@types/node": "^18.19.31", + "@vitest/coverage-v8": "^2.0.4", + "typescript": "~5.6.2", + "vitest": "^2.0.4" } } diff --git a/eng/tools/sdk-suppressions/src/common.ts b/eng/tools/sdk-suppressions/src/common.ts index 59f9f29a3a8a..3fe233f2deee 100644 --- a/eng/tools/sdk-suppressions/src/common.ts +++ b/eng/tools/sdk-suppressions/src/common.ts @@ -13,38 +13,37 @@ import { promisify } from "util"; * if the file parse error, return {result: undefined, message: string */ export function parseYamlContent(yamlContent: string, path: string): { - result: string | object | undefined | null; - message: string; - } { - let content = undefined; - // if yaml file is not a valid yaml, catch error and return undefined - try { - content = load(yamlContent); - } catch (error) { - console.error(`The file parsing failed in the ${path}. Details: ${error}`); - return { - result: content, - message: `The file parsing failed in the ${path}. Details: ${error}` - };; - } - - // if yaml file is empty, run yaml.safeload success but get undefined - // to identify whether it is empty return null to distinguish. - if (!content) { - console.info(`The file in the ${path} has been successfully parsed, but it is an empty file.`) - return { - result: null, - message: `The file in the ${path} has been successfully parsed, but it is an empty file.` - };; - } - + result: string | object | undefined | null; + message: string; +}{ + let content = undefined; + // if yaml file is not a valid yaml, catch error and return undefined + try { + content = load(yamlContent); + } catch (error) { + console.error(`The file parsing failed in the ${path}. Details: ${error}`); return { result: content, - message: 'The file has been successfully parsed.' - }; + message: `The file parsing failed in the ${path}. Details: ${error}` + };; + } + // if yaml file is empty, run yaml.safeload success but get undefined + // to identify whether it is empty return null to distinguish. + if (!content) { + console.info(`The file in the ${path} has been successfully parsed, but it is an empty file.`) + return { + result: null, + message: `The file in the ${path} has been successfully parsed, but it is an empty file.` + };; } + return { + result: content, + message: 'The file has been successfully parsed.' + }; + +} // Promisify the exec function const execAsync = promisify(exec); diff --git a/eng/tools/sdk-suppressions/src/index.ts b/eng/tools/sdk-suppressions/src/index.ts index 6f7cbb8cc9a6..a9318a61608a 100644 --- a/eng/tools/sdk-suppressions/src/index.ts +++ b/eng/tools/sdk-suppressions/src/index.ts @@ -6,8 +6,13 @@ function getArgsError(args: string[]): string { return ( "Get args lengths: " + args.length + "\n" + "Details: " + args.join(', ') + "\n" + - "Usage: node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js baseCommitHash headCommitHash\n" + - "Returns: {labelsToAdd: [label1, label2],labelsToRemove: [lable3, label4]}\n" + "Usage: node eng/tools/sdk-suppressions/cmd/sdk-suppressions-label.js baseCommitHash headCommitHash changeFiles prLabels\n" + + "Returns: {labelsToAdd: [label1, label2],labelsToRemove: [lable3, label4]}\n" + + "Parameters:\n" + + " baseCommitHash: The base commit hash. Example: HEAD^ \n" + + " headCommitHash: The head commit hash. Example: HEAD \n" + + " changeFiles: The changed files. Example: 'specification/workloads/Workloads.Operations.Management/sdk-suppressions.yaml specification/workloads/Workloads.Operations.Management/main.tsp'\n" + + " prLabels: The PR has added labels. Example: '['BreakingChange-Go-Sdk-Suppression', 'BreakingChange-Python-Sdk-Suppression']'\n" ); } diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index 54fdf4358a85..dcf066d38e2d 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -63,7 +63,7 @@ export async function getSdkSuppressionsSdkNames( return [...new Set(sdkNameList)]; } -async function getSdkSuppressionsFileContent( +export async function getSdkSuppressionsFileContent( ref: string, path: string, ): Promise { @@ -199,6 +199,7 @@ export async function updateSdkSuppressionsLabels( return result; } + /** * * @param presentLabels diff --git a/eng/tools/sdk-suppressions/test/updateSdkSuppressionsLabel.test.ts b/eng/tools/sdk-suppressions/test/updateSdkSuppressionsLabel.test.ts new file mode 100644 index 000000000000..dc875efce808 --- /dev/null +++ b/eng/tools/sdk-suppressions/test/updateSdkSuppressionsLabel.test.ts @@ -0,0 +1,184 @@ +import { vi, expect, test } from "vitest"; +import { filterSuppressionList, getSdkNamesWithChangedSuppressions, processLabels } from "../src/updateSdkSuppressionsLabel.js"; +import { validateSdkSuppressionsFile } from "../src/sdkSuppressions.js"; + +vi.mock("process", () => ({ + exit: vi.fn(), +})); + +test("test filterSuppressionList for only resource-manager files", () => { + const changeFiles = [ + "specification/datafactory/resource-manager/Microsoft.DataFactory/stable/2018-06-01/datafactory.json", + "specification/datafactory/resource-manager/sdk-suppressions.yaml" + ]; + const suppressionsFiles: String[] = filterSuppressionList(changeFiles); + expect(suppressionsFiles).toEqual(["specification/datafactory/resource-manager/sdk-suppressions.yaml"]); +}); + +test("test filterSuppressionList for both tsp files and resource-manager files", () => { + const changeFiles = [ + "specification/workloads/Workloads.Operations.Management/main.tsp", + "specification/workloads/Workloads.Operations.Management/sdk-suppressions.yaml", + "specification/workloads/resource-manager/Microsoft.Workloads/operations/preview/2023-10-01-preview/operations.json", + "specification/workloads/resource-manager/Microsoft.Workloads/operations/preview/2024-02-01-preview/operations.json", + "specification/workloads/resource-manager/Microsoft.Workloads/operations/preview/2023-12-01-preview/operations.json", + "specification/workloads/resource-manager/Microsoft.Workloads/operations/stable/2024-09-01/operations.json", + "specification/workloads/resource-manager/sdk-suppressions.yaml" + ]; + const suppressionsFiles: String[] = filterSuppressionList(changeFiles); + expect(suppressionsFiles).toEqual(["specification/workloads/Workloads.Operations.Management/sdk-suppressions.yaml"]); +}); + +test("test validateSdkSuppressionsFile for sdk-suppression file", () => { + const suppressionContent = { + "suppressions": { + "azure-sdk-for-go": [ + { + "package": "sdk/resourcemanager/appcontainers/armappcontainers", + "breaking-changes": [ + "Field `EndTime`, `StartTime`, `Status`, `Template` of struct `JobExecution` has been removed" + ] + } + ], + "azure-sdk-for-python": [ + { + "package": "azure-mgmt-appcontainers", + "breaking-changes": [ + "Model BillingMeter no longer has parameter system_data" + ] + } + ] + } + }; + + const validateResult = validateSdkSuppressionsFile(suppressionContent); + expect(validateResult).toEqual({ result: true, message: 'This suppression file is a valid yaml.' }); +}); + +test("test validateSdkSuppressionsFile for empty file", () => { + const consoleSpy = vi.spyOn(console, "error").mockImplementation(() => {}); + const mockProcessExit = vi.spyOn(process, "exit").mockImplementation(() => { + throw new Error("process.exit called"); // Prevent actual exit + }); + + expect(() => validateSdkSuppressionsFile(null)).toThrow("process.exit called"); + expect(consoleSpy).toHaveBeenCalledWith("Error:", "This suppression file is a empty file"); + expect(mockProcessExit).toHaveBeenCalledWith(1); + + consoleSpy.mockRestore(); + mockProcessExit.mockRestore(); +}); + +test("test validateSdkSuppressionsFile for undefined file", () => { + const consoleSpy = vi.spyOn(console, "error").mockImplementation(() => {}); + const mockProcessExit = vi.spyOn(process, "exit").mockImplementation(() => { + throw new Error("process.exit called"); // Prevent actual exit + }); + + expect(() => validateSdkSuppressionsFile(undefined)).toThrow("process.exit called"); + expect(consoleSpy).toHaveBeenCalledWith("Error:", "This suppression file is not a valid yaml. Refer to https://aka.ms/azsdk/sdk-suppression for more information."); + expect(mockProcessExit).toHaveBeenCalledWith(1); + + consoleSpy.mockRestore(); + mockProcessExit.mockRestore(); +}); + +test("test validateSdkSuppressionsFile for error structor file", () => { + const consoleSpy = vi.spyOn(console, "error").mockImplementation(() => {}); + const mockProcessExit = vi.spyOn(process, "exit").mockImplementation(() => { + throw new Error("process.exit called"); // Prevent actual exit + }); + + const suppressionContent = { + "suppressions": { + "azure-sdk-for-go": [ + { + "package": "sdk/resourcemanager/appcontainers/armappcontainers" + } + ], + "azure-sdk-for-python": [ + { + "package": "azure-mgmt-appcontainers", + "breaking-changes": [ + "Model BillingMeter no longer has parameter system_data" + ] + } + ] + } + }; + + expect(() => validateSdkSuppressionsFile(suppressionContent)).toThrow("process.exit called"); + expect(consoleSpy).toHaveBeenCalledWith("Error:", "This suppression file is a valid yaml but the schema is wrong: data.suppressions['azure-sdk-for-go'][0] should have required property 'breaking-changes'"); + expect(mockProcessExit).toHaveBeenCalledWith(1); + + consoleSpy.mockRestore(); + mockProcessExit.mockRestore(); +}); + +test("test getSdkNamesWithChangedSuppressions", () => { + const headCont = { + "suppressions": { + "azure-sdk-for-python": [ + { + "package": "azure-mgmt-appcontainers", + "breaking-changes": [ + "Model BillingMeter no longer has parameter system_data AAA" + ] + } + ], + "azure-sdk-for-go": [ + { + "package": "sdk/resourcemanager/appcontainers/armappcontainers", + "breaking-changes": [ + "Field `EndTime`, `StartTime`, `Status`, `Template` of struct `JobExecution` has been removed" + ] + } + ] + } + }; + const baseCont = { + "suppressions": { + "azure-sdk-for-python": [ + { + "package": "azure-mgmt-appcontainers", + "breaking-changes": [ + "Model BillingMeter no longer has parameter system_data" + ] + } + ], + "azure-sdk-for-go": [ + { + "package": "sdk/resourcemanager/appcontainers/armappcontainers", + "breaking-changes": [ + "Field `EndTime`, `StartTime`, `Status`, `Template` of struct `JobExecution` has been removed" + ] + } + ] + } + }; + + const sdkNames = getSdkNamesWithChangedSuppressions(headCont, baseCont); + expect(sdkNames).toEqual(["azure-sdk-for-python"]); +}); + +test("test processLabels will add new label when has sdkNames", () => { + const sdkNames: string[] = ["azure-sdk-for-go", "azure-sdk-for-js"]; + const presentLabels: string[] = ["aa", "BreakingChange-Go-Sdk-Suppression"]; + const result = processLabels(presentLabels, sdkNames); + expect(result).toEqual({ labelsToAdd: ["BreakingChange-JavaScript-Sdk-Suppression"], labelsToRemove: [] }); + +}); + +test("test processLabels will remove old label when has the sdkNames not exist", () => { + const sdkNames: string[] = ["azure-sdk-for-js"]; + const presentLabels: string[] = ["aa", "BreakingChange-Go-Sdk-Suppression"]; + const result = processLabels(presentLabels, sdkNames); + expect(result).toEqual({ labelsToAdd: ["BreakingChange-JavaScript-Sdk-Suppression"], labelsToRemove: ["BreakingChange-Go-Sdk-Suppression"] }); + }); + +test("test processLabels will not remove old label when has the sdkNames not exist & has corresponding suppression approved", () => { + const sdkNames: string[] = ["azure-sdk-for-go"]; + const presentLabels: string[] = ["aa", "BreakingChange-Go-Sdk-Suppression", "BreakingChange-JavaScript-Sdk-Suppression", "BreakingChange-JavaScript-Sdk-Suppression-Approved"]; + const result = processLabels(presentLabels, sdkNames); + expect(result).toEqual({ labelsToAdd: [], labelsToRemove: [] }); +}); diff --git a/package-lock.json b/package-lock.json index 256e85a67620..cab14acb30dd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -338,7 +338,11 @@ }, "devDependencies": { "@types/js-yaml": "^3.12.5", - "@types/lodash": "^4.14.161" + "@types/lodash": "^4.14.161", + "@types/node": "^18.19.31", + "@vitest/coverage-v8": "^2.0.4", + "typescript": "~5.6.2", + "vitest": "^2.0.4" }, "engines": { "node": ">= 18.0.0" From be7b89289720b95cd121c671a4b486b71f967686 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Thu, 19 Dec 2024 22:30:35 +0800 Subject: [PATCH 183/190] remove unused code and test branch --- .github/workflows/SDK-Suppressions-Label.yaml | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 8a1b20e4a545..9cf28e608375 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -6,7 +6,6 @@ on: - main - RPSaaSMaster - release* - - jacktn/suppression-action jobs: process-sdk-suppressions-labels: @@ -43,22 +42,12 @@ jobs: throw new Error("This workflow must run in the context of a pull request."); } console.log("This action trigger by ", context.eventName); - const prContext = { - number: pr.number, - title: pr.title, - html_url: pr.html_url, - labels: pr.labels.map(label => label.name) - }; - const prContextStr = JSON.stringify(prContext); - console.log("PR Context:", prContextStr); - core.setOutput("prContext", prContextStr); core.setOutput("prLabels", pr.labels.map(label => label.name)); result-encoding: string - name: Run Get suppressions label script id: run-suppressions-script env: - GITHUB_PULL_REQUEST_CONTEXT: ${{ steps.fetch-pullRequest-context.outputs.prContext }} OUTPUT_FILE: "output.json" GITHUB_PULL_REQUEST_CHANGE_FILES: ${{ steps.get-changedFiles.outputs.changedFiles }} GITHUB_PULL_REQUEST_LABELS: ${{ steps.fetch-pullRequest-context.outputs.prLabels }} From 0072a75c2c5e97b1728b96eb98fa6d3645b1abd0 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Fri, 20 Dec 2024 14:45:11 +0800 Subject: [PATCH 184/190] add function description and fix comment --- eng/tools/sdk-suppressions/src/index.ts | 2 +- .../sdk-suppressions/src/sdkSuppressions.ts | 8 ++-- .../src/updateSdkSuppressionsLabel.ts | 39 ++++++++++++++----- 3 files changed, 34 insertions(+), 15 deletions(-) diff --git a/eng/tools/sdk-suppressions/src/index.ts b/eng/tools/sdk-suppressions/src/index.ts index a9318a61608a..5100ec2104d8 100644 --- a/eng/tools/sdk-suppressions/src/index.ts +++ b/eng/tools/sdk-suppressions/src/index.ts @@ -24,7 +24,7 @@ export async function main() { const changeFiles: string = args[2]; const lables: string = args[3]; const outputFile = process.env.OUTPUT_FILE as string; - const changedLabels: {labelsToAdd: String[], labelsToRemove: String[]} = await updateSdkSuppressionsLabels(lables, changeFiles, outputFile, baseCommitHash, headCommitHash); + const changedLabels: {labelsToAdd: String[], labelsToRemove: String[]} = await updateSdkSuppressionsLabels(lables, changeFiles, baseCommitHash, headCommitHash, outputFile); console.log(JSON.stringify(changedLabels)); exit(0); } else { diff --git a/eng/tools/sdk-suppressions/src/sdkSuppressions.ts b/eng/tools/sdk-suppressions/src/sdkSuppressions.ts index fba2341bebd9..06b7ceb3607a 100644 --- a/eng/tools/sdk-suppressions/src/sdkSuppressions.ts +++ b/eng/tools/sdk-suppressions/src/sdkSuppressions.ts @@ -22,7 +22,7 @@ export type SdkPackageSuppressionsEntry = { "breaking-changes": string[]; }; -function errorAndExist(error: string): never { +function exitWithError(error: string): never { console.error("Error:", error); process.exit(1); } @@ -34,11 +34,11 @@ export function validateSdkSuppressionsFile( message: string; } { if (suppressionContent === null) { - errorAndExist("This suppression file is a empty file"); + exitWithError("This suppression file is a empty file"); } if (!suppressionContent) { - errorAndExist("This suppression file is not a valid yaml. Refer to https://aka.ms/azsdk/sdk-suppression for more information."); + exitWithError("This suppression file is not a valid yaml. Refer to https://aka.ms/azsdk/sdk-suppression for more information."); } const suppressionFileSchema = { @@ -80,6 +80,6 @@ export function validateSdkSuppressionsFile( message: "This suppression file is a valid yaml.", }; } else { - errorAndExist("This suppression file is a valid yaml but the schema is wrong: " + suppressionAjv.errorsText(suppressionAjvCompile.errors, { separator: "\n" })); + exitWithError("This suppression file is a valid yaml but the schema is wrong: " + suppressionAjv.errorsText(suppressionAjvCompile.errors, { separator: "\n" })); } } diff --git a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts index dcf066d38e2d..da9997d6a69f 100644 --- a/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts +++ b/eng/tools/sdk-suppressions/src/updateSdkSuppressionsLabel.ts @@ -12,7 +12,9 @@ import { parseYamlContent, runGitCommand } from "./common.js"; /** * - * @param pr + * @param prChangeFiles + * @param baseCommitHash + * @param headCommitHash * @returns SdkName list * This part compares the suppression files of the head branch and the base branch. * To get the SDK, we need to identify which package name, SDK name, or breaking changes are different and apply the SDK suppression label accordingly in the next step. @@ -72,7 +74,7 @@ export async function getSdkSuppressionsFileContent( console.log(`Found content in ${ref}#${path}`); return parseYamlContent(suppressionFileContent, path).result; } catch (error) { - console.log(`Not found content in ${ref}#${path}`); + console.log(`Not found content in ${ref}#${path}, Error: ${error}`); return null; } } @@ -81,6 +83,15 @@ function getSdksWithSuppressionsDefined(suppressions: SdkSuppressionsSection): S return _.keys(suppressions) as SdkName[]; } +/** + * + * @param headSuppressionFile + * @param baseSuppressionFile + * @returns SdkName[] + * + * Analyze the suppression files across three dimensions: language, package, and breaking-change. Finally, determine the outermost sdkName. + */ + export function getSdkNamesWithChangedSuppressions( headSuppressionFile: SdkSuppressionsYml, baseSuppressionFile: SdkSuppressionsYml, @@ -163,18 +174,22 @@ export function getSdkNamesWithChangedSuppressions( /** * - * @param pr - * This code segment is responsible for managing the sdk suppression label (e.g. BreakingChange-Go-Sdk-Suppression) for PRs. - * 1. It applies the label automatically when a PR includes a new suppression file. - * 2. It removes the label if the PR no longer contains the suppression file. - * 3. It leaves the label unchanged if the PR already has both the suppression and the suppression approved labels. + * @param prLabels + * @param prChangeFiles + * @param baseCommitHash + * @param headCommitHash + * @param outputFile + * @returns { labelsToAdd: String[]; labelsToRemove: String[] } + * This code performs two key functions: + * First, it retrieves the corresponding SDKNames based on the differences between the two sdk-suppression files. + * Second, it compares the SDKNames obtained in the previous step with the existing PR labels and processes the PR labels accordingly. */ export async function updateSdkSuppressionsLabels( prLabels: string, prChangeFiles: string, - outputFile: string, baseCommitHash: string, headCommitHash: string, + outputFile?: string, ): Promise<{ labelsToAdd: String[]; labelsToRemove: String[] }> { try { const status = await runGitCommand("git status"); @@ -194,8 +209,10 @@ export async function updateSdkSuppressionsLabels( const result = processLabels(presentLabels, sdkNames); - writeFileSync(outputFile, JSON.stringify(result)); - console.log(`😊 JSON output saved to ${outputFile}`); + if(outputFile){ + writeFileSync(outputFile, JSON.stringify(result)); + console.log(`😊 JSON output saved to ${outputFile}`); + } return result; } @@ -206,6 +223,8 @@ export async function updateSdkSuppressionsLabels( * @param sdkNames * @returns {labelsToAdd: String[], labelsToRemove: String[]} * + * Based on the various sdknames and existing labels, process the suppression label of PR. + * * Add logic: If the breakingChangeSuppression label corresponding to an SDK in sdkNames is not in the current presentLabels list, * add the label to labelsToAdd. * Remove logic: If a label is in presentLabels and the corresponding breakingChangeSuppression is not in sdkNames From 2fa944f396a8d2a4e33b306f6eaf4a6bfad677ee Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Tue, 7 Jan 2025 11:04:11 +0800 Subject: [PATCH 185/190] change dependency to fix comment --- .github/workflows/SDK-Suppressions-Label.yaml | 1 + eng/tools/sdk-suppressions/package.json | 3 +- eng/tools/sdk-suppressions/src/common.ts | 6 ++-- package-lock.json | 36 ++----------------- 4 files changed, 6 insertions(+), 40 deletions(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 9cf28e608375..aa6d3f8555ef 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -6,6 +6,7 @@ on: - main - RPSaaSMaster - release* + - jacktn/suppression-action jobs: process-sdk-suppressions-labels: diff --git a/eng/tools/sdk-suppressions/package.json b/eng/tools/sdk-suppressions/package.json index 347a649a4394..fb69a67d543b 100644 --- a/eng/tools/sdk-suppressions/package.json +++ b/eng/tools/sdk-suppressions/package.json @@ -17,11 +17,10 @@ }, "dependencies": { "ajv": "^6.12.6", - "js-yaml": "^3.14.0", + "yaml": "^2.4.2", "lodash": "^4.17.20" }, "devDependencies": { - "@types/js-yaml": "^3.12.5", "@types/lodash": "^4.14.161", "@types/node": "^18.19.31", "@vitest/coverage-v8": "^2.0.4", diff --git a/eng/tools/sdk-suppressions/src/common.ts b/eng/tools/sdk-suppressions/src/common.ts index 3fe233f2deee..04a29676014c 100644 --- a/eng/tools/sdk-suppressions/src/common.ts +++ b/eng/tools/sdk-suppressions/src/common.ts @@ -1,6 +1,4 @@ -// import { load } from "js-yaml"; -import pkg from 'js-yaml'; -const { load } = pkg; +import { parse as yamlParse } from "yaml"; import { exec } from "child_process"; import { promisify } from "util"; @@ -19,7 +17,7 @@ export function parseYamlContent(yamlContent: string, path: string): { let content = undefined; // if yaml file is not a valid yaml, catch error and return undefined try { - content = load(yamlContent); + content = yamlParse(yamlContent); } catch (error) { console.error(`The file parsing failed in the ${path}. Details: ${error}`); return { diff --git a/package-lock.json b/package-lock.json index cab14acb30dd..fd4ea4928d49 100644 --- a/package-lock.json +++ b/package-lock.json @@ -107,16 +107,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "eng/tools/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, "eng/tools/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -127,20 +117,6 @@ "balanced-match": "^1.0.0" } }, - "eng/tools/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "eng/tools/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -330,14 +306,13 @@ "dev": true, "dependencies": { "ajv": "^6.12.6", - "js-yaml": "^3.14.0", - "lodash": "^4.17.20" + "lodash": "^4.17.20", + "yaml": "^2.4.2" }, "bin": { "get-sdk-suppressions-label": "cmd/sdk-suppressions-label.js" }, "devDependencies": { - "@types/js-yaml": "^3.12.5", "@types/lodash": "^4.14.161", "@types/node": "^18.19.31", "@vitest/coverage-v8": "^2.0.4", @@ -3446,13 +3421,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/js-yaml": { - "version": "3.12.10", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.10.tgz", - "integrity": "sha512-/Mtaq/wf+HxXpvhzFYzrzCqNRcA958sW++7JOFC8nPrZcvfi/TrzOaaGbvt27ltJB2NQbHVAg5a1wUCsyMH7NA==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", From 96f22e70a652f8a0a079a116175d11ffd9b4c798 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Tue, 7 Jan 2025 11:32:29 +0800 Subject: [PATCH 186/190] remove test branch --- .github/workflows/SDK-Suppressions-Label.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index aa6d3f8555ef..9cf28e608375 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -6,7 +6,6 @@ on: - main - RPSaaSMaster - release* - - jacktn/suppression-action jobs: process-sdk-suppressions-labels: From 8e4d49ca38e93a31c083c3da2af9991a62176e11 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 8 Jan 2025 11:16:11 +0800 Subject: [PATCH 187/190] bump ajv to 8.17.1 --- eng/tools/sdk-suppressions/package.json | 6 ++--- .../sdk-suppressions/src/sdkSuppressions.ts | 2 +- .../test/updateSdkSuppressionsLabel.test.ts | 2 +- package-lock.json | 26 +------------------ 4 files changed, 6 insertions(+), 30 deletions(-) diff --git a/eng/tools/sdk-suppressions/package.json b/eng/tools/sdk-suppressions/package.json index fb69a67d543b..4bb3985cc706 100644 --- a/eng/tools/sdk-suppressions/package.json +++ b/eng/tools/sdk-suppressions/package.json @@ -16,9 +16,9 @@ "node": ">= 18.0.0" }, "dependencies": { - "ajv": "^6.12.6", - "yaml": "^2.4.2", - "lodash": "^4.17.20" + "ajv": "^8.17.1", + "lodash": "^4.17.20", + "yaml": "^2.4.2" }, "devDependencies": { "@types/lodash": "^4.14.161", diff --git a/eng/tools/sdk-suppressions/src/sdkSuppressions.ts b/eng/tools/sdk-suppressions/src/sdkSuppressions.ts index 06b7ceb3607a..3a379bba78d2 100644 --- a/eng/tools/sdk-suppressions/src/sdkSuppressions.ts +++ b/eng/tools/sdk-suppressions/src/sdkSuppressions.ts @@ -4,7 +4,7 @@ * - https://microsoftapc-my.sharepoint.com/:w:/g/personal/raychen_microsoft_com/EbOAA9SkhQhGlgxtf7mc0kUB-25bFue0EFbXKXS3TFLTQA */ -import Ajv from "ajv"; +import { Ajv } from "ajv"; import { SdkName, sdkLabels } from "./sdk.js"; export const sdkSuppressionsFileName = "sdk-suppressions.yaml"; diff --git a/eng/tools/sdk-suppressions/test/updateSdkSuppressionsLabel.test.ts b/eng/tools/sdk-suppressions/test/updateSdkSuppressionsLabel.test.ts index dc875efce808..e03c3b570012 100644 --- a/eng/tools/sdk-suppressions/test/updateSdkSuppressionsLabel.test.ts +++ b/eng/tools/sdk-suppressions/test/updateSdkSuppressionsLabel.test.ts @@ -108,7 +108,7 @@ test("test validateSdkSuppressionsFile for error structor file", () => { }; expect(() => validateSdkSuppressionsFile(suppressionContent)).toThrow("process.exit called"); - expect(consoleSpy).toHaveBeenCalledWith("Error:", "This suppression file is a valid yaml but the schema is wrong: data.suppressions['azure-sdk-for-go'][0] should have required property 'breaking-changes'"); + expect(consoleSpy).toHaveBeenCalledWith("Error:", "This suppression file is a valid yaml but the schema is wrong: data/suppressions/azure-sdk-for-go/0 must have required property 'breaking-changes'"); expect(mockProcessExit).toHaveBeenCalledWith(1); consoleSpy.mockRestore(); diff --git a/package-lock.json b/package-lock.json index fd4ea4928d49..b8a77af62890 100644 --- a/package-lock.json +++ b/package-lock.json @@ -90,23 +90,6 @@ } } }, - "eng/tools/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "eng/tools/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -117,13 +100,6 @@ "balanced-match": "^1.0.0" } }, - "eng/tools/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, "eng/tools/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -305,7 +281,7 @@ "version": "1.0.0", "dev": true, "dependencies": { - "ajv": "^6.12.6", + "ajv": "^8.17.1", "lodash": "^4.17.20", "yaml": "^2.4.2" }, From eb1ab6aed48583068eb9238ded290ad3592de767 Mon Sep 17 00:00:00 2001 From: v-tianxi Date: Wed, 8 Jan 2025 16:03:34 +0800 Subject: [PATCH 188/190] add comment to to explain this behavior --- .github/workflows/SDK-Suppressions-Label.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/SDK-Suppressions-Label.yaml b/.github/workflows/SDK-Suppressions-Label.yaml index 9cf28e608375..20db6347056f 100644 --- a/.github/workflows/SDK-Suppressions-Label.yaml +++ b/.github/workflows/SDK-Suppressions-Label.yaml @@ -70,6 +70,11 @@ jobs: echo "$label=false" >> $GITHUB_OUTPUT done + # No Action or Add/Remove label ​​according to step run-suppressions-script output + # e.g. + # If the output of the step does not include the BreakingChange-Go-Sdk-Suppression, no action will be taken. + # If the step's output is "BreakingChange-Go-Sdk-Suppression='true'", the label "BreakingChange-Go-Sdk-Suppression" will be applied to the PR. + # If the step's output is "BreakingChange-Go-Sdk-Suppression='false'", the label "BreakingChange-Go-Sdk-Suppression" will be removed from the PR. - uses: ./.github/actions/add-label-artifact name: Upload artifact with results-go if: ${{ steps.run-suppressions-script.outputs.BreakingChange-Go-Sdk-Suppression }} From 9848a6c5389fa38ffa1fb19b1453b11ffc3652b2 Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Wed, 8 Jan 2025 10:49:59 -0800 Subject: [PATCH 189/190] Add trailing newline --- eng/tools/sdk-suppressions/src/common.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/tools/sdk-suppressions/src/common.ts b/eng/tools/sdk-suppressions/src/common.ts index 04a29676014c..b13781e4e20c 100644 --- a/eng/tools/sdk-suppressions/src/common.ts +++ b/eng/tools/sdk-suppressions/src/common.ts @@ -60,4 +60,4 @@ export async function runGitCommand(command: string): Promise { console.error("Error details:", error.stderr || error); throw error; } -} \ No newline at end of file +} From ebeefc8a779cff8c0a5dcab9400b5a9c742f31cd Mon Sep 17 00:00:00 2001 From: Mike Harder Date: Wed, 8 Jan 2025 20:23:16 +0000 Subject: [PATCH 190/190] Empty commit to re-trigger checks