From a946586815f506b6b600c44ccb17dc909849312d Mon Sep 17 00:00:00 2001 From: Jonathan Knight Date: Fri, 25 Oct 2024 17:47:35 +0300 Subject: [PATCH 1/6] Update Trivy GitHub workflows --- .github/actions/trivy-action-0.2.1/.gitignore | 1 + .github/actions/trivy-action-0.2.1/Dockerfile | 5 + .github/actions/trivy-action-0.2.1/LICENSE | 201 +++++++++ .github/actions/trivy-action-0.2.1/README.md | 411 ++++++++++++++++++ .../actions/trivy-action-0.2.1/action.yaml | 97 +++++ .../docs/images/trivy-action.png | Bin 0 -> 516869 bytes .../actions/trivy-action-0.2.1/entrypoint.sh | 146 +++++++ .../actions/trivy-action-0.2.1/workflow.yml | 34 ++ .../actions/trivy-action-0.28.0/action.yaml | 2 +- 9 files changed, 896 insertions(+), 1 deletion(-) create mode 100644 .github/actions/trivy-action-0.2.1/.gitignore create mode 100644 .github/actions/trivy-action-0.2.1/Dockerfile create mode 100644 .github/actions/trivy-action-0.2.1/LICENSE create mode 100644 .github/actions/trivy-action-0.2.1/README.md create mode 100644 .github/actions/trivy-action-0.2.1/action.yaml create mode 100644 .github/actions/trivy-action-0.2.1/docs/images/trivy-action.png create mode 100755 .github/actions/trivy-action-0.2.1/entrypoint.sh create mode 100644 .github/actions/trivy-action-0.2.1/workflow.yml diff --git a/.github/actions/trivy-action-0.2.1/.gitignore b/.github/actions/trivy-action-0.2.1/.gitignore new file mode 100644 index 000000000..9f11b755a --- /dev/null +++ b/.github/actions/trivy-action-0.2.1/.gitignore @@ -0,0 +1 @@ +.idea/ diff --git a/.github/actions/trivy-action-0.2.1/Dockerfile b/.github/actions/trivy-action-0.2.1/Dockerfile new file mode 100644 index 000000000..4549ccaa9 --- /dev/null +++ b/.github/actions/trivy-action-0.2.1/Dockerfile @@ -0,0 +1,5 @@ +FROM aquasec/trivy:0.21.2 +COPY entrypoint.sh / +RUN apk --no-cache add bash +RUN chmod +x /entrypoint.sh +ENTRYPOINT ["/entrypoint.sh"] diff --git a/.github/actions/trivy-action-0.2.1/LICENSE b/.github/actions/trivy-action-0.2.1/LICENSE new file mode 100644 index 000000000..261eeb9e9 --- /dev/null +++ b/.github/actions/trivy-action-0.2.1/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/.github/actions/trivy-action-0.2.1/README.md b/.github/actions/trivy-action-0.2.1/README.md new file mode 100644 index 000000000..3452f9265 --- /dev/null +++ b/.github/actions/trivy-action-0.2.1/README.md @@ -0,0 +1,411 @@ +# Trivy Action + +> [GitHub Action](https://github.com/features/actions) for [Trivy](https://github.com/aquasecurity/trivy) + +[![GitHub Release][release-img]][release] +[![GitHub Marketplace][marketplace-img]][marketplace] +[![License][license-img]][license] + +![](docs/images/trivy-action.png) + +## Table of Contents + +- [Usage](#usage) + - [Workflow](#workflow) + - [Docker Image Scanning](#using-trivy-with-github-code-scanning) + - [Git Repository Scanning](#using-trivy-to-scan-your-git-repo) +- [Customizing](#customizing) + - [Inputs](#inputs) + +## Usage + +### Workflow + +```yaml +name: build +on: + push: + branches: + - master + pull_request: +jobs: + build: + name: Build + runs-on: ubuntu-18.04 + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Build an image from Dockerfile + run: | + docker build -t docker.io/my-organization/my-app:${{ github.sha }} . + + - name: Run Trivy vulnerability scanner + uses: aquasecurity/trivy-action@master + with: + image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}' + format: 'table' + exit-code: '1' + ignore-unfixed: true + vuln-type: 'os,library' + severity: 'CRITICAL,HIGH' +``` + +### Using Trivy with GitHub Code Scanning +If you have [GitHub code scanning](https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning) available you can use Trivy as a scanning tool as follows: +```yaml +name: build +on: + push: + branches: + - master + pull_request: +jobs: + build: + name: Build + runs-on: ubuntu-18.04 + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Build an image from Dockerfile + run: | + docker build -t docker.io/my-organization/my-app:${{ github.sha }} . + + - name: Run Trivy vulnerability scanner + uses: aquasecurity/trivy-action@master + with: + image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}' + format: 'template' + template: '@/contrib/sarif.tpl' + output: 'trivy-results.sarif' + + - name: Upload Trivy scan results to GitHub Security tab + uses: github/codeql-action/upload-sarif@v1 + with: + sarif_file: 'trivy-results.sarif' +``` + +You can find a more in-depth example here: https://github.com/aquasecurity/trivy-sarif-demo/blob/master/.github/workflows/scan.yml + +If you would like to upload SARIF results to GitHub Code scanning even upon a non zero exit code from Trivy Scan, you can add the following to your upload step: +```yaml +name: build +on: + push: + branches: + - master + pull_request: +jobs: + build: + name: Build + runs-on: ubuntu-18.04 + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Build an image from Dockerfile + run: | + docker build -t docker.io/my-organization/my-app:${{ github.sha }} . + + - name: Run Trivy vulnerability scanner + uses: aquasecurity/trivy-action@master + with: + image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}' + format: 'template' + template: '@/contrib/sarif.tpl' + output: 'trivy-results.sarif' + + - name: Upload Trivy scan results to GitHub Security tab + uses: github/codeql-action/upload-sarif@v1 + if: always() + with: + sarif_file: 'trivy-results.sarif' +``` + +See this for more details: https://docs.github.com/en/actions/learn-github-actions/expressions#always + +### Using Trivy to scan your Git repo +It's also possible to scan your git repos with Trivy's built-in repo scan. This can be handy if you want to run Trivy as a build time check on each PR that gets opened in your repo. This helps you identify potential vulnerablites that might get introduced with each PR. + +If you have [GitHub code scanning](https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning) available you can use Trivy as a scanning tool as follows: +```yaml +name: build +on: + push: + branches: + - master + pull_request: +jobs: + build: + name: Build + runs-on: ubuntu-18.04 + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Run Trivy vulnerability scanner in repo mode + uses: aquasecurity/trivy-action@master + with: + scan-type: 'fs' + ignore-unfixed: true + format: 'template' + template: '@/contrib/sarif.tpl' + output: 'trivy-results.sarif' + severity: 'CRITICAL' + + - name: Upload Trivy scan results to GitHub Security tab + uses: github/codeql-action/upload-sarif@v1 + with: + sarif_file: 'trivy-results.sarif' +``` + +### Using Trivy to scan your rootfs directories +It's also possible to scan your rootfs directories with Trivy's built-in rootfs scan. This can be handy if you want to run Trivy as a build time check on each PR that gets opened in your repo. This helps you identify potential vulnerablites that might get introduced with each PR. + +If you have [GitHub code scanning](https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning) available you can use Trivy as a scanning tool as follows: +```yaml +name: build +on: + push: + branches: + - master + pull_request: +jobs: + build: + name: Build + runs-on: ubuntu-18.04 + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Run Trivy vulnerability scanner with rootfs command + uses: aquasecurity/trivy-action@master + with: + scan-type: 'rootfs' + scan-ref: 'rootfs-example-binary' + ignore-unfixed: true + format: 'template' + template: '@/contrib/sarif.tpl' + output: 'trivy-results.sarif' + severity: 'CRITICAL' + + - name: Upload Trivy scan results to GitHub Security tab + uses: github/codeql-action/upload-sarif@v1 + with: + sarif_file: 'trivy-results.sarif' +``` + +### Using Trivy to scan Infrastucture as Code +It's also possible to scan your IaC repos with Trivy's built-in repo scan. This can be handy if you want to run Trivy as a build time check on each PR that gets opened in your repo. This helps you identify potential vulnerablites that might get introduced with each PR. + +If you have [GitHub code scanning](https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning) available you can use Trivy as a scanning tool as follows: +```yaml +name: build +on: + push: + branches: + - master + pull_request: +jobs: + build: + name: Build + runs-on: ubuntu-18.04 + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Run Trivy vulnerability scanner in IaC mode + uses: aquasecurity/trivy-action@master + with: + scan-type: 'config' + hide-progress: false + format: 'table' + exit-code: '1' + ignore-unfixed: true + severity: 'CRITICAL,HIGH' + + - name: Upload Trivy scan results to GitHub Security tab + uses: github/codeql-action/upload-sarif@v1 + with: + sarif_file: 'trivy-results.sarif' +``` + +### Using Trivy to scan your private registry +It's also possible to scan your private registry with Trivy's built-in image scan. All you have to do is set ENV vars. + +#### Docker Hub registry +Docker Hub needs `TRIVY_USERNAME` and `TRIVY_PASSWORD`. +You don't need to set ENV vars when downloading from a public repository. +```yaml +name: build +on: + push: + branches: + - master + pull_request: +jobs: + build: + name: Build + runs-on: ubuntu-18.04 + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Run Trivy vulnerability scanner + uses: aquasecurity/trivy-action@master + with: + image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}' + format: 'template' + template: '@/contrib/sarif.tpl' + output: 'trivy-results.sarif' + env: + TRIVY_USERNAME: Username + TRIVY_PASSWORD: Password + + - name: Upload Trivy scan results to GitHub Security tab + uses: github/codeql-action/upload-sarif@v1 + with: + sarif_file: 'trivy-results.sarif' +``` + +#### AWS ECR (Elastic Container Registry) +Trivy uses AWS SDK. You don't need to install `aws` CLI tool. +You can use [AWS CLI's ENV Vars][env-var]. + +[env-var]: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html +```yaml +name: build +on: + push: + branches: + - master + pull_request: +jobs: + build: + name: Build + runs-on: ubuntu-18.04 + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Run Trivy vulnerability scanner + uses: aquasecurity/trivy-action@master + with: + image-ref: 'aws_account_id.dkr.ecr.region.amazonaws.com/imageName:${{ github.sha }}' + format: 'template' + template: '@/contrib/sarif.tpl' + output: 'trivy-results.sarif' + env: + AWS_ACCESS_KEY_ID: key_id + AWS_SECRET_ACCESS_KEY: access_key + AWS_DEFAULT_REGION: us-west-2 + + - name: Upload Trivy scan results to GitHub Security tab + uses: github/codeql-action/upload-sarif@v1 + with: + sarif_file: 'trivy-results.sarif' +``` + +#### GCR (Google Container Registry) +Trivy uses Google Cloud SDK. You don't need to install `gcloud` command. + +If you want to use target project's repository, you can set it via `GOOGLE_APPLICATION_CREDENTIAL`. +```yaml +name: build +on: + push: + branches: + - master + pull_request: +jobs: + build: + name: Build + runs-on: ubuntu-18.04 + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Run Trivy vulnerability scanner + uses: aquasecurity/trivy-action@master + with: + image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}' + format: 'template' + template: '@/contrib/sarif.tpl' + output: 'trivy-results.sarif' + env: + GOOGLE_APPLICATION_CREDENTIAL: /path/to/credential.json + + - name: Upload Trivy scan results to GitHub Security tab + uses: github/codeql-action/upload-sarif@v1 + with: + sarif_file: 'trivy-results.sarif' +``` + +#### Self-Hosted +BasicAuth server needs `TRIVY_USERNAME` and `TRIVY_PASSWORD`. +if you want to use 80 port, use NonSSL `TRIVY_NON_SSL=true` +```yaml +name: build +on: + push: + branches: + - master + pull_request: +jobs: + build: + name: Build + runs-on: ubuntu-18.04 + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Run Trivy vulnerability scanner + uses: aquasecurity/trivy-action@master + with: + image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}' + format: 'template' + template: '@/contrib/sarif.tpl' + output: 'trivy-results.sarif' + env: + TRIVY_USERNAME: Username + TRIVY_PASSWORD: Password + + - name: Upload Trivy scan results to GitHub Security tab + uses: github/codeql-action/upload-sarif@v1 + with: + sarif_file: 'trivy-results.sarif' +``` + +## Customizing + +### inputs + +Following inputs can be used as `step.with` keys: + +| Name | Type | Default | Description | +|------------------|---------|------------------------------------|-----------------------------------------------| +| `scan-type` | String | `image` | Scan type, e.g. `image` or `fs`| +| `input` | String | | Tar reference, e.g. `alpine-latest.tar` | +| `image-ref` | String | | Image reference, e.g. `alpine:3.10.2` | +| `scan-ref` | String | `/github/workspace/` | Scan reference, e.g. `/github/workspace/` or `.`| +| `format` | String | `table` | Output format (`table`, `json`, `template`) | +| `template` | String | | Output template (`@/contrib/sarif.tpl`, `@/contrib/gitlab.tpl`, `@/contrib/junit.tpl`)| +| `output` | String | | Save results to a file | +| `exit-code` | String | `0` | Exit code when specified vulnerabilities are found | +| `ignore-unfixed` | Boolean | false | Ignore unpatched/unfixed vulnerabilities | +| `vuln-type` | String | `os,library` | Vulnerability types (os,library) | +| `severity` | String | `UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL` | Severities of vulnerabilities to scanned for and displayed | +| `skip-dirs` | String | | Comma separated list of directories where traversal is skipped | +| `skip-files` | String | | Comma separated list of files where traversal is skipped | +| `cache-dir` | String | | Cache directory | +| `timeout` | String | `2m0s` | Scan timeout duration | +| `ignore-policy` | String | | Filter vulnerabilities with OPA rego language | +| `list-all-pkgs` | String | | Output all packages regardless of vulnerability | + +[release]: https://github.com/aquasecurity/trivy-action/releases/latest +[release-img]: https://img.shields.io/github/release/aquasecurity/trivy-action.svg?logo=github +[marketplace]: https://github.com/marketplace/actions/aqua-security-trivy +[marketplace-img]: https://img.shields.io/badge/marketplace-trivy--action-blue?logo=github +[license]: https://github.com/aquasecurity/trivy-action/blob/master/LICENSE +[license-img]: https://img.shields.io/github/license/aquasecurity/trivy-action diff --git a/.github/actions/trivy-action-0.2.1/action.yaml b/.github/actions/trivy-action-0.2.1/action.yaml new file mode 100644 index 000000000..403fb49c6 --- /dev/null +++ b/.github/actions/trivy-action-0.2.1/action.yaml @@ -0,0 +1,97 @@ +name: 'Aqua Security Trivy' +description: 'Scans container images for vulnerabilities with Trivy' +author: 'Aqua Security' +inputs: + scan-type: + description: 'Scan type to use for scanning vulnerability' + required: false + default: 'image' + image-ref: + description: 'image reference(for backward compatibility)' + required: true + input: + description: 'reference of tar file to scan' + required: false + default: '' + scan-ref: + description: 'Scan reference' + required: false + default: '.' + exit-code: + description: 'exit code when vulnerabilities were found' + required: false + default: '0' + ignore-unfixed: + description: 'ignore unfixed vulnerabilities' + required: false + default: 'false' + vuln-type: + description: 'comma-separated list of vulnerability types (os,library)' + required: false + default: 'os,library' + severity: + description: 'severities of vulnerabilities to be displayed' + required: false + default: 'UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL' + format: + description: 'output format (table, json, template)' + required: false + default: 'table' + template: + description: 'use an existing template for rendering output (@/contrib/sarif.tpl, @/contrib/gitlab.tpl, @/contrib/junit.tpl' + required: false + default: '' + output: + description: 'writes results to a file with the specified file name' + required: false + default: '' + skip-dirs: + description: 'comma separated list of directories where traversal is skipped' + required: false + default: '' + skip-files: + description: 'comma separated list of files to be skipped' + required: false + default: '' + cache-dir: + description: 'specify where the cache is stored' + required: false + default: '' + timeout: + description: 'timeout (default 5m0s)' + required: false + default: '' + ignore-policy: + description: 'filter vulnerabilities with OPA rego language' + required: false + default: '' + hide-progress: + description: 'hide progress output' + required: false + default: 'true' + list-all-pkgs: + description: 'output all packages regardless of vulnerability' + required: false + default: 'false' +runs: + using: 'docker' + image: "Dockerfile" + args: + - '-a ${{ inputs.scan-type }}' + - '-b ${{ inputs.format }}' + - '-c ${{ inputs.template }}' + - '-d ${{ inputs.exit-code }}' + - '-e ${{ inputs.ignore-unfixed }}' + - '-f ${{ inputs.vuln-type }}' + - '-g ${{ inputs.severity }}' + - '-h ${{ inputs.output }}' + - '-i ${{ inputs.image-ref }}' + - '-j ${{ inputs.scan-ref }}' + - '-k ${{ inputs.skip-dirs }}' + - '-l ${{ inputs.input }}' + - '-m ${{ inputs.cache-dir }}' + - '-n ${{ inputs.timeout }}' + - '-o ${{ inputs.ignore-policy }}' + - '-p ${{ inputs.hide-progress }}' + - '-q ${{ inputs.skip-files }}' + - '-r ${{ inputs.list-all-pkgs }}' diff --git a/.github/actions/trivy-action-0.2.1/docs/images/trivy-action.png b/.github/actions/trivy-action-0.2.1/docs/images/trivy-action.png new file mode 100644 index 0000000000000000000000000000000000000000..e67a09d68489e22e201f3051068c1b3fa57fd928 GIT binary patch literal 516869 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

I-O!-GxKK1%oy{owkU;DMqw&;Rj1Ih%f# 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�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%0Dt|KMn?Z^M@`NQ~J)mAj-CL66k# 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

CDa2KxWTFF+8;5UDH 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

K#R~%b5-OY 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%0Ag58S>{gjSGrCY@ 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 hBLLdZawQl3gqT^Yd{dYl8b)zW$1_Q%pP^_s!v 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 literal 0 HcmV?d00001 diff --git a/.github/actions/trivy-action-0.2.1/entrypoint.sh b/.github/actions/trivy-action-0.2.1/entrypoint.sh new file mode 100755 index 000000000..f55137202 --- /dev/null +++ b/.github/actions/trivy-action-0.2.1/entrypoint.sh @@ -0,0 +1,146 @@ +#!/bin/bash +set -e +while getopts "a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:" o; do + case "${o}" in + a) + export scanType=${OPTARG} + ;; + b) + export format=${OPTARG} + ;; + c) + export template=${OPTARG} + ;; + d) + export exitCode=${OPTARG} + ;; + e) + export ignoreUnfixed=${OPTARG} + ;; + f) + export vulnType=${OPTARG} + ;; + g) + export severity=${OPTARG} + ;; + h) + export output=${OPTARG} + ;; + i) + export imageRef=${OPTARG} + ;; + j) + export scanRef=${OPTARG} + ;; + k) + export skipDirs=${OPTARG} + ;; + l) + export input=${OPTARG} + ;; + m) + export cacheDir=${OPTARG} + ;; + n) + export timeout=${OPTARG} + ;; + o) + export ignorePolicy=${OPTARG} + ;; + p) + export hideProgress=${OPTARG} + ;; + q) + export skipFiles=${OPTARG} + ;; + r) + export listAllPkgs=${OPTARG} + ;; + esac +done + +scanType=$(echo $scanType | tr -d '\r') +export artifactRef="${imageRef}" +if [ "${scanType}" = "fs" ] || [ "${scanType}" = "config" ] || [ "${scanType}" = "rootfs" ];then + artifactRef=$(echo $scanRef | tr -d '\r') +fi +input=$(echo $input | tr -d '\r') +if [ $input ]; then + artifactRef="--input $input" +fi +ignoreUnfixed=$(echo $ignoreUnfixed | tr -d '\r') +hideProgress=$(echo $hideProgress | tr -d '\r') + +GLOBAL_ARGS="" +if [ $cacheDir ];then + GLOBAL_ARGS="$GLOBAL_ARGS --cache-dir $cacheDir" +fi + +SARIF_ARGS="" +ARGS="" +if [ $format ];then + ARGS="$ARGS --format $format" +fi +if [ $template ] ;then + ARGS="$ARGS --template $template" +fi +if [ $exitCode ];then + ARGS="$ARGS --exit-code $exitCode" +fi +if [ "$ignoreUnfixed" == "true" ] && [ "$scanType" != "config" ];then + ARGS="$ARGS --ignore-unfixed" + SARIF_ARGS="$SARIF_ARGS --ignore-unfixed" +fi +if [ $vulnType ] && [ "$scanType" != "config" ];then + ARGS="$ARGS --vuln-type $vulnType" + SARIF_ARGS="$SARIF_ARGS --vuln-type $vulnType" +fi +if [ $severity ];then + ARGS="$ARGS --severity $severity" +fi +if [ $output ];then + ARGS="$ARGS --output $output" +fi +if [ $skipDirs ];then + for i in $(echo $skipDirs | tr "," "\n") + do + ARGS="$ARGS --skip-dirs $i" + SARIF_ARGS="$SARIF_ARGS --skip-dirs $i" + done +fi +if [ $timeout ];then + ARGS="$ARGS --timeout $timeout" +fi +if [ $ignorePolicy ];then + ARGS="$ARGS --ignore-policy $ignorePolicy" + SARIF_ARGS="$SARIF_ARGS --ignore-policy $ignorePolicy" +fi +if [ "$hideProgress" == "true" ];then + ARGS="$ARGS --no-progress" +fi + +listAllPkgs=$(echo $listAllPkgs | tr -d '\r') +if [ "$listAllPkgs" == "true" ];then + ARGS="$ARGS --list-all-pkgs" +fi +if [ "$skipFiles" ];then + for i in $(echo $skipFiles | tr "," "\n") + do + ARGS="$ARGS --skip-files $i" + done +fi + +echo "Running trivy with options: ${ARGS}" "${artifactRef}" +echo "Global options: " "${GLOBAL_ARGS}" +trivy $GLOBAL_ARGS ${scanType} $ARGS ${artifactRef} +returnCode=$? + +# SARIF is special. We output all vulnerabilities, +# regardless of severity level specified in this report. +# This is a feature, not a bug :) +if [[ ${template} == *"sarif"* ]]; then + echo "Building SARIF report with options: ${SARIF_ARGS}" "${artifactRef}" + trivy --quiet ${scanType} --format template --template ${template} --output ${output} $SARIF_ARGS ${artifactRef} +fi + +exit $returnCode diff --git a/.github/actions/trivy-action-0.2.1/workflow.yml b/.github/actions/trivy-action-0.2.1/workflow.yml new file mode 100644 index 000000000..a74737c7d --- /dev/null +++ b/.github/actions/trivy-action-0.2.1/workflow.yml @@ -0,0 +1,34 @@ +name: build +on: + push: + branches: + - master + pull_request: +jobs: + build: + name: Build + runs-on: ubuntu-18.04 + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Build an image from Dockerfile + run: | + docker build -t docker.io/my-organization/my-app:${{ github.sha }} . + + - name: Run Trivy vulnerability scanner + uses: aquasecurity/trivy-action@master + with: + image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}' + exit-code: '1' + ignore-unfixed: true + vuln-type: 'os,library' + format: 'template' + template: '@/contrib/sarif.tpl' + output: 'trivy-results.sarif' + severity: 'CRITICAL,HIGH' + + - name: Upload Trivy scan results to GitHub Security tab + uses: github/codeql-action/upload-sarif@v1 + with: + sarif_file: 'trivy-results.sarif' diff --git a/.github/actions/trivy-action-0.28.0/action.yaml b/.github/actions/trivy-action-0.28.0/action.yaml index 21ab169c3..bf0a50b12 100644 --- a/.github/actions/trivy-action-0.28.0/action.yaml +++ b/.github/actions/trivy-action-0.28.0/action.yaml @@ -108,7 +108,7 @@ runs: using: 'composite' steps: - name: Install Trivy - uses: aquasecurity/setup-trivy@v0.2.1 + uses: ./.github/actions/trivy-action-0.2.1 with: version: ${{ inputs.version }} cache: ${{ inputs.cache }} From d5d101bb78eb5e2a2af524fbe8563323c87c5536 Mon Sep 17 00:00:00 2001 From: Jonathan Knight Date: Fri, 25 Oct 2024 17:58:04 +0300 Subject: [PATCH 2/6] Update Trivy GitHub workflows --- .../setup-oras-1.2.1/.github/dependabot.yml | 30 - .../setup-oras-1.2.1/.github/licenserc.yml | 42 - .../.github/workflows/check-dist.yml | 47 - .../.github/workflows/license-checker.yml | 44 - .../.github/workflows/test.yml | 136 - .../.github/workflows/update-version.yml | 61 - .github/actions/setup-oras-1.2.1/.gitignore | 0 .github/actions/setup-oras-1.2.1/CODEOWNERS | 0 .../setup-oras-1.2.1/CODE_OF_CONDUCT.md | 0 .github/actions/setup-oras-1.2.1/LICENSE | 0 .github/actions/setup-oras-1.2.1/OWNERS.md | 0 .github/actions/setup-oras-1.2.1/README.md | 0 .github/actions/setup-oras-1.2.1/SECURITY.md | 0 .github/actions/setup-oras-1.2.1/action.yml | 32 - .../actions/setup-oras-1.2.1/dist/README.md | 0 .../actions/setup-oras-1.2.1/dist/index.js | 6516 ----------------- .../setup-oras-1.2.1/dist/licenses.txt | 0 .../setup-oras-1.2.1/package-lock.json | 121 - .github/actions/setup-oras-1.2.1/package.json | 26 - .../setup-oras-1.2.1/src/lib/checksum.ts | 0 .../src/lib/data/releases.json | 160 - .../setup-oras-1.2.1/src/lib/release.ts | 0 .github/actions/setup-oras-1.2.1/src/setup.ts | 0 .../actions/setup-oras-1.2.1/tsconfig.json | 0 .github/actions/trivy-action-0.2.1/.gitignore | 1 - .github/actions/trivy-action-0.2.1/Dockerfile | 5 - .github/actions/trivy-action-0.2.1/LICENSE | 201 - .github/actions/trivy-action-0.2.1/README.md | 411 -- .../actions/trivy-action-0.2.1/action.yaml | 97 - .../docs/images/trivy-action.png | Bin 516869 -> 0 bytes .../actions/trivy-action-0.2.1/entrypoint.sh | 146 - .../actions/trivy-action-0.2.1/workflow.yml | 34 - .../.github/workflows/bump-trivy.yaml | 40 - .../.github/workflows/sync-trivy-checks.yaml | 24 - .../.github/workflows/sync-trivy-db.yaml | 24 - .../.github/workflows/sync-trivy-java-db.yaml | 24 - .../.github/workflows/test.yaml | 31 - .../actions/trivy-action-0.28.0/.gitignore | 0 .github/actions/trivy-action-0.28.0/LICENSE | 201 - .github/actions/trivy-action-0.28.0/Makefile | 15 - .github/actions/trivy-action-0.28.0/README.md | 698 -- .../actions/trivy-action-0.28.0/action.yaml | 189 - .../docs/images/trivy-action.png | 0 .../actions/trivy-action-0.28.0/entrypoint.sh | 63 - .../test/data/config-sarif-report/main.tf | 0 .../data/config-sarif-report/report.sarif | 0 .../test/data/config-scan/main.tf | 0 .../test/data/config-scan/report.json | 101 - .../test/data/fs-scan/report | 0 .../data/github-dep-snapshot/report.gsbom | 0 .../test/data/image-scan/report | 0 .../test/data/rootfs-scan/report | 0 .../test/data/secret-scan/report.json | 77 - .../test/data/with-ignore-files/.trivyignore1 | 0 .../test/data/with-ignore-files/.trivyignore2 | 0 .../test/data/with-ignore-files/report | 0 .../test/data/with-tf-vars/dev.tfvars | 0 .../test/data/with-tf-vars/main.tf | 0 .../test/data/with-tf-vars/report.json | 34 - .../test/data/with-trivy-yaml-cfg/report.json | 122 - .../test/data/with-trivy-yaml-cfg/trivy.yaml | 5 - .../trivy-action-0.28.0/test/test.bats | 0 .../actions/trivy-action-0.28.0/workflow.yml | 34 - .github/workflows/trivy-db-download.yaml | 48 - .github/workflows/trivy.yaml | 17 +- 65 files changed, 3 insertions(+), 9854 deletions(-) delete mode 100644 .github/actions/setup-oras-1.2.1/.github/dependabot.yml delete mode 100644 .github/actions/setup-oras-1.2.1/.github/licenserc.yml delete mode 100644 .github/actions/setup-oras-1.2.1/.github/workflows/check-dist.yml delete mode 100644 .github/actions/setup-oras-1.2.1/.github/workflows/license-checker.yml delete mode 100644 .github/actions/setup-oras-1.2.1/.github/workflows/test.yml delete mode 100644 .github/actions/setup-oras-1.2.1/.github/workflows/update-version.yml delete mode 100644 .github/actions/setup-oras-1.2.1/.gitignore delete mode 100644 .github/actions/setup-oras-1.2.1/CODEOWNERS delete mode 100644 .github/actions/setup-oras-1.2.1/CODE_OF_CONDUCT.md delete mode 100644 .github/actions/setup-oras-1.2.1/LICENSE delete mode 100644 .github/actions/setup-oras-1.2.1/OWNERS.md delete mode 100644 .github/actions/setup-oras-1.2.1/README.md delete mode 100644 .github/actions/setup-oras-1.2.1/SECURITY.md delete mode 100644 .github/actions/setup-oras-1.2.1/action.yml delete mode 100644 .github/actions/setup-oras-1.2.1/dist/README.md delete mode 100644 .github/actions/setup-oras-1.2.1/dist/index.js delete mode 100644 .github/actions/setup-oras-1.2.1/dist/licenses.txt delete mode 100644 .github/actions/setup-oras-1.2.1/package-lock.json delete mode 100644 .github/actions/setup-oras-1.2.1/package.json delete mode 100644 .github/actions/setup-oras-1.2.1/src/lib/checksum.ts delete mode 100644 .github/actions/setup-oras-1.2.1/src/lib/data/releases.json delete mode 100644 .github/actions/setup-oras-1.2.1/src/lib/release.ts delete mode 100644 .github/actions/setup-oras-1.2.1/src/setup.ts delete mode 100644 .github/actions/setup-oras-1.2.1/tsconfig.json delete mode 100644 .github/actions/trivy-action-0.2.1/.gitignore delete mode 100644 .github/actions/trivy-action-0.2.1/Dockerfile delete mode 100644 .github/actions/trivy-action-0.2.1/LICENSE delete mode 100644 .github/actions/trivy-action-0.2.1/README.md delete mode 100644 .github/actions/trivy-action-0.2.1/action.yaml delete mode 100644 .github/actions/trivy-action-0.2.1/docs/images/trivy-action.png delete mode 100755 .github/actions/trivy-action-0.2.1/entrypoint.sh delete mode 100644 .github/actions/trivy-action-0.2.1/workflow.yml delete mode 100644 .github/actions/trivy-action-0.28.0/.github/workflows/bump-trivy.yaml delete mode 100644 .github/actions/trivy-action-0.28.0/.github/workflows/sync-trivy-checks.yaml delete mode 100644 .github/actions/trivy-action-0.28.0/.github/workflows/sync-trivy-db.yaml delete mode 100644 .github/actions/trivy-action-0.28.0/.github/workflows/sync-trivy-java-db.yaml delete mode 100644 .github/actions/trivy-action-0.28.0/.github/workflows/test.yaml delete mode 100644 .github/actions/trivy-action-0.28.0/.gitignore delete mode 100644 .github/actions/trivy-action-0.28.0/LICENSE delete mode 100644 .github/actions/trivy-action-0.28.0/Makefile delete mode 100644 .github/actions/trivy-action-0.28.0/README.md delete mode 100644 .github/actions/trivy-action-0.28.0/action.yaml delete mode 100644 .github/actions/trivy-action-0.28.0/docs/images/trivy-action.png delete mode 100755 .github/actions/trivy-action-0.28.0/entrypoint.sh delete mode 100644 .github/actions/trivy-action-0.28.0/test/data/config-sarif-report/main.tf delete mode 100644 .github/actions/trivy-action-0.28.0/test/data/config-sarif-report/report.sarif delete mode 100644 .github/actions/trivy-action-0.28.0/test/data/config-scan/main.tf delete mode 100644 .github/actions/trivy-action-0.28.0/test/data/config-scan/report.json delete mode 100644 .github/actions/trivy-action-0.28.0/test/data/fs-scan/report delete mode 100644 .github/actions/trivy-action-0.28.0/test/data/github-dep-snapshot/report.gsbom delete mode 100644 .github/actions/trivy-action-0.28.0/test/data/image-scan/report delete mode 100644 .github/actions/trivy-action-0.28.0/test/data/rootfs-scan/report delete mode 100644 .github/actions/trivy-action-0.28.0/test/data/secret-scan/report.json delete mode 100644 .github/actions/trivy-action-0.28.0/test/data/with-ignore-files/.trivyignore1 delete mode 100644 .github/actions/trivy-action-0.28.0/test/data/with-ignore-files/.trivyignore2 delete mode 100644 .github/actions/trivy-action-0.28.0/test/data/with-ignore-files/report delete mode 100644 .github/actions/trivy-action-0.28.0/test/data/with-tf-vars/dev.tfvars delete mode 100644 .github/actions/trivy-action-0.28.0/test/data/with-tf-vars/main.tf delete mode 100644 .github/actions/trivy-action-0.28.0/test/data/with-tf-vars/report.json delete mode 100644 .github/actions/trivy-action-0.28.0/test/data/with-trivy-yaml-cfg/report.json delete mode 100644 .github/actions/trivy-action-0.28.0/test/data/with-trivy-yaml-cfg/trivy.yaml delete mode 100644 .github/actions/trivy-action-0.28.0/test/test.bats delete mode 100644 .github/actions/trivy-action-0.28.0/workflow.yml delete mode 100644 .github/workflows/trivy-db-download.yaml diff --git a/.github/actions/setup-oras-1.2.1/.github/dependabot.yml b/.github/actions/setup-oras-1.2.1/.github/dependabot.yml deleted file mode 100644 index 7c18f317a..000000000 --- a/.github/actions/setup-oras-1.2.1/.github/dependabot.yml +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright The ORAS Authors. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -version: 2 - -updates: - - package-ecosystem: "github-actions" - # Workflow files stored in the - # default location of `.github/workflows` - directory: "/" - schedule: - interval: "weekly" - labels: - - "dependencies" - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "weekly" - labels: - - "dependencies" diff --git a/.github/actions/setup-oras-1.2.1/.github/licenserc.yml b/.github/actions/setup-oras-1.2.1/.github/licenserc.yml deleted file mode 100644 index 5bbadf503..000000000 --- a/.github/actions/setup-oras-1.2.1/.github/licenserc.yml +++ /dev/null @@ -1,42 +0,0 @@ -# Copyright The ORAS Authors. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -header: - license: - spdx-id: Apache-2.0 - content: | - Copyright The ORAS Authors. - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - paths-ignore: - - '**/*.json' - - '**/*.md' - - 'dist/**' - - 'CODEOWNERS' - - 'LICENSE' - - comment: on-failure - -dependency: - files: - - package.json diff --git a/.github/actions/setup-oras-1.2.1/.github/workflows/check-dist.yml b/.github/actions/setup-oras-1.2.1/.github/workflows/check-dist.yml deleted file mode 100644 index 8cb247589..000000000 --- a/.github/actions/setup-oras-1.2.1/.github/workflows/check-dist.yml +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright The ORAS Authors. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: Check dist/ - -on: - push: - paths-ignore: - - '**.md' - pull_request: - paths-ignore: - - '**.md' - workflow_dispatch: - -jobs: - check-dist: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: remove js files in dist/ - run: find dist/ -type f \( -name "*.json" -o -name "*.js" -o -name "*.js.map" \) -delete - - name: Setup Node 16.x - uses: actions/setup-node@v4 - with: - node-version: 16.x - cache: npm - - name: Install dependencies - run: npm install - - name: Rebuild the dist/ directory - run: npm run build - - name: Compare the expected and actual dist/ directories - run: | - if [ "$(git diff --ignore-space-at-eol dist/ | wc -l)" -gt "0" ]; then - echo "DIFFERENCES DETECTED: 'npm run build' is needed after code changes. See status below:" - git diff - exit 1 - fi \ No newline at end of file diff --git a/.github/actions/setup-oras-1.2.1/.github/workflows/license-checker.yml b/.github/actions/setup-oras-1.2.1/.github/workflows/license-checker.yml deleted file mode 100644 index d09a0ede9..000000000 --- a/.github/actions/setup-oras-1.2.1/.github/workflows/license-checker.yml +++ /dev/null @@ -1,44 +0,0 @@ -# Copyright The ORAS Authors. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: License Checker - -on: - push: - branches: - - main - - release-* - pull_request: - branches: - - main - - release-* - -permissions: - contents: write - pull-requests: write - -jobs: - check-license: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Check license header - uses: apache/skywalking-eyes/header@v0.6.0 - with: - mode: check - config: .github/licenserc.yml - - name: Check dependencies license - uses: apache/skywalking-eyes/dependency@v0.6.0 - with: - config: .github/licenserc.yml diff --git a/.github/actions/setup-oras-1.2.1/.github/workflows/test.yml b/.github/actions/setup-oras-1.2.1/.github/workflows/test.yml deleted file mode 100644 index e76c0a7bb..000000000 --- a/.github/actions/setup-oras-1.2.1/.github/workflows/test.yml +++ /dev/null @@ -1,136 +0,0 @@ -# Copyright The ORAS Authors. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: Tests - -on: - push: - branches: - - main - - release-* - pull_request: - branches: - - main - - release-* - -defaults: - run: - shell: bash - -jobs: - test-basic-setup: - name: Test Setup ORAS CLI - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [macos-latest, windows-latest, ubuntu-latest] - version: - - 1.1.0 - - 1.2.0 - fail-fast: true - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup ORAS v${{ matrix.version }} - uses: ./ - with: - version: ${{ matrix.version }} - - - name: Verify ORAS version installed - env: - ORAS_VERSION_EXPECTED: ${{ matrix.version }} - run: | - echo --- - oras version - echo --- - read -ra ORAS_VERSION_INSTALLED <<<$(oras version) - [ "${ORAS_VERSION_INSTALLED[1]}" == "$ORAS_VERSION_EXPECTED" ] - - create-test-variables: - runs-on: ubuntu-latest - outputs: - url: ${{ steps.get-checksum-url.outputs.URL }} - checksum: ${{ steps.get-checksum-url.outputs.CHECKSUM }} - steps: - - id: checkout - uses: actions/checkout@v4 - - id: get-checksum-url - run: | - RELEASE=$(jq -r 'keys_unsorted[0] as $k | .[$k].linux.amd64' src/lib/data/releases.json) - echo "CHECKSUM=$(echo $RELEASE | jq -r '.checksum')" >> "$GITHUB_OUTPUT" - echo "URL=$(echo $RELEASE | jq -r '.url')" >> "$GITHUB_OUTPUT" - - test-custom-url: - name: Test Setup using URL - runs-on: ubuntu-latest - needs: create-test-variables - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup ORAS using URL - uses: ./ - with: - url: ${{ needs.create-test-variables.outputs.url }} - checksum: ${{ needs.create-test-variables.outputs.checksum }} - - - name: Setup ORAS using URL without checksum - id: no-checksum - continue-on-error: true - uses: ./ - with: - url: ${{ needs.create-test-variables.outputs.url }} - - name: 'Should Fail: Setup ORAS using URL without checksum' - if: steps.no-checksum.outcome != 'failure' - run: | - echo "Setup ORAS using URL without checksum should fail, but succeeded." - exit 1 - - - name: Setup ORAS using checksum without url - id: no-url - continue-on-error: true - uses: ./ - with: - checksum: ${{ needs.create-test-variables.outputs.checksum }} - - name: 'Should Fail: Setup ORAS using checksum without url' - if: steps.no-url.outcome != 'failure' - run: | - echo "Setup ORAS using checksum without url should fail, but succeeded." - exit 1 - - - name: Setup ORAS using URL and invalid checksum - id: invalid-checksum - continue-on-error: true - uses: ./ - with: - url: ${{ needs.create-test-variables.outputs.url }} - checksum: abcedf - - name: 'Should Fail: Setup ORAS using URL and invalid checksum' - if: steps.invalid-checksum.outcome != 'failure' - run: | - echo "Setup ORAS using URL and invalid checksum should fail, but succeeded." - exit 1 - - - name: Setup ORAS using invalid URL - id: invalid-url - continue-on-error: true - uses: ./ - with: - url: invalid-url - checksum: test - - name: 'Should Fail: Setup ORAS using invalid URL' - if: steps.invalid-url.outcome != 'failure' - run: | - echo "Setup ORAS using invalid URL should fail, but succeeded." - exit 1 diff --git a/.github/actions/setup-oras-1.2.1/.github/workflows/update-version.yml b/.github/actions/setup-oras-1.2.1/.github/workflows/update-version.yml deleted file mode 100644 index 7b97503a1..000000000 --- a/.github/actions/setup-oras-1.2.1/.github/workflows/update-version.yml +++ /dev/null @@ -1,61 +0,0 @@ -# Copyright The ORAS Authors. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: Update major and minor tags - -on: - release: - types: [published] - -jobs: - update-major-minor-tags: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - ref: ${{ github.event.release.tag_name }} - - name: Git config - run: | - git config user.name github-actions - git config user.email github-actions@github.com - - name: Tag and push new major and minor versions - run: | - VERSION=${{ github.event.release.tag_name }} - MAJOR=$(echo ${VERSION} | cut -d '.' -f 1) - MINOR=${MAJOR}.$(echo ${VERSION} | cut -d '.' -f 2) - if [ -z ${VERSION} ] - then - echo "released tag cannot be empty" - exit 1 - else - echo "released tag is ${VERSION}" - fi - if [ -z ${MAJOR} ] - then - echo "major tag cannot be empty" - exit 1 - else - echo "major tag is ${MAJOR}" - fi - if [ -z ${MINOR} ] - then - echo "minor tag cannot be empty" - exit 1 - else - echo "minor tag is ${MINOR}" - fi - git tag -f ${MAJOR} ${VERSION} - git tag -f ${MINOR} ${VERSION} - git push origin ${MAJOR} --force - git push origin ${MINOR} --force \ No newline at end of file diff --git a/.github/actions/setup-oras-1.2.1/.gitignore b/.github/actions/setup-oras-1.2.1/.gitignore deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/actions/setup-oras-1.2.1/CODEOWNERS b/.github/actions/setup-oras-1.2.1/CODEOWNERS deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/actions/setup-oras-1.2.1/CODE_OF_CONDUCT.md b/.github/actions/setup-oras-1.2.1/CODE_OF_CONDUCT.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/actions/setup-oras-1.2.1/LICENSE b/.github/actions/setup-oras-1.2.1/LICENSE deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/actions/setup-oras-1.2.1/OWNERS.md b/.github/actions/setup-oras-1.2.1/OWNERS.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/actions/setup-oras-1.2.1/README.md b/.github/actions/setup-oras-1.2.1/README.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/actions/setup-oras-1.2.1/SECURITY.md b/.github/actions/setup-oras-1.2.1/SECURITY.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/actions/setup-oras-1.2.1/action.yml b/.github/actions/setup-oras-1.2.1/action.yml deleted file mode 100644 index af3b35e1d..000000000 --- a/.github/actions/setup-oras-1.2.1/action.yml +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright The ORAS Authors. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -name: setup-oras -description: Setup ORAS CLI on GitHub Actions runners -branding: - icon: box - color: blue -inputs: - version: - description: Version of the official ORAS CLI to install - required: false - default: 1.2.0 - url: - description: URL of the customized ORAS CLI to install. Required if 'checksum' is present. - required: false - checksum: - description: SHA256 of the customized ORAS CLI. Required if 'url' is present. - required: false -runs: - using: node20 - main: dist/index.js diff --git a/.github/actions/setup-oras-1.2.1/dist/README.md b/.github/actions/setup-oras-1.2.1/dist/README.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/actions/setup-oras-1.2.1/dist/index.js b/.github/actions/setup-oras-1.2.1/dist/index.js deleted file mode 100644 index 361fe932e..000000000 --- a/.github/actions/setup-oras-1.2.1/dist/index.js +++ /dev/null @@ -1,6516 +0,0 @@ -/******/ (() => { // webpackBootstrap -/******/ var __webpack_modules__ = ({ - -/***/ 914: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.issue = exports.issueCommand = void 0; -const os = __importStar(__nccwpck_require__(857)); -const utils_1 = __nccwpck_require__(302); -/** - * Commands - * - * Command Format: - * ::name key=value,key=value::message - * - * Examples: - * ::warning::This is the message - * ::set-env name=MY_VAR::some value - */ -function issueCommand(command, properties, message) { - const cmd = new Command(command, properties, message); - process.stdout.write(cmd.toString() + os.EOL); -} -exports.issueCommand = issueCommand; -function issue(name, message = '') { - issueCommand(name, {}, message); -} -exports.issue = issue; -const CMD_STRING = '::'; -class Command { - constructor(command, properties, message) { - if (!command) { - command = 'missing.command'; - } - this.command = command; - this.properties = properties; - this.message = message; - } - toString() { - let cmdStr = CMD_STRING + this.command; - if (this.properties && Object.keys(this.properties).length > 0) { - cmdStr += ' '; - let first = true; - for (const key in this.properties) { - if (this.properties.hasOwnProperty(key)) { - const val = this.properties[key]; - if (val) { - if (first) { - first = false; - } - else { - cmdStr += ','; - } - cmdStr += `${key}=${escapeProperty(val)}`; - } - } - } - } - cmdStr += `${CMD_STRING}${escapeData(this.message)}`; - return cmdStr; - } -} -function escapeData(s) { - return (0, utils_1.toCommandValue)(s) - .replace(/%/g, '%25') - .replace(/\r/g, '%0D') - .replace(/\n/g, '%0A'); -} -function escapeProperty(s) { - return (0, utils_1.toCommandValue)(s) - .replace(/%/g, '%25') - .replace(/\r/g, '%0D') - .replace(/\n/g, '%0A') - .replace(/:/g, '%3A') - .replace(/,/g, '%2C'); -} -//# sourceMappingURL=command.js.map - -/***/ }), - -/***/ 484: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.platform = exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = exports.markdownSummary = exports.summary = exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0; -const command_1 = __nccwpck_require__(914); -const file_command_1 = __nccwpck_require__(753); -const utils_1 = __nccwpck_require__(302); -const os = __importStar(__nccwpck_require__(857)); -const path = __importStar(__nccwpck_require__(928)); -const oidc_utils_1 = __nccwpck_require__(306); -/** - * The code to exit an action - */ -var ExitCode; -(function (ExitCode) { - /** - * A code indicating that the action was successful - */ - ExitCode[ExitCode["Success"] = 0] = "Success"; - /** - * A code indicating that the action was a failure - */ - ExitCode[ExitCode["Failure"] = 1] = "Failure"; -})(ExitCode || (exports.ExitCode = ExitCode = {})); -//----------------------------------------------------------------------- -// Variables -//----------------------------------------------------------------------- -/** - * Sets env variable for this action and future actions in the job - * @param name the name of the variable to set - * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -function exportVariable(name, val) { - const convertedVal = (0, utils_1.toCommandValue)(val); - process.env[name] = convertedVal; - const filePath = process.env['GITHUB_ENV'] || ''; - if (filePath) { - return (0, file_command_1.issueFileCommand)('ENV', (0, file_command_1.prepareKeyValueMessage)(name, val)); - } - (0, command_1.issueCommand)('set-env', { name }, convertedVal); -} -exports.exportVariable = exportVariable; -/** - * Registers a secret which will get masked from logs - * @param secret value of the secret - */ -function setSecret(secret) { - (0, command_1.issueCommand)('add-mask', {}, secret); -} -exports.setSecret = setSecret; -/** - * Prepends inputPath to the PATH (for this action and future actions) - * @param inputPath - */ -function addPath(inputPath) { - const filePath = process.env['GITHUB_PATH'] || ''; - if (filePath) { - (0, file_command_1.issueFileCommand)('PATH', inputPath); - } - else { - (0, command_1.issueCommand)('add-path', {}, inputPath); - } - process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`; -} -exports.addPath = addPath; -/** - * Gets the value of an input. - * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed. - * Returns an empty string if the value is not defined. - * - * @param name name of the input to get - * @param options optional. See InputOptions. - * @returns string - */ -function getInput(name, options) { - const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || ''; - if (options && options.required && !val) { - throw new Error(`Input required and not supplied: ${name}`); - } - if (options && options.trimWhitespace === false) { - return val; - } - return val.trim(); -} -exports.getInput = getInput; -/** - * Gets the values of an multiline input. Each value is also trimmed. - * - * @param name name of the input to get - * @param options optional. See InputOptions. - * @returns string[] - * - */ -function getMultilineInput(name, options) { - const inputs = getInput(name, options) - .split('\n') - .filter(x => x !== ''); - if (options && options.trimWhitespace === false) { - return inputs; - } - return inputs.map(input => input.trim()); -} -exports.getMultilineInput = getMultilineInput; -/** - * Gets the input value of the boolean type in the YAML 1.2 "core schema" specification. - * Support boolean input list: `true | True | TRUE | false | False | FALSE` . - * The return value is also in boolean type. - * ref: https://yaml.org/spec/1.2/spec.html#id2804923 - * - * @param name name of the input to get - * @param options optional. See InputOptions. - * @returns boolean - */ -function getBooleanInput(name, options) { - const trueValue = ['true', 'True', 'TRUE']; - const falseValue = ['false', 'False', 'FALSE']; - const val = getInput(name, options); - if (trueValue.includes(val)) - return true; - if (falseValue.includes(val)) - return false; - throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${name}\n` + - `Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); -} -exports.getBooleanInput = getBooleanInput; -/** - * Sets the value of an output. - * - * @param name name of the output to set - * @param value value to store. Non-string values will be converted to a string via JSON.stringify - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -function setOutput(name, value) { - const filePath = process.env['GITHUB_OUTPUT'] || ''; - if (filePath) { - return (0, file_command_1.issueFileCommand)('OUTPUT', (0, file_command_1.prepareKeyValueMessage)(name, value)); - } - process.stdout.write(os.EOL); - (0, command_1.issueCommand)('set-output', { name }, (0, utils_1.toCommandValue)(value)); -} -exports.setOutput = setOutput; -/** - * Enables or disables the echoing of commands into stdout for the rest of the step. - * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set. - * - */ -function setCommandEcho(enabled) { - (0, command_1.issue)('echo', enabled ? 'on' : 'off'); -} -exports.setCommandEcho = setCommandEcho; -//----------------------------------------------------------------------- -// Results -//----------------------------------------------------------------------- -/** - * Sets the action status to failed. - * When the action exits it will be with an exit code of 1 - * @param message add error issue message - */ -function setFailed(message) { - process.exitCode = ExitCode.Failure; - error(message); -} -exports.setFailed = setFailed; -//----------------------------------------------------------------------- -// Logging Commands -//----------------------------------------------------------------------- -/** - * Gets whether Actions Step Debug is on or not - */ -function isDebug() { - return process.env['RUNNER_DEBUG'] === '1'; -} -exports.isDebug = isDebug; -/** - * Writes debug message to user log - * @param message debug message - */ -function debug(message) { - (0, command_1.issueCommand)('debug', {}, message); -} -exports.debug = debug; -/** - * Adds an error issue - * @param message error issue message. Errors will be converted to string via toString() - * @param properties optional properties to add to the annotation. - */ -function error(message, properties = {}) { - (0, command_1.issueCommand)('error', (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message); -} -exports.error = error; -/** - * Adds a warning issue - * @param message warning issue message. Errors will be converted to string via toString() - * @param properties optional properties to add to the annotation. - */ -function warning(message, properties = {}) { - (0, command_1.issueCommand)('warning', (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message); -} -exports.warning = warning; -/** - * Adds a notice issue - * @param message notice issue message. Errors will be converted to string via toString() - * @param properties optional properties to add to the annotation. - */ -function notice(message, properties = {}) { - (0, command_1.issueCommand)('notice', (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message); -} -exports.notice = notice; -/** - * Writes info to log with console.log. - * @param message info message - */ -function info(message) { - process.stdout.write(message + os.EOL); -} -exports.info = info; -/** - * Begin an output group. - * - * Output until the next `groupEnd` will be foldable in this group - * - * @param name The name of the output group - */ -function startGroup(name) { - (0, command_1.issue)('group', name); -} -exports.startGroup = startGroup; -/** - * End an output group. - */ -function endGroup() { - (0, command_1.issue)('endgroup'); -} -exports.endGroup = endGroup; -/** - * Wrap an asynchronous function call in a group. - * - * Returns the same type as the function itself. - * - * @param name The name of the group - * @param fn The function to wrap in the group - */ -function group(name, fn) { - return __awaiter(this, void 0, void 0, function* () { - startGroup(name); - let result; - try { - result = yield fn(); - } - finally { - endGroup(); - } - return result; - }); -} -exports.group = group; -//----------------------------------------------------------------------- -// Wrapper action state -//----------------------------------------------------------------------- -/** - * Saves state for current action, the state can only be retrieved by this action's post job execution. - * - * @param name name of the state to store - * @param value value to store. Non-string values will be converted to a string via JSON.stringify - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -function saveState(name, value) { - const filePath = process.env['GITHUB_STATE'] || ''; - if (filePath) { - return (0, file_command_1.issueFileCommand)('STATE', (0, file_command_1.prepareKeyValueMessage)(name, value)); - } - (0, command_1.issueCommand)('save-state', { name }, (0, utils_1.toCommandValue)(value)); -} -exports.saveState = saveState; -/** - * Gets the value of an state set by this action's main execution. - * - * @param name name of the state to get - * @returns string - */ -function getState(name) { - return process.env[`STATE_${name}`] || ''; -} -exports.getState = getState; -function getIDToken(aud) { - return __awaiter(this, void 0, void 0, function* () { - return yield oidc_utils_1.OidcClient.getIDToken(aud); - }); -} -exports.getIDToken = getIDToken; -/** - * Summary exports - */ -var summary_1 = __nccwpck_require__(847); -Object.defineProperty(exports, "summary", ({ enumerable: true, get: function () { return summary_1.summary; } })); -/** - * @deprecated use core.summary - */ -var summary_2 = __nccwpck_require__(847); -Object.defineProperty(exports, "markdownSummary", ({ enumerable: true, get: function () { return summary_2.markdownSummary; } })); -/** - * Path exports - */ -var path_utils_1 = __nccwpck_require__(976); -Object.defineProperty(exports, "toPosixPath", ({ enumerable: true, get: function () { return path_utils_1.toPosixPath; } })); -Object.defineProperty(exports, "toWin32Path", ({ enumerable: true, get: function () { return path_utils_1.toWin32Path; } })); -Object.defineProperty(exports, "toPlatformPath", ({ enumerable: true, get: function () { return path_utils_1.toPlatformPath; } })); -/** - * Platform utilities exports - */ -exports.platform = __importStar(__nccwpck_require__(968)); -//# sourceMappingURL=core.js.map - -/***/ }), - -/***/ 753: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -// For internal use, subject to change. -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.prepareKeyValueMessage = exports.issueFileCommand = void 0; -// We use any as a valid input type -/* eslint-disable @typescript-eslint/no-explicit-any */ -const crypto = __importStar(__nccwpck_require__(982)); -const fs = __importStar(__nccwpck_require__(896)); -const os = __importStar(__nccwpck_require__(857)); -const utils_1 = __nccwpck_require__(302); -function issueFileCommand(command, message) { - const filePath = process.env[`GITHUB_${command}`]; - if (!filePath) { - throw new Error(`Unable to find environment variable for file command ${command}`); - } - if (!fs.existsSync(filePath)) { - throw new Error(`Missing file at path: ${filePath}`); - } - fs.appendFileSync(filePath, `${(0, utils_1.toCommandValue)(message)}${os.EOL}`, { - encoding: 'utf8' - }); -} -exports.issueFileCommand = issueFileCommand; -function prepareKeyValueMessage(key, value) { - const delimiter = `ghadelimiter_${crypto.randomUUID()}`; - const convertedValue = (0, utils_1.toCommandValue)(value); - // These should realistically never happen, but just in case someone finds a - // way to exploit uuid generation let's not allow keys or values that contain - // the delimiter. - if (key.includes(delimiter)) { - throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter}"`); - } - if (convertedValue.includes(delimiter)) { - throw new Error(`Unexpected input: value should not contain the delimiter "${delimiter}"`); - } - return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`; -} -exports.prepareKeyValueMessage = prepareKeyValueMessage; -//# sourceMappingURL=file-command.js.map - -/***/ }), - -/***/ 306: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.OidcClient = void 0; -const http_client_1 = __nccwpck_require__(844); -const auth_1 = __nccwpck_require__(552); -const core_1 = __nccwpck_require__(484); -class OidcClient { - static createHttpClient(allowRetry = true, maxRetry = 10) { - const requestOptions = { - allowRetries: allowRetry, - maxRetries: maxRetry - }; - return new http_client_1.HttpClient('actions/oidc-client', [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], requestOptions); - } - static getRequestToken() { - const token = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN']; - if (!token) { - throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable'); - } - return token; - } - static getIDTokenUrl() { - const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL']; - if (!runtimeUrl) { - throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable'); - } - return runtimeUrl; - } - static getCall(id_token_url) { - var _a; - return __awaiter(this, void 0, void 0, function* () { - const httpclient = OidcClient.createHttpClient(); - const res = yield httpclient - .getJson(id_token_url) - .catch(error => { - throw new Error(`Failed to get ID Token. \n - Error Code : ${error.statusCode}\n - Error Message: ${error.message}`); - }); - const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value; - if (!id_token) { - throw new Error('Response json body do not have ID Token field'); - } - return id_token; - }); - } - static getIDToken(audience) { - return __awaiter(this, void 0, void 0, function* () { - try { - // New ID Token is requested from action service - let id_token_url = OidcClient.getIDTokenUrl(); - if (audience) { - const encodedAudience = encodeURIComponent(audience); - id_token_url = `${id_token_url}&audience=${encodedAudience}`; - } - (0, core_1.debug)(`ID token url is ${id_token_url}`); - const id_token = yield OidcClient.getCall(id_token_url); - (0, core_1.setSecret)(id_token); - return id_token; - } - catch (error) { - throw new Error(`Error message: ${error.message}`); - } - }); - } -} -exports.OidcClient = OidcClient; -//# sourceMappingURL=oidc-utils.js.map - -/***/ }), - -/***/ 976: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0; -const path = __importStar(__nccwpck_require__(928)); -/** - * toPosixPath converts the given path to the posix form. On Windows, \\ will be - * replaced with /. - * - * @param pth. Path to transform. - * @return string Posix path. - */ -function toPosixPath(pth) { - return pth.replace(/[\\]/g, '/'); -} -exports.toPosixPath = toPosixPath; -/** - * toWin32Path converts the given path to the win32 form. On Linux, / will be - * replaced with \\. - * - * @param pth. Path to transform. - * @return string Win32 path. - */ -function toWin32Path(pth) { - return pth.replace(/[/]/g, '\\'); -} -exports.toWin32Path = toWin32Path; -/** - * toPlatformPath converts the given path to a platform-specific path. It does - * this by replacing instances of / and \ with the platform-specific path - * separator. - * - * @param pth The path to platformize. - * @return string The platform-specific path. - */ -function toPlatformPath(pth) { - return pth.replace(/[/\\]/g, path.sep); -} -exports.toPlatformPath = toPlatformPath; -//# sourceMappingURL=path-utils.js.map - -/***/ }), - -/***/ 968: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getDetails = exports.isLinux = exports.isMacOS = exports.isWindows = exports.arch = exports.platform = void 0; -const os_1 = __importDefault(__nccwpck_require__(857)); -const exec = __importStar(__nccwpck_require__(236)); -const getWindowsInfo = () => __awaiter(void 0, void 0, void 0, function* () { - const { stdout: version } = yield exec.getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Version"', undefined, { - silent: true - }); - const { stdout: name } = yield exec.getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Caption"', undefined, { - silent: true - }); - return { - name: name.trim(), - version: version.trim() - }; -}); -const getMacOsInfo = () => __awaiter(void 0, void 0, void 0, function* () { - var _a, _b, _c, _d; - const { stdout } = yield exec.getExecOutput('sw_vers', undefined, { - silent: true - }); - const version = (_b = (_a = stdout.match(/ProductVersion:\s*(.+)/)) === null || _a === void 0 ? void 0 : _a[1]) !== null && _b !== void 0 ? _b : ''; - const name = (_d = (_c = stdout.match(/ProductName:\s*(.+)/)) === null || _c === void 0 ? void 0 : _c[1]) !== null && _d !== void 0 ? _d : ''; - return { - name, - version - }; -}); -const getLinuxInfo = () => __awaiter(void 0, void 0, void 0, function* () { - const { stdout } = yield exec.getExecOutput('lsb_release', ['-i', '-r', '-s'], { - silent: true - }); - const [name, version] = stdout.trim().split('\n'); - return { - name, - version - }; -}); -exports.platform = os_1.default.platform(); -exports.arch = os_1.default.arch(); -exports.isWindows = exports.platform === 'win32'; -exports.isMacOS = exports.platform === 'darwin'; -exports.isLinux = exports.platform === 'linux'; -function getDetails() { - return __awaiter(this, void 0, void 0, function* () { - return Object.assign(Object.assign({}, (yield (exports.isWindows - ? getWindowsInfo() - : exports.isMacOS - ? getMacOsInfo() - : getLinuxInfo()))), { platform: exports.platform, - arch: exports.arch, - isWindows: exports.isWindows, - isMacOS: exports.isMacOS, - isLinux: exports.isLinux }); - }); -} -exports.getDetails = getDetails; -//# sourceMappingURL=platform.js.map - -/***/ }), - -/***/ 847: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.summary = exports.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0; -const os_1 = __nccwpck_require__(857); -const fs_1 = __nccwpck_require__(896); -const { access, appendFile, writeFile } = fs_1.promises; -exports.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY'; -exports.SUMMARY_DOCS_URL = 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary'; -class Summary { - constructor() { - this._buffer = ''; - } - /** - * Finds the summary file path from the environment, rejects if env var is not found or file does not exist - * Also checks r/w permissions. - * - * @returns step summary file path - */ - filePath() { - return __awaiter(this, void 0, void 0, function* () { - if (this._filePath) { - return this._filePath; - } - const pathFromEnv = process.env[exports.SUMMARY_ENV_VAR]; - if (!pathFromEnv) { - throw new Error(`Unable to find environment variable for $${exports.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`); - } - try { - yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK); - } - catch (_a) { - throw new Error(`Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`); - } - this._filePath = pathFromEnv; - return this._filePath; - }); - } - /** - * Wraps content in an HTML tag, adding any HTML attributes - * - * @param {string} tag HTML tag to wrap - * @param {string | null} content content within the tag - * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add - * - * @returns {string} content wrapped in HTML element - */ - wrap(tag, content, attrs = {}) { - const htmlAttrs = Object.entries(attrs) - .map(([key, value]) => ` ${key}="${value}"`) - .join(''); - if (!content) { - return `<${tag}${htmlAttrs}>`; - } - return `<${tag}${htmlAttrs}>${content}`; - } - /** - * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default. - * - * @param {SummaryWriteOptions} [options] (optional) options for write operation - * - * @returns {Promise

} summary instance - */ - write(options) { - return __awaiter(this, void 0, void 0, function* () { - const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite); - const filePath = yield this.filePath(); - const writeFunc = overwrite ? writeFile : appendFile; - yield writeFunc(filePath, this._buffer, { encoding: 'utf8' }); - return this.emptyBuffer(); - }); - } - /** - * Clears the summary buffer and wipes the summary file - * - * @returns {Summary} summary instance - */ - clear() { - return __awaiter(this, void 0, void 0, function* () { - return this.emptyBuffer().write({ overwrite: true }); - }); - } - /** - * Returns the current summary buffer as a string - * - * @returns {string} string of summary buffer - */ - stringify() { - return this._buffer; - } - /** - * If the summary buffer is empty - * - * @returns {boolen} true if the buffer is empty - */ - isEmptyBuffer() { - return this._buffer.length === 0; - } - /** - * Resets the summary buffer without writing to summary file - * - * @returns {Summary} summary instance - */ - emptyBuffer() { - this._buffer = ''; - return this; - } - /** - * Adds raw text to the summary buffer - * - * @param {string} text content to add - * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false) - * - * @returns {Summary} summary instance - */ - addRaw(text, addEOL = false) { - this._buffer += text; - return addEOL ? this.addEOL() : this; - } - /** - * Adds the operating system-specific end-of-line marker to the buffer - * - * @returns {Summary} summary instance - */ - addEOL() { - return this.addRaw(os_1.EOL); - } - /** - * Adds an HTML codeblock to the summary buffer - * - * @param {string} code content to render within fenced code block - * @param {string} lang (optional) language to syntax highlight code - * - * @returns {Summary} summary instance - */ - addCodeBlock(code, lang) { - const attrs = Object.assign({}, (lang && { lang })); - const element = this.wrap('pre', this.wrap('code', code), attrs); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML list to the summary buffer - * - * @param {string[]} items list of items to render - * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false) - * - * @returns {Summary} summary instance - */ - addList(items, ordered = false) { - const tag = ordered ? 'ol' : 'ul'; - const listItems = items.map(item => this.wrap('li', item)).join(''); - const element = this.wrap(tag, listItems); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML table to the summary buffer - * - * @param {SummaryTableCell[]} rows table rows - * - * @returns {Summary} summary instance - */ - addTable(rows) { - const tableBody = rows - .map(row => { - const cells = row - .map(cell => { - if (typeof cell === 'string') { - return this.wrap('td', cell); - } - const { header, data, colspan, rowspan } = cell; - const tag = header ? 'th' : 'td'; - const attrs = Object.assign(Object.assign({}, (colspan && { colspan })), (rowspan && { rowspan })); - return this.wrap(tag, data, attrs); - }) - .join(''); - return this.wrap('tr', cells); - }) - .join(''); - const element = this.wrap('table', tableBody); - return this.addRaw(element).addEOL(); - } - /** - * Adds a collapsable HTML details element to the summary buffer - * - * @param {string} label text for the closed state - * @param {string} content collapsable content - * - * @returns {Summary} summary instance - */ - addDetails(label, content) { - const element = this.wrap('details', this.wrap('summary', label) + content); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML image tag to the summary buffer - * - * @param {string} src path to the image you to embed - * @param {string} alt text description of the image - * @param {SummaryImageOptions} options (optional) addition image attributes - * - * @returns {Summary} summary instance - */ - addImage(src, alt, options) { - const { width, height } = options || {}; - const attrs = Object.assign(Object.assign({}, (width && { width })), (height && { height })); - const element = this.wrap('img', null, Object.assign({ src, alt }, attrs)); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML section heading element - * - * @param {string} text heading text - * @param {number | string} [level=1] (optional) the heading level, default: 1 - * - * @returns {Summary} summary instance - */ - addHeading(text, level) { - const tag = `h${level}`; - const allowedTag = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag) - ? tag - : 'h1'; - const element = this.wrap(allowedTag, text); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML thematic break (
) to the summary buffer - * - * @returns {Summary} summary instance - */ - addSeparator() { - const element = this.wrap('hr', null); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML line break (
) to the summary buffer - * - * @returns {Summary} summary instance - */ - addBreak() { - const element = this.wrap('br', null); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML blockquote to the summary buffer - * - * @param {string} text quote text - * @param {string} cite (optional) citation url - * - * @returns {Summary} summary instance - */ - addQuote(text, cite) { - const attrs = Object.assign({}, (cite && { cite })); - const element = this.wrap('blockquote', text, attrs); - return this.addRaw(element).addEOL(); - } - /** - * Adds an HTML anchor tag to the summary buffer - * - * @param {string} text link text/content - * @param {string} href hyperlink - * - * @returns {Summary} summary instance - */ - addLink(text, href) { - const element = this.wrap('a', text, { href }); - return this.addRaw(element).addEOL(); - } -} -const _summary = new Summary(); -/** - * @deprecated use `core.summary` - */ -exports.markdownSummary = _summary; -exports.summary = _summary; -//# sourceMappingURL=summary.js.map - -/***/ }), - -/***/ 302: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - -// We use any as a valid input type -/* eslint-disable @typescript-eslint/no-explicit-any */ -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.toCommandProperties = exports.toCommandValue = void 0; -/** - * Sanitizes an input into a string so it can be passed into issueCommand safely - * @param input input to sanitize into a string - */ -function toCommandValue(input) { - if (input === null || input === undefined) { - return ''; - } - else if (typeof input === 'string' || input instanceof String) { - return input; - } - return JSON.stringify(input); -} -exports.toCommandValue = toCommandValue; -/** - * - * @param annotationProperties - * @returns The command properties to send with the actual annotation command - * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646 - */ -function toCommandProperties(annotationProperties) { - if (!Object.keys(annotationProperties).length) { - return {}; - } - return { - title: annotationProperties.title, - file: annotationProperties.file, - line: annotationProperties.startLine, - endLine: annotationProperties.endLine, - col: annotationProperties.startColumn, - endColumn: annotationProperties.endColumn - }; -} -exports.toCommandProperties = toCommandProperties; -//# sourceMappingURL=utils.js.map - -/***/ }), - -/***/ 236: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getExecOutput = exports.exec = void 0; -const string_decoder_1 = __nccwpck_require__(193); -const tr = __importStar(__nccwpck_require__(665)); -/** - * Exec a command. - * Output will be streamed to the live console. - * Returns promise with return code - * - * @param commandLine command to execute (can include additional args). Must be correctly escaped. - * @param args optional arguments for tool. Escaping is handled by the lib. - * @param options optional exec options. See ExecOptions - * @returns Promise exit code - */ -function exec(commandLine, args, options) { - return __awaiter(this, void 0, void 0, function* () { - const commandArgs = tr.argStringToArray(commandLine); - if (commandArgs.length === 0) { - throw new Error(`Parameter 'commandLine' cannot be null or empty.`); - } - // Path to tool to execute should be first arg - const toolPath = commandArgs[0]; - args = commandArgs.slice(1).concat(args || []); - const runner = new tr.ToolRunner(toolPath, args, options); - return runner.exec(); - }); -} -exports.exec = exec; -/** - * Exec a command and get the output. - * Output will be streamed to the live console. - * Returns promise with the exit code and collected stdout and stderr - * - * @param commandLine command to execute (can include additional args). Must be correctly escaped. - * @param args optional arguments for tool. Escaping is handled by the lib. - * @param options optional exec options. See ExecOptions - * @returns Promise exit code, stdout, and stderr - */ -function getExecOutput(commandLine, args, options) { - var _a, _b; - return __awaiter(this, void 0, void 0, function* () { - let stdout = ''; - let stderr = ''; - //Using string decoder covers the case where a mult-byte character is split - const stdoutDecoder = new string_decoder_1.StringDecoder('utf8'); - const stderrDecoder = new string_decoder_1.StringDecoder('utf8'); - const originalStdoutListener = (_a = options === null || options === void 0 ? void 0 : options.listeners) === null || _a === void 0 ? void 0 : _a.stdout; - const originalStdErrListener = (_b = options === null || options === void 0 ? void 0 : options.listeners) === null || _b === void 0 ? void 0 : _b.stderr; - const stdErrListener = (data) => { - stderr += stderrDecoder.write(data); - if (originalStdErrListener) { - originalStdErrListener(data); - } - }; - const stdOutListener = (data) => { - stdout += stdoutDecoder.write(data); - if (originalStdoutListener) { - originalStdoutListener(data); - } - }; - const listeners = Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.listeners), { stdout: stdOutListener, stderr: stdErrListener }); - const exitCode = yield exec(commandLine, args, Object.assign(Object.assign({}, options), { listeners })); - //flush any remaining characters - stdout += stdoutDecoder.end(); - stderr += stderrDecoder.end(); - return { - exitCode, - stdout, - stderr - }; - }); -} -exports.getExecOutput = getExecOutput; -//# sourceMappingURL=exec.js.map - -/***/ }), - -/***/ 665: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.argStringToArray = exports.ToolRunner = void 0; -const os = __importStar(__nccwpck_require__(857)); -const events = __importStar(__nccwpck_require__(434)); -const child = __importStar(__nccwpck_require__(317)); -const path = __importStar(__nccwpck_require__(928)); -const io = __importStar(__nccwpck_require__(994)); -const ioUtil = __importStar(__nccwpck_require__(207)); -const timers_1 = __nccwpck_require__(557); -/* eslint-disable @typescript-eslint/unbound-method */ -const IS_WINDOWS = process.platform === 'win32'; -/* - * Class for running command line tools. Handles quoting and arg parsing in a platform agnostic way. - */ -class ToolRunner extends events.EventEmitter { - constructor(toolPath, args, options) { - super(); - if (!toolPath) { - throw new Error("Parameter 'toolPath' cannot be null or empty."); - } - this.toolPath = toolPath; - this.args = args || []; - this.options = options || {}; - } - _debug(message) { - if (this.options.listeners && this.options.listeners.debug) { - this.options.listeners.debug(message); - } - } - _getCommandString(options, noPrefix) { - const toolPath = this._getSpawnFileName(); - const args = this._getSpawnArgs(options); - let cmd = noPrefix ? '' : '[command]'; // omit prefix when piped to a second tool - if (IS_WINDOWS) { - // Windows + cmd file - if (this._isCmdFile()) { - cmd += toolPath; - for (const a of args) { - cmd += ` ${a}`; - } - } - // Windows + verbatim - else if (options.windowsVerbatimArguments) { - cmd += `"${toolPath}"`; - for (const a of args) { - cmd += ` ${a}`; - } - } - // Windows (regular) - else { - cmd += this._windowsQuoteCmdArg(toolPath); - for (const a of args) { - cmd += ` ${this._windowsQuoteCmdArg(a)}`; - } - } - } - else { - // OSX/Linux - this can likely be improved with some form of quoting. - // creating processes on Unix is fundamentally different than Windows. - // on Unix, execvp() takes an arg array. - cmd += toolPath; - for (const a of args) { - cmd += ` ${a}`; - } - } - return cmd; - } - _processLineBuffer(data, strBuffer, onLine) { - try { - let s = strBuffer + data.toString(); - let n = s.indexOf(os.EOL); - while (n > -1) { - const line = s.substring(0, n); - onLine(line); - // the rest of the string ... - s = s.substring(n + os.EOL.length); - n = s.indexOf(os.EOL); - } - return s; - } - catch (err) { - // streaming lines to console is best effort. Don't fail a build. - this._debug(`error processing line. Failed with error ${err}`); - return ''; - } - } - _getSpawnFileName() { - if (IS_WINDOWS) { - if (this._isCmdFile()) { - return process.env['COMSPEC'] || 'cmd.exe'; - } - } - return this.toolPath; - } - _getSpawnArgs(options) { - if (IS_WINDOWS) { - if (this._isCmdFile()) { - let argline = `/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`; - for (const a of this.args) { - argline += ' '; - argline += options.windowsVerbatimArguments - ? a - : this._windowsQuoteCmdArg(a); - } - argline += '"'; - return [argline]; - } - } - return this.args; - } - _endsWith(str, end) { - return str.endsWith(end); - } - _isCmdFile() { - const upperToolPath = this.toolPath.toUpperCase(); - return (this._endsWith(upperToolPath, '.CMD') || - this._endsWith(upperToolPath, '.BAT')); - } - _windowsQuoteCmdArg(arg) { - // for .exe, apply the normal quoting rules that libuv applies - if (!this._isCmdFile()) { - return this._uvQuoteCmdArg(arg); - } - // otherwise apply quoting rules specific to the cmd.exe command line parser. - // the libuv rules are generic and are not designed specifically for cmd.exe - // command line parser. - // - // for a detailed description of the cmd.exe command line parser, refer to - // http://stackoverflow.com/questions/4094699/how-does-the-windows-command-interpreter-cmd-exe-parse-scripts/7970912#7970912 - // need quotes for empty arg - if (!arg) { - return '""'; - } - // determine whether the arg needs to be quoted - const cmdSpecialChars = [ - ' ', - '\t', - '&', - '(', - ')', - '[', - ']', - '{', - '}', - '^', - '=', - ';', - '!', - "'", - '+', - ',', - '`', - '~', - '|', - '<', - '>', - '"' - ]; - let needsQuotes = false; - for (const char of arg) { - if (cmdSpecialChars.some(x => x === char)) { - needsQuotes = true; - break; - } - } - // short-circuit if quotes not needed - if (!needsQuotes) { - return arg; - } - // the following quoting rules are very similar to the rules that by libuv applies. - // - // 1) wrap the string in quotes - // - // 2) double-up quotes - i.e. " => "" - // - // this is different from the libuv quoting rules. libuv replaces " with \", which unfortunately - // doesn't work well with a cmd.exe command line. - // - // note, replacing " with "" also works well if the arg is passed to a downstream .NET console app. - // for example, the command line: - // foo.exe "myarg:""my val""" - // is parsed by a .NET console app into an arg array: - // [ "myarg:\"my val\"" ] - // which is the same end result when applying libuv quoting rules. although the actual - // command line from libuv quoting rules would look like: - // foo.exe "myarg:\"my val\"" - // - // 3) double-up slashes that precede a quote, - // e.g. hello \world => "hello \world" - // hello\"world => "hello\\""world" - // hello\\"world => "hello\\\\""world" - // hello world\ => "hello world\\" - // - // technically this is not required for a cmd.exe command line, or the batch argument parser. - // the reasons for including this as a .cmd quoting rule are: - // - // a) this is optimized for the scenario where the argument is passed from the .cmd file to an - // external program. many programs (e.g. .NET console apps) rely on the slash-doubling rule. - // - // b) it's what we've been doing previously (by deferring to node default behavior) and we - // haven't heard any complaints about that aspect. - // - // note, a weakness of the quoting rules chosen here, is that % is not escaped. in fact, % cannot be - // escaped when used on the command line directly - even though within a .cmd file % can be escaped - // by using %%. - // - // the saving grace is, on the command line, %var% is left as-is if var is not defined. this contrasts - // the line parsing rules within a .cmd file, where if var is not defined it is replaced with nothing. - // - // one option that was explored was replacing % with ^% - i.e. %var% => ^%var^%. this hack would - // often work, since it is unlikely that var^ would exist, and the ^ character is removed when the - // variable is used. the problem, however, is that ^ is not removed when %* is used to pass the args - // to an external program. - // - // an unexplored potential solution for the % escaping problem, is to create a wrapper .cmd file. - // % can be escaped within a .cmd file. - let reverse = '"'; - let quoteHit = true; - for (let i = arg.length; i > 0; i--) { - // walk the string in reverse - reverse += arg[i - 1]; - if (quoteHit && arg[i - 1] === '\\') { - reverse += '\\'; // double the slash - } - else if (arg[i - 1] === '"') { - quoteHit = true; - reverse += '"'; // double the quote - } - else { - quoteHit = false; - } - } - reverse += '"'; - return reverse - .split('') - .reverse() - .join(''); - } - _uvQuoteCmdArg(arg) { - // Tool runner wraps child_process.spawn() and needs to apply the same quoting as - // Node in certain cases where the undocumented spawn option windowsVerbatimArguments - // is used. - // - // Since this function is a port of quote_cmd_arg from Node 4.x (technically, lib UV, - // see https://github.com/nodejs/node/blob/v4.x/deps/uv/src/win/process.c for details), - // pasting copyright notice from Node within this function: - // - // Copyright Joyent, Inc. and other Node contributors. All rights reserved. - // - // Permission is hereby granted, free of charge, to any person obtaining a copy - // of this software and associated documentation files (the "Software"), to - // deal in the Software without restriction, including without limitation the - // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - // sell copies of the Software, and to permit persons to whom the Software is - // furnished to do so, subject to the following conditions: - // - // The above copyright notice and this permission notice shall be included in - // all copies or substantial portions of the Software. - // - // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - // IN THE SOFTWARE. - if (!arg) { - // Need double quotation for empty argument - return '""'; - } - if (!arg.includes(' ') && !arg.includes('\t') && !arg.includes('"')) { - // No quotation needed - return arg; - } - if (!arg.includes('"') && !arg.includes('\\')) { - // No embedded double quotes or backslashes, so I can just wrap - // quote marks around the whole thing. - return `"${arg}"`; - } - // Expected input/output: - // input : hello"world - // output: "hello\"world" - // input : hello""world - // output: "hello\"\"world" - // input : hello\world - // output: hello\world - // input : hello\\world - // output: hello\\world - // input : hello\"world - // output: "hello\\\"world" - // input : hello\\"world - // output: "hello\\\\\"world" - // input : hello world\ - // output: "hello world\\" - note the comment in libuv actually reads "hello world\" - // but it appears the comment is wrong, it should be "hello world\\" - let reverse = '"'; - let quoteHit = true; - for (let i = arg.length; i > 0; i--) { - // walk the string in reverse - reverse += arg[i - 1]; - if (quoteHit && arg[i - 1] === '\\') { - reverse += '\\'; - } - else if (arg[i - 1] === '"') { - quoteHit = true; - reverse += '\\'; - } - else { - quoteHit = false; - } - } - reverse += '"'; - return reverse - .split('') - .reverse() - .join(''); - } - _cloneExecOptions(options) { - options = options || {}; - const result = { - cwd: options.cwd || process.cwd(), - env: options.env || process.env, - silent: options.silent || false, - windowsVerbatimArguments: options.windowsVerbatimArguments || false, - failOnStdErr: options.failOnStdErr || false, - ignoreReturnCode: options.ignoreReturnCode || false, - delay: options.delay || 10000 - }; - result.outStream = options.outStream || process.stdout; - result.errStream = options.errStream || process.stderr; - return result; - } - _getSpawnOptions(options, toolPath) { - options = options || {}; - const result = {}; - result.cwd = options.cwd; - result.env = options.env; - result['windowsVerbatimArguments'] = - options.windowsVerbatimArguments || this._isCmdFile(); - if (options.windowsVerbatimArguments) { - result.argv0 = `"${toolPath}"`; - } - return result; - } - /** - * Exec a tool. - * Output will be streamed to the live console. - * Returns promise with return code - * - * @param tool path to tool to exec - * @param options optional exec options. See ExecOptions - * @returns number - */ - exec() { - return __awaiter(this, void 0, void 0, function* () { - // root the tool path if it is unrooted and contains relative pathing - if (!ioUtil.isRooted(this.toolPath) && - (this.toolPath.includes('/') || - (IS_WINDOWS && this.toolPath.includes('\\')))) { - // prefer options.cwd if it is specified, however options.cwd may also need to be rooted - this.toolPath = path.resolve(process.cwd(), this.options.cwd || process.cwd(), this.toolPath); - } - // if the tool is only a file name, then resolve it from the PATH - // otherwise verify it exists (add extension on Windows if necessary) - this.toolPath = yield io.which(this.toolPath, true); - return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { - this._debug(`exec tool: ${this.toolPath}`); - this._debug('arguments:'); - for (const arg of this.args) { - this._debug(` ${arg}`); - } - const optionsNonNull = this._cloneExecOptions(this.options); - if (!optionsNonNull.silent && optionsNonNull.outStream) { - optionsNonNull.outStream.write(this._getCommandString(optionsNonNull) + os.EOL); - } - const state = new ExecState(optionsNonNull, this.toolPath); - state.on('debug', (message) => { - this._debug(message); - }); - if (this.options.cwd && !(yield ioUtil.exists(this.options.cwd))) { - return reject(new Error(`The cwd: ${this.options.cwd} does not exist!`)); - } - const fileName = this._getSpawnFileName(); - const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName)); - let stdbuffer = ''; - if (cp.stdout) { - cp.stdout.on('data', (data) => { - if (this.options.listeners && this.options.listeners.stdout) { - this.options.listeners.stdout(data); - } - if (!optionsNonNull.silent && optionsNonNull.outStream) { - optionsNonNull.outStream.write(data); - } - stdbuffer = this._processLineBuffer(data, stdbuffer, (line) => { - if (this.options.listeners && this.options.listeners.stdline) { - this.options.listeners.stdline(line); - } - }); - }); - } - let errbuffer = ''; - if (cp.stderr) { - cp.stderr.on('data', (data) => { - state.processStderr = true; - if (this.options.listeners && this.options.listeners.stderr) { - this.options.listeners.stderr(data); - } - if (!optionsNonNull.silent && - optionsNonNull.errStream && - optionsNonNull.outStream) { - const s = optionsNonNull.failOnStdErr - ? optionsNonNull.errStream - : optionsNonNull.outStream; - s.write(data); - } - errbuffer = this._processLineBuffer(data, errbuffer, (line) => { - if (this.options.listeners && this.options.listeners.errline) { - this.options.listeners.errline(line); - } - }); - }); - } - cp.on('error', (err) => { - state.processError = err.message; - state.processExited = true; - state.processClosed = true; - state.CheckComplete(); - }); - cp.on('exit', (code) => { - state.processExitCode = code; - state.processExited = true; - this._debug(`Exit code ${code} received from tool '${this.toolPath}'`); - state.CheckComplete(); - }); - cp.on('close', (code) => { - state.processExitCode = code; - state.processExited = true; - state.processClosed = true; - this._debug(`STDIO streams have closed for tool '${this.toolPath}'`); - state.CheckComplete(); - }); - state.on('done', (error, exitCode) => { - if (stdbuffer.length > 0) { - this.emit('stdline', stdbuffer); - } - if (errbuffer.length > 0) { - this.emit('errline', errbuffer); - } - cp.removeAllListeners(); - if (error) { - reject(error); - } - else { - resolve(exitCode); - } - }); - if (this.options.input) { - if (!cp.stdin) { - throw new Error('child process missing stdin'); - } - cp.stdin.end(this.options.input); - } - })); - }); - } -} -exports.ToolRunner = ToolRunner; -/** - * Convert an arg string to an array of args. Handles escaping - * - * @param argString string of arguments - * @returns string[] array of arguments - */ -function argStringToArray(argString) { - const args = []; - let inQuotes = false; - let escaped = false; - let arg = ''; - function append(c) { - // we only escape double quotes. - if (escaped && c !== '"') { - arg += '\\'; - } - arg += c; - escaped = false; - } - for (let i = 0; i < argString.length; i++) { - const c = argString.charAt(i); - if (c === '"') { - if (!escaped) { - inQuotes = !inQuotes; - } - else { - append(c); - } - continue; - } - if (c === '\\' && escaped) { - append(c); - continue; - } - if (c === '\\' && inQuotes) { - escaped = true; - continue; - } - if (c === ' ' && !inQuotes) { - if (arg.length > 0) { - args.push(arg); - arg = ''; - } - continue; - } - append(c); - } - if (arg.length > 0) { - args.push(arg.trim()); - } - return args; -} -exports.argStringToArray = argStringToArray; -class ExecState extends events.EventEmitter { - constructor(options, toolPath) { - super(); - this.processClosed = false; // tracks whether the process has exited and stdio is closed - this.processError = ''; - this.processExitCode = 0; - this.processExited = false; // tracks whether the process has exited - this.processStderr = false; // tracks whether stderr was written to - this.delay = 10000; // 10 seconds - this.done = false; - this.timeout = null; - if (!toolPath) { - throw new Error('toolPath must not be empty'); - } - this.options = options; - this.toolPath = toolPath; - if (options.delay) { - this.delay = options.delay; - } - } - CheckComplete() { - if (this.done) { - return; - } - if (this.processClosed) { - this._setResult(); - } - else if (this.processExited) { - this.timeout = timers_1.setTimeout(ExecState.HandleTimeout, this.delay, this); - } - } - _debug(message) { - this.emit('debug', message); - } - _setResult() { - // determine whether there is an error - let error; - if (this.processExited) { - if (this.processError) { - error = new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`); - } - else if (this.processExitCode !== 0 && !this.options.ignoreReturnCode) { - error = new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`); - } - else if (this.processStderr && this.options.failOnStdErr) { - error = new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`); - } - } - // clear the timeout - if (this.timeout) { - clearTimeout(this.timeout); - this.timeout = null; - } - this.done = true; - this.emit('done', error, this.processExitCode); - } - static HandleTimeout(state) { - if (state.done) { - return; - } - if (!state.processClosed && state.processExited) { - const message = `The STDIO streams did not close within ${state.delay / - 1000} seconds of the exit event from process '${state.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`; - state._debug(message); - } - state._setResult(); - } -} -//# sourceMappingURL=toolrunner.js.map - -/***/ }), - -/***/ 552: -/***/ (function(__unused_webpack_module, exports) { - -"use strict"; - -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.PersonalAccessTokenCredentialHandler = exports.BearerCredentialHandler = exports.BasicCredentialHandler = void 0; -class BasicCredentialHandler { - constructor(username, password) { - this.username = username; - this.password = password; - } - prepareRequest(options) { - if (!options.headers) { - throw Error('The request has no headers'); - } - options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`; - } - // This handler cannot handle 401 - canHandleAuthentication() { - return false; - } - handleAuthentication() { - return __awaiter(this, void 0, void 0, function* () { - throw new Error('not implemented'); - }); - } -} -exports.BasicCredentialHandler = BasicCredentialHandler; -class BearerCredentialHandler { - constructor(token) { - this.token = token; - } - // currently implements pre-authorization - // TODO: support preAuth = false where it hooks on 401 - prepareRequest(options) { - if (!options.headers) { - throw Error('The request has no headers'); - } - options.headers['Authorization'] = `Bearer ${this.token}`; - } - // This handler cannot handle 401 - canHandleAuthentication() { - return false; - } - handleAuthentication() { - return __awaiter(this, void 0, void 0, function* () { - throw new Error('not implemented'); - }); - } -} -exports.BearerCredentialHandler = BearerCredentialHandler; -class PersonalAccessTokenCredentialHandler { - constructor(token) { - this.token = token; - } - // currently implements pre-authorization - // TODO: support preAuth = false where it hooks on 401 - prepareRequest(options) { - if (!options.headers) { - throw Error('The request has no headers'); - } - options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`; - } - // This handler cannot handle 401 - canHandleAuthentication() { - return false; - } - handleAuthentication() { - return __awaiter(this, void 0, void 0, function* () { - throw new Error('not implemented'); - }); - } -} -exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler; -//# sourceMappingURL=auth.js.map - -/***/ }), - -/***/ 844: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -/* eslint-disable @typescript-eslint/no-explicit-any */ -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0; -const http = __importStar(__nccwpck_require__(611)); -const https = __importStar(__nccwpck_require__(692)); -const pm = __importStar(__nccwpck_require__(988)); -const tunnel = __importStar(__nccwpck_require__(770)); -var HttpCodes; -(function (HttpCodes) { - HttpCodes[HttpCodes["OK"] = 200] = "OK"; - HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices"; - HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently"; - HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved"; - HttpCodes[HttpCodes["SeeOther"] = 303] = "SeeOther"; - HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified"; - HttpCodes[HttpCodes["UseProxy"] = 305] = "UseProxy"; - HttpCodes[HttpCodes["SwitchProxy"] = 306] = "SwitchProxy"; - HttpCodes[HttpCodes["TemporaryRedirect"] = 307] = "TemporaryRedirect"; - HttpCodes[HttpCodes["PermanentRedirect"] = 308] = "PermanentRedirect"; - HttpCodes[HttpCodes["BadRequest"] = 400] = "BadRequest"; - HttpCodes[HttpCodes["Unauthorized"] = 401] = "Unauthorized"; - HttpCodes[HttpCodes["PaymentRequired"] = 402] = "PaymentRequired"; - HttpCodes[HttpCodes["Forbidden"] = 403] = "Forbidden"; - HttpCodes[HttpCodes["NotFound"] = 404] = "NotFound"; - HttpCodes[HttpCodes["MethodNotAllowed"] = 405] = "MethodNotAllowed"; - HttpCodes[HttpCodes["NotAcceptable"] = 406] = "NotAcceptable"; - HttpCodes[HttpCodes["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired"; - HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout"; - HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict"; - HttpCodes[HttpCodes["Gone"] = 410] = "Gone"; - HttpCodes[HttpCodes["TooManyRequests"] = 429] = "TooManyRequests"; - HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError"; - HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented"; - HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway"; - HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable"; - HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout"; -})(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {})); -var Headers; -(function (Headers) { - Headers["Accept"] = "accept"; - Headers["ContentType"] = "content-type"; -})(Headers = exports.Headers || (exports.Headers = {})); -var MediaTypes; -(function (MediaTypes) { - MediaTypes["ApplicationJson"] = "application/json"; -})(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {})); -/** - * Returns the proxy URL, depending upon the supplied url and proxy environment variables. - * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com - */ -function getProxyUrl(serverUrl) { - const proxyUrl = pm.getProxyUrl(new URL(serverUrl)); - return proxyUrl ? proxyUrl.href : ''; -} -exports.getProxyUrl = getProxyUrl; -const HttpRedirectCodes = [ - HttpCodes.MovedPermanently, - HttpCodes.ResourceMoved, - HttpCodes.SeeOther, - HttpCodes.TemporaryRedirect, - HttpCodes.PermanentRedirect -]; -const HttpResponseRetryCodes = [ - HttpCodes.BadGateway, - HttpCodes.ServiceUnavailable, - HttpCodes.GatewayTimeout -]; -const RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD']; -const ExponentialBackoffCeiling = 10; -const ExponentialBackoffTimeSlice = 5; -class HttpClientError extends Error { - constructor(message, statusCode) { - super(message); - this.name = 'HttpClientError'; - this.statusCode = statusCode; - Object.setPrototypeOf(this, HttpClientError.prototype); - } -} -exports.HttpClientError = HttpClientError; -class HttpClientResponse { - constructor(message) { - this.message = message; - } - readBody() { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () { - let output = Buffer.alloc(0); - this.message.on('data', (chunk) => { - output = Buffer.concat([output, chunk]); - }); - this.message.on('end', () => { - resolve(output.toString()); - }); - })); - }); - } - readBodyBuffer() { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () { - const chunks = []; - this.message.on('data', (chunk) => { - chunks.push(chunk); - }); - this.message.on('end', () => { - resolve(Buffer.concat(chunks)); - }); - })); - }); - } -} -exports.HttpClientResponse = HttpClientResponse; -function isHttps(requestUrl) { - const parsedUrl = new URL(requestUrl); - return parsedUrl.protocol === 'https:'; -} -exports.isHttps = isHttps; -class HttpClient { - constructor(userAgent, handlers, requestOptions) { - this._ignoreSslError = false; - this._allowRedirects = true; - this._allowRedirectDowngrade = false; - this._maxRedirects = 50; - this._allowRetries = false; - this._maxRetries = 1; - this._keepAlive = false; - this._disposed = false; - this.userAgent = userAgent; - this.handlers = handlers || []; - this.requestOptions = requestOptions; - if (requestOptions) { - if (requestOptions.ignoreSslError != null) { - this._ignoreSslError = requestOptions.ignoreSslError; - } - this._socketTimeout = requestOptions.socketTimeout; - if (requestOptions.allowRedirects != null) { - this._allowRedirects = requestOptions.allowRedirects; - } - if (requestOptions.allowRedirectDowngrade != null) { - this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade; - } - if (requestOptions.maxRedirects != null) { - this._maxRedirects = Math.max(requestOptions.maxRedirects, 0); - } - if (requestOptions.keepAlive != null) { - this._keepAlive = requestOptions.keepAlive; - } - if (requestOptions.allowRetries != null) { - this._allowRetries = requestOptions.allowRetries; - } - if (requestOptions.maxRetries != null) { - this._maxRetries = requestOptions.maxRetries; - } - } - } - options(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('OPTIONS', requestUrl, null, additionalHeaders || {}); - }); - } - get(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('GET', requestUrl, null, additionalHeaders || {}); - }); - } - del(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('DELETE', requestUrl, null, additionalHeaders || {}); - }); - } - post(requestUrl, data, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('POST', requestUrl, data, additionalHeaders || {}); - }); - } - patch(requestUrl, data, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('PATCH', requestUrl, data, additionalHeaders || {}); - }); - } - put(requestUrl, data, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('PUT', requestUrl, data, additionalHeaders || {}); - }); - } - head(requestUrl, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request('HEAD', requestUrl, null, additionalHeaders || {}); - }); - } - sendStream(verb, requestUrl, stream, additionalHeaders) { - return __awaiter(this, void 0, void 0, function* () { - return this.request(verb, requestUrl, stream, additionalHeaders); - }); - } - /** - * Gets a typed object from an endpoint - * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise - */ - getJson(requestUrl, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); - const res = yield this.get(requestUrl, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); - } - postJson(requestUrl, obj, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); - const res = yield this.post(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); - } - putJson(requestUrl, obj, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); - const res = yield this.put(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); - } - patchJson(requestUrl, obj, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { - const data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); - const res = yield this.patch(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - }); - } - /** - * Makes a raw http request. - * All other methods such as get, post, patch, and request ultimately call this. - * Prefer get, del, post and patch - */ - request(verb, requestUrl, data, headers) { - return __awaiter(this, void 0, void 0, function* () { - if (this._disposed) { - throw new Error('Client has already been disposed.'); - } - const parsedUrl = new URL(requestUrl); - let info = this._prepareRequest(verb, parsedUrl, headers); - // Only perform retries on reads since writes may not be idempotent. - const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb) - ? this._maxRetries + 1 - : 1; - let numTries = 0; - let response; - do { - response = yield this.requestRaw(info, data); - // Check if it's an authentication challenge - if (response && - response.message && - response.message.statusCode === HttpCodes.Unauthorized) { - let authenticationHandler; - for (const handler of this.handlers) { - if (handler.canHandleAuthentication(response)) { - authenticationHandler = handler; - break; - } - } - if (authenticationHandler) { - return authenticationHandler.handleAuthentication(this, info, data); - } - else { - // We have received an unauthorized response but have no handlers to handle it. - // Let the response return to the caller. - return response; - } - } - let redirectsRemaining = this._maxRedirects; - while (response.message.statusCode && - HttpRedirectCodes.includes(response.message.statusCode) && - this._allowRedirects && - redirectsRemaining > 0) { - const redirectUrl = response.message.headers['location']; - if (!redirectUrl) { - // if there's no location to redirect to, we won't - break; - } - const parsedRedirectUrl = new URL(redirectUrl); - if (parsedUrl.protocol === 'https:' && - parsedUrl.protocol !== parsedRedirectUrl.protocol && - !this._allowRedirectDowngrade) { - throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.'); - } - // we need to finish reading the response before reassigning response - // which will leak the open socket. - yield response.readBody(); - // strip authorization header if redirected to a different hostname - if (parsedRedirectUrl.hostname !== parsedUrl.hostname) { - for (const header in headers) { - // header names are case insensitive - if (header.toLowerCase() === 'authorization') { - delete headers[header]; - } - } - } - // let's make the request with the new redirectUrl - info = this._prepareRequest(verb, parsedRedirectUrl, headers); - response = yield this.requestRaw(info, data); - redirectsRemaining--; - } - if (!response.message.statusCode || - !HttpResponseRetryCodes.includes(response.message.statusCode)) { - // If not a retry code, return immediately instead of retrying - return response; - } - numTries += 1; - if (numTries < maxTries) { - yield response.readBody(); - yield this._performExponentialBackoff(numTries); - } - } while (numTries < maxTries); - return response; - }); - } - /** - * Needs to be called if keepAlive is set to true in request options. - */ - dispose() { - if (this._agent) { - this._agent.destroy(); - } - this._disposed = true; - } - /** - * Raw request. - * @param info - * @param data - */ - requestRaw(info, data) { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve, reject) => { - function callbackForResult(err, res) { - if (err) { - reject(err); - } - else if (!res) { - // If `err` is not passed, then `res` must be passed. - reject(new Error('Unknown error')); - } - else { - resolve(res); - } - } - this.requestRawWithCallback(info, data, callbackForResult); - }); - }); - } - /** - * Raw request with callback. - * @param info - * @param data - * @param onResult - */ - requestRawWithCallback(info, data, onResult) { - if (typeof data === 'string') { - if (!info.options.headers) { - info.options.headers = {}; - } - info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8'); - } - let callbackCalled = false; - function handleResult(err, res) { - if (!callbackCalled) { - callbackCalled = true; - onResult(err, res); - } - } - const req = info.httpModule.request(info.options, (msg) => { - const res = new HttpClientResponse(msg); - handleResult(undefined, res); - }); - let socket; - req.on('socket', sock => { - socket = sock; - }); - // If we ever get disconnected, we want the socket to timeout eventually - req.setTimeout(this._socketTimeout || 3 * 60000, () => { - if (socket) { - socket.end(); - } - handleResult(new Error(`Request timeout: ${info.options.path}`)); - }); - req.on('error', function (err) { - // err has statusCode property - // res should have headers - handleResult(err); - }); - if (data && typeof data === 'string') { - req.write(data, 'utf8'); - } - if (data && typeof data !== 'string') { - data.on('close', function () { - req.end(); - }); - data.pipe(req); - } - else { - req.end(); - } - } - /** - * Gets an http agent. This function is useful when you need an http agent that handles - * routing through a proxy server - depending upon the url and proxy environment variables. - * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com - */ - getAgent(serverUrl) { - const parsedUrl = new URL(serverUrl); - return this._getAgent(parsedUrl); - } - _prepareRequest(method, requestUrl, headers) { - const info = {}; - info.parsedUrl = requestUrl; - const usingSsl = info.parsedUrl.protocol === 'https:'; - info.httpModule = usingSsl ? https : http; - const defaultPort = usingSsl ? 443 : 80; - info.options = {}; - info.options.host = info.parsedUrl.hostname; - info.options.port = info.parsedUrl.port - ? parseInt(info.parsedUrl.port) - : defaultPort; - info.options.path = - (info.parsedUrl.pathname || '') + (info.parsedUrl.search || ''); - info.options.method = method; - info.options.headers = this._mergeHeaders(headers); - if (this.userAgent != null) { - info.options.headers['user-agent'] = this.userAgent; - } - info.options.agent = this._getAgent(info.parsedUrl); - // gives handlers an opportunity to participate - if (this.handlers) { - for (const handler of this.handlers) { - handler.prepareRequest(info.options); - } - } - return info; - } - _mergeHeaders(headers) { - if (this.requestOptions && this.requestOptions.headers) { - return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {})); - } - return lowercaseKeys(headers || {}); - } - _getExistingOrDefaultHeader(additionalHeaders, header, _default) { - let clientHeader; - if (this.requestOptions && this.requestOptions.headers) { - clientHeader = lowercaseKeys(this.requestOptions.headers)[header]; - } - return additionalHeaders[header] || clientHeader || _default; - } - _getAgent(parsedUrl) { - let agent; - const proxyUrl = pm.getProxyUrl(parsedUrl); - const useProxy = proxyUrl && proxyUrl.hostname; - if (this._keepAlive && useProxy) { - agent = this._proxyAgent; - } - if (this._keepAlive && !useProxy) { - agent = this._agent; - } - // if agent is already assigned use that agent. - if (agent) { - return agent; - } - const usingSsl = parsedUrl.protocol === 'https:'; - let maxSockets = 100; - if (this.requestOptions) { - maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets; - } - // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis. - if (proxyUrl && proxyUrl.hostname) { - const agentOptions = { - maxSockets, - keepAlive: this._keepAlive, - proxy: Object.assign(Object.assign({}, ((proxyUrl.username || proxyUrl.password) && { - proxyAuth: `${proxyUrl.username}:${proxyUrl.password}` - })), { host: proxyUrl.hostname, port: proxyUrl.port }) - }; - let tunnelAgent; - const overHttps = proxyUrl.protocol === 'https:'; - if (usingSsl) { - tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp; - } - else { - tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp; - } - agent = tunnelAgent(agentOptions); - this._proxyAgent = agent; - } - // if reusing agent across request and tunneling agent isn't assigned create a new agent - if (this._keepAlive && !agent) { - const options = { keepAlive: this._keepAlive, maxSockets }; - agent = usingSsl ? new https.Agent(options) : new http.Agent(options); - this._agent = agent; - } - // if not using private agent and tunnel agent isn't setup then use global agent - if (!agent) { - agent = usingSsl ? https.globalAgent : http.globalAgent; - } - if (usingSsl && this._ignoreSslError) { - // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process - // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options - // we have to cast it to any and change it directly - agent.options = Object.assign(agent.options || {}, { - rejectUnauthorized: false - }); - } - return agent; - } - _performExponentialBackoff(retryNumber) { - return __awaiter(this, void 0, void 0, function* () { - retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); - const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber); - return new Promise(resolve => setTimeout(() => resolve(), ms)); - }); - } - _processResponse(res, options) { - return __awaiter(this, void 0, void 0, function* () { - return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { - const statusCode = res.message.statusCode || 0; - const response = { - statusCode, - result: null, - headers: {} - }; - // not found leads to null obj returned - if (statusCode === HttpCodes.NotFound) { - resolve(response); - } - // get the result from the body - function dateTimeDeserializer(key, value) { - if (typeof value === 'string') { - const a = new Date(value); - if (!isNaN(a.valueOf())) { - return a; - } - } - return value; - } - let obj; - let contents; - try { - contents = yield res.readBody(); - if (contents && contents.length > 0) { - if (options && options.deserializeDates) { - obj = JSON.parse(contents, dateTimeDeserializer); - } - else { - obj = JSON.parse(contents); - } - response.result = obj; - } - response.headers = res.message.headers; - } - catch (err) { - // Invalid resource (contents not json); leaving result obj null - } - // note that 3xx redirects are handled by the http layer. - if (statusCode > 299) { - let msg; - // if exception/error in body, attempt to get better error - if (obj && obj.message) { - msg = obj.message; - } - else if (contents && contents.length > 0) { - // it may be the case that the exception is in the body message as string - msg = contents; - } - else { - msg = `Failed request: (${statusCode})`; - } - const err = new HttpClientError(msg, statusCode); - err.result = response.result; - reject(err); - } - else { - resolve(response); - } - })); - }); - } -} -exports.HttpClient = HttpClient; -const lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); -//# sourceMappingURL=index.js.map - -/***/ }), - -/***/ 988: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.checkBypass = exports.getProxyUrl = void 0; -function getProxyUrl(reqUrl) { - const usingSsl = reqUrl.protocol === 'https:'; - if (checkBypass(reqUrl)) { - return undefined; - } - const proxyVar = (() => { - if (usingSsl) { - return process.env['https_proxy'] || process.env['HTTPS_PROXY']; - } - else { - return process.env['http_proxy'] || process.env['HTTP_PROXY']; - } - })(); - if (proxyVar) { - try { - return new URL(proxyVar); - } - catch (_a) { - if (!proxyVar.startsWith('http://') && !proxyVar.startsWith('https://')) - return new URL(`http://${proxyVar}`); - } - } - else { - return undefined; - } -} -exports.getProxyUrl = getProxyUrl; -function checkBypass(reqUrl) { - if (!reqUrl.hostname) { - return false; - } - const reqHost = reqUrl.hostname; - if (isLoopbackAddress(reqHost)) { - return true; - } - const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || ''; - if (!noProxy) { - return false; - } - // Determine the request port - let reqPort; - if (reqUrl.port) { - reqPort = Number(reqUrl.port); - } - else if (reqUrl.protocol === 'http:') { - reqPort = 80; - } - else if (reqUrl.protocol === 'https:') { - reqPort = 443; - } - // Format the request hostname and hostname with port - const upperReqHosts = [reqUrl.hostname.toUpperCase()]; - if (typeof reqPort === 'number') { - upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`); - } - // Compare request host against noproxy - for (const upperNoProxyItem of noProxy - .split(',') - .map(x => x.trim().toUpperCase()) - .filter(x => x)) { - if (upperNoProxyItem === '*' || - upperReqHosts.some(x => x === upperNoProxyItem || - x.endsWith(`.${upperNoProxyItem}`) || - (upperNoProxyItem.startsWith('.') && - x.endsWith(`${upperNoProxyItem}`)))) { - return true; - } - } - return false; -} -exports.checkBypass = checkBypass; -function isLoopbackAddress(host) { - const hostLower = host.toLowerCase(); - return (hostLower === 'localhost' || - hostLower.startsWith('127.') || - hostLower.startsWith('[::1]') || - hostLower.startsWith('[0:0:0:0:0:0:0:1]')); -} -//# sourceMappingURL=proxy.js.map - -/***/ }), - -/***/ 207: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var _a; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getCmdPath = exports.tryGetExecutablePath = exports.isRooted = exports.isDirectory = exports.exists = exports.READONLY = exports.UV_FS_O_EXLOCK = exports.IS_WINDOWS = exports.unlink = exports.symlink = exports.stat = exports.rmdir = exports.rm = exports.rename = exports.readlink = exports.readdir = exports.open = exports.mkdir = exports.lstat = exports.copyFile = exports.chmod = void 0; -const fs = __importStar(__nccwpck_require__(896)); -const path = __importStar(__nccwpck_require__(928)); -_a = fs.promises -// export const {open} = 'fs' -, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.open = _a.open, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rm = _a.rm, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink; -// export const {open} = 'fs' -exports.IS_WINDOWS = process.platform === 'win32'; -// See https://github.com/nodejs/node/blob/d0153aee367422d0858105abec186da4dff0a0c5/deps/uv/include/uv/win.h#L691 -exports.UV_FS_O_EXLOCK = 0x10000000; -exports.READONLY = fs.constants.O_RDONLY; -function exists(fsPath) { - return __awaiter(this, void 0, void 0, function* () { - try { - yield exports.stat(fsPath); - } - catch (err) { - if (err.code === 'ENOENT') { - return false; - } - throw err; - } - return true; - }); -} -exports.exists = exists; -function isDirectory(fsPath, useStat = false) { - return __awaiter(this, void 0, void 0, function* () { - const stats = useStat ? yield exports.stat(fsPath) : yield exports.lstat(fsPath); - return stats.isDirectory(); - }); -} -exports.isDirectory = isDirectory; -/** - * On OSX/Linux, true if path starts with '/'. On Windows, true for paths like: - * \, \hello, \\hello\share, C:, and C:\hello (and corresponding alternate separator cases). - */ -function isRooted(p) { - p = normalizeSeparators(p); - if (!p) { - throw new Error('isRooted() parameter "p" cannot be empty'); - } - if (exports.IS_WINDOWS) { - return (p.startsWith('\\') || /^[A-Z]:/i.test(p) // e.g. \ or \hello or \\hello - ); // e.g. C: or C:\hello - } - return p.startsWith('/'); -} -exports.isRooted = isRooted; -/** - * Best effort attempt to determine whether a file exists and is executable. - * @param filePath file path to check - * @param extensions additional file extensions to try - * @return if file exists and is executable, returns the file path. otherwise empty string. - */ -function tryGetExecutablePath(filePath, extensions) { - return __awaiter(this, void 0, void 0, function* () { - let stats = undefined; - try { - // test file exists - stats = yield exports.stat(filePath); - } - catch (err) { - if (err.code !== 'ENOENT') { - // eslint-disable-next-line no-console - console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); - } - } - if (stats && stats.isFile()) { - if (exports.IS_WINDOWS) { - // on Windows, test for valid extension - const upperExt = path.extname(filePath).toUpperCase(); - if (extensions.some(validExt => validExt.toUpperCase() === upperExt)) { - return filePath; - } - } - else { - if (isUnixExecutable(stats)) { - return filePath; - } - } - } - // try each extension - const originalFilePath = filePath; - for (const extension of extensions) { - filePath = originalFilePath + extension; - stats = undefined; - try { - stats = yield exports.stat(filePath); - } - catch (err) { - if (err.code !== 'ENOENT') { - // eslint-disable-next-line no-console - console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); - } - } - if (stats && stats.isFile()) { - if (exports.IS_WINDOWS) { - // preserve the case of the actual file (since an extension was appended) - try { - const directory = path.dirname(filePath); - const upperName = path.basename(filePath).toUpperCase(); - for (const actualName of yield exports.readdir(directory)) { - if (upperName === actualName.toUpperCase()) { - filePath = path.join(directory, actualName); - break; - } - } - } - catch (err) { - // eslint-disable-next-line no-console - console.log(`Unexpected error attempting to determine the actual case of the file '${filePath}': ${err}`); - } - return filePath; - } - else { - if (isUnixExecutable(stats)) { - return filePath; - } - } - } - } - return ''; - }); -} -exports.tryGetExecutablePath = tryGetExecutablePath; -function normalizeSeparators(p) { - p = p || ''; - if (exports.IS_WINDOWS) { - // convert slashes on Windows - p = p.replace(/\//g, '\\'); - // remove redundant slashes - return p.replace(/\\\\+/g, '\\'); - } - // remove redundant slashes - return p.replace(/\/\/+/g, '/'); -} -// on Mac/Linux, test the execute bit -// R W X R W X R W X -// 256 128 64 32 16 8 4 2 1 -function isUnixExecutable(stats) { - return ((stats.mode & 1) > 0 || - ((stats.mode & 8) > 0 && stats.gid === process.getgid()) || - ((stats.mode & 64) > 0 && stats.uid === process.getuid())); -} -// Get the path of cmd.exe in windows -function getCmdPath() { - var _a; - return (_a = process.env['COMSPEC']) !== null && _a !== void 0 ? _a : `cmd.exe`; -} -exports.getCmdPath = getCmdPath; -//# sourceMappingURL=io-util.js.map - -/***/ }), - -/***/ 994: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.findInPath = exports.which = exports.mkdirP = exports.rmRF = exports.mv = exports.cp = void 0; -const assert_1 = __nccwpck_require__(613); -const path = __importStar(__nccwpck_require__(928)); -const ioUtil = __importStar(__nccwpck_require__(207)); -/** - * Copies a file or folder. - * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js - * - * @param source source path - * @param dest destination path - * @param options optional. See CopyOptions. - */ -function cp(source, dest, options = {}) { - return __awaiter(this, void 0, void 0, function* () { - const { force, recursive, copySourceDirectory } = readCopyOptions(options); - const destStat = (yield ioUtil.exists(dest)) ? yield ioUtil.stat(dest) : null; - // Dest is an existing file, but not forcing - if (destStat && destStat.isFile() && !force) { - return; - } - // If dest is an existing directory, should copy inside. - const newDest = destStat && destStat.isDirectory() && copySourceDirectory - ? path.join(dest, path.basename(source)) - : dest; - if (!(yield ioUtil.exists(source))) { - throw new Error(`no such file or directory: ${source}`); - } - const sourceStat = yield ioUtil.stat(source); - if (sourceStat.isDirectory()) { - if (!recursive) { - throw new Error(`Failed to copy. ${source} is a directory, but tried to copy without recursive flag.`); - } - else { - yield cpDirRecursive(source, newDest, 0, force); - } - } - else { - if (path.relative(source, newDest) === '') { - // a file cannot be copied to itself - throw new Error(`'${newDest}' and '${source}' are the same file`); - } - yield copyFile(source, newDest, force); - } - }); -} -exports.cp = cp; -/** - * Moves a path. - * - * @param source source path - * @param dest destination path - * @param options optional. See MoveOptions. - */ -function mv(source, dest, options = {}) { - return __awaiter(this, void 0, void 0, function* () { - if (yield ioUtil.exists(dest)) { - let destExists = true; - if (yield ioUtil.isDirectory(dest)) { - // If dest is directory copy src into dest - dest = path.join(dest, path.basename(source)); - destExists = yield ioUtil.exists(dest); - } - if (destExists) { - if (options.force == null || options.force) { - yield rmRF(dest); - } - else { - throw new Error('Destination already exists'); - } - } - } - yield mkdirP(path.dirname(dest)); - yield ioUtil.rename(source, dest); - }); -} -exports.mv = mv; -/** - * Remove a path recursively with force - * - * @param inputPath path to remove - */ -function rmRF(inputPath) { - return __awaiter(this, void 0, void 0, function* () { - if (ioUtil.IS_WINDOWS) { - // Check for invalid characters - // https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file - if (/[*"<>|]/.test(inputPath)) { - throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows'); - } - } - try { - // note if path does not exist, error is silent - yield ioUtil.rm(inputPath, { - force: true, - maxRetries: 3, - recursive: true, - retryDelay: 300 - }); - } - catch (err) { - throw new Error(`File was unable to be removed ${err}`); - } - }); -} -exports.rmRF = rmRF; -/** - * Make a directory. Creates the full path with folders in between - * Will throw if it fails - * - * @param fsPath path to create - * @returns Promise - */ -function mkdirP(fsPath) { - return __awaiter(this, void 0, void 0, function* () { - assert_1.ok(fsPath, 'a path argument must be provided'); - yield ioUtil.mkdir(fsPath, { recursive: true }); - }); -} -exports.mkdirP = mkdirP; -/** - * Returns path of a tool had the tool actually been invoked. Resolves via paths. - * If you check and the tool does not exist, it will throw. - * - * @param tool name of the tool - * @param check whether to check if tool exists - * @returns Promise path to tool - */ -function which(tool, check) { - return __awaiter(this, void 0, void 0, function* () { - if (!tool) { - throw new Error("parameter 'tool' is required"); - } - // recursive when check=true - if (check) { - const result = yield which(tool, false); - if (!result) { - if (ioUtil.IS_WINDOWS) { - throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`); - } - else { - throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`); - } - } - return result; - } - const matches = yield findInPath(tool); - if (matches && matches.length > 0) { - return matches[0]; - } - return ''; - }); -} -exports.which = which; -/** - * Returns a list of all occurrences of the given tool on the system path. - * - * @returns Promise the paths of the tool - */ -function findInPath(tool) { - return __awaiter(this, void 0, void 0, function* () { - if (!tool) { - throw new Error("parameter 'tool' is required"); - } - // build the list of extensions to try - const extensions = []; - if (ioUtil.IS_WINDOWS && process.env['PATHEXT']) { - for (const extension of process.env['PATHEXT'].split(path.delimiter)) { - if (extension) { - extensions.push(extension); - } - } - } - // if it's rooted, return it if exists. otherwise return empty. - if (ioUtil.isRooted(tool)) { - const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions); - if (filePath) { - return [filePath]; - } - return []; - } - // if any path separators, return empty - if (tool.includes(path.sep)) { - return []; - } - // build the list of directories - // - // Note, technically "where" checks the current directory on Windows. From a toolkit perspective, - // it feels like we should not do this. Checking the current directory seems like more of a use - // case of a shell, and the which() function exposed by the toolkit should strive for consistency - // across platforms. - const directories = []; - if (process.env.PATH) { - for (const p of process.env.PATH.split(path.delimiter)) { - if (p) { - directories.push(p); - } - } - } - // find all matches - const matches = []; - for (const directory of directories) { - const filePath = yield ioUtil.tryGetExecutablePath(path.join(directory, tool), extensions); - if (filePath) { - matches.push(filePath); - } - } - return matches; - }); -} -exports.findInPath = findInPath; -function readCopyOptions(options) { - const force = options.force == null ? true : options.force; - const recursive = Boolean(options.recursive); - const copySourceDirectory = options.copySourceDirectory == null - ? true - : Boolean(options.copySourceDirectory); - return { force, recursive, copySourceDirectory }; -} -function cpDirRecursive(sourceDir, destDir, currentDepth, force) { - return __awaiter(this, void 0, void 0, function* () { - // Ensure there is not a run away recursive copy - if (currentDepth >= 255) - return; - currentDepth++; - yield mkdirP(destDir); - const files = yield ioUtil.readdir(sourceDir); - for (const fileName of files) { - const srcFile = `${sourceDir}/${fileName}`; - const destFile = `${destDir}/${fileName}`; - const srcFileStat = yield ioUtil.lstat(srcFile); - if (srcFileStat.isDirectory()) { - // Recurse - yield cpDirRecursive(srcFile, destFile, currentDepth, force); - } - else { - yield copyFile(srcFile, destFile, force); - } - } - // Change the mode for the newly created directory - yield ioUtil.chmod(destDir, (yield ioUtil.stat(sourceDir)).mode); - }); -} -// Buffered file copy -function copyFile(srcFile, destFile, force) { - return __awaiter(this, void 0, void 0, function* () { - if ((yield ioUtil.lstat(srcFile)).isSymbolicLink()) { - // unlink/re-link it - try { - yield ioUtil.lstat(destFile); - yield ioUtil.unlink(destFile); - } - catch (e) { - // Try to override file permission - if (e.code === 'EPERM') { - yield ioUtil.chmod(destFile, '0666'); - yield ioUtil.unlink(destFile); - } - // other errors = it doesn't exist, no work to do - } - // Copy over symlink - const symlinkFull = yield ioUtil.readlink(srcFile); - yield ioUtil.symlink(symlinkFull, destFile, ioUtil.IS_WINDOWS ? 'junction' : null); - } - else if (!(yield ioUtil.exists(destFile)) || force) { - yield ioUtil.copyFile(srcFile, destFile); - } - }); -} -//# sourceMappingURL=io.js.map - -/***/ }), - -/***/ 36: -/***/ (function(module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports._readLinuxVersionFile = exports._getOsVersion = exports._findMatch = void 0; -const semver = __importStar(__nccwpck_require__(318)); -const core_1 = __nccwpck_require__(484); -// needs to be require for core node modules to be mocked -/* eslint @typescript-eslint/no-require-imports: 0 */ -const os = __nccwpck_require__(857); -const cp = __nccwpck_require__(317); -const fs = __nccwpck_require__(896); -function _findMatch(versionSpec, stable, candidates, archFilter) { - return __awaiter(this, void 0, void 0, function* () { - const platFilter = os.platform(); - let result; - let match; - let file; - for (const candidate of candidates) { - const version = candidate.version; - core_1.debug(`check ${version} satisfies ${versionSpec}`); - if (semver.satisfies(version, versionSpec) && - (!stable || candidate.stable === stable)) { - file = candidate.files.find(item => { - core_1.debug(`${item.arch}===${archFilter} && ${item.platform}===${platFilter}`); - let chk = item.arch === archFilter && item.platform === platFilter; - if (chk && item.platform_version) { - const osVersion = module.exports._getOsVersion(); - if (osVersion === item.platform_version) { - chk = true; - } - else { - chk = semver.satisfies(osVersion, item.platform_version); - } - } - return chk; - }); - if (file) { - core_1.debug(`matched ${candidate.version}`); - match = candidate; - break; - } - } - } - if (match && file) { - // clone since we're mutating the file list to be only the file that matches - result = Object.assign({}, match); - result.files = [file]; - } - return result; - }); -} -exports._findMatch = _findMatch; -function _getOsVersion() { - // TODO: add windows and other linux, arm variants - // right now filtering on version is only an ubuntu and macos scenario for tools we build for hosted (python) - const plat = os.platform(); - let version = ''; - if (plat === 'darwin') { - version = cp.execSync('sw_vers -productVersion').toString(); - } - else if (plat === 'linux') { - // lsb_release process not in some containers, readfile - // Run cat /etc/lsb-release - // DISTRIB_ID=Ubuntu - // DISTRIB_RELEASE=18.04 - // DISTRIB_CODENAME=bionic - // DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS" - const lsbContents = module.exports._readLinuxVersionFile(); - if (lsbContents) { - const lines = lsbContents.split('\n'); - for (const line of lines) { - const parts = line.split('='); - if (parts.length === 2 && - (parts[0].trim() === 'VERSION_ID' || - parts[0].trim() === 'DISTRIB_RELEASE')) { - version = parts[1] - .trim() - .replace(/^"/, '') - .replace(/"$/, ''); - break; - } - } - } - } - return version; -} -exports._getOsVersion = _getOsVersion; -function _readLinuxVersionFile() { - const lsbReleaseFile = '/etc/lsb-release'; - const osReleaseFile = '/etc/os-release'; - let contents = ''; - if (fs.existsSync(lsbReleaseFile)) { - contents = fs.readFileSync(lsbReleaseFile).toString(); - } - else if (fs.existsSync(osReleaseFile)) { - contents = fs.readFileSync(osReleaseFile).toString(); - } - return contents; -} -exports._readLinuxVersionFile = _readLinuxVersionFile; -//# sourceMappingURL=manifest.js.map - -/***/ }), - -/***/ 380: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.RetryHelper = void 0; -const core = __importStar(__nccwpck_require__(484)); -/** - * Internal class for retries - */ -class RetryHelper { - constructor(maxAttempts, minSeconds, maxSeconds) { - if (maxAttempts < 1) { - throw new Error('max attempts should be greater than or equal to 1'); - } - this.maxAttempts = maxAttempts; - this.minSeconds = Math.floor(minSeconds); - this.maxSeconds = Math.floor(maxSeconds); - if (this.minSeconds > this.maxSeconds) { - throw new Error('min seconds should be less than or equal to max seconds'); - } - } - execute(action, isRetryable) { - return __awaiter(this, void 0, void 0, function* () { - let attempt = 1; - while (attempt < this.maxAttempts) { - // Try - try { - return yield action(); - } - catch (err) { - if (isRetryable && !isRetryable(err)) { - throw err; - } - core.info(err.message); - } - // Sleep - const seconds = this.getSleepAmount(); - core.info(`Waiting ${seconds} seconds before trying again`); - yield this.sleep(seconds); - attempt++; - } - // Last attempt - return yield action(); - }); - } - getSleepAmount() { - return (Math.floor(Math.random() * (this.maxSeconds - this.minSeconds + 1)) + - this.minSeconds); - } - sleep(seconds) { - return __awaiter(this, void 0, void 0, function* () { - return new Promise(resolve => setTimeout(resolve, seconds * 1000)); - }); - } -} -exports.RetryHelper = RetryHelper; -//# sourceMappingURL=retry-helper.js.map - -/***/ }), - -/***/ 472: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.evaluateVersions = exports.isExplicitVersion = exports.findFromManifest = exports.getManifestFromRepo = exports.findAllVersions = exports.find = exports.cacheFile = exports.cacheDir = exports.extractZip = exports.extractXar = exports.extractTar = exports.extract7z = exports.downloadTool = exports.HTTPError = void 0; -const core = __importStar(__nccwpck_require__(484)); -const io = __importStar(__nccwpck_require__(994)); -const fs = __importStar(__nccwpck_require__(896)); -const mm = __importStar(__nccwpck_require__(36)); -const os = __importStar(__nccwpck_require__(857)); -const path = __importStar(__nccwpck_require__(928)); -const httpm = __importStar(__nccwpck_require__(844)); -const semver = __importStar(__nccwpck_require__(318)); -const stream = __importStar(__nccwpck_require__(203)); -const util = __importStar(__nccwpck_require__(23)); -const assert_1 = __nccwpck_require__(613); -const v4_1 = __importDefault(__nccwpck_require__(350)); -const exec_1 = __nccwpck_require__(236); -const retry_helper_1 = __nccwpck_require__(380); -class HTTPError extends Error { - constructor(httpStatusCode) { - super(`Unexpected HTTP response: ${httpStatusCode}`); - this.httpStatusCode = httpStatusCode; - Object.setPrototypeOf(this, new.target.prototype); - } -} -exports.HTTPError = HTTPError; -const IS_WINDOWS = process.platform === 'win32'; -const IS_MAC = process.platform === 'darwin'; -const userAgent = 'actions/tool-cache'; -/** - * Download a tool from an url and stream it into a file - * - * @param url url of tool to download - * @param dest path to download tool - * @param auth authorization header - * @param headers other headers - * @returns path to downloaded tool - */ -function downloadTool(url, dest, auth, headers) { - return __awaiter(this, void 0, void 0, function* () { - dest = dest || path.join(_getTempDirectory(), v4_1.default()); - yield io.mkdirP(path.dirname(dest)); - core.debug(`Downloading ${url}`); - core.debug(`Destination ${dest}`); - const maxAttempts = 3; - const minSeconds = _getGlobal('TEST_DOWNLOAD_TOOL_RETRY_MIN_SECONDS', 10); - const maxSeconds = _getGlobal('TEST_DOWNLOAD_TOOL_RETRY_MAX_SECONDS', 20); - const retryHelper = new retry_helper_1.RetryHelper(maxAttempts, minSeconds, maxSeconds); - return yield retryHelper.execute(() => __awaiter(this, void 0, void 0, function* () { - return yield downloadToolAttempt(url, dest || '', auth, headers); - }), (err) => { - if (err instanceof HTTPError && err.httpStatusCode) { - // Don't retry anything less than 500, except 408 Request Timeout and 429 Too Many Requests - if (err.httpStatusCode < 500 && - err.httpStatusCode !== 408 && - err.httpStatusCode !== 429) { - return false; - } - } - // Otherwise retry - return true; - }); - }); -} -exports.downloadTool = downloadTool; -function downloadToolAttempt(url, dest, auth, headers) { - return __awaiter(this, void 0, void 0, function* () { - if (fs.existsSync(dest)) { - throw new Error(`Destination file path ${dest} already exists`); - } - // Get the response headers - const http = new httpm.HttpClient(userAgent, [], { - allowRetries: false - }); - if (auth) { - core.debug('set auth'); - if (headers === undefined) { - headers = {}; - } - headers.authorization = auth; - } - const response = yield http.get(url, headers); - if (response.message.statusCode !== 200) { - const err = new HTTPError(response.message.statusCode); - core.debug(`Failed to download from "${url}". Code(${response.message.statusCode}) Message(${response.message.statusMessage})`); - throw err; - } - // Download the response body - const pipeline = util.promisify(stream.pipeline); - const responseMessageFactory = _getGlobal('TEST_DOWNLOAD_TOOL_RESPONSE_MESSAGE_FACTORY', () => response.message); - const readStream = responseMessageFactory(); - let succeeded = false; - try { - yield pipeline(readStream, fs.createWriteStream(dest)); - core.debug('download complete'); - succeeded = true; - return dest; - } - finally { - // Error, delete dest before retry - if (!succeeded) { - core.debug('download failed'); - try { - yield io.rmRF(dest); - } - catch (err) { - core.debug(`Failed to delete '${dest}'. ${err.message}`); - } - } - } - }); -} -/** - * Extract a .7z file - * - * @param file path to the .7z file - * @param dest destination directory. Optional. - * @param _7zPath path to 7zr.exe. Optional, for long path support. Most .7z archives do not have this - * problem. If your .7z archive contains very long paths, you can pass the path to 7zr.exe which will - * gracefully handle long paths. By default 7zdec.exe is used because it is a very small program and is - * bundled with the tool lib. However it does not support long paths. 7zr.exe is the reduced command line - * interface, it is smaller than the full command line interface, and it does support long paths. At the - * time of this writing, it is freely available from the LZMA SDK that is available on the 7zip website. - * Be sure to check the current license agreement. If 7zr.exe is bundled with your action, then the path - * to 7zr.exe can be pass to this function. - * @returns path to the destination directory - */ -function extract7z(file, dest, _7zPath) { - return __awaiter(this, void 0, void 0, function* () { - assert_1.ok(IS_WINDOWS, 'extract7z() not supported on current OS'); - assert_1.ok(file, 'parameter "file" is required'); - dest = yield _createExtractFolder(dest); - const originalCwd = process.cwd(); - process.chdir(dest); - if (_7zPath) { - try { - const logLevel = core.isDebug() ? '-bb1' : '-bb0'; - const args = [ - 'x', - logLevel, - '-bd', - '-sccUTF-8', - file - ]; - const options = { - silent: true - }; - yield exec_1.exec(`"${_7zPath}"`, args, options); - } - finally { - process.chdir(originalCwd); - } - } - else { - const escapedScript = path - .join(__dirname, '..', 'scripts', 'Invoke-7zdec.ps1') - .replace(/'/g, "''") - .replace(/"|\n|\r/g, ''); // double-up single quotes, remove double quotes and newlines - const escapedFile = file.replace(/'/g, "''").replace(/"|\n|\r/g, ''); - const escapedTarget = dest.replace(/'/g, "''").replace(/"|\n|\r/g, ''); - const command = `& '${escapedScript}' -Source '${escapedFile}' -Target '${escapedTarget}'`; - const args = [ - '-NoLogo', - '-Sta', - '-NoProfile', - '-NonInteractive', - '-ExecutionPolicy', - 'Unrestricted', - '-Command', - command - ]; - const options = { - silent: true - }; - try { - const powershellPath = yield io.which('powershell', true); - yield exec_1.exec(`"${powershellPath}"`, args, options); - } - finally { - process.chdir(originalCwd); - } - } - return dest; - }); -} -exports.extract7z = extract7z; -/** - * Extract a compressed tar archive - * - * @param file path to the tar - * @param dest destination directory. Optional. - * @param flags flags for the tar command to use for extraction. Defaults to 'xz' (extracting gzipped tars). Optional. - * @returns path to the destination directory - */ -function extractTar(file, dest, flags = 'xz') { - return __awaiter(this, void 0, void 0, function* () { - if (!file) { - throw new Error("parameter 'file' is required"); - } - // Create dest - dest = yield _createExtractFolder(dest); - // Determine whether GNU tar - core.debug('Checking tar --version'); - let versionOutput = ''; - yield exec_1.exec('tar --version', [], { - ignoreReturnCode: true, - silent: true, - listeners: { - stdout: (data) => (versionOutput += data.toString()), - stderr: (data) => (versionOutput += data.toString()) - } - }); - core.debug(versionOutput.trim()); - const isGnuTar = versionOutput.toUpperCase().includes('GNU TAR'); - // Initialize args - let args; - if (flags instanceof Array) { - args = flags; - } - else { - args = [flags]; - } - if (core.isDebug() && !flags.includes('v')) { - args.push('-v'); - } - let destArg = dest; - let fileArg = file; - if (IS_WINDOWS && isGnuTar) { - args.push('--force-local'); - destArg = dest.replace(/\\/g, '/'); - // Technically only the dest needs to have `/` but for aesthetic consistency - // convert slashes in the file arg too. - fileArg = file.replace(/\\/g, '/'); - } - if (isGnuTar) { - // Suppress warnings when using GNU tar to extract archives created by BSD tar - args.push('--warning=no-unknown-keyword'); - args.push('--overwrite'); - } - args.push('-C', destArg, '-f', fileArg); - yield exec_1.exec(`tar`, args); - return dest; - }); -} -exports.extractTar = extractTar; -/** - * Extract a xar compatible archive - * - * @param file path to the archive - * @param dest destination directory. Optional. - * @param flags flags for the xar. Optional. - * @returns path to the destination directory - */ -function extractXar(file, dest, flags = []) { - return __awaiter(this, void 0, void 0, function* () { - assert_1.ok(IS_MAC, 'extractXar() not supported on current OS'); - assert_1.ok(file, 'parameter "file" is required'); - dest = yield _createExtractFolder(dest); - let args; - if (flags instanceof Array) { - args = flags; - } - else { - args = [flags]; - } - args.push('-x', '-C', dest, '-f', file); - if (core.isDebug()) { - args.push('-v'); - } - const xarPath = yield io.which('xar', true); - yield exec_1.exec(`"${xarPath}"`, _unique(args)); - return dest; - }); -} -exports.extractXar = extractXar; -/** - * Extract a zip - * - * @param file path to the zip - * @param dest destination directory. Optional. - * @returns path to the destination directory - */ -function extractZip(file, dest) { - return __awaiter(this, void 0, void 0, function* () { - if (!file) { - throw new Error("parameter 'file' is required"); - } - dest = yield _createExtractFolder(dest); - if (IS_WINDOWS) { - yield extractZipWin(file, dest); - } - else { - yield extractZipNix(file, dest); - } - return dest; - }); -} -exports.extractZip = extractZip; -function extractZipWin(file, dest) { - return __awaiter(this, void 0, void 0, function* () { - // build the powershell command - const escapedFile = file.replace(/'/g, "''").replace(/"|\n|\r/g, ''); // double-up single quotes, remove double quotes and newlines - const escapedDest = dest.replace(/'/g, "''").replace(/"|\n|\r/g, ''); - const pwshPath = yield io.which('pwsh', false); - //To match the file overwrite behavior on nix systems, we use the overwrite = true flag for ExtractToDirectory - //and the -Force flag for Expand-Archive as a fallback - if (pwshPath) { - //attempt to use pwsh with ExtractToDirectory, if this fails attempt Expand-Archive - const pwshCommand = [ - `$ErrorActionPreference = 'Stop' ;`, - `try { Add-Type -AssemblyName System.IO.Compression.ZipFile } catch { } ;`, - `try { [System.IO.Compression.ZipFile]::ExtractToDirectory('${escapedFile}', '${escapedDest}', $true) }`, - `catch { if (($_.Exception.GetType().FullName -eq 'System.Management.Automation.MethodException') -or ($_.Exception.GetType().FullName -eq 'System.Management.Automation.RuntimeException') ){ Expand-Archive -LiteralPath '${escapedFile}' -DestinationPath '${escapedDest}' -Force } else { throw $_ } } ;` - ].join(' '); - const args = [ - '-NoLogo', - '-NoProfile', - '-NonInteractive', - '-ExecutionPolicy', - 'Unrestricted', - '-Command', - pwshCommand - ]; - core.debug(`Using pwsh at path: ${pwshPath}`); - yield exec_1.exec(`"${pwshPath}"`, args); - } - else { - const powershellCommand = [ - `$ErrorActionPreference = 'Stop' ;`, - `try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ;`, - `if ((Get-Command -Name Expand-Archive -Module Microsoft.PowerShell.Archive -ErrorAction Ignore)) { Expand-Archive -LiteralPath '${escapedFile}' -DestinationPath '${escapedDest}' -Force }`, - `else {[System.IO.Compression.ZipFile]::ExtractToDirectory('${escapedFile}', '${escapedDest}', $true) }` - ].join(' '); - const args = [ - '-NoLogo', - '-Sta', - '-NoProfile', - '-NonInteractive', - '-ExecutionPolicy', - 'Unrestricted', - '-Command', - powershellCommand - ]; - const powershellPath = yield io.which('powershell', true); - core.debug(`Using powershell at path: ${powershellPath}`); - yield exec_1.exec(`"${powershellPath}"`, args); - } - }); -} -function extractZipNix(file, dest) { - return __awaiter(this, void 0, void 0, function* () { - const unzipPath = yield io.which('unzip', true); - const args = [file]; - if (!core.isDebug()) { - args.unshift('-q'); - } - args.unshift('-o'); //overwrite with -o, otherwise a prompt is shown which freezes the run - yield exec_1.exec(`"${unzipPath}"`, args, { cwd: dest }); - }); -} -/** - * Caches a directory and installs it into the tool cacheDir - * - * @param sourceDir the directory to cache into tools - * @param tool tool name - * @param version version of the tool. semver format - * @param arch architecture of the tool. Optional. Defaults to machine architecture - */ -function cacheDir(sourceDir, tool, version, arch) { - return __awaiter(this, void 0, void 0, function* () { - version = semver.clean(version) || version; - arch = arch || os.arch(); - core.debug(`Caching tool ${tool} ${version} ${arch}`); - core.debug(`source dir: ${sourceDir}`); - if (!fs.statSync(sourceDir).isDirectory()) { - throw new Error('sourceDir is not a directory'); - } - // Create the tool dir - const destPath = yield _createToolPath(tool, version, arch); - // copy each child item. do not move. move can fail on Windows - // due to anti-virus software having an open handle on a file. - for (const itemName of fs.readdirSync(sourceDir)) { - const s = path.join(sourceDir, itemName); - yield io.cp(s, destPath, { recursive: true }); - } - // write .complete - _completeToolPath(tool, version, arch); - return destPath; - }); -} -exports.cacheDir = cacheDir; -/** - * Caches a downloaded file (GUID) and installs it - * into the tool cache with a given targetName - * - * @param sourceFile the file to cache into tools. Typically a result of downloadTool which is a guid. - * @param targetFile the name of the file name in the tools directory - * @param tool tool name - * @param version version of the tool. semver format - * @param arch architecture of the tool. Optional. Defaults to machine architecture - */ -function cacheFile(sourceFile, targetFile, tool, version, arch) { - return __awaiter(this, void 0, void 0, function* () { - version = semver.clean(version) || version; - arch = arch || os.arch(); - core.debug(`Caching tool ${tool} ${version} ${arch}`); - core.debug(`source file: ${sourceFile}`); - if (!fs.statSync(sourceFile).isFile()) { - throw new Error('sourceFile is not a file'); - } - // create the tool dir - const destFolder = yield _createToolPath(tool, version, arch); - // copy instead of move. move can fail on Windows due to - // anti-virus software having an open handle on a file. - const destPath = path.join(destFolder, targetFile); - core.debug(`destination file ${destPath}`); - yield io.cp(sourceFile, destPath); - // write .complete - _completeToolPath(tool, version, arch); - return destFolder; - }); -} -exports.cacheFile = cacheFile; -/** - * Finds the path to a tool version in the local installed tool cache - * - * @param toolName name of the tool - * @param versionSpec version of the tool - * @param arch optional arch. defaults to arch of computer - */ -function find(toolName, versionSpec, arch) { - if (!toolName) { - throw new Error('toolName parameter is required'); - } - if (!versionSpec) { - throw new Error('versionSpec parameter is required'); - } - arch = arch || os.arch(); - // attempt to resolve an explicit version - if (!isExplicitVersion(versionSpec)) { - const localVersions = findAllVersions(toolName, arch); - const match = evaluateVersions(localVersions, versionSpec); - versionSpec = match; - } - // check for the explicit version in the cache - let toolPath = ''; - if (versionSpec) { - versionSpec = semver.clean(versionSpec) || ''; - const cachePath = path.join(_getCacheDirectory(), toolName, versionSpec, arch); - core.debug(`checking cache: ${cachePath}`); - if (fs.existsSync(cachePath) && fs.existsSync(`${cachePath}.complete`)) { - core.debug(`Found tool in cache ${toolName} ${versionSpec} ${arch}`); - toolPath = cachePath; - } - else { - core.debug('not found'); - } - } - return toolPath; -} -exports.find = find; -/** - * Finds the paths to all versions of a tool that are installed in the local tool cache - * - * @param toolName name of the tool - * @param arch optional arch. defaults to arch of computer - */ -function findAllVersions(toolName, arch) { - const versions = []; - arch = arch || os.arch(); - const toolPath = path.join(_getCacheDirectory(), toolName); - if (fs.existsSync(toolPath)) { - const children = fs.readdirSync(toolPath); - for (const child of children) { - if (isExplicitVersion(child)) { - const fullPath = path.join(toolPath, child, arch || ''); - if (fs.existsSync(fullPath) && fs.existsSync(`${fullPath}.complete`)) { - versions.push(child); - } - } - } - } - return versions; -} -exports.findAllVersions = findAllVersions; -function getManifestFromRepo(owner, repo, auth, branch = 'master') { - return __awaiter(this, void 0, void 0, function* () { - let releases = []; - const treeUrl = `https://api.github.com/repos/${owner}/${repo}/git/trees/${branch}`; - const http = new httpm.HttpClient('tool-cache'); - const headers = {}; - if (auth) { - core.debug('set auth'); - headers.authorization = auth; - } - const response = yield http.getJson(treeUrl, headers); - if (!response.result) { - return releases; - } - let manifestUrl = ''; - for (const item of response.result.tree) { - if (item.path === 'versions-manifest.json') { - manifestUrl = item.url; - break; - } - } - headers['accept'] = 'application/vnd.github.VERSION.raw'; - let versionsRaw = yield (yield http.get(manifestUrl, headers)).readBody(); - if (versionsRaw) { - // shouldn't be needed but protects against invalid json saved with BOM - versionsRaw = versionsRaw.replace(/^\uFEFF/, ''); - try { - releases = JSON.parse(versionsRaw); - } - catch (_a) { - core.debug('Invalid json'); - } - } - return releases; - }); -} -exports.getManifestFromRepo = getManifestFromRepo; -function findFromManifest(versionSpec, stable, manifest, archFilter = os.arch()) { - return __awaiter(this, void 0, void 0, function* () { - // wrap the internal impl - const match = yield mm._findMatch(versionSpec, stable, manifest, archFilter); - return match; - }); -} -exports.findFromManifest = findFromManifest; -function _createExtractFolder(dest) { - return __awaiter(this, void 0, void 0, function* () { - if (!dest) { - // create a temp dir - dest = path.join(_getTempDirectory(), v4_1.default()); - } - yield io.mkdirP(dest); - return dest; - }); -} -function _createToolPath(tool, version, arch) { - return __awaiter(this, void 0, void 0, function* () { - const folderPath = path.join(_getCacheDirectory(), tool, semver.clean(version) || version, arch || ''); - core.debug(`destination ${folderPath}`); - const markerPath = `${folderPath}.complete`; - yield io.rmRF(folderPath); - yield io.rmRF(markerPath); - yield io.mkdirP(folderPath); - return folderPath; - }); -} -function _completeToolPath(tool, version, arch) { - const folderPath = path.join(_getCacheDirectory(), tool, semver.clean(version) || version, arch || ''); - const markerPath = `${folderPath}.complete`; - fs.writeFileSync(markerPath, ''); - core.debug('finished caching tool'); -} -/** - * Check if version string is explicit - * - * @param versionSpec version string to check - */ -function isExplicitVersion(versionSpec) { - const c = semver.clean(versionSpec) || ''; - core.debug(`isExplicit: ${c}`); - const valid = semver.valid(c) != null; - core.debug(`explicit? ${valid}`); - return valid; -} -exports.isExplicitVersion = isExplicitVersion; -/** - * Get the highest satisfiying semantic version in `versions` which satisfies `versionSpec` - * - * @param versions array of versions to evaluate - * @param versionSpec semantic version spec to satisfy - */ -function evaluateVersions(versions, versionSpec) { - let version = ''; - core.debug(`evaluating ${versions.length} versions`); - versions = versions.sort((a, b) => { - if (semver.gt(a, b)) { - return 1; - } - return -1; - }); - for (let i = versions.length - 1; i >= 0; i--) { - const potential = versions[i]; - const satisfied = semver.satisfies(potential, versionSpec); - if (satisfied) { - version = potential; - break; - } - } - if (version) { - core.debug(`matched: ${version}`); - } - else { - core.debug('match not found'); - } - return version; -} -exports.evaluateVersions = evaluateVersions; -/** - * Gets RUNNER_TOOL_CACHE - */ -function _getCacheDirectory() { - const cacheDirectory = process.env['RUNNER_TOOL_CACHE'] || ''; - assert_1.ok(cacheDirectory, 'Expected RUNNER_TOOL_CACHE to be defined'); - return cacheDirectory; -} -/** - * Gets RUNNER_TEMP - */ -function _getTempDirectory() { - const tempDirectory = process.env['RUNNER_TEMP'] || ''; - assert_1.ok(tempDirectory, 'Expected RUNNER_TEMP to be defined'); - return tempDirectory; -} -/** - * Gets a global variable - */ -function _getGlobal(key, defaultValue) { - /* eslint-disable @typescript-eslint/no-explicit-any */ - const value = global[key]; - /* eslint-enable @typescript-eslint/no-explicit-any */ - return value !== undefined ? value : defaultValue; -} -/** - * Returns an array of unique values. - * @param values Values to make unique. - */ -function _unique(values) { - return Array.from(new Set(values)); -} -//# sourceMappingURL=tool-cache.js.map - -/***/ }), - -/***/ 727: -/***/ ((module) => { - -/** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ -var byteToHex = []; -for (var i = 0; i < 256; ++i) { - byteToHex[i] = (i + 0x100).toString(16).substr(1); -} - -function bytesToUuid(buf, offset) { - var i = offset || 0; - var bth = byteToHex; - // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4 - return ([ - bth[buf[i++]], bth[buf[i++]], - bth[buf[i++]], bth[buf[i++]], '-', - bth[buf[i++]], bth[buf[i++]], '-', - bth[buf[i++]], bth[buf[i++]], '-', - bth[buf[i++]], bth[buf[i++]], '-', - bth[buf[i++]], bth[buf[i++]], - bth[buf[i++]], bth[buf[i++]], - bth[buf[i++]], bth[buf[i++]] - ]).join(''); -} - -module.exports = bytesToUuid; - - -/***/ }), - -/***/ 879: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -// Unique ID creation requires a high quality random # generator. In node.js -// this is pretty straight-forward - we use the crypto API. - -var crypto = __nccwpck_require__(982); - -module.exports = function nodeRNG() { - return crypto.randomBytes(16); -}; - - -/***/ }), - -/***/ 350: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var rng = __nccwpck_require__(879); -var bytesToUuid = __nccwpck_require__(727); - -function v4(options, buf, offset) { - var i = buf && offset || 0; - - if (typeof(options) == 'string') { - buf = options === 'binary' ? new Array(16) : null; - options = null; - } - options = options || {}; - - var rnds = options.random || (options.rng || rng)(); - - // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - rnds[6] = (rnds[6] & 0x0f) | 0x40; - rnds[8] = (rnds[8] & 0x3f) | 0x80; - - // Copy bytes to buffer, if provided - if (buf) { - for (var ii = 0; ii < 16; ++ii) { - buf[i + ii] = rnds[ii]; - } - } - - return buf || bytesToUuid(rnds); -} - -module.exports = v4; - - -/***/ }), - -/***/ 318: -/***/ ((module, exports) => { - -exports = module.exports = SemVer - -var debug -/* istanbul ignore next */ -if (typeof process === 'object' && - process.env && - process.env.NODE_DEBUG && - /\bsemver\b/i.test(process.env.NODE_DEBUG)) { - debug = function () { - var args = Array.prototype.slice.call(arguments, 0) - args.unshift('SEMVER') - console.log.apply(console, args) - } -} else { - debug = function () {} -} - -// Note: this is the semver.org version of the spec that it implements -// Not necessarily the package version of this code. -exports.SEMVER_SPEC_VERSION = '2.0.0' - -var MAX_LENGTH = 256 -var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || - /* istanbul ignore next */ 9007199254740991 - -// Max safe segment length for coercion. -var MAX_SAFE_COMPONENT_LENGTH = 16 - -var MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6 - -// The actual regexps go on exports.re -var re = exports.re = [] -var safeRe = exports.safeRe = [] -var src = exports.src = [] -var t = exports.tokens = {} -var R = 0 - -function tok (n) { - t[n] = R++ -} - -var LETTERDASHNUMBER = '[a-zA-Z0-9-]' - -// Replace some greedy regex tokens to prevent regex dos issues. These regex are -// used internally via the safeRe object since all inputs in this library get -// normalized first to trim and collapse all extra whitespace. The original -// regexes are exported for userland consumption and lower level usage. A -// future breaking change could export the safer regex only with a note that -// all input should have extra whitespace removed. -var safeRegexReplacements = [ - ['\\s', 1], - ['\\d', MAX_LENGTH], - [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH], -] - -function makeSafeRe (value) { - for (var i = 0; i < safeRegexReplacements.length; i++) { - var token = safeRegexReplacements[i][0] - var max = safeRegexReplacements[i][1] - value = value - .split(token + '*').join(token + '{0,' + max + '}') - .split(token + '+').join(token + '{1,' + max + '}') - } - return value -} - -// The following Regular Expressions can be used for tokenizing, -// validating, and parsing SemVer version strings. - -// ## Numeric Identifier -// A single `0`, or a non-zero digit followed by zero or more digits. - -tok('NUMERICIDENTIFIER') -src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*' -tok('NUMERICIDENTIFIERLOOSE') -src[t.NUMERICIDENTIFIERLOOSE] = '\\d+' - -// ## Non-numeric Identifier -// Zero or more digits, followed by a letter or hyphen, and then zero or -// more letters, digits, or hyphens. - -tok('NONNUMERICIDENTIFIER') -src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-]' + LETTERDASHNUMBER + '*' - -// ## Main Version -// Three dot-separated numeric identifiers. - -tok('MAINVERSION') -src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + - '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + - '(' + src[t.NUMERICIDENTIFIER] + ')' - -tok('MAINVERSIONLOOSE') -src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + - '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + - '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')' - -// ## Pre-release Version Identifier -// A numeric identifier, or a non-numeric identifier. - -tok('PRERELEASEIDENTIFIER') -src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] + - '|' + src[t.NONNUMERICIDENTIFIER] + ')' - -tok('PRERELEASEIDENTIFIERLOOSE') -src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] + - '|' + src[t.NONNUMERICIDENTIFIER] + ')' - -// ## Pre-release Version -// Hyphen, followed by one or more dot-separated pre-release version -// identifiers. - -tok('PRERELEASE') -src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] + - '(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))' - -tok('PRERELEASELOOSE') -src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] + - '(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))' - -// ## Build Metadata Identifier -// Any combination of digits, letters, or hyphens. - -tok('BUILDIDENTIFIER') -src[t.BUILDIDENTIFIER] = LETTERDASHNUMBER + '+' - -// ## Build Metadata -// Plus sign, followed by one or more period-separated build metadata -// identifiers. - -tok('BUILD') -src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] + - '(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))' - -// ## Full Version String -// A main version, followed optionally by a pre-release version and -// build metadata. - -// Note that the only major, minor, patch, and pre-release sections of -// the version string are capturing groups. The build metadata is not a -// capturing group, because it should not ever be used in version -// comparison. - -tok('FULL') -tok('FULLPLAIN') -src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] + - src[t.PRERELEASE] + '?' + - src[t.BUILD] + '?' - -src[t.FULL] = '^' + src[t.FULLPLAIN] + '$' - -// like full, but allows v1.2.3 and =1.2.3, which people do sometimes. -// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty -// common in the npm registry. -tok('LOOSEPLAIN') -src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] + - src[t.PRERELEASELOOSE] + '?' + - src[t.BUILD] + '?' - -tok('LOOSE') -src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$' - -tok('GTLT') -src[t.GTLT] = '((?:<|>)?=?)' - -// Something like "2.*" or "1.2.x". -// Note that "x.x" is a valid xRange identifer, meaning "any version" -// Only the first item is strictly required. -tok('XRANGEIDENTIFIERLOOSE') -src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*' -tok('XRANGEIDENTIFIER') -src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*' - -tok('XRANGEPLAIN') -src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' + - '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + - '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + - '(?:' + src[t.PRERELEASE] + ')?' + - src[t.BUILD] + '?' + - ')?)?' - -tok('XRANGEPLAINLOOSE') -src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + - '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + - '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + - '(?:' + src[t.PRERELEASELOOSE] + ')?' + - src[t.BUILD] + '?' + - ')?)?' - -tok('XRANGE') -src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$' -tok('XRANGELOOSE') -src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$' - -// Coercion. -// Extract anything that could conceivably be a part of a valid semver -tok('COERCE') -src[t.COERCE] = '(^|[^\\d])' + - '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + - '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + - '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + - '(?:$|[^\\d])' -tok('COERCERTL') -re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g') -safeRe[t.COERCERTL] = new RegExp(makeSafeRe(src[t.COERCE]), 'g') - -// Tilde ranges. -// Meaning is "reasonably at or greater than" -tok('LONETILDE') -src[t.LONETILDE] = '(?:~>?)' - -tok('TILDETRIM') -src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+' -re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g') -safeRe[t.TILDETRIM] = new RegExp(makeSafeRe(src[t.TILDETRIM]), 'g') -var tildeTrimReplace = '$1~' - -tok('TILDE') -src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$' -tok('TILDELOOSE') -src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$' - -// Caret ranges. -// Meaning is "at least and backwards compatible with" -tok('LONECARET') -src[t.LONECARET] = '(?:\\^)' - -tok('CARETTRIM') -src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+' -re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g') -safeRe[t.CARETTRIM] = new RegExp(makeSafeRe(src[t.CARETTRIM]), 'g') -var caretTrimReplace = '$1^' - -tok('CARET') -src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$' -tok('CARETLOOSE') -src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$' - -// A simple gt/lt/eq thing, or just "" to indicate "any version" -tok('COMPARATORLOOSE') -src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$' -tok('COMPARATOR') -src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$' - -// An expression to strip any whitespace between the gtlt and the thing -// it modifies, so that `> 1.2.3` ==> `>1.2.3` -tok('COMPARATORTRIM') -src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] + - '\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')' - -// this one has to use the /g flag -re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g') -safeRe[t.COMPARATORTRIM] = new RegExp(makeSafeRe(src[t.COMPARATORTRIM]), 'g') -var comparatorTrimReplace = '$1$2$3' - -// Something like `1.2.3 - 1.2.4` -// Note that these all use the loose form, because they'll be -// checked against either the strict or loose comparator form -// later. -tok('HYPHENRANGE') -src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' + - '\\s+-\\s+' + - '(' + src[t.XRANGEPLAIN] + ')' + - '\\s*$' - -tok('HYPHENRANGELOOSE') -src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' + - '\\s+-\\s+' + - '(' + src[t.XRANGEPLAINLOOSE] + ')' + - '\\s*$' - -// Star ranges basically just allow anything at all. -tok('STAR') -src[t.STAR] = '(<|>)?=?\\s*\\*' - -// Compile to actual regexp objects. -// All are flag-free, unless they were created above with a flag. -for (var i = 0; i < R; i++) { - debug(i, src[i]) - if (!re[i]) { - re[i] = new RegExp(src[i]) - - // Replace all greedy whitespace to prevent regex dos issues. These regex are - // used internally via the safeRe object since all inputs in this library get - // normalized first to trim and collapse all extra whitespace. The original - // regexes are exported for userland consumption and lower level usage. A - // future breaking change could export the safer regex only with a note that - // all input should have extra whitespace removed. - safeRe[i] = new RegExp(makeSafeRe(src[i])) - } -} - -exports.parse = parse -function parse (version, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } - - if (version instanceof SemVer) { - return version - } - - if (typeof version !== 'string') { - return null - } - - if (version.length > MAX_LENGTH) { - return null - } - - var r = options.loose ? safeRe[t.LOOSE] : safeRe[t.FULL] - if (!r.test(version)) { - return null - } - - try { - return new SemVer(version, options) - } catch (er) { - return null - } -} - -exports.valid = valid -function valid (version, options) { - var v = parse(version, options) - return v ? v.version : null -} - -exports.clean = clean -function clean (version, options) { - var s = parse(version.trim().replace(/^[=v]+/, ''), options) - return s ? s.version : null -} - -exports.SemVer = SemVer - -function SemVer (version, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } - if (version instanceof SemVer) { - if (version.loose === options.loose) { - return version - } else { - version = version.version - } - } else if (typeof version !== 'string') { - throw new TypeError('Invalid Version: ' + version) - } - - if (version.length > MAX_LENGTH) { - throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters') - } - - if (!(this instanceof SemVer)) { - return new SemVer(version, options) - } - - debug('SemVer', version, options) - this.options = options - this.loose = !!options.loose - - var m = version.trim().match(options.loose ? safeRe[t.LOOSE] : safeRe[t.FULL]) - - if (!m) { - throw new TypeError('Invalid Version: ' + version) - } - - this.raw = version - - // these are actually numbers - this.major = +m[1] - this.minor = +m[2] - this.patch = +m[3] - - if (this.major > MAX_SAFE_INTEGER || this.major < 0) { - throw new TypeError('Invalid major version') - } - - if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { - throw new TypeError('Invalid minor version') - } - - if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { - throw new TypeError('Invalid patch version') - } - - // numberify any prerelease numeric ids - if (!m[4]) { - this.prerelease = [] - } else { - this.prerelease = m[4].split('.').map(function (id) { - if (/^[0-9]+$/.test(id)) { - var num = +id - if (num >= 0 && num < MAX_SAFE_INTEGER) { - return num - } - } - return id - }) - } - - this.build = m[5] ? m[5].split('.') : [] - this.format() -} - -SemVer.prototype.format = function () { - this.version = this.major + '.' + this.minor + '.' + this.patch - if (this.prerelease.length) { - this.version += '-' + this.prerelease.join('.') - } - return this.version -} - -SemVer.prototype.toString = function () { - return this.version -} - -SemVer.prototype.compare = function (other) { - debug('SemVer.compare', this.version, this.options, other) - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } - - return this.compareMain(other) || this.comparePre(other) -} - -SemVer.prototype.compareMain = function (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } - - return compareIdentifiers(this.major, other.major) || - compareIdentifiers(this.minor, other.minor) || - compareIdentifiers(this.patch, other.patch) -} - -SemVer.prototype.comparePre = function (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } - - // NOT having a prerelease is > having one - if (this.prerelease.length && !other.prerelease.length) { - return -1 - } else if (!this.prerelease.length && other.prerelease.length) { - return 1 - } else if (!this.prerelease.length && !other.prerelease.length) { - return 0 - } - - var i = 0 - do { - var a = this.prerelease[i] - var b = other.prerelease[i] - debug('prerelease compare', i, a, b) - if (a === undefined && b === undefined) { - return 0 - } else if (b === undefined) { - return 1 - } else if (a === undefined) { - return -1 - } else if (a === b) { - continue - } else { - return compareIdentifiers(a, b) - } - } while (++i) -} - -SemVer.prototype.compareBuild = function (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } - - var i = 0 - do { - var a = this.build[i] - var b = other.build[i] - debug('prerelease compare', i, a, b) - if (a === undefined && b === undefined) { - return 0 - } else if (b === undefined) { - return 1 - } else if (a === undefined) { - return -1 - } else if (a === b) { - continue - } else { - return compareIdentifiers(a, b) - } - } while (++i) -} - -// preminor will bump the version up to the next minor release, and immediately -// down to pre-release. premajor and prepatch work the same way. -SemVer.prototype.inc = function (release, identifier) { - switch (release) { - case 'premajor': - this.prerelease.length = 0 - this.patch = 0 - this.minor = 0 - this.major++ - this.inc('pre', identifier) - break - case 'preminor': - this.prerelease.length = 0 - this.patch = 0 - this.minor++ - this.inc('pre', identifier) - break - case 'prepatch': - // If this is already a prerelease, it will bump to the next version - // drop any prereleases that might already exist, since they are not - // relevant at this point. - this.prerelease.length = 0 - this.inc('patch', identifier) - this.inc('pre', identifier) - break - // If the input is a non-prerelease version, this acts the same as - // prepatch. - case 'prerelease': - if (this.prerelease.length === 0) { - this.inc('patch', identifier) - } - this.inc('pre', identifier) - break - - case 'major': - // If this is a pre-major version, bump up to the same major version. - // Otherwise increment major. - // 1.0.0-5 bumps to 1.0.0 - // 1.1.0 bumps to 2.0.0 - if (this.minor !== 0 || - this.patch !== 0 || - this.prerelease.length === 0) { - this.major++ - } - this.minor = 0 - this.patch = 0 - this.prerelease = [] - break - case 'minor': - // If this is a pre-minor version, bump up to the same minor version. - // Otherwise increment minor. - // 1.2.0-5 bumps to 1.2.0 - // 1.2.1 bumps to 1.3.0 - if (this.patch !== 0 || this.prerelease.length === 0) { - this.minor++ - } - this.patch = 0 - this.prerelease = [] - break - case 'patch': - // If this is not a pre-release version, it will increment the patch. - // If it is a pre-release it will bump up to the same patch version. - // 1.2.0-5 patches to 1.2.0 - // 1.2.0 patches to 1.2.1 - if (this.prerelease.length === 0) { - this.patch++ - } - this.prerelease = [] - break - // This probably shouldn't be used publicly. - // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction. - case 'pre': - if (this.prerelease.length === 0) { - this.prerelease = [0] - } else { - var i = this.prerelease.length - while (--i >= 0) { - if (typeof this.prerelease[i] === 'number') { - this.prerelease[i]++ - i = -2 - } - } - if (i === -1) { - // didn't increment anything - this.prerelease.push(0) - } - } - if (identifier) { - // 1.2.0-beta.1 bumps to 1.2.0-beta.2, - // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 - if (this.prerelease[0] === identifier) { - if (isNaN(this.prerelease[1])) { - this.prerelease = [identifier, 0] - } - } else { - this.prerelease = [identifier, 0] - } - } - break - - default: - throw new Error('invalid increment argument: ' + release) - } - this.format() - this.raw = this.version - return this -} - -exports.inc = inc -function inc (version, release, loose, identifier) { - if (typeof (loose) === 'string') { - identifier = loose - loose = undefined - } - - try { - return new SemVer(version, loose).inc(release, identifier).version - } catch (er) { - return null - } -} - -exports.diff = diff -function diff (version1, version2) { - if (eq(version1, version2)) { - return null - } else { - var v1 = parse(version1) - var v2 = parse(version2) - var prefix = '' - if (v1.prerelease.length || v2.prerelease.length) { - prefix = 'pre' - var defaultResult = 'prerelease' - } - for (var key in v1) { - if (key === 'major' || key === 'minor' || key === 'patch') { - if (v1[key] !== v2[key]) { - return prefix + key - } - } - } - return defaultResult // may be undefined - } -} - -exports.compareIdentifiers = compareIdentifiers - -var numeric = /^[0-9]+$/ -function compareIdentifiers (a, b) { - var anum = numeric.test(a) - var bnum = numeric.test(b) - - if (anum && bnum) { - a = +a - b = +b - } - - return a === b ? 0 - : (anum && !bnum) ? -1 - : (bnum && !anum) ? 1 - : a < b ? -1 - : 1 -} - -exports.rcompareIdentifiers = rcompareIdentifiers -function rcompareIdentifiers (a, b) { - return compareIdentifiers(b, a) -} - -exports.major = major -function major (a, loose) { - return new SemVer(a, loose).major -} - -exports.minor = minor -function minor (a, loose) { - return new SemVer(a, loose).minor -} - -exports.patch = patch -function patch (a, loose) { - return new SemVer(a, loose).patch -} - -exports.compare = compare -function compare (a, b, loose) { - return new SemVer(a, loose).compare(new SemVer(b, loose)) -} - -exports.compareLoose = compareLoose -function compareLoose (a, b) { - return compare(a, b, true) -} - -exports.compareBuild = compareBuild -function compareBuild (a, b, loose) { - var versionA = new SemVer(a, loose) - var versionB = new SemVer(b, loose) - return versionA.compare(versionB) || versionA.compareBuild(versionB) -} - -exports.rcompare = rcompare -function rcompare (a, b, loose) { - return compare(b, a, loose) -} - -exports.sort = sort -function sort (list, loose) { - return list.sort(function (a, b) { - return exports.compareBuild(a, b, loose) - }) -} - -exports.rsort = rsort -function rsort (list, loose) { - return list.sort(function (a, b) { - return exports.compareBuild(b, a, loose) - }) -} - -exports.gt = gt -function gt (a, b, loose) { - return compare(a, b, loose) > 0 -} - -exports.lt = lt -function lt (a, b, loose) { - return compare(a, b, loose) < 0 -} - -exports.eq = eq -function eq (a, b, loose) { - return compare(a, b, loose) === 0 -} - -exports.neq = neq -function neq (a, b, loose) { - return compare(a, b, loose) !== 0 -} - -exports.gte = gte -function gte (a, b, loose) { - return compare(a, b, loose) >= 0 -} - -exports.lte = lte -function lte (a, b, loose) { - return compare(a, b, loose) <= 0 -} - -exports.cmp = cmp -function cmp (a, op, b, loose) { - switch (op) { - case '===': - if (typeof a === 'object') - a = a.version - if (typeof b === 'object') - b = b.version - return a === b - - case '!==': - if (typeof a === 'object') - a = a.version - if (typeof b === 'object') - b = b.version - return a !== b - - case '': - case '=': - case '==': - return eq(a, b, loose) - - case '!=': - return neq(a, b, loose) - - case '>': - return gt(a, b, loose) - - case '>=': - return gte(a, b, loose) - - case '<': - return lt(a, b, loose) - - case '<=': - return lte(a, b, loose) - - default: - throw new TypeError('Invalid operator: ' + op) - } -} - -exports.Comparator = Comparator -function Comparator (comp, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } - - if (comp instanceof Comparator) { - if (comp.loose === !!options.loose) { - return comp - } else { - comp = comp.value - } - } - - if (!(this instanceof Comparator)) { - return new Comparator(comp, options) - } - - comp = comp.trim().split(/\s+/).join(' ') - debug('comparator', comp, options) - this.options = options - this.loose = !!options.loose - this.parse(comp) - - if (this.semver === ANY) { - this.value = '' - } else { - this.value = this.operator + this.semver.version - } - - debug('comp', this) -} - -var ANY = {} -Comparator.prototype.parse = function (comp) { - var r = this.options.loose ? safeRe[t.COMPARATORLOOSE] : safeRe[t.COMPARATOR] - var m = comp.match(r) - - if (!m) { - throw new TypeError('Invalid comparator: ' + comp) - } - - this.operator = m[1] !== undefined ? m[1] : '' - if (this.operator === '=') { - this.operator = '' - } - - // if it literally is just '>' or '' then allow anything. - if (!m[2]) { - this.semver = ANY - } else { - this.semver = new SemVer(m[2], this.options.loose) - } -} - -Comparator.prototype.toString = function () { - return this.value -} - -Comparator.prototype.test = function (version) { - debug('Comparator.test', version, this.options.loose) - - if (this.semver === ANY || version === ANY) { - return true - } - - if (typeof version === 'string') { - try { - version = new SemVer(version, this.options) - } catch (er) { - return false - } - } - - return cmp(version, this.operator, this.semver, this.options) -} - -Comparator.prototype.intersects = function (comp, options) { - if (!(comp instanceof Comparator)) { - throw new TypeError('a Comparator is required') - } - - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } - - var rangeTmp - - if (this.operator === '') { - if (this.value === '') { - return true - } - rangeTmp = new Range(comp.value, options) - return satisfies(this.value, rangeTmp, options) - } else if (comp.operator === '') { - if (comp.value === '') { - return true - } - rangeTmp = new Range(this.value, options) - return satisfies(comp.semver, rangeTmp, options) - } - - var sameDirectionIncreasing = - (this.operator === '>=' || this.operator === '>') && - (comp.operator === '>=' || comp.operator === '>') - var sameDirectionDecreasing = - (this.operator === '<=' || this.operator === '<') && - (comp.operator === '<=' || comp.operator === '<') - var sameSemVer = this.semver.version === comp.semver.version - var differentDirectionsInclusive = - (this.operator === '>=' || this.operator === '<=') && - (comp.operator === '>=' || comp.operator === '<=') - var oppositeDirectionsLessThan = - cmp(this.semver, '<', comp.semver, options) && - ((this.operator === '>=' || this.operator === '>') && - (comp.operator === '<=' || comp.operator === '<')) - var oppositeDirectionsGreaterThan = - cmp(this.semver, '>', comp.semver, options) && - ((this.operator === '<=' || this.operator === '<') && - (comp.operator === '>=' || comp.operator === '>')) - - return sameDirectionIncreasing || sameDirectionDecreasing || - (sameSemVer && differentDirectionsInclusive) || - oppositeDirectionsLessThan || oppositeDirectionsGreaterThan -} - -exports.Range = Range -function Range (range, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } - - if (range instanceof Range) { - if (range.loose === !!options.loose && - range.includePrerelease === !!options.includePrerelease) { - return range - } else { - return new Range(range.raw, options) - } - } - - if (range instanceof Comparator) { - return new Range(range.value, options) - } - - if (!(this instanceof Range)) { - return new Range(range, options) - } - - this.options = options - this.loose = !!options.loose - this.includePrerelease = !!options.includePrerelease - - // First reduce all whitespace as much as possible so we do not have to rely - // on potentially slow regexes like \s*. This is then stored and used for - // future error messages as well. - this.raw = range - .trim() - .split(/\s+/) - .join(' ') - - // First, split based on boolean or || - this.set = this.raw.split('||').map(function (range) { - return this.parseRange(range.trim()) - }, this).filter(function (c) { - // throw out any that are not relevant for whatever reason - return c.length - }) - - if (!this.set.length) { - throw new TypeError('Invalid SemVer Range: ' + this.raw) - } - - this.format() -} - -Range.prototype.format = function () { - this.range = this.set.map(function (comps) { - return comps.join(' ').trim() - }).join('||').trim() - return this.range -} - -Range.prototype.toString = function () { - return this.range -} - -Range.prototype.parseRange = function (range) { - var loose = this.options.loose - // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` - var hr = loose ? safeRe[t.HYPHENRANGELOOSE] : safeRe[t.HYPHENRANGE] - range = range.replace(hr, hyphenReplace) - debug('hyphen replace', range) - // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` - range = range.replace(safeRe[t.COMPARATORTRIM], comparatorTrimReplace) - debug('comparator trim', range, safeRe[t.COMPARATORTRIM]) - - // `~ 1.2.3` => `~1.2.3` - range = range.replace(safeRe[t.TILDETRIM], tildeTrimReplace) - - // `^ 1.2.3` => `^1.2.3` - range = range.replace(safeRe[t.CARETTRIM], caretTrimReplace) - - // normalize spaces - range = range.split(/\s+/).join(' ') - - // At this point, the range is completely trimmed and - // ready to be split into comparators. - - var compRe = loose ? safeRe[t.COMPARATORLOOSE] : safeRe[t.COMPARATOR] - var set = range.split(' ').map(function (comp) { - return parseComparator(comp, this.options) - }, this).join(' ').split(/\s+/) - if (this.options.loose) { - // in loose mode, throw out any that are not valid comparators - set = set.filter(function (comp) { - return !!comp.match(compRe) - }) - } - set = set.map(function (comp) { - return new Comparator(comp, this.options) - }, this) - - return set -} - -Range.prototype.intersects = function (range, options) { - if (!(range instanceof Range)) { - throw new TypeError('a Range is required') - } - - return this.set.some(function (thisComparators) { - return ( - isSatisfiable(thisComparators, options) && - range.set.some(function (rangeComparators) { - return ( - isSatisfiable(rangeComparators, options) && - thisComparators.every(function (thisComparator) { - return rangeComparators.every(function (rangeComparator) { - return thisComparator.intersects(rangeComparator, options) - }) - }) - ) - }) - ) - }) -} - -// take a set of comparators and determine whether there -// exists a version which can satisfy it -function isSatisfiable (comparators, options) { - var result = true - var remainingComparators = comparators.slice() - var testComparator = remainingComparators.pop() - - while (result && remainingComparators.length) { - result = remainingComparators.every(function (otherComparator) { - return testComparator.intersects(otherComparator, options) - }) - - testComparator = remainingComparators.pop() - } - - return result -} - -// Mostly just for testing and legacy API reasons -exports.toComparators = toComparators -function toComparators (range, options) { - return new Range(range, options).set.map(function (comp) { - return comp.map(function (c) { - return c.value - }).join(' ').trim().split(' ') - }) -} - -// comprised of xranges, tildes, stars, and gtlt's at this point. -// already replaced the hyphen ranges -// turn into a set of JUST comparators. -function parseComparator (comp, options) { - debug('comp', comp, options) - comp = replaceCarets(comp, options) - debug('caret', comp) - comp = replaceTildes(comp, options) - debug('tildes', comp) - comp = replaceXRanges(comp, options) - debug('xrange', comp) - comp = replaceStars(comp, options) - debug('stars', comp) - return comp -} - -function isX (id) { - return !id || id.toLowerCase() === 'x' || id === '*' -} - -// ~, ~> --> * (any, kinda silly) -// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0 -// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0 -// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0 -// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0 -// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0 -function replaceTildes (comp, options) { - return comp.trim().split(/\s+/).map(function (comp) { - return replaceTilde(comp, options) - }).join(' ') -} - -function replaceTilde (comp, options) { - var r = options.loose ? safeRe[t.TILDELOOSE] : safeRe[t.TILDE] - return comp.replace(r, function (_, M, m, p, pr) { - debug('tilde', comp, _, M, m, p, pr) - var ret - - if (isX(M)) { - ret = '' - } else if (isX(m)) { - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' - } else if (isX(p)) { - // ~1.2 == >=1.2.0 <1.3.0 - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' - } else if (pr) { - debug('replaceTilde pr', pr) - ret = '>=' + M + '.' + m + '.' + p + '-' + pr + - ' <' + M + '.' + (+m + 1) + '.0' - } else { - // ~1.2.3 == >=1.2.3 <1.3.0 - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + (+m + 1) + '.0' - } - - debug('tilde return', ret) - return ret - }) -} - -// ^ --> * (any, kinda silly) -// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0 -// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0 -// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0 -// ^1.2.3 --> >=1.2.3 <2.0.0 -// ^1.2.0 --> >=1.2.0 <2.0.0 -function replaceCarets (comp, options) { - return comp.trim().split(/\s+/).map(function (comp) { - return replaceCaret(comp, options) - }).join(' ') -} - -function replaceCaret (comp, options) { - debug('caret', comp, options) - var r = options.loose ? safeRe[t.CARETLOOSE] : safeRe[t.CARET] - return comp.replace(r, function (_, M, m, p, pr) { - debug('caret', comp, _, M, m, p, pr) - var ret - - if (isX(M)) { - ret = '' - } else if (isX(m)) { - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' - } else if (isX(p)) { - if (M === '0') { - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' - } else { - ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0' - } - } else if (pr) { - debug('replaceCaret pr', pr) - if (M === '0') { - if (m === '0') { - ret = '>=' + M + '.' + m + '.' + p + '-' + pr + - ' <' + M + '.' + m + '.' + (+p + 1) - } else { - ret = '>=' + M + '.' + m + '.' + p + '-' + pr + - ' <' + M + '.' + (+m + 1) + '.0' - } - } else { - ret = '>=' + M + '.' + m + '.' + p + '-' + pr + - ' <' + (+M + 1) + '.0.0' - } - } else { - debug('no pr') - if (M === '0') { - if (m === '0') { - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + m + '.' + (+p + 1) - } else { - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + (+m + 1) + '.0' - } - } else { - ret = '>=' + M + '.' + m + '.' + p + - ' <' + (+M + 1) + '.0.0' - } - } - - debug('caret return', ret) - return ret - }) -} - -function replaceXRanges (comp, options) { - debug('replaceXRanges', comp, options) - return comp.split(/\s+/).map(function (comp) { - return replaceXRange(comp, options) - }).join(' ') -} - -function replaceXRange (comp, options) { - comp = comp.trim() - var r = options.loose ? safeRe[t.XRANGELOOSE] : safeRe[t.XRANGE] - return comp.replace(r, function (ret, gtlt, M, m, p, pr) { - debug('xRange', comp, ret, gtlt, M, m, p, pr) - var xM = isX(M) - var xm = xM || isX(m) - var xp = xm || isX(p) - var anyX = xp - - if (gtlt === '=' && anyX) { - gtlt = '' - } - - // if we're including prereleases in the match, then we need - // to fix this to -0, the lowest possible prerelease value - pr = options.includePrerelease ? '-0' : '' - - if (xM) { - if (gtlt === '>' || gtlt === '<') { - // nothing is allowed - ret = '<0.0.0-0' - } else { - // nothing is forbidden - ret = '*' - } - } else if (gtlt && anyX) { - // we know patch is an x, because we have any x at all. - // replace X with 0 - if (xm) { - m = 0 - } - p = 0 - - if (gtlt === '>') { - // >1 => >=2.0.0 - // >1.2 => >=1.3.0 - // >1.2.3 => >= 1.2.4 - gtlt = '>=' - if (xm) { - M = +M + 1 - m = 0 - p = 0 - } else { - m = +m + 1 - p = 0 - } - } else if (gtlt === '<=') { - // <=0.7.x is actually <0.8.0, since any 0.7.x should - // pass. Similarly, <=7.x is actually <8.0.0, etc. - gtlt = '<' - if (xm) { - M = +M + 1 - } else { - m = +m + 1 - } - } - - ret = gtlt + M + '.' + m + '.' + p + pr - } else if (xm) { - ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr - } else if (xp) { - ret = '>=' + M + '.' + m + '.0' + pr + - ' <' + M + '.' + (+m + 1) + '.0' + pr - } - - debug('xRange return', ret) - - return ret - }) -} - -// Because * is AND-ed with everything else in the comparator, -// and '' means "any version", just remove the *s entirely. -function replaceStars (comp, options) { - debug('replaceStars', comp, options) - // Looseness is ignored here. star is always as loose as it gets! - return comp.trim().replace(safeRe[t.STAR], '') -} - -// This function is passed to string.replace(re[t.HYPHENRANGE]) -// M, m, patch, prerelease, build -// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 -// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do -// 1.2 - 3.4 => >=1.2.0 <3.5.0 -function hyphenReplace ($0, - from, fM, fm, fp, fpr, fb, - to, tM, tm, tp, tpr, tb) { - if (isX(fM)) { - from = '' - } else if (isX(fm)) { - from = '>=' + fM + '.0.0' - } else if (isX(fp)) { - from = '>=' + fM + '.' + fm + '.0' - } else { - from = '>=' + from - } - - if (isX(tM)) { - to = '' - } else if (isX(tm)) { - to = '<' + (+tM + 1) + '.0.0' - } else if (isX(tp)) { - to = '<' + tM + '.' + (+tm + 1) + '.0' - } else if (tpr) { - to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr - } else { - to = '<=' + to - } - - return (from + ' ' + to).trim() -} - -// if ANY of the sets match ALL of its comparators, then pass -Range.prototype.test = function (version) { - if (!version) { - return false - } - - if (typeof version === 'string') { - try { - version = new SemVer(version, this.options) - } catch (er) { - return false - } - } - - for (var i = 0; i < this.set.length; i++) { - if (testSet(this.set[i], version, this.options)) { - return true - } - } - return false -} - -function testSet (set, version, options) { - for (var i = 0; i < set.length; i++) { - if (!set[i].test(version)) { - return false - } - } - - if (version.prerelease.length && !options.includePrerelease) { - // Find the set of versions that are allowed to have prereleases - // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 - // That should allow `1.2.3-pr.2` to pass. - // However, `1.2.4-alpha.notready` should NOT be allowed, - // even though it's within the range set by the comparators. - for (i = 0; i < set.length; i++) { - debug(set[i].semver) - if (set[i].semver === ANY) { - continue - } - - if (set[i].semver.prerelease.length > 0) { - var allowed = set[i].semver - if (allowed.major === version.major && - allowed.minor === version.minor && - allowed.patch === version.patch) { - return true - } - } - } - - // Version has a -pre, but it's not one of the ones we like. - return false - } - - return true -} - -exports.satisfies = satisfies -function satisfies (version, range, options) { - try { - range = new Range(range, options) - } catch (er) { - return false - } - return range.test(version) -} - -exports.maxSatisfying = maxSatisfying -function maxSatisfying (versions, range, options) { - var max = null - var maxSV = null - try { - var rangeObj = new Range(range, options) - } catch (er) { - return null - } - versions.forEach(function (v) { - if (rangeObj.test(v)) { - // satisfies(v, range, options) - if (!max || maxSV.compare(v) === -1) { - // compare(max, v, true) - max = v - maxSV = new SemVer(max, options) - } - } - }) - return max -} - -exports.minSatisfying = minSatisfying -function minSatisfying (versions, range, options) { - var min = null - var minSV = null - try { - var rangeObj = new Range(range, options) - } catch (er) { - return null - } - versions.forEach(function (v) { - if (rangeObj.test(v)) { - // satisfies(v, range, options) - if (!min || minSV.compare(v) === 1) { - // compare(min, v, true) - min = v - minSV = new SemVer(min, options) - } - } - }) - return min -} - -exports.minVersion = minVersion -function minVersion (range, loose) { - range = new Range(range, loose) - - var minver = new SemVer('0.0.0') - if (range.test(minver)) { - return minver - } - - minver = new SemVer('0.0.0-0') - if (range.test(minver)) { - return minver - } - - minver = null - for (var i = 0; i < range.set.length; ++i) { - var comparators = range.set[i] - - comparators.forEach(function (comparator) { - // Clone to avoid manipulating the comparator's semver object. - var compver = new SemVer(comparator.semver.version) - switch (comparator.operator) { - case '>': - if (compver.prerelease.length === 0) { - compver.patch++ - } else { - compver.prerelease.push(0) - } - compver.raw = compver.format() - /* fallthrough */ - case '': - case '>=': - if (!minver || gt(minver, compver)) { - minver = compver - } - break - case '<': - case '<=': - /* Ignore maximum versions */ - break - /* istanbul ignore next */ - default: - throw new Error('Unexpected operation: ' + comparator.operator) - } - }) - } - - if (minver && range.test(minver)) { - return minver - } - - return null -} - -exports.validRange = validRange -function validRange (range, options) { - try { - // Return '*' instead of '' so that truthiness works. - // This will throw if it's invalid anyway - return new Range(range, options).range || '*' - } catch (er) { - return null - } -} - -// Determine if version is less than all the versions possible in the range -exports.ltr = ltr -function ltr (version, range, options) { - return outside(version, range, '<', options) -} - -// Determine if version is greater than all the versions possible in the range. -exports.gtr = gtr -function gtr (version, range, options) { - return outside(version, range, '>', options) -} - -exports.outside = outside -function outside (version, range, hilo, options) { - version = new SemVer(version, options) - range = new Range(range, options) - - var gtfn, ltefn, ltfn, comp, ecomp - switch (hilo) { - case '>': - gtfn = gt - ltefn = lte - ltfn = lt - comp = '>' - ecomp = '>=' - break - case '<': - gtfn = lt - ltefn = gte - ltfn = gt - comp = '<' - ecomp = '<=' - break - default: - throw new TypeError('Must provide a hilo val of "<" or ">"') - } - - // If it satisifes the range it is not outside - if (satisfies(version, range, options)) { - return false - } - - // From now on, variable terms are as if we're in "gtr" mode. - // but note that everything is flipped for the "ltr" function. - - for (var i = 0; i < range.set.length; ++i) { - var comparators = range.set[i] - - var high = null - var low = null - - comparators.forEach(function (comparator) { - if (comparator.semver === ANY) { - comparator = new Comparator('>=0.0.0') - } - high = high || comparator - low = low || comparator - if (gtfn(comparator.semver, high.semver, options)) { - high = comparator - } else if (ltfn(comparator.semver, low.semver, options)) { - low = comparator - } - }) - - // If the edge version comparator has a operator then our version - // isn't outside it - if (high.operator === comp || high.operator === ecomp) { - return false - } - - // If the lowest version comparator has an operator and our version - // is less than it then it isn't higher than the range - if ((!low.operator || low.operator === comp) && - ltefn(version, low.semver)) { - return false - } else if (low.operator === ecomp && ltfn(version, low.semver)) { - return false - } - } - return true -} - -exports.prerelease = prerelease -function prerelease (version, options) { - var parsed = parse(version, options) - return (parsed && parsed.prerelease.length) ? parsed.prerelease : null -} - -exports.intersects = intersects -function intersects (r1, r2, options) { - r1 = new Range(r1, options) - r2 = new Range(r2, options) - return r1.intersects(r2) -} - -exports.coerce = coerce -function coerce (version, options) { - if (version instanceof SemVer) { - return version - } - - if (typeof version === 'number') { - version = String(version) - } - - if (typeof version !== 'string') { - return null - } - - options = options || {} - - var match = null - if (!options.rtl) { - match = version.match(safeRe[t.COERCE]) - } else { - // Find the right-most coercible string that does not share - // a terminus with a more left-ward coercible string. - // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4' - // - // Walk through the string checking with a /g regexp - // Manually set the index so as to pick up overlapping matches. - // Stop when we get a match that ends at the string end, since no - // coercible string can be more right-ward without the same terminus. - var next - while ((next = safeRe[t.COERCERTL].exec(version)) && - (!match || match.index + match[0].length !== version.length) - ) { - if (!match || - next.index + next[0].length !== match.index + match[0].length) { - match = next - } - safeRe[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length - } - // leave it in a clean state - safeRe[t.COERCERTL].lastIndex = -1 - } - - if (match === null) { - return null - } - - return parse(match[2] + - '.' + (match[3] || '0') + - '.' + (match[4] || '0'), options) -} - - -/***/ }), - -/***/ 770: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -module.exports = __nccwpck_require__(218); - - -/***/ }), - -/***/ 218: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -var net = __nccwpck_require__(278); -var tls = __nccwpck_require__(756); -var http = __nccwpck_require__(611); -var https = __nccwpck_require__(692); -var events = __nccwpck_require__(434); -var assert = __nccwpck_require__(613); -var util = __nccwpck_require__(23); - - -exports.httpOverHttp = httpOverHttp; -exports.httpsOverHttp = httpsOverHttp; -exports.httpOverHttps = httpOverHttps; -exports.httpsOverHttps = httpsOverHttps; - - -function httpOverHttp(options) { - var agent = new TunnelingAgent(options); - agent.request = http.request; - return agent; -} - -function httpsOverHttp(options) { - var agent = new TunnelingAgent(options); - agent.request = http.request; - agent.createSocket = createSecureSocket; - agent.defaultPort = 443; - return agent; -} - -function httpOverHttps(options) { - var agent = new TunnelingAgent(options); - agent.request = https.request; - return agent; -} - -function httpsOverHttps(options) { - var agent = new TunnelingAgent(options); - agent.request = https.request; - agent.createSocket = createSecureSocket; - agent.defaultPort = 443; - return agent; -} - - -function TunnelingAgent(options) { - var self = this; - self.options = options || {}; - self.proxyOptions = self.options.proxy || {}; - self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets; - self.requests = []; - self.sockets = []; - - self.on('free', function onFree(socket, host, port, localAddress) { - var options = toOptions(host, port, localAddress); - for (var i = 0, len = self.requests.length; i < len; ++i) { - var pending = self.requests[i]; - if (pending.host === options.host && pending.port === options.port) { - // Detect the request to connect same origin server, - // reuse the connection. - self.requests.splice(i, 1); - pending.request.onSocket(socket); - return; - } - } - socket.destroy(); - self.removeSocket(socket); - }); -} -util.inherits(TunnelingAgent, events.EventEmitter); - -TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) { - var self = this; - var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress)); - - if (self.sockets.length >= this.maxSockets) { - // We are over limit so we'll add it to the queue. - self.requests.push(options); - return; - } - - // If we are under maxSockets create a new one. - self.createSocket(options, function(socket) { - socket.on('free', onFree); - socket.on('close', onCloseOrRemove); - socket.on('agentRemove', onCloseOrRemove); - req.onSocket(socket); - - function onFree() { - self.emit('free', socket, options); - } - - function onCloseOrRemove(err) { - self.removeSocket(socket); - socket.removeListener('free', onFree); - socket.removeListener('close', onCloseOrRemove); - socket.removeListener('agentRemove', onCloseOrRemove); - } - }); -}; - -TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { - var self = this; - var placeholder = {}; - self.sockets.push(placeholder); - - var connectOptions = mergeOptions({}, self.proxyOptions, { - method: 'CONNECT', - path: options.host + ':' + options.port, - agent: false, - headers: { - host: options.host + ':' + options.port - } - }); - if (options.localAddress) { - connectOptions.localAddress = options.localAddress; - } - if (connectOptions.proxyAuth) { - connectOptions.headers = connectOptions.headers || {}; - connectOptions.headers['Proxy-Authorization'] = 'Basic ' + - new Buffer(connectOptions.proxyAuth).toString('base64'); - } - - debug('making CONNECT request'); - var connectReq = self.request(connectOptions); - connectReq.useChunkedEncodingByDefault = false; // for v0.6 - connectReq.once('response', onResponse); // for v0.6 - connectReq.once('upgrade', onUpgrade); // for v0.6 - connectReq.once('connect', onConnect); // for v0.7 or later - connectReq.once('error', onError); - connectReq.end(); - - function onResponse(res) { - // Very hacky. This is necessary to avoid http-parser leaks. - res.upgrade = true; - } - - function onUpgrade(res, socket, head) { - // Hacky. - process.nextTick(function() { - onConnect(res, socket, head); - }); - } - - function onConnect(res, socket, head) { - connectReq.removeAllListeners(); - socket.removeAllListeners(); - - if (res.statusCode !== 200) { - debug('tunneling socket could not be established, statusCode=%d', - res.statusCode); - socket.destroy(); - var error = new Error('tunneling socket could not be established, ' + - 'statusCode=' + res.statusCode); - error.code = 'ECONNRESET'; - options.request.emit('error', error); - self.removeSocket(placeholder); - return; - } - if (head.length > 0) { - debug('got illegal response body from proxy'); - socket.destroy(); - var error = new Error('got illegal response body from proxy'); - error.code = 'ECONNRESET'; - options.request.emit('error', error); - self.removeSocket(placeholder); - return; - } - debug('tunneling connection has established'); - self.sockets[self.sockets.indexOf(placeholder)] = socket; - return cb(socket); - } - - function onError(cause) { - connectReq.removeAllListeners(); - - debug('tunneling socket could not be established, cause=%s\n', - cause.message, cause.stack); - var error = new Error('tunneling socket could not be established, ' + - 'cause=' + cause.message); - error.code = 'ECONNRESET'; - options.request.emit('error', error); - self.removeSocket(placeholder); - } -}; - -TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { - var pos = this.sockets.indexOf(socket) - if (pos === -1) { - return; - } - this.sockets.splice(pos, 1); - - var pending = this.requests.shift(); - if (pending) { - // If we have pending requests and a socket gets closed a new one - // needs to be created to take over in the pool for the one that closed. - this.createSocket(pending, function(socket) { - pending.request.onSocket(socket); - }); - } -}; - -function createSecureSocket(options, cb) { - var self = this; - TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { - var hostHeader = options.request.getHeader('host'); - var tlsOptions = mergeOptions({}, self.options, { - socket: socket, - servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host - }); - - // 0 is dummy port for v0.6 - var secureSocket = tls.connect(0, tlsOptions); - self.sockets[self.sockets.indexOf(socket)] = secureSocket; - cb(secureSocket); - }); -} - - -function toOptions(host, port, localAddress) { - if (typeof host === 'string') { // since v0.10 - return { - host: host, - port: port, - localAddress: localAddress - }; - } - return host; // for v0.11 or later -} - -function mergeOptions(target) { - for (var i = 1, len = arguments.length; i < len; ++i) { - var overrides = arguments[i]; - if (typeof overrides === 'object') { - var keys = Object.keys(overrides); - for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { - var k = keys[j]; - if (overrides[k] !== undefined) { - target[k] = overrides[k]; - } - } - } - } - return target; -} - - -var debug; -if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { - debug = function() { - var args = Array.prototype.slice.call(arguments); - if (typeof args[0] === 'string') { - args[0] = 'TUNNEL: ' + args[0]; - } else { - args.unshift('TUNNEL:'); - } - console.error.apply(console, args); - } -} else { - debug = function() {}; -} -exports.debug = debug; // for test - - -/***/ }), - -/***/ 12: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -// Copyright The ORAS Authors. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.hash = hash; -const crypto = __importStar(__nccwpck_require__(982)); -const fs = __importStar(__nccwpck_require__(896)); -// hash computes SH256 of file at path. -function hash(path) { - return new Promise((resolve, reject) => { - const hash = crypto.createHash('sha256'); - const stream = fs.createReadStream(path); - stream.on('error', err => reject(err)); - stream.on('data', chunk => hash.update(chunk)); - stream.on('end', () => resolve(hash.digest('hex'))); - }); -} - - -/***/ }), - -/***/ 450: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -// Copyright The ORAS Authors. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getReleaseInfo = getReleaseInfo; -exports.mapPlatform = mapPlatform; -exports.mapArch = mapArch; -exports.getBinaryExtension = getBinaryExtension; -const os = __importStar(__nccwpck_require__(857)); -const releases_json_1 = __importDefault(__nccwpck_require__(116)); -// Get release info of a certain verion of ORAS CLI -function getReleaseInfo(version, url, checksum) { - if (url && checksum) { - // if customized ORAS CLI link and checksum are provided, version is ignored - return { - checksum: checksum, - url: url - }; - } - // sanity checks - if (url && !checksum) { - throw new Error("user provided url of customized ORAS CLI release but without SHA256 checksum"); - } - if (!url && checksum) { - throw new Error("user provided SHA256 checksum but without url"); - } - // get the official release - const releases = releases_json_1.default; - if (!(version in releases)) { - console.log(`official ORAS CLI releases does not contain version ${version}`); - throw new Error(`official ORAS CLI releases does not contain version ${version}`); - } - const platform = mapPlatform(); - const arch = mapArch(); - const download = releases[version][platform][arch]; - if (!download) { - throw new Error(`official ORAS CLI releases does not contain version ${version}, platform ${platform}, arch ${arch} is not supported`); - } - return download; -} -// getPlatform maps os.platform() to ORAS supported platforms. -function mapPlatform() { - const platform = os.platform(); - switch (platform) { - case 'linux': - return 'linux'; - case 'darwin': - return 'darwin'; - case 'win32': - return 'windows'; - case 'freebsd': - return 'freebsd'; - default: - throw new Error(`unsupported platform: ${platform}`); - } -} -// mapArch maps os.arch() to ORAS supported architectures. -function mapArch() { - const architecture = os.arch(); - switch (architecture) { - case 'x64': - return 'amd64'; - case 'arm64': - return 'arm64'; - case 'arm64': - return 'arm64'; - case 'ppc64': - return 'ppc64le'; - case 'riscv64': - return 'riscv64'; - case 's390x': - return 's390x'; - case 'arm': - return 'armv7'; - default: - throw new Error(`unsupported architecture: ${architecture}`); - } -} -function getBinaryExtension() { - const platform = mapPlatform(); - return platform === 'windows' ? '.exe' : ''; -} - - -/***/ }), - -/***/ 294: -/***/ (function(module, __unused_webpack_exports, __nccwpck_require__) { - -"use strict"; - -// Copyright The ORAS Authors. -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -const core = __importStar(__nccwpck_require__(484)); -const tc = __importStar(__nccwpck_require__(472)); -const release_1 = __nccwpck_require__(450); -const checksum_1 = __nccwpck_require__(12); -// setup sets up the ORAS CLI -function setup() { - return __awaiter(this, void 0, void 0, function* () { - try { - // inputs from user - const version = core.getInput('version'); - const url = core.getInput('url'); - const checksum = core.getInput('checksum').toLowerCase(); - // download ORAS CLI and validate checksum - const info = (0, release_1.getReleaseInfo)(version, url, checksum); - const download_url = info.url; - console.log(`downloading ORAS CLI from ${download_url}`); - const pathToTarball = yield tc.downloadTool(download_url); - console.log("downloading ORAS CLI completed"); - const actual_checksum = yield (0, checksum_1.hash)(pathToTarball); - if (actual_checksum !== info.checksum) { - throw new Error(`checksum of downloaded ORAS CLI ${actual_checksum} does not match expected checksum ${info.checksum}`); - } - console.log("successfully verified downloaded release checksum"); - // extract the tarball/zipball onto host runner - const extract = download_url.endsWith('.zip') ? tc.extractZip : tc.extractTar; - const pathToCLI = yield extract(pathToTarball); - // add `ORAS` to PATH - core.addPath(pathToCLI); - } - catch (e) { - if (e instanceof Error) { - core.setFailed(e); - } - else { - core.setFailed('unknown error during ORAS setup'); - } - } - }); -} -if (require.main === require.cache[eval('__filename')]) { - setup(); -} -module.exports = setup; - - -/***/ }), - -/***/ 613: -/***/ ((module) => { - -"use strict"; -module.exports = require("assert"); - -/***/ }), - -/***/ 317: -/***/ ((module) => { - -"use strict"; -module.exports = require("child_process"); - -/***/ }), - -/***/ 982: -/***/ ((module) => { - -"use strict"; -module.exports = require("crypto"); - -/***/ }), - -/***/ 434: -/***/ ((module) => { - -"use strict"; -module.exports = require("events"); - -/***/ }), - -/***/ 896: -/***/ ((module) => { - -"use strict"; -module.exports = require("fs"); - -/***/ }), - -/***/ 611: -/***/ ((module) => { - -"use strict"; -module.exports = require("http"); - -/***/ }), - -/***/ 692: -/***/ ((module) => { - -"use strict"; -module.exports = require("https"); - -/***/ }), - -/***/ 278: -/***/ ((module) => { - -"use strict"; -module.exports = require("net"); - -/***/ }), - -/***/ 857: -/***/ ((module) => { - -"use strict"; -module.exports = require("os"); - -/***/ }), - -/***/ 928: -/***/ ((module) => { - -"use strict"; -module.exports = require("path"); - -/***/ }), - -/***/ 203: -/***/ ((module) => { - -"use strict"; -module.exports = require("stream"); - -/***/ }), - -/***/ 193: -/***/ ((module) => { - -"use strict"; -module.exports = require("string_decoder"); - -/***/ }), - -/***/ 557: -/***/ ((module) => { - -"use strict"; -module.exports = require("timers"); - -/***/ }), - -/***/ 756: -/***/ ((module) => { - -"use strict"; -module.exports = require("tls"); - -/***/ }), - -/***/ 23: -/***/ ((module) => { - -"use strict"; -module.exports = require("util"); - -/***/ }), - -/***/ 116: -/***/ ((module) => { - -"use strict"; -module.exports = /*#__PURE__*/JSON.parse('{"1.0.0":{"darwin":{"amd64":{"checksum":"3bce1a83fb518c7bc0afac685601835e5234daa88b3074aafecf768ec80229fe","url":"https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_darwin_amd64.tar.gz"},"arm64":{"checksum":"0168a0b8289c202b9dcd57fb4fa3638610245fd5574032e18b1196a20e4100d1","url":"https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_darwin_arm64.tar.gz"}},"linux":{"amd64":{"checksum":"8533c9ea1e5a0d5eb1dfc5094c0e8ef106d15462f8a119077548f88937ed2133","url":"https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_linux_amd64.tar.gz"},"arm64":{"checksum":"332ba74c043ed590ab0fb61656e6d274243e915cb150d48be4ad64ed591dcc84","url":"https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_linux_arm64.tar.gz"},"armv7":{"checksum":"c626893bed0aa26eb37113e11c1bc34552fa213f26af85ef14100a366e6c7c06","url":"https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_linux_armv7.tar.gz"},"s390x":{"checksum":"2339f972cbbaa7dc4fed0795c2c37a6124ee524c6e0ed62919c3a0097dd57442","url":"https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_linux_s390x.tar.gz"}},"windows":{"amd64":{"checksum":"e47e91fbc72cfe4e5c89321ebc5af953bcafa8a9ecdb0b4fbd53fd136578e03e","url":"https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_windows_amd64.zip"}}},"1.0.1":{"darwin":{"amd64":{"checksum":"34f11536dc191f9ad4288649f97ef69b478548f891c932c9732307f064ed3331","url":"https://github.com/oras-project/oras/releases/download/v1.0.1/oras_1.0.1_darwin_amd64.tar.gz"},"arm64":{"checksum":"faa0181799f0e0295d7df188441a1f8869da78a50da4cf7fb03cf35dc746b178","url":"https://github.com/oras-project/oras/releases/download/v1.0.1/oras_1.0.1_darwin_arm64.tar.gz"}},"linux":{"amd64":{"checksum":"6b51b87360d373dd3c19b91d2627d2efd320513380a878b6f06702f72fe8c5ab","url":"https://github.com/oras-project/oras/releases/download/v1.0.1/oras_1.0.1_linux_amd64.tar.gz"},"arm64":{"checksum":"ae1884ae17b7ae7ce694c63d51a52ab0dac1f2c0ca384163455c1e96c5663db0","url":"https://github.com/oras-project/oras/releases/download/v1.0.1/oras_1.0.1_linux_arm64.tar.gz"},"armv7":{"checksum":"f31bc8eab3ed2f368056df3eb5761f40d90dfbd8272bec58d83961f41ebbf3fb","url":"https://github.com/oras-project/oras/releases/download/v1.0.1/oras_1.0.1_linux_armv7.tar.gz"},"s390x":{"checksum":"2a63313a99dd45c448c022a303941e1f5b47b8fdf3493c593b026de384a284b6","url":"https://github.com/oras-project/oras/releases/download/v1.0.1/oras_1.0.1_linux_s390x.tar.gz"}},"windows":{"amd64":{"checksum":"0b9c50eda7aa384d435b31710264d08c77a5e83ee6560ee6e13ca46a6acec1ba","url":"https://github.com/oras-project/oras/releases/download/v1.0.1/oras_1.0.1_windows_amd64.zip"}}},"1.1.0":{"darwin":{"amd64":{"checksum":"f8ac5dea53dd9331cf080f1025f0612e7b07c5af864a4fd609f97d8946508e45","url":"https://github.com/oras-project/oras/releases/download/v1.1.0/oras_1.1.0_darwin_amd64.tar.gz"},"arm64":{"checksum":"d52d3140b0bb9f7d7e31dcbf2a513f971413769c11f7d7a5599e76cc98e45007","url":"https://github.com/oras-project/oras/releases/download/v1.1.0/oras_1.1.0_darwin_arm64.tar.gz"}},"linux":{"amd64":{"checksum":"e09e85323b24ccc8209a1506f142e3d481e6e809018537c6b3db979c891e6ad7","url":"https://github.com/oras-project/oras/releases/download/v1.1.0/oras_1.1.0_linux_amd64.tar.gz"},"arm64":{"checksum":"e450b081f67f6fda2f16b7046075c67c9a53f3fda92fd20ecc59873b10477ab4","url":"https://github.com/oras-project/oras/releases/download/v1.1.0/oras_1.1.0_linux_arm64.tar.gz"},"armv7":{"checksum":"def86e7f787f8deee50bb57d1c155201099f36aa0c6700d3b525e69ddf8ae49b","url":"https://github.com/oras-project/oras/releases/download/v1.1.0/oras_1.1.0_linux_armv7.tar.gz"},"s390x":{"checksum":"067600d61d5d7c23f7bd184cff168ad558d48bed99f6735615bce0e1068b1d77","url":"https://github.com/oras-project/oras/releases/download/v1.1.0/oras_1.1.0_linux_s390x.tar.gz"}},"windows":{"amd64":{"checksum":"2ac83631181d888445e50784a5f760f7f9d97fba3c089e79b68580c496fe68cf","url":"https://github.com/oras-project/oras/releases/download/v1.1.0/oras_1.1.0_windows_amd64.zip"}}},"1.2.0":{"darwin":{"amd64":{"checksum":"58a8494f5bce778e21d89d90c82e05bd128e7bb9d84dd190d154f8afdbf30541","url":"https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_darwin_amd64.tar.gz"},"arm64":{"checksum":"fea801b0e02c5342e749ef2860e1faebae03e93ae50e33ed40d227e089cf9435","url":"https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_darwin_arm64.tar.gz"}},"freebsd":{"amd64":{"checksum":"73d3a292dce1f0985df084ff50b38ab2deacbcb01902ceebc008d5bea2f2dee9","url":"https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_freebsd_amd64.tar.gz"}},"linux":{"amd64":{"checksum":"5b3f1cbb86d869eee68120b9b45b9be983f3738442f87ee5f06b00edd0bab336","url":"https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_linux_amd64.tar.gz"},"arm64":{"checksum":"27df680a39fc2fcedc549cb737891623bc696c9a92a03fd341e9356a35836bae","url":"https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_linux_arm64.tar.gz"},"armv7":{"checksum":"054685703cb0c66e51f8143e3bbd3976e217d3d595f0593db43b6dd451e43329","url":"https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_linux_armv7.tar.gz"},"ppc64le":{"checksum":"af5ee50434c7263b1460978af83e7690570e8999678fae9db6c5dbb38467fed5","url":"https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_linux_ppc64le.tar.gz"},"riscv64":{"checksum":"42c7e5f35b72492dd3ee7c68edad0c0da939b39e6ead7f682329015b283e96f8","url":"https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_linux_riscv64.tar.gz"},"s390x":{"checksum":"69d2e842e592f4d990b33d58ff3c298c4e4c0921dd54ad9e65e3b6dd9427a750","url":"https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_linux_s390x.tar.gz"}},"windows":{"amd64":{"checksum":"f110b42a20bd4728fb0428d36ee6ed10de58cd986bba8e95ecc4f0272cb017ba","url":"https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_windows_amd64.zip"}}}}'); - -/***/ }) - -/******/ }); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __nccwpck_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ // no module.id needed -/******/ // no module.loaded needed -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ var threw = true; -/******/ try { -/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __nccwpck_require__); -/******/ threw = false; -/******/ } finally { -/******/ if(threw) delete __webpack_module_cache__[moduleId]; -/******/ } -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/************************************************************************/ -/******/ /* webpack/runtime/compat */ -/******/ -/******/ if (typeof __nccwpck_require__ !== 'undefined') __nccwpck_require__.ab = __dirname + "/"; -/******/ -/************************************************************************/ -/******/ -/******/ // startup -/******/ // Load entry module and return exports -/******/ // This entry module is referenced by other modules so it can't be inlined -/******/ var __webpack_exports__ = __nccwpck_require__(294); -/******/ module.exports = __webpack_exports__; -/******/ -/******/ })() -; \ No newline at end of file diff --git a/.github/actions/setup-oras-1.2.1/dist/licenses.txt b/.github/actions/setup-oras-1.2.1/dist/licenses.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/actions/setup-oras-1.2.1/package-lock.json b/.github/actions/setup-oras-1.2.1/package-lock.json deleted file mode 100644 index 10393f885..000000000 --- a/.github/actions/setup-oras-1.2.1/package-lock.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "name": "setup-oras", - "version": "0.1.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "setup-oras", - "version": "0.1.0", - "license": "Apache-2.0", - "dependencies": { - "@actions/core": "^1.11.1", - "@actions/tool-cache": "^2.0.1", - "@types/node": "^22.7.7", - "@vercel/ncc": "^0.38.2", - "typescript": "^5.6.3" - } - }, - "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==", - "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==", - "dependencies": { - "@actions/io": "^1.0.1" - } - }, - "node_modules/@actions/http-client": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.1.1.tgz", - "integrity": "sha512-qhrkRMB40bbbLo7gF+0vu+X+UawOvQQqNAA/5Unx774RS8poaOhThDOG6BGmxvAnxhQnDp2BG/ZUm65xZILTpw==", - "dependencies": { - "tunnel": "^0.0.6" - } - }, - "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==" - }, - "node_modules/@actions/tool-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@actions/tool-cache/-/tool-cache-2.0.1.tgz", - "integrity": "sha512-iPU+mNwrbA8jodY8eyo/0S/QqCKDajiR8OxWTnSk/SnYg0sj8Hp4QcUEVC1YFpHWXtrfbQrE13Jz4k4HXJQKcA==", - "dependencies": { - "@actions/core": "^1.2.6", - "@actions/exec": "^1.0.0", - "@actions/http-client": "^2.0.1", - "@actions/io": "^1.1.1", - "semver": "^6.1.0", - "uuid": "^3.3.2" - } - }, - "node_modules/@actions/tool-cache/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/@types/node": { - "version": "22.7.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.7.tgz", - "integrity": "sha512-SRxCrrg9CL/y54aiMCG3edPKdprgMVGDXjA3gB8UmmBW5TcXzRUYAh8EWzTnSJFAd1rgImPELza+A3bJ+qxz8Q==", - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "node_modules/@vercel/ncc": { - "version": "0.38.2", - "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.2.tgz", - "integrity": "sha512-3yel3jaxUg9pHBv4+KeC9qlbdZPug+UMtUOlhvpDYCMSgcNSrS2Hv1LoqMsOV7hf2lYscx+BESfJOIla1WsmMQ==", - "bin": { - "ncc": "dist/ncc/cli.js" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" - } - }, - "node_modules/typescript": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", - "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "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==" - } - } -} diff --git a/.github/actions/setup-oras-1.2.1/package.json b/.github/actions/setup-oras-1.2.1/package.json deleted file mode 100644 index f88839958..000000000 --- a/.github/actions/setup-oras-1.2.1/package.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "name": "setup-oras", - "version": "0.1.0", - "description": "Set up your GitHub Actions workflow with a specific version of ORAS", - "scripts": { - "build": "ncc build src/setup.ts" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/oras-project/setup-oras.git" - }, - "keywords": [], - "author": "ORAS", - "license": "Apache-2.0", - "bugs": { - "url": "https://github.com/oras-project/setup-oras/issues" - }, - "homepage": "https://github.com/oras-project/setup-oras#readme", - "dependencies": { - "@actions/core": "^1.11.1", - "@actions/tool-cache": "^2.0.1", - "@types/node": "^22.7.7", - "@vercel/ncc": "^0.38.2", - "typescript": "^5.6.3" - } -} diff --git a/.github/actions/setup-oras-1.2.1/src/lib/checksum.ts b/.github/actions/setup-oras-1.2.1/src/lib/checksum.ts deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/actions/setup-oras-1.2.1/src/lib/data/releases.json b/.github/actions/setup-oras-1.2.1/src/lib/data/releases.json deleted file mode 100644 index af8726b45..000000000 --- a/.github/actions/setup-oras-1.2.1/src/lib/data/releases.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "1.0.0": { - "darwin": { - "amd64": { - "checksum": "3bce1a83fb518c7bc0afac685601835e5234daa88b3074aafecf768ec80229fe", - "url": "https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_darwin_amd64.tar.gz" - }, - "arm64": { - "checksum": "0168a0b8289c202b9dcd57fb4fa3638610245fd5574032e18b1196a20e4100d1", - "url": "https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_darwin_arm64.tar.gz" - } - }, - "linux": { - "amd64": { - "checksum": "8533c9ea1e5a0d5eb1dfc5094c0e8ef106d15462f8a119077548f88937ed2133", - "url": "https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_linux_amd64.tar.gz" - }, - "arm64": { - "checksum": "332ba74c043ed590ab0fb61656e6d274243e915cb150d48be4ad64ed591dcc84", - "url": "https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_linux_arm64.tar.gz" - }, - "armv7": { - "checksum": "c626893bed0aa26eb37113e11c1bc34552fa213f26af85ef14100a366e6c7c06", - "url": "https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_linux_armv7.tar.gz" - }, - "s390x": { - "checksum": "2339f972cbbaa7dc4fed0795c2c37a6124ee524c6e0ed62919c3a0097dd57442", - "url": "https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_linux_s390x.tar.gz" - } - }, - "windows": { - "amd64": { - "checksum": "e47e91fbc72cfe4e5c89321ebc5af953bcafa8a9ecdb0b4fbd53fd136578e03e", - "url": "https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_windows_amd64.zip" - } - } - }, - "1.0.1": { - "darwin": { - "amd64": { - "checksum": "34f11536dc191f9ad4288649f97ef69b478548f891c932c9732307f064ed3331", - "url": "https://github.com/oras-project/oras/releases/download/v1.0.1/oras_1.0.1_darwin_amd64.tar.gz" - }, - "arm64": { - "checksum": "faa0181799f0e0295d7df188441a1f8869da78a50da4cf7fb03cf35dc746b178", - "url": "https://github.com/oras-project/oras/releases/download/v1.0.1/oras_1.0.1_darwin_arm64.tar.gz" - } - }, - "linux": { - "amd64": { - "checksum": "6b51b87360d373dd3c19b91d2627d2efd320513380a878b6f06702f72fe8c5ab", - "url": "https://github.com/oras-project/oras/releases/download/v1.0.1/oras_1.0.1_linux_amd64.tar.gz" - }, - "arm64": { - "checksum": "ae1884ae17b7ae7ce694c63d51a52ab0dac1f2c0ca384163455c1e96c5663db0", - "url": "https://github.com/oras-project/oras/releases/download/v1.0.1/oras_1.0.1_linux_arm64.tar.gz" - }, - "armv7": { - "checksum": "f31bc8eab3ed2f368056df3eb5761f40d90dfbd8272bec58d83961f41ebbf3fb", - "url": "https://github.com/oras-project/oras/releases/download/v1.0.1/oras_1.0.1_linux_armv7.tar.gz" - }, - "s390x": { - "checksum": "2a63313a99dd45c448c022a303941e1f5b47b8fdf3493c593b026de384a284b6", - "url": "https://github.com/oras-project/oras/releases/download/v1.0.1/oras_1.0.1_linux_s390x.tar.gz" - } - }, - "windows": { - "amd64": { - "checksum": "0b9c50eda7aa384d435b31710264d08c77a5e83ee6560ee6e13ca46a6acec1ba", - "url": "https://github.com/oras-project/oras/releases/download/v1.0.1/oras_1.0.1_windows_amd64.zip" - } - } - }, - "1.1.0": { - "darwin": { - "amd64": { - "checksum": "f8ac5dea53dd9331cf080f1025f0612e7b07c5af864a4fd609f97d8946508e45", - "url": "https://github.com/oras-project/oras/releases/download/v1.1.0/oras_1.1.0_darwin_amd64.tar.gz" - }, - "arm64": { - "checksum": "d52d3140b0bb9f7d7e31dcbf2a513f971413769c11f7d7a5599e76cc98e45007", - "url": "https://github.com/oras-project/oras/releases/download/v1.1.0/oras_1.1.0_darwin_arm64.tar.gz" - } - }, - "linux": { - "amd64": { - "checksum": "e09e85323b24ccc8209a1506f142e3d481e6e809018537c6b3db979c891e6ad7", - "url": "https://github.com/oras-project/oras/releases/download/v1.1.0/oras_1.1.0_linux_amd64.tar.gz" - }, - "arm64": { - "checksum": "e450b081f67f6fda2f16b7046075c67c9a53f3fda92fd20ecc59873b10477ab4", - "url": "https://github.com/oras-project/oras/releases/download/v1.1.0/oras_1.1.0_linux_arm64.tar.gz" - }, - "armv7": { - "checksum": "def86e7f787f8deee50bb57d1c155201099f36aa0c6700d3b525e69ddf8ae49b", - "url": "https://github.com/oras-project/oras/releases/download/v1.1.0/oras_1.1.0_linux_armv7.tar.gz" - }, - "s390x": { - "checksum": "067600d61d5d7c23f7bd184cff168ad558d48bed99f6735615bce0e1068b1d77", - "url": "https://github.com/oras-project/oras/releases/download/v1.1.0/oras_1.1.0_linux_s390x.tar.gz" - } - }, - "windows": { - "amd64": { - "checksum": "2ac83631181d888445e50784a5f760f7f9d97fba3c089e79b68580c496fe68cf", - "url": "https://github.com/oras-project/oras/releases/download/v1.1.0/oras_1.1.0_windows_amd64.zip" - } - } - }, - "1.2.0": { - "darwin": { - "amd64": { - "checksum": "58a8494f5bce778e21d89d90c82e05bd128e7bb9d84dd190d154f8afdbf30541", - "url": "https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_darwin_amd64.tar.gz" - }, - "arm64": { - "checksum": "fea801b0e02c5342e749ef2860e1faebae03e93ae50e33ed40d227e089cf9435", - "url": "https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_darwin_arm64.tar.gz" - } - }, - "freebsd": { - "amd64": { - "checksum": "73d3a292dce1f0985df084ff50b38ab2deacbcb01902ceebc008d5bea2f2dee9", - "url": "https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_freebsd_amd64.tar.gz" - } - }, - "linux": { - "amd64": { - "checksum": "5b3f1cbb86d869eee68120b9b45b9be983f3738442f87ee5f06b00edd0bab336", - "url": "https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_linux_amd64.tar.gz" - }, - "arm64": { - "checksum": "27df680a39fc2fcedc549cb737891623bc696c9a92a03fd341e9356a35836bae", - "url": "https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_linux_arm64.tar.gz" - }, - "armv7": { - "checksum": "054685703cb0c66e51f8143e3bbd3976e217d3d595f0593db43b6dd451e43329", - "url": "https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_linux_armv7.tar.gz" - }, - "ppc64le": { - "checksum": "af5ee50434c7263b1460978af83e7690570e8999678fae9db6c5dbb38467fed5", - "url": "https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_linux_ppc64le.tar.gz" - }, - "riscv64": { - "checksum": "42c7e5f35b72492dd3ee7c68edad0c0da939b39e6ead7f682329015b283e96f8", - "url": "https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_linux_riscv64.tar.gz" - }, - "s390x": { - "checksum": "69d2e842e592f4d990b33d58ff3c298c4e4c0921dd54ad9e65e3b6dd9427a750", - "url": "https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_linux_s390x.tar.gz" - } - }, - "windows": { - "amd64": { - "checksum": "f110b42a20bd4728fb0428d36ee6ed10de58cd986bba8e95ecc4f0272cb017ba", - "url": "https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_windows_amd64.zip" - } - } - } -} \ No newline at end of file diff --git a/.github/actions/setup-oras-1.2.1/src/lib/release.ts b/.github/actions/setup-oras-1.2.1/src/lib/release.ts deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/actions/setup-oras-1.2.1/src/setup.ts b/.github/actions/setup-oras-1.2.1/src/setup.ts deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/actions/setup-oras-1.2.1/tsconfig.json b/.github/actions/setup-oras-1.2.1/tsconfig.json deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/actions/trivy-action-0.2.1/.gitignore b/.github/actions/trivy-action-0.2.1/.gitignore deleted file mode 100644 index 9f11b755a..000000000 --- a/.github/actions/trivy-action-0.2.1/.gitignore +++ /dev/null @@ -1 +0,0 @@ -.idea/ diff --git a/.github/actions/trivy-action-0.2.1/Dockerfile b/.github/actions/trivy-action-0.2.1/Dockerfile deleted file mode 100644 index 4549ccaa9..000000000 --- a/.github/actions/trivy-action-0.2.1/Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM aquasec/trivy:0.21.2 -COPY entrypoint.sh / -RUN apk --no-cache add bash -RUN chmod +x /entrypoint.sh -ENTRYPOINT ["/entrypoint.sh"] diff --git a/.github/actions/trivy-action-0.2.1/LICENSE b/.github/actions/trivy-action-0.2.1/LICENSE deleted file mode 100644 index 261eeb9e9..000000000 --- a/.github/actions/trivy-action-0.2.1/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/.github/actions/trivy-action-0.2.1/README.md b/.github/actions/trivy-action-0.2.1/README.md deleted file mode 100644 index 3452f9265..000000000 --- a/.github/actions/trivy-action-0.2.1/README.md +++ /dev/null @@ -1,411 +0,0 @@ -# Trivy Action - -> [GitHub Action](https://github.com/features/actions) for [Trivy](https://github.com/aquasecurity/trivy) - -[![GitHub Release][release-img]][release] -[![GitHub Marketplace][marketplace-img]][marketplace] -[![License][license-img]][license] - -![](docs/images/trivy-action.png) - -## Table of Contents - -- [Usage](#usage) - - [Workflow](#workflow) - - [Docker Image Scanning](#using-trivy-with-github-code-scanning) - - [Git Repository Scanning](#using-trivy-to-scan-your-git-repo) -- [Customizing](#customizing) - - [Inputs](#inputs) - -## Usage - -### Workflow - -```yaml -name: build -on: - push: - branches: - - master - pull_request: -jobs: - build: - name: Build - runs-on: ubuntu-18.04 - steps: - - name: Checkout code - uses: actions/checkout@v2 - - - name: Build an image from Dockerfile - run: | - docker build -t docker.io/my-organization/my-app:${{ github.sha }} . - - - name: Run Trivy vulnerability scanner - uses: aquasecurity/trivy-action@master - with: - image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}' - format: 'table' - exit-code: '1' - ignore-unfixed: true - vuln-type: 'os,library' - severity: 'CRITICAL,HIGH' -``` - -### Using Trivy with GitHub Code Scanning -If you have [GitHub code scanning](https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning) available you can use Trivy as a scanning tool as follows: -```yaml -name: build -on: - push: - branches: - - master - pull_request: -jobs: - build: - name: Build - runs-on: ubuntu-18.04 - steps: - - name: Checkout code - uses: actions/checkout@v2 - - - name: Build an image from Dockerfile - run: | - docker build -t docker.io/my-organization/my-app:${{ github.sha }} . - - - name: Run Trivy vulnerability scanner - uses: aquasecurity/trivy-action@master - with: - image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}' - format: 'template' - template: '@/contrib/sarif.tpl' - output: 'trivy-results.sarif' - - - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@v1 - with: - sarif_file: 'trivy-results.sarif' -``` - -You can find a more in-depth example here: https://github.com/aquasecurity/trivy-sarif-demo/blob/master/.github/workflows/scan.yml - -If you would like to upload SARIF results to GitHub Code scanning even upon a non zero exit code from Trivy Scan, you can add the following to your upload step: -```yaml -name: build -on: - push: - branches: - - master - pull_request: -jobs: - build: - name: Build - runs-on: ubuntu-18.04 - steps: - - name: Checkout code - uses: actions/checkout@v2 - - - name: Build an image from Dockerfile - run: | - docker build -t docker.io/my-organization/my-app:${{ github.sha }} . - - - name: Run Trivy vulnerability scanner - uses: aquasecurity/trivy-action@master - with: - image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}' - format: 'template' - template: '@/contrib/sarif.tpl' - output: 'trivy-results.sarif' - - - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@v1 - if: always() - with: - sarif_file: 'trivy-results.sarif' -``` - -See this for more details: https://docs.github.com/en/actions/learn-github-actions/expressions#always - -### Using Trivy to scan your Git repo -It's also possible to scan your git repos with Trivy's built-in repo scan. This can be handy if you want to run Trivy as a build time check on each PR that gets opened in your repo. This helps you identify potential vulnerablites that might get introduced with each PR. - -If you have [GitHub code scanning](https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning) available you can use Trivy as a scanning tool as follows: -```yaml -name: build -on: - push: - branches: - - master - pull_request: -jobs: - build: - name: Build - runs-on: ubuntu-18.04 - steps: - - name: Checkout code - uses: actions/checkout@v2 - - - name: Run Trivy vulnerability scanner in repo mode - uses: aquasecurity/trivy-action@master - with: - scan-type: 'fs' - ignore-unfixed: true - format: 'template' - template: '@/contrib/sarif.tpl' - output: 'trivy-results.sarif' - severity: 'CRITICAL' - - - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@v1 - with: - sarif_file: 'trivy-results.sarif' -``` - -### Using Trivy to scan your rootfs directories -It's also possible to scan your rootfs directories with Trivy's built-in rootfs scan. This can be handy if you want to run Trivy as a build time check on each PR that gets opened in your repo. This helps you identify potential vulnerablites that might get introduced with each PR. - -If you have [GitHub code scanning](https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning) available you can use Trivy as a scanning tool as follows: -```yaml -name: build -on: - push: - branches: - - master - pull_request: -jobs: - build: - name: Build - runs-on: ubuntu-18.04 - steps: - - name: Checkout code - uses: actions/checkout@v2 - - - name: Run Trivy vulnerability scanner with rootfs command - uses: aquasecurity/trivy-action@master - with: - scan-type: 'rootfs' - scan-ref: 'rootfs-example-binary' - ignore-unfixed: true - format: 'template' - template: '@/contrib/sarif.tpl' - output: 'trivy-results.sarif' - severity: 'CRITICAL' - - - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@v1 - with: - sarif_file: 'trivy-results.sarif' -``` - -### Using Trivy to scan Infrastucture as Code -It's also possible to scan your IaC repos with Trivy's built-in repo scan. This can be handy if you want to run Trivy as a build time check on each PR that gets opened in your repo. This helps you identify potential vulnerablites that might get introduced with each PR. - -If you have [GitHub code scanning](https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning) available you can use Trivy as a scanning tool as follows: -```yaml -name: build -on: - push: - branches: - - master - pull_request: -jobs: - build: - name: Build - runs-on: ubuntu-18.04 - steps: - - name: Checkout code - uses: actions/checkout@v2 - - - name: Run Trivy vulnerability scanner in IaC mode - uses: aquasecurity/trivy-action@master - with: - scan-type: 'config' - hide-progress: false - format: 'table' - exit-code: '1' - ignore-unfixed: true - severity: 'CRITICAL,HIGH' - - - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@v1 - with: - sarif_file: 'trivy-results.sarif' -``` - -### Using Trivy to scan your private registry -It's also possible to scan your private registry with Trivy's built-in image scan. All you have to do is set ENV vars. - -#### Docker Hub registry -Docker Hub needs `TRIVY_USERNAME` and `TRIVY_PASSWORD`. -You don't need to set ENV vars when downloading from a public repository. -```yaml -name: build -on: - push: - branches: - - master - pull_request: -jobs: - build: - name: Build - runs-on: ubuntu-18.04 - steps: - - name: Checkout code - uses: actions/checkout@v2 - - - name: Run Trivy vulnerability scanner - uses: aquasecurity/trivy-action@master - with: - image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}' - format: 'template' - template: '@/contrib/sarif.tpl' - output: 'trivy-results.sarif' - env: - TRIVY_USERNAME: Username - TRIVY_PASSWORD: Password - - - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@v1 - with: - sarif_file: 'trivy-results.sarif' -``` - -#### AWS ECR (Elastic Container Registry) -Trivy uses AWS SDK. You don't need to install `aws` CLI tool. -You can use [AWS CLI's ENV Vars][env-var]. - -[env-var]: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html -```yaml -name: build -on: - push: - branches: - - master - pull_request: -jobs: - build: - name: Build - runs-on: ubuntu-18.04 - steps: - - name: Checkout code - uses: actions/checkout@v2 - - - name: Run Trivy vulnerability scanner - uses: aquasecurity/trivy-action@master - with: - image-ref: 'aws_account_id.dkr.ecr.region.amazonaws.com/imageName:${{ github.sha }}' - format: 'template' - template: '@/contrib/sarif.tpl' - output: 'trivy-results.sarif' - env: - AWS_ACCESS_KEY_ID: key_id - AWS_SECRET_ACCESS_KEY: access_key - AWS_DEFAULT_REGION: us-west-2 - - - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@v1 - with: - sarif_file: 'trivy-results.sarif' -``` - -#### GCR (Google Container Registry) -Trivy uses Google Cloud SDK. You don't need to install `gcloud` command. - -If you want to use target project's repository, you can set it via `GOOGLE_APPLICATION_CREDENTIAL`. -```yaml -name: build -on: - push: - branches: - - master - pull_request: -jobs: - build: - name: Build - runs-on: ubuntu-18.04 - steps: - - name: Checkout code - uses: actions/checkout@v2 - - - name: Run Trivy vulnerability scanner - uses: aquasecurity/trivy-action@master - with: - image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}' - format: 'template' - template: '@/contrib/sarif.tpl' - output: 'trivy-results.sarif' - env: - GOOGLE_APPLICATION_CREDENTIAL: /path/to/credential.json - - - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@v1 - with: - sarif_file: 'trivy-results.sarif' -``` - -#### Self-Hosted -BasicAuth server needs `TRIVY_USERNAME` and `TRIVY_PASSWORD`. -if you want to use 80 port, use NonSSL `TRIVY_NON_SSL=true` -```yaml -name: build -on: - push: - branches: - - master - pull_request: -jobs: - build: - name: Build - runs-on: ubuntu-18.04 - steps: - - name: Checkout code - uses: actions/checkout@v2 - - - name: Run Trivy vulnerability scanner - uses: aquasecurity/trivy-action@master - with: - image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}' - format: 'template' - template: '@/contrib/sarif.tpl' - output: 'trivy-results.sarif' - env: - TRIVY_USERNAME: Username - TRIVY_PASSWORD: Password - - - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@v1 - with: - sarif_file: 'trivy-results.sarif' -``` - -## Customizing - -### inputs - -Following inputs can be used as `step.with` keys: - -| Name | Type | Default | Description | -|------------------|---------|------------------------------------|-----------------------------------------------| -| `scan-type` | String | `image` | Scan type, e.g. `image` or `fs`| -| `input` | String | | Tar reference, e.g. `alpine-latest.tar` | -| `image-ref` | String | | Image reference, e.g. `alpine:3.10.2` | -| `scan-ref` | String | `/github/workspace/` | Scan reference, e.g. `/github/workspace/` or `.`| -| `format` | String | `table` | Output format (`table`, `json`, `template`) | -| `template` | String | | Output template (`@/contrib/sarif.tpl`, `@/contrib/gitlab.tpl`, `@/contrib/junit.tpl`)| -| `output` | String | | Save results to a file | -| `exit-code` | String | `0` | Exit code when specified vulnerabilities are found | -| `ignore-unfixed` | Boolean | false | Ignore unpatched/unfixed vulnerabilities | -| `vuln-type` | String | `os,library` | Vulnerability types (os,library) | -| `severity` | String | `UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL` | Severities of vulnerabilities to scanned for and displayed | -| `skip-dirs` | String | | Comma separated list of directories where traversal is skipped | -| `skip-files` | String | | Comma separated list of files where traversal is skipped | -| `cache-dir` | String | | Cache directory | -| `timeout` | String | `2m0s` | Scan timeout duration | -| `ignore-policy` | String | | Filter vulnerabilities with OPA rego language | -| `list-all-pkgs` | String | | Output all packages regardless of vulnerability | - -[release]: https://github.com/aquasecurity/trivy-action/releases/latest -[release-img]: https://img.shields.io/github/release/aquasecurity/trivy-action.svg?logo=github -[marketplace]: https://github.com/marketplace/actions/aqua-security-trivy -[marketplace-img]: https://img.shields.io/badge/marketplace-trivy--action-blue?logo=github -[license]: https://github.com/aquasecurity/trivy-action/blob/master/LICENSE -[license-img]: https://img.shields.io/github/license/aquasecurity/trivy-action diff --git a/.github/actions/trivy-action-0.2.1/action.yaml b/.github/actions/trivy-action-0.2.1/action.yaml deleted file mode 100644 index 403fb49c6..000000000 --- a/.github/actions/trivy-action-0.2.1/action.yaml +++ /dev/null @@ -1,97 +0,0 @@ -name: 'Aqua Security Trivy' -description: 'Scans container images for vulnerabilities with Trivy' -author: 'Aqua Security' -inputs: - scan-type: - description: 'Scan type to use for scanning vulnerability' - required: false - default: 'image' - image-ref: - description: 'image reference(for backward compatibility)' - required: true - input: - description: 'reference of tar file to scan' - required: false - default: '' - scan-ref: - description: 'Scan reference' - required: false - default: '.' - exit-code: - description: 'exit code when vulnerabilities were found' - required: false - default: '0' - ignore-unfixed: - description: 'ignore unfixed vulnerabilities' - required: false - default: 'false' - vuln-type: - description: 'comma-separated list of vulnerability types (os,library)' - required: false - default: 'os,library' - severity: - description: 'severities of vulnerabilities to be displayed' - required: false - default: 'UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL' - format: - description: 'output format (table, json, template)' - required: false - default: 'table' - template: - description: 'use an existing template for rendering output (@/contrib/sarif.tpl, @/contrib/gitlab.tpl, @/contrib/junit.tpl' - required: false - default: '' - output: - description: 'writes results to a file with the specified file name' - required: false - default: '' - skip-dirs: - description: 'comma separated list of directories where traversal is skipped' - required: false - default: '' - skip-files: - description: 'comma separated list of files to be skipped' - required: false - default: '' - cache-dir: - description: 'specify where the cache is stored' - required: false - default: '' - timeout: - description: 'timeout (default 5m0s)' - required: false - default: '' - ignore-policy: - description: 'filter vulnerabilities with OPA rego language' - required: false - default: '' - hide-progress: - description: 'hide progress output' - required: false - default: 'true' - list-all-pkgs: - description: 'output all packages regardless of vulnerability' - required: false - default: 'false' -runs: - using: 'docker' - image: "Dockerfile" - args: - - '-a ${{ inputs.scan-type }}' - - '-b ${{ inputs.format }}' - - '-c ${{ inputs.template }}' - - '-d ${{ inputs.exit-code }}' - - '-e ${{ inputs.ignore-unfixed }}' - - '-f ${{ inputs.vuln-type }}' - - '-g ${{ inputs.severity }}' - - '-h ${{ inputs.output }}' - - '-i ${{ inputs.image-ref }}' - - '-j ${{ inputs.scan-ref }}' - - '-k ${{ inputs.skip-dirs }}' - - '-l ${{ inputs.input }}' - - '-m ${{ inputs.cache-dir }}' - - '-n ${{ inputs.timeout }}' - - '-o ${{ inputs.ignore-policy }}' - - '-p ${{ inputs.hide-progress }}' - - '-q ${{ inputs.skip-files }}' - - '-r ${{ inputs.list-all-pkgs }}' diff --git a/.github/actions/trivy-action-0.2.1/docs/images/trivy-action.png b/.github/actions/trivy-action-0.2.1/docs/images/trivy-action.png deleted file mode 100644 index e67a09d68489e22e201f3051068c1b3fa57fd928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 516869 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

I-O!-GxKK1%oy{owkU;DMqw&;Rj1Ih%f# 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�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%0Dt|KMn?Z^M@`NQ~J)mAj-CL66k# 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

CDa2KxWTFF+8;5UDH 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

K#R~%b5-OY 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%0Ag58S>{gjSGrCY@ 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 hBLLdZawQl3gqT^Yd{dYl8b)zW$1_Q%pP^_s!v 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 diff --git a/.github/actions/trivy-action-0.2.1/entrypoint.sh b/.github/actions/trivy-action-0.2.1/entrypoint.sh deleted file mode 100755 index f55137202..000000000 --- a/.github/actions/trivy-action-0.2.1/entrypoint.sh +++ /dev/null @@ -1,146 +0,0 @@ -#!/bin/bash -set -e -while getopts "a:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:" o; do - case "${o}" in - a) - export scanType=${OPTARG} - ;; - b) - export format=${OPTARG} - ;; - c) - export template=${OPTARG} - ;; - d) - export exitCode=${OPTARG} - ;; - e) - export ignoreUnfixed=${OPTARG} - ;; - f) - export vulnType=${OPTARG} - ;; - g) - export severity=${OPTARG} - ;; - h) - export output=${OPTARG} - ;; - i) - export imageRef=${OPTARG} - ;; - j) - export scanRef=${OPTARG} - ;; - k) - export skipDirs=${OPTARG} - ;; - l) - export input=${OPTARG} - ;; - m) - export cacheDir=${OPTARG} - ;; - n) - export timeout=${OPTARG} - ;; - o) - export ignorePolicy=${OPTARG} - ;; - p) - export hideProgress=${OPTARG} - ;; - q) - export skipFiles=${OPTARG} - ;; - r) - export listAllPkgs=${OPTARG} - ;; - esac -done - -scanType=$(echo $scanType | tr -d '\r') -export artifactRef="${imageRef}" -if [ "${scanType}" = "fs" ] || [ "${scanType}" = "config" ] || [ "${scanType}" = "rootfs" ];then - artifactRef=$(echo $scanRef | tr -d '\r') -fi -input=$(echo $input | tr -d '\r') -if [ $input ]; then - artifactRef="--input $input" -fi -ignoreUnfixed=$(echo $ignoreUnfixed | tr -d '\r') -hideProgress=$(echo $hideProgress | tr -d '\r') - -GLOBAL_ARGS="" -if [ $cacheDir ];then - GLOBAL_ARGS="$GLOBAL_ARGS --cache-dir $cacheDir" -fi - -SARIF_ARGS="" -ARGS="" -if [ $format ];then - ARGS="$ARGS --format $format" -fi -if [ $template ] ;then - ARGS="$ARGS --template $template" -fi -if [ $exitCode ];then - ARGS="$ARGS --exit-code $exitCode" -fi -if [ "$ignoreUnfixed" == "true" ] && [ "$scanType" != "config" ];then - ARGS="$ARGS --ignore-unfixed" - SARIF_ARGS="$SARIF_ARGS --ignore-unfixed" -fi -if [ $vulnType ] && [ "$scanType" != "config" ];then - ARGS="$ARGS --vuln-type $vulnType" - SARIF_ARGS="$SARIF_ARGS --vuln-type $vulnType" -fi -if [ $severity ];then - ARGS="$ARGS --severity $severity" -fi -if [ $output ];then - ARGS="$ARGS --output $output" -fi -if [ $skipDirs ];then - for i in $(echo $skipDirs | tr "," "\n") - do - ARGS="$ARGS --skip-dirs $i" - SARIF_ARGS="$SARIF_ARGS --skip-dirs $i" - done -fi -if [ $timeout ];then - ARGS="$ARGS --timeout $timeout" -fi -if [ $ignorePolicy ];then - ARGS="$ARGS --ignore-policy $ignorePolicy" - SARIF_ARGS="$SARIF_ARGS --ignore-policy $ignorePolicy" -fi -if [ "$hideProgress" == "true" ];then - ARGS="$ARGS --no-progress" -fi - -listAllPkgs=$(echo $listAllPkgs | tr -d '\r') -if [ "$listAllPkgs" == "true" ];then - ARGS="$ARGS --list-all-pkgs" -fi -if [ "$skipFiles" ];then - for i in $(echo $skipFiles | tr "," "\n") - do - ARGS="$ARGS --skip-files $i" - done -fi - -echo "Running trivy with options: ${ARGS}" "${artifactRef}" -echo "Global options: " "${GLOBAL_ARGS}" -trivy $GLOBAL_ARGS ${scanType} $ARGS ${artifactRef} -returnCode=$? - -# SARIF is special. We output all vulnerabilities, -# regardless of severity level specified in this report. -# This is a feature, not a bug :) -if [[ ${template} == *"sarif"* ]]; then - echo "Building SARIF report with options: ${SARIF_ARGS}" "${artifactRef}" - trivy --quiet ${scanType} --format template --template ${template} --output ${output} $SARIF_ARGS ${artifactRef} -fi - -exit $returnCode diff --git a/.github/actions/trivy-action-0.2.1/workflow.yml b/.github/actions/trivy-action-0.2.1/workflow.yml deleted file mode 100644 index a74737c7d..000000000 --- a/.github/actions/trivy-action-0.2.1/workflow.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: build -on: - push: - branches: - - master - pull_request: -jobs: - build: - name: Build - runs-on: ubuntu-18.04 - steps: - - name: Checkout code - uses: actions/checkout@v2 - - - name: Build an image from Dockerfile - run: | - docker build -t docker.io/my-organization/my-app:${{ github.sha }} . - - - name: Run Trivy vulnerability scanner - uses: aquasecurity/trivy-action@master - with: - image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}' - exit-code: '1' - ignore-unfixed: true - vuln-type: 'os,library' - format: 'template' - template: '@/contrib/sarif.tpl' - output: 'trivy-results.sarif' - severity: 'CRITICAL,HIGH' - - - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@v1 - with: - sarif_file: 'trivy-results.sarif' diff --git a/.github/actions/trivy-action-0.28.0/.github/workflows/bump-trivy.yaml b/.github/actions/trivy-action-0.28.0/.github/workflows/bump-trivy.yaml deleted file mode 100644 index 25f282aba..000000000 --- a/.github/actions/trivy-action-0.28.0/.github/workflows/bump-trivy.yaml +++ /dev/null @@ -1,40 +0,0 @@ -name: Bump trivy - -on: - workflow_dispatch: - inputs: - trivy_version: - required: true - type: string - description: the trivy version - -run-name: Bump trivy to v${{ inputs.trivy_version }} - -jobs: - bump: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Update Trivy versions - run: | - find test/data -type f -name '*.test' | xargs sed -r -i 's/"version": "[0-9]+\.[0-9]+\.[0-9]+"/"version": "${{ inputs.trivy_version }}"/' - sed -r -i '/^\| `version`/ s/[0-9]+\.[0-9]+\.[0-9]+/${{ inputs.trivy_version }}/g' README.md - sed -r -i 's/(default:[ ]*'"'"')v[0-9]+\.[0-9]+\.[0-9]+/\1v${{ inputs.trivy_version }}/' action.yaml - - - name: Create PR - id: create-pr - uses: peter-evans/create-pull-request@v5 - with: - token: ${{ secrets.ORG_REPO_TOKEN }} - title: "chore(deps): Update trivy to v${{ inputs.trivy_version }}" - commit-message: "chore(deps): Update trivy to v${{ inputs.trivy_version }}" - committer: github-actions[bot] - author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com> - branch-suffix: timestamp - branch: bump-trivy - delete-branch: true - - - name: Check outputs - run: | - echo "Pull Request Number - ${{ steps.create-pr.outputs.pull-request-number }}" - echo "Pull Request URL - ${{ steps.create-pr.outputs.pull-request-url }}" diff --git a/.github/actions/trivy-action-0.28.0/.github/workflows/sync-trivy-checks.yaml b/.github/actions/trivy-action-0.28.0/.github/workflows/sync-trivy-checks.yaml deleted file mode 100644 index 518742c0f..000000000 --- a/.github/actions/trivy-action-0.28.0/.github/workflows/sync-trivy-checks.yaml +++ /dev/null @@ -1,24 +0,0 @@ -name: Sync Trivy Checks - -on: - workflow_dispatch: -env: - IMAGE_NAME: ${{ github.repository_owner }}/trivy-checks-act - REGISTRY: ghcr.io - -jobs: - sync-trivy-checks: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Login to GitHub Packages Container registry - uses: docker/login-action@v3 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Copy Trivy Checks - run: | - oras cp ghcr.io/aquasecurity/trivy-checks:1 ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest \ No newline at end of file diff --git a/.github/actions/trivy-action-0.28.0/.github/workflows/sync-trivy-db.yaml b/.github/actions/trivy-action-0.28.0/.github/workflows/sync-trivy-db.yaml deleted file mode 100644 index ef16e424b..000000000 --- a/.github/actions/trivy-action-0.28.0/.github/workflows/sync-trivy-db.yaml +++ /dev/null @@ -1,24 +0,0 @@ -name: Sync Trivy DB - -on: - workflow_dispatch: -env: - IMAGE_NAME: ${{ github.repository_owner }}/trivy-db-act - REGISTRY: ghcr.io - -jobs: - sync-trivy-db: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Login to GitHub Packages Container registry - uses: docker/login-action@v3 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Copy Trivy DB - run: | - oras cp ghcr.io/aquasecurity/trivy-db:2 ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest diff --git a/.github/actions/trivy-action-0.28.0/.github/workflows/sync-trivy-java-db.yaml b/.github/actions/trivy-action-0.28.0/.github/workflows/sync-trivy-java-db.yaml deleted file mode 100644 index 53cabdba3..000000000 --- a/.github/actions/trivy-action-0.28.0/.github/workflows/sync-trivy-java-db.yaml +++ /dev/null @@ -1,24 +0,0 @@ -name: Sync Trivy Java DB - -on: - workflow_dispatch: -env: - IMAGE_NAME: ${{ github.repository_owner }}/trivy-java-db-act - REGISTRY: ghcr.io - -jobs: - sync-trivy-db: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Login to GitHub Packages Container registry - uses: docker/login-action@v3 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Copy Trivy Java DB - run: | - oras cp ghcr.io/aquasecurity/trivy-java-db:1 ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest diff --git a/.github/actions/trivy-action-0.28.0/.github/workflows/test.yaml b/.github/actions/trivy-action-0.28.0/.github/workflows/test.yaml deleted file mode 100644 index 04755f478..000000000 --- a/.github/actions/trivy-action-0.28.0/.github/workflows/test.yaml +++ /dev/null @@ -1,31 +0,0 @@ -name: Test - -on: - push: - pull_request: - workflow_dispatch: - -env: - TRIVY_VERSION: 0.56.1 - BATS_LIB_PATH: '/usr/lib/' - -jobs: - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Setup Bats and bats libs - uses: bats-core/bats-action@2.0.0 - - - name: Install Trivy - run: | - curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin v${{ env.TRIVY_VERSION }} - trivy --version - - - name: Test - run: bats --recursive --timing --verbose-run . - env: - TRIVY_CACHE_DIR: .cache - TRIVY_DISABLE_VEX_NOTICE: true - TRIVY_DEBUG: true \ No newline at end of file diff --git a/.github/actions/trivy-action-0.28.0/.gitignore b/.github/actions/trivy-action-0.28.0/.gitignore deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/actions/trivy-action-0.28.0/LICENSE b/.github/actions/trivy-action-0.28.0/LICENSE deleted file mode 100644 index f49a4e16e..000000000 --- a/.github/actions/trivy-action-0.28.0/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file diff --git a/.github/actions/trivy-action-0.28.0/Makefile b/.github/actions/trivy-action-0.28.0/Makefile deleted file mode 100644 index 27b68685b..000000000 --- a/.github/actions/trivy-action-0.28.0/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -OS := $(shell uname) -ifeq ($(OS), Darwin) -BATS_LIB_PATH=/opt/homebrew/lib -endif -ifeq ($(OS), Linux) -BATS_LIB_PATH=/usr/local/lib/ -endif - - -.PHONY: test -test: - mkdir -p .cache - BATS_LIB_PATH=$(BATS_LIB_PATH) GITHUB_REPOSITORY_OWNER=aquasecurity\ - TRIVY_CACHE_DIR=.cache TRIVY_DISABLE_VEX_NOTICE=true TRIVY_DEBUG=true\ - bats --recursive --timing --verbose-run . \ No newline at end of file diff --git a/.github/actions/trivy-action-0.28.0/README.md b/.github/actions/trivy-action-0.28.0/README.md deleted file mode 100644 index 6e4b55145..000000000 --- a/.github/actions/trivy-action-0.28.0/README.md +++ /dev/null @@ -1,698 +0,0 @@ -# Trivy Action - -> [GitHub Action](https://github.com/features/actions) for [Trivy](https://github.com/aquasecurity/trivy) - -[![GitHub Release][release-img]][release] -[![GitHub Marketplace][marketplace-img]][marketplace] -[![License][license-img]][license] - -![](docs/images/trivy-action.png) - -## Table of Contents - -* [Usage](#usage) - * [Scan CI Pipeline](#scan-ci-pipeline) - * [Scan CI Pipeline (w/ Trivy Config)](#scan-ci-pipeline-w-trivy-config) - * [Cache](#cache) - * [Scanning a Tarball](#scanning-a-tarball) - * [Using Trivy with GitHub Code Scanning](#using-trivy-with-github-code-scanning) - * [Using Trivy to scan your Git repo](#using-trivy-to-scan-your-git-repo) - * [Using Trivy to scan your rootfs directories](#using-trivy-to-scan-your-rootfs-directories) - * [Using Trivy to scan Infrastructure as Code](#using-trivy-to-scan-infrastructure-as-code) - * [Using Trivy to generate SBOM](#using-trivy-to-generate-sbom) - * [Using Trivy to scan your private registry](#using-trivy-to-scan-your-private-registry) - * [Using Trivy if you don't have code scanning enabled](#using-trivy-if-you-dont-have-code-scanning-enabled) -* [Customizing](#customizing) - * [inputs](#inputs) - * [Environment variables](#environment-variables) - * [Trivy config file](#trivy-config-file) - -## Usage - -### Scan CI Pipeline - -```yaml -name: build -on: - push: - branches: - - main - pull_request: -jobs: - build: - name: Build - runs-on: ubuntu-20.04 - steps: - - name: Checkout code - uses: actions/checkout@v3 - - name: Build an image from Dockerfile - run: docker build -t docker.io/my-organization/my-app:${{ github.sha }} . - - name: Run Trivy vulnerability scanner - uses: aquasecurity/trivy-action@0.20.0 - with: - image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}' - format: 'table' - exit-code: '1' - ignore-unfixed: true - vuln-type: 'os,library' - severity: 'CRITICAL,HIGH' -``` - -### Scan CI Pipeline (w/ Trivy Config) - -```yaml -name: build -on: - push: - branches: - - main - pull_request: -jobs: - build: - name: Build - runs-on: ubuntu-20.04 - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Run Trivy vulnerability scanner in fs mode - uses: aquasecurity/trivy-action@0.20.0 - with: - scan-type: 'fs' - scan-ref: '.' - trivy-config: trivy.yaml -``` - -In this case `trivy.yaml` is a YAML configuration that is checked in as part of the repo. Detailed information is available on the Trivy website but an example is as follows: -```yaml -format: json -exit-code: 1 -severity: CRITICAL -secret: - config: config/trivy/secret.yaml -``` - -It is possible to define all options in the `trivy.yaml` file. Specifying individual options via the action are left for backward compatibility purposes. Defining the following is required as they cannot be defined with the config file: -- `scan-ref`: If using `fs, repo` scans. -- `image-ref`: If using `image` scan. -- `scan-type`: To define the scan type, e.g. `image`, `fs`, `repo`, etc. - -#### Order of preference for options -Trivy uses [Viper](https://github.com/spf13/viper) which has a defined precedence order for options. The order is as follows: -- GitHub Action flag -- Environment variable -- Config file -- Default - -### Cache -The action has a built-in functionality for caching and restoring [the vulnerability DB](https://github.com/aquasecurity/trivy-db), [the Java DB](https://github.com/aquasecurity/trivy-java-db) and [the checks bundle](https://github.com/aquasecurity/trivy-checks) if they are downloaded during the scan. -The cache is stored in the `$GITHUB_WORKSPACE/.cache/trivy` directory by default. -The cache is restored before the scan starts and saved after the scan finishes. - -It uses [actions/cache](https://github.com/actions/cache) under the hood but requires less configuration settings. -The cache input is optional, and caching is turned on by default. - -#### Disabling caching -If you want to disable caching, set the `cache` input to `false`, but we recommend keeping it enabled to avoid rate limiting issues. - -```yaml - - name: Run Trivy scanner without cache - uses: aquasecurity/trivy-action@0.20.0 - with: - scan-type: 'fs' - scan-ref: '.' - cache: 'false' -``` - -#### Updating caches in the default branch -Please note that there are [restrictions on cache access](https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/caching-dependencies-to-speed-up-workflows#restrictions-for-accessing-a-cache) between branches in GitHub Actions. -By default, a workflow can access and restore a cache created in either the current branch or the default branch (usually `main` or `master`). -If you need to share caches across branches, you may need to create a cache in the default branch and restore it in the current branch. - -To optimize your workflow, you can set up a cron job to regularly update the cache in the default branch. -This allows subsequent scans to use the cached DB without downloading it again. - -```yaml -# Note: This workflow only updates the cache. You should create a separate workflow for your actual Trivy scans. -# In your scan workflow, set TRIVY_SKIP_DB_UPDATE=true and TRIVY_SKIP_JAVA_DB_UPDATE=true. -name: Update Trivy Cache - -on: - schedule: - - cron: '0 0 * * *' # Run daily at midnight UTC - workflow_dispatch: # Allow manual triggering - -jobs: - update-trivy-db: - runs-on: ubuntu-latest - steps: - - name: Get current date - id: date - run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT - - - name: Download and extract the vulnerability DB - run: | - mkdir -p $GITHUB_WORKSPACE/.cache/trivy/db - oras pull ghcr.io/aquasecurity/trivy-db:2 - tar -xzf db.tar.gz -C $GITHUB_WORKSPACE/.cache/trivy/db - rm db.tar.gz - - - name: Download and extract the Java DB - run: | - mkdir -p $GITHUB_WORKSPACE/.cache/trivy/java-db - oras pull ghcr.io/aquasecurity/trivy-java-db:1 - tar -xzf javadb.tar.gz -C $GITHUB_WORKSPACE/.cache/trivy/java-db - rm javadb.tar.gz - - - name: Cache DBs - uses: actions/cache/save@v4 - with: - path: ${{ github.workspace }}/.cache/trivy - key: cache-trivy-${{ steps.date.outputs.date }} -``` - -When running a scan, set the environment variables `TRIVY_SKIP_DB_UPDATE` and `TRIVY_SKIP_JAVA_DB_UPDATE` to skip the download process. - -```yaml - - name: Run Trivy scanner without downloading DBs - uses: aquasecurity/trivy-action@0.20.0 - with: - scan-type: 'image' - scan-ref: 'myimage' - env: - TRIVY_SKIP_DB_UPDATE: true - TRIVY_SKIP_JAVA_DB_UPDATE: true -``` - -### Scanning a Tarball -```yaml -name: build -on: - push: - branches: - - main - pull_request: -jobs: - build: - name: Build - runs-on: ubuntu-20.04 - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Generate tarball from image - run: | - docker pull - docker save -o vuln-image.tar - - - name: Run Trivy vulnerability scanner in tarball mode - uses: aquasecurity/trivy-action@0.20.0 - with: - input: /github/workspace/vuln-image.tar - severity: 'CRITICAL,HIGH' -``` - -### Using Trivy with GitHub Code Scanning -If you have [GitHub code scanning](https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning) available you can use Trivy as a scanning tool as follows: -```yaml -name: build -on: - push: - branches: - - main - pull_request: -jobs: - build: - name: Build - runs-on: ubuntu-20.04 - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Build an image from Dockerfile - run: | - docker build -t docker.io/my-organization/my-app:${{ github.sha }} . - - - name: Run Trivy vulnerability scanner - uses: aquasecurity/trivy-action@0.20.0 - with: - image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}' - format: 'sarif' - output: 'trivy-results.sarif' - - - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@v3 - with: - sarif_file: 'trivy-results.sarif' -``` - -You can find a more in-depth example here: https://github.com/aquasecurity/trivy-sarif-demo/blob/master/.github/workflows/scan.yml - -If you would like to upload SARIF results to GitHub Code scanning even upon a non zero exit code from Trivy Scan, you can add the following to your upload step: -```yaml -name: build -on: - push: - branches: - - main - pull_request: -jobs: - build: - name: Build - runs-on: ubuntu-20.04 - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Build an image from Dockerfile - run: | - docker build -t docker.io/my-organization/my-app:${{ github.sha }} . - - - name: Run Trivy vulnerability scanner - uses: aquasecurity/trivy-action@0.20.0 - with: - image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}' - format: 'sarif' - output: 'trivy-results.sarif' - - - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@v3 - if: always() - with: - sarif_file: 'trivy-results.sarif' -``` - -See this for more details: https://docs.github.com/en/actions/learn-github-actions/expressions#always - -### Using Trivy to scan your Git repo -It's also possible to scan your git repos with Trivy's built-in repo scan. This can be handy if you want to run Trivy as a build time check on each PR that gets opened in your repo. This helps you identify potential vulnerablites that might get introduced with each PR. - -If you have [GitHub code scanning](https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning) available you can use Trivy as a scanning tool as follows: -```yaml -name: build -on: - push: - branches: - - main - pull_request: -jobs: - build: - name: Build - runs-on: ubuntu-20.04 - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Run Trivy vulnerability scanner in repo mode - uses: aquasecurity/trivy-action@0.20.0 - with: - scan-type: 'fs' - ignore-unfixed: true - format: 'sarif' - output: 'trivy-results.sarif' - severity: 'CRITICAL' - - - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@v3 - with: - sarif_file: 'trivy-results.sarif' -``` - -### Using Trivy to scan your rootfs directories -It's also possible to scan your rootfs directories with Trivy's built-in rootfs scan. This can be handy if you want to run Trivy as a build time check on each PR that gets opened in your repo. This helps you identify potential vulnerablites that might get introduced with each PR. - -If you have [GitHub code scanning](https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning) available you can use Trivy as a scanning tool as follows: -```yaml -name: build -on: - push: - branches: - - main - pull_request: -jobs: - build: - name: Build - runs-on: ubuntu-20.04 - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Run Trivy vulnerability scanner with rootfs command - uses: aquasecurity/trivy-action@0.20.0 - with: - scan-type: 'rootfs' - scan-ref: 'rootfs-example-binary' - ignore-unfixed: true - format: 'sarif' - output: 'trivy-results.sarif' - severity: 'CRITICAL' - - - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@v3 - with: - sarif_file: 'trivy-results.sarif' -``` - -### Using Trivy to scan Infrastructure as Code -It's also possible to scan your IaC repos with Trivy's built-in repo scan. This can be handy if you want to run Trivy as a build time check on each PR that gets opened in your repo. This helps you identify potential vulnerablites that might get introduced with each PR. - -If you have [GitHub code scanning](https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/about-code-scanning) available you can use Trivy as a scanning tool as follows: -```yaml -name: build -on: - push: - branches: - - main - pull_request: -jobs: - build: - name: Build - runs-on: ubuntu-20.04 - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Run Trivy vulnerability scanner in IaC mode - uses: aquasecurity/trivy-action@0.20.0 - with: - scan-type: 'config' - hide-progress: true - format: 'sarif' - output: 'trivy-results.sarif' - exit-code: '1' - ignore-unfixed: true - severity: 'CRITICAL,HIGH' - - - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@v3 - with: - sarif_file: 'trivy-results.sarif' -``` - -### Using Trivy to generate SBOM -It's possible for Trivy to generate an [SBOM](https://www.aquasec.com/cloud-native-academy/supply-chain-security/sbom/) of your dependencies and submit them to a consumer like [GitHub Dependency Graph](https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph). - -The [sending of an SBOM to GitHub](https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api) feature is only available if you currently have GitHub Dependency Graph [enabled in your repo](https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/configuring-the-dependency-graph#enabling-and-disabling-the-dependency-graph-for-a-private-repository). - -In order to send results to GitHub Dependency Graph, you will need to create a [GitHub PAT](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) or use the [GitHub installation access token](https://docs.github.com/en/actions/security-guides/automatic-token-authentication) (also known as `GITHUB_TOKEN`): - -```yaml ---- -name: Pull Request -on: - push: - branches: - - main - -## GITHUB_TOKEN authentication, add only if you're not going to use a PAT -permissions: - contents: write - -jobs: - build: - name: Checks - runs-on: ubuntu-20.04 - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Run Trivy in GitHub SBOM mode and submit results to Dependency Graph - uses: aquasecurity/trivy-action@0.20.0 - with: - scan-type: 'fs' - format: 'github' - output: 'dependency-results.sbom.json' - image-ref: '.' - github-pat: ${{ secrets.GITHUB_TOKEN }} # or ${{ secrets.github_pat_name }} if you're using a PAT -``` - -When scanning images you may want to parse the actual output JSON as Github Dependency doesn't show all details like the file path of each dependency for instance. - -You can upload the report as an artifact and download it, for instance using the [upload-artifact action](https://github.com/actions/upload-artifact): - -```yaml ---- -name: Pull Request -on: - push: - branches: - - main - -## GITHUB_TOKEN authentication, add only if you're not going to use a PAT -permissions: - contents: write - -jobs: - build: - name: Checks - runs-on: ubuntu-20.04 - steps: - - name: Scan image in a private registry - uses: aquasecurity/trivy-action@0.20.0 - with: - image-ref: "private_image_registry/image_name:image_tag" - scan-type: image - format: 'github' - output: 'dependency-results.sbom.json' - github-pat: ${{ secrets.GITHUB_TOKEN }} # or ${{ secrets.github_pat_name }} if you're using a PAT - severity: "MEDIUM,HIGH,CRITICAL" - scanners: "vuln" - env: - TRIVY_USERNAME: "image_registry_admin_username" - TRIVY_PASSWORD: "image_registry_admin_password" - - - name: Upload trivy report as a Github artifact - uses: actions/upload-artifact@v4 - with: - name: trivy-sbom-report - path: '${{ github.workspace }}/dependency-results.sbom.json' - retention-days: 20 # 90 is the default -``` - -### Using Trivy to scan your private registry -It's also possible to scan your private registry with Trivy's built-in image scan. All you have to do is set ENV vars. - -#### Docker Hub registry -Docker Hub needs `TRIVY_USERNAME` and `TRIVY_PASSWORD`. -You don't need to set ENV vars when downloading from a public repository. -```yaml -name: build -on: - push: - branches: - - main - pull_request: -jobs: - build: - name: Build - runs-on: ubuntu-20.04 - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Run Trivy vulnerability scanner - uses: aquasecurity/trivy-action@0.20.0 - with: - image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}' - format: 'sarif' - output: 'trivy-results.sarif' - env: - TRIVY_USERNAME: Username - TRIVY_PASSWORD: Password - - - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@v3 - with: - sarif_file: 'trivy-results.sarif' -``` - -#### AWS ECR (Elastic Container Registry) -Trivy uses AWS SDK. You don't need to install `aws` CLI tool. -You can use [AWS CLI's ENV Vars][env-var]. - -[env-var]: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html -```yaml -name: build -on: - push: - branches: - - main - pull_request: -jobs: - build: - name: Build - runs-on: ubuntu-20.04 - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Run Trivy vulnerability scanner - uses: aquasecurity/trivy-action@0.20.0 - with: - image-ref: 'aws_account_id.dkr.ecr.region.amazonaws.com/imageName:${{ github.sha }}' - format: 'sarif' - output: 'trivy-results.sarif' - env: - AWS_ACCESS_KEY_ID: key_id - AWS_SECRET_ACCESS_KEY: access_key - AWS_DEFAULT_REGION: us-west-2 - - - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@v3 - with: - sarif_file: 'trivy-results.sarif' -``` - -#### GCR (Google Container Registry) -Trivy uses Google Cloud SDK. You don't need to install `gcloud` command. - -If you want to use target project's repository, you can set it via `GOOGLE_APPLICATION_CREDENTIAL`. -```yaml -name: build -on: - push: - branches: - - main - pull_request: -jobs: - build: - name: Build - runs-on: ubuntu-20.04 - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Run Trivy vulnerability scanner - uses: aquasecurity/trivy-action@0.20.0 - with: - image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}' - format: 'sarif' - output: 'trivy-results.sarif' - env: - GOOGLE_APPLICATION_CREDENTIAL: /path/to/credential.json - - - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@v3 - with: - sarif_file: 'trivy-results.sarif' -``` - -#### Self-Hosted -BasicAuth server needs `TRIVY_USERNAME` and `TRIVY_PASSWORD`. -if you want to use 80 port, use NonSSL `TRIVY_NON_SSL=true` -```yaml -name: build -on: - push: - branches: - - main - pull_request: -jobs: - build: - name: Build - runs-on: ubuntu-20.04 - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Run Trivy vulnerability scanner - uses: aquasecurity/trivy-action@0.20.0 - with: - image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}' - format: 'sarif' - output: 'trivy-results.sarif' - env: - TRIVY_USERNAME: Username - TRIVY_PASSWORD: Password - - - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@v3 - with: - sarif_file: 'trivy-results.sarif' -``` - -### Using Trivy if you don't have code scanning enabled - -It's also possible to browse a scan result in a workflow summary. - -This step is especially useful for private repositories without [GitHub Advanced Security](https://docs.github.com/en/get-started/learning-about-github/about-github-advanced-security) license. - -```yaml -- name: Run Trivy scanner - uses: aquasecurity/trivy-action@0.20.0 - with: - scan-type: config - hide-progress: true - output: trivy.txt - -- name: Publish Trivy Output to Summary - run: | - if [[ -s trivy.txt ]]; then - { - echo "### Security Output" - echo "

Click to expand" - echo "" - echo '```terraform' - cat trivy.txt - echo '```' - echo "
" - } >> $GITHUB_STEP_SUMMARY - fi -``` - -## Customizing - -Configuration priority: -- [Inputs](#inputs) -- [Environment variables](#environment-variables) -- [Trivy config file](#trivy-config-file) -- Default values - - -### inputs - -Following inputs can be used as `step.with` keys: - -| Name | Type | Default | Description | -|------------------------------|---------|------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `scan-type` | String | `image` | Scan type, e.g. `image` or `fs` | -| `input` | String | | Tar reference, e.g. `alpine-latest.tar` | -| `image-ref` | String | | Image reference, e.g. `alpine:3.10.2` | -| `scan-ref` | String | `/github/workspace/` | Scan reference, e.g. `/github/workspace/` or `.` | -| `format` | String | `table` | Output format (`table`, `json`, `template`, `sarif`, `cyclonedx`, `spdx`, `spdx-json`, `github`, `cosign-vuln`) | -| `template` | String | | Output template (`@/contrib/gitlab.tpl`, `@/contrib/junit.tpl`) | -| `tf-vars` | String | | path to Terraform variables file | -| `output` | String | | Save results to a file | -| `exit-code` | String | `0` | Exit code when specified vulnerabilities are found | -| `ignore-unfixed` | Boolean | false | Ignore unpatched/unfixed vulnerabilities | -| `vuln-type` | String | `os,library` | Vulnerability types (os,library) | -| `severity` | String | `UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL` | Severities of vulnerabilities to scanned for and displayed | -| `skip-dirs` | String | | Comma separated list of directories where traversal is skipped | -| `skip-files` | String | | Comma separated list of files where traversal is skipped | -| `cache-dir` | String | `$GITHUB_WORKSPACE/.cache/trivy` | Cache directory. NOTE: This value cannot be configured by `trivy.yaml`. | -| `timeout` | String | `5m0s` | Scan timeout duration | -| `ignore-policy` | String | | Filter vulnerabilities with OPA rego language | -| `hide-progress` | String | `false` | Suppress progress bar and log output | -| `list-all-pkgs` | String | | Output all packages regardless of vulnerability | -| `scanners` | String | `vuln,secret` | comma-separated list of what security issues to detect (`vuln`,`secret`,`misconfig`,`license`) | -| `trivyignores` | String | | comma-separated list of relative paths in repository to one or more `.trivyignore` files | -| `trivy-config` | String | | Path to trivy.yaml config | -| `github-pat` | String | | Authentication token to enable sending SBOM scan results to GitHub Dependency Graph. Can be either a GitHub Personal Access Token (PAT) or GITHUB_TOKEN | -| `limit-severities-for-sarif` | Boolean | false | By default *SARIF* format enforces output of all vulnerabilities regardless of configured severities. To override this behavior set this parameter to **true** | -| `docker-host` | String | | By default it is set to `unix://var/run/docker.sock`, but can be updated to help with containerized infrastructure values | -| `version` | String | `v0.56.1` | Trivy version to use, e.g. `latest` or `v0.56.1` | - -### Environment variables -You can use [Trivy environment variables][trivy-env] to set the necessary options (including flags that are not supported by [Inputs](#inputs), such as `--secret-config`). - -### Trivy config file -When using the `trivy-config` [Input](#inputs), you can set options using the [Trivy config file][trivy-config] (including flags that are not supported by [Inputs](#inputs), such as `--secret-config`). - -[release]: https://github.com/aquasecurity/trivy-action/releases/latest -[release-img]: https://img.shields.io/github/release/aquasecurity/trivy-action.svg?logo=github -[marketplace]: https://github.com/marketplace/actions/aqua-security-trivy -[marketplace-img]: https://img.shields.io/badge/marketplace-trivy--action-blue?logo=github -[license]: https://github.com/aquasecurity/trivy-action/blob/master/LICENSE -[license-img]: https://img.shields.io/github/license/aquasecurity/trivy-action -[trivy-env]: https://aquasecurity.github.io/trivy/latest/docs/configuration/#environment-variables -[trivy-config]: https://aquasecurity.github.io/trivy/latest/docs/references/configuration/config-file/ diff --git a/.github/actions/trivy-action-0.28.0/action.yaml b/.github/actions/trivy-action-0.28.0/action.yaml deleted file mode 100644 index bf0a50b12..000000000 --- a/.github/actions/trivy-action-0.28.0/action.yaml +++ /dev/null @@ -1,189 +0,0 @@ -name: 'Aqua Security Trivy' -description: 'Scans container images for vulnerabilities with Trivy' -author: 'Aqua Security' - -inputs: - scan-type: - description: 'Scan type to use for scanning vulnerability' - required: false - default: 'image' - image-ref: - description: 'image reference(for backward compatibility)' - required: false - input: - description: 'reference of tar file to scan' - required: false - default: '' - scan-ref: - description: 'Scan reference' - required: false - default: '.' - exit-code: - description: 'exit code when vulnerabilities were found' - required: false - ignore-unfixed: - description: 'ignore unfixed vulnerabilities' - required: false - default: 'false' - vuln-type: # TODO: rename to pkg-types - description: 'comma-separated list of vulnerability types (os,library)' - required: false - default: 'os,library' - severity: - description: 'severities of vulnerabilities to be displayed' - required: false - default: 'UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL' - format: - description: 'output format (table, json, template)' - required: false - default: 'table' - template: - description: 'use an existing template for rendering output (@/contrib/gitlab.tpl, @/contrib/junit.tpl, @/contrib/html.tpl)' - required: false - default: '' - output: - description: 'writes results to a file with the specified file name' - required: false - default: '' - skip-dirs: - description: 'comma separated list of directories where traversal is skipped' - required: false - default: '' - skip-files: - description: 'comma separated list of files to be skipped' - required: false - default: '' - cache-dir: - description: 'specify where the cache is stored' - required: false - default: '${{ github.workspace }}/.cache/trivy' - timeout: - description: 'timeout (default 5m0s)' - required: false - default: '' - ignore-policy: - description: 'filter vulnerabilities with OPA rego language' - required: false - default: '' - hide-progress: - description: 'suppress progress bar and log output' - required: false - list-all-pkgs: - description: 'output all packages regardless of vulnerability' - required: false - default: 'false' - scanners: - description: 'comma-separated list of what security issues to detect' - required: false - default: '' - trivyignores: - description: 'comma-separated list of relative paths in repository to one or more .trivyignore files' - required: false - default: '' - github-pat: - description: 'GitHub Personal Access Token (PAT) for submitting SBOM to GitHub Dependency Snapshot API' - required: false - trivy-config: - description: 'path to trivy.yaml config' - required: false - tf-vars: - description: "path to terraform tfvars file" - required: false - limit-severities-for-sarif: - description: 'limit severities for SARIF format' - required: false - docker-host: - description: 'unix domain socket path to use for docker scanning, ex. unix:///var/run/docker.sock' - required: false - version: - description: 'Trivy version to use' - required: false - default: 'v0.56.1' - cache: - description: 'Used to specify whether caching is needed. Set to false, if you would like to disable caching.' - required: false - default: 'true' - -runs: - using: 'composite' - steps: - - name: Install Trivy - uses: ./.github/actions/trivy-action-0.2.1 - with: - version: ${{ inputs.version }} - cache: ${{ inputs.cache }} - - - name: Get current date - id: date - shell: bash - run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT - - - name: Restore DB from cache - if: ${{ inputs.cache == 'true' }} - uses: actions/cache@v4 - with: - path: ${{ inputs.cache-dir }} - key: cache-trivy-${{ steps.date.outputs.date }} - restore-keys: cache-trivy- - - - name: Set GitHub Path - run: echo "$GITHUB_ACTION_PATH" >> $GITHUB_PATH - shell: bash - env: - GITHUB_ACTION_PATH: ${{ github.action_path }} - - - name: Set Trivy environment variables - shell: bash - run: | - # Note: There is currently no way to distinguish between undefined variables and empty strings in GitHub Actions. - # This limitation affects how we handle default values and empty inputs. - # For more information, see: https://github.com/actions/runner/issues/924 - - # Function to set environment variable only if the input is provided and different from default - set_env_var_if_provided() { - local var_name="$1" - local input_value="$2" - local default_value="$3" - - if [ ! -z "$input_value" ] && [ "$input_value" != "$default_value" ]; then - echo "$var_name=$input_value" >> $GITHUB_ENV - fi - } - - # Set environment variables, handling those with default values - # cf. https://aquasecurity.github.io/trivy/latest/docs/configuration/#environment-variables - set_env_var_if_provided "TRIVY_INPUT" "${{ inputs.input }}" "" - set_env_var_if_provided "TRIVY_EXIT_CODE" "${{ inputs.exit-code }}" "" - set_env_var_if_provided "TRIVY_IGNORE_UNFIXED" "${{ inputs.ignore-unfixed }}" "false" - set_env_var_if_provided "TRIVY_PKG_TYPES" "${{ inputs.vuln-type }}" "os,library" - set_env_var_if_provided "TRIVY_SEVERITY" "${{ inputs.severity }}" "UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL" - set_env_var_if_provided "TRIVY_FORMAT" "${{ inputs.format }}" "table" - set_env_var_if_provided "TRIVY_TEMPLATE" "${{ inputs.template }}" "" - set_env_var_if_provided "TRIVY_OUTPUT" "${{ inputs.output }}" "" - set_env_var_if_provided "TRIVY_SKIP_DIRS" "${{ inputs.skip-dirs }}" "" - set_env_var_if_provided "TRIVY_SKIP_FILES" "${{ inputs.skip-files }}" "" - set_env_var_if_provided "TRIVY_TIMEOUT" "${{ inputs.timeout }}" "" - set_env_var_if_provided "TRIVY_IGNORE_POLICY" "${{ inputs.ignore-policy }}" "" - set_env_var_if_provided "TRIVY_QUIET" "${{ inputs.hide-progress }}" "" - set_env_var_if_provided "TRIVY_LIST_ALL_PKGS" "${{ inputs.list-all-pkgs }}" "false" - set_env_var_if_provided "TRIVY_SCANNERS" "${{ inputs.scanners }}" "" - set_env_var_if_provided "TRIVY_CONFIG" "${{ inputs.trivy-config }}" "" - set_env_var_if_provided "TRIVY_TF_VARS" "${{ inputs.tf-vars }}" "" - set_env_var_if_provided "TRIVY_DOCKER_HOST" "${{ inputs.docker-host }}" "" - - - name: Run Trivy - shell: bash - run: entrypoint.sh - env: - # For shell script - # > If the action is written using a composite, then it will not automatically get INPUT_ - # cf. https://docs.github.com/en/actions/sharing-automations/creating-actions/metadata-syntax-for-github-actions#example-specifying-inputs - INPUT_SCAN_TYPE: ${{ inputs.scan-type }} - INPUT_IMAGE_REF: ${{ inputs.image-ref }} - INPUT_SCAN_REF: ${{ inputs.scan-ref }} - INPUT_TRIVYIGNORES: ${{ inputs.trivyignores }} - INPUT_GITHUB_PAT: ${{ inputs.github-pat }} - INPUT_LIMIT_SEVERITIES_FOR_SARIF: ${{ inputs.limit-severities-for-sarif }} - - # For Trivy - TRIVY_CACHE_DIR: ${{ inputs.cache-dir }} # Always set \ No newline at end of file diff --git a/.github/actions/trivy-action-0.28.0/docs/images/trivy-action.png b/.github/actions/trivy-action-0.28.0/docs/images/trivy-action.png deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/actions/trivy-action-0.28.0/entrypoint.sh b/.github/actions/trivy-action-0.28.0/entrypoint.sh deleted file mode 100755 index 1a8d4e376..000000000 --- a/.github/actions/trivy-action-0.28.0/entrypoint.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/bash -# -# Copyright (c) 2020, 2024, Oracle and/or its affiliates. -# Licensed under the Universal Permissive License v 1.0 as shown at -# http://oss.oracle.com/licenses/upl. -# - -set -euo pipefail - -# Set artifact reference -scanType="${INPUT_SCAN_TYPE:-image}" -scanRef="${INPUT_SCAN_REF:-.}" -if [ -n "${INPUT_IMAGE_REF:-}" ]; then - scanRef="${INPUT_IMAGE_REF}" # backwards compatibility -fi - -# Handle trivy ignores -if [ -n "${INPUT_TRIVYIGNORES:-}" ]; then - ignorefile="./trivyignores" - - # Clear the ignore file if it exists, or create a new empty file - : > "$ignorefile" - - for f in ${INPUT_TRIVYIGNORES//,/ }; do - if [ -f "$f" ]; then - echo "Found ignorefile '${f}':" - cat "${f}" - cat "${f}" >> "$ignorefile" - else - echo "ERROR: cannot find ignorefile '${f}'." >&2 - exit 1 - fi - done - export TRIVY_IGNOREFILE="$ignorefile" -fi - -# Handle SARIF -if [ "${TRIVY_FORMAT:-}" = "sarif" ]; then - if [ "${INPUT_LIMIT_SEVERITIES_FOR_SARIF:-false,,}" != "true" ]; then - echo "Building SARIF report with all severities" - unset TRIVY_SEVERITY - else - echo "Building SARIF report" - fi -fi - -# Run Trivy -cmd=(trivy "$scanType" "$scanRef") -echo "Running Trivy with options: ${cmd[*]}" -"${cmd[@]}" -returnCode=$? - -if [ "${TRIVY_FORMAT:-}" = "github" ]; then - if [ -n "${INPUT_GITHUB_PAT:-}" ]; then - printf "\n Uploading GitHub Dependency Snapshot" - curl -H 'Accept: application/vnd.github+json' -H "Authorization: token ${INPUT_GITHUB_PAT}" \ - "https://api.github.com/repos/$GITHUB_REPOSITORY/dependency-graph/snapshots" -d @"${TRIVY_OUTPUT:-}" - else - printf "\n Failing GitHub Dependency Snapshot. Missing github-pat" >&2 - fi -fi - -exit $returnCode \ No newline at end of file diff --git a/.github/actions/trivy-action-0.28.0/test/data/config-sarif-report/main.tf b/.github/actions/trivy-action-0.28.0/test/data/config-sarif-report/main.tf deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/actions/trivy-action-0.28.0/test/data/config-sarif-report/report.sarif b/.github/actions/trivy-action-0.28.0/test/data/config-sarif-report/report.sarif deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/actions/trivy-action-0.28.0/test/data/config-scan/main.tf b/.github/actions/trivy-action-0.28.0/test/data/config-scan/main.tf deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/actions/trivy-action-0.28.0/test/data/config-scan/report.json b/.github/actions/trivy-action-0.28.0/test/data/config-scan/report.json deleted file mode 100644 index 9cea638d5..000000000 --- a/.github/actions/trivy-action-0.28.0/test/data/config-scan/report.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "SchemaVersion": 2, - "ArtifactName": "test/data/config-scan", - "ArtifactType": "filesystem", - "Metadata": { - "ImageConfig": { - "architecture": "", - "created": "0001-01-01T00:00:00Z", - "os": "", - "rootfs": { - "type": "", - "diff_ids": null - }, - "config": {} - } - }, - "Results": [ - { - "Target": ".", - "Class": "config", - "Type": "terraform", - "MisconfSummary": { - "Successes": 2, - "Failures": 0, - "Exceptions": 0 - } - }, - { - "Target": "main.tf", - "Class": "config", - "Type": "terraform", - "MisconfSummary": { - "Successes": 0, - "Failures": 1, - "Exceptions": 0 - }, - "Misconfigurations": [ - { - "Type": "Terraform Security Check", - "ID": "AVD-AWS-0089", - "AVDID": "AVD-AWS-0089", - "Title": "S3 Bucket Logging", - "Description": "Ensures S3 bucket logging is enabled for S3 buckets", - "Message": "Bucket has logging disabled", - "Namespace": "builtin.aws.s3.aws0089", - "Query": "data.builtin.aws.s3.aws0089.deny", - "Resolution": "Add a logging block to the resource to enable access logging", - "Severity": "LOW", - "PrimaryURL": "https://avd.aquasec.com/misconfig/avd-aws-0089", - "References": [ - "https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerLogs.html", - "https://avd.aquasec.com/misconfig/avd-aws-0089" - ], - "Status": "FAIL", - "Layer": {}, - "CauseMetadata": { - "Resource": "aws_s3_bucket.bucket", - "Provider": "AWS", - "Service": "s3", - "StartLine": 8, - "EndLine": 10, - "Code": { - "Lines": [ - { - "Number": 8, - "Content": "resource \"aws_s3_bucket\" \"bucket\" {", - "IsCause": true, - "Annotation": "", - "Truncated": false, - "Highlighted": "\u001b[38;5;33mresource\u001b[0m \u001b[38;5;37m\"aws_s3_bucket\"\u001b[0m \u001b[38;5;37m\"bucket\"\u001b[0m {", - "FirstCause": true, - "LastCause": false - }, - { - "Number": 9, - "Content": " bucket = \"trivy-action-bucket\"", - "IsCause": true, - "Annotation": "", - "Truncated": false, - "Highlighted": " \u001b[38;5;245mbucket\u001b[0m = \u001b[38;5;37m\"trivy-action-bucket\"", - "FirstCause": false, - "LastCause": false - }, - { - "Number": 10, - "Content": "}", - "IsCause": true, - "Annotation": "", - "Truncated": false, - "Highlighted": "\u001b[0m}", - "FirstCause": false, - "LastCause": true - } - ] - } - } - } - ] - } - ] -} diff --git a/.github/actions/trivy-action-0.28.0/test/data/fs-scan/report b/.github/actions/trivy-action-0.28.0/test/data/fs-scan/report deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/actions/trivy-action-0.28.0/test/data/github-dep-snapshot/report.gsbom b/.github/actions/trivy-action-0.28.0/test/data/github-dep-snapshot/report.gsbom deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/actions/trivy-action-0.28.0/test/data/image-scan/report b/.github/actions/trivy-action-0.28.0/test/data/image-scan/report deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/actions/trivy-action-0.28.0/test/data/rootfs-scan/report b/.github/actions/trivy-action-0.28.0/test/data/rootfs-scan/report deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/actions/trivy-action-0.28.0/test/data/secret-scan/report.json b/.github/actions/trivy-action-0.28.0/test/data/secret-scan/report.json deleted file mode 100644 index b7bc4dcad..000000000 --- a/.github/actions/trivy-action-0.28.0/test/data/secret-scan/report.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "SchemaVersion": 2, - "ArtifactName": "https://github.com/krol3/demo-trivy/", - "ArtifactType": "repository", - "Metadata": { - "ImageConfig": { - "architecture": "", - "created": "0001-01-01T00:00:00Z", - "os": "", - "rootfs": { - "type": "", - "diff_ids": null - }, - "config": {} - } - }, - "Results": [ - { - "Target": "env", - "Class": "secret", - "Secrets": [ - { - "RuleID": "github-pat", - "Category": "GitHub", - "Severity": "CRITICAL", - "Title": "GitHub Personal Access Token", - "StartLine": 5, - "EndLine": 5, - "Code": { - "Lines": [ - { - "Number": 3, - "Content": "export AWS_ACCESS_KEY_ID=1234567", - "IsCause": false, - "Annotation": "", - "Truncated": false, - "Highlighted": "export AWS_ACCESS_KEY_ID=1234567", - "FirstCause": false, - "LastCause": false - }, - { - "Number": 4, - "Content": "", - "IsCause": false, - "Annotation": "", - "Truncated": false, - "FirstCause": false, - "LastCause": false - }, - { - "Number": 5, - "Content": "export GITHUB_PAT=****************************************", - "IsCause": true, - "Annotation": "", - "Truncated": false, - "Highlighted": "export GITHUB_PAT=****************************************", - "FirstCause": true, - "LastCause": true - }, - { - "Number": 6, - "Content": "", - "IsCause": false, - "Annotation": "", - "Truncated": false, - "FirstCause": false, - "LastCause": false - } - ] - }, - "Match": "export GITHUB_PAT=****************************************", - "Layer": {} - } - ] - } - ] -} diff --git a/.github/actions/trivy-action-0.28.0/test/data/with-ignore-files/.trivyignore1 b/.github/actions/trivy-action-0.28.0/test/data/with-ignore-files/.trivyignore1 deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/actions/trivy-action-0.28.0/test/data/with-ignore-files/.trivyignore2 b/.github/actions/trivy-action-0.28.0/test/data/with-ignore-files/.trivyignore2 deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/actions/trivy-action-0.28.0/test/data/with-ignore-files/report b/.github/actions/trivy-action-0.28.0/test/data/with-ignore-files/report deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/actions/trivy-action-0.28.0/test/data/with-tf-vars/dev.tfvars b/.github/actions/trivy-action-0.28.0/test/data/with-tf-vars/dev.tfvars deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/actions/trivy-action-0.28.0/test/data/with-tf-vars/main.tf b/.github/actions/trivy-action-0.28.0/test/data/with-tf-vars/main.tf deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/actions/trivy-action-0.28.0/test/data/with-tf-vars/report.json b/.github/actions/trivy-action-0.28.0/test/data/with-tf-vars/report.json deleted file mode 100644 index 981200eb4..000000000 --- a/.github/actions/trivy-action-0.28.0/test/data/with-tf-vars/report.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "SchemaVersion": 2, - "ArtifactName": "test/data/with-tf-vars/main.tf", - "ArtifactType": "filesystem", - "Metadata": { - "ImageConfig": { - "architecture": "", - "created": "0001-01-01T00:00:00Z", - "os": "", - "rootfs": { - "type": "", - "diff_ids": null - }, - "config": {} - } - }, - "Results": [ - { - "Target": ".", - "Class": "config", - "Type": "terraform", - "MisconfSummary": { - "Successes": 2, - "Failures": 0, - "Exceptions": 0 - } - }, - { - "Target": "main.tf", - "Class": "config", - "Type": "terraform" - } - ] -} diff --git a/.github/actions/trivy-action-0.28.0/test/data/with-trivy-yaml-cfg/report.json b/.github/actions/trivy-action-0.28.0/test/data/with-trivy-yaml-cfg/report.json deleted file mode 100644 index fb205384b..000000000 --- a/.github/actions/trivy-action-0.28.0/test/data/with-trivy-yaml-cfg/report.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "SchemaVersion": 2, - "ArtifactName": "alpine:3.10", - "ArtifactType": "container_image", - "Metadata": { - "OS": { - "Family": "alpine", - "Name": "3.10.9", - "EOSL": true - }, - "ImageID": "sha256:e7b300aee9f9bf3433d32bc9305bfdd22183beb59d933b48d77ab56ba53a197a", - "DiffIDs": [ - "sha256:9fb3aa2f8b8023a4bebbf92aa567caf88e38e969ada9f0ac12643b2847391635" - ], - "RepoTags": [ - "alpine:3.10" - ], - "RepoDigests": [ - "alpine@sha256:451eee8bedcb2f029756dc3e9d73bab0e7943c1ac55cff3a4861c52a0fdd3e98" - ], - "ImageConfig": { - "architecture": "amd64", - "container": "fdb7e80e3339e8d0599282e606c907aa5881ee4c668a68136119e6dfac6ce3a4", - "created": "2021-04-14T19:20:05.338397761Z", - "docker_version": "19.03.12", - "history": [ - { - "created": "2021-04-14T19:20:04.987219124Z", - "created_by": "/bin/sh -c #(nop) ADD file:c5377eaa926bf412dd8d4a08b0a1f2399cfd708743533b0aa03b53d14cb4bb4e in / " - }, - { - "created": "2021-04-14T19:20:05.338397761Z", - "created_by": "/bin/sh -c #(nop) CMD [\"/bin/sh\"]", - "empty_layer": true - } - ], - "os": "linux", - "rootfs": { - "type": "layers", - "diff_ids": [ - "sha256:9fb3aa2f8b8023a4bebbf92aa567caf88e38e969ada9f0ac12643b2847391635" - ] - }, - "config": { - "Cmd": [ - "/bin/sh" - ], - "Env": [ - "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" - ], - "Image": "sha256:eb2080c455e94c22ae35b3aef9e078c492a00795412e026e4d6b41ef64bc7dd8" - } - } - }, - "Results": [ - { - "Target": "alpine:3.10 (alpine 3.10.9)", - "Class": "os-pkgs", - "Type": "alpine", - "Vulnerabilities": [ - { - "VulnerabilityID": "CVE-2021-36159", - "PkgID": "apk-tools@2.10.6-r0", - "PkgName": "apk-tools", - "PkgIdentifier": { - "PURL": "pkg:apk/alpine/apk-tools@2.10.6-r0?arch=x86_64&distro=3.10.9", - "UID": "99f6581ffed6b22" - }, - "InstalledVersion": "2.10.6-r0", - "FixedVersion": "2.10.7-r0", - "Status": "fixed", - "Layer": { - "Digest": "sha256:396c31837116ac290458afcb928f68b6cc1c7bdd6963fc72f52f365a2a89c1b5", - "DiffID": "sha256:9fb3aa2f8b8023a4bebbf92aa567caf88e38e969ada9f0ac12643b2847391635" - }, - "SeveritySource": "nvd", - "PrimaryURL": "https://avd.aquasec.com/nvd/cve-2021-36159", - "DataSource": { - "ID": "alpine", - "Name": "Alpine Secdb", - "URL": "https://secdb.alpinelinux.org/" - }, - "Title": "libfetch: an out of boundary read while libfetch uses strtol to parse the relevant numbers into address bytes leads to information leak or crash", - "Description": "libfetch before 2021-07-26, as used in apk-tools, xbps, and other products, mishandles numeric strings for the FTP and HTTP protocols. The FTP passive mode implementation allows an out-of-bounds read because strtol is used to parse the relevant numbers into address bytes. It does not check if the line ends prematurely. If it does, the for-loop condition checks for the '\\0' terminator one byte too late.", - "Severity": "CRITICAL", - "CweIDs": [ - "CWE-125" - ], - "VendorSeverity": { - "nvd": 4, - "redhat": 3 - }, - "CVSS": { - "nvd": { - "V2Vector": "AV:N/AC:L/Au:N/C:P/I:N/A:P", - "V3Vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H", - "V2Score": 6.4, - "V3Score": 9.1 - }, - "redhat": { - "V3Vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H", - "V3Score": 9.1 - } - }, - "References": [ - "https://access.redhat.com/security/cve/CVE-2021-36159", - "https://github.com/freebsd/freebsd-src/commits/main/lib/libfetch", - "https://gitlab.alpinelinux.org/alpine/apk-tools/-/issues/10749", - "https://lists.apache.org/thread.html/r61db8e7dcb56dc000a5387a88f7a473bacec5ee01b9ff3f55308aacc%40%3Cdev.kafka.apache.org%3E", - "https://lists.apache.org/thread.html/r61db8e7dcb56dc000a5387a88f7a473bacec5ee01b9ff3f55308aacc%40%3Cusers.kafka.apache.org%3E", - "https://lists.apache.org/thread.html/rbf4ce74b0d1fa9810dec50ba3ace0caeea677af7c27a97111c06ccb7%40%3Cdev.kafka.apache.org%3E", - "https://lists.apache.org/thread.html/rbf4ce74b0d1fa9810dec50ba3ace0caeea677af7c27a97111c06ccb7%40%3Cusers.kafka.apache.org%3E", - "https://nvd.nist.gov/vuln/detail/CVE-2021-36159", - "https://www.cve.org/CVERecord?id=CVE-2021-36159" - ], - "PublishedDate": "2021-08-03T14:15:08.233Z", - "LastModifiedDate": "2023-11-07T03:36:43.337Z" - } - ] - } - ] -} diff --git a/.github/actions/trivy-action-0.28.0/test/data/with-trivy-yaml-cfg/trivy.yaml b/.github/actions/trivy-action-0.28.0/test/data/with-trivy-yaml-cfg/trivy.yaml deleted file mode 100644 index 33fdd4e6f..000000000 --- a/.github/actions/trivy-action-0.28.0/test/data/with-trivy-yaml-cfg/trivy.yaml +++ /dev/null @@ -1,5 +0,0 @@ -format: json -severity: CRITICAL -vulnerability: - type: os -output: yamlconfig.json \ No newline at end of file diff --git a/.github/actions/trivy-action-0.28.0/test/test.bats b/.github/actions/trivy-action-0.28.0/test/test.bats deleted file mode 100644 index e69de29bb..000000000 diff --git a/.github/actions/trivy-action-0.28.0/workflow.yml b/.github/actions/trivy-action-0.28.0/workflow.yml deleted file mode 100644 index ceae9d1db..000000000 --- a/.github/actions/trivy-action-0.28.0/workflow.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: build -on: - push: - branches: - - master - pull_request: -jobs: - build: - name: Build - runs-on: ubuntu-20.04 - steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Build an image from Dockerfile - run: | - docker build -t docker.io/my-organization/my-app:${{ github.sha }} . - - - name: Run Trivy vulnerability scanner - uses: aquasecurity/trivy-action@master - with: - image-ref: 'docker.io/my-organization/my-app:${{ github.sha }}' - exit-code: '1' - ignore-unfixed: true - vuln-type: 'os,library' - format: 'template' - template: '@/contrib/sarif.tpl' - output: 'trivy-results.sarif' - severity: 'CRITICAL,HIGH' - - - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@v3 - with: - sarif_file: 'trivy-results.sarif' \ No newline at end of file diff --git a/.github/workflows/trivy-db-download.yaml b/.github/workflows/trivy-db-download.yaml deleted file mode 100644 index e2744f1da..000000000 --- a/.github/workflows/trivy-db-download.yaml +++ /dev/null @@ -1,48 +0,0 @@ -# Copyright 2024, Oracle Corporation and/or its affiliates. All rights reserved. -# Licensed under the Universal Permissive License v 1.0 as shown at -# http://oss.oracle.com/licenses/upl. - -# Note: This workflow only updates the cache. You should create a separate workflow for your actual Trivy scans. -# In your scan workflow, set TRIVY_SKIP_DB_UPDATE=true and TRIVY_SKIP_JAVA_DB_UPDATE=true. -name: Update Trivy Cache - -on: - schedule: - - cron: '0 0 * * *' # Run daily at midnight UTC - workflow_dispatch: # Allow manual triggering - -jobs: - update-trivy-db: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Setup oras - uses: ./.github/actions/setup-oras-1.2.1 - - - name: Get current date - id: date - run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT - - - name: Download and extract the vulnerability DB - run: | - mkdir -p $GITHUB_WORKSPACE/.cache/trivy/db - oras pull ghcr.io/aquasecurity/trivy-db:2 - tar -xzf db.tar.gz -C $GITHUB_WORKSPACE/.cache/trivy/db - rm db.tar.gz - - - name: Download and extract the Java DB - run: | - mkdir -p $GITHUB_WORKSPACE/.cache/trivy/java-db - oras pull ghcr.io/aquasecurity/trivy-java-db:1 - tar -xzf javadb.tar.gz -C $GITHUB_WORKSPACE/.cache/trivy/java-db - rm javadb.tar.gz - - - name: Cache DBs - uses: actions/cache/save@v4 - with: - path: ${{ github.workspace }}/.cache/trivy - key: cache-trivy-${{ steps.date.outputs.date }} diff --git a/.github/workflows/trivy.yaml b/.github/workflows/trivy.yaml index 313bc1cae..a69881dfb 100644 --- a/.github/workflows/trivy.yaml +++ b/.github/workflows/trivy.yaml @@ -62,19 +62,8 @@ jobs: sudo chown -R runner:runner /run/systemd/resolve/stub-resolv.conf sudo echo nameserver 8.8.8.8 > /run/systemd/resolve/stub-resolv.conf - - name: Build Image + - name: Image Scan shell: bash run: | - export VERSION=${{ github.sha }} - make build-operator-images - - - name: Run Trivy scanner without downloading DBs - uses: ./.github/actions/trivy-action-0.28.0 - with: - image-ref: 'ghcr.io/oracle/coherence-operator:${{ github.sha }}' - format: 'table' - exit-code: '1' - ignore-unfixed: true - env: - TRIVY_SKIP_DB_UPDATE: true - TRIVY_SKIP_JAVA_DB_UPDATE: true + echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $ --password-stdin + make trivy-scan From 56b61b993de78f1a650bbb7411e02f513d69708f Mon Sep 17 00:00:00 2001 From: Jonathan Knight Date: Fri, 25 Oct 2024 18:29:27 +0300 Subject: [PATCH 3/6] Update Trivy GitHub workflows --- .../setup-oras-1.2.1/.github/dependabot.yml | 30 + .../setup-oras-1.2.1/.github/licenserc.yml | 42 + .../.github/workflows/check-dist.yml | 47 + .../.github/workflows/license-checker.yml | 44 + .../.github/workflows/test.yml | 136 + .../.github/workflows/update-version.yml | 61 + .github/actions/setup-oras-1.2.1/.gitignore | 0 .github/actions/setup-oras-1.2.1/CODEOWNERS | 0 .../setup-oras-1.2.1/CODE_OF_CONDUCT.md | 0 .github/actions/setup-oras-1.2.1/LICENSE | 0 .github/actions/setup-oras-1.2.1/OWNERS.md | 0 .github/actions/setup-oras-1.2.1/README.md | 0 .github/actions/setup-oras-1.2.1/SECURITY.md | 0 .github/actions/setup-oras-1.2.1/action.yml | 32 + .../actions/setup-oras-1.2.1/dist/README.md | 0 .../actions/setup-oras-1.2.1/dist/index.js | 6516 +++++++++++++++++ .../setup-oras-1.2.1/dist/licenses.txt | 0 .../setup-oras-1.2.1/package-lock.json | 121 + .github/actions/setup-oras-1.2.1/package.json | 26 + .../setup-oras-1.2.1/src/lib/checksum.ts | 0 .../src/lib/data/releases.json | 160 + .../setup-oras-1.2.1/src/lib/release.ts | 0 .github/actions/setup-oras-1.2.1/src/setup.ts | 0 .../actions/setup-oras-1.2.1/tsconfig.json | 0 .github/workflows/trivy.yaml | 22 + Makefile | 6 + 26 files changed, 7243 insertions(+) create mode 100644 .github/actions/setup-oras-1.2.1/.github/dependabot.yml create mode 100644 .github/actions/setup-oras-1.2.1/.github/licenserc.yml create mode 100644 .github/actions/setup-oras-1.2.1/.github/workflows/check-dist.yml create mode 100644 .github/actions/setup-oras-1.2.1/.github/workflows/license-checker.yml create mode 100644 .github/actions/setup-oras-1.2.1/.github/workflows/test.yml create mode 100644 .github/actions/setup-oras-1.2.1/.github/workflows/update-version.yml create mode 100644 .github/actions/setup-oras-1.2.1/.gitignore create mode 100644 .github/actions/setup-oras-1.2.1/CODEOWNERS create mode 100644 .github/actions/setup-oras-1.2.1/CODE_OF_CONDUCT.md create mode 100644 .github/actions/setup-oras-1.2.1/LICENSE create mode 100644 .github/actions/setup-oras-1.2.1/OWNERS.md create mode 100644 .github/actions/setup-oras-1.2.1/README.md create mode 100644 .github/actions/setup-oras-1.2.1/SECURITY.md create mode 100644 .github/actions/setup-oras-1.2.1/action.yml create mode 100644 .github/actions/setup-oras-1.2.1/dist/README.md create mode 100644 .github/actions/setup-oras-1.2.1/dist/index.js create mode 100644 .github/actions/setup-oras-1.2.1/dist/licenses.txt create mode 100644 .github/actions/setup-oras-1.2.1/package-lock.json create mode 100644 .github/actions/setup-oras-1.2.1/package.json create mode 100644 .github/actions/setup-oras-1.2.1/src/lib/checksum.ts create mode 100644 .github/actions/setup-oras-1.2.1/src/lib/data/releases.json create mode 100644 .github/actions/setup-oras-1.2.1/src/lib/release.ts create mode 100644 .github/actions/setup-oras-1.2.1/src/setup.ts create mode 100644 .github/actions/setup-oras-1.2.1/tsconfig.json diff --git a/.github/actions/setup-oras-1.2.1/.github/dependabot.yml b/.github/actions/setup-oras-1.2.1/.github/dependabot.yml new file mode 100644 index 000000000..7c18f317a --- /dev/null +++ b/.github/actions/setup-oras-1.2.1/.github/dependabot.yml @@ -0,0 +1,30 @@ +# Copyright The ORAS Authors. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +version: 2 + +updates: + - package-ecosystem: "github-actions" + # Workflow files stored in the + # default location of `.github/workflows` + directory: "/" + schedule: + interval: "weekly" + labels: + - "dependencies" + - package-ecosystem: "npm" + directory: "/" + schedule: + interval: "weekly" + labels: + - "dependencies" diff --git a/.github/actions/setup-oras-1.2.1/.github/licenserc.yml b/.github/actions/setup-oras-1.2.1/.github/licenserc.yml new file mode 100644 index 000000000..5bbadf503 --- /dev/null +++ b/.github/actions/setup-oras-1.2.1/.github/licenserc.yml @@ -0,0 +1,42 @@ +# Copyright The ORAS Authors. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +header: + license: + spdx-id: Apache-2.0 + content: | + Copyright The ORAS Authors. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + paths-ignore: + - '**/*.json' + - '**/*.md' + - 'dist/**' + - 'CODEOWNERS' + - 'LICENSE' + + comment: on-failure + +dependency: + files: + - package.json diff --git a/.github/actions/setup-oras-1.2.1/.github/workflows/check-dist.yml b/.github/actions/setup-oras-1.2.1/.github/workflows/check-dist.yml new file mode 100644 index 000000000..8cb247589 --- /dev/null +++ b/.github/actions/setup-oras-1.2.1/.github/workflows/check-dist.yml @@ -0,0 +1,47 @@ +# Copyright The ORAS Authors. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: Check dist/ + +on: + push: + paths-ignore: + - '**.md' + pull_request: + paths-ignore: + - '**.md' + workflow_dispatch: + +jobs: + check-dist: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: remove js files in dist/ + run: find dist/ -type f \( -name "*.json" -o -name "*.js" -o -name "*.js.map" \) -delete + - name: Setup Node 16.x + uses: actions/setup-node@v4 + with: + node-version: 16.x + cache: npm + - name: Install dependencies + run: npm install + - name: Rebuild the dist/ directory + run: npm run build + - name: Compare the expected and actual dist/ directories + run: | + if [ "$(git diff --ignore-space-at-eol dist/ | wc -l)" -gt "0" ]; then + echo "DIFFERENCES DETECTED: 'npm run build' is needed after code changes. See status below:" + git diff + exit 1 + fi \ No newline at end of file diff --git a/.github/actions/setup-oras-1.2.1/.github/workflows/license-checker.yml b/.github/actions/setup-oras-1.2.1/.github/workflows/license-checker.yml new file mode 100644 index 000000000..d09a0ede9 --- /dev/null +++ b/.github/actions/setup-oras-1.2.1/.github/workflows/license-checker.yml @@ -0,0 +1,44 @@ +# Copyright The ORAS Authors. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: License Checker + +on: + push: + branches: + - main + - release-* + pull_request: + branches: + - main + - release-* + +permissions: + contents: write + pull-requests: write + +jobs: + check-license: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Check license header + uses: apache/skywalking-eyes/header@v0.6.0 + with: + mode: check + config: .github/licenserc.yml + - name: Check dependencies license + uses: apache/skywalking-eyes/dependency@v0.6.0 + with: + config: .github/licenserc.yml diff --git a/.github/actions/setup-oras-1.2.1/.github/workflows/test.yml b/.github/actions/setup-oras-1.2.1/.github/workflows/test.yml new file mode 100644 index 000000000..e76c0a7bb --- /dev/null +++ b/.github/actions/setup-oras-1.2.1/.github/workflows/test.yml @@ -0,0 +1,136 @@ +# Copyright The ORAS Authors. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: Tests + +on: + push: + branches: + - main + - release-* + pull_request: + branches: + - main + - release-* + +defaults: + run: + shell: bash + +jobs: + test-basic-setup: + name: Test Setup ORAS CLI + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [macos-latest, windows-latest, ubuntu-latest] + version: + - 1.1.0 + - 1.2.0 + fail-fast: true + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup ORAS v${{ matrix.version }} + uses: ./ + with: + version: ${{ matrix.version }} + + - name: Verify ORAS version installed + env: + ORAS_VERSION_EXPECTED: ${{ matrix.version }} + run: | + echo --- + oras version + echo --- + read -ra ORAS_VERSION_INSTALLED <<<$(oras version) + [ "${ORAS_VERSION_INSTALLED[1]}" == "$ORAS_VERSION_EXPECTED" ] + + create-test-variables: + runs-on: ubuntu-latest + outputs: + url: ${{ steps.get-checksum-url.outputs.URL }} + checksum: ${{ steps.get-checksum-url.outputs.CHECKSUM }} + steps: + - id: checkout + uses: actions/checkout@v4 + - id: get-checksum-url + run: | + RELEASE=$(jq -r 'keys_unsorted[0] as $k | .[$k].linux.amd64' src/lib/data/releases.json) + echo "CHECKSUM=$(echo $RELEASE | jq -r '.checksum')" >> "$GITHUB_OUTPUT" + echo "URL=$(echo $RELEASE | jq -r '.url')" >> "$GITHUB_OUTPUT" + + test-custom-url: + name: Test Setup using URL + runs-on: ubuntu-latest + needs: create-test-variables + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup ORAS using URL + uses: ./ + with: + url: ${{ needs.create-test-variables.outputs.url }} + checksum: ${{ needs.create-test-variables.outputs.checksum }} + + - name: Setup ORAS using URL without checksum + id: no-checksum + continue-on-error: true + uses: ./ + with: + url: ${{ needs.create-test-variables.outputs.url }} + - name: 'Should Fail: Setup ORAS using URL without checksum' + if: steps.no-checksum.outcome != 'failure' + run: | + echo "Setup ORAS using URL without checksum should fail, but succeeded." + exit 1 + + - name: Setup ORAS using checksum without url + id: no-url + continue-on-error: true + uses: ./ + with: + checksum: ${{ needs.create-test-variables.outputs.checksum }} + - name: 'Should Fail: Setup ORAS using checksum without url' + if: steps.no-url.outcome != 'failure' + run: | + echo "Setup ORAS using checksum without url should fail, but succeeded." + exit 1 + + - name: Setup ORAS using URL and invalid checksum + id: invalid-checksum + continue-on-error: true + uses: ./ + with: + url: ${{ needs.create-test-variables.outputs.url }} + checksum: abcedf + - name: 'Should Fail: Setup ORAS using URL and invalid checksum' + if: steps.invalid-checksum.outcome != 'failure' + run: | + echo "Setup ORAS using URL and invalid checksum should fail, but succeeded." + exit 1 + + - name: Setup ORAS using invalid URL + id: invalid-url + continue-on-error: true + uses: ./ + with: + url: invalid-url + checksum: test + - name: 'Should Fail: Setup ORAS using invalid URL' + if: steps.invalid-url.outcome != 'failure' + run: | + echo "Setup ORAS using invalid URL should fail, but succeeded." + exit 1 diff --git a/.github/actions/setup-oras-1.2.1/.github/workflows/update-version.yml b/.github/actions/setup-oras-1.2.1/.github/workflows/update-version.yml new file mode 100644 index 000000000..7b97503a1 --- /dev/null +++ b/.github/actions/setup-oras-1.2.1/.github/workflows/update-version.yml @@ -0,0 +1,61 @@ +# Copyright The ORAS Authors. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: Update major and minor tags + +on: + release: + types: [published] + +jobs: + update-major-minor-tags: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + ref: ${{ github.event.release.tag_name }} + - name: Git config + run: | + git config user.name github-actions + git config user.email github-actions@github.com + - name: Tag and push new major and minor versions + run: | + VERSION=${{ github.event.release.tag_name }} + MAJOR=$(echo ${VERSION} | cut -d '.' -f 1) + MINOR=${MAJOR}.$(echo ${VERSION} | cut -d '.' -f 2) + if [ -z ${VERSION} ] + then + echo "released tag cannot be empty" + exit 1 + else + echo "released tag is ${VERSION}" + fi + if [ -z ${MAJOR} ] + then + echo "major tag cannot be empty" + exit 1 + else + echo "major tag is ${MAJOR}" + fi + if [ -z ${MINOR} ] + then + echo "minor tag cannot be empty" + exit 1 + else + echo "minor tag is ${MINOR}" + fi + git tag -f ${MAJOR} ${VERSION} + git tag -f ${MINOR} ${VERSION} + git push origin ${MAJOR} --force + git push origin ${MINOR} --force \ No newline at end of file diff --git a/.github/actions/setup-oras-1.2.1/.gitignore b/.github/actions/setup-oras-1.2.1/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/.github/actions/setup-oras-1.2.1/CODEOWNERS b/.github/actions/setup-oras-1.2.1/CODEOWNERS new file mode 100644 index 000000000..e69de29bb diff --git a/.github/actions/setup-oras-1.2.1/CODE_OF_CONDUCT.md b/.github/actions/setup-oras-1.2.1/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..e69de29bb diff --git a/.github/actions/setup-oras-1.2.1/LICENSE b/.github/actions/setup-oras-1.2.1/LICENSE new file mode 100644 index 000000000..e69de29bb diff --git a/.github/actions/setup-oras-1.2.1/OWNERS.md b/.github/actions/setup-oras-1.2.1/OWNERS.md new file mode 100644 index 000000000..e69de29bb diff --git a/.github/actions/setup-oras-1.2.1/README.md b/.github/actions/setup-oras-1.2.1/README.md new file mode 100644 index 000000000..e69de29bb diff --git a/.github/actions/setup-oras-1.2.1/SECURITY.md b/.github/actions/setup-oras-1.2.1/SECURITY.md new file mode 100644 index 000000000..e69de29bb diff --git a/.github/actions/setup-oras-1.2.1/action.yml b/.github/actions/setup-oras-1.2.1/action.yml new file mode 100644 index 000000000..af3b35e1d --- /dev/null +++ b/.github/actions/setup-oras-1.2.1/action.yml @@ -0,0 +1,32 @@ +# Copyright The ORAS Authors. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: setup-oras +description: Setup ORAS CLI on GitHub Actions runners +branding: + icon: box + color: blue +inputs: + version: + description: Version of the official ORAS CLI to install + required: false + default: 1.2.0 + url: + description: URL of the customized ORAS CLI to install. Required if 'checksum' is present. + required: false + checksum: + description: SHA256 of the customized ORAS CLI. Required if 'url' is present. + required: false +runs: + using: node20 + main: dist/index.js diff --git a/.github/actions/setup-oras-1.2.1/dist/README.md b/.github/actions/setup-oras-1.2.1/dist/README.md new file mode 100644 index 000000000..e69de29bb diff --git a/.github/actions/setup-oras-1.2.1/dist/index.js b/.github/actions/setup-oras-1.2.1/dist/index.js new file mode 100644 index 000000000..361fe932e --- /dev/null +++ b/.github/actions/setup-oras-1.2.1/dist/index.js @@ -0,0 +1,6516 @@ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ 914: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.issue = exports.issueCommand = void 0; +const os = __importStar(__nccwpck_require__(857)); +const utils_1 = __nccwpck_require__(302); +/** + * Commands + * + * Command Format: + * ::name key=value,key=value::message + * + * Examples: + * ::warning::This is the message + * ::set-env name=MY_VAR::some value + */ +function issueCommand(command, properties, message) { + const cmd = new Command(command, properties, message); + process.stdout.write(cmd.toString() + os.EOL); +} +exports.issueCommand = issueCommand; +function issue(name, message = '') { + issueCommand(name, {}, message); +} +exports.issue = issue; +const CMD_STRING = '::'; +class Command { + constructor(command, properties, message) { + if (!command) { + command = 'missing.command'; + } + this.command = command; + this.properties = properties; + this.message = message; + } + toString() { + let cmdStr = CMD_STRING + this.command; + if (this.properties && Object.keys(this.properties).length > 0) { + cmdStr += ' '; + let first = true; + for (const key in this.properties) { + if (this.properties.hasOwnProperty(key)) { + const val = this.properties[key]; + if (val) { + if (first) { + first = false; + } + else { + cmdStr += ','; + } + cmdStr += `${key}=${escapeProperty(val)}`; + } + } + } + } + cmdStr += `${CMD_STRING}${escapeData(this.message)}`; + return cmdStr; + } +} +function escapeData(s) { + return (0, utils_1.toCommandValue)(s) + .replace(/%/g, '%25') + .replace(/\r/g, '%0D') + .replace(/\n/g, '%0A'); +} +function escapeProperty(s) { + return (0, utils_1.toCommandValue)(s) + .replace(/%/g, '%25') + .replace(/\r/g, '%0D') + .replace(/\n/g, '%0A') + .replace(/:/g, '%3A') + .replace(/,/g, '%2C'); +} +//# sourceMappingURL=command.js.map + +/***/ }), + +/***/ 484: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.platform = exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = exports.markdownSummary = exports.summary = exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0; +const command_1 = __nccwpck_require__(914); +const file_command_1 = __nccwpck_require__(753); +const utils_1 = __nccwpck_require__(302); +const os = __importStar(__nccwpck_require__(857)); +const path = __importStar(__nccwpck_require__(928)); +const oidc_utils_1 = __nccwpck_require__(306); +/** + * The code to exit an action + */ +var ExitCode; +(function (ExitCode) { + /** + * A code indicating that the action was successful + */ + ExitCode[ExitCode["Success"] = 0] = "Success"; + /** + * A code indicating that the action was a failure + */ + ExitCode[ExitCode["Failure"] = 1] = "Failure"; +})(ExitCode || (exports.ExitCode = ExitCode = {})); +//----------------------------------------------------------------------- +// Variables +//----------------------------------------------------------------------- +/** + * Sets env variable for this action and future actions in the job + * @param name the name of the variable to set + * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function exportVariable(name, val) { + const convertedVal = (0, utils_1.toCommandValue)(val); + process.env[name] = convertedVal; + const filePath = process.env['GITHUB_ENV'] || ''; + if (filePath) { + return (0, file_command_1.issueFileCommand)('ENV', (0, file_command_1.prepareKeyValueMessage)(name, val)); + } + (0, command_1.issueCommand)('set-env', { name }, convertedVal); +} +exports.exportVariable = exportVariable; +/** + * Registers a secret which will get masked from logs + * @param secret value of the secret + */ +function setSecret(secret) { + (0, command_1.issueCommand)('add-mask', {}, secret); +} +exports.setSecret = setSecret; +/** + * Prepends inputPath to the PATH (for this action and future actions) + * @param inputPath + */ +function addPath(inputPath) { + const filePath = process.env['GITHUB_PATH'] || ''; + if (filePath) { + (0, file_command_1.issueFileCommand)('PATH', inputPath); + } + else { + (0, command_1.issueCommand)('add-path', {}, inputPath); + } + process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`; +} +exports.addPath = addPath; +/** + * Gets the value of an input. + * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed. + * Returns an empty string if the value is not defined. + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns string + */ +function getInput(name, options) { + const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || ''; + if (options && options.required && !val) { + throw new Error(`Input required and not supplied: ${name}`); + } + if (options && options.trimWhitespace === false) { + return val; + } + return val.trim(); +} +exports.getInput = getInput; +/** + * Gets the values of an multiline input. Each value is also trimmed. + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns string[] + * + */ +function getMultilineInput(name, options) { + const inputs = getInput(name, options) + .split('\n') + .filter(x => x !== ''); + if (options && options.trimWhitespace === false) { + return inputs; + } + return inputs.map(input => input.trim()); +} +exports.getMultilineInput = getMultilineInput; +/** + * Gets the input value of the boolean type in the YAML 1.2 "core schema" specification. + * Support boolean input list: `true | True | TRUE | false | False | FALSE` . + * The return value is also in boolean type. + * ref: https://yaml.org/spec/1.2/spec.html#id2804923 + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns boolean + */ +function getBooleanInput(name, options) { + const trueValue = ['true', 'True', 'TRUE']; + const falseValue = ['false', 'False', 'FALSE']; + const val = getInput(name, options); + if (trueValue.includes(val)) + return true; + if (falseValue.includes(val)) + return false; + throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${name}\n` + + `Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); +} +exports.getBooleanInput = getBooleanInput; +/** + * Sets the value of an output. + * + * @param name name of the output to set + * @param value value to store. Non-string values will be converted to a string via JSON.stringify + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function setOutput(name, value) { + const filePath = process.env['GITHUB_OUTPUT'] || ''; + if (filePath) { + return (0, file_command_1.issueFileCommand)('OUTPUT', (0, file_command_1.prepareKeyValueMessage)(name, value)); + } + process.stdout.write(os.EOL); + (0, command_1.issueCommand)('set-output', { name }, (0, utils_1.toCommandValue)(value)); +} +exports.setOutput = setOutput; +/** + * Enables or disables the echoing of commands into stdout for the rest of the step. + * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set. + * + */ +function setCommandEcho(enabled) { + (0, command_1.issue)('echo', enabled ? 'on' : 'off'); +} +exports.setCommandEcho = setCommandEcho; +//----------------------------------------------------------------------- +// Results +//----------------------------------------------------------------------- +/** + * Sets the action status to failed. + * When the action exits it will be with an exit code of 1 + * @param message add error issue message + */ +function setFailed(message) { + process.exitCode = ExitCode.Failure; + error(message); +} +exports.setFailed = setFailed; +//----------------------------------------------------------------------- +// Logging Commands +//----------------------------------------------------------------------- +/** + * Gets whether Actions Step Debug is on or not + */ +function isDebug() { + return process.env['RUNNER_DEBUG'] === '1'; +} +exports.isDebug = isDebug; +/** + * Writes debug message to user log + * @param message debug message + */ +function debug(message) { + (0, command_1.issueCommand)('debug', {}, message); +} +exports.debug = debug; +/** + * Adds an error issue + * @param message error issue message. Errors will be converted to string via toString() + * @param properties optional properties to add to the annotation. + */ +function error(message, properties = {}) { + (0, command_1.issueCommand)('error', (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message); +} +exports.error = error; +/** + * Adds a warning issue + * @param message warning issue message. Errors will be converted to string via toString() + * @param properties optional properties to add to the annotation. + */ +function warning(message, properties = {}) { + (0, command_1.issueCommand)('warning', (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message); +} +exports.warning = warning; +/** + * Adds a notice issue + * @param message notice issue message. Errors will be converted to string via toString() + * @param properties optional properties to add to the annotation. + */ +function notice(message, properties = {}) { + (0, command_1.issueCommand)('notice', (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message); +} +exports.notice = notice; +/** + * Writes info to log with console.log. + * @param message info message + */ +function info(message) { + process.stdout.write(message + os.EOL); +} +exports.info = info; +/** + * Begin an output group. + * + * Output until the next `groupEnd` will be foldable in this group + * + * @param name The name of the output group + */ +function startGroup(name) { + (0, command_1.issue)('group', name); +} +exports.startGroup = startGroup; +/** + * End an output group. + */ +function endGroup() { + (0, command_1.issue)('endgroup'); +} +exports.endGroup = endGroup; +/** + * Wrap an asynchronous function call in a group. + * + * Returns the same type as the function itself. + * + * @param name The name of the group + * @param fn The function to wrap in the group + */ +function group(name, fn) { + return __awaiter(this, void 0, void 0, function* () { + startGroup(name); + let result; + try { + result = yield fn(); + } + finally { + endGroup(); + } + return result; + }); +} +exports.group = group; +//----------------------------------------------------------------------- +// Wrapper action state +//----------------------------------------------------------------------- +/** + * Saves state for current action, the state can only be retrieved by this action's post job execution. + * + * @param name name of the state to store + * @param value value to store. Non-string values will be converted to a string via JSON.stringify + */ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +function saveState(name, value) { + const filePath = process.env['GITHUB_STATE'] || ''; + if (filePath) { + return (0, file_command_1.issueFileCommand)('STATE', (0, file_command_1.prepareKeyValueMessage)(name, value)); + } + (0, command_1.issueCommand)('save-state', { name }, (0, utils_1.toCommandValue)(value)); +} +exports.saveState = saveState; +/** + * Gets the value of an state set by this action's main execution. + * + * @param name name of the state to get + * @returns string + */ +function getState(name) { + return process.env[`STATE_${name}`] || ''; +} +exports.getState = getState; +function getIDToken(aud) { + return __awaiter(this, void 0, void 0, function* () { + return yield oidc_utils_1.OidcClient.getIDToken(aud); + }); +} +exports.getIDToken = getIDToken; +/** + * Summary exports + */ +var summary_1 = __nccwpck_require__(847); +Object.defineProperty(exports, "summary", ({ enumerable: true, get: function () { return summary_1.summary; } })); +/** + * @deprecated use core.summary + */ +var summary_2 = __nccwpck_require__(847); +Object.defineProperty(exports, "markdownSummary", ({ enumerable: true, get: function () { return summary_2.markdownSummary; } })); +/** + * Path exports + */ +var path_utils_1 = __nccwpck_require__(976); +Object.defineProperty(exports, "toPosixPath", ({ enumerable: true, get: function () { return path_utils_1.toPosixPath; } })); +Object.defineProperty(exports, "toWin32Path", ({ enumerable: true, get: function () { return path_utils_1.toWin32Path; } })); +Object.defineProperty(exports, "toPlatformPath", ({ enumerable: true, get: function () { return path_utils_1.toPlatformPath; } })); +/** + * Platform utilities exports + */ +exports.platform = __importStar(__nccwpck_require__(968)); +//# sourceMappingURL=core.js.map + +/***/ }), + +/***/ 753: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +// For internal use, subject to change. +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.prepareKeyValueMessage = exports.issueFileCommand = void 0; +// We use any as a valid input type +/* eslint-disable @typescript-eslint/no-explicit-any */ +const crypto = __importStar(__nccwpck_require__(982)); +const fs = __importStar(__nccwpck_require__(896)); +const os = __importStar(__nccwpck_require__(857)); +const utils_1 = __nccwpck_require__(302); +function issueFileCommand(command, message) { + const filePath = process.env[`GITHUB_${command}`]; + if (!filePath) { + throw new Error(`Unable to find environment variable for file command ${command}`); + } + if (!fs.existsSync(filePath)) { + throw new Error(`Missing file at path: ${filePath}`); + } + fs.appendFileSync(filePath, `${(0, utils_1.toCommandValue)(message)}${os.EOL}`, { + encoding: 'utf8' + }); +} +exports.issueFileCommand = issueFileCommand; +function prepareKeyValueMessage(key, value) { + const delimiter = `ghadelimiter_${crypto.randomUUID()}`; + const convertedValue = (0, utils_1.toCommandValue)(value); + // These should realistically never happen, but just in case someone finds a + // way to exploit uuid generation let's not allow keys or values that contain + // the delimiter. + if (key.includes(delimiter)) { + throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter}"`); + } + if (convertedValue.includes(delimiter)) { + throw new Error(`Unexpected input: value should not contain the delimiter "${delimiter}"`); + } + return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`; +} +exports.prepareKeyValueMessage = prepareKeyValueMessage; +//# sourceMappingURL=file-command.js.map + +/***/ }), + +/***/ 306: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.OidcClient = void 0; +const http_client_1 = __nccwpck_require__(844); +const auth_1 = __nccwpck_require__(552); +const core_1 = __nccwpck_require__(484); +class OidcClient { + static createHttpClient(allowRetry = true, maxRetry = 10) { + const requestOptions = { + allowRetries: allowRetry, + maxRetries: maxRetry + }; + return new http_client_1.HttpClient('actions/oidc-client', [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], requestOptions); + } + static getRequestToken() { + const token = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN']; + if (!token) { + throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable'); + } + return token; + } + static getIDTokenUrl() { + const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL']; + if (!runtimeUrl) { + throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable'); + } + return runtimeUrl; + } + static getCall(id_token_url) { + var _a; + return __awaiter(this, void 0, void 0, function* () { + const httpclient = OidcClient.createHttpClient(); + const res = yield httpclient + .getJson(id_token_url) + .catch(error => { + throw new Error(`Failed to get ID Token. \n + Error Code : ${error.statusCode}\n + Error Message: ${error.message}`); + }); + const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value; + if (!id_token) { + throw new Error('Response json body do not have ID Token field'); + } + return id_token; + }); + } + static getIDToken(audience) { + return __awaiter(this, void 0, void 0, function* () { + try { + // New ID Token is requested from action service + let id_token_url = OidcClient.getIDTokenUrl(); + if (audience) { + const encodedAudience = encodeURIComponent(audience); + id_token_url = `${id_token_url}&audience=${encodedAudience}`; + } + (0, core_1.debug)(`ID token url is ${id_token_url}`); + const id_token = yield OidcClient.getCall(id_token_url); + (0, core_1.setSecret)(id_token); + return id_token; + } + catch (error) { + throw new Error(`Error message: ${error.message}`); + } + }); + } +} +exports.OidcClient = OidcClient; +//# sourceMappingURL=oidc-utils.js.map + +/***/ }), + +/***/ 976: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0; +const path = __importStar(__nccwpck_require__(928)); +/** + * toPosixPath converts the given path to the posix form. On Windows, \\ will be + * replaced with /. + * + * @param pth. Path to transform. + * @return string Posix path. + */ +function toPosixPath(pth) { + return pth.replace(/[\\]/g, '/'); +} +exports.toPosixPath = toPosixPath; +/** + * toWin32Path converts the given path to the win32 form. On Linux, / will be + * replaced with \\. + * + * @param pth. Path to transform. + * @return string Win32 path. + */ +function toWin32Path(pth) { + return pth.replace(/[/]/g, '\\'); +} +exports.toWin32Path = toWin32Path; +/** + * toPlatformPath converts the given path to a platform-specific path. It does + * this by replacing instances of / and \ with the platform-specific path + * separator. + * + * @param pth The path to platformize. + * @return string The platform-specific path. + */ +function toPlatformPath(pth) { + return pth.replace(/[/\\]/g, path.sep); +} +exports.toPlatformPath = toPlatformPath; +//# sourceMappingURL=path-utils.js.map + +/***/ }), + +/***/ 968: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getDetails = exports.isLinux = exports.isMacOS = exports.isWindows = exports.arch = exports.platform = void 0; +const os_1 = __importDefault(__nccwpck_require__(857)); +const exec = __importStar(__nccwpck_require__(236)); +const getWindowsInfo = () => __awaiter(void 0, void 0, void 0, function* () { + const { stdout: version } = yield exec.getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Version"', undefined, { + silent: true + }); + const { stdout: name } = yield exec.getExecOutput('powershell -command "(Get-CimInstance -ClassName Win32_OperatingSystem).Caption"', undefined, { + silent: true + }); + return { + name: name.trim(), + version: version.trim() + }; +}); +const getMacOsInfo = () => __awaiter(void 0, void 0, void 0, function* () { + var _a, _b, _c, _d; + const { stdout } = yield exec.getExecOutput('sw_vers', undefined, { + silent: true + }); + const version = (_b = (_a = stdout.match(/ProductVersion:\s*(.+)/)) === null || _a === void 0 ? void 0 : _a[1]) !== null && _b !== void 0 ? _b : ''; + const name = (_d = (_c = stdout.match(/ProductName:\s*(.+)/)) === null || _c === void 0 ? void 0 : _c[1]) !== null && _d !== void 0 ? _d : ''; + return { + name, + version + }; +}); +const getLinuxInfo = () => __awaiter(void 0, void 0, void 0, function* () { + const { stdout } = yield exec.getExecOutput('lsb_release', ['-i', '-r', '-s'], { + silent: true + }); + const [name, version] = stdout.trim().split('\n'); + return { + name, + version + }; +}); +exports.platform = os_1.default.platform(); +exports.arch = os_1.default.arch(); +exports.isWindows = exports.platform === 'win32'; +exports.isMacOS = exports.platform === 'darwin'; +exports.isLinux = exports.platform === 'linux'; +function getDetails() { + return __awaiter(this, void 0, void 0, function* () { + return Object.assign(Object.assign({}, (yield (exports.isWindows + ? getWindowsInfo() + : exports.isMacOS + ? getMacOsInfo() + : getLinuxInfo()))), { platform: exports.platform, + arch: exports.arch, + isWindows: exports.isWindows, + isMacOS: exports.isMacOS, + isLinux: exports.isLinux }); + }); +} +exports.getDetails = getDetails; +//# sourceMappingURL=platform.js.map + +/***/ }), + +/***/ 847: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.summary = exports.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0; +const os_1 = __nccwpck_require__(857); +const fs_1 = __nccwpck_require__(896); +const { access, appendFile, writeFile } = fs_1.promises; +exports.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY'; +exports.SUMMARY_DOCS_URL = 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary'; +class Summary { + constructor() { + this._buffer = ''; + } + /** + * Finds the summary file path from the environment, rejects if env var is not found or file does not exist + * Also checks r/w permissions. + * + * @returns step summary file path + */ + filePath() { + return __awaiter(this, void 0, void 0, function* () { + if (this._filePath) { + return this._filePath; + } + const pathFromEnv = process.env[exports.SUMMARY_ENV_VAR]; + if (!pathFromEnv) { + throw new Error(`Unable to find environment variable for $${exports.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`); + } + try { + yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK); + } + catch (_a) { + throw new Error(`Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`); + } + this._filePath = pathFromEnv; + return this._filePath; + }); + } + /** + * Wraps content in an HTML tag, adding any HTML attributes + * + * @param {string} tag HTML tag to wrap + * @param {string | null} content content within the tag + * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add + * + * @returns {string} content wrapped in HTML element + */ + wrap(tag, content, attrs = {}) { + const htmlAttrs = Object.entries(attrs) + .map(([key, value]) => ` ${key}="${value}"`) + .join(''); + if (!content) { + return `<${tag}${htmlAttrs}>`; + } + return `<${tag}${htmlAttrs}>${content}`; + } + /** + * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default. + * + * @param {SummaryWriteOptions} [options] (optional) options for write operation + * + * @returns {Promise} summary instance + */ + write(options) { + return __awaiter(this, void 0, void 0, function* () { + const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite); + const filePath = yield this.filePath(); + const writeFunc = overwrite ? writeFile : appendFile; + yield writeFunc(filePath, this._buffer, { encoding: 'utf8' }); + return this.emptyBuffer(); + }); + } + /** + * Clears the summary buffer and wipes the summary file + * + * @returns {Summary} summary instance + */ + clear() { + return __awaiter(this, void 0, void 0, function* () { + return this.emptyBuffer().write({ overwrite: true }); + }); + } + /** + * Returns the current summary buffer as a string + * + * @returns {string} string of summary buffer + */ + stringify() { + return this._buffer; + } + /** + * If the summary buffer is empty + * + * @returns {boolen} true if the buffer is empty + */ + isEmptyBuffer() { + return this._buffer.length === 0; + } + /** + * Resets the summary buffer without writing to summary file + * + * @returns {Summary} summary instance + */ + emptyBuffer() { + this._buffer = ''; + return this; + } + /** + * Adds raw text to the summary buffer + * + * @param {string} text content to add + * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false) + * + * @returns {Summary} summary instance + */ + addRaw(text, addEOL = false) { + this._buffer += text; + return addEOL ? this.addEOL() : this; + } + /** + * Adds the operating system-specific end-of-line marker to the buffer + * + * @returns {Summary} summary instance + */ + addEOL() { + return this.addRaw(os_1.EOL); + } + /** + * Adds an HTML codeblock to the summary buffer + * + * @param {string} code content to render within fenced code block + * @param {string} lang (optional) language to syntax highlight code + * + * @returns {Summary} summary instance + */ + addCodeBlock(code, lang) { + const attrs = Object.assign({}, (lang && { lang })); + const element = this.wrap('pre', this.wrap('code', code), attrs); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML list to the summary buffer + * + * @param {string[]} items list of items to render + * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false) + * + * @returns {Summary} summary instance + */ + addList(items, ordered = false) { + const tag = ordered ? 'ol' : 'ul'; + const listItems = items.map(item => this.wrap('li', item)).join(''); + const element = this.wrap(tag, listItems); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML table to the summary buffer + * + * @param {SummaryTableCell[]} rows table rows + * + * @returns {Summary} summary instance + */ + addTable(rows) { + const tableBody = rows + .map(row => { + const cells = row + .map(cell => { + if (typeof cell === 'string') { + return this.wrap('td', cell); + } + const { header, data, colspan, rowspan } = cell; + const tag = header ? 'th' : 'td'; + const attrs = Object.assign(Object.assign({}, (colspan && { colspan })), (rowspan && { rowspan })); + return this.wrap(tag, data, attrs); + }) + .join(''); + return this.wrap('tr', cells); + }) + .join(''); + const element = this.wrap('table', tableBody); + return this.addRaw(element).addEOL(); + } + /** + * Adds a collapsable HTML details element to the summary buffer + * + * @param {string} label text for the closed state + * @param {string} content collapsable content + * + * @returns {Summary} summary instance + */ + addDetails(label, content) { + const element = this.wrap('details', this.wrap('summary', label) + content); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML image tag to the summary buffer + * + * @param {string} src path to the image you to embed + * @param {string} alt text description of the image + * @param {SummaryImageOptions} options (optional) addition image attributes + * + * @returns {Summary} summary instance + */ + addImage(src, alt, options) { + const { width, height } = options || {}; + const attrs = Object.assign(Object.assign({}, (width && { width })), (height && { height })); + const element = this.wrap('img', null, Object.assign({ src, alt }, attrs)); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML section heading element + * + * @param {string} text heading text + * @param {number | string} [level=1] (optional) the heading level, default: 1 + * + * @returns {Summary} summary instance + */ + addHeading(text, level) { + const tag = `h${level}`; + const allowedTag = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag) + ? tag + : 'h1'; + const element = this.wrap(allowedTag, text); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML thematic break (
) to the summary buffer + * + * @returns {Summary} summary instance + */ + addSeparator() { + const element = this.wrap('hr', null); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML line break (
) to the summary buffer + * + * @returns {Summary} summary instance + */ + addBreak() { + const element = this.wrap('br', null); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML blockquote to the summary buffer + * + * @param {string} text quote text + * @param {string} cite (optional) citation url + * + * @returns {Summary} summary instance + */ + addQuote(text, cite) { + const attrs = Object.assign({}, (cite && { cite })); + const element = this.wrap('blockquote', text, attrs); + return this.addRaw(element).addEOL(); + } + /** + * Adds an HTML anchor tag to the summary buffer + * + * @param {string} text link text/content + * @param {string} href hyperlink + * + * @returns {Summary} summary instance + */ + addLink(text, href) { + const element = this.wrap('a', text, { href }); + return this.addRaw(element).addEOL(); + } +} +const _summary = new Summary(); +/** + * @deprecated use `core.summary` + */ +exports.markdownSummary = _summary; +exports.summary = _summary; +//# sourceMappingURL=summary.js.map + +/***/ }), + +/***/ 302: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +// We use any as a valid input type +/* eslint-disable @typescript-eslint/no-explicit-any */ +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.toCommandProperties = exports.toCommandValue = void 0; +/** + * Sanitizes an input into a string so it can be passed into issueCommand safely + * @param input input to sanitize into a string + */ +function toCommandValue(input) { + if (input === null || input === undefined) { + return ''; + } + else if (typeof input === 'string' || input instanceof String) { + return input; + } + return JSON.stringify(input); +} +exports.toCommandValue = toCommandValue; +/** + * + * @param annotationProperties + * @returns The command properties to send with the actual annotation command + * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646 + */ +function toCommandProperties(annotationProperties) { + if (!Object.keys(annotationProperties).length) { + return {}; + } + return { + title: annotationProperties.title, + file: annotationProperties.file, + line: annotationProperties.startLine, + endLine: annotationProperties.endLine, + col: annotationProperties.startColumn, + endColumn: annotationProperties.endColumn + }; +} +exports.toCommandProperties = toCommandProperties; +//# sourceMappingURL=utils.js.map + +/***/ }), + +/***/ 236: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getExecOutput = exports.exec = void 0; +const string_decoder_1 = __nccwpck_require__(193); +const tr = __importStar(__nccwpck_require__(665)); +/** + * Exec a command. + * Output will be streamed to the live console. + * Returns promise with return code + * + * @param commandLine command to execute (can include additional args). Must be correctly escaped. + * @param args optional arguments for tool. Escaping is handled by the lib. + * @param options optional exec options. See ExecOptions + * @returns Promise exit code + */ +function exec(commandLine, args, options) { + return __awaiter(this, void 0, void 0, function* () { + const commandArgs = tr.argStringToArray(commandLine); + if (commandArgs.length === 0) { + throw new Error(`Parameter 'commandLine' cannot be null or empty.`); + } + // Path to tool to execute should be first arg + const toolPath = commandArgs[0]; + args = commandArgs.slice(1).concat(args || []); + const runner = new tr.ToolRunner(toolPath, args, options); + return runner.exec(); + }); +} +exports.exec = exec; +/** + * Exec a command and get the output. + * Output will be streamed to the live console. + * Returns promise with the exit code and collected stdout and stderr + * + * @param commandLine command to execute (can include additional args). Must be correctly escaped. + * @param args optional arguments for tool. Escaping is handled by the lib. + * @param options optional exec options. See ExecOptions + * @returns Promise exit code, stdout, and stderr + */ +function getExecOutput(commandLine, args, options) { + var _a, _b; + return __awaiter(this, void 0, void 0, function* () { + let stdout = ''; + let stderr = ''; + //Using string decoder covers the case where a mult-byte character is split + const stdoutDecoder = new string_decoder_1.StringDecoder('utf8'); + const stderrDecoder = new string_decoder_1.StringDecoder('utf8'); + const originalStdoutListener = (_a = options === null || options === void 0 ? void 0 : options.listeners) === null || _a === void 0 ? void 0 : _a.stdout; + const originalStdErrListener = (_b = options === null || options === void 0 ? void 0 : options.listeners) === null || _b === void 0 ? void 0 : _b.stderr; + const stdErrListener = (data) => { + stderr += stderrDecoder.write(data); + if (originalStdErrListener) { + originalStdErrListener(data); + } + }; + const stdOutListener = (data) => { + stdout += stdoutDecoder.write(data); + if (originalStdoutListener) { + originalStdoutListener(data); + } + }; + const listeners = Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.listeners), { stdout: stdOutListener, stderr: stdErrListener }); + const exitCode = yield exec(commandLine, args, Object.assign(Object.assign({}, options), { listeners })); + //flush any remaining characters + stdout += stdoutDecoder.end(); + stderr += stderrDecoder.end(); + return { + exitCode, + stdout, + stderr + }; + }); +} +exports.getExecOutput = getExecOutput; +//# sourceMappingURL=exec.js.map + +/***/ }), + +/***/ 665: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.argStringToArray = exports.ToolRunner = void 0; +const os = __importStar(__nccwpck_require__(857)); +const events = __importStar(__nccwpck_require__(434)); +const child = __importStar(__nccwpck_require__(317)); +const path = __importStar(__nccwpck_require__(928)); +const io = __importStar(__nccwpck_require__(994)); +const ioUtil = __importStar(__nccwpck_require__(207)); +const timers_1 = __nccwpck_require__(557); +/* eslint-disable @typescript-eslint/unbound-method */ +const IS_WINDOWS = process.platform === 'win32'; +/* + * Class for running command line tools. Handles quoting and arg parsing in a platform agnostic way. + */ +class ToolRunner extends events.EventEmitter { + constructor(toolPath, args, options) { + super(); + if (!toolPath) { + throw new Error("Parameter 'toolPath' cannot be null or empty."); + } + this.toolPath = toolPath; + this.args = args || []; + this.options = options || {}; + } + _debug(message) { + if (this.options.listeners && this.options.listeners.debug) { + this.options.listeners.debug(message); + } + } + _getCommandString(options, noPrefix) { + const toolPath = this._getSpawnFileName(); + const args = this._getSpawnArgs(options); + let cmd = noPrefix ? '' : '[command]'; // omit prefix when piped to a second tool + if (IS_WINDOWS) { + // Windows + cmd file + if (this._isCmdFile()) { + cmd += toolPath; + for (const a of args) { + cmd += ` ${a}`; + } + } + // Windows + verbatim + else if (options.windowsVerbatimArguments) { + cmd += `"${toolPath}"`; + for (const a of args) { + cmd += ` ${a}`; + } + } + // Windows (regular) + else { + cmd += this._windowsQuoteCmdArg(toolPath); + for (const a of args) { + cmd += ` ${this._windowsQuoteCmdArg(a)}`; + } + } + } + else { + // OSX/Linux - this can likely be improved with some form of quoting. + // creating processes on Unix is fundamentally different than Windows. + // on Unix, execvp() takes an arg array. + cmd += toolPath; + for (const a of args) { + cmd += ` ${a}`; + } + } + return cmd; + } + _processLineBuffer(data, strBuffer, onLine) { + try { + let s = strBuffer + data.toString(); + let n = s.indexOf(os.EOL); + while (n > -1) { + const line = s.substring(0, n); + onLine(line); + // the rest of the string ... + s = s.substring(n + os.EOL.length); + n = s.indexOf(os.EOL); + } + return s; + } + catch (err) { + // streaming lines to console is best effort. Don't fail a build. + this._debug(`error processing line. Failed with error ${err}`); + return ''; + } + } + _getSpawnFileName() { + if (IS_WINDOWS) { + if (this._isCmdFile()) { + return process.env['COMSPEC'] || 'cmd.exe'; + } + } + return this.toolPath; + } + _getSpawnArgs(options) { + if (IS_WINDOWS) { + if (this._isCmdFile()) { + let argline = `/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`; + for (const a of this.args) { + argline += ' '; + argline += options.windowsVerbatimArguments + ? a + : this._windowsQuoteCmdArg(a); + } + argline += '"'; + return [argline]; + } + } + return this.args; + } + _endsWith(str, end) { + return str.endsWith(end); + } + _isCmdFile() { + const upperToolPath = this.toolPath.toUpperCase(); + return (this._endsWith(upperToolPath, '.CMD') || + this._endsWith(upperToolPath, '.BAT')); + } + _windowsQuoteCmdArg(arg) { + // for .exe, apply the normal quoting rules that libuv applies + if (!this._isCmdFile()) { + return this._uvQuoteCmdArg(arg); + } + // otherwise apply quoting rules specific to the cmd.exe command line parser. + // the libuv rules are generic and are not designed specifically for cmd.exe + // command line parser. + // + // for a detailed description of the cmd.exe command line parser, refer to + // http://stackoverflow.com/questions/4094699/how-does-the-windows-command-interpreter-cmd-exe-parse-scripts/7970912#7970912 + // need quotes for empty arg + if (!arg) { + return '""'; + } + // determine whether the arg needs to be quoted + const cmdSpecialChars = [ + ' ', + '\t', + '&', + '(', + ')', + '[', + ']', + '{', + '}', + '^', + '=', + ';', + '!', + "'", + '+', + ',', + '`', + '~', + '|', + '<', + '>', + '"' + ]; + let needsQuotes = false; + for (const char of arg) { + if (cmdSpecialChars.some(x => x === char)) { + needsQuotes = true; + break; + } + } + // short-circuit if quotes not needed + if (!needsQuotes) { + return arg; + } + // the following quoting rules are very similar to the rules that by libuv applies. + // + // 1) wrap the string in quotes + // + // 2) double-up quotes - i.e. " => "" + // + // this is different from the libuv quoting rules. libuv replaces " with \", which unfortunately + // doesn't work well with a cmd.exe command line. + // + // note, replacing " with "" also works well if the arg is passed to a downstream .NET console app. + // for example, the command line: + // foo.exe "myarg:""my val""" + // is parsed by a .NET console app into an arg array: + // [ "myarg:\"my val\"" ] + // which is the same end result when applying libuv quoting rules. although the actual + // command line from libuv quoting rules would look like: + // foo.exe "myarg:\"my val\"" + // + // 3) double-up slashes that precede a quote, + // e.g. hello \world => "hello \world" + // hello\"world => "hello\\""world" + // hello\\"world => "hello\\\\""world" + // hello world\ => "hello world\\" + // + // technically this is not required for a cmd.exe command line, or the batch argument parser. + // the reasons for including this as a .cmd quoting rule are: + // + // a) this is optimized for the scenario where the argument is passed from the .cmd file to an + // external program. many programs (e.g. .NET console apps) rely on the slash-doubling rule. + // + // b) it's what we've been doing previously (by deferring to node default behavior) and we + // haven't heard any complaints about that aspect. + // + // note, a weakness of the quoting rules chosen here, is that % is not escaped. in fact, % cannot be + // escaped when used on the command line directly - even though within a .cmd file % can be escaped + // by using %%. + // + // the saving grace is, on the command line, %var% is left as-is if var is not defined. this contrasts + // the line parsing rules within a .cmd file, where if var is not defined it is replaced with nothing. + // + // one option that was explored was replacing % with ^% - i.e. %var% => ^%var^%. this hack would + // often work, since it is unlikely that var^ would exist, and the ^ character is removed when the + // variable is used. the problem, however, is that ^ is not removed when %* is used to pass the args + // to an external program. + // + // an unexplored potential solution for the % escaping problem, is to create a wrapper .cmd file. + // % can be escaped within a .cmd file. + let reverse = '"'; + let quoteHit = true; + for (let i = arg.length; i > 0; i--) { + // walk the string in reverse + reverse += arg[i - 1]; + if (quoteHit && arg[i - 1] === '\\') { + reverse += '\\'; // double the slash + } + else if (arg[i - 1] === '"') { + quoteHit = true; + reverse += '"'; // double the quote + } + else { + quoteHit = false; + } + } + reverse += '"'; + return reverse + .split('') + .reverse() + .join(''); + } + _uvQuoteCmdArg(arg) { + // Tool runner wraps child_process.spawn() and needs to apply the same quoting as + // Node in certain cases where the undocumented spawn option windowsVerbatimArguments + // is used. + // + // Since this function is a port of quote_cmd_arg from Node 4.x (technically, lib UV, + // see https://github.com/nodejs/node/blob/v4.x/deps/uv/src/win/process.c for details), + // pasting copyright notice from Node within this function: + // + // Copyright Joyent, Inc. and other Node contributors. All rights reserved. + // + // Permission is hereby granted, free of charge, to any person obtaining a copy + // of this software and associated documentation files (the "Software"), to + // deal in the Software without restriction, including without limitation the + // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + // sell copies of the Software, and to permit persons to whom the Software is + // furnished to do so, subject to the following conditions: + // + // The above copyright notice and this permission notice shall be included in + // all copies or substantial portions of the Software. + // + // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + // IN THE SOFTWARE. + if (!arg) { + // Need double quotation for empty argument + return '""'; + } + if (!arg.includes(' ') && !arg.includes('\t') && !arg.includes('"')) { + // No quotation needed + return arg; + } + if (!arg.includes('"') && !arg.includes('\\')) { + // No embedded double quotes or backslashes, so I can just wrap + // quote marks around the whole thing. + return `"${arg}"`; + } + // Expected input/output: + // input : hello"world + // output: "hello\"world" + // input : hello""world + // output: "hello\"\"world" + // input : hello\world + // output: hello\world + // input : hello\\world + // output: hello\\world + // input : hello\"world + // output: "hello\\\"world" + // input : hello\\"world + // output: "hello\\\\\"world" + // input : hello world\ + // output: "hello world\\" - note the comment in libuv actually reads "hello world\" + // but it appears the comment is wrong, it should be "hello world\\" + let reverse = '"'; + let quoteHit = true; + for (let i = arg.length; i > 0; i--) { + // walk the string in reverse + reverse += arg[i - 1]; + if (quoteHit && arg[i - 1] === '\\') { + reverse += '\\'; + } + else if (arg[i - 1] === '"') { + quoteHit = true; + reverse += '\\'; + } + else { + quoteHit = false; + } + } + reverse += '"'; + return reverse + .split('') + .reverse() + .join(''); + } + _cloneExecOptions(options) { + options = options || {}; + const result = { + cwd: options.cwd || process.cwd(), + env: options.env || process.env, + silent: options.silent || false, + windowsVerbatimArguments: options.windowsVerbatimArguments || false, + failOnStdErr: options.failOnStdErr || false, + ignoreReturnCode: options.ignoreReturnCode || false, + delay: options.delay || 10000 + }; + result.outStream = options.outStream || process.stdout; + result.errStream = options.errStream || process.stderr; + return result; + } + _getSpawnOptions(options, toolPath) { + options = options || {}; + const result = {}; + result.cwd = options.cwd; + result.env = options.env; + result['windowsVerbatimArguments'] = + options.windowsVerbatimArguments || this._isCmdFile(); + if (options.windowsVerbatimArguments) { + result.argv0 = `"${toolPath}"`; + } + return result; + } + /** + * Exec a tool. + * Output will be streamed to the live console. + * Returns promise with return code + * + * @param tool path to tool to exec + * @param options optional exec options. See ExecOptions + * @returns number + */ + exec() { + return __awaiter(this, void 0, void 0, function* () { + // root the tool path if it is unrooted and contains relative pathing + if (!ioUtil.isRooted(this.toolPath) && + (this.toolPath.includes('/') || + (IS_WINDOWS && this.toolPath.includes('\\')))) { + // prefer options.cwd if it is specified, however options.cwd may also need to be rooted + this.toolPath = path.resolve(process.cwd(), this.options.cwd || process.cwd(), this.toolPath); + } + // if the tool is only a file name, then resolve it from the PATH + // otherwise verify it exists (add extension on Windows if necessary) + this.toolPath = yield io.which(this.toolPath, true); + return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { + this._debug(`exec tool: ${this.toolPath}`); + this._debug('arguments:'); + for (const arg of this.args) { + this._debug(` ${arg}`); + } + const optionsNonNull = this._cloneExecOptions(this.options); + if (!optionsNonNull.silent && optionsNonNull.outStream) { + optionsNonNull.outStream.write(this._getCommandString(optionsNonNull) + os.EOL); + } + const state = new ExecState(optionsNonNull, this.toolPath); + state.on('debug', (message) => { + this._debug(message); + }); + if (this.options.cwd && !(yield ioUtil.exists(this.options.cwd))) { + return reject(new Error(`The cwd: ${this.options.cwd} does not exist!`)); + } + const fileName = this._getSpawnFileName(); + const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName)); + let stdbuffer = ''; + if (cp.stdout) { + cp.stdout.on('data', (data) => { + if (this.options.listeners && this.options.listeners.stdout) { + this.options.listeners.stdout(data); + } + if (!optionsNonNull.silent && optionsNonNull.outStream) { + optionsNonNull.outStream.write(data); + } + stdbuffer = this._processLineBuffer(data, stdbuffer, (line) => { + if (this.options.listeners && this.options.listeners.stdline) { + this.options.listeners.stdline(line); + } + }); + }); + } + let errbuffer = ''; + if (cp.stderr) { + cp.stderr.on('data', (data) => { + state.processStderr = true; + if (this.options.listeners && this.options.listeners.stderr) { + this.options.listeners.stderr(data); + } + if (!optionsNonNull.silent && + optionsNonNull.errStream && + optionsNonNull.outStream) { + const s = optionsNonNull.failOnStdErr + ? optionsNonNull.errStream + : optionsNonNull.outStream; + s.write(data); + } + errbuffer = this._processLineBuffer(data, errbuffer, (line) => { + if (this.options.listeners && this.options.listeners.errline) { + this.options.listeners.errline(line); + } + }); + }); + } + cp.on('error', (err) => { + state.processError = err.message; + state.processExited = true; + state.processClosed = true; + state.CheckComplete(); + }); + cp.on('exit', (code) => { + state.processExitCode = code; + state.processExited = true; + this._debug(`Exit code ${code} received from tool '${this.toolPath}'`); + state.CheckComplete(); + }); + cp.on('close', (code) => { + state.processExitCode = code; + state.processExited = true; + state.processClosed = true; + this._debug(`STDIO streams have closed for tool '${this.toolPath}'`); + state.CheckComplete(); + }); + state.on('done', (error, exitCode) => { + if (stdbuffer.length > 0) { + this.emit('stdline', stdbuffer); + } + if (errbuffer.length > 0) { + this.emit('errline', errbuffer); + } + cp.removeAllListeners(); + if (error) { + reject(error); + } + else { + resolve(exitCode); + } + }); + if (this.options.input) { + if (!cp.stdin) { + throw new Error('child process missing stdin'); + } + cp.stdin.end(this.options.input); + } + })); + }); + } +} +exports.ToolRunner = ToolRunner; +/** + * Convert an arg string to an array of args. Handles escaping + * + * @param argString string of arguments + * @returns string[] array of arguments + */ +function argStringToArray(argString) { + const args = []; + let inQuotes = false; + let escaped = false; + let arg = ''; + function append(c) { + // we only escape double quotes. + if (escaped && c !== '"') { + arg += '\\'; + } + arg += c; + escaped = false; + } + for (let i = 0; i < argString.length; i++) { + const c = argString.charAt(i); + if (c === '"') { + if (!escaped) { + inQuotes = !inQuotes; + } + else { + append(c); + } + continue; + } + if (c === '\\' && escaped) { + append(c); + continue; + } + if (c === '\\' && inQuotes) { + escaped = true; + continue; + } + if (c === ' ' && !inQuotes) { + if (arg.length > 0) { + args.push(arg); + arg = ''; + } + continue; + } + append(c); + } + if (arg.length > 0) { + args.push(arg.trim()); + } + return args; +} +exports.argStringToArray = argStringToArray; +class ExecState extends events.EventEmitter { + constructor(options, toolPath) { + super(); + this.processClosed = false; // tracks whether the process has exited and stdio is closed + this.processError = ''; + this.processExitCode = 0; + this.processExited = false; // tracks whether the process has exited + this.processStderr = false; // tracks whether stderr was written to + this.delay = 10000; // 10 seconds + this.done = false; + this.timeout = null; + if (!toolPath) { + throw new Error('toolPath must not be empty'); + } + this.options = options; + this.toolPath = toolPath; + if (options.delay) { + this.delay = options.delay; + } + } + CheckComplete() { + if (this.done) { + return; + } + if (this.processClosed) { + this._setResult(); + } + else if (this.processExited) { + this.timeout = timers_1.setTimeout(ExecState.HandleTimeout, this.delay, this); + } + } + _debug(message) { + this.emit('debug', message); + } + _setResult() { + // determine whether there is an error + let error; + if (this.processExited) { + if (this.processError) { + error = new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`); + } + else if (this.processExitCode !== 0 && !this.options.ignoreReturnCode) { + error = new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`); + } + else if (this.processStderr && this.options.failOnStdErr) { + error = new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`); + } + } + // clear the timeout + if (this.timeout) { + clearTimeout(this.timeout); + this.timeout = null; + } + this.done = true; + this.emit('done', error, this.processExitCode); + } + static HandleTimeout(state) { + if (state.done) { + return; + } + if (!state.processClosed && state.processExited) { + const message = `The STDIO streams did not close within ${state.delay / + 1000} seconds of the exit event from process '${state.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`; + state._debug(message); + } + state._setResult(); + } +} +//# sourceMappingURL=toolrunner.js.map + +/***/ }), + +/***/ 552: +/***/ (function(__unused_webpack_module, exports) { + +"use strict"; + +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.PersonalAccessTokenCredentialHandler = exports.BearerCredentialHandler = exports.BasicCredentialHandler = void 0; +class BasicCredentialHandler { + constructor(username, password) { + this.username = username; + this.password = password; + } + prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); + } + options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); + }); + } +} +exports.BasicCredentialHandler = BasicCredentialHandler; +class BearerCredentialHandler { + constructor(token) { + this.token = token; + } + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 + prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); + } + options.headers['Authorization'] = `Bearer ${this.token}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); + }); + } +} +exports.BearerCredentialHandler = BearerCredentialHandler; +class PersonalAccessTokenCredentialHandler { + constructor(token) { + this.token = token; + } + // currently implements pre-authorization + // TODO: support preAuth = false where it hooks on 401 + prepareRequest(options) { + if (!options.headers) { + throw Error('The request has no headers'); + } + options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`; + } + // This handler cannot handle 401 + canHandleAuthentication() { + return false; + } + handleAuthentication() { + return __awaiter(this, void 0, void 0, function* () { + throw new Error('not implemented'); + }); + } +} +exports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler; +//# sourceMappingURL=auth.js.map + +/***/ }), + +/***/ 844: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +/* eslint-disable @typescript-eslint/no-explicit-any */ +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0; +const http = __importStar(__nccwpck_require__(611)); +const https = __importStar(__nccwpck_require__(692)); +const pm = __importStar(__nccwpck_require__(988)); +const tunnel = __importStar(__nccwpck_require__(770)); +var HttpCodes; +(function (HttpCodes) { + HttpCodes[HttpCodes["OK"] = 200] = "OK"; + HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices"; + HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently"; + HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved"; + HttpCodes[HttpCodes["SeeOther"] = 303] = "SeeOther"; + HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified"; + HttpCodes[HttpCodes["UseProxy"] = 305] = "UseProxy"; + HttpCodes[HttpCodes["SwitchProxy"] = 306] = "SwitchProxy"; + HttpCodes[HttpCodes["TemporaryRedirect"] = 307] = "TemporaryRedirect"; + HttpCodes[HttpCodes["PermanentRedirect"] = 308] = "PermanentRedirect"; + HttpCodes[HttpCodes["BadRequest"] = 400] = "BadRequest"; + HttpCodes[HttpCodes["Unauthorized"] = 401] = "Unauthorized"; + HttpCodes[HttpCodes["PaymentRequired"] = 402] = "PaymentRequired"; + HttpCodes[HttpCodes["Forbidden"] = 403] = "Forbidden"; + HttpCodes[HttpCodes["NotFound"] = 404] = "NotFound"; + HttpCodes[HttpCodes["MethodNotAllowed"] = 405] = "MethodNotAllowed"; + HttpCodes[HttpCodes["NotAcceptable"] = 406] = "NotAcceptable"; + HttpCodes[HttpCodes["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired"; + HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout"; + HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict"; + HttpCodes[HttpCodes["Gone"] = 410] = "Gone"; + HttpCodes[HttpCodes["TooManyRequests"] = 429] = "TooManyRequests"; + HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError"; + HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented"; + HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway"; + HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable"; + HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout"; +})(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {})); +var Headers; +(function (Headers) { + Headers["Accept"] = "accept"; + Headers["ContentType"] = "content-type"; +})(Headers = exports.Headers || (exports.Headers = {})); +var MediaTypes; +(function (MediaTypes) { + MediaTypes["ApplicationJson"] = "application/json"; +})(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {})); +/** + * Returns the proxy URL, depending upon the supplied url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + */ +function getProxyUrl(serverUrl) { + const proxyUrl = pm.getProxyUrl(new URL(serverUrl)); + return proxyUrl ? proxyUrl.href : ''; +} +exports.getProxyUrl = getProxyUrl; +const HttpRedirectCodes = [ + HttpCodes.MovedPermanently, + HttpCodes.ResourceMoved, + HttpCodes.SeeOther, + HttpCodes.TemporaryRedirect, + HttpCodes.PermanentRedirect +]; +const HttpResponseRetryCodes = [ + HttpCodes.BadGateway, + HttpCodes.ServiceUnavailable, + HttpCodes.GatewayTimeout +]; +const RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD']; +const ExponentialBackoffCeiling = 10; +const ExponentialBackoffTimeSlice = 5; +class HttpClientError extends Error { + constructor(message, statusCode) { + super(message); + this.name = 'HttpClientError'; + this.statusCode = statusCode; + Object.setPrototypeOf(this, HttpClientError.prototype); + } +} +exports.HttpClientError = HttpClientError; +class HttpClientResponse { + constructor(message) { + this.message = message; + } + readBody() { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () { + let output = Buffer.alloc(0); + this.message.on('data', (chunk) => { + output = Buffer.concat([output, chunk]); + }); + this.message.on('end', () => { + resolve(output.toString()); + }); + })); + }); + } + readBodyBuffer() { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () { + const chunks = []; + this.message.on('data', (chunk) => { + chunks.push(chunk); + }); + this.message.on('end', () => { + resolve(Buffer.concat(chunks)); + }); + })); + }); + } +} +exports.HttpClientResponse = HttpClientResponse; +function isHttps(requestUrl) { + const parsedUrl = new URL(requestUrl); + return parsedUrl.protocol === 'https:'; +} +exports.isHttps = isHttps; +class HttpClient { + constructor(userAgent, handlers, requestOptions) { + this._ignoreSslError = false; + this._allowRedirects = true; + this._allowRedirectDowngrade = false; + this._maxRedirects = 50; + this._allowRetries = false; + this._maxRetries = 1; + this._keepAlive = false; + this._disposed = false; + this.userAgent = userAgent; + this.handlers = handlers || []; + this.requestOptions = requestOptions; + if (requestOptions) { + if (requestOptions.ignoreSslError != null) { + this._ignoreSslError = requestOptions.ignoreSslError; + } + this._socketTimeout = requestOptions.socketTimeout; + if (requestOptions.allowRedirects != null) { + this._allowRedirects = requestOptions.allowRedirects; + } + if (requestOptions.allowRedirectDowngrade != null) { + this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade; + } + if (requestOptions.maxRedirects != null) { + this._maxRedirects = Math.max(requestOptions.maxRedirects, 0); + } + if (requestOptions.keepAlive != null) { + this._keepAlive = requestOptions.keepAlive; + } + if (requestOptions.allowRetries != null) { + this._allowRetries = requestOptions.allowRetries; + } + if (requestOptions.maxRetries != null) { + this._maxRetries = requestOptions.maxRetries; + } + } + } + options(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('OPTIONS', requestUrl, null, additionalHeaders || {}); + }); + } + get(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('GET', requestUrl, null, additionalHeaders || {}); + }); + } + del(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('DELETE', requestUrl, null, additionalHeaders || {}); + }); + } + post(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('POST', requestUrl, data, additionalHeaders || {}); + }); + } + patch(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('PATCH', requestUrl, data, additionalHeaders || {}); + }); + } + put(requestUrl, data, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('PUT', requestUrl, data, additionalHeaders || {}); + }); + } + head(requestUrl, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request('HEAD', requestUrl, null, additionalHeaders || {}); + }); + } + sendStream(verb, requestUrl, stream, additionalHeaders) { + return __awaiter(this, void 0, void 0, function* () { + return this.request(verb, requestUrl, stream, additionalHeaders); + }); + } + /** + * Gets a typed object from an endpoint + * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise + */ + getJson(requestUrl, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + const res = yield this.get(requestUrl, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + postJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + const res = yield this.post(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + putJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + const res = yield this.put(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + patchJson(requestUrl, obj, additionalHeaders = {}) { + return __awaiter(this, void 0, void 0, function* () { + const data = JSON.stringify(obj, null, 2); + additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + const res = yield this.patch(requestUrl, data, additionalHeaders); + return this._processResponse(res, this.requestOptions); + }); + } + /** + * Makes a raw http request. + * All other methods such as get, post, patch, and request ultimately call this. + * Prefer get, del, post and patch + */ + request(verb, requestUrl, data, headers) { + return __awaiter(this, void 0, void 0, function* () { + if (this._disposed) { + throw new Error('Client has already been disposed.'); + } + const parsedUrl = new URL(requestUrl); + let info = this._prepareRequest(verb, parsedUrl, headers); + // Only perform retries on reads since writes may not be idempotent. + const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb) + ? this._maxRetries + 1 + : 1; + let numTries = 0; + let response; + do { + response = yield this.requestRaw(info, data); + // Check if it's an authentication challenge + if (response && + response.message && + response.message.statusCode === HttpCodes.Unauthorized) { + let authenticationHandler; + for (const handler of this.handlers) { + if (handler.canHandleAuthentication(response)) { + authenticationHandler = handler; + break; + } + } + if (authenticationHandler) { + return authenticationHandler.handleAuthentication(this, info, data); + } + else { + // We have received an unauthorized response but have no handlers to handle it. + // Let the response return to the caller. + return response; + } + } + let redirectsRemaining = this._maxRedirects; + while (response.message.statusCode && + HttpRedirectCodes.includes(response.message.statusCode) && + this._allowRedirects && + redirectsRemaining > 0) { + const redirectUrl = response.message.headers['location']; + if (!redirectUrl) { + // if there's no location to redirect to, we won't + break; + } + const parsedRedirectUrl = new URL(redirectUrl); + if (parsedUrl.protocol === 'https:' && + parsedUrl.protocol !== parsedRedirectUrl.protocol && + !this._allowRedirectDowngrade) { + throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.'); + } + // we need to finish reading the response before reassigning response + // which will leak the open socket. + yield response.readBody(); + // strip authorization header if redirected to a different hostname + if (parsedRedirectUrl.hostname !== parsedUrl.hostname) { + for (const header in headers) { + // header names are case insensitive + if (header.toLowerCase() === 'authorization') { + delete headers[header]; + } + } + } + // let's make the request with the new redirectUrl + info = this._prepareRequest(verb, parsedRedirectUrl, headers); + response = yield this.requestRaw(info, data); + redirectsRemaining--; + } + if (!response.message.statusCode || + !HttpResponseRetryCodes.includes(response.message.statusCode)) { + // If not a retry code, return immediately instead of retrying + return response; + } + numTries += 1; + if (numTries < maxTries) { + yield response.readBody(); + yield this._performExponentialBackoff(numTries); + } + } while (numTries < maxTries); + return response; + }); + } + /** + * Needs to be called if keepAlive is set to true in request options. + */ + dispose() { + if (this._agent) { + this._agent.destroy(); + } + this._disposed = true; + } + /** + * Raw request. + * @param info + * @param data + */ + requestRaw(info, data) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => { + function callbackForResult(err, res) { + if (err) { + reject(err); + } + else if (!res) { + // If `err` is not passed, then `res` must be passed. + reject(new Error('Unknown error')); + } + else { + resolve(res); + } + } + this.requestRawWithCallback(info, data, callbackForResult); + }); + }); + } + /** + * Raw request with callback. + * @param info + * @param data + * @param onResult + */ + requestRawWithCallback(info, data, onResult) { + if (typeof data === 'string') { + if (!info.options.headers) { + info.options.headers = {}; + } + info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8'); + } + let callbackCalled = false; + function handleResult(err, res) { + if (!callbackCalled) { + callbackCalled = true; + onResult(err, res); + } + } + const req = info.httpModule.request(info.options, (msg) => { + const res = new HttpClientResponse(msg); + handleResult(undefined, res); + }); + let socket; + req.on('socket', sock => { + socket = sock; + }); + // If we ever get disconnected, we want the socket to timeout eventually + req.setTimeout(this._socketTimeout || 3 * 60000, () => { + if (socket) { + socket.end(); + } + handleResult(new Error(`Request timeout: ${info.options.path}`)); + }); + req.on('error', function (err) { + // err has statusCode property + // res should have headers + handleResult(err); + }); + if (data && typeof data === 'string') { + req.write(data, 'utf8'); + } + if (data && typeof data !== 'string') { + data.on('close', function () { + req.end(); + }); + data.pipe(req); + } + else { + req.end(); + } + } + /** + * Gets an http agent. This function is useful when you need an http agent that handles + * routing through a proxy server - depending upon the url and proxy environment variables. + * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com + */ + getAgent(serverUrl) { + const parsedUrl = new URL(serverUrl); + return this._getAgent(parsedUrl); + } + _prepareRequest(method, requestUrl, headers) { + const info = {}; + info.parsedUrl = requestUrl; + const usingSsl = info.parsedUrl.protocol === 'https:'; + info.httpModule = usingSsl ? https : http; + const defaultPort = usingSsl ? 443 : 80; + info.options = {}; + info.options.host = info.parsedUrl.hostname; + info.options.port = info.parsedUrl.port + ? parseInt(info.parsedUrl.port) + : defaultPort; + info.options.path = + (info.parsedUrl.pathname || '') + (info.parsedUrl.search || ''); + info.options.method = method; + info.options.headers = this._mergeHeaders(headers); + if (this.userAgent != null) { + info.options.headers['user-agent'] = this.userAgent; + } + info.options.agent = this._getAgent(info.parsedUrl); + // gives handlers an opportunity to participate + if (this.handlers) { + for (const handler of this.handlers) { + handler.prepareRequest(info.options); + } + } + return info; + } + _mergeHeaders(headers) { + if (this.requestOptions && this.requestOptions.headers) { + return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {})); + } + return lowercaseKeys(headers || {}); + } + _getExistingOrDefaultHeader(additionalHeaders, header, _default) { + let clientHeader; + if (this.requestOptions && this.requestOptions.headers) { + clientHeader = lowercaseKeys(this.requestOptions.headers)[header]; + } + return additionalHeaders[header] || clientHeader || _default; + } + _getAgent(parsedUrl) { + let agent; + const proxyUrl = pm.getProxyUrl(parsedUrl); + const useProxy = proxyUrl && proxyUrl.hostname; + if (this._keepAlive && useProxy) { + agent = this._proxyAgent; + } + if (this._keepAlive && !useProxy) { + agent = this._agent; + } + // if agent is already assigned use that agent. + if (agent) { + return agent; + } + const usingSsl = parsedUrl.protocol === 'https:'; + let maxSockets = 100; + if (this.requestOptions) { + maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets; + } + // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis. + if (proxyUrl && proxyUrl.hostname) { + const agentOptions = { + maxSockets, + keepAlive: this._keepAlive, + proxy: Object.assign(Object.assign({}, ((proxyUrl.username || proxyUrl.password) && { + proxyAuth: `${proxyUrl.username}:${proxyUrl.password}` + })), { host: proxyUrl.hostname, port: proxyUrl.port }) + }; + let tunnelAgent; + const overHttps = proxyUrl.protocol === 'https:'; + if (usingSsl) { + tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp; + } + else { + tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp; + } + agent = tunnelAgent(agentOptions); + this._proxyAgent = agent; + } + // if reusing agent across request and tunneling agent isn't assigned create a new agent + if (this._keepAlive && !agent) { + const options = { keepAlive: this._keepAlive, maxSockets }; + agent = usingSsl ? new https.Agent(options) : new http.Agent(options); + this._agent = agent; + } + // if not using private agent and tunnel agent isn't setup then use global agent + if (!agent) { + agent = usingSsl ? https.globalAgent : http.globalAgent; + } + if (usingSsl && this._ignoreSslError) { + // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process + // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options + // we have to cast it to any and change it directly + agent.options = Object.assign(agent.options || {}, { + rejectUnauthorized: false + }); + } + return agent; + } + _performExponentialBackoff(retryNumber) { + return __awaiter(this, void 0, void 0, function* () { + retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); + const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber); + return new Promise(resolve => setTimeout(() => resolve(), ms)); + }); + } + _processResponse(res, options) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { + const statusCode = res.message.statusCode || 0; + const response = { + statusCode, + result: null, + headers: {} + }; + // not found leads to null obj returned + if (statusCode === HttpCodes.NotFound) { + resolve(response); + } + // get the result from the body + function dateTimeDeserializer(key, value) { + if (typeof value === 'string') { + const a = new Date(value); + if (!isNaN(a.valueOf())) { + return a; + } + } + return value; + } + let obj; + let contents; + try { + contents = yield res.readBody(); + if (contents && contents.length > 0) { + if (options && options.deserializeDates) { + obj = JSON.parse(contents, dateTimeDeserializer); + } + else { + obj = JSON.parse(contents); + } + response.result = obj; + } + response.headers = res.message.headers; + } + catch (err) { + // Invalid resource (contents not json); leaving result obj null + } + // note that 3xx redirects are handled by the http layer. + if (statusCode > 299) { + let msg; + // if exception/error in body, attempt to get better error + if (obj && obj.message) { + msg = obj.message; + } + else if (contents && contents.length > 0) { + // it may be the case that the exception is in the body message as string + msg = contents; + } + else { + msg = `Failed request: (${statusCode})`; + } + const err = new HttpClientError(msg, statusCode); + err.result = response.result; + reject(err); + } + else { + resolve(response); + } + })); + }); + } +} +exports.HttpClient = HttpClient; +const lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); +//# sourceMappingURL=index.js.map + +/***/ }), + +/***/ 988: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.checkBypass = exports.getProxyUrl = void 0; +function getProxyUrl(reqUrl) { + const usingSsl = reqUrl.protocol === 'https:'; + if (checkBypass(reqUrl)) { + return undefined; + } + const proxyVar = (() => { + if (usingSsl) { + return process.env['https_proxy'] || process.env['HTTPS_PROXY']; + } + else { + return process.env['http_proxy'] || process.env['HTTP_PROXY']; + } + })(); + if (proxyVar) { + try { + return new URL(proxyVar); + } + catch (_a) { + if (!proxyVar.startsWith('http://') && !proxyVar.startsWith('https://')) + return new URL(`http://${proxyVar}`); + } + } + else { + return undefined; + } +} +exports.getProxyUrl = getProxyUrl; +function checkBypass(reqUrl) { + if (!reqUrl.hostname) { + return false; + } + const reqHost = reqUrl.hostname; + if (isLoopbackAddress(reqHost)) { + return true; + } + const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || ''; + if (!noProxy) { + return false; + } + // Determine the request port + let reqPort; + if (reqUrl.port) { + reqPort = Number(reqUrl.port); + } + else if (reqUrl.protocol === 'http:') { + reqPort = 80; + } + else if (reqUrl.protocol === 'https:') { + reqPort = 443; + } + // Format the request hostname and hostname with port + const upperReqHosts = [reqUrl.hostname.toUpperCase()]; + if (typeof reqPort === 'number') { + upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`); + } + // Compare request host against noproxy + for (const upperNoProxyItem of noProxy + .split(',') + .map(x => x.trim().toUpperCase()) + .filter(x => x)) { + if (upperNoProxyItem === '*' || + upperReqHosts.some(x => x === upperNoProxyItem || + x.endsWith(`.${upperNoProxyItem}`) || + (upperNoProxyItem.startsWith('.') && + x.endsWith(`${upperNoProxyItem}`)))) { + return true; + } + } + return false; +} +exports.checkBypass = checkBypass; +function isLoopbackAddress(host) { + const hostLower = host.toLowerCase(); + return (hostLower === 'localhost' || + hostLower.startsWith('127.') || + hostLower.startsWith('[::1]') || + hostLower.startsWith('[0:0:0:0:0:0:0:1]')); +} +//# sourceMappingURL=proxy.js.map + +/***/ }), + +/***/ 207: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var _a; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getCmdPath = exports.tryGetExecutablePath = exports.isRooted = exports.isDirectory = exports.exists = exports.READONLY = exports.UV_FS_O_EXLOCK = exports.IS_WINDOWS = exports.unlink = exports.symlink = exports.stat = exports.rmdir = exports.rm = exports.rename = exports.readlink = exports.readdir = exports.open = exports.mkdir = exports.lstat = exports.copyFile = exports.chmod = void 0; +const fs = __importStar(__nccwpck_require__(896)); +const path = __importStar(__nccwpck_require__(928)); +_a = fs.promises +// export const {open} = 'fs' +, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.open = _a.open, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rm = _a.rm, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink; +// export const {open} = 'fs' +exports.IS_WINDOWS = process.platform === 'win32'; +// See https://github.com/nodejs/node/blob/d0153aee367422d0858105abec186da4dff0a0c5/deps/uv/include/uv/win.h#L691 +exports.UV_FS_O_EXLOCK = 0x10000000; +exports.READONLY = fs.constants.O_RDONLY; +function exists(fsPath) { + return __awaiter(this, void 0, void 0, function* () { + try { + yield exports.stat(fsPath); + } + catch (err) { + if (err.code === 'ENOENT') { + return false; + } + throw err; + } + return true; + }); +} +exports.exists = exists; +function isDirectory(fsPath, useStat = false) { + return __awaiter(this, void 0, void 0, function* () { + const stats = useStat ? yield exports.stat(fsPath) : yield exports.lstat(fsPath); + return stats.isDirectory(); + }); +} +exports.isDirectory = isDirectory; +/** + * On OSX/Linux, true if path starts with '/'. On Windows, true for paths like: + * \, \hello, \\hello\share, C:, and C:\hello (and corresponding alternate separator cases). + */ +function isRooted(p) { + p = normalizeSeparators(p); + if (!p) { + throw new Error('isRooted() parameter "p" cannot be empty'); + } + if (exports.IS_WINDOWS) { + return (p.startsWith('\\') || /^[A-Z]:/i.test(p) // e.g. \ or \hello or \\hello + ); // e.g. C: or C:\hello + } + return p.startsWith('/'); +} +exports.isRooted = isRooted; +/** + * Best effort attempt to determine whether a file exists and is executable. + * @param filePath file path to check + * @param extensions additional file extensions to try + * @return if file exists and is executable, returns the file path. otherwise empty string. + */ +function tryGetExecutablePath(filePath, extensions) { + return __awaiter(this, void 0, void 0, function* () { + let stats = undefined; + try { + // test file exists + stats = yield exports.stat(filePath); + } + catch (err) { + if (err.code !== 'ENOENT') { + // eslint-disable-next-line no-console + console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); + } + } + if (stats && stats.isFile()) { + if (exports.IS_WINDOWS) { + // on Windows, test for valid extension + const upperExt = path.extname(filePath).toUpperCase(); + if (extensions.some(validExt => validExt.toUpperCase() === upperExt)) { + return filePath; + } + } + else { + if (isUnixExecutable(stats)) { + return filePath; + } + } + } + // try each extension + const originalFilePath = filePath; + for (const extension of extensions) { + filePath = originalFilePath + extension; + stats = undefined; + try { + stats = yield exports.stat(filePath); + } + catch (err) { + if (err.code !== 'ENOENT') { + // eslint-disable-next-line no-console + console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); + } + } + if (stats && stats.isFile()) { + if (exports.IS_WINDOWS) { + // preserve the case of the actual file (since an extension was appended) + try { + const directory = path.dirname(filePath); + const upperName = path.basename(filePath).toUpperCase(); + for (const actualName of yield exports.readdir(directory)) { + if (upperName === actualName.toUpperCase()) { + filePath = path.join(directory, actualName); + break; + } + } + } + catch (err) { + // eslint-disable-next-line no-console + console.log(`Unexpected error attempting to determine the actual case of the file '${filePath}': ${err}`); + } + return filePath; + } + else { + if (isUnixExecutable(stats)) { + return filePath; + } + } + } + } + return ''; + }); +} +exports.tryGetExecutablePath = tryGetExecutablePath; +function normalizeSeparators(p) { + p = p || ''; + if (exports.IS_WINDOWS) { + // convert slashes on Windows + p = p.replace(/\//g, '\\'); + // remove redundant slashes + return p.replace(/\\\\+/g, '\\'); + } + // remove redundant slashes + return p.replace(/\/\/+/g, '/'); +} +// on Mac/Linux, test the execute bit +// R W X R W X R W X +// 256 128 64 32 16 8 4 2 1 +function isUnixExecutable(stats) { + return ((stats.mode & 1) > 0 || + ((stats.mode & 8) > 0 && stats.gid === process.getgid()) || + ((stats.mode & 64) > 0 && stats.uid === process.getuid())); +} +// Get the path of cmd.exe in windows +function getCmdPath() { + var _a; + return (_a = process.env['COMSPEC']) !== null && _a !== void 0 ? _a : `cmd.exe`; +} +exports.getCmdPath = getCmdPath; +//# sourceMappingURL=io-util.js.map + +/***/ }), + +/***/ 994: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.findInPath = exports.which = exports.mkdirP = exports.rmRF = exports.mv = exports.cp = void 0; +const assert_1 = __nccwpck_require__(613); +const path = __importStar(__nccwpck_require__(928)); +const ioUtil = __importStar(__nccwpck_require__(207)); +/** + * Copies a file or folder. + * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js + * + * @param source source path + * @param dest destination path + * @param options optional. See CopyOptions. + */ +function cp(source, dest, options = {}) { + return __awaiter(this, void 0, void 0, function* () { + const { force, recursive, copySourceDirectory } = readCopyOptions(options); + const destStat = (yield ioUtil.exists(dest)) ? yield ioUtil.stat(dest) : null; + // Dest is an existing file, but not forcing + if (destStat && destStat.isFile() && !force) { + return; + } + // If dest is an existing directory, should copy inside. + const newDest = destStat && destStat.isDirectory() && copySourceDirectory + ? path.join(dest, path.basename(source)) + : dest; + if (!(yield ioUtil.exists(source))) { + throw new Error(`no such file or directory: ${source}`); + } + const sourceStat = yield ioUtil.stat(source); + if (sourceStat.isDirectory()) { + if (!recursive) { + throw new Error(`Failed to copy. ${source} is a directory, but tried to copy without recursive flag.`); + } + else { + yield cpDirRecursive(source, newDest, 0, force); + } + } + else { + if (path.relative(source, newDest) === '') { + // a file cannot be copied to itself + throw new Error(`'${newDest}' and '${source}' are the same file`); + } + yield copyFile(source, newDest, force); + } + }); +} +exports.cp = cp; +/** + * Moves a path. + * + * @param source source path + * @param dest destination path + * @param options optional. See MoveOptions. + */ +function mv(source, dest, options = {}) { + return __awaiter(this, void 0, void 0, function* () { + if (yield ioUtil.exists(dest)) { + let destExists = true; + if (yield ioUtil.isDirectory(dest)) { + // If dest is directory copy src into dest + dest = path.join(dest, path.basename(source)); + destExists = yield ioUtil.exists(dest); + } + if (destExists) { + if (options.force == null || options.force) { + yield rmRF(dest); + } + else { + throw new Error('Destination already exists'); + } + } + } + yield mkdirP(path.dirname(dest)); + yield ioUtil.rename(source, dest); + }); +} +exports.mv = mv; +/** + * Remove a path recursively with force + * + * @param inputPath path to remove + */ +function rmRF(inputPath) { + return __awaiter(this, void 0, void 0, function* () { + if (ioUtil.IS_WINDOWS) { + // Check for invalid characters + // https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file + if (/[*"<>|]/.test(inputPath)) { + throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows'); + } + } + try { + // note if path does not exist, error is silent + yield ioUtil.rm(inputPath, { + force: true, + maxRetries: 3, + recursive: true, + retryDelay: 300 + }); + } + catch (err) { + throw new Error(`File was unable to be removed ${err}`); + } + }); +} +exports.rmRF = rmRF; +/** + * Make a directory. Creates the full path with folders in between + * Will throw if it fails + * + * @param fsPath path to create + * @returns Promise + */ +function mkdirP(fsPath) { + return __awaiter(this, void 0, void 0, function* () { + assert_1.ok(fsPath, 'a path argument must be provided'); + yield ioUtil.mkdir(fsPath, { recursive: true }); + }); +} +exports.mkdirP = mkdirP; +/** + * Returns path of a tool had the tool actually been invoked. Resolves via paths. + * If you check and the tool does not exist, it will throw. + * + * @param tool name of the tool + * @param check whether to check if tool exists + * @returns Promise path to tool + */ +function which(tool, check) { + return __awaiter(this, void 0, void 0, function* () { + if (!tool) { + throw new Error("parameter 'tool' is required"); + } + // recursive when check=true + if (check) { + const result = yield which(tool, false); + if (!result) { + if (ioUtil.IS_WINDOWS) { + throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`); + } + else { + throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`); + } + } + return result; + } + const matches = yield findInPath(tool); + if (matches && matches.length > 0) { + return matches[0]; + } + return ''; + }); +} +exports.which = which; +/** + * Returns a list of all occurrences of the given tool on the system path. + * + * @returns Promise the paths of the tool + */ +function findInPath(tool) { + return __awaiter(this, void 0, void 0, function* () { + if (!tool) { + throw new Error("parameter 'tool' is required"); + } + // build the list of extensions to try + const extensions = []; + if (ioUtil.IS_WINDOWS && process.env['PATHEXT']) { + for (const extension of process.env['PATHEXT'].split(path.delimiter)) { + if (extension) { + extensions.push(extension); + } + } + } + // if it's rooted, return it if exists. otherwise return empty. + if (ioUtil.isRooted(tool)) { + const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions); + if (filePath) { + return [filePath]; + } + return []; + } + // if any path separators, return empty + if (tool.includes(path.sep)) { + return []; + } + // build the list of directories + // + // Note, technically "where" checks the current directory on Windows. From a toolkit perspective, + // it feels like we should not do this. Checking the current directory seems like more of a use + // case of a shell, and the which() function exposed by the toolkit should strive for consistency + // across platforms. + const directories = []; + if (process.env.PATH) { + for (const p of process.env.PATH.split(path.delimiter)) { + if (p) { + directories.push(p); + } + } + } + // find all matches + const matches = []; + for (const directory of directories) { + const filePath = yield ioUtil.tryGetExecutablePath(path.join(directory, tool), extensions); + if (filePath) { + matches.push(filePath); + } + } + return matches; + }); +} +exports.findInPath = findInPath; +function readCopyOptions(options) { + const force = options.force == null ? true : options.force; + const recursive = Boolean(options.recursive); + const copySourceDirectory = options.copySourceDirectory == null + ? true + : Boolean(options.copySourceDirectory); + return { force, recursive, copySourceDirectory }; +} +function cpDirRecursive(sourceDir, destDir, currentDepth, force) { + return __awaiter(this, void 0, void 0, function* () { + // Ensure there is not a run away recursive copy + if (currentDepth >= 255) + return; + currentDepth++; + yield mkdirP(destDir); + const files = yield ioUtil.readdir(sourceDir); + for (const fileName of files) { + const srcFile = `${sourceDir}/${fileName}`; + const destFile = `${destDir}/${fileName}`; + const srcFileStat = yield ioUtil.lstat(srcFile); + if (srcFileStat.isDirectory()) { + // Recurse + yield cpDirRecursive(srcFile, destFile, currentDepth, force); + } + else { + yield copyFile(srcFile, destFile, force); + } + } + // Change the mode for the newly created directory + yield ioUtil.chmod(destDir, (yield ioUtil.stat(sourceDir)).mode); + }); +} +// Buffered file copy +function copyFile(srcFile, destFile, force) { + return __awaiter(this, void 0, void 0, function* () { + if ((yield ioUtil.lstat(srcFile)).isSymbolicLink()) { + // unlink/re-link it + try { + yield ioUtil.lstat(destFile); + yield ioUtil.unlink(destFile); + } + catch (e) { + // Try to override file permission + if (e.code === 'EPERM') { + yield ioUtil.chmod(destFile, '0666'); + yield ioUtil.unlink(destFile); + } + // other errors = it doesn't exist, no work to do + } + // Copy over symlink + const symlinkFull = yield ioUtil.readlink(srcFile); + yield ioUtil.symlink(symlinkFull, destFile, ioUtil.IS_WINDOWS ? 'junction' : null); + } + else if (!(yield ioUtil.exists(destFile)) || force) { + yield ioUtil.copyFile(srcFile, destFile); + } + }); +} +//# sourceMappingURL=io.js.map + +/***/ }), + +/***/ 36: +/***/ (function(module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports._readLinuxVersionFile = exports._getOsVersion = exports._findMatch = void 0; +const semver = __importStar(__nccwpck_require__(318)); +const core_1 = __nccwpck_require__(484); +// needs to be require for core node modules to be mocked +/* eslint @typescript-eslint/no-require-imports: 0 */ +const os = __nccwpck_require__(857); +const cp = __nccwpck_require__(317); +const fs = __nccwpck_require__(896); +function _findMatch(versionSpec, stable, candidates, archFilter) { + return __awaiter(this, void 0, void 0, function* () { + const platFilter = os.platform(); + let result; + let match; + let file; + for (const candidate of candidates) { + const version = candidate.version; + core_1.debug(`check ${version} satisfies ${versionSpec}`); + if (semver.satisfies(version, versionSpec) && + (!stable || candidate.stable === stable)) { + file = candidate.files.find(item => { + core_1.debug(`${item.arch}===${archFilter} && ${item.platform}===${platFilter}`); + let chk = item.arch === archFilter && item.platform === platFilter; + if (chk && item.platform_version) { + const osVersion = module.exports._getOsVersion(); + if (osVersion === item.platform_version) { + chk = true; + } + else { + chk = semver.satisfies(osVersion, item.platform_version); + } + } + return chk; + }); + if (file) { + core_1.debug(`matched ${candidate.version}`); + match = candidate; + break; + } + } + } + if (match && file) { + // clone since we're mutating the file list to be only the file that matches + result = Object.assign({}, match); + result.files = [file]; + } + return result; + }); +} +exports._findMatch = _findMatch; +function _getOsVersion() { + // TODO: add windows and other linux, arm variants + // right now filtering on version is only an ubuntu and macos scenario for tools we build for hosted (python) + const plat = os.platform(); + let version = ''; + if (plat === 'darwin') { + version = cp.execSync('sw_vers -productVersion').toString(); + } + else if (plat === 'linux') { + // lsb_release process not in some containers, readfile + // Run cat /etc/lsb-release + // DISTRIB_ID=Ubuntu + // DISTRIB_RELEASE=18.04 + // DISTRIB_CODENAME=bionic + // DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS" + const lsbContents = module.exports._readLinuxVersionFile(); + if (lsbContents) { + const lines = lsbContents.split('\n'); + for (const line of lines) { + const parts = line.split('='); + if (parts.length === 2 && + (parts[0].trim() === 'VERSION_ID' || + parts[0].trim() === 'DISTRIB_RELEASE')) { + version = parts[1] + .trim() + .replace(/^"/, '') + .replace(/"$/, ''); + break; + } + } + } + } + return version; +} +exports._getOsVersion = _getOsVersion; +function _readLinuxVersionFile() { + const lsbReleaseFile = '/etc/lsb-release'; + const osReleaseFile = '/etc/os-release'; + let contents = ''; + if (fs.existsSync(lsbReleaseFile)) { + contents = fs.readFileSync(lsbReleaseFile).toString(); + } + else if (fs.existsSync(osReleaseFile)) { + contents = fs.readFileSync(osReleaseFile).toString(); + } + return contents; +} +exports._readLinuxVersionFile = _readLinuxVersionFile; +//# sourceMappingURL=manifest.js.map + +/***/ }), + +/***/ 380: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.RetryHelper = void 0; +const core = __importStar(__nccwpck_require__(484)); +/** + * Internal class for retries + */ +class RetryHelper { + constructor(maxAttempts, minSeconds, maxSeconds) { + if (maxAttempts < 1) { + throw new Error('max attempts should be greater than or equal to 1'); + } + this.maxAttempts = maxAttempts; + this.minSeconds = Math.floor(minSeconds); + this.maxSeconds = Math.floor(maxSeconds); + if (this.minSeconds > this.maxSeconds) { + throw new Error('min seconds should be less than or equal to max seconds'); + } + } + execute(action, isRetryable) { + return __awaiter(this, void 0, void 0, function* () { + let attempt = 1; + while (attempt < this.maxAttempts) { + // Try + try { + return yield action(); + } + catch (err) { + if (isRetryable && !isRetryable(err)) { + throw err; + } + core.info(err.message); + } + // Sleep + const seconds = this.getSleepAmount(); + core.info(`Waiting ${seconds} seconds before trying again`); + yield this.sleep(seconds); + attempt++; + } + // Last attempt + return yield action(); + }); + } + getSleepAmount() { + return (Math.floor(Math.random() * (this.maxSeconds - this.minSeconds + 1)) + + this.minSeconds); + } + sleep(seconds) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise(resolve => setTimeout(resolve, seconds * 1000)); + }); + } +} +exports.RetryHelper = RetryHelper; +//# sourceMappingURL=retry-helper.js.map + +/***/ }), + +/***/ 472: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.evaluateVersions = exports.isExplicitVersion = exports.findFromManifest = exports.getManifestFromRepo = exports.findAllVersions = exports.find = exports.cacheFile = exports.cacheDir = exports.extractZip = exports.extractXar = exports.extractTar = exports.extract7z = exports.downloadTool = exports.HTTPError = void 0; +const core = __importStar(__nccwpck_require__(484)); +const io = __importStar(__nccwpck_require__(994)); +const fs = __importStar(__nccwpck_require__(896)); +const mm = __importStar(__nccwpck_require__(36)); +const os = __importStar(__nccwpck_require__(857)); +const path = __importStar(__nccwpck_require__(928)); +const httpm = __importStar(__nccwpck_require__(844)); +const semver = __importStar(__nccwpck_require__(318)); +const stream = __importStar(__nccwpck_require__(203)); +const util = __importStar(__nccwpck_require__(23)); +const assert_1 = __nccwpck_require__(613); +const v4_1 = __importDefault(__nccwpck_require__(350)); +const exec_1 = __nccwpck_require__(236); +const retry_helper_1 = __nccwpck_require__(380); +class HTTPError extends Error { + constructor(httpStatusCode) { + super(`Unexpected HTTP response: ${httpStatusCode}`); + this.httpStatusCode = httpStatusCode; + Object.setPrototypeOf(this, new.target.prototype); + } +} +exports.HTTPError = HTTPError; +const IS_WINDOWS = process.platform === 'win32'; +const IS_MAC = process.platform === 'darwin'; +const userAgent = 'actions/tool-cache'; +/** + * Download a tool from an url and stream it into a file + * + * @param url url of tool to download + * @param dest path to download tool + * @param auth authorization header + * @param headers other headers + * @returns path to downloaded tool + */ +function downloadTool(url, dest, auth, headers) { + return __awaiter(this, void 0, void 0, function* () { + dest = dest || path.join(_getTempDirectory(), v4_1.default()); + yield io.mkdirP(path.dirname(dest)); + core.debug(`Downloading ${url}`); + core.debug(`Destination ${dest}`); + const maxAttempts = 3; + const minSeconds = _getGlobal('TEST_DOWNLOAD_TOOL_RETRY_MIN_SECONDS', 10); + const maxSeconds = _getGlobal('TEST_DOWNLOAD_TOOL_RETRY_MAX_SECONDS', 20); + const retryHelper = new retry_helper_1.RetryHelper(maxAttempts, minSeconds, maxSeconds); + return yield retryHelper.execute(() => __awaiter(this, void 0, void 0, function* () { + return yield downloadToolAttempt(url, dest || '', auth, headers); + }), (err) => { + if (err instanceof HTTPError && err.httpStatusCode) { + // Don't retry anything less than 500, except 408 Request Timeout and 429 Too Many Requests + if (err.httpStatusCode < 500 && + err.httpStatusCode !== 408 && + err.httpStatusCode !== 429) { + return false; + } + } + // Otherwise retry + return true; + }); + }); +} +exports.downloadTool = downloadTool; +function downloadToolAttempt(url, dest, auth, headers) { + return __awaiter(this, void 0, void 0, function* () { + if (fs.existsSync(dest)) { + throw new Error(`Destination file path ${dest} already exists`); + } + // Get the response headers + const http = new httpm.HttpClient(userAgent, [], { + allowRetries: false + }); + if (auth) { + core.debug('set auth'); + if (headers === undefined) { + headers = {}; + } + headers.authorization = auth; + } + const response = yield http.get(url, headers); + if (response.message.statusCode !== 200) { + const err = new HTTPError(response.message.statusCode); + core.debug(`Failed to download from "${url}". Code(${response.message.statusCode}) Message(${response.message.statusMessage})`); + throw err; + } + // Download the response body + const pipeline = util.promisify(stream.pipeline); + const responseMessageFactory = _getGlobal('TEST_DOWNLOAD_TOOL_RESPONSE_MESSAGE_FACTORY', () => response.message); + const readStream = responseMessageFactory(); + let succeeded = false; + try { + yield pipeline(readStream, fs.createWriteStream(dest)); + core.debug('download complete'); + succeeded = true; + return dest; + } + finally { + // Error, delete dest before retry + if (!succeeded) { + core.debug('download failed'); + try { + yield io.rmRF(dest); + } + catch (err) { + core.debug(`Failed to delete '${dest}'. ${err.message}`); + } + } + } + }); +} +/** + * Extract a .7z file + * + * @param file path to the .7z file + * @param dest destination directory. Optional. + * @param _7zPath path to 7zr.exe. Optional, for long path support. Most .7z archives do not have this + * problem. If your .7z archive contains very long paths, you can pass the path to 7zr.exe which will + * gracefully handle long paths. By default 7zdec.exe is used because it is a very small program and is + * bundled with the tool lib. However it does not support long paths. 7zr.exe is the reduced command line + * interface, it is smaller than the full command line interface, and it does support long paths. At the + * time of this writing, it is freely available from the LZMA SDK that is available on the 7zip website. + * Be sure to check the current license agreement. If 7zr.exe is bundled with your action, then the path + * to 7zr.exe can be pass to this function. + * @returns path to the destination directory + */ +function extract7z(file, dest, _7zPath) { + return __awaiter(this, void 0, void 0, function* () { + assert_1.ok(IS_WINDOWS, 'extract7z() not supported on current OS'); + assert_1.ok(file, 'parameter "file" is required'); + dest = yield _createExtractFolder(dest); + const originalCwd = process.cwd(); + process.chdir(dest); + if (_7zPath) { + try { + const logLevel = core.isDebug() ? '-bb1' : '-bb0'; + const args = [ + 'x', + logLevel, + '-bd', + '-sccUTF-8', + file + ]; + const options = { + silent: true + }; + yield exec_1.exec(`"${_7zPath}"`, args, options); + } + finally { + process.chdir(originalCwd); + } + } + else { + const escapedScript = path + .join(__dirname, '..', 'scripts', 'Invoke-7zdec.ps1') + .replace(/'/g, "''") + .replace(/"|\n|\r/g, ''); // double-up single quotes, remove double quotes and newlines + const escapedFile = file.replace(/'/g, "''").replace(/"|\n|\r/g, ''); + const escapedTarget = dest.replace(/'/g, "''").replace(/"|\n|\r/g, ''); + const command = `& '${escapedScript}' -Source '${escapedFile}' -Target '${escapedTarget}'`; + const args = [ + '-NoLogo', + '-Sta', + '-NoProfile', + '-NonInteractive', + '-ExecutionPolicy', + 'Unrestricted', + '-Command', + command + ]; + const options = { + silent: true + }; + try { + const powershellPath = yield io.which('powershell', true); + yield exec_1.exec(`"${powershellPath}"`, args, options); + } + finally { + process.chdir(originalCwd); + } + } + return dest; + }); +} +exports.extract7z = extract7z; +/** + * Extract a compressed tar archive + * + * @param file path to the tar + * @param dest destination directory. Optional. + * @param flags flags for the tar command to use for extraction. Defaults to 'xz' (extracting gzipped tars). Optional. + * @returns path to the destination directory + */ +function extractTar(file, dest, flags = 'xz') { + return __awaiter(this, void 0, void 0, function* () { + if (!file) { + throw new Error("parameter 'file' is required"); + } + // Create dest + dest = yield _createExtractFolder(dest); + // Determine whether GNU tar + core.debug('Checking tar --version'); + let versionOutput = ''; + yield exec_1.exec('tar --version', [], { + ignoreReturnCode: true, + silent: true, + listeners: { + stdout: (data) => (versionOutput += data.toString()), + stderr: (data) => (versionOutput += data.toString()) + } + }); + core.debug(versionOutput.trim()); + const isGnuTar = versionOutput.toUpperCase().includes('GNU TAR'); + // Initialize args + let args; + if (flags instanceof Array) { + args = flags; + } + else { + args = [flags]; + } + if (core.isDebug() && !flags.includes('v')) { + args.push('-v'); + } + let destArg = dest; + let fileArg = file; + if (IS_WINDOWS && isGnuTar) { + args.push('--force-local'); + destArg = dest.replace(/\\/g, '/'); + // Technically only the dest needs to have `/` but for aesthetic consistency + // convert slashes in the file arg too. + fileArg = file.replace(/\\/g, '/'); + } + if (isGnuTar) { + // Suppress warnings when using GNU tar to extract archives created by BSD tar + args.push('--warning=no-unknown-keyword'); + args.push('--overwrite'); + } + args.push('-C', destArg, '-f', fileArg); + yield exec_1.exec(`tar`, args); + return dest; + }); +} +exports.extractTar = extractTar; +/** + * Extract a xar compatible archive + * + * @param file path to the archive + * @param dest destination directory. Optional. + * @param flags flags for the xar. Optional. + * @returns path to the destination directory + */ +function extractXar(file, dest, flags = []) { + return __awaiter(this, void 0, void 0, function* () { + assert_1.ok(IS_MAC, 'extractXar() not supported on current OS'); + assert_1.ok(file, 'parameter "file" is required'); + dest = yield _createExtractFolder(dest); + let args; + if (flags instanceof Array) { + args = flags; + } + else { + args = [flags]; + } + args.push('-x', '-C', dest, '-f', file); + if (core.isDebug()) { + args.push('-v'); + } + const xarPath = yield io.which('xar', true); + yield exec_1.exec(`"${xarPath}"`, _unique(args)); + return dest; + }); +} +exports.extractXar = extractXar; +/** + * Extract a zip + * + * @param file path to the zip + * @param dest destination directory. Optional. + * @returns path to the destination directory + */ +function extractZip(file, dest) { + return __awaiter(this, void 0, void 0, function* () { + if (!file) { + throw new Error("parameter 'file' is required"); + } + dest = yield _createExtractFolder(dest); + if (IS_WINDOWS) { + yield extractZipWin(file, dest); + } + else { + yield extractZipNix(file, dest); + } + return dest; + }); +} +exports.extractZip = extractZip; +function extractZipWin(file, dest) { + return __awaiter(this, void 0, void 0, function* () { + // build the powershell command + const escapedFile = file.replace(/'/g, "''").replace(/"|\n|\r/g, ''); // double-up single quotes, remove double quotes and newlines + const escapedDest = dest.replace(/'/g, "''").replace(/"|\n|\r/g, ''); + const pwshPath = yield io.which('pwsh', false); + //To match the file overwrite behavior on nix systems, we use the overwrite = true flag for ExtractToDirectory + //and the -Force flag for Expand-Archive as a fallback + if (pwshPath) { + //attempt to use pwsh with ExtractToDirectory, if this fails attempt Expand-Archive + const pwshCommand = [ + `$ErrorActionPreference = 'Stop' ;`, + `try { Add-Type -AssemblyName System.IO.Compression.ZipFile } catch { } ;`, + `try { [System.IO.Compression.ZipFile]::ExtractToDirectory('${escapedFile}', '${escapedDest}', $true) }`, + `catch { if (($_.Exception.GetType().FullName -eq 'System.Management.Automation.MethodException') -or ($_.Exception.GetType().FullName -eq 'System.Management.Automation.RuntimeException') ){ Expand-Archive -LiteralPath '${escapedFile}' -DestinationPath '${escapedDest}' -Force } else { throw $_ } } ;` + ].join(' '); + const args = [ + '-NoLogo', + '-NoProfile', + '-NonInteractive', + '-ExecutionPolicy', + 'Unrestricted', + '-Command', + pwshCommand + ]; + core.debug(`Using pwsh at path: ${pwshPath}`); + yield exec_1.exec(`"${pwshPath}"`, args); + } + else { + const powershellCommand = [ + `$ErrorActionPreference = 'Stop' ;`, + `try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ;`, + `if ((Get-Command -Name Expand-Archive -Module Microsoft.PowerShell.Archive -ErrorAction Ignore)) { Expand-Archive -LiteralPath '${escapedFile}' -DestinationPath '${escapedDest}' -Force }`, + `else {[System.IO.Compression.ZipFile]::ExtractToDirectory('${escapedFile}', '${escapedDest}', $true) }` + ].join(' '); + const args = [ + '-NoLogo', + '-Sta', + '-NoProfile', + '-NonInteractive', + '-ExecutionPolicy', + 'Unrestricted', + '-Command', + powershellCommand + ]; + const powershellPath = yield io.which('powershell', true); + core.debug(`Using powershell at path: ${powershellPath}`); + yield exec_1.exec(`"${powershellPath}"`, args); + } + }); +} +function extractZipNix(file, dest) { + return __awaiter(this, void 0, void 0, function* () { + const unzipPath = yield io.which('unzip', true); + const args = [file]; + if (!core.isDebug()) { + args.unshift('-q'); + } + args.unshift('-o'); //overwrite with -o, otherwise a prompt is shown which freezes the run + yield exec_1.exec(`"${unzipPath}"`, args, { cwd: dest }); + }); +} +/** + * Caches a directory and installs it into the tool cacheDir + * + * @param sourceDir the directory to cache into tools + * @param tool tool name + * @param version version of the tool. semver format + * @param arch architecture of the tool. Optional. Defaults to machine architecture + */ +function cacheDir(sourceDir, tool, version, arch) { + return __awaiter(this, void 0, void 0, function* () { + version = semver.clean(version) || version; + arch = arch || os.arch(); + core.debug(`Caching tool ${tool} ${version} ${arch}`); + core.debug(`source dir: ${sourceDir}`); + if (!fs.statSync(sourceDir).isDirectory()) { + throw new Error('sourceDir is not a directory'); + } + // Create the tool dir + const destPath = yield _createToolPath(tool, version, arch); + // copy each child item. do not move. move can fail on Windows + // due to anti-virus software having an open handle on a file. + for (const itemName of fs.readdirSync(sourceDir)) { + const s = path.join(sourceDir, itemName); + yield io.cp(s, destPath, { recursive: true }); + } + // write .complete + _completeToolPath(tool, version, arch); + return destPath; + }); +} +exports.cacheDir = cacheDir; +/** + * Caches a downloaded file (GUID) and installs it + * into the tool cache with a given targetName + * + * @param sourceFile the file to cache into tools. Typically a result of downloadTool which is a guid. + * @param targetFile the name of the file name in the tools directory + * @param tool tool name + * @param version version of the tool. semver format + * @param arch architecture of the tool. Optional. Defaults to machine architecture + */ +function cacheFile(sourceFile, targetFile, tool, version, arch) { + return __awaiter(this, void 0, void 0, function* () { + version = semver.clean(version) || version; + arch = arch || os.arch(); + core.debug(`Caching tool ${tool} ${version} ${arch}`); + core.debug(`source file: ${sourceFile}`); + if (!fs.statSync(sourceFile).isFile()) { + throw new Error('sourceFile is not a file'); + } + // create the tool dir + const destFolder = yield _createToolPath(tool, version, arch); + // copy instead of move. move can fail on Windows due to + // anti-virus software having an open handle on a file. + const destPath = path.join(destFolder, targetFile); + core.debug(`destination file ${destPath}`); + yield io.cp(sourceFile, destPath); + // write .complete + _completeToolPath(tool, version, arch); + return destFolder; + }); +} +exports.cacheFile = cacheFile; +/** + * Finds the path to a tool version in the local installed tool cache + * + * @param toolName name of the tool + * @param versionSpec version of the tool + * @param arch optional arch. defaults to arch of computer + */ +function find(toolName, versionSpec, arch) { + if (!toolName) { + throw new Error('toolName parameter is required'); + } + if (!versionSpec) { + throw new Error('versionSpec parameter is required'); + } + arch = arch || os.arch(); + // attempt to resolve an explicit version + if (!isExplicitVersion(versionSpec)) { + const localVersions = findAllVersions(toolName, arch); + const match = evaluateVersions(localVersions, versionSpec); + versionSpec = match; + } + // check for the explicit version in the cache + let toolPath = ''; + if (versionSpec) { + versionSpec = semver.clean(versionSpec) || ''; + const cachePath = path.join(_getCacheDirectory(), toolName, versionSpec, arch); + core.debug(`checking cache: ${cachePath}`); + if (fs.existsSync(cachePath) && fs.existsSync(`${cachePath}.complete`)) { + core.debug(`Found tool in cache ${toolName} ${versionSpec} ${arch}`); + toolPath = cachePath; + } + else { + core.debug('not found'); + } + } + return toolPath; +} +exports.find = find; +/** + * Finds the paths to all versions of a tool that are installed in the local tool cache + * + * @param toolName name of the tool + * @param arch optional arch. defaults to arch of computer + */ +function findAllVersions(toolName, arch) { + const versions = []; + arch = arch || os.arch(); + const toolPath = path.join(_getCacheDirectory(), toolName); + if (fs.existsSync(toolPath)) { + const children = fs.readdirSync(toolPath); + for (const child of children) { + if (isExplicitVersion(child)) { + const fullPath = path.join(toolPath, child, arch || ''); + if (fs.existsSync(fullPath) && fs.existsSync(`${fullPath}.complete`)) { + versions.push(child); + } + } + } + } + return versions; +} +exports.findAllVersions = findAllVersions; +function getManifestFromRepo(owner, repo, auth, branch = 'master') { + return __awaiter(this, void 0, void 0, function* () { + let releases = []; + const treeUrl = `https://api.github.com/repos/${owner}/${repo}/git/trees/${branch}`; + const http = new httpm.HttpClient('tool-cache'); + const headers = {}; + if (auth) { + core.debug('set auth'); + headers.authorization = auth; + } + const response = yield http.getJson(treeUrl, headers); + if (!response.result) { + return releases; + } + let manifestUrl = ''; + for (const item of response.result.tree) { + if (item.path === 'versions-manifest.json') { + manifestUrl = item.url; + break; + } + } + headers['accept'] = 'application/vnd.github.VERSION.raw'; + let versionsRaw = yield (yield http.get(manifestUrl, headers)).readBody(); + if (versionsRaw) { + // shouldn't be needed but protects against invalid json saved with BOM + versionsRaw = versionsRaw.replace(/^\uFEFF/, ''); + try { + releases = JSON.parse(versionsRaw); + } + catch (_a) { + core.debug('Invalid json'); + } + } + return releases; + }); +} +exports.getManifestFromRepo = getManifestFromRepo; +function findFromManifest(versionSpec, stable, manifest, archFilter = os.arch()) { + return __awaiter(this, void 0, void 0, function* () { + // wrap the internal impl + const match = yield mm._findMatch(versionSpec, stable, manifest, archFilter); + return match; + }); +} +exports.findFromManifest = findFromManifest; +function _createExtractFolder(dest) { + return __awaiter(this, void 0, void 0, function* () { + if (!dest) { + // create a temp dir + dest = path.join(_getTempDirectory(), v4_1.default()); + } + yield io.mkdirP(dest); + return dest; + }); +} +function _createToolPath(tool, version, arch) { + return __awaiter(this, void 0, void 0, function* () { + const folderPath = path.join(_getCacheDirectory(), tool, semver.clean(version) || version, arch || ''); + core.debug(`destination ${folderPath}`); + const markerPath = `${folderPath}.complete`; + yield io.rmRF(folderPath); + yield io.rmRF(markerPath); + yield io.mkdirP(folderPath); + return folderPath; + }); +} +function _completeToolPath(tool, version, arch) { + const folderPath = path.join(_getCacheDirectory(), tool, semver.clean(version) || version, arch || ''); + const markerPath = `${folderPath}.complete`; + fs.writeFileSync(markerPath, ''); + core.debug('finished caching tool'); +} +/** + * Check if version string is explicit + * + * @param versionSpec version string to check + */ +function isExplicitVersion(versionSpec) { + const c = semver.clean(versionSpec) || ''; + core.debug(`isExplicit: ${c}`); + const valid = semver.valid(c) != null; + core.debug(`explicit? ${valid}`); + return valid; +} +exports.isExplicitVersion = isExplicitVersion; +/** + * Get the highest satisfiying semantic version in `versions` which satisfies `versionSpec` + * + * @param versions array of versions to evaluate + * @param versionSpec semantic version spec to satisfy + */ +function evaluateVersions(versions, versionSpec) { + let version = ''; + core.debug(`evaluating ${versions.length} versions`); + versions = versions.sort((a, b) => { + if (semver.gt(a, b)) { + return 1; + } + return -1; + }); + for (let i = versions.length - 1; i >= 0; i--) { + const potential = versions[i]; + const satisfied = semver.satisfies(potential, versionSpec); + if (satisfied) { + version = potential; + break; + } + } + if (version) { + core.debug(`matched: ${version}`); + } + else { + core.debug('match not found'); + } + return version; +} +exports.evaluateVersions = evaluateVersions; +/** + * Gets RUNNER_TOOL_CACHE + */ +function _getCacheDirectory() { + const cacheDirectory = process.env['RUNNER_TOOL_CACHE'] || ''; + assert_1.ok(cacheDirectory, 'Expected RUNNER_TOOL_CACHE to be defined'); + return cacheDirectory; +} +/** + * Gets RUNNER_TEMP + */ +function _getTempDirectory() { + const tempDirectory = process.env['RUNNER_TEMP'] || ''; + assert_1.ok(tempDirectory, 'Expected RUNNER_TEMP to be defined'); + return tempDirectory; +} +/** + * Gets a global variable + */ +function _getGlobal(key, defaultValue) { + /* eslint-disable @typescript-eslint/no-explicit-any */ + const value = global[key]; + /* eslint-enable @typescript-eslint/no-explicit-any */ + return value !== undefined ? value : defaultValue; +} +/** + * Returns an array of unique values. + * @param values Values to make unique. + */ +function _unique(values) { + return Array.from(new Set(values)); +} +//# sourceMappingURL=tool-cache.js.map + +/***/ }), + +/***/ 727: +/***/ ((module) => { + +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ +var byteToHex = []; +for (var i = 0; i < 256; ++i) { + byteToHex[i] = (i + 0x100).toString(16).substr(1); +} + +function bytesToUuid(buf, offset) { + var i = offset || 0; + var bth = byteToHex; + // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4 + return ([ + bth[buf[i++]], bth[buf[i++]], + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], + bth[buf[i++]], bth[buf[i++]], + bth[buf[i++]], bth[buf[i++]] + ]).join(''); +} + +module.exports = bytesToUuid; + + +/***/ }), + +/***/ 879: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +// Unique ID creation requires a high quality random # generator. In node.js +// this is pretty straight-forward - we use the crypto API. + +var crypto = __nccwpck_require__(982); + +module.exports = function nodeRNG() { + return crypto.randomBytes(16); +}; + + +/***/ }), + +/***/ 350: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +var rng = __nccwpck_require__(879); +var bytesToUuid = __nccwpck_require__(727); + +function v4(options, buf, offset) { + var i = buf && offset || 0; + + if (typeof(options) == 'string') { + buf = options === 'binary' ? new Array(16) : null; + options = null; + } + options = options || {}; + + var rnds = options.random || (options.rng || rng)(); + + // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + rnds[6] = (rnds[6] & 0x0f) | 0x40; + rnds[8] = (rnds[8] & 0x3f) | 0x80; + + // Copy bytes to buffer, if provided + if (buf) { + for (var ii = 0; ii < 16; ++ii) { + buf[i + ii] = rnds[ii]; + } + } + + return buf || bytesToUuid(rnds); +} + +module.exports = v4; + + +/***/ }), + +/***/ 318: +/***/ ((module, exports) => { + +exports = module.exports = SemVer + +var debug +/* istanbul ignore next */ +if (typeof process === 'object' && + process.env && + process.env.NODE_DEBUG && + /\bsemver\b/i.test(process.env.NODE_DEBUG)) { + debug = function () { + var args = Array.prototype.slice.call(arguments, 0) + args.unshift('SEMVER') + console.log.apply(console, args) + } +} else { + debug = function () {} +} + +// Note: this is the semver.org version of the spec that it implements +// Not necessarily the package version of this code. +exports.SEMVER_SPEC_VERSION = '2.0.0' + +var MAX_LENGTH = 256 +var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || + /* istanbul ignore next */ 9007199254740991 + +// Max safe segment length for coercion. +var MAX_SAFE_COMPONENT_LENGTH = 16 + +var MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6 + +// The actual regexps go on exports.re +var re = exports.re = [] +var safeRe = exports.safeRe = [] +var src = exports.src = [] +var t = exports.tokens = {} +var R = 0 + +function tok (n) { + t[n] = R++ +} + +var LETTERDASHNUMBER = '[a-zA-Z0-9-]' + +// Replace some greedy regex tokens to prevent regex dos issues. These regex are +// used internally via the safeRe object since all inputs in this library get +// normalized first to trim and collapse all extra whitespace. The original +// regexes are exported for userland consumption and lower level usage. A +// future breaking change could export the safer regex only with a note that +// all input should have extra whitespace removed. +var safeRegexReplacements = [ + ['\\s', 1], + ['\\d', MAX_LENGTH], + [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH], +] + +function makeSafeRe (value) { + for (var i = 0; i < safeRegexReplacements.length; i++) { + var token = safeRegexReplacements[i][0] + var max = safeRegexReplacements[i][1] + value = value + .split(token + '*').join(token + '{0,' + max + '}') + .split(token + '+').join(token + '{1,' + max + '}') + } + return value +} + +// The following Regular Expressions can be used for tokenizing, +// validating, and parsing SemVer version strings. + +// ## Numeric Identifier +// A single `0`, or a non-zero digit followed by zero or more digits. + +tok('NUMERICIDENTIFIER') +src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*' +tok('NUMERICIDENTIFIERLOOSE') +src[t.NUMERICIDENTIFIERLOOSE] = '\\d+' + +// ## Non-numeric Identifier +// Zero or more digits, followed by a letter or hyphen, and then zero or +// more letters, digits, or hyphens. + +tok('NONNUMERICIDENTIFIER') +src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-]' + LETTERDASHNUMBER + '*' + +// ## Main Version +// Three dot-separated numeric identifiers. + +tok('MAINVERSION') +src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + + '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + + '(' + src[t.NUMERICIDENTIFIER] + ')' + +tok('MAINVERSIONLOOSE') +src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + + '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + + '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')' + +// ## Pre-release Version Identifier +// A numeric identifier, or a non-numeric identifier. + +tok('PRERELEASEIDENTIFIER') +src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] + + '|' + src[t.NONNUMERICIDENTIFIER] + ')' + +tok('PRERELEASEIDENTIFIERLOOSE') +src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] + + '|' + src[t.NONNUMERICIDENTIFIER] + ')' + +// ## Pre-release Version +// Hyphen, followed by one or more dot-separated pre-release version +// identifiers. + +tok('PRERELEASE') +src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] + + '(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))' + +tok('PRERELEASELOOSE') +src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] + + '(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))' + +// ## Build Metadata Identifier +// Any combination of digits, letters, or hyphens. + +tok('BUILDIDENTIFIER') +src[t.BUILDIDENTIFIER] = LETTERDASHNUMBER + '+' + +// ## Build Metadata +// Plus sign, followed by one or more period-separated build metadata +// identifiers. + +tok('BUILD') +src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] + + '(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))' + +// ## Full Version String +// A main version, followed optionally by a pre-release version and +// build metadata. + +// Note that the only major, minor, patch, and pre-release sections of +// the version string are capturing groups. The build metadata is not a +// capturing group, because it should not ever be used in version +// comparison. + +tok('FULL') +tok('FULLPLAIN') +src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] + + src[t.PRERELEASE] + '?' + + src[t.BUILD] + '?' + +src[t.FULL] = '^' + src[t.FULLPLAIN] + '$' + +// like full, but allows v1.2.3 and =1.2.3, which people do sometimes. +// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty +// common in the npm registry. +tok('LOOSEPLAIN') +src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] + + src[t.PRERELEASELOOSE] + '?' + + src[t.BUILD] + '?' + +tok('LOOSE') +src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$' + +tok('GTLT') +src[t.GTLT] = '((?:<|>)?=?)' + +// Something like "2.*" or "1.2.x". +// Note that "x.x" is a valid xRange identifer, meaning "any version" +// Only the first item is strictly required. +tok('XRANGEIDENTIFIERLOOSE') +src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*' +tok('XRANGEIDENTIFIER') +src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*' + +tok('XRANGEPLAIN') +src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' + + '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + + '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + + '(?:' + src[t.PRERELEASE] + ')?' + + src[t.BUILD] + '?' + + ')?)?' + +tok('XRANGEPLAINLOOSE') +src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + + '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + + '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + + '(?:' + src[t.PRERELEASELOOSE] + ')?' + + src[t.BUILD] + '?' + + ')?)?' + +tok('XRANGE') +src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$' +tok('XRANGELOOSE') +src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$' + +// Coercion. +// Extract anything that could conceivably be a part of a valid semver +tok('COERCE') +src[t.COERCE] = '(^|[^\\d])' + + '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + + '(?:$|[^\\d])' +tok('COERCERTL') +re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g') +safeRe[t.COERCERTL] = new RegExp(makeSafeRe(src[t.COERCE]), 'g') + +// Tilde ranges. +// Meaning is "reasonably at or greater than" +tok('LONETILDE') +src[t.LONETILDE] = '(?:~>?)' + +tok('TILDETRIM') +src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+' +re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g') +safeRe[t.TILDETRIM] = new RegExp(makeSafeRe(src[t.TILDETRIM]), 'g') +var tildeTrimReplace = '$1~' + +tok('TILDE') +src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$' +tok('TILDELOOSE') +src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$' + +// Caret ranges. +// Meaning is "at least and backwards compatible with" +tok('LONECARET') +src[t.LONECARET] = '(?:\\^)' + +tok('CARETTRIM') +src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+' +re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g') +safeRe[t.CARETTRIM] = new RegExp(makeSafeRe(src[t.CARETTRIM]), 'g') +var caretTrimReplace = '$1^' + +tok('CARET') +src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$' +tok('CARETLOOSE') +src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$' + +// A simple gt/lt/eq thing, or just "" to indicate "any version" +tok('COMPARATORLOOSE') +src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$' +tok('COMPARATOR') +src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$' + +// An expression to strip any whitespace between the gtlt and the thing +// it modifies, so that `> 1.2.3` ==> `>1.2.3` +tok('COMPARATORTRIM') +src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] + + '\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')' + +// this one has to use the /g flag +re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g') +safeRe[t.COMPARATORTRIM] = new RegExp(makeSafeRe(src[t.COMPARATORTRIM]), 'g') +var comparatorTrimReplace = '$1$2$3' + +// Something like `1.2.3 - 1.2.4` +// Note that these all use the loose form, because they'll be +// checked against either the strict or loose comparator form +// later. +tok('HYPHENRANGE') +src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' + + '\\s+-\\s+' + + '(' + src[t.XRANGEPLAIN] + ')' + + '\\s*$' + +tok('HYPHENRANGELOOSE') +src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' + + '\\s+-\\s+' + + '(' + src[t.XRANGEPLAINLOOSE] + ')' + + '\\s*$' + +// Star ranges basically just allow anything at all. +tok('STAR') +src[t.STAR] = '(<|>)?=?\\s*\\*' + +// Compile to actual regexp objects. +// All are flag-free, unless they were created above with a flag. +for (var i = 0; i < R; i++) { + debug(i, src[i]) + if (!re[i]) { + re[i] = new RegExp(src[i]) + + // Replace all greedy whitespace to prevent regex dos issues. These regex are + // used internally via the safeRe object since all inputs in this library get + // normalized first to trim and collapse all extra whitespace. The original + // regexes are exported for userland consumption and lower level usage. A + // future breaking change could export the safer regex only with a note that + // all input should have extra whitespace removed. + safeRe[i] = new RegExp(makeSafeRe(src[i])) + } +} + +exports.parse = parse +function parse (version, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + if (version instanceof SemVer) { + return version + } + + if (typeof version !== 'string') { + return null + } + + if (version.length > MAX_LENGTH) { + return null + } + + var r = options.loose ? safeRe[t.LOOSE] : safeRe[t.FULL] + if (!r.test(version)) { + return null + } + + try { + return new SemVer(version, options) + } catch (er) { + return null + } +} + +exports.valid = valid +function valid (version, options) { + var v = parse(version, options) + return v ? v.version : null +} + +exports.clean = clean +function clean (version, options) { + var s = parse(version.trim().replace(/^[=v]+/, ''), options) + return s ? s.version : null +} + +exports.SemVer = SemVer + +function SemVer (version, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + if (version instanceof SemVer) { + if (version.loose === options.loose) { + return version + } else { + version = version.version + } + } else if (typeof version !== 'string') { + throw new TypeError('Invalid Version: ' + version) + } + + if (version.length > MAX_LENGTH) { + throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters') + } + + if (!(this instanceof SemVer)) { + return new SemVer(version, options) + } + + debug('SemVer', version, options) + this.options = options + this.loose = !!options.loose + + var m = version.trim().match(options.loose ? safeRe[t.LOOSE] : safeRe[t.FULL]) + + if (!m) { + throw new TypeError('Invalid Version: ' + version) + } + + this.raw = version + + // these are actually numbers + this.major = +m[1] + this.minor = +m[2] + this.patch = +m[3] + + if (this.major > MAX_SAFE_INTEGER || this.major < 0) { + throw new TypeError('Invalid major version') + } + + if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { + throw new TypeError('Invalid minor version') + } + + if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { + throw new TypeError('Invalid patch version') + } + + // numberify any prerelease numeric ids + if (!m[4]) { + this.prerelease = [] + } else { + this.prerelease = m[4].split('.').map(function (id) { + if (/^[0-9]+$/.test(id)) { + var num = +id + if (num >= 0 && num < MAX_SAFE_INTEGER) { + return num + } + } + return id + }) + } + + this.build = m[5] ? m[5].split('.') : [] + this.format() +} + +SemVer.prototype.format = function () { + this.version = this.major + '.' + this.minor + '.' + this.patch + if (this.prerelease.length) { + this.version += '-' + this.prerelease.join('.') + } + return this.version +} + +SemVer.prototype.toString = function () { + return this.version +} + +SemVer.prototype.compare = function (other) { + debug('SemVer.compare', this.version, this.options, other) + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + return this.compareMain(other) || this.comparePre(other) +} + +SemVer.prototype.compareMain = function (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + return compareIdentifiers(this.major, other.major) || + compareIdentifiers(this.minor, other.minor) || + compareIdentifiers(this.patch, other.patch) +} + +SemVer.prototype.comparePre = function (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + // NOT having a prerelease is > having one + if (this.prerelease.length && !other.prerelease.length) { + return -1 + } else if (!this.prerelease.length && other.prerelease.length) { + return 1 + } else if (!this.prerelease.length && !other.prerelease.length) { + return 0 + } + + var i = 0 + do { + var a = this.prerelease[i] + var b = other.prerelease[i] + debug('prerelease compare', i, a, b) + if (a === undefined && b === undefined) { + return 0 + } else if (b === undefined) { + return 1 + } else if (a === undefined) { + return -1 + } else if (a === b) { + continue + } else { + return compareIdentifiers(a, b) + } + } while (++i) +} + +SemVer.prototype.compareBuild = function (other) { + if (!(other instanceof SemVer)) { + other = new SemVer(other, this.options) + } + + var i = 0 + do { + var a = this.build[i] + var b = other.build[i] + debug('prerelease compare', i, a, b) + if (a === undefined && b === undefined) { + return 0 + } else if (b === undefined) { + return 1 + } else if (a === undefined) { + return -1 + } else if (a === b) { + continue + } else { + return compareIdentifiers(a, b) + } + } while (++i) +} + +// preminor will bump the version up to the next minor release, and immediately +// down to pre-release. premajor and prepatch work the same way. +SemVer.prototype.inc = function (release, identifier) { + switch (release) { + case 'premajor': + this.prerelease.length = 0 + this.patch = 0 + this.minor = 0 + this.major++ + this.inc('pre', identifier) + break + case 'preminor': + this.prerelease.length = 0 + this.patch = 0 + this.minor++ + this.inc('pre', identifier) + break + case 'prepatch': + // If this is already a prerelease, it will bump to the next version + // drop any prereleases that might already exist, since they are not + // relevant at this point. + this.prerelease.length = 0 + this.inc('patch', identifier) + this.inc('pre', identifier) + break + // If the input is a non-prerelease version, this acts the same as + // prepatch. + case 'prerelease': + if (this.prerelease.length === 0) { + this.inc('patch', identifier) + } + this.inc('pre', identifier) + break + + case 'major': + // If this is a pre-major version, bump up to the same major version. + // Otherwise increment major. + // 1.0.0-5 bumps to 1.0.0 + // 1.1.0 bumps to 2.0.0 + if (this.minor !== 0 || + this.patch !== 0 || + this.prerelease.length === 0) { + this.major++ + } + this.minor = 0 + this.patch = 0 + this.prerelease = [] + break + case 'minor': + // If this is a pre-minor version, bump up to the same minor version. + // Otherwise increment minor. + // 1.2.0-5 bumps to 1.2.0 + // 1.2.1 bumps to 1.3.0 + if (this.patch !== 0 || this.prerelease.length === 0) { + this.minor++ + } + this.patch = 0 + this.prerelease = [] + break + case 'patch': + // If this is not a pre-release version, it will increment the patch. + // If it is a pre-release it will bump up to the same patch version. + // 1.2.0-5 patches to 1.2.0 + // 1.2.0 patches to 1.2.1 + if (this.prerelease.length === 0) { + this.patch++ + } + this.prerelease = [] + break + // This probably shouldn't be used publicly. + // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction. + case 'pre': + if (this.prerelease.length === 0) { + this.prerelease = [0] + } else { + var i = this.prerelease.length + while (--i >= 0) { + if (typeof this.prerelease[i] === 'number') { + this.prerelease[i]++ + i = -2 + } + } + if (i === -1) { + // didn't increment anything + this.prerelease.push(0) + } + } + if (identifier) { + // 1.2.0-beta.1 bumps to 1.2.0-beta.2, + // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 + if (this.prerelease[0] === identifier) { + if (isNaN(this.prerelease[1])) { + this.prerelease = [identifier, 0] + } + } else { + this.prerelease = [identifier, 0] + } + } + break + + default: + throw new Error('invalid increment argument: ' + release) + } + this.format() + this.raw = this.version + return this +} + +exports.inc = inc +function inc (version, release, loose, identifier) { + if (typeof (loose) === 'string') { + identifier = loose + loose = undefined + } + + try { + return new SemVer(version, loose).inc(release, identifier).version + } catch (er) { + return null + } +} + +exports.diff = diff +function diff (version1, version2) { + if (eq(version1, version2)) { + return null + } else { + var v1 = parse(version1) + var v2 = parse(version2) + var prefix = '' + if (v1.prerelease.length || v2.prerelease.length) { + prefix = 'pre' + var defaultResult = 'prerelease' + } + for (var key in v1) { + if (key === 'major' || key === 'minor' || key === 'patch') { + if (v1[key] !== v2[key]) { + return prefix + key + } + } + } + return defaultResult // may be undefined + } +} + +exports.compareIdentifiers = compareIdentifiers + +var numeric = /^[0-9]+$/ +function compareIdentifiers (a, b) { + var anum = numeric.test(a) + var bnum = numeric.test(b) + + if (anum && bnum) { + a = +a + b = +b + } + + return a === b ? 0 + : (anum && !bnum) ? -1 + : (bnum && !anum) ? 1 + : a < b ? -1 + : 1 +} + +exports.rcompareIdentifiers = rcompareIdentifiers +function rcompareIdentifiers (a, b) { + return compareIdentifiers(b, a) +} + +exports.major = major +function major (a, loose) { + return new SemVer(a, loose).major +} + +exports.minor = minor +function minor (a, loose) { + return new SemVer(a, loose).minor +} + +exports.patch = patch +function patch (a, loose) { + return new SemVer(a, loose).patch +} + +exports.compare = compare +function compare (a, b, loose) { + return new SemVer(a, loose).compare(new SemVer(b, loose)) +} + +exports.compareLoose = compareLoose +function compareLoose (a, b) { + return compare(a, b, true) +} + +exports.compareBuild = compareBuild +function compareBuild (a, b, loose) { + var versionA = new SemVer(a, loose) + var versionB = new SemVer(b, loose) + return versionA.compare(versionB) || versionA.compareBuild(versionB) +} + +exports.rcompare = rcompare +function rcompare (a, b, loose) { + return compare(b, a, loose) +} + +exports.sort = sort +function sort (list, loose) { + return list.sort(function (a, b) { + return exports.compareBuild(a, b, loose) + }) +} + +exports.rsort = rsort +function rsort (list, loose) { + return list.sort(function (a, b) { + return exports.compareBuild(b, a, loose) + }) +} + +exports.gt = gt +function gt (a, b, loose) { + return compare(a, b, loose) > 0 +} + +exports.lt = lt +function lt (a, b, loose) { + return compare(a, b, loose) < 0 +} + +exports.eq = eq +function eq (a, b, loose) { + return compare(a, b, loose) === 0 +} + +exports.neq = neq +function neq (a, b, loose) { + return compare(a, b, loose) !== 0 +} + +exports.gte = gte +function gte (a, b, loose) { + return compare(a, b, loose) >= 0 +} + +exports.lte = lte +function lte (a, b, loose) { + return compare(a, b, loose) <= 0 +} + +exports.cmp = cmp +function cmp (a, op, b, loose) { + switch (op) { + case '===': + if (typeof a === 'object') + a = a.version + if (typeof b === 'object') + b = b.version + return a === b + + case '!==': + if (typeof a === 'object') + a = a.version + if (typeof b === 'object') + b = b.version + return a !== b + + case '': + case '=': + case '==': + return eq(a, b, loose) + + case '!=': + return neq(a, b, loose) + + case '>': + return gt(a, b, loose) + + case '>=': + return gte(a, b, loose) + + case '<': + return lt(a, b, loose) + + case '<=': + return lte(a, b, loose) + + default: + throw new TypeError('Invalid operator: ' + op) + } +} + +exports.Comparator = Comparator +function Comparator (comp, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + if (comp instanceof Comparator) { + if (comp.loose === !!options.loose) { + return comp + } else { + comp = comp.value + } + } + + if (!(this instanceof Comparator)) { + return new Comparator(comp, options) + } + + comp = comp.trim().split(/\s+/).join(' ') + debug('comparator', comp, options) + this.options = options + this.loose = !!options.loose + this.parse(comp) + + if (this.semver === ANY) { + this.value = '' + } else { + this.value = this.operator + this.semver.version + } + + debug('comp', this) +} + +var ANY = {} +Comparator.prototype.parse = function (comp) { + var r = this.options.loose ? safeRe[t.COMPARATORLOOSE] : safeRe[t.COMPARATOR] + var m = comp.match(r) + + if (!m) { + throw new TypeError('Invalid comparator: ' + comp) + } + + this.operator = m[1] !== undefined ? m[1] : '' + if (this.operator === '=') { + this.operator = '' + } + + // if it literally is just '>' or '' then allow anything. + if (!m[2]) { + this.semver = ANY + } else { + this.semver = new SemVer(m[2], this.options.loose) + } +} + +Comparator.prototype.toString = function () { + return this.value +} + +Comparator.prototype.test = function (version) { + debug('Comparator.test', version, this.options.loose) + + if (this.semver === ANY || version === ANY) { + return true + } + + if (typeof version === 'string') { + try { + version = new SemVer(version, this.options) + } catch (er) { + return false + } + } + + return cmp(version, this.operator, this.semver, this.options) +} + +Comparator.prototype.intersects = function (comp, options) { + if (!(comp instanceof Comparator)) { + throw new TypeError('a Comparator is required') + } + + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + var rangeTmp + + if (this.operator === '') { + if (this.value === '') { + return true + } + rangeTmp = new Range(comp.value, options) + return satisfies(this.value, rangeTmp, options) + } else if (comp.operator === '') { + if (comp.value === '') { + return true + } + rangeTmp = new Range(this.value, options) + return satisfies(comp.semver, rangeTmp, options) + } + + var sameDirectionIncreasing = + (this.operator === '>=' || this.operator === '>') && + (comp.operator === '>=' || comp.operator === '>') + var sameDirectionDecreasing = + (this.operator === '<=' || this.operator === '<') && + (comp.operator === '<=' || comp.operator === '<') + var sameSemVer = this.semver.version === comp.semver.version + var differentDirectionsInclusive = + (this.operator === '>=' || this.operator === '<=') && + (comp.operator === '>=' || comp.operator === '<=') + var oppositeDirectionsLessThan = + cmp(this.semver, '<', comp.semver, options) && + ((this.operator === '>=' || this.operator === '>') && + (comp.operator === '<=' || comp.operator === '<')) + var oppositeDirectionsGreaterThan = + cmp(this.semver, '>', comp.semver, options) && + ((this.operator === '<=' || this.operator === '<') && + (comp.operator === '>=' || comp.operator === '>')) + + return sameDirectionIncreasing || sameDirectionDecreasing || + (sameSemVer && differentDirectionsInclusive) || + oppositeDirectionsLessThan || oppositeDirectionsGreaterThan +} + +exports.Range = Range +function Range (range, options) { + if (!options || typeof options !== 'object') { + options = { + loose: !!options, + includePrerelease: false + } + } + + if (range instanceof Range) { + if (range.loose === !!options.loose && + range.includePrerelease === !!options.includePrerelease) { + return range + } else { + return new Range(range.raw, options) + } + } + + if (range instanceof Comparator) { + return new Range(range.value, options) + } + + if (!(this instanceof Range)) { + return new Range(range, options) + } + + this.options = options + this.loose = !!options.loose + this.includePrerelease = !!options.includePrerelease + + // First reduce all whitespace as much as possible so we do not have to rely + // on potentially slow regexes like \s*. This is then stored and used for + // future error messages as well. + this.raw = range + .trim() + .split(/\s+/) + .join(' ') + + // First, split based on boolean or || + this.set = this.raw.split('||').map(function (range) { + return this.parseRange(range.trim()) + }, this).filter(function (c) { + // throw out any that are not relevant for whatever reason + return c.length + }) + + if (!this.set.length) { + throw new TypeError('Invalid SemVer Range: ' + this.raw) + } + + this.format() +} + +Range.prototype.format = function () { + this.range = this.set.map(function (comps) { + return comps.join(' ').trim() + }).join('||').trim() + return this.range +} + +Range.prototype.toString = function () { + return this.range +} + +Range.prototype.parseRange = function (range) { + var loose = this.options.loose + // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` + var hr = loose ? safeRe[t.HYPHENRANGELOOSE] : safeRe[t.HYPHENRANGE] + range = range.replace(hr, hyphenReplace) + debug('hyphen replace', range) + // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` + range = range.replace(safeRe[t.COMPARATORTRIM], comparatorTrimReplace) + debug('comparator trim', range, safeRe[t.COMPARATORTRIM]) + + // `~ 1.2.3` => `~1.2.3` + range = range.replace(safeRe[t.TILDETRIM], tildeTrimReplace) + + // `^ 1.2.3` => `^1.2.3` + range = range.replace(safeRe[t.CARETTRIM], caretTrimReplace) + + // normalize spaces + range = range.split(/\s+/).join(' ') + + // At this point, the range is completely trimmed and + // ready to be split into comparators. + + var compRe = loose ? safeRe[t.COMPARATORLOOSE] : safeRe[t.COMPARATOR] + var set = range.split(' ').map(function (comp) { + return parseComparator(comp, this.options) + }, this).join(' ').split(/\s+/) + if (this.options.loose) { + // in loose mode, throw out any that are not valid comparators + set = set.filter(function (comp) { + return !!comp.match(compRe) + }) + } + set = set.map(function (comp) { + return new Comparator(comp, this.options) + }, this) + + return set +} + +Range.prototype.intersects = function (range, options) { + if (!(range instanceof Range)) { + throw new TypeError('a Range is required') + } + + return this.set.some(function (thisComparators) { + return ( + isSatisfiable(thisComparators, options) && + range.set.some(function (rangeComparators) { + return ( + isSatisfiable(rangeComparators, options) && + thisComparators.every(function (thisComparator) { + return rangeComparators.every(function (rangeComparator) { + return thisComparator.intersects(rangeComparator, options) + }) + }) + ) + }) + ) + }) +} + +// take a set of comparators and determine whether there +// exists a version which can satisfy it +function isSatisfiable (comparators, options) { + var result = true + var remainingComparators = comparators.slice() + var testComparator = remainingComparators.pop() + + while (result && remainingComparators.length) { + result = remainingComparators.every(function (otherComparator) { + return testComparator.intersects(otherComparator, options) + }) + + testComparator = remainingComparators.pop() + } + + return result +} + +// Mostly just for testing and legacy API reasons +exports.toComparators = toComparators +function toComparators (range, options) { + return new Range(range, options).set.map(function (comp) { + return comp.map(function (c) { + return c.value + }).join(' ').trim().split(' ') + }) +} + +// comprised of xranges, tildes, stars, and gtlt's at this point. +// already replaced the hyphen ranges +// turn into a set of JUST comparators. +function parseComparator (comp, options) { + debug('comp', comp, options) + comp = replaceCarets(comp, options) + debug('caret', comp) + comp = replaceTildes(comp, options) + debug('tildes', comp) + comp = replaceXRanges(comp, options) + debug('xrange', comp) + comp = replaceStars(comp, options) + debug('stars', comp) + return comp +} + +function isX (id) { + return !id || id.toLowerCase() === 'x' || id === '*' +} + +// ~, ~> --> * (any, kinda silly) +// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0 +// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0 +// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0 +// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0 +// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0 +function replaceTildes (comp, options) { + return comp.trim().split(/\s+/).map(function (comp) { + return replaceTilde(comp, options) + }).join(' ') +} + +function replaceTilde (comp, options) { + var r = options.loose ? safeRe[t.TILDELOOSE] : safeRe[t.TILDE] + return comp.replace(r, function (_, M, m, p, pr) { + debug('tilde', comp, _, M, m, p, pr) + var ret + + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' + } else if (isX(p)) { + // ~1.2 == >=1.2.0 <1.3.0 + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' + } else if (pr) { + debug('replaceTilde pr', pr) + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + (+m + 1) + '.0' + } else { + // ~1.2.3 == >=1.2.3 <1.3.0 + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + (+m + 1) + '.0' + } + + debug('tilde return', ret) + return ret + }) +} + +// ^ --> * (any, kinda silly) +// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0 +// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0 +// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0 +// ^1.2.3 --> >=1.2.3 <2.0.0 +// ^1.2.0 --> >=1.2.0 <2.0.0 +function replaceCarets (comp, options) { + return comp.trim().split(/\s+/).map(function (comp) { + return replaceCaret(comp, options) + }).join(' ') +} + +function replaceCaret (comp, options) { + debug('caret', comp, options) + var r = options.loose ? safeRe[t.CARETLOOSE] : safeRe[t.CARET] + return comp.replace(r, function (_, M, m, p, pr) { + debug('caret', comp, _, M, m, p, pr) + var ret + + if (isX(M)) { + ret = '' + } else if (isX(m)) { + ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' + } else if (isX(p)) { + if (M === '0') { + ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' + } else { + ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0' + } + } else if (pr) { + debug('replaceCaret pr', pr) + if (M === '0') { + if (m === '0') { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + m + '.' + (+p + 1) + } else { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + M + '.' + (+m + 1) + '.0' + } + } else { + ret = '>=' + M + '.' + m + '.' + p + '-' + pr + + ' <' + (+M + 1) + '.0.0' + } + } else { + debug('no pr') + if (M === '0') { + if (m === '0') { + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + m + '.' + (+p + 1) + } else { + ret = '>=' + M + '.' + m + '.' + p + + ' <' + M + '.' + (+m + 1) + '.0' + } + } else { + ret = '>=' + M + '.' + m + '.' + p + + ' <' + (+M + 1) + '.0.0' + } + } + + debug('caret return', ret) + return ret + }) +} + +function replaceXRanges (comp, options) { + debug('replaceXRanges', comp, options) + return comp.split(/\s+/).map(function (comp) { + return replaceXRange(comp, options) + }).join(' ') +} + +function replaceXRange (comp, options) { + comp = comp.trim() + var r = options.loose ? safeRe[t.XRANGELOOSE] : safeRe[t.XRANGE] + return comp.replace(r, function (ret, gtlt, M, m, p, pr) { + debug('xRange', comp, ret, gtlt, M, m, p, pr) + var xM = isX(M) + var xm = xM || isX(m) + var xp = xm || isX(p) + var anyX = xp + + if (gtlt === '=' && anyX) { + gtlt = '' + } + + // if we're including prereleases in the match, then we need + // to fix this to -0, the lowest possible prerelease value + pr = options.includePrerelease ? '-0' : '' + + if (xM) { + if (gtlt === '>' || gtlt === '<') { + // nothing is allowed + ret = '<0.0.0-0' + } else { + // nothing is forbidden + ret = '*' + } + } else if (gtlt && anyX) { + // we know patch is an x, because we have any x at all. + // replace X with 0 + if (xm) { + m = 0 + } + p = 0 + + if (gtlt === '>') { + // >1 => >=2.0.0 + // >1.2 => >=1.3.0 + // >1.2.3 => >= 1.2.4 + gtlt = '>=' + if (xm) { + M = +M + 1 + m = 0 + p = 0 + } else { + m = +m + 1 + p = 0 + } + } else if (gtlt === '<=') { + // <=0.7.x is actually <0.8.0, since any 0.7.x should + // pass. Similarly, <=7.x is actually <8.0.0, etc. + gtlt = '<' + if (xm) { + M = +M + 1 + } else { + m = +m + 1 + } + } + + ret = gtlt + M + '.' + m + '.' + p + pr + } else if (xm) { + ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr + } else if (xp) { + ret = '>=' + M + '.' + m + '.0' + pr + + ' <' + M + '.' + (+m + 1) + '.0' + pr + } + + debug('xRange return', ret) + + return ret + }) +} + +// Because * is AND-ed with everything else in the comparator, +// and '' means "any version", just remove the *s entirely. +function replaceStars (comp, options) { + debug('replaceStars', comp, options) + // Looseness is ignored here. star is always as loose as it gets! + return comp.trim().replace(safeRe[t.STAR], '') +} + +// This function is passed to string.replace(re[t.HYPHENRANGE]) +// M, m, patch, prerelease, build +// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 +// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do +// 1.2 - 3.4 => >=1.2.0 <3.5.0 +function hyphenReplace ($0, + from, fM, fm, fp, fpr, fb, + to, tM, tm, tp, tpr, tb) { + if (isX(fM)) { + from = '' + } else if (isX(fm)) { + from = '>=' + fM + '.0.0' + } else if (isX(fp)) { + from = '>=' + fM + '.' + fm + '.0' + } else { + from = '>=' + from + } + + if (isX(tM)) { + to = '' + } else if (isX(tm)) { + to = '<' + (+tM + 1) + '.0.0' + } else if (isX(tp)) { + to = '<' + tM + '.' + (+tm + 1) + '.0' + } else if (tpr) { + to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr + } else { + to = '<=' + to + } + + return (from + ' ' + to).trim() +} + +// if ANY of the sets match ALL of its comparators, then pass +Range.prototype.test = function (version) { + if (!version) { + return false + } + + if (typeof version === 'string') { + try { + version = new SemVer(version, this.options) + } catch (er) { + return false + } + } + + for (var i = 0; i < this.set.length; i++) { + if (testSet(this.set[i], version, this.options)) { + return true + } + } + return false +} + +function testSet (set, version, options) { + for (var i = 0; i < set.length; i++) { + if (!set[i].test(version)) { + return false + } + } + + if (version.prerelease.length && !options.includePrerelease) { + // Find the set of versions that are allowed to have prereleases + // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 + // That should allow `1.2.3-pr.2` to pass. + // However, `1.2.4-alpha.notready` should NOT be allowed, + // even though it's within the range set by the comparators. + for (i = 0; i < set.length; i++) { + debug(set[i].semver) + if (set[i].semver === ANY) { + continue + } + + if (set[i].semver.prerelease.length > 0) { + var allowed = set[i].semver + if (allowed.major === version.major && + allowed.minor === version.minor && + allowed.patch === version.patch) { + return true + } + } + } + + // Version has a -pre, but it's not one of the ones we like. + return false + } + + return true +} + +exports.satisfies = satisfies +function satisfies (version, range, options) { + try { + range = new Range(range, options) + } catch (er) { + return false + } + return range.test(version) +} + +exports.maxSatisfying = maxSatisfying +function maxSatisfying (versions, range, options) { + var max = null + var maxSV = null + try { + var rangeObj = new Range(range, options) + } catch (er) { + return null + } + versions.forEach(function (v) { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!max || maxSV.compare(v) === -1) { + // compare(max, v, true) + max = v + maxSV = new SemVer(max, options) + } + } + }) + return max +} + +exports.minSatisfying = minSatisfying +function minSatisfying (versions, range, options) { + var min = null + var minSV = null + try { + var rangeObj = new Range(range, options) + } catch (er) { + return null + } + versions.forEach(function (v) { + if (rangeObj.test(v)) { + // satisfies(v, range, options) + if (!min || minSV.compare(v) === 1) { + // compare(min, v, true) + min = v + minSV = new SemVer(min, options) + } + } + }) + return min +} + +exports.minVersion = minVersion +function minVersion (range, loose) { + range = new Range(range, loose) + + var minver = new SemVer('0.0.0') + if (range.test(minver)) { + return minver + } + + minver = new SemVer('0.0.0-0') + if (range.test(minver)) { + return minver + } + + minver = null + for (var i = 0; i < range.set.length; ++i) { + var comparators = range.set[i] + + comparators.forEach(function (comparator) { + // Clone to avoid manipulating the comparator's semver object. + var compver = new SemVer(comparator.semver.version) + switch (comparator.operator) { + case '>': + if (compver.prerelease.length === 0) { + compver.patch++ + } else { + compver.prerelease.push(0) + } + compver.raw = compver.format() + /* fallthrough */ + case '': + case '>=': + if (!minver || gt(minver, compver)) { + minver = compver + } + break + case '<': + case '<=': + /* Ignore maximum versions */ + break + /* istanbul ignore next */ + default: + throw new Error('Unexpected operation: ' + comparator.operator) + } + }) + } + + if (minver && range.test(minver)) { + return minver + } + + return null +} + +exports.validRange = validRange +function validRange (range, options) { + try { + // Return '*' instead of '' so that truthiness works. + // This will throw if it's invalid anyway + return new Range(range, options).range || '*' + } catch (er) { + return null + } +} + +// Determine if version is less than all the versions possible in the range +exports.ltr = ltr +function ltr (version, range, options) { + return outside(version, range, '<', options) +} + +// Determine if version is greater than all the versions possible in the range. +exports.gtr = gtr +function gtr (version, range, options) { + return outside(version, range, '>', options) +} + +exports.outside = outside +function outside (version, range, hilo, options) { + version = new SemVer(version, options) + range = new Range(range, options) + + var gtfn, ltefn, ltfn, comp, ecomp + switch (hilo) { + case '>': + gtfn = gt + ltefn = lte + ltfn = lt + comp = '>' + ecomp = '>=' + break + case '<': + gtfn = lt + ltefn = gte + ltfn = gt + comp = '<' + ecomp = '<=' + break + default: + throw new TypeError('Must provide a hilo val of "<" or ">"') + } + + // If it satisifes the range it is not outside + if (satisfies(version, range, options)) { + return false + } + + // From now on, variable terms are as if we're in "gtr" mode. + // but note that everything is flipped for the "ltr" function. + + for (var i = 0; i < range.set.length; ++i) { + var comparators = range.set[i] + + var high = null + var low = null + + comparators.forEach(function (comparator) { + if (comparator.semver === ANY) { + comparator = new Comparator('>=0.0.0') + } + high = high || comparator + low = low || comparator + if (gtfn(comparator.semver, high.semver, options)) { + high = comparator + } else if (ltfn(comparator.semver, low.semver, options)) { + low = comparator + } + }) + + // If the edge version comparator has a operator then our version + // isn't outside it + if (high.operator === comp || high.operator === ecomp) { + return false + } + + // If the lowest version comparator has an operator and our version + // is less than it then it isn't higher than the range + if ((!low.operator || low.operator === comp) && + ltefn(version, low.semver)) { + return false + } else if (low.operator === ecomp && ltfn(version, low.semver)) { + return false + } + } + return true +} + +exports.prerelease = prerelease +function prerelease (version, options) { + var parsed = parse(version, options) + return (parsed && parsed.prerelease.length) ? parsed.prerelease : null +} + +exports.intersects = intersects +function intersects (r1, r2, options) { + r1 = new Range(r1, options) + r2 = new Range(r2, options) + return r1.intersects(r2) +} + +exports.coerce = coerce +function coerce (version, options) { + if (version instanceof SemVer) { + return version + } + + if (typeof version === 'number') { + version = String(version) + } + + if (typeof version !== 'string') { + return null + } + + options = options || {} + + var match = null + if (!options.rtl) { + match = version.match(safeRe[t.COERCE]) + } else { + // Find the right-most coercible string that does not share + // a terminus with a more left-ward coercible string. + // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4' + // + // Walk through the string checking with a /g regexp + // Manually set the index so as to pick up overlapping matches. + // Stop when we get a match that ends at the string end, since no + // coercible string can be more right-ward without the same terminus. + var next + while ((next = safeRe[t.COERCERTL].exec(version)) && + (!match || match.index + match[0].length !== version.length) + ) { + if (!match || + next.index + next[0].length !== match.index + match[0].length) { + match = next + } + safeRe[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length + } + // leave it in a clean state + safeRe[t.COERCERTL].lastIndex = -1 + } + + if (match === null) { + return null + } + + return parse(match[2] + + '.' + (match[3] || '0') + + '.' + (match[4] || '0'), options) +} + + +/***/ }), + +/***/ 770: +/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { + +module.exports = __nccwpck_require__(218); + + +/***/ }), + +/***/ 218: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + + +var net = __nccwpck_require__(278); +var tls = __nccwpck_require__(756); +var http = __nccwpck_require__(611); +var https = __nccwpck_require__(692); +var events = __nccwpck_require__(434); +var assert = __nccwpck_require__(613); +var util = __nccwpck_require__(23); + + +exports.httpOverHttp = httpOverHttp; +exports.httpsOverHttp = httpsOverHttp; +exports.httpOverHttps = httpOverHttps; +exports.httpsOverHttps = httpsOverHttps; + + +function httpOverHttp(options) { + var agent = new TunnelingAgent(options); + agent.request = http.request; + return agent; +} + +function httpsOverHttp(options) { + var agent = new TunnelingAgent(options); + agent.request = http.request; + agent.createSocket = createSecureSocket; + agent.defaultPort = 443; + return agent; +} + +function httpOverHttps(options) { + var agent = new TunnelingAgent(options); + agent.request = https.request; + return agent; +} + +function httpsOverHttps(options) { + var agent = new TunnelingAgent(options); + agent.request = https.request; + agent.createSocket = createSecureSocket; + agent.defaultPort = 443; + return agent; +} + + +function TunnelingAgent(options) { + var self = this; + self.options = options || {}; + self.proxyOptions = self.options.proxy || {}; + self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets; + self.requests = []; + self.sockets = []; + + self.on('free', function onFree(socket, host, port, localAddress) { + var options = toOptions(host, port, localAddress); + for (var i = 0, len = self.requests.length; i < len; ++i) { + var pending = self.requests[i]; + if (pending.host === options.host && pending.port === options.port) { + // Detect the request to connect same origin server, + // reuse the connection. + self.requests.splice(i, 1); + pending.request.onSocket(socket); + return; + } + } + socket.destroy(); + self.removeSocket(socket); + }); +} +util.inherits(TunnelingAgent, events.EventEmitter); + +TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) { + var self = this; + var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress)); + + if (self.sockets.length >= this.maxSockets) { + // We are over limit so we'll add it to the queue. + self.requests.push(options); + return; + } + + // If we are under maxSockets create a new one. + self.createSocket(options, function(socket) { + socket.on('free', onFree); + socket.on('close', onCloseOrRemove); + socket.on('agentRemove', onCloseOrRemove); + req.onSocket(socket); + + function onFree() { + self.emit('free', socket, options); + } + + function onCloseOrRemove(err) { + self.removeSocket(socket); + socket.removeListener('free', onFree); + socket.removeListener('close', onCloseOrRemove); + socket.removeListener('agentRemove', onCloseOrRemove); + } + }); +}; + +TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { + var self = this; + var placeholder = {}; + self.sockets.push(placeholder); + + var connectOptions = mergeOptions({}, self.proxyOptions, { + method: 'CONNECT', + path: options.host + ':' + options.port, + agent: false, + headers: { + host: options.host + ':' + options.port + } + }); + if (options.localAddress) { + connectOptions.localAddress = options.localAddress; + } + if (connectOptions.proxyAuth) { + connectOptions.headers = connectOptions.headers || {}; + connectOptions.headers['Proxy-Authorization'] = 'Basic ' + + new Buffer(connectOptions.proxyAuth).toString('base64'); + } + + debug('making CONNECT request'); + var connectReq = self.request(connectOptions); + connectReq.useChunkedEncodingByDefault = false; // for v0.6 + connectReq.once('response', onResponse); // for v0.6 + connectReq.once('upgrade', onUpgrade); // for v0.6 + connectReq.once('connect', onConnect); // for v0.7 or later + connectReq.once('error', onError); + connectReq.end(); + + function onResponse(res) { + // Very hacky. This is necessary to avoid http-parser leaks. + res.upgrade = true; + } + + function onUpgrade(res, socket, head) { + // Hacky. + process.nextTick(function() { + onConnect(res, socket, head); + }); + } + + function onConnect(res, socket, head) { + connectReq.removeAllListeners(); + socket.removeAllListeners(); + + if (res.statusCode !== 200) { + debug('tunneling socket could not be established, statusCode=%d', + res.statusCode); + socket.destroy(); + var error = new Error('tunneling socket could not be established, ' + + 'statusCode=' + res.statusCode); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); + return; + } + if (head.length > 0) { + debug('got illegal response body from proxy'); + socket.destroy(); + var error = new Error('got illegal response body from proxy'); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); + return; + } + debug('tunneling connection has established'); + self.sockets[self.sockets.indexOf(placeholder)] = socket; + return cb(socket); + } + + function onError(cause) { + connectReq.removeAllListeners(); + + debug('tunneling socket could not be established, cause=%s\n', + cause.message, cause.stack); + var error = new Error('tunneling socket could not be established, ' + + 'cause=' + cause.message); + error.code = 'ECONNRESET'; + options.request.emit('error', error); + self.removeSocket(placeholder); + } +}; + +TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { + var pos = this.sockets.indexOf(socket) + if (pos === -1) { + return; + } + this.sockets.splice(pos, 1); + + var pending = this.requests.shift(); + if (pending) { + // If we have pending requests and a socket gets closed a new one + // needs to be created to take over in the pool for the one that closed. + this.createSocket(pending, function(socket) { + pending.request.onSocket(socket); + }); + } +}; + +function createSecureSocket(options, cb) { + var self = this; + TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { + var hostHeader = options.request.getHeader('host'); + var tlsOptions = mergeOptions({}, self.options, { + socket: socket, + servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host + }); + + // 0 is dummy port for v0.6 + var secureSocket = tls.connect(0, tlsOptions); + self.sockets[self.sockets.indexOf(socket)] = secureSocket; + cb(secureSocket); + }); +} + + +function toOptions(host, port, localAddress) { + if (typeof host === 'string') { // since v0.10 + return { + host: host, + port: port, + localAddress: localAddress + }; + } + return host; // for v0.11 or later +} + +function mergeOptions(target) { + for (var i = 1, len = arguments.length; i < len; ++i) { + var overrides = arguments[i]; + if (typeof overrides === 'object') { + var keys = Object.keys(overrides); + for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { + var k = keys[j]; + if (overrides[k] !== undefined) { + target[k] = overrides[k]; + } + } + } + } + return target; +} + + +var debug; +if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { + debug = function() { + var args = Array.prototype.slice.call(arguments); + if (typeof args[0] === 'string') { + args[0] = 'TUNNEL: ' + args[0]; + } else { + args.unshift('TUNNEL:'); + } + console.error.apply(console, args); + } +} else { + debug = function() {}; +} +exports.debug = debug; // for test + + +/***/ }), + +/***/ 12: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +// Copyright The ORAS Authors. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.hash = hash; +const crypto = __importStar(__nccwpck_require__(982)); +const fs = __importStar(__nccwpck_require__(896)); +// hash computes SH256 of file at path. +function hash(path) { + return new Promise((resolve, reject) => { + const hash = crypto.createHash('sha256'); + const stream = fs.createReadStream(path); + stream.on('error', err => reject(err)); + stream.on('data', chunk => hash.update(chunk)); + stream.on('end', () => resolve(hash.digest('hex'))); + }); +} + + +/***/ }), + +/***/ 450: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +// Copyright The ORAS Authors. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.getReleaseInfo = getReleaseInfo; +exports.mapPlatform = mapPlatform; +exports.mapArch = mapArch; +exports.getBinaryExtension = getBinaryExtension; +const os = __importStar(__nccwpck_require__(857)); +const releases_json_1 = __importDefault(__nccwpck_require__(116)); +// Get release info of a certain verion of ORAS CLI +function getReleaseInfo(version, url, checksum) { + if (url && checksum) { + // if customized ORAS CLI link and checksum are provided, version is ignored + return { + checksum: checksum, + url: url + }; + } + // sanity checks + if (url && !checksum) { + throw new Error("user provided url of customized ORAS CLI release but without SHA256 checksum"); + } + if (!url && checksum) { + throw new Error("user provided SHA256 checksum but without url"); + } + // get the official release + const releases = releases_json_1.default; + if (!(version in releases)) { + console.log(`official ORAS CLI releases does not contain version ${version}`); + throw new Error(`official ORAS CLI releases does not contain version ${version}`); + } + const platform = mapPlatform(); + const arch = mapArch(); + const download = releases[version][platform][arch]; + if (!download) { + throw new Error(`official ORAS CLI releases does not contain version ${version}, platform ${platform}, arch ${arch} is not supported`); + } + return download; +} +// getPlatform maps os.platform() to ORAS supported platforms. +function mapPlatform() { + const platform = os.platform(); + switch (platform) { + case 'linux': + return 'linux'; + case 'darwin': + return 'darwin'; + case 'win32': + return 'windows'; + case 'freebsd': + return 'freebsd'; + default: + throw new Error(`unsupported platform: ${platform}`); + } +} +// mapArch maps os.arch() to ORAS supported architectures. +function mapArch() { + const architecture = os.arch(); + switch (architecture) { + case 'x64': + return 'amd64'; + case 'arm64': + return 'arm64'; + case 'arm64': + return 'arm64'; + case 'ppc64': + return 'ppc64le'; + case 'riscv64': + return 'riscv64'; + case 's390x': + return 's390x'; + case 'arm': + return 'armv7'; + default: + throw new Error(`unsupported architecture: ${architecture}`); + } +} +function getBinaryExtension() { + const platform = mapPlatform(); + return platform === 'windows' ? '.exe' : ''; +} + + +/***/ }), + +/***/ 294: +/***/ (function(module, __unused_webpack_exports, __nccwpck_require__) { + +"use strict"; + +// Copyright The ORAS Authors. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +const core = __importStar(__nccwpck_require__(484)); +const tc = __importStar(__nccwpck_require__(472)); +const release_1 = __nccwpck_require__(450); +const checksum_1 = __nccwpck_require__(12); +// setup sets up the ORAS CLI +function setup() { + return __awaiter(this, void 0, void 0, function* () { + try { + // inputs from user + const version = core.getInput('version'); + const url = core.getInput('url'); + const checksum = core.getInput('checksum').toLowerCase(); + // download ORAS CLI and validate checksum + const info = (0, release_1.getReleaseInfo)(version, url, checksum); + const download_url = info.url; + console.log(`downloading ORAS CLI from ${download_url}`); + const pathToTarball = yield tc.downloadTool(download_url); + console.log("downloading ORAS CLI completed"); + const actual_checksum = yield (0, checksum_1.hash)(pathToTarball); + if (actual_checksum !== info.checksum) { + throw new Error(`checksum of downloaded ORAS CLI ${actual_checksum} does not match expected checksum ${info.checksum}`); + } + console.log("successfully verified downloaded release checksum"); + // extract the tarball/zipball onto host runner + const extract = download_url.endsWith('.zip') ? tc.extractZip : tc.extractTar; + const pathToCLI = yield extract(pathToTarball); + // add `ORAS` to PATH + core.addPath(pathToCLI); + } + catch (e) { + if (e instanceof Error) { + core.setFailed(e); + } + else { + core.setFailed('unknown error during ORAS setup'); + } + } + }); +} +if (require.main === require.cache[eval('__filename')]) { + setup(); +} +module.exports = setup; + + +/***/ }), + +/***/ 613: +/***/ ((module) => { + +"use strict"; +module.exports = require("assert"); + +/***/ }), + +/***/ 317: +/***/ ((module) => { + +"use strict"; +module.exports = require("child_process"); + +/***/ }), + +/***/ 982: +/***/ ((module) => { + +"use strict"; +module.exports = require("crypto"); + +/***/ }), + +/***/ 434: +/***/ ((module) => { + +"use strict"; +module.exports = require("events"); + +/***/ }), + +/***/ 896: +/***/ ((module) => { + +"use strict"; +module.exports = require("fs"); + +/***/ }), + +/***/ 611: +/***/ ((module) => { + +"use strict"; +module.exports = require("http"); + +/***/ }), + +/***/ 692: +/***/ ((module) => { + +"use strict"; +module.exports = require("https"); + +/***/ }), + +/***/ 278: +/***/ ((module) => { + +"use strict"; +module.exports = require("net"); + +/***/ }), + +/***/ 857: +/***/ ((module) => { + +"use strict"; +module.exports = require("os"); + +/***/ }), + +/***/ 928: +/***/ ((module) => { + +"use strict"; +module.exports = require("path"); + +/***/ }), + +/***/ 203: +/***/ ((module) => { + +"use strict"; +module.exports = require("stream"); + +/***/ }), + +/***/ 193: +/***/ ((module) => { + +"use strict"; +module.exports = require("string_decoder"); + +/***/ }), + +/***/ 557: +/***/ ((module) => { + +"use strict"; +module.exports = require("timers"); + +/***/ }), + +/***/ 756: +/***/ ((module) => { + +"use strict"; +module.exports = require("tls"); + +/***/ }), + +/***/ 23: +/***/ ((module) => { + +"use strict"; +module.exports = require("util"); + +/***/ }), + +/***/ 116: +/***/ ((module) => { + +"use strict"; +module.exports = /*#__PURE__*/JSON.parse('{"1.0.0":{"darwin":{"amd64":{"checksum":"3bce1a83fb518c7bc0afac685601835e5234daa88b3074aafecf768ec80229fe","url":"https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_darwin_amd64.tar.gz"},"arm64":{"checksum":"0168a0b8289c202b9dcd57fb4fa3638610245fd5574032e18b1196a20e4100d1","url":"https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_darwin_arm64.tar.gz"}},"linux":{"amd64":{"checksum":"8533c9ea1e5a0d5eb1dfc5094c0e8ef106d15462f8a119077548f88937ed2133","url":"https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_linux_amd64.tar.gz"},"arm64":{"checksum":"332ba74c043ed590ab0fb61656e6d274243e915cb150d48be4ad64ed591dcc84","url":"https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_linux_arm64.tar.gz"},"armv7":{"checksum":"c626893bed0aa26eb37113e11c1bc34552fa213f26af85ef14100a366e6c7c06","url":"https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_linux_armv7.tar.gz"},"s390x":{"checksum":"2339f972cbbaa7dc4fed0795c2c37a6124ee524c6e0ed62919c3a0097dd57442","url":"https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_linux_s390x.tar.gz"}},"windows":{"amd64":{"checksum":"e47e91fbc72cfe4e5c89321ebc5af953bcafa8a9ecdb0b4fbd53fd136578e03e","url":"https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_windows_amd64.zip"}}},"1.0.1":{"darwin":{"amd64":{"checksum":"34f11536dc191f9ad4288649f97ef69b478548f891c932c9732307f064ed3331","url":"https://github.com/oras-project/oras/releases/download/v1.0.1/oras_1.0.1_darwin_amd64.tar.gz"},"arm64":{"checksum":"faa0181799f0e0295d7df188441a1f8869da78a50da4cf7fb03cf35dc746b178","url":"https://github.com/oras-project/oras/releases/download/v1.0.1/oras_1.0.1_darwin_arm64.tar.gz"}},"linux":{"amd64":{"checksum":"6b51b87360d373dd3c19b91d2627d2efd320513380a878b6f06702f72fe8c5ab","url":"https://github.com/oras-project/oras/releases/download/v1.0.1/oras_1.0.1_linux_amd64.tar.gz"},"arm64":{"checksum":"ae1884ae17b7ae7ce694c63d51a52ab0dac1f2c0ca384163455c1e96c5663db0","url":"https://github.com/oras-project/oras/releases/download/v1.0.1/oras_1.0.1_linux_arm64.tar.gz"},"armv7":{"checksum":"f31bc8eab3ed2f368056df3eb5761f40d90dfbd8272bec58d83961f41ebbf3fb","url":"https://github.com/oras-project/oras/releases/download/v1.0.1/oras_1.0.1_linux_armv7.tar.gz"},"s390x":{"checksum":"2a63313a99dd45c448c022a303941e1f5b47b8fdf3493c593b026de384a284b6","url":"https://github.com/oras-project/oras/releases/download/v1.0.1/oras_1.0.1_linux_s390x.tar.gz"}},"windows":{"amd64":{"checksum":"0b9c50eda7aa384d435b31710264d08c77a5e83ee6560ee6e13ca46a6acec1ba","url":"https://github.com/oras-project/oras/releases/download/v1.0.1/oras_1.0.1_windows_amd64.zip"}}},"1.1.0":{"darwin":{"amd64":{"checksum":"f8ac5dea53dd9331cf080f1025f0612e7b07c5af864a4fd609f97d8946508e45","url":"https://github.com/oras-project/oras/releases/download/v1.1.0/oras_1.1.0_darwin_amd64.tar.gz"},"arm64":{"checksum":"d52d3140b0bb9f7d7e31dcbf2a513f971413769c11f7d7a5599e76cc98e45007","url":"https://github.com/oras-project/oras/releases/download/v1.1.0/oras_1.1.0_darwin_arm64.tar.gz"}},"linux":{"amd64":{"checksum":"e09e85323b24ccc8209a1506f142e3d481e6e809018537c6b3db979c891e6ad7","url":"https://github.com/oras-project/oras/releases/download/v1.1.0/oras_1.1.0_linux_amd64.tar.gz"},"arm64":{"checksum":"e450b081f67f6fda2f16b7046075c67c9a53f3fda92fd20ecc59873b10477ab4","url":"https://github.com/oras-project/oras/releases/download/v1.1.0/oras_1.1.0_linux_arm64.tar.gz"},"armv7":{"checksum":"def86e7f787f8deee50bb57d1c155201099f36aa0c6700d3b525e69ddf8ae49b","url":"https://github.com/oras-project/oras/releases/download/v1.1.0/oras_1.1.0_linux_armv7.tar.gz"},"s390x":{"checksum":"067600d61d5d7c23f7bd184cff168ad558d48bed99f6735615bce0e1068b1d77","url":"https://github.com/oras-project/oras/releases/download/v1.1.0/oras_1.1.0_linux_s390x.tar.gz"}},"windows":{"amd64":{"checksum":"2ac83631181d888445e50784a5f760f7f9d97fba3c089e79b68580c496fe68cf","url":"https://github.com/oras-project/oras/releases/download/v1.1.0/oras_1.1.0_windows_amd64.zip"}}},"1.2.0":{"darwin":{"amd64":{"checksum":"58a8494f5bce778e21d89d90c82e05bd128e7bb9d84dd190d154f8afdbf30541","url":"https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_darwin_amd64.tar.gz"},"arm64":{"checksum":"fea801b0e02c5342e749ef2860e1faebae03e93ae50e33ed40d227e089cf9435","url":"https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_darwin_arm64.tar.gz"}},"freebsd":{"amd64":{"checksum":"73d3a292dce1f0985df084ff50b38ab2deacbcb01902ceebc008d5bea2f2dee9","url":"https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_freebsd_amd64.tar.gz"}},"linux":{"amd64":{"checksum":"5b3f1cbb86d869eee68120b9b45b9be983f3738442f87ee5f06b00edd0bab336","url":"https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_linux_amd64.tar.gz"},"arm64":{"checksum":"27df680a39fc2fcedc549cb737891623bc696c9a92a03fd341e9356a35836bae","url":"https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_linux_arm64.tar.gz"},"armv7":{"checksum":"054685703cb0c66e51f8143e3bbd3976e217d3d595f0593db43b6dd451e43329","url":"https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_linux_armv7.tar.gz"},"ppc64le":{"checksum":"af5ee50434c7263b1460978af83e7690570e8999678fae9db6c5dbb38467fed5","url":"https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_linux_ppc64le.tar.gz"},"riscv64":{"checksum":"42c7e5f35b72492dd3ee7c68edad0c0da939b39e6ead7f682329015b283e96f8","url":"https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_linux_riscv64.tar.gz"},"s390x":{"checksum":"69d2e842e592f4d990b33d58ff3c298c4e4c0921dd54ad9e65e3b6dd9427a750","url":"https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_linux_s390x.tar.gz"}},"windows":{"amd64":{"checksum":"f110b42a20bd4728fb0428d36ee6ed10de58cd986bba8e95ecc4f0272cb017ba","url":"https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_windows_amd64.zip"}}}}'); + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __nccwpck_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ var threw = true; +/******/ try { +/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __nccwpck_require__); +/******/ threw = false; +/******/ } finally { +/******/ if(threw) delete __webpack_module_cache__[moduleId]; +/******/ } +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/compat */ +/******/ +/******/ if (typeof __nccwpck_require__ !== 'undefined') __nccwpck_require__.ab = __dirname + "/"; +/******/ +/************************************************************************/ +/******/ +/******/ // startup +/******/ // Load entry module and return exports +/******/ // This entry module is referenced by other modules so it can't be inlined +/******/ var __webpack_exports__ = __nccwpck_require__(294); +/******/ module.exports = __webpack_exports__; +/******/ +/******/ })() +; \ No newline at end of file diff --git a/.github/actions/setup-oras-1.2.1/dist/licenses.txt b/.github/actions/setup-oras-1.2.1/dist/licenses.txt new file mode 100644 index 000000000..e69de29bb diff --git a/.github/actions/setup-oras-1.2.1/package-lock.json b/.github/actions/setup-oras-1.2.1/package-lock.json new file mode 100644 index 000000000..10393f885 --- /dev/null +++ b/.github/actions/setup-oras-1.2.1/package-lock.json @@ -0,0 +1,121 @@ +{ + "name": "setup-oras", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "setup-oras", + "version": "0.1.0", + "license": "Apache-2.0", + "dependencies": { + "@actions/core": "^1.11.1", + "@actions/tool-cache": "^2.0.1", + "@types/node": "^22.7.7", + "@vercel/ncc": "^0.38.2", + "typescript": "^5.6.3" + } + }, + "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==", + "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==", + "dependencies": { + "@actions/io": "^1.0.1" + } + }, + "node_modules/@actions/http-client": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.1.1.tgz", + "integrity": "sha512-qhrkRMB40bbbLo7gF+0vu+X+UawOvQQqNAA/5Unx774RS8poaOhThDOG6BGmxvAnxhQnDp2BG/ZUm65xZILTpw==", + "dependencies": { + "tunnel": "^0.0.6" + } + }, + "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==" + }, + "node_modules/@actions/tool-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@actions/tool-cache/-/tool-cache-2.0.1.tgz", + "integrity": "sha512-iPU+mNwrbA8jodY8eyo/0S/QqCKDajiR8OxWTnSk/SnYg0sj8Hp4QcUEVC1YFpHWXtrfbQrE13Jz4k4HXJQKcA==", + "dependencies": { + "@actions/core": "^1.2.6", + "@actions/exec": "^1.0.0", + "@actions/http-client": "^2.0.1", + "@actions/io": "^1.1.1", + "semver": "^6.1.0", + "uuid": "^3.3.2" + } + }, + "node_modules/@actions/tool-cache/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/@types/node": { + "version": "22.7.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.7.tgz", + "integrity": "sha512-SRxCrrg9CL/y54aiMCG3edPKdprgMVGDXjA3gB8UmmBW5TcXzRUYAh8EWzTnSJFAd1rgImPELza+A3bJ+qxz8Q==", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@vercel/ncc": { + "version": "0.38.2", + "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.38.2.tgz", + "integrity": "sha512-3yel3jaxUg9pHBv4+KeC9qlbdZPug+UMtUOlhvpDYCMSgcNSrS2Hv1LoqMsOV7hf2lYscx+BESfJOIla1WsmMQ==", + "bin": { + "ncc": "dist/ncc/cli.js" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, + "node_modules/typescript": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "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==" + } + } +} diff --git a/.github/actions/setup-oras-1.2.1/package.json b/.github/actions/setup-oras-1.2.1/package.json new file mode 100644 index 000000000..f88839958 --- /dev/null +++ b/.github/actions/setup-oras-1.2.1/package.json @@ -0,0 +1,26 @@ +{ + "name": "setup-oras", + "version": "0.1.0", + "description": "Set up your GitHub Actions workflow with a specific version of ORAS", + "scripts": { + "build": "ncc build src/setup.ts" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/oras-project/setup-oras.git" + }, + "keywords": [], + "author": "ORAS", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/oras-project/setup-oras/issues" + }, + "homepage": "https://github.com/oras-project/setup-oras#readme", + "dependencies": { + "@actions/core": "^1.11.1", + "@actions/tool-cache": "^2.0.1", + "@types/node": "^22.7.7", + "@vercel/ncc": "^0.38.2", + "typescript": "^5.6.3" + } +} diff --git a/.github/actions/setup-oras-1.2.1/src/lib/checksum.ts b/.github/actions/setup-oras-1.2.1/src/lib/checksum.ts new file mode 100644 index 000000000..e69de29bb diff --git a/.github/actions/setup-oras-1.2.1/src/lib/data/releases.json b/.github/actions/setup-oras-1.2.1/src/lib/data/releases.json new file mode 100644 index 000000000..af8726b45 --- /dev/null +++ b/.github/actions/setup-oras-1.2.1/src/lib/data/releases.json @@ -0,0 +1,160 @@ +{ + "1.0.0": { + "darwin": { + "amd64": { + "checksum": "3bce1a83fb518c7bc0afac685601835e5234daa88b3074aafecf768ec80229fe", + "url": "https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_darwin_amd64.tar.gz" + }, + "arm64": { + "checksum": "0168a0b8289c202b9dcd57fb4fa3638610245fd5574032e18b1196a20e4100d1", + "url": "https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_darwin_arm64.tar.gz" + } + }, + "linux": { + "amd64": { + "checksum": "8533c9ea1e5a0d5eb1dfc5094c0e8ef106d15462f8a119077548f88937ed2133", + "url": "https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_linux_amd64.tar.gz" + }, + "arm64": { + "checksum": "332ba74c043ed590ab0fb61656e6d274243e915cb150d48be4ad64ed591dcc84", + "url": "https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_linux_arm64.tar.gz" + }, + "armv7": { + "checksum": "c626893bed0aa26eb37113e11c1bc34552fa213f26af85ef14100a366e6c7c06", + "url": "https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_linux_armv7.tar.gz" + }, + "s390x": { + "checksum": "2339f972cbbaa7dc4fed0795c2c37a6124ee524c6e0ed62919c3a0097dd57442", + "url": "https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_linux_s390x.tar.gz" + } + }, + "windows": { + "amd64": { + "checksum": "e47e91fbc72cfe4e5c89321ebc5af953bcafa8a9ecdb0b4fbd53fd136578e03e", + "url": "https://github.com/oras-project/oras/releases/download/v1.0.0/oras_1.0.0_windows_amd64.zip" + } + } + }, + "1.0.1": { + "darwin": { + "amd64": { + "checksum": "34f11536dc191f9ad4288649f97ef69b478548f891c932c9732307f064ed3331", + "url": "https://github.com/oras-project/oras/releases/download/v1.0.1/oras_1.0.1_darwin_amd64.tar.gz" + }, + "arm64": { + "checksum": "faa0181799f0e0295d7df188441a1f8869da78a50da4cf7fb03cf35dc746b178", + "url": "https://github.com/oras-project/oras/releases/download/v1.0.1/oras_1.0.1_darwin_arm64.tar.gz" + } + }, + "linux": { + "amd64": { + "checksum": "6b51b87360d373dd3c19b91d2627d2efd320513380a878b6f06702f72fe8c5ab", + "url": "https://github.com/oras-project/oras/releases/download/v1.0.1/oras_1.0.1_linux_amd64.tar.gz" + }, + "arm64": { + "checksum": "ae1884ae17b7ae7ce694c63d51a52ab0dac1f2c0ca384163455c1e96c5663db0", + "url": "https://github.com/oras-project/oras/releases/download/v1.0.1/oras_1.0.1_linux_arm64.tar.gz" + }, + "armv7": { + "checksum": "f31bc8eab3ed2f368056df3eb5761f40d90dfbd8272bec58d83961f41ebbf3fb", + "url": "https://github.com/oras-project/oras/releases/download/v1.0.1/oras_1.0.1_linux_armv7.tar.gz" + }, + "s390x": { + "checksum": "2a63313a99dd45c448c022a303941e1f5b47b8fdf3493c593b026de384a284b6", + "url": "https://github.com/oras-project/oras/releases/download/v1.0.1/oras_1.0.1_linux_s390x.tar.gz" + } + }, + "windows": { + "amd64": { + "checksum": "0b9c50eda7aa384d435b31710264d08c77a5e83ee6560ee6e13ca46a6acec1ba", + "url": "https://github.com/oras-project/oras/releases/download/v1.0.1/oras_1.0.1_windows_amd64.zip" + } + } + }, + "1.1.0": { + "darwin": { + "amd64": { + "checksum": "f8ac5dea53dd9331cf080f1025f0612e7b07c5af864a4fd609f97d8946508e45", + "url": "https://github.com/oras-project/oras/releases/download/v1.1.0/oras_1.1.0_darwin_amd64.tar.gz" + }, + "arm64": { + "checksum": "d52d3140b0bb9f7d7e31dcbf2a513f971413769c11f7d7a5599e76cc98e45007", + "url": "https://github.com/oras-project/oras/releases/download/v1.1.0/oras_1.1.0_darwin_arm64.tar.gz" + } + }, + "linux": { + "amd64": { + "checksum": "e09e85323b24ccc8209a1506f142e3d481e6e809018537c6b3db979c891e6ad7", + "url": "https://github.com/oras-project/oras/releases/download/v1.1.0/oras_1.1.0_linux_amd64.tar.gz" + }, + "arm64": { + "checksum": "e450b081f67f6fda2f16b7046075c67c9a53f3fda92fd20ecc59873b10477ab4", + "url": "https://github.com/oras-project/oras/releases/download/v1.1.0/oras_1.1.0_linux_arm64.tar.gz" + }, + "armv7": { + "checksum": "def86e7f787f8deee50bb57d1c155201099f36aa0c6700d3b525e69ddf8ae49b", + "url": "https://github.com/oras-project/oras/releases/download/v1.1.0/oras_1.1.0_linux_armv7.tar.gz" + }, + "s390x": { + "checksum": "067600d61d5d7c23f7bd184cff168ad558d48bed99f6735615bce0e1068b1d77", + "url": "https://github.com/oras-project/oras/releases/download/v1.1.0/oras_1.1.0_linux_s390x.tar.gz" + } + }, + "windows": { + "amd64": { + "checksum": "2ac83631181d888445e50784a5f760f7f9d97fba3c089e79b68580c496fe68cf", + "url": "https://github.com/oras-project/oras/releases/download/v1.1.0/oras_1.1.0_windows_amd64.zip" + } + } + }, + "1.2.0": { + "darwin": { + "amd64": { + "checksum": "58a8494f5bce778e21d89d90c82e05bd128e7bb9d84dd190d154f8afdbf30541", + "url": "https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_darwin_amd64.tar.gz" + }, + "arm64": { + "checksum": "fea801b0e02c5342e749ef2860e1faebae03e93ae50e33ed40d227e089cf9435", + "url": "https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_darwin_arm64.tar.gz" + } + }, + "freebsd": { + "amd64": { + "checksum": "73d3a292dce1f0985df084ff50b38ab2deacbcb01902ceebc008d5bea2f2dee9", + "url": "https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_freebsd_amd64.tar.gz" + } + }, + "linux": { + "amd64": { + "checksum": "5b3f1cbb86d869eee68120b9b45b9be983f3738442f87ee5f06b00edd0bab336", + "url": "https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_linux_amd64.tar.gz" + }, + "arm64": { + "checksum": "27df680a39fc2fcedc549cb737891623bc696c9a92a03fd341e9356a35836bae", + "url": "https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_linux_arm64.tar.gz" + }, + "armv7": { + "checksum": "054685703cb0c66e51f8143e3bbd3976e217d3d595f0593db43b6dd451e43329", + "url": "https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_linux_armv7.tar.gz" + }, + "ppc64le": { + "checksum": "af5ee50434c7263b1460978af83e7690570e8999678fae9db6c5dbb38467fed5", + "url": "https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_linux_ppc64le.tar.gz" + }, + "riscv64": { + "checksum": "42c7e5f35b72492dd3ee7c68edad0c0da939b39e6ead7f682329015b283e96f8", + "url": "https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_linux_riscv64.tar.gz" + }, + "s390x": { + "checksum": "69d2e842e592f4d990b33d58ff3c298c4e4c0921dd54ad9e65e3b6dd9427a750", + "url": "https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_linux_s390x.tar.gz" + } + }, + "windows": { + "amd64": { + "checksum": "f110b42a20bd4728fb0428d36ee6ed10de58cd986bba8e95ecc4f0272cb017ba", + "url": "https://github.com/oras-project/oras/releases/download/v1.2.0/oras_1.2.0_windows_amd64.zip" + } + } + } +} \ No newline at end of file diff --git a/.github/actions/setup-oras-1.2.1/src/lib/release.ts b/.github/actions/setup-oras-1.2.1/src/lib/release.ts new file mode 100644 index 000000000..e69de29bb diff --git a/.github/actions/setup-oras-1.2.1/src/setup.ts b/.github/actions/setup-oras-1.2.1/src/setup.ts new file mode 100644 index 000000000..e69de29bb diff --git a/.github/actions/setup-oras-1.2.1/tsconfig.json b/.github/actions/setup-oras-1.2.1/tsconfig.json new file mode 100644 index 000000000..e69de29bb diff --git a/.github/workflows/trivy.yaml b/.github/workflows/trivy.yaml index a69881dfb..792bc4295 100644 --- a/.github/workflows/trivy.yaml +++ b/.github/workflows/trivy.yaml @@ -56,6 +56,27 @@ jobs: key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} restore-keys: ${{ runner.os }}-m2 + - name: Setup oras + uses: ./.github/actions/setup-oras-1.2.1 + + - name: Get current date + id: date + run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT + + - name: Download and extract the vulnerability DB + run: | + mkdir -p $GITHUB_WORKSPACE/.cache/trivy/db + oras pull ghcr.io/aquasecurity/trivy-db:2 + tar -xzf db.tar.gz -C $GITHUB_WORKSPACE/.cache/trivy/db + rm db.tar.gz + + - name: Download and extract the Java DB + run: | + mkdir -p $GITHUB_WORKSPACE/.cache/trivy/java-db + oras pull ghcr.io/aquasecurity/trivy-java-db:1 + tar -xzf javadb.tar.gz -C $GITHUB_WORKSPACE/.cache/trivy/java-db + rm javadb.tar.gz + - name: Edit DNS Resolve shell: bash run: | @@ -66,4 +87,5 @@ jobs: shell: bash run: | echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $ --password-stdin + export TRIVY_CACHE=$GITHUB_WORKSPACE/.cache make trivy-scan diff --git a/Makefile b/Makefile index 4cbb3ae30..67cea75e0 100644 --- a/Makefile +++ b/Makefile @@ -1975,14 +1975,20 @@ tanzu-install: ## Install the Coherence Operator package into Tanzu ##@ Miscellaneous TRIVY_IMAGE=ghcr.io/aquasecurity/trivy:0.54.1 +TRIVY_CACHE ?= + .PHONY: trivy-scan trivy-scan: $(BUILD_TARGETS)/build-operator ## Scan the Operator image using Trivy docker pull $(TRIVY_IMAGE) ifeq (Darwin, $(UNAME_S)) docker run --rm -v $HOME/Library/Caches:/root/.cache/ -v /var/run/docker.sock:/var/run/docker.sock $(TRIVY_IMAGE) image $(OPERATOR_IMAGE) +else +ifdef TRIVY_CACHE + docker run --rm -v $(TRIVY_CACHE) -v /var/run/docker.sock:/var/run/docker.sock $(TRIVY_IMAGE) image $(OPERATOR_IMAGE) else docker run --rm -v /var/run/docker.sock:/var/run/docker.sock $(TRIVY_IMAGE) image $(OPERATOR_IMAGE) endif +endif # ---------------------------------------------------------------------------------------------------------------------- # find or download controller-gen From e6a6e9f3e3df10e1f78febd861801edfadcfedea Mon Sep 17 00:00:00 2001 From: Jonathan Knight Date: Fri, 25 Oct 2024 18:59:05 +0300 Subject: [PATCH 4/6] Update Trivy GitHub workflows --- Makefile | 16 +++++++++++----- go.mod | 2 +- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 67cea75e0..8b291b8e0 100644 --- a/Makefile +++ b/Makefile @@ -1978,18 +1978,24 @@ TRIVY_IMAGE=ghcr.io/aquasecurity/trivy:0.54.1 TRIVY_CACHE ?= .PHONY: trivy-scan -trivy-scan: $(BUILD_TARGETS)/build-operator ## Scan the Operator image using Trivy - docker pull $(TRIVY_IMAGE) +trivy-scan: build-operator-images $(TOOLS_BIN)/trivy ## Scan the Operator image using Trivy + ifeq (Darwin, $(UNAME_S)) - docker run --rm -v $HOME/Library/Caches:/root/.cache/ -v /var/run/docker.sock:/var/run/docker.sock $(TRIVY_IMAGE) image $(OPERATOR_IMAGE) + $(TOOLS_BIN)/trivy --cache-dir OME/Library/Caches/trivy image $(OPERATOR_IMAGE) else ifdef TRIVY_CACHE - docker run --rm -v $(TRIVY_CACHE) -v /var/run/docker.sock:/var/run/docker.sock $(TRIVY_IMAGE) image $(OPERATOR_IMAGE) + $(TOOLS_BIN)/trivy --cache-dir $(TRIVY_CACHE) image $(OPERATOR_IMAGE) else - docker run --rm -v /var/run/docker.sock:/var/run/docker.sock $(TRIVY_IMAGE) image $(OPERATOR_IMAGE) + $(TOOLS_BIN)/trivy image $(OPERATOR_IMAGE) endif endif +.PHONY: get-trivy +get-trivy: $(TOOLS_BIN)/trivy + +$(TOOLS_BIN)/trivy: + test -s $(TOOLS_BIN)/trivy || curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b $(TOOLS_BIN) v0.56.2 + # ---------------------------------------------------------------------------------------------------------------------- # find or download controller-gen # ---------------------------------------------------------------------------------------------------------------------- diff --git a/go.mod b/go.mod index a4bb23182..ec1b84054 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module github.com/oracle/coherence-operator go 1.22.0 -toolchain go1.22.2 +toolchain go1.22.7 require ( github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc From d6e6fd5053334316dabd1f3dc130d3739f2c013b Mon Sep 17 00:00:00 2001 From: Jonathan Knight Date: Fri, 25 Oct 2024 19:07:03 +0300 Subject: [PATCH 5/6] Update Trivy GitHub workflows --- .github/workflows/trivy.yaml | 2 +- Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/trivy.yaml b/.github/workflows/trivy.yaml index 792bc4295..fbf7b035e 100644 --- a/.github/workflows/trivy.yaml +++ b/.github/workflows/trivy.yaml @@ -87,5 +87,5 @@ jobs: shell: bash run: | echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u $ --password-stdin - export TRIVY_CACHE=$GITHUB_WORKSPACE/.cache + export TRIVY_CACHE=$GITHUB_WORKSPACE/.cache/trivy make trivy-scan diff --git a/Makefile b/Makefile index 8b291b8e0..be6a0af87 100644 --- a/Makefile +++ b/Makefile @@ -1981,7 +1981,7 @@ TRIVY_CACHE ?= trivy-scan: build-operator-images $(TOOLS_BIN)/trivy ## Scan the Operator image using Trivy ifeq (Darwin, $(UNAME_S)) - $(TOOLS_BIN)/trivy --cache-dir OME/Library/Caches/trivy image $(OPERATOR_IMAGE) + $(TOOLS_BIN)/trivy --cache-dir $(HOME)/Library/Caches/trivy image $(OPERATOR_IMAGE) else ifdef TRIVY_CACHE $(TOOLS_BIN)/trivy --cache-dir $(TRIVY_CACHE) image $(OPERATOR_IMAGE) From eaa5a74c7970825e005c4fca3a9e8669d7ae7615 Mon Sep 17 00:00:00 2001 From: Jonathan Knight Date: Fri, 25 Oct 2024 19:26:09 +0300 Subject: [PATCH 6/6] Update Trivy GitHub workflows --- Makefile | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index be6a0af87..fb605231f 100644 --- a/Makefile +++ b/Makefile @@ -1974,19 +1974,17 @@ tanzu-install: ## Install the Coherence Operator package into Tanzu # ====================================================================================================================== ##@ Miscellaneous -TRIVY_IMAGE=ghcr.io/aquasecurity/trivy:0.54.1 TRIVY_CACHE ?= .PHONY: trivy-scan trivy-scan: build-operator-images $(TOOLS_BIN)/trivy ## Scan the Operator image using Trivy - ifeq (Darwin, $(UNAME_S)) - $(TOOLS_BIN)/trivy --cache-dir $(HOME)/Library/Caches/trivy image $(OPERATOR_IMAGE) + $(TOOLS_BIN)/trivy --exit-code 1 --severity CRITICAL,HIGH --cache-dir $(HOME)/Library/Caches/trivy image $(OPERATOR_IMAGE) else ifdef TRIVY_CACHE - $(TOOLS_BIN)/trivy --cache-dir $(TRIVY_CACHE) image $(OPERATOR_IMAGE) + $(TOOLS_BIN)/trivy --exit-code 1 --severity CRITICAL,HIGH --cache-dir $(TRIVY_CACHE) image $(OPERATOR_IMAGE) else - $(TOOLS_BIN)/trivy image $(OPERATOR_IMAGE) + $(TOOLS_BIN)/trivy --exit-code 1 --severity CRITICAL,HIGH image $(OPERATOR_IMAGE) endif endif

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